Files
roll20-character-sheets/Shadowrun5thEdition/Shadowrun5thEdition.html
2020-05-11 12:53:12 -04:00

2949 lines
301 KiB
HTML

<input name="attr_version" type="hidden" value="4.17"/><input class="sheet_type" name="attr_sheet_type" type="hidden" value="pc"/><input class="character-type" name="attr_flag_special" type="hidden" value="mundane"/><div class="pc"><div class="tabs"><img alt="Shadowrun black and metallic logo" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/src/imgs//ShadowrunLogo.png"/><h1 data-i18n="character">Character</h1><label data-i18n-title="character name" title="character name"><input type="text" name="attr_character_name" placeholder="Character name" title="@{character_name}"/></label><h1 data-i18n="player">Player</h1><label data-i18n-title="player name" title="player name"><input type="text" name="attr_player_name" placeholder="Player name" title="@{player_name}"/></label><h2 data-i18n-title="/w GM">/w GM</h2><label class="switch" data-i18n-title="whisper rolls to gm" title="whisper rolls to gm"><input class="whisper-toggle" name="attr_gm_toggle" type="checkbox" value="/w gm"/><span class="slider"></span></label><h2 data-i18n-title="wounds">wounds</h2><label class="switch" data-i18n-title="wounds" title="wounds"><input class="whisper-toggle" name="attr_wounds_toggle" type="checkbox" value="@{wounds}"/><span class="slider"></span></label><h2 data-i18n-title="modifiers">modifiers</h2><label class="switch" data-i18n-title="modifiers" title="modifiers"><input class="whisper-toggle" name="attr_modifiers_toggle" type="checkbox" value="?{Modifiers +/-|0}"/><span class="slider"></span></label><h2 data-i18n-title="edge">edge</h2><label class="switch" data-i18n-title="edge" title="edge"><input class="whisper-toggle" name="attr_edge_toggle" type="checkbox" value="@{edge}"/><span class="slider"></span></label><button name="d6" title="Roll D6s" type="roll" value="@{gm_toggle} &{template:rolls}{{header=^{d6}}}{{base=^{d6}}}{{dice=[[(?{d6s|0}d6>5@{explode_toggle})]]}}">L</button><input name="attr_tab" type="hidden" value="options"/><button class="pictos" name="act_tab_options" title="@{tab}" type="action">y</button><button data-i18n="core" name="act_tab_core" type="action" title="@{tab}">core</button><button data-i18n="arms" name="act_tab_arms" type="action" title="@{tab}">arms</button><button data-i18n="augs" name="act_tab_augs" type="action" title="@{tab}">augs</button><button data-i18n="gear" name="act_tab_gear" type="action" title="@{tab}">gear</button><button data-i18n="magic" name="act_tab_magic" type="action" title="@{tab}">magic</button><button data-i18n="matrix" name="act_tab_matrix" type="action" title="@{tab}">matrix</button><button data-i18n="social" name="act_tab_social" type="action" title="@{tab}">social</button><button data-i18n="vehicle" name="act_tab_vehicle" type="action" title="@{tab}">vehicle</button></div><input class="options_toggle" name="attr_tab" type="hidden" value="options"/><div class="static pc-col">
<div class="pc-row core-info">
<div class="header"><div class="triangle"></div><h1 data-i18n="personal">Personal Data</h1></div>
<div class="border-box">
<div class="pc-box small-box">
<div class="row-long pd-nam">
<h2 data-i18n="namealias">NAME/PRIMARY ALIAS</h2><input type="text" name="attr_name" placeholder="name" title="@{name}" />
</div>
<div class="row-long pd-meta">
<h2 data-i18n="metatype">Metatype</h2><input type="text" name="attr_metatype" placeholder="metatype" title="@{metatype}" />
<h2 data-i18n="ethnicity">Ethnicity</h2><input type="text" name="attr_ethnicity" placeholder="ethnicity" title="@{ethnicity}" />
</div>
<div class="row-long pd-age">
<h2 data-i18n="age">Age</h2><input type="text" name="attr_age" placeholder="age" title="@{age}" />
<h2 data-i18n="sex">Sex</h2><input type="text" name="attr_sex" placeholder="sex" title="@{sex}" />
<h2 data-i18n="height-u">Height</h2><input type="text" name="attr_height" placeholder="height" title="@{height}" >
<h2 data-i18n="weight">Weight</h2><input type="text" name="attr_weight" placeholder="weight" title="@{weight}" />
</div>
<div class="row-long pd-rep">
<h2 data-i18n="streetcred">Street Cred</h2><input type="number" name="attr_street_cred" placeholder="#" title="@{street_cred}" />
<h2 data-i18n="notoriety">Notoriety</h2><input type="number" name="attr_notoriety" placeholder="#" title="@{notoriety}" />
<h2 data-i18n="publicawareness">Public Awereness</h2><input type="number" name="attr_public_awareness" placeholder="#" title="@{public_awareness}" />
</div>
<div class="row-long pd-kar">
<h2 data-i18n="karma">Karma</h2><input type="number" name="attr_karma" placeholder="#" title="@{karma}" />
<h2 data-i18n="totalkarma">Total Karma</h2><input type="number" name="attr_total_karma" placeholder="#" title="@{total_karma}" />
<h2 data-i18n="misc">Misc</h2><input type="text" name="attr_misc" placeholder="misc" title="@{misc}" />
</div>
</div>
</div>
</div>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ START OF ATTRIBUTES ROW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<div class="pc-row">
<div class="header"><div class="triangle"></div><h1 data-i18n="attributes">Attributes</h1></div>
<div class="border-box">
<div class="pc-box medium-box attr-box">
<input type="checkbox" class="settings-toggle" name="attr_flag_attribute" checked="checked" title="Settings toggle" /><span>x</span>
<div class="attr-col attr-col-left">
<!-- ~~:+: Body :+:~~ -->
<input type="hidden" name="attr_body" value="0" />
<button type="roll" name="body" value="@{gm_toggle} &{template:rolls}{{header=^{body}}}{{base=^{attributes}}}{{dice=[[(@{body}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span class="red" data-i18n="body">Body</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_body_base" value="" placeholder="3" title="@{body_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_body_modifier" value="" placeholder="0" title="@{body_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_body" title="@{body}" /></span>
</div>
<div class="display"><span name="attr_display_body" title="@{body}"></span></div>
</div>
<!-- ~~:+: Agility :+:~~ -->
<input type="hidden" name="attr_agility" value="0" />
<button type="roll" name="agility" value="@{gm_toggle} &{template:rolls}{{header=^{agility}}}{{base=^{attributes}}}{{dice=[[(@{agility}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span class="red" data-i18n="agility">Agility</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_agility_base" value="" placeholder="3" title="@{agility_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_agility_modifier" value="" placeholder="0" title="@{agility_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_agility" title="@{agility}" /></span>
</div>
<div class="display"><span name="attr_display_agility" title="@{agility}"></span></div>
</div>
<!-- ~~:+: Reaction :+:~~ -->
<input type="hidden" name="attr_reaction" value="0" />
<button type="roll" name="reaction" value="@{gm_toggle} &{template:rolls}{{header=^{reaction}}}{{base=^{attributes}}}{{dice=[[(@{reaction}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span class="red" data-i18n="reaction">Reaction</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_reaction_base" value="" placeholder="3" title="@{reaction_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_reaction_modifier" value="" placeholder="0" title="@{reaction_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_reaction" title="@{reaction}" /></span>
</div>
<div class="display"><span name="attr_display_reaction" title="@{reaction}"></span></div>
</div>
<!-- ~~:+: Strength :+:~~ -->
<input type="hidden" name="attr_strength" value="0" />
<button type="roll" name="strength" value="@{gm_toggle} &{template:rolls}{{header=^{strength}}}{{base=^{attributes}}}{{dice=[[(@{strength}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span class="red" data-i18n="strength">Strength</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_strength_base" value="" placeholder="3" title="@{strength_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_strength_modifier" value="" placeholder="0" title="@{strength_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_strength" title="@{strength}" /></span>
</div>
<div class="display"><span name="attr_display_strength" title="@{strength}"></span></div>
</div>
<!-- ~~:+: Willpower :+:~~ -->
<input type="hidden" name="attr_willpower" value="0" />
<button type="roll" name="willpower" value="@{gm_toggle} &{template:rolls}{{header=^{willpower}}}{{base=^{attributes}}}{{dice=[[(@{willpower}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span data-i18n="willpower">Willpower</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_willpower_base" value="" placeholder="3" title="@{willpower_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_willpower_modifier" value="" placeholder="0" title="@{willpower_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_willpower" title="@{willpower}" /></span>
</div>
<div class="display"><span name="attr_display_willpower" title="@{willpower}"></span></div>
</div>
<!-- ~~:+: Logic :+:~~ -->
<input type="hidden" name="attr_logic" value="0" />
<button type="roll" name="logic" value="@{gm_toggle} &{template:rolls}{{header=^{logic}}}{{base=^{attributes}}}{{dice=[[(@{logic}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span data-i18n="logic">Logic</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_logic_base" value="" placeholder="3" title="@{logic_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_logic_modifier" value="" placeholder="0" title="@{logic_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_logic" title="@{logic}" /></span>
</div>
<div class="display"><span name="attr_display_logic" title="@{logic}"></span></div>
</div>
<!-- ~~:+: Intuition :+:~~ -->
<input type="hidden" name="attr_intuition" value="0" />
<button type="roll" name="intuition" value="@{gm_toggle} &{template:rolls}{{header=^{intuition}}}{{base=^{attributes}}}{{dice=[[(@{intuition}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span data-i18n="intuition">Intuition</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_intuition_base" value="" placeholder="3" title="@{intuition_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_intuition_modifier" value="" placeholder="0" title="@{intuition_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_intuition" title="@{intuition}" /></span>
</div>
<div class="display"><span name="attr_display_intuition" title="@{intuition}"></span></div>
</div>
<!-- ~~:+: Charisma :+:~~ -->
<input type="hidden" name="attr_charisma" value="0" />
<button type="roll" name="charisma" value="@{gm_toggle} &{template:rolls}{{header=^{charisma}}}{{base=^{attributes}}}{{dice=[[(@{charisma}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span data-i18n="charisma">Charisma</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_charisma_base" value="" placeholder="3" title="@{charisma_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_charisma_modifier" value="" placeholder="0" title="@{charisma_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_charisma" title="@{charisma}" /></span>
</div>
<div class="display"><span name="attr_display_charisma" title="@{charisma}"></span></div>
</div>
<!-- ~~:+: Edge :+:~~ -->
<button type="roll" name="edge" value="@{gm_toggle} &{template:rolls}{{header=^{edge}}}{{base=^{attributes}}}{{dice=[[(@{edge}+(@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span data-i18n="edge">Edge</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_edge" placeholder="3" title="@{edge}" />
</div>
<div class="display"><span name="attr_edge" title="@{edge}"></span></div>
</div>
</div>
<div class="attr-col attr-col-right">
<!-- ~~:+: Essence :+:~~ -->
<label data-i18n="essence">Essence</label>
<div class="attr-und">
<div class="settings"><input type="text" min="0" name="attr_essence" placeholder="6" title="@{essence}" /></div>
<div class="display"><span name="attr_essence" title="@{essence}"></span></div>
</div>
<!-- ~~:+: Magic or Resonance :+:~~ -->
<input type="hidden" name="attr_magic" value="3" />
<input type="hidden" name="attr_resonance" value="3" />
<label data-i18n="magicres">Magic/Resonance</label>
<div class="attr-und">
<div class="settings">
<div class="hide-magic">
<input type="number" name="attr_magic_base" placeholder="0" title="@{magic_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_magic_modifier" placeholder="0" title="@{magic_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_magic" title="@{magic}" /></span>
</div>
<div class="hide-resonance">
<input type="number" name="attr_resonance_base" placeholder="0" title="@{resonance_base}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_resonance_modifier" placeholder="0" title="@{resonance_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_display_resonance" title="@{resonance}" /></span>
</div>
</div>
<div class="display">
<div class="hide-magic"><span name="attr_display_magic" title="@{magic}"></span></div>
<div class="hide-resonance"><span name="attr_display_resonance" title="@{resonance}"></span></div>
</div>
</div>
<!-- ~~:+: Initiative :+:~~ -->
<input type="hidden" name="attr_initiative_mod" value="6" />
<input type="hidden" name="attr_initiative_dice" value="1" min="1" max="5" />
<button class="attr-ini" name="initiative" type="roll" value="@{gm_toggle} &{template:rolls}{{header=^{initiative}}}{{base=^{base}}}{{dice=[[(@{initiative_mod}+@{wounds_toggle}+@{modifiers_toggle})+(@{initiative_dice})d6cf0 &{tracker}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}"><span class="attr-ini red" data-i18n="initiative">Initiative</span></button>
<div class="attr-und attr-ini">
<div class="settings">
<input type="number" name="attr_initiative_mod_modifier" value="0" placeholder="0" title="@{initiative_modifier}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_initiative_dice_modifier" value="0" min="0" max="4" placeholder="modifier" title="@{initiative_dice_modifier}" />
<span class="tiny-span"> = </span>
<span name="attr_display_initiative_mod"></span><span class="tiny-span" title="@{initiative_mod}"> + </span>
<span name="attr_initiative_dice"></span><span class="tiny-span" title="@{initiative_dice}" data-i18n="d6"> d6</span>
</div>
<div class="display">
<span name="attr_display_initiative_mod" title="@{initiative_mod}"></span><span class="tiny-span"> + </span>
<span name="attr_initiative_dice" title="@{initiative_dice}"></span><span class="tiny-span" data-i18n="d6"> d6</span>
</div>
</div>
<!-- ~~:+: Matrix Initative :+:~~ -->
<input type="hidden" name="attr_matrix_mod" value="0" />
<input type="hidden" name="attr_matrix_dice" max="5" />
<button class="attr-ini" name="matrix initiative" type="roll" value="@{gm_toggle} &{template:rolls}{{header=^{matrixinitiative}}}{{base=^{base}}}{{dice=[[(@{matrix_mod}+@{wounds_toggle}+@{modifiers_toggle})+(@{matrix_dice})d6cf0 &{tracker}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}">
<span class="attr-ini red init-settings" data-i18n="matrixinit">Matrix Ini</span>
<span class="attr-ini red init-display" data-i18n="matrixinitiative">Matrix Initiative</span>
</button>
<div class="attr-und attr-ini">
<div class="settings">
<input type="number" name="attr_matrix_mod_modifier" value="0" placeholder="0" title="@{matrix_mod_modifier}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_matrix_dice_modifier" value="0" min="0" max="4" placeholder="modifier" title="@{matrix_dice_modifier}" />
<span class="tiny-span"> = </span>
<span name="attr_display_matrix_mod" title="@{matrix_mod}"></span><span class="tiny-span"> + </span>
<span name="attr_matrix_dice" title="@{matrix_mod}"></span><span class="tiny-span" data-i18n="d6"> d6</span>
</div>
<div class="display">
<span name="attr_display_matrix_mod" title="@{matrix_mod}"></span><span class="tiny-span"> + </span>
<span name="attr_matrix_dice" title="@{matrix_dice}"></span><span class="tiny-span" data-i18n="d6"> d6</span>
</div>
</div>
<!-- ~~:+: Astral Initative :+:~~ -->
<input type="hidden" name="attr_astral_mod" value="6" />
<input type="hidden" name="attr_astral_dice" value="3" max="5" />
<button class="attr-ini" name="astral initiative" type="roll" value="@{gm_toggle} &{template:rolls}{{header=^{astralinitiative}}}{{base=^{base}}}{{dice=[[(@{astral_mod}+@{wounds_toggle}+@{modifiers_toggle})+(@{astral_dice})d6cf0 &{tracker}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}">
<span class="attr-ini red init-settings" data-i18n="astralini">Astral Ini</span>
<span class="attr-ini red init-display" data-i18n="astralinitiative">Astral Initiative</span>
</button>
<div class="attr-und attr-ini">
<div class="settings">
<div class="hide-magic">
<input type="number" name="attr_astral_mod_modifier" value="0" placeholder="modifier" title="@{astral_mod_modifier}" /><span class="tiny-span"> + </span>
<input type="number" name="attr_astral_dice_modifier" value="0" min="0" max="3" placeholder="modifier" title="@{astral_dice_modifier}" />
<span class="tiny-span"> = </span>
<span name="attr_display_astral_mod" title="@{astral_mod}"></span><span class="tiny-span"> + </span>
<span name="attr_astral_dice" title="@{astral_dice}"></span><span class="tiny-span" data-i18n="d6"> d6</span>
</div>
</div>
<div class="display">
<span name="attr_display_astral_mod" title="@{astral_mod}"></span><span class="tiny-span"> + </span>
<span name="attr_astral_dice" title="@{astral_dice}"></span><span class="tiny-span" data-i18n="d6"> d6</span>
</div>
</div>
<!-- ~~:+: Composure :+:~~ -->
<input type="hidden" name="attr_composure" value="" />
<button type="roll" name="composure" value="@{gm_toggle} &{template:rolls}{{header=^{composure}}}{{base=^{base}}}{{dice=[[(@{composure}+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}}"><span data-i18n="composure">Composure</span></button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_composure_modifier" placeholder="0" title="@{composure_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_composure" title="@{composure}" /></span>
</div>
<div class="display">
<span name="attr_composure" title="@{composure}"></span>
</div>
</div>
<!-- ~~:+: Judge Intentions :+:~~ -->
<input type="hidden" name="attr_judge_intentions" value="" />
<button type="roll" name="judge intentions" value="@{gm_toggle} &{template:rolls}{{header=^{judgeintentions}}}{{base=^{base}}}{{dice=[[(@{judge_intentions}+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}">
<span data-i18n="judgeintentions">Judge Intentions</span>
</button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_judge_intentions_modifier" placeholder="0" title="@{judge_intentions_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_judge_intentions" title="@{judge_intentions}" /></span>
</div>
<div class="display">
<span name="attr_judge_intentions" title="@{judge_intentions}"></span>
</div>
</div>
<!-- ~~:+: Memory :+:~~ -->
<input type="hidden" name="attr_memory" value="" />
<button type="roll" name="memory" value="@{gm_toggle} &{template:rolls}{{header=^{memory}}}{{base=^{base}}}{{dice=[[(@{memory}+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}">
<span data-i18n="memory">Memory</span>
</button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_memory_modifier" placeholder="0" title="@{memory_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_memory" title="@{memory}" /></span>
</div>
<div class="display">
<span name="attr_memory" title="@{memory}"></span>
</div>
</div>
<!-- ~~:+: Lift & Carry :+:~~ -->
<input type="hidden" name="attr_lift_carry" value="" />
<button type="roll" name="lift & carry" value="@{gm_toggle} &{template:rolls}{{header=^{liftcarry}}}{{base=^{base}}}{{dice=[[(@{lift_carry}+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}">
<span data-i18n="liftcarry">Lift & Carry</span>
</button>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_lift_carry_modifier" placeholder="0" title="@{lift_carry_modifier}" /><span class="tiny-span"> = </span>
<span class="totals" name="attr_lift_carry" title="@{lift_carry}" /></span>
</div>
<div class="display">
<span name="attr_lift_carry" title="@{lift_carry}"></span>
</div>
</div>
<!-- ~~:+: Walk & Run :+:~~ -->
<input type="hidden" name="attr_walk" value="12" />
<input type="hidden" name="attr_run" value="24" />
<label data-i18n="movement">Movement</label>
<div class="attr-und">
<div class="settings">
<input type="number" name="attr_walk_modifier" value="" placeholder="0" title="@{walk_modifier}" /><span class="tiny-span"> / </span>
<input type="number" name="attr_run_modifier" value="" placeholder="0" title="@{run_modifier}" /><span class="tiny-span"> / +</span>
<input type="number" name="attr_movement_mod" value="2" placeholder="2" title="@{movement_mod}" />
</div>
<div class="display">
<span name="attr_walk" title="@{walk}"></span><span> / </span>
<span name="attr_run" title="@{run}"></span><span> / +</span>
<span name="attr_movement_mod" title="@{movement_mod}"></span>
</div>
</div>
</div>
<div class="attr-lim">
<div class="settings">
<label data-i18n="physicallimit">Physical Limit: </label><input type="number" name="attr_physical_limit_modifier" placeholder="0" title="@{physical_limit_modifier}" />
<span class="tiny-span"> = </span><span class="totals" name="attr_physical_limit" title="@{physical_limit}" /></span>
<label data-i18n="mentallimit">Mental Limit: </label><input type="number" name="attr_mental_limit_modifier" placeholder="0" title="@{mental_limit_modifier}" />
<span class="tiny-span"> = </span><span class="totals" name="attr_mental_limit" title="@{mental_limit}" /></span>
<label data-i18n="sociallimit">Social Limit: </label><input type="number" name="attr_social_limit_modifier" placeholder="0" title="@{social_limit_modifier}" />
<span class="tiny-span"> = </span><span class="totals" name="attr_social_limit" title="@{social_limit}" /></span>
</div>
<div class="display">
<label data-i18n="physicallimit">Physical Limit: </label><div><span name="attr_physical_limit" title="@{physical_limit}"></span></div>
<label data-i18n="mentallimit">Mental Limit: </label><div><span name="attr_mental_limit" title="@{mental_limit}"></span></div>
<label data-i18n="sociallimit">Social Limit: </label><div><span name="attr_social_limit" title="@{social_limit}"></span></div>
</div>
</div>
<div class="edg-hex" style="width: 50%;">
<input class="edge-zero"type="hidden" name="attr_edge_hex" value="0"/>
<input class="hex-hider"type="hidden" name="attr_edge" value="1"/>
<input type="checkbox" name="attr_edge_hex" value="1" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="2" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="3" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="4" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="5" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="6" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="7" /><span class="hexagon"></span>
<input type="checkbox" name="attr_edge_hex" value="8" /><span class="hexagon"></span>
</div>
</div>
</div>
</div><!-- ~~~~~~~~ End of PC Attributes~~~~~~~~ -->
<div class="pc-row"><div class="header"><div class="header htab"><div class="triangle"></div><input class="tab-switch" name="attr_skill_toggle" title="Active skills" type="radio" value="active"/><h1 data-i18n="active">active..</h1><div class="right-tri"></div></div><div class="header htab"><div class="triangle"></div><input class="tab-switch" name="attr_skill_toggle" title="Knowledge skills" type="radio" value="knowledge"/><h1 data-i18n="know">know..</h1><div class="right-tri"></div></div><div class="header htab"><div class="triangle"></div><input class="tab-switch" name="attr_skill_toggle" title="Language skills" type="radio" value="language"/><h1 data-i18n="lang">lang..</h1><div class="right-tri"></div></div><div class="triangle"></div><h1 data-i18n="skills">Skills</h1></div><div class="border-box skill-box"><div class="pc-box medium-box"><div class="rows repeating-container"><div class="row-long headers"><h2 data-i18n="skill">Skill</h2><h2 data-i18n="rtg">RTG</h2><h2 data-i18n="attribute">Attribute</h2><h2 data-i18n="limit">Limit</h2></div></div><input class="tab-switch" name="attr_skill_toggle" type="hidden" value="active"/><div class="skills-active"><div class="rows repeating-container"><div class="row-long"><input name="attr_default_display" type="hidden" value="Agility"/><button data-i18n="default" name="roll_default" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{default}}}{{base=@{default_display}}}{{dice=[[((@{default_attribute}+-1)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">default</button><span class="text-center">-</span><select class="attribute-select" name="attr_default_attribute" title="Skill attribute"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}" selected="selected">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" title="Skill limit"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}">Mental</option><option data-i18n="physical" value="@{physical_limit}" selected="selected">Physical</option><option data-i18n="social" value="@{social_limit}">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select></div><fieldset class="repeating_active"><input name="attr_display_rating" type="hidden"/><input name="attr_specialization" type="hidden" value=""/><input name="attr_display_limit" type="hidden" value="Physical"/><input name="attr_display_attribute" type="hidden" value="Agility"/><input name="attr_dicepool" type="hidden" value="0"/><input name="attr_display_skill" type="hidden" value=""/><input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="@{repeating_active_${x}_flag}"/><div class="buttons"><button class="eclipse" name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit} @{limit}}}"><span name="attr_display_skill"></span></button><button class="eclipse" name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit} @{limit}}}"><span name="attr_specialization"></span></button></div><span class="text-center" name="attr_display_rating" title="@{repeating_active_${x}_display_rating}"></span><select class="attribute-select" name="attr_attribute" title="@{repeating_active_${x}_attribute}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}" selected="selected">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" value="physical_limit" title="@{repeating_active_${x}_limit}"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}">Mental</option><option data-i18n="physical" value="@{physical_limit}" selected="selected">Physical</option><option data-i18n="social" value="@{social_limit}">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><select class="skill-select" name="attr_skill" value="Close Combat Group" title="@{repeating_active_${x}_skill}"><option class="option-headers" disabled="true" data-i18n="combatskills">Combat Skills</option>
<option class="option-groups" value="Close Combat Group" data-i18n="closecombatgroup">Close Combat Group</option>
<option class="option-groups" value="Firearms Group" data-i18n="firearmsgroup">Firearms Group</option>
<option value="Archery" data-i18n="archery">Archery</option>
<option value="Automatics" data-i18n="automatics">Automatics</option>
<option value="Blades" data-i18n="blades">Blades</option>
<option value="Clubs" data-i18n="clubs">Clubs</option>
<option value="Exotic Melee" data-i18n="exoticmelee">Exotic Melee</option>
<option value="Exotic Range" data-i18n="exoticrange">Exotic Range</option>
<option value="Heavy Weapons" data-i18n="heavyweapons">Heavy Weapons</option>
<option value="Longarms" data-i18n="longarms">Longarms</option>
<option value="Pistols" data-i18n="pistols">Pistols</option>
<option value="Throwing Weapons" data-i18n="throwingweapons">Throwing Weapons</option>
<option value="Unarmed Combat" data-i18n="unarmedcombat">Unarmed Combat</option>
<option class="option-headers" disabled="true" data-i18n="physicalskills">Physical Skills</option>
<option class="option-groups" value="Athletics Group" data-i18n="athleticsgroup">Athletics Group</option>
<option class="option-groups" value="Outdoors Group" data-i18n="outdoorsgroup">Outdoors Group</option>
<option class="option-groups" value="Stealth Group" data-i18n="stealthgroup">Stealth Group</option>
<option value="Disguise" data-i18n="disguise">Disguise</option>
<option value="Diving" data-i18n="diving">Diving</option>
<option value="Escape Artist" data-i18n="escapeartist">Escape Artist</option>
<option value="Flight" data-i18n="flight">Flight</option>
<option value="Free Fall" data-i18n="freefall">Free Fall</option>
<option value="Gymnastics" data-i18n="gymnastics">Gymnastics</option>
<option value="Palming" data-i18n="palming">Palming</option>
<option value="Perception" data-i18n="perception">Perception</option>
<option value="Running" data-i18n="running">Running</option>
<option value="Sneaking" data-i18n="sneaking">Sneaking</option>
<option value="Survival" data-i18n="survival">Survival</option>
<option value="Swimming" data-i18n="swimming">Swimming</option>
<option value="Tracking" data-i18n="tracking">Tracking</option>
<option class="option-headers" disabled="true" data-i18n="socialskills">Social Skills</option>
<option class="option-groups" value="Acting Group" data-i18n="actinggroup">Acting Group</option>
<option class="option-groups" value="Influence Group" data-i18n="influencegroup">Influence Group</option>
<option value="Con" data-i18n="con">Con</option>
<option value="Etiquette" data-i18n="etiquette">Etiquette</option>
<option value="Impersonation" data-i18n="impersonation">Impersonation</option>
<option value="Instruction" data-i18n="instruction">Instruction</option>
<option value="Intimidation" data-i18n="intimidation">Intimidation</option>
<option value="Leadership" data-i18n="leadership">Leadership</option>
<option value="Negotiation" data-i18n="negotiation">Negotiation</option>
<option value="Performance" data-i18n="performance">Performance</option>
<option class="option-headers" disabled="true" data-i18n="magicalskills">Magical Skills</option>
<option class="option-groups" value="Conjuring Group" data-i18n="conjuringgroup">Conjuring Group</option>
<option class="option-groups" value="Enchanting Group" data-i18n="enchantinggroup">Enchanting Group</option>
<option class="option-groups" value="Sorcery Group" data-i18n="sorcerygroup">Sorcery Group</option>
<option value="Alchemy" data-i18n="alchemy">Alchemy</option>
<option value="Arcana" data-i18n="arcana">Arcana</option>
<option value="Artificing" data-i18n="artificing">Artificing</option>
<option value="Assensing" data-i18n="assensing">Assensing</option>
<option value="Astral Combat" data-i18n="astralcombat">Astral Combat</option>
<option value="Banishing" data-i18n="banishing">Banishing</option>
<option value="Binding" data-i18n="binding">Binding</option>
<option value="Counterspelling" data-i18n="counterspelling">Counterspelling</option>
<option value="Disenchanting" data-i18n="disenchanting">Disenchanting</option>
<option value="Ritual Spellcasting" data-i18n="ritualspellcasting">Ritual Spellcasting</option>
<option value="Spellcasting" data-i18n="spellcasting">Spellcasting</option>
<option value="Summoning" data-i18n="summoning">Summoning</option>
<option class="option-headers" disabled="true" data-i18n="resonanceskills">Resonance Skills</option>
<option class="option-groups" value="Tasking Group" data-i18n="taskinggroup">Tasking Group</option>
<option value="Compiling" data-i18n="compiling">Compiling</option>
<option value="Decompiling" data-i18n="decompiling">Decompiling</option>
<option value="Registering" data-i18n="registering">Registering</option>
<option class="option-headers" disabled="true" data-i18n="technicalskills">Technical Skills</option>
<option class="option-groups" value="Biotech Group" data-i18n="biotechgroup">Biotech Group</option>
<option class="option-groups" value="Cracking Group" data-i18n="crackinggroup">Cracking Group</option>
<option class="option-groups" value="Electronics Group" data-i18n="electronicsgroup">Electronics Group</option>
<option class="option-groups" value="Engineering Group" data-i18n="engineeringgroup">Engineering Group</option>
<option value="Aeronautics Mechanic" data-i18n="aeronauticsmechanic">Aeronautics Mechanic</option>
<option value="Animal Handling" data-i18n="animalhandling">Animal Handling</option>
<option value="Armorer" data-i18n="armorer">Armorer</option>
<option value="Artisan" data-i18n="artisan">Artisan</option>
<option value="Automotive Mechanic" data-i18n="automotivemechanic">Automotive Mechanic</option>
<option value="Biotechnology" data-i18n="biotechnology">Biotechnology</option>
<option value="Chemistry" data-i18n="chemistry">Chemistry</option>
<option value="Computer" data-i18n="computer">Computer</option>
<option value="Cybercombat" data-i18n="cybercombat">Cybercombat</option>
<option value="Cybertechnology" data-i18n="cybertechnology">Cybertechnology</option>
<option value="Demolitions" data-i18n="demolitions">Demolitions</option>
<option value="Electronic Warfare" data-i18n="electronicwarfare">Electronic Warfare</option>
<option value="First Aid" data-i18n="firstaid">First Aid</option>
<option value="Forgery" data-i18n="forgery">Forgery</option>
<option value="Hacking" data-i18n="hacking">Hacking</option>
<option value="Hardware" data-i18n="hardware">Hardware</option>
<option value="Industrial Mechanic" data-i18n="industrialmechanic">Industrial Mechanic</option>
<option value="Locksmith" data-i18n="locksmith">Locksmith</option>
<option value="Medicine" data-i18n="medicine">Medicine</option>
<option value="Nautical Mechanic" data-i18n="nauticalmechanic">Nautical Mechanic</option>
<option value="Navigation" data-i18n="navigation">Navigation</option>
<option value="Gunnery" data-i18n="gunnery">Gunnery</option>
<option value="Pilot Aerospace" data-i18n="pilotaerospace">Pilot Aerospace</option>
<option value="Pilot Aircraft" data-i18n="pilotaircraft">Pilot Aircraft</option>
<option value="Pilot Exotic Vehicle" data-i18n="pilotexoticvehicle">Pilot Exotic Vehicle</option>
<option value="Pilot Ground Craft" data-i18n="pilotgroundcraft">Pilot Ground Craft</option>
<option value="Pilot Walker" data-i18n="pilotwalker">Pilot Walker</option>
<option value="Pilot Watercraft" data-i18n="pilotwatercraft">Pilot Watercraft</option>
<option value="Software" data-i18n="software">Software</option></select><label data-i18n-title="rating" title="rating"><input name="attr_rating" min="0" placeholder="0" type="number" title="@{repeating_active_${x}_rating}"/></label><label data-i18n-title="ratingmodifier" title="Rating Modifier"><span data-i18n="ratingmodifier">Rating Modifier</span><input name="attr_rating_modifier" placeholder="0" type="number" title="@{repeating_active_${x}_rating_modifier}"/></label><label data-i18n-title="specialization" title="specialization"> <span data-i18n="specialization">specialization</span><input name="attr_specialization" placeholder="Specalizations" type="text" title="@{repeating_active_${x}_specialization}"/></label><label data-i18n-title="notes" title="notes"><span data-i18n="notes">Notes</span><textarea name="attr_notes" value="" placeholder="Notes" title="@{repeating_active_${x}_notes}"></textarea></label></div></fieldset></div></div><div class="skills-know"><div class="rows repeating-container"><fieldset class="repeating_knowledge"><input name="attr_display_rating" type="hidden"/><input name="attr_specialization" type="hidden" value=""/><input name="attr_display_limit" type="hidden" value="Mental"/><input name="attr_display_attribute" type="hidden" value="Logic"/><input name="attr_dicepool" type="hidden" value="0"/><input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="@{repeating_knowledge_${x}_flag}"/><div class="buttons"><button class="eclipse" name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit} @{limit}}}"><span name="attr_skill"></span></button><button class="eclipse" name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit} @{limit}}}"><span name="attr_specialization"></span></button></div><span class="text-center" name="attr_display_rating" title="@{repeating_knowledge_${x}_display_rating}"></span><select class="attribute-select" name="attr_attribute" title="@{repeating_knowledge_${x}_attribute}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}" selected="selected">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" value="physical_limit" title="@{repeating_knowledge_${x}_limit}"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}" selected="selected">Mental</option><option data-i18n="physical" value="@{physical_limit}">Physical</option><option data-i18n="social" value="@{social_limit}">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="skill" title="skill"><input name="attr_skill" placeholder="knowledge" type="text" title="@{repeating_knowledge_${x}_skill}"/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" min="0" placeholder="0" type="number" title="@{repeating_knowledge_${x}_rating}"/></label><label data-i18n-title="ratingmodifier" title="Rating Modifier"><span data-i18n="ratingmodifier">Rating Modifier</span><input name="attr_rating_modifier" placeholder="0" type="number" title="@{repeating_knowledge_${x}_rating_modifier}"/></label><label data-i18n-title="specialization" title="specialization"> <span data-i18n="specialization">specialization</span><input name="attr_specialization" placeholder="Specalizations" type="text" title="@{repeating_knowledge_${x}_specialization}"/></label><label data-i18n-title="notes" title="notes"><span data-i18n="notes">Notes</span><textarea name="attr_notes" value="" placeholder="Notes" title="@{repeating_knowledge_${x}_notes}"></textarea></label></div></fieldset></div></div><div class="skills-lang"><div class="rows repeating-container"><fieldset class="repeating_language"><input name="attr_display_rating" type="hidden"/><input name="attr_specialization" type="hidden" value=""/><input name="attr_display_limit" type="hidden" value="Social"/><input name="attr_display_attribute" type="hidden" value="Charisma"/><input name="attr_dicepool" type="hidden" value="0"/><input class="settings-flag" name="attr_flag" type="hidden" value="settings" title="@{repeating_language_${x}_flag}"/><div class="buttons"><button class="eclipse" name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit} @{limit}}}"><span name="attr_skill"></span></button><button class="eclipse" name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit} @{limit}}}"><span name="attr_specialization"></span></button></div><span class="text-center" name="attr_display_rating" title="@{repeating_language_${x}_display_rating}"></span><select class="attribute-select" name="attr_attribute" title="@{repeating_language_${x}_attribute}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}" selected="selected">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" value="physical_limit" title="@{repeating_language_${x}_limit}"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}">Mental</option><option data-i18n="physical" value="@{physical_limit}">Physical</option><option data-i18n="social" value="@{social_limit}" selected="selected">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="skill" title="skill"><input name="attr_skill" placeholder="language" type="text" title="@{repeating_language_${x}_skill}"/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" min="0" placeholder="0" type="number" title="@{repeating_language_${x}_rating}"/></label><label data-i18n-title="ratingmodifier" title="Rating Modifier"><span data-i18n="ratingmodifier">Rating Modifier</span><input name="attr_rating_modifier" placeholder="0" type="number" title="@{repeating_language_${x}_rating_modifier}"/></label><label data-i18n-title="specialization" title="specialization"> <span data-i18n="specialization">specialization</span><input name="attr_specialization" placeholder="Specalizations" type="text" title="@{repeating_language_${x}_specialization}"/></label><label data-i18n-title="notes" title="notes"><span data-i18n="notes">Notes</span><textarea name="attr_notes" value="" placeholder="Notes" title="@{repeating_language_${x}_notes}"></textarea></label></div></fieldset></div></div></div></div></div></div><div class="core pc-col"><div class="pc-row">
<div class="header right-header">
<h1 data-i18n="corecombatinfo">Core Combat Info</h1>
<div class="right-tri">
</div></div>
<div class="border-box">
<div class="pc-box small-box core-combat">
<div class="row-long cc-arm">
<h2 data-i18n="primaryarmor">Primary Armor</h2>
<button type="roll" name="roll_soak" value="@{gm_toggle} &{template:rolls}{{header=^{soak}}}{{base=^{base}}}{{dice=[[((@{soak})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}} style="width: 32%;">
<span name="attr_armor_name" title="@{soak}"></span>
</button>
<h3 data-i18n="rating">Rating</h3>
<button type="roll" name="roll_armor" value="@{gm_toggle} &{template:rolls}{{header=^{armor}}}{{base=^{armor}}}{{dice=[[((@{armor_rating})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}">
<span name="attr_armor_rating" title="@{armor_rating}"></span>
</button>
<div class="armor-buttons">
<button type="roll" name="roll_defense" value="@{gm_toggle} &{template:rolls}{{header=^{defense}}}{{base=^{base}}}{{dice=[[((@{defense})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Defense Roll"><span class="pictos-custom" title="@{defense}">e</span></button>
<button type="roll" name="roll_acid_protection" value="@{gm_toggle} &{template:rolls}{{header=^{acidprotection}}}{{base=^{base}}}{{dice=[[((@{soak}+@{acid_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Acid Protection"><span class="pictos-three" title="@{acid_modifier}">d</span></button>
<button type="roll" name="roll_cold_protection" value="@{gm_toggle} &{template:rolls}{{header=^{coldprotection}}}{{base=^{base}}}{{dice=[[((@{soak}+@{cold_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Cold Protection"><span class='pictos' title="@{cold_modifier}">b</span></button>
<button type="roll" name="roll_electrical_protection" value="@{gm_toggle} &{template:rolls}{{header=^{electricalprotection}}}{{base=^{base}}}{{dice=[[((@{soak}+@{electrical_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Electrical Protection"><span class='pictos' title="@{electrical_modifier}">e</span></button>
<button type="roll" name="roll_fire_protection" value="@{gm_toggle} &{template:rolls}{{header=^{fireprotection}}}{{base=^{base}}}{{dice=[[((@{soak}+@{fire_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Fire Protection"><span class="pictos-three" title="@{fire_modifier}">j</span></button>
<button type="roll" name="roll_radiation_protection" value="@{gm_toggle} &{template:rolls}{{header=^{radiationprotection}}}{{base=^{base}}}{{dice=[[((@{soak}+@{radiation_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Radiation Protection"><span class="pictos-three" title="@{radiation_modifier}">l</span></button>
</div>
</div>
<div class="row-long cc-row">
<h2 data-i18n="primaryrangedweapon">Primary Ranged Weapon</h2>
<button type="roll" name="primary range" value="@{gm_toggle} &{template:rolls}{{header=@{primary_range_weapon}}}{{base=^{base}}}{{dice=[[((@{primary_range_weapon_skill}+@{primary_range_weapon_dicepool}+@{agility})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{primary_range_weapon_mode}, ACC @{primary_range_weapon_acc}, DV @{primary_range_weapon_damage}, AP @{primary_range_weapon_ap}}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Primary range weapon"><span name="attr_primary_range_weapon" title="@{primary_range_weapon}"></span></button>
<!-- Ammo removal button -->
<button name="act_shots_remove" type="action">4</button>
<button type="action" name="act_primary_ammo" title="Shots Fired">
<img alt="small handgun icon" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/images/gun.png" /><span name="attr_shots_fired"></span>
</button>
<button name="act_shots_add" type="action">4</button>
</div>
<div class="cc-row">
<h3 data-i18n="dam">Dam</h3><span name="attr_primary_range_weapon_damage" title="@{primary_range_weapon_damage}"></span>
<h3 data-i18n="acc">ACC</h3><span name="attr_primary_range_weapon_acc" title="@{primary_range_weapon_acc}"></span>
<h3 data-i18n="ap">AP</h3><span name="attr_primary_range_weapon_ap" title="@{primary_range_weapon_ap}"></span>
<h3 data-i18n="mode">Mode</h3><span name="attr_primary_range_weapon_mode" title="@{primary_range_weapon_mode}"></span>
<h3 data-i18n="rc">RC</h3><span name="attr_primary_range_weapon_recoil" title="@{primary_range_weapon_recoil}"></span>
<h3 data-i18n="ammo">Ammo</h3>
<span name="attr_primary_range_weapon_ammo" title="@{primary_range_weapon_ammo}"></span>
<span name="attr_primary_range_weapon_ammo_max" title="@{primary_range_weapon_ammo_max}"></span>
<button class="pictos" name="act_reload" type="action">0</button>
</div>
<div class="row-long cc-row">
<h2 data-i18n="primarymeleeweapon">Primary Melee Weapon</h2>
<button type="roll" name="primary melee" value="@{gm_toggle} &{template:rolls}{{header=@{primary_melee_weapon}}}{{base=^{base}}}{{dice=[[((@{primary_melee_weapon_skill}+@{primary_melee_weapon_dicepool}+@{agility})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=ACC @{primary_melee_weapon_acc}, DV @{primary_melee_weapon_damage}, AP @{primary_melee_weapon_ap}, Reach @{primary_melee_weapon_reach}}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Primary melee weapon"><span name="attr_primary_melee_weapon" title="@{primary_melee_weapon}"></span></button>
</div>
<div class="cc-row">
<h3 data-i18n="reach">Reach</h3><span name="attr_primary_melee_weapon_reach" title="@{primary_melee_weapon_reach}"></span>
<h3 data-i18n="dam">Dam</h3><span name="attr_primary_melee_weapon_damage" title="@{primary_melee_weapon_damage}"></span>
<h3 data-i18n="acc">ACC</h3><span name="attr_primary_melee_weapon_acc" title="@{primary_melee_weapon_acc}"></span>
<h3 data-i18n="ap">AP</h3><span name="attr_primary_melee_weapon_ap" title="@{primary_melee_weapon_ap}"></span>
</div>
</div>
</div>
</div>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ START OF THE CONDITION MONITOR ROW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<div class="pc-row">
<div class="header right-header"><h1 data-i18n="conditionmonitor">Condition Monitor</h1><div class="right-tri"></div></div>
<div class="border-box">
<div class="pc-box medium-box condition-box">
<input type="checkbox" class="settings-toggle" name="attr_flag_condition" checked="checked" title="Settings toggle" /><span>x</span>
<div class="settings">
<label data-i18n="conditionmonitormodifiers">Condition Monitor Modifiers (P/S): </label>
<input type="hidden" name="attr_physical" value="10" />
<input type="hidden" name="attr_stun" value="10" />
<input type="hidden" name="attr_physical_max" min="0" value="10" />
<input type="hidden" name="attr_stun_max" min="0" value="10" />
<input type="number" name="attr_physical_modifier" value="" placeholder="#" title="@{physical_modifier}" /><span> / </span>
<input type="number" name="attr_stun_modifier" value="" placeholder="#" title="@{stun_modifier}" /><br />
<input type="hidden" name="attr_overflow" value="3" />
<label data-i18n="overflowmodifier">Overflow Modifier</label><input type="number" name="attr_overflow_modifier" value="" placeholder="#" title="@{overflow_modifier}" /><br />
<label data-i18n="high pain tolerance">High Pain Tolerance</label>
<input type="number" name="attr_high_pain_tolerance" min="0" value="" placeholder="#" title="@{high_pain_tolerance}" /><br />
<label data-i18n="low pain tolerance">Low Pain Tolerance</label><input type="checkbox" name="attr_low_pain_tolerance" value="2" title="@{low_pain_tolerance}" /><br />
<label data-i18n="damage compensators">Damage Compensators (P/S): </label>
<input type="number" min="0" name="attr_damage_compensators_physical" value="" placeholder="#" title="@{damage_compensators_physical}" /><span> / </span>
<input type="number" min="0" name="attr_damage_compensators_stun" value="" placeholder="#" title="@{damage_compensators_stun}" />
</div>
<div class="display">
<div class="con-track">
<input type="hidden" name="attr_physical" value="0" />
<button type="action" name="act_cond_reset_physical" data-i18n="physicaldamagetrack">Physical Damage Track</button>
<div class="squares">
<input class="hex-hider" type="hidden" name="attr_physical_max" value="10" />
<input type="radio" name="attr_physical" value="1" /><span></span>
<input type="radio" name="attr_physical" value="2" /><span></span>
<input type="radio" name="attr_physical" value="3" /><span></span><div>-1</div>
<input type="radio" name="attr_physical" value="4" /><span></span>
<input type="radio" name="attr_physical" value="5" /><span></span>
<input type="radio" name="attr_physical" value="6" /><span></span><div>-2</div>
<input type="radio" name="attr_physical" value="7" /><span></span>
<input type="radio" name="attr_physical" value="8" /><span></span>
<input type="radio" name="attr_physical" value="9" /><span></span><div>-3</div>
<input type="radio" name="attr_physical" value="10" /><span></span>
<input type="radio" name="attr_physical" value="11" /><span></span>
<input type="radio" name="attr_physical" value="12" /><span></span><div>-4</div>
<input type="radio" name="attr_physical" value="13" /><span></span>
<input type="radio" name="attr_physical" value="14" /><span></span>
<input type="radio" name="attr_physical" value="15" /><span></span><div>-5</div>
<input type="radio" name="attr_physical" value="16" /><span></span>
<input type="radio" name="attr_physical" value="17" /><span></span>
<input type="radio" name="attr_physical" value="18" /><span></span><div>-6</div>
</div>
<div class="con-footer" title="@{overflow}">
<label data-i18n="overflow">Overflow</label><div class="attr-und"><span name="attr_overflow"></span></div>
</div>
</div>
<div class="con-track">
<input type="hidden" name="attr_stun" value="0" />
<button type="action" name="act_cond_reset_stun" data-i18n="stundamagetrack">Stun Damage Track</button>
<div class="squares">
<input class="hex-hider" type="hidden" name="attr_stun_max" value="10" />
<input type="radio" name="attr_stun" value="1" /><span></span>
<input type="radio" name="attr_stun" value="2" /><span></span>
<input type="radio" name="attr_stun" value="3" /><span></span><div>-1</div>
<input type="radio" name="attr_stun" value="4" /><span></span>
<input type="radio" name="attr_stun" value="5" /><span></span>
<input type="radio" name="attr_stun" value="6" /><span></span><div>-2</div>
<input type="radio" name="attr_stun" value="7" /><span></span>
<input type="radio" name="attr_stun" value="8" /><span></span>
<input type="radio" name="attr_stun" value="9" /><span></span><div>-3</div>
<input type="radio" name="attr_stun" value="10" /><span></span>
<input type="radio" name="attr_stun" value="11" /><span></span>
<input type="radio" name="attr_stun" value="12" /><span></span><div>-4</div>
<input type="radio" name="attr_stun" value="13" /><span></span>
<input type="radio" name="attr_stun" value="14" /><span></span>
<input type="radio" name="attr_stun" value="15" /><span></span><div>-5</div>
</div>
<div class="con-footer">
<span data-i18n="conditionfooter">For every 3 boxes of damage on any one damage track, the character takes a -1 Dice Pool modifier on tests; these modifiers are cumulative within and across damage tracks.</span>
</div>
</div>
</div>
</div>
</div>
</div><!-- ~~~~~~~~ End of Condition Monitor ~~~~~~~~ --><div class="quality-box"><div class="header right-header"><div class="header htab"><input class="tab-switch" input="input" name="attr_quality_toggle" type="radio" value="quality" checked="checked"/><h1 data-i18n="qualities">Qualities</h1><div class="right-tri"></div></div><div class="header htab"><div class="triangle"></div><input class="tab-switch" input="input" name="attr_quality_toggle" type="radio" value="martial"/><h1 data-i18n="martialarts">Martial Arts</h1><div class="right-tri"></div></div></div><div class="border-box"><div class="pc-box medium-box"><input class="tab-switch" input="input" name="attr_quality_toggle" type="hidden" value="quality"/><div class="quality"><div class="row-long headers"><h2 data-i18n="quality">Quality</h2><h2 data-i18n="type">Type</h2></div><div class="rows repeating-container"><fieldset class="repeating_quality"><span class="eclipse" name="attr_quality"></span><span class="text-center" name="attr_type"></span><button class="pictos" name="quality_chat" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=@{quality}}}{{desc=@{notes}}}">w</button><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><input class="text-left" name="attr_quality" placeholder="quality name" title="@{repeating_quality_${x}_quality}" type="text"/><select name="attr_type" title="@{repeating_quality_${x}_type}" value="p"><option data-i18n="p" value="P" selected="selected">P</option><option data-i18n="n" value="N">N</option></select><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_quality_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div><div class="martial"><div class="row-long headers"><h2 data-i18n="technique">Technique</h2><h2 data-i18n="style">Style</h2></div><div class="rows repeating-container"><fieldset class="repeating_martial"><span class="eclipse" name="attr_technique"></span><span class="text-center" name="attr_style"></span><button class="pictos" name="technique_chat" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=@{technique}}}{{desc=@{notes}}}">w</button><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><input class="text-left" name="attr_technique" placeholder="technique name" title="@{repeating_martial_${x}_technique}" type="text"/><input name="attr_style" placeholder="style name" title="@{repeating_martial_${x}_style}" type="text"/><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_martial_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div></div><div class="arms pc-col"><div class="pc-row weapons"><div class="header right-header"><h1 data-i18n="weapons">Weapons</h1><div class="right-tri"></div></div><div class="header right-header"><div class="header htab"><div class="triangle"></div><input class="tab-switch" name="attr_weapon_type_toggle" type="radio" value="range" checked="checked"/><h1 data-i18n="ranged">Ranged</h1><div class="right-tri"></div></div><div class="header htab"><div class="triangle"></div><input class="tab-switch" name="attr_weapon_type_toggle" type="radio" value="melee"/><h1 data-i18n="melee">Melee</h1><div class="right-tri"></div></div></div><div class="border-box"><div class="pc-box medium-box"><input class="tab-switch" name="attr_weapon_type_toggle" type="hidden" value="range"/><div class="rows repeating-container weapon-range"><div class="row-long headers"><h2 data-i18n="weapon">Weapon</h2><h2 data-i18n="dam">Dam</h2><h2 data-i18n="acc">ACC</h2><h2 data-i18n="ap">AP</h2><h2 data-i18n="mode">Mode</h2><h2 data-i18n="recoil">Recoil</h2><h2 data-i18n="ammo">Ammo</h2></div><fieldset class="repeating_range"><input name="attr_dicepool" type="hidden" value="0"/><input class="flag-primary" name="attr_primary" type="hidden" value=""/><button name="roll_range_weapon" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{weapon}}}{{base=^{agility}}}{{dice=[[((@{skill}+@{dicepool}+@{agility})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{mode}, ACC @{acc}, DV @{damage}, AP @{ap}}}"><span name="attr_weapon"></span></button><span class="text-center" name="attr_damage"></span><span class="text-center" name="attr_acc"></span><span class="text-center" name="attr_ap"></span><select name="attr_mode" title="@{mode}" value="BF"><option data-i18n="bf" value="BF">BF</option><option data-i18n="fa" value="FA">FA</option><option data-i18n="sa" value="SA">SA</option><option data-i18n="ss" value="SS">SS</option><option data-i18n="other" value="Other">Other</option></select><span class="text-center" name="attr_recoil"></span><span class="text-center" name="attr_ammo"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="weapon" title="weapon"><input name="attr_weapon" placeholder="Ares Predator" title="@{repeating_range_${x}_weapon}" type="text" value=""/></label><label data-i18n-title="dam" title="dam"><input name="attr_damage" placeholder="9P" title="@{repeating_range_${x}_damage}" type="text" value=""/></label><label data-i18n-title="acc" title="acc"><input name="attr_acc" placeholder="5" title="@{repeating_range_${x}_acc}" type="text" value=""/></label><label data-i18n-title="ap" title="ap"><input name="attr_ap" placeholder="-2" title="@{repeating_range_${x}_ap}" type="number" value=""/></label><select name="attr_mode" title="@{mode}" value="BF"><option data-i18n="bf" value="BF">BF</option><option data-i18n="fa" value="FA">FA</option><option data-i18n="sa" value="SA">SA</option><option data-i18n="ss" value="SS">SS</option><option data-i18n="other" value="Other">Other</option></select><label data-i18n-title="recoil" title="recoil"><input name="attr_recoil" placeholder="+2" title="@{repeating_range_${x}_recoil}" type="number" value=""/></label><label data-i18n-title="ammo" title="ammo"><input name="attr_ammo" placeholder="15" title="@{repeating_range_${x}_ammo}" type="number" value=""/></label><div class="row"><h3 data-i18n="modeoptions">Mode Options</h3><label data-i18n-title="modeoptions" title="Mode Options"><input name="attr_mode_options" placeholder="SA/BF/FA" type="text" title="@{repeating_range_${x}_mode_options}}"/></label><h3 data-i18n="range">range</h3><label data-i18n-title="range" title="Range"><input name="attr_range" placeholder="25/150/350/550" type="text" title=""/></label><h3 data-i18n="primary">primary</h3><label data-i18n-title="primary" title="Primary"><input name="attr_primary" type="checkbox" title="@{repeating_range_${x}_primary}" value="primary"/></label></div><div class="row"><h3 data-i18n="skill">skill</h3><select name="attr_skill" title="@{repeating_range_${x}_skill}" value="@{firearms}"><optgroup label="Combat Skills">Combat Skills<option data-i18n="firearmsgroup" value="@{firearms}" selected="selected">Firearms Group</option><option data-i18n="automatics" value="@{automatics}">Automatics</option><option data-i18n="archery" value="@{archery}">Archery</option><option data-i18n="exoticrange" value="0">Exotic Range</option><option data-i18n="heavyweapons" value="@{heavyweapons}">Heavy Weapons</option><option data-i18n="longarms" value="@{longarms}">Longarms</option><option data-i18n="pistols" value="@{pistols}">Pistols</option><option data-i18n="throwingweapons" value="@{throwingweapons}">Throwing Weapons</option></optgroup><optgroup label="Vehicle Skills">Vehicle Skills<option data-i18n="gunnery" value="@{gunnery}">Gunnery</option></optgroup></select><h3 data-i18n="specialization">specialization</h3><label data-i18n-title="specialization" title="specialization"><input name="attr_specialization" value="2" title="@{repeating_range_${x}_specialization}" type="checkbox"/></label><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_dicepool_modifier" title="@{repeating_range_${x}_dicepool_modifier}" type="number"/></label><input name="attr_skill" type="hidden" value=""/><div class="exotic-warning"><i data-i18n="exoticnote">Exotic weapons are not linked to a skill. Use Modifier input to set dicepool.</i></div></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_range_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div><div class="rows repeating-container weapon-melee"><div class="row-long headers"><h2 data-i18n="weapon">Weapon</h2><h2 data-i18n="dam">Dam</h2><h2 data-i18n="acc">ACC</h2><h2 data-i18n="ap">AP</h2><h2 data-i18n="reach">Reach</h2></div><fieldset class="repeating_melee"><input name="attr_dicepool" type="hidden" value="0"/><input class="flag-primary" name="attr_primary" type="hidden" value=""/><button name="roll_melee_weapon" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{weapon}}}{{base=^{agility}}}{{dice=[[((@{skill}+@{dicepool}+@{agility})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=ACC @{acc}, DV @{damage}, AP @{ap}, Reach @{reach}}}"><span name="attr_weapon"></span></button><span class="text-center" name="attr_damage"></span><span class="text-center" name="attr_acc"></span><span class="text-center" name="attr_ap"></span><span class="text-center" name="attr_reach"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="weapon" title="weapon"><input name="attr_weapon" placeholder="Katana" title="@{repeating_melee_${x}_weapon}" type="text" value=""/></label><label data-i18n-title="dam" title="dam"><input name="attr_damage" placeholder="5P" title="@{repeating_melee_${x}_damage}" type="text" value=""/></label><label data-i18n-title="acc" title="acc"><input name="attr_acc" placeholder="7" title="@{repeating_melee_${x}_acc}" type="text" value=""/></label><label data-i18n-title="ap" title="ap"><input name="attr_ap" placeholder="-3" title="@{repeating_melee_${x}_ap}" type="number" value=""/></label><label data-i18n-title="reach" title="reach"><input name="attr_reach" placeholder="1" title="@{repeating_melee_${x}_reach}" type="number" value=""/></label><h3 data-i18n="primary">primary</h3><label data-i18n-title="primary" title="Primary"><input name="attr_primary" type="checkbox" title="@{repeating_melee_${x}_primary}" value="primary"/></label><div class="row"><h3 data-i18n="skill">skill</h3><select name="attr_skill" title="@{repeating_melee_${x}_skill}" value="@{closecombat}"><optgroup label="Combat Skills">Combat Skills<option data-i18n="closecombatgroup" value="@{closecombat}" selected="selected">Close Combat Group</option><option data-i18n="blades" value="@{blades}">Blades</option><option data-i18n="clubs" value="@{clubs}">Clubs</option><option data-i18n="exoticmelee" value="0">Blades</option><option data-i18n="unarmedcombat" value="@{unarmedcombat}">Unarmed Combat</option></optgroup><optgroup label="Vehicle Skills">Vehicle Skills<option data-i18n="gunnery" value="@{gunnery}">Gunnery</option></optgroup></select><h3 data-i18n="specialization">specialization</h3><label data-i18n-title="specialization" title="specialization"><input name="attr_specialization" value="2" title="@{repeating_melee_${x}_specialization}" type="checkbox"/></label><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_dicepool_modifier" title="@{repeating_melee_${x}_dicepool_modifier}" type="number"/></label><input name="attr_skill" type="hidden" value=""/><div class="exotic-warning"><i data-i18n="exoticnote">Exotic weapons are not linked to a skill. Use Modifier input to set dicepool.</i></div></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_melee_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div><div class="pc-row armor"><div class="header right-header"><h1 data-i18n="armor">Armor</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box"><div class="rows repeating-container"><div class="row-long headers"><h2 data-i18n="armor">Armor</h2><h2 data-i18n="rating">Rating</h2><h2 data-i18n="acid">Acid</h2><h2 data-i18n="cold">Cold</h2><h2 data-i18n="elec">Elec</h2><h2 data-i18n="fire">Fire</h2><h2 data-i18n="radi">Radi</h2></div><fieldset class="repeating_armor"><input class="flag-primary" name="attr_primary" type="hidden" value=""/><button name="roll_soak" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{soak}}}{{base=^{body} ♦ ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span name="attr_name"></span></button><button name="roll_armor" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base= ^{armor}}}{{dice=[[((@{rating})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span class="text-center" name="attr_rating"></span></button><button name="roll_acid" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{acidprotection}}}{{base= ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier}+@{acid_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span class="text-center" name="attr_acid_modifier"></span></button><button name="roll_cold" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{coldprotection}}}{{base= ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier}+@{cold_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span class="text-center" name="attr_cold_modifier"></span></button><button name="roll_electrical" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{electricalprotection}}}{{base= ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier}+@{electrical_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span class="text-center" name="attr_electrical_modifier"></span></button><button name="roll_fire" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{fireprotection}}}{{base= ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier}+@{fire_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span class="text-center" name="attr_fire_modifier"></span></button><button name="roll_radiation" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{radiationprotection}}}{{base= ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier}+@{radiation_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span class="text-center" name="attr_radiation_modifier"></span></button><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="name"><input name="attr_name" placeholder="Armor Jacket" title="@{@{repeating_armor_${x}_name}" type="text" value=""/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" placeholder="12" title="@{@{repeating_armor_${x}_rating}" type="number" value=""/></label><label data-i18n-title="acid" title="acid"><input name="attr_acid_modifier" placeholder="+5" title="@{@{repeating_armor_${x}_acid_modifier}" type="number" value=""/></label><label data-i18n-title="cold" title="cold"><input name="attr_cold_modifier" placeholder="0" title="@{@{repeating_armor_${x}_cold_modifier}" type="number" value=""/></label><label data-i18n-title="electrical" title="electrical"><input name="attr_electrical_modifier" placeholder="0" title="@{@{repeating_armor_${x}_electrical_modifier}" type="number" value=""/></label><label data-i18n-title="fire" title="fire"><input name="attr_fire_modifier" placeholder="0" title="@{@{repeating_armor_${x}_fire_modifier}" type="number" value=""/></label><label data-i18n-title="radiation" title="radiation"><input name="attr_radiation_modifier" placeholder="0" title="@{@{repeating_armor_${x}_radiation_modifier}" type="number" value=""/></label><div class="row"><h3 data-i18n="primary">primary</h3><label data-i18n-title="primary" title="Primary"><input name="attr_primary" type="checkbox" title="@{@{repeating_armor_${x}_primary}" value="primary"/></label><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_dicepool_modifier" placeholder="0" title="@{@{repeating_armor_${x}_dicepool_modifier}" type="number" value="0"/></label></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_armor_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="augs pc-col"><div class="pc-row"><div class="header right-header"><h1 data-i18n="augmentations">Augmentations</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box"><div class="row-long headers"><h2 data-i18n="augmentations">Augmentations</h2><h2 data-i18n="rating">Rating</h2><h2 data-i18n="essence">Essence</h2></div><div class="rows repeating-container"><fieldset class="repeating_augementations"><span name="attr_augmentation"></span><span class="text-center" name="attr_rating"></span><span class="text-center" name="attr_essence"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="Augmentations" title="Augmentations"><input class="text-left" name="attr_augmentation" placeholder="name" title="@{repeating_augementations_${x}_augmentation}" type="text" value=""/></label><label data-i18n-title="Rating" title="Rating"><input class="text-center" name="attr_rating" placeholder="0" title="@{repeating_augementations_${x}_rating}" type="number" value=""/></label><label data-i18n-title="Essence" title="Essence"><input class="text-center" name="attr_essence" placeholder="0" title="@{repeating_augementations_${x}_essence}" type="number" value=""/></label><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_augementations_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="gear pc-col"><div class="pc-row"><div class="header right-header"><h1 data-i18n="gear">gear</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box"><div class="row-long headers"><h2 data-i18n="item">Item</h2><h2 data-i18n="rating">Rating</h2><h2 data-i18n="quantity">Quantity</h2></div><div class="rows repeating-container"><fieldset class="repeating_items"><select class="pictos" name="attr_location" value="person"><option class="pictos" value="person">U</option><option class="pictos" value="bag">O</option><option class="pictos" value="home">H</option><option class="pictos" value="vehicle">X</option><option class="pictos" value="other">.</option></select><input name="attr_location" type="hidden" value="person"/><span class="text-left" name="attr_item"></span><span class="text-center" name="attr_rating"></span><span class="text-center" name="attr_quantity"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="item" title="item"><input class="text-left" name="attr_item" placeholder="Jammer" title="@{repeating_items_${x}_item}" type="text" value=""/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" placeholder="3" title="@{repeating_items_${x}_rating}" type="text" value=""/></label><label data-i18n-title="quantity" title="quantity"><input name="attr_quantity" placeholder="x3" title="@{repeating_items_${x}_quantity}" type="text" value=""/></label><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_items_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="magic pc-col"><div class="pc-row spell-box"><div class="header right-header"><h1 data-i18n="magic">Magic</h1><div class="right-tri"></div></div><div class="header right-header"><div class="header htab"><div class="triangle"></div><input class="magic-toggle" name="attr_magic_toggle" title="@{magic_toggle}" type="radio" value="spells" checked="checked"/><h1 data-i18n="spells"></h1><div class="right-tri"></div></div><div class="header htab"><div class="triangle"></div><input class="magic-toggle" name="attr_magic_toggle" title="@{magic_toggle}" type="radio" value="preps"/><h1 data-i18n="preps"></h1><div class="right-tri"></div></div><div class="header htab"><div class="triangle"></div><input class="magic-toggle" name="attr_magic_toggle" title="@{magic_toggle}" type="radio" value="rituals"/><h1 data-i18n="rituals"></h1><div class="right-tri"></div></div></div><div class="border-box"><div class="pc-box medium-box"><button data-i18n="drain" name="roll_drain" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{drain}}}{{base=^{base}}}{{dice=[[((@{drain_attribute_1}+@{drain_attribute_2}+@{drain_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"></button><select class="attribute-select" name="attr_drain_attribute_1" title="@{drain_attribute_1}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}" selected="selected">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><span>+</span><select class="attribute-select" name="attr_drain_attribute_2" title="@{drain_attribute_2}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}" selected="selected">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_drain_modifier" title="@{drain_modifier}" type="number" value="0"/></label><input class="magic-toggle" name="attr_magic_toggle" type="hidden" value="spells"/><div class="row-long headers"><h2 data-i18n="spells">spells</h2><h2 data-i18n="type">type</h2><h2 data-i18n="range">range</h2><h2 data-i18n="duration">duration</h2><h2 data-i18n="drain">drain</h2></div><div class="magic-spells spellsForumlas"><div class="rows repeating-container"><fieldset class="repeating_spell"><input name="attr_dicepool" type="hidden" value="0"/><button class="display-none" name="roll_drain" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{drain}}}{{base=^{base}}}{{dice=[[((@{drain_attribute_1}+@{drain_attribute_2}+@{drain_modifier})+@{modifiers_toggle}+@{edge_toggle})d6&gt;5@{explode_toggle}]]}}"></button><button name="roll_spell" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base=^{magic}}}{{dice=[[((@{skill}+@{dicepool}+@{magic})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{combat_type}?{Force|}}}{{drain=[[?{Force|}+(@{drain})]] [f](~repeating_spell_drain)}}"><span name="attr_name"></span></button><span class="text-center" name="attr_type"></span><span class="text-center" name="attr_range"></span><span class="text-center" name="attr_duration"></span><span class="text-center" name="attr_drain"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox" checked="checked"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="Name"><input name="attr_name" placeholder="Fireball" title="@{repeating_spell_${x}_name}" type="text"/></label><select name="attr_type" title="@{repeating_spell_${x}_type}" value="physical"><option data-i18n="mana" value="Mana">mana</option><option data-i18n="physical" value="Physical" selected="selected">physical</option></select><select name="attr_range" title="@{repeating_spell_${x}_range}" value="los"><option data-i18n="los" value="LOS" selected="selected">los</option><option data-i18n="los (a)" value="LOS (A)">los (a)</option><option data-i18n="special" value="Special">special</option><option data-i18n="t" value="T">t</option><option data-i18n="t (a)" value="T (A)">t (a)</option></select><select name="attr_duration" title="@{repeating_spell_${x}_duration}" value="instant"><option data-i18n="instant" value="Instant" selected="selected">instant</option><option data-i18n="permanent" value="Permanent">permanent</option><option data-i18n="special" value="Special">special</option><option data-i18n="sustained" value="Sustained">sustained</option></select><label data-i18n-title="drain" title="Drain"><input name="attr_drain" placeholder="-1" title="@{repeating_spell_${x}_drain}" type="number"/></label><div class="row"><h3 data-i18n="category">Category</h3><select name="attr_category" title="@{repeating_spell_${x}_category}" value="Combat"><option data-i18n="combat" value="Combat">combat</option><option data-i18n="detection" value="Detection">detection</option><option data-i18n="health" value="Health">health</option><option data-i18n="illusion" value="Illusion">illusion</option><option data-i18n="manipulation" value="Manipulation">manipulation</option></select><h3 data-i18n="combat">Combat</h3><select name="attr_combat_type" title="@{repeating_spell_${x}_combat_type}" value="force"><option data-i18n="force" value="Force " selected="selected">force</option><option data-i18n="direct" value="Direct, Force ">direct</option><option data-i18n="indirect" value="Indirect, Force ?{Force|}, AP -">indirect</option></select><h3 data-i18n="damage">Damage</h3><label data-i18n-title="damage" title="Damage"><input name="attr_damage" placeholder="P" title="@{repeating_spell_${x}_damage}" type="text"/></label></div><div class="row"><h3 data-i18n="skill">Skill</h3><select name="attr_skill" title="@{repeating_spell_${x}_skill}" value="@{spellcasting}"><option data-i18n="sorcerygroup" value="@{sorcery}">sorcerygroup</option><option data-i18n="spellcasting" value="@{spellcasting}" selected="selected">spellcasting</option></select><h3 data-i18n="specialization">Specialization</h3><label data-i18n-title="specialization" title="Specialization"><input name="attr_specialization" title="@{repeating_spell_${x}_specialization}" type="checkbox" value="2"/></label><h3 data-i18n="modifierdice">modifier dice</h3><label data-i18n-title="modifierdice" title="modifier dice"><input name="attr_dicepool_modifier" placeholder="0" title="@{repeating_spell_${x}_dicepool_modifier}" type="number" value="0"/></label></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_spell_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div><div class="magic-preps spellsForumlas"><div class="rows repeating-container"><fieldset class="repeating_preps"><input name="attr_dicepool" type="hidden" value="0"/><button class="display-none" name="roll_drain" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{drain}}}{{base=^{base}}}{{dice=[[((@{drain_attribute_1}+@{drain_attribute_2}+@{drain_modifier})+@{modifiers_toggle}+@{edge_toggle})d6&gt;5@{explode_toggle}]]}}"></button><button name="roll_preps" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base=^{magic}}}{{dice=[[((@{skill}+@{dicepool}+@{magic})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{combat_type}?{Force|}}}{{drain=[[?{Force|}+(@{drain})]] [f](~repeating_preps_drain)}}"><span name="attr_name"></span></button><span class="text-center" name="attr_type"></span><span class="text-center" name="attr_range"></span><span class="text-center" name="attr_duration"></span><span class="text-center" name="attr_drain"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox" checked="checked"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="Name"><input name="attr_name" placeholder="Fireball" title="@{repeating_preps_${x}_name}" type="text"/></label><select name="attr_type" title="@{repeating_preps_${x}_type}" value="physical"><option data-i18n="mana" value="Mana">mana</option><option data-i18n="physical" value="Physical" selected="selected">physical</option></select><select name="attr_range" title="@{repeating_preps_${x}_range}" value="los"><option data-i18n="los" value="LOS" selected="selected">los</option><option data-i18n="los (a)" value="LOS (A)">los (a)</option><option data-i18n="special" value="Special">special</option><option data-i18n="t" value="T">t</option><option data-i18n="t (a)" value="T (A)">t (a)</option></select><select name="attr_duration" title="@{repeating_preps_${x}_duration}" value="instant"><option data-i18n="instant" value="Instant" selected="selected">instant</option><option data-i18n="permanent" value="Permanent">permanent</option><option data-i18n="special" value="Special">special</option><option data-i18n="sustained" value="Sustained">sustained</option></select><label data-i18n-title="drain" title="Drain"><input name="attr_drain" placeholder="-1" title="@{repeating_preps_${x}_drain}" type="number"/></label><div class="row"><h3 data-i18n="category">Category</h3><select name="attr_category" title="@{repeating_preps_${x}_category}" value="Combat"><option data-i18n="combat" value="Combat">combat</option><option data-i18n="detection" value="Detection">detection</option><option data-i18n="health" value="Health">health</option><option data-i18n="illusion" value="Illusion">illusion</option><option data-i18n="manipulation" value="Manipulation">manipulation</option></select><h3 data-i18n="combat">Combat</h3><select name="attr_combat_type" title="@{repeating_preps_${x}_combat_type}" value="force"><option data-i18n="force" value="Force " selected="selected">force</option><option data-i18n="direct" value="Direct, Force ">direct</option><option data-i18n="indirect" value="Indirect, Force ?{Force|}, AP -">indirect</option></select><h3 data-i18n="damage">Damage</h3><label data-i18n-title="damage" title="Damage"><input name="attr_damage" placeholder="P" title="@{repeating_preps_${x}_damage}" type="text"/></label></div><div class="row"><h3 data-i18n="skill">Skill</h3><select name="attr_skill" title="@{repeating_preps_${x}_skill}" value="@{alchemy}"><option data-i18n="enchantinggroup" value="@{enchanting}">enchantinggroup</option><option data-i18n="alchemy" value="@{alchemy}" selected="selected">alchemy</option></select><h3 data-i18n="specialization">Specialization</h3><label data-i18n-title="specialization" title="Specialization"><input name="attr_specialization" title="@{repeating_preps_${x}_specialization}" type="checkbox" value="2"/></label><h3 data-i18n="modifierdice">modifier dice</h3><label data-i18n-title="modifierdice" title="modifier dice"><input name="attr_dicepool_modifier" placeholder="0" title="@{repeating_preps_${x}_dicepool_modifier}" type="number" value="0"/></label></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_preps_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div><div class="rows repeating-container prepared-preparations"><h2 data-i18n="preperations"></h2><div class="row-long headers"><h3 data-i18n="name"></h3><h3 data-i18n="force"></h3><h3 data-i18n="potency"></h3><h3 data-i18n="trigger"></h3></div><fieldset class="repeating_preperations"><button name="roll_preparation" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base=^{base}}}{{dice=[[((@{force}+@{potency})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}undefined"><span name="attr_name"></span></button><span class="text-center" name="attr_force"></span><span class="text-center" name="attr_potency"></span><span class="text-center" name="attr_trigger"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="name"><input name="attr_name" placeholder="Name" title="@{repeating_preperations_${x}_name}" type="text" value=""/></label><label data-i18n-title="force" title="force"><input name="attr_force" placeholder="1" title="@{repeating_preperations_${x}_force}" type="number" value=""/></label><label data-i18n-title="potency" title="potency"><input name="attr_potency" placeholder="1" title="@{repeating_preperations_${x}_potency}" type="number" value=""/></label><select name="attr_trigger" title="@{repeating_preperations_${x}_trigger}" value="Command"><optgroup label="Trigger">Trigger<option data-i18n="command" value="Command">command</option><option data-i18n="contact" value="Contact" selected="selected">contact</option><option data-i18n="time" value="Time">time</option><option data-i18n="special" value="Special">special</option></optgroup></select><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_preperations_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div><div class="magic-rituals"><div class="rows repeating-container"><fieldset class="repeating_ritual"><input name="attr_dicepool" type="hidden" value="0"/><button name="roll_ritual" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base=^{base}}}{{dice=[[((@{skill}+@{dicepool}+@{magic})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=^{force} ?{Force|}}}"><span name="attr_name"></span></button><span class="text-center" name="attr_type"></span><span class="text-center" name="attr_range"></span><span class="text-center" name="attr_duration"></span><span class="text-center" name="attr_drain"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="name"><input name="attr_name" placeholder="Curse (MATERIAL LINK, SPELL)" title="@{@{repeating_undefined_${x}_name}" type="text"/></label><div class="rows"><h3 data-i18n="skill">skill</h3><select name="attr_skill" title="@{@{repeating_undefined_${x}_skill}"><option data-i18n="sorcerygroup" value="@{sorcery}">Sorcery Group</option><option data-i18n="ritualspellcasting" value="@{ritualspellcasting}" selected="selected">Ritual Spellcasting</option></select><h3 data-i18n="specialization">specialization</h3><label data-i18n-title="specialization" title="specialization"><input name="attr_specialization" title="@{@{repeating_undefined_${x}_specialization}" type="checkbox" value="2"/></label><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_dicepool_modifier" title="@{@{repeating_undefined_${x}_dicepool_modifier}" type="number"/></label></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_ritual_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="pc-row powers"><div class="header right-header"><h1 data-i18n="adeptpowers">Adept Powers or Other Abilities</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box"><button data-i18n="drain" name="roll_drain" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{drain}}}{{base=^{base}}}{{dice=[[((@{drain_attribute_1}+@{drain_attribute_2}+@{drain_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"></button><select class="attribute-select" name="attr_drain_attribute_1" title="@{drain_attribute_1}"><option data-i18n="body" value="@{body}" selected="selected">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><span>+</span><select class="attribute-select" name="attr_drain_attribute_2" title="@{drain_attribute_2}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}" selected="selected">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_drain_modifier" title="@{drain_modifier}" type="number" value="0"/></label><div class="row-long headers"><h2 data-i18n="name">Name</h2><h2 class="text-center" data-i18n="rating">Rating</h2></div><div class="rows repeating-container powers"><fieldset class="repeating_powers"><span name="attr_name"></span><span class="text-center" name="attr_rating"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="name"><input name="attr_name" placeholder="name" title="@{repeating_powers_${x}_name}" type="text" value=""/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" placeholder="rating" title="@{repeating_powers_${x}_rating}" type="number" value=""/></label><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_powers_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="matrix pc-col"><div class="pc-row matrix-box"><div class="header right-header"><h1 data-i18n="cyberdeck">Cyberdeck</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box"><div class="cyberdeck">
<div class="row-long">
<label data-i18n="model">Model</label><input type="text" name="attr_cyberdeck" value="" placeholder="Sony CYI-720" title="Cyberdeck name" />
</div>
<div class="row-long">
<label><button type="roll" name="device rating" value="&{template:rolls}{{header=^{matrixsoak}}}{{base=^{devicerating}}}{{dice=[[((@{device_rating}+@{firewall})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Roll matrix soak" data-i18n="devicerating">Device Rating</button></label><input type="number" name="attr_device_rating" min="0" value="" placeholder="4" style="margin-right: 15%;" title="@{device_rating}" />
<label data-i18n="attributearray">Attribute Array</label>
<input type="number" name="attr_attribute_1" min="0" value="" placeholder="7" />
<input type="number" name="attr_attribute_2" min="0" value="" placeholder="6" />
<input type="number" name="attr_attribute_3" min="0" value="" placeholder="5" />
<input type="number" name="attr_attribute_4" min="0" value="" placeholder="4" />
</div>
<div class="row-long">
<h3 data-i18n="total">Total</h3><h3 data-i18n="temp">Temp</h3><h3 data-i18n="modifier">modifier</h3><h3 data-i18n="base">Base</h3><h3 data-i18n="baseslider">Base slider</h3><br />
<label><button type="roll" name="attack" value="&{template:rolls}{{header=^{attack}}}{{base=^{attack}}}{{dice=[[(@{attack}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Roll attack" data-i18n="attack">Attack</button>
</label>
<div class="matrix-tot" title="@{attack}" ><span name="attr_attack"></span></div><span> = </span>
<input type="number" name="attr_attack_temp" min="0" value="" placeholder="0" title="@{attack_temp}" /><spam> + </spam>
<input type="number" name="attr_attack_modifier" min="0" value="" placeholder="0" title="@{attack_modifier}" /><spam> + </spam>
<input type="number" name="attr_attack_base" min="0" value="" placeholder="7" title="@{attack_base}" />
<div class="device-attr">
<div class="matrix-bubble matrixAttack">
<input type="radio" name="attr_attack_base" value="1" /><span></span>
<input type="radio" name="attr_attack_base" value="2" /><span></span>
<input type="radio" name="attr_attack_base" value="3" /><span></span>
<input type="radio" name="attr_attack_base" value="4" /><span></span>
<input type="radio" name="attr_attack_base" value="5" /><span></span>
<input type="radio" name="attr_attack_base" value="6" /><span></span>
<input type="radio" name="attr_attack_base" value="7" /><span></span>
<input type="radio" name="attr_attack_base" value="8" /><span></span>
<input type="radio" name="attr_attack_base" value="9" /><span></span>
<input type="radio" name="attr_attack_base" value="10" /><span></span>
</div>
</div>
</div>
<div class="row-long">
<label><button type="roll" name="sleaze" value="&{template:rolls}{{header=^{sleaze}}}{{base=^{base}}}{{dice=[[(@{sleaze}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Roll sleaze" data-i18n="sleaze">Sleaze</button></label>
<div class="matrix-tot" title="@{sleaze}" ><span name="attr_sleaze"></span></div><span> = </span>
<input type="number" name="attr_sleaze_temp" min="0" value="" placeholder="0" title="@{sleaze_temp}" /><spam> + </spam>
<input type="number" name="attr_sleaze_modifier" min="0" value="" placeholder="0" title="@{sleaze_modifier}" /><spam> + </spam>
<input type="number" name="attr_sleaze_base" min="0" value="" placeholder="6" title="@{sleaze_base}" />
<div class="device-attr">
<div class="matrix-bubble matrixSleaze">
<input type="radio" name="attr_sleaze_base" value="1" /><span></span>
<input type="radio" name="attr_sleaze_base" value="2" /><span></span>
<input type="radio" name="attr_sleaze_base" value="3" /><span></span>
<input type="radio" name="attr_sleaze_base" value="4" /><span></span>
<input type="radio" name="attr_sleaze_base" value="5" /><span></span>
<input type="radio" name="attr_sleaze_base" value="6" /><span></span>
<input type="radio" name="attr_sleaze_base" value="7" /><span></span>
<input type="radio" name="attr_sleaze_base" value="8" /><span></span>
<input type="radio" name="attr_sleaze_base" value="9" /><span></span>
<input type="radio" name="attr_sleaze_base" value="10" /><span></span>
</div>
</div>
</div>
<div class="row-long">
<label><button type="roll" name="data processing" value="&{template:rolls}{{header=^{data_processing}}}{{base=^{base}}}{{dice=[[(@{data_processing}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Roll data processing" data-i18n="dataproc">Data Proc.</button></label>
<div class="matrix-tot" title="@{data_processing}" ><span name="attr_data_processing"></span></div><span> = </span>
<input type="number" name="attr_data_processing_temp" min="0" alue="" placeholder="0" title="@{data_processing_temp}" /><spam> + </spam>
<input type="number" name="attr_data_processing_modifier" min="0" value="" placeholder="0" title="@{data_processing_modifier}" /><spam> + </spam>
<input type="number" name="attr_data_processing_base" min="0" value="" placeholder="5" title="@{data_processing_base}" />
<div class="device-attr">
<div class="matrix-bubble matrixData">
<input type="radio" name="attr_data_processing_base" value="1" /><span></span>
<input type="radio" name="attr_data_processing_base" value="2" /><span></span>
<input type="radio" name="attr_data_processing_base" value="3" /><span></span>
<input type="radio" name="attr_data_processing_base" value="4" /><span></span>
<input type="radio" name="attr_data_processing_base" value="5" /><span></span>
<input type="radio" name="attr_data_processing_base" value="6" /><span></span>
<input type="radio" name="attr_data_processing_base" value="7" /><span></span>
<input type="radio" name="attr_data_processing_base" value="8" /><span></span>
<input type="radio" name="attr_data_processing_base" value="9" /><span></span>
<input type="radio" name="attr_data_processing_base" value="10" /><span></span>
</div>
</div>
</div>
<div class="row-long">
<label><button type="roll" name="firewall" value="&{template:rolls}{{header=^{firewall}}}{{base=^{base}}}{{dice=[[(@{firewall}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" title="Roll firewall" data-i18n="firewall">Firewall</button></label>
<div class="matrix-tot" title="@{firewall}" ><span name="attr_firewall"></span></div><span> = </span>
<input type="number" name="attr_firewall_temp" min="0" value="" placeholder="0" title="@{firewall_temp}" /><spam> + </spam>
<input type="number" name="attr_firewall_modifier" min="0" value="" placeholder="0" title="@{firewall_modifier}" /><spam> + </spam>
<input type="number" name="attr_firewall_base" min="0" value="" placeholder="4" title="@{firewall_base}" />
<div class="device-attr">
<div class="matrix-bubble matrixFirewall">
<input type="radio" name="attr_firewall_base" value="1" /><span></span>
<input type="radio" name="attr_firewall_base" value="2" /><span></span>
<input type="radio" name="attr_firewall_base" value="3" /><span></span>
<input type="radio" name="attr_firewall_base" value="4" /><span></span>
<input type="radio" name="attr_firewall_base" value="5" /><span></span>
<input type="radio" name="attr_firewall_base" value="6" /><span></span>
<input type="radio" name="attr_firewall_base" value="7" /><span></span>
<input type="radio" name="attr_firewall_base" value="8" /><span></span>
<input type="radio" name="attr_firewall_base" value="9" /><span></span>
<input type="radio" name="attr_firewall_base" value="10" /><span></span>
</div>
</div>
</div>
<div class="con-hex">
<input type="radio" name="attr_matrix" value="0" /><h2 data-i18n="conditionmonitor">Condition Monitor</h2>
<input type="radio" name="attr_matrix" value="1" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="2" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="3" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="4" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="5" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="6" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="7" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="8" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="9" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="10" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="11" /><span class="hexagon"></span>
<input type="radio" name="attr_matrix" value="12" /><span class="hexagon"></span>
</div></div><div class="rows repeating-container programs"><h2 data-i18n="programs">Programs</h2><fieldset class="repeating_programs"><input class="toggle indicator" name="attr_program_on" type="checkbox" checked="checked"/><span class="pictos">Q</span><span class="eclipse" name="attr_program"></span><button class="pictos" name="program_chat" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=@{program}}}{{desc=@{notes}}}">w</button><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="programs" title="programs"><input name="attr_program" placeholder="Program name" title="@{repeating_programs_${x}_program}" type="text" value=""/></label><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_programs_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div><div class="pc-row"><div class="header right-header"><h1 data-i18n="complex form">Complex Forms</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box complex-forms"><button data-i18n="fade" name="roll_fade" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{fade}}}{{base=^{base}}}{{dice=[[((@{fade_attribute_1}+@{fade_attribute_2}+@{fade_modifier})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"></button><select class="attribute-select" name="attr_fade_attribute_1" title="@{fade_attribute_1}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}" selected="selected">Resonance</option></select><span>+</span><select class="attribute-select" name="attr_fade_attribute_2" title="@{fade_attribute_2}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}" selected="selected">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_fade_modifier" title="@{fade_modifier}" type="number" value="0"/></label><div class="rows repeating-container"><div class="row-long headers"><h2 class="text-capitalize" data-i18n="complex form"></h2><h2 class="text-capitalize" data-i18n="target"></h2><h2 class="text-capitalize" data-i18n="duration"></h2><h2 class="text-capitalize" data-i18n="fade"></h2></div><fieldset class="repeating_forms"><input name="attr_dicepool" type="hidden" value="0"/><button class="display-none" name="roll_fade" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{fade}}}{{base=^{base}}}{{dice=[[((@{fade_attribute_1}+@{fade_attribute_2}+@{fade_modifier})+@{modifiers_toggle}+@{edge_toggle})d6&gt;5@{explode_toggle}]]}}"></button><button name="roll_complex_form" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base=^{base}}}{{dice=[[((@{skill}+@{dicepool}+@{resonance})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Level ?{Level|}, Fade [[?{Level|}+(@{fade})]] [f](~repeating_forms_fade)}}"><span name="attr_name"></span></button><span class="text-center eclipse" name="attr_c"></span><span class="text-center eclipse" name="attr_o"></span><span class="text-center eclipse" name="attr_m"></span><span class="text-center eclipse" name="attr_p"></span><span class="text-center eclipse" name="attr_l"></span><span class="text-center eclipse" name="attr_e"></span><span class="text-center eclipse" name="attr_x"></span><span class="text-center eclipse" name="attr_ "></span><span class="text-center eclipse" name="attr_f"></span><span class="text-center eclipse" name="attr_o"></span><span class="text-center eclipse" name="attr_r"></span><span class="text-center eclipse" name="attr_m"></span><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><label data-i18n-title="name" title="name"><input name="attr_name" placeholder="name" title="@{repeating_forms_${x}_name}" type="text" value=""/></label><select name="attr_target" title="@{repeating_forms_${x}_target}" value="Device"><option class="text-capitalize" data-i18n="device" value="device">device</option><option class="text-capitalize" data-i18n="file" value="file">file</option><option class="text-capitalize" data-i18n="host" value="host">host</option><option class="text-capitalize" data-i18n="ic" value="ic">ic</option><option class="text-capitalize" data-i18n="persona" value="persona">persona</option><option class="text-capitalize" data-i18n="self" value="self">self</option><option class="text-capitalize" data-i18n="sprite" value="sprite">sprite</option></select><select name="attr_duration" title="@{repeating_forms_${x}_duration}" value="Instant"><option class="text-capitalize" data-i18n="extended" value="extended"></option><option class="text-capitalize" data-i18n="instant" value="instant"></option><option class="text-capitalize" data-i18n="permanent" value="permanent"></option><option class="text-capitalize" data-i18n="other" value="other"></option><option class="text-capitalize" data-i18n="sustained" value="sustained"></option></select><label data-i18n-title="fade" title="fade"><input name="attr_fade" placeholder="-1" title="@{repeating_forms_${x}_fade}" type="number" value=""/></label><div class="row"><h3 data-i18n="skill">skill</h3><select name="attr_skill" title="@{repeating_forms_${x}_skill}" value="@{software}"><option data-i18n="electronicsgroup" value="@{electronics}">Electronics Group</option><option data-i18n="software" value="@{software}" selected="selected">Software</option></select><h3 data-i18n="specialization"></h3><label data-i18n-title="specialization" title="specialization"><input name="attr_specialization" value="2" title="@{repeating_forms_${x}_specialization}" type="checkbox"/></label><h3 data-i18n="modifier">modifier</h3><label data-i18n-title="modifier" title="modifier"><input name="attr_dicepool_modifier" title="@{repeating_forms_${x}_dicepool_modifier}" type="number"/></label></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_forms_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="social pc-col"><div class="pc-row"><div class="header right-header"><h1 data-i18n="idslifestylecurrency"></h1><div class="right-tri"></div></div><div class="border-box lifestyle"><div class="pc-box small-box"><div class="row-long"><h3 data-i18n="primarylifestyle"></h3><input class="text-left" name="attr_primary_lifestyle" placeholder="Middle /w GRID subscription" style="width: 77%" title="@{primary_lifestyle}" type="text"/></div><div class="row-long"><h3 data-i18n="nuyen"></h3><input class="text-left" type="text" name="attr_primary_nuyen" placeholder="$1,000 UCAS" style="width: 90%" title="@{primary_nuyen}"/></div><div class="row-long"><h3 data-i18n="licenses"></h3><input class="text-left" type="text" name="attr_primary_licenses" placeholder="Technomancer, Pistols..." style="width: 87%" title="@{primary_licenses}"/></div><div class="row-long headers"><h2 data-i18n="fakeidsrelated"></h2></div><div class="rows repeating-container"><fieldset class="repeating_lifestyle"><span class="eclipse" name="attr_name"></span><button class="pictos" name="lifestyle_chat" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=@{name}}}{{desc=^{relatedlifestyle} @{lifestyle} , ^{nuyen} @{funds}, ^{licenses} @{licenses}}}">w</button><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><div class="rows"><h3 data-i18n="relatedlifestyle"></h3><span name="attr_lifestyle"></span></div><div class="rows"><h3 data-i18n="nuyen"></h3><span name="attr_funds"></span></div><div class="rows"><h3 data-i18n="licenses"></h3><span name="attr_licenses"></span></div></div><div class="settings"><h3 data-i18n="fakeid"></h3><input class="text-left" name="attr_name" placeholder="John Doe" title="@{repeating_lifestyle_${x}_name}" type="text"/><h3 data-i18n="relatedlifestyle"></h3><textarea name="attr_lifestyle" placeholder="Middle" title="@{repeating_lifestyle_${x}_lifestyle}"></textarea><h3 data-i18n="funds"></h3><textarea name="attr_funds" placeholder="$1,000 UCAS" title="@{repeating_lifestyle_${x}_funds}"></textarea><h3 data-i18n="licenses"></h3><textarea name="attr_licenses" placeholder="Technomancer, Pistols" title="@{repeating_lifestyle_${x}_licenses}"></textarea></div></fieldset></div></div></div></div><div class="pc-row"><div class="header right-header"><h1 data-i18n="contacts"></h1><div class="right-tri"></div></div><div class="border-box contacts"><div class="pc-box small-box"><div class="row-long headers"><h2 data-i18n="name">name</h2><h2 data-i18n="loyalty">loyalty</h2><h2 data-i18n="connection">connection</h2><h2 data-i18n="favor">favor</h2></div><div class="rows repeating-container"><fieldset class="repeating_contacts"><span class="eclipse" name="attr_name"></span><span class="text-center" name="attr_loyalty"></span><span class="text-center" name="attr_connection"></span><span class="text-center" name="attr_favors"></span><button class="pictos" name="ontact_chat" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=@{name}}}{{desc=^{loyalty} @{loyalty} , ^{connection} @{connection}, ^{favor} @{favors}}}">w</button><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><input type="text" name="attr_name" placeholder="Old Crow" title="@{repeating_contacts_${x}_name}"/><input type="number" name="attr_loyalty" min="1" placeholder="3" title="@{repeating_contacts_${x}_name}"/><input type="number" name="attr_connection" min="1" placeholder="8" title="@{repeating_contacts_${x}_name}"/><input type="number" name="attr_favors" placeholder="+2" title="@{repeating_contacts_${x}_name}"/><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_contacts_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="vehicle pc-col"><div class="pc-row"><div class="header right-header"><h1 data-i18n="vehicle">Vehicle</h1><div class="right-tri"></div></div><div class="border-box"><div class="pc-box medium-box"><div class="rows repeating-container"><fieldset class="repeating_vehicle"><input name="attr_handling" type="hidden"/><input name="attr_handling_off" type="hidden"/><input name="attr_acceleration" type="hidden"/><input name="attr_speed" type="hidden"/><input name="attr_pilot" type="hidden"/><input name="attr_body" type="hidden"/><input name="attr_armor" type="hidden"/><input name="attr_sensor" type="hidden"/><div class="row-long grid vehicle-name"><span name="attr_name"></span></div><div class="row-long grid 2column"><div class="col"><h3 data-i18n="handling"></h3><span name="attr_display_handling"></span></div><div class="col"><h3 data-i18n="handling_off"></h3><span name="attr_display_handling_off"></span></div></div><div class="row-long grid 2column"><div class="col"><h3 data-i18n="acceleration"></h3><span name="attr_display_acceleration"></span></div><div class="col"><h3 data-i18n="speed"></h3><span name="attr_display_speed"></span></div></div><div class="row-long grid 2column"><div class="col"><h3 data-i18n="pilot"></h3><span name="attr_display_pilot"></span></div><div class="col"><h3 data-i18n="body"></h3><span name="attr_display_body"></span></div></div><div class="row-long grid 2column"><div class="col"><h3 data-i18n="armor"></h3><span name="attr_display_armor"></span></div><div class="col"><h3 data-i18n="sensor"></h3><span name="attr_display_sensor"></span></div></div><input class="collapse-flag" name="attr_display_flag" type="checkbox"/><span class="pictos">i</span><input class="settings-flag" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><div class="collapse"><span name="attr_notes"></span></div><div class="settings"><div class="row-long grid 2autocolumn"><h3 data-i18n="name"></h3><label data-i18n-title="vehicle name"><input name="attr_name" placeholder="name" title="vehicle name" type="text"/></label></div><div class="row-long 2column"><div class="col"><h3 data-i18n="handling"></h3><input name="attr_handling" type="hidden"/><input type="hidden" name="attr_display_handling"/><label data-i18n-title="handling base"><input name="attr_handling_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="handling modifier"><input name="attr_handling_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="handling temp"><input name="attr_handling_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div><div class="col"><h3 data-i18n="handling_off"></h3><input name="attr_handling_off" type="hidden"/><input type="hidden" name="attr_display_handling_off"/><label data-i18n-title="handling_off base"><input name="attr_handling_off_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="handling_off modifier"><input name="attr_handling_off_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="handling_off temp"><input name="attr_handling_off_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div></div><div class="row-long 2column"><div class="col"><h3 data-i18n="acceleration"></h3><input name="attr_acceleration" type="hidden"/><input type="hidden" name="attr_display_acceleration"/><label data-i18n-title="acceleration base"><input name="attr_acceleration_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="acceleration modifier"><input name="attr_acceleration_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="acceleration temp"><input name="attr_acceleration_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div><div class="col"><h3 data-i18n="speed"></h3><input name="attr_speed" type="hidden"/><input type="hidden" name="attr_display_speed"/><label data-i18n-title="speed base"><input name="attr_speed_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="speed modifier"><input name="attr_speed_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="speed temp"><input name="attr_speed_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div></div><div class="row-long 2column"><div class="col"><h3 data-i18n="pilot"></h3><input name="attr_pilot" type="hidden"/><input type="hidden" name="attr_display_pilot"/><label data-i18n-title="pilot base"><input name="attr_pilot_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="pilot modifier"><input name="attr_pilot_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="pilot temp"><input name="attr_pilot_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div><div class="col"><h3 data-i18n="body"></h3><input name="attr_body" type="hidden"/><input type="hidden" name="attr_display_body"/><label data-i18n-title="body base"><input name="attr_body_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="body modifier"><input name="attr_body_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="body temp"><input name="attr_body_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div></div><div class="row-long 2column"><div class="col"><h3 data-i18n="armor"></h3><input name="attr_armor" type="hidden"/><input type="hidden" name="attr_display_armor"/><label data-i18n-title="armor base"><input name="attr_armor_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="armor modifier"><input name="attr_armor_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="armor temp"><input name="attr_armor_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div><div class="col"><h3 data-i18n="sensor"></h3><input name="attr_sensor" type="hidden"/><input type="hidden" name="attr_display_sensor"/><label data-i18n-title="sensor base"><input name="attr_sensor_base" placeholder="#" title="@{repeating_vehicle_${x}_base" type="number"/></label><label data-i18n-title="sensor modifier"><input name="attr_sensor_modifier" placeholder="#" title="@{repeating_vehicle_${x}_modifier" type="number"/></label><label data-i18n-title="sensor temp"><input name="attr_sensor_temp" placeholder="#" title="@{repeating_vehicle_${x}_temp" type="number"/></label></div></div><div class="row-long 2column headers"><div class="col"><h2 class="text-capitalize text-center" data-i18n="base"></h2><h2 class="text-capitalize text-center" data-i18n="mod"></h2><h2 class="text-capitalize text-center" data-i18n="temp"></h2></div><div class="col"><h2 class="text-capitalize text-center" data-i18n="base"></h2><h2 class="text-capitalize text-center" data-i18n="mod"></h2><h2 class="text-capitalize text-center" data-i18n="temp"></h2></div></div><h3 data-i18n="notes">notes</h3><label data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Notes" title="@{repeating_vehicle_${x}_notes}" type="text" value=""></textarea></label></div></fieldset></div></div></div></div></div><div class="options pc-col">
<div class="pc-row">
<div class="header right-header"><h1 data-i18n="options">Options</h1><div class="right-tri"></div></div>
<div class="border-box">
<div class="pc-box">
<div class="op-col">
<div>
<h2 data-i18n="character">Character</h2><br />
<label data-i18n="mundane">Mundane</label><input class="character-type" type="checkbox" name="attr_flag_special" value="mundane" title="@{flag_special}" checked /><br />
<label data-i18n="awakened">Awakened</label><input class="character-type" type="checkbox" name="attr_flag_special" value="magic" title="@{flag_special}" /><br />
<label data-i18n="emerged">Emerged</label><input class="character-type" type="checkbox" name="attr_flag_special" value="resonance" title="@{flag_special}" />
</div>
<hr />
<div>
<h2 data-i18n="sheetselect">Sheet Select</h2><br />
<select name="attr_sheet_type" title="@{sheet_type}" value='pc'>
<option value="pc" data-i18n="pc" selected>PC</option>
<option value="grunt" data-i18n="grunt">grunt</option>
<option value="host" data-i18n="host">Host</option>
<option value="sprite" data-i18n="sprite">Sprite</option>
<option value="vehicle" data-i18n="vehicle">Vehicle</option>
</select>
</div>
<hr />
<div>
<h2 data-i18n="importer">Importer</h2>
<button type="action" name="act_import_launch" data-i18n="importecharacter">Import Character</button>
<p data-i18n="importertext">You can import a character with a JSON from Chummer. <!--or Hero Lab.--> The game owner must set a Compendium in the Game Settings. It does not matter which one you pick. Charactermancer software simply requires one be picked.</p>
</div>
</div>
<div class="op-col">
<div>
<h2 data-i18n="temporarymodifiers">Temporary Modifiers</h2><br />
<label data-i18n="defense">Defense</label><input type="number" name="attr_defense_temp" title="@{defense_temp}" /><input type="checkbox" name="attr_defense_temp_flag" value="on" checked />
<label data-i18n="soak">Soak</label><input type="number" name="attr_soak_temp" title="@{soak_temp}" /><input type="checkbox" name="attr_soak_temp_flag" value="on" checked />
<hr />
<label data-i18n="body">Body</label><input type="number" name="attr_body_temp" title="@{body_temp}" /><input type="checkbox" name="attr_body_temp_flag" value="on" checked />
<label data-i18n="agility">Agility</label><input type="number" name="attr_agility_temp" title="@{agility_temp}" /><input type="checkbox" name="attr_agility_temp_flag" value="on" checked />
<label data-i18n="reaction">Reaction</label><input type="number" name="attr_reaction_temp" title="@{reaction_temp}" /><input type="checkbox" name="attr_reaction_temp_flag" value="on" checked />
<label data-i18n="strength">Strength</label><input type="number" name="attr_strength_temp" title="@{strength_temp}" /><input type="checkbox" name="attr_strength_temp_flag" value="on" checked />
<label data-i18n="willpower">Willpower</label><input type="number" name="attr_willpower_temp" title="@{willpower_temp}" /><input type="checkbox" name="attr_willpower_temp_flag" value="on" checked />
<label data-i18n="logic">Logic</label><input type="number" name="attr_logic_temp" title="@{logic_temp}" /><input type="checkbox" name="attr_logic_temp_flag" value="on" checked />
<label data-i18n="intuition">Intuition</label><input type="number" name="attr_intuition_temp" title="@{intuition_temp}" /><input type="checkbox" name="attr_intuition_temp_flag" value="on" checked />
<label data-i18n="charisma">Charisma</label><input type="number" name="attr_charisma_temp" title="@{charisma_temp}" /><input type="checkbox" name="attr_charisma_temp_flag" value="on" checked />
<label data-i18n="magic">Magic</label><input type="number" name="attr_magic_temp" title="@{magic_temp}" /><input type="checkbox" name="attr_magic_temp_flag" value="on" checked />
<label data-i18n="resonance">Resonance</label><input type="number" name="attr_resonance_temp" title="@{resonance_temp}" /><input type="checkbox" name="attr_resonance_temp_flag" value="on" checked />
<hr />
<label data-i18n="initiative">Initiative</label><input type="number" name="attr_initiative_mod_temp" title="@{initiative_mod_temp}" /><input type="checkbox" name="attr_initiative_mod_temp_flag" value="on" checked />
<label data-i18n="initiativedice">Initiative Dice</label><input type="number" name="attr_initiative_dice_temp" title="@{initiative_dice_temp}" /><input type="checkbox" name="attr_initiative_dice_temp_flag" value="on" checked />
<hr />
<label data-i18n="physicallimit">Physical Limit</label><input type="number" name="attr_physical_limit_temp" title="@{physical_limit_temp}" /><input type="checkbox" name="attr_physical_limit_temp_flag" value="on" checked />
<label data-i18n="mentallimit">Mental Limit</label><input type="number" name="attr_mental_limit_temp" title="@{mental_limit_temp}" /><input type="checkbox" name="attr_mental_limit_temp_flag" value="on" checked />
<label data-i18n="sociallimit">Social Limit</label><input type="number" name="attr_social_limit_temp" title="@{social_limit_temp}" /><input type="checkbox" name="attr_social_limit_temp_flag" value="on" checked />
</div>
</div>
</div>
</div>
</div>
</div></div><div class="npc"><div class="tabs"><img alt="Shadowrun black and metallic logo" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/images/ShadowrunLogo.png"/><h2 data-i18n-title="/w GM">/w GM</h2><label class="switch" data-i18n-title="whisper rolls to gm" title="whisper rolls to gm"><input class="whisper-toggle" name="attr_gm_toggle" type="checkbox" value="/w gm"/><span class="slider"></span></label><h2 data-i18n-title="wounds">wounds</h2><label class="switch" data-i18n-title="wounds" title="wounds"><input class="whisper-toggle" name="attr_wounds_toggle" type="checkbox" value="@{wounds}"/><span class="slider"></span></label><h2 data-i18n-title="modifiers">modifiers</h2><label class="switch" data-i18n-title="modifiers" title="modifiers"><input class="whisper-toggle" name="attr_modifiers_toggle" type="checkbox" value="?{Modifiers +/-|0}"/><span class="slider"></span></label><h2 data-i18n-title="edge">edge</h2><label class="switch" data-i18n-title="edge" title="edge"><input class="whisper-toggle" name="attr_edge_toggle" type="checkbox" value="@{edge}"/><span class="slider"></span></label><button name="d6" title="Roll D6s" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=^{d6}}}{{base=^{d6}}}{{dice=[[(?{d6s|0}d6&gt;5)]]}}">L</button><select name="attr_sheet_type" title="Sheet Type" value="pc"><option value="grunt" data-i18n="grunt">Grunt</option><option value="host" data-i18n="host">Host</option><option value="sprite" data-i18n="sprite">Sprite</option><option value="vehicle" data-i18n="vehicle">Vehicle</option><option value="pc" data-i18n="pc" selected="selected">PC</option></select><input name="attr_stats_toggle" type="checkbox" value="settings" checked="checked"/><span class="pictos">y</span></div><input name="attr_stats_toggle" type="hidden" value="settings"/><div class="grunt attribute"><button data-i18n="b" name="roll_body" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{body}}}{{base=^{base}}}{{dice=[[((@{body}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">b</button><span name="attr_display_body"></span><label class="settings" data-i18n-title="Body" title="Body"><input name="attr_body_base" placeholder="3" title="@{body_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_body_modifier" placeholder="+" title="@{body_modifier}" type="number" value=""/></label><button data-i18n="a" name="roll_agility" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{agility}}}{{base=^{base}}}{{dice=[[((@{agility}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">a</button><span name="attr_display_agility"></span><label class="settings" data-i18n-title="Agility" title="Agility"><input name="attr_agility_base" placeholder="3" title="@{agility_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_agility_modifier" placeholder="+" title="@{agility_modifier}" type="number" value=""/></label><button data-i18n="r" name="roll_reaction" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{reaction}}}{{base=^{base}}}{{dice=[[((@{reaction}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">r</button><span name="attr_display_reaction"></span><label class="settings" data-i18n-title="Reaction" title="Reaction"><input name="attr_reaction_base" placeholder="3" title="@{reaction_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_reaction_modifier" placeholder="+" title="@{reaction_modifier}" type="number" value=""/></label><button data-i18n="s" name="roll_strength" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{strength}}}{{base=^{base}}}{{dice=[[((@{strength}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">s</button><span name="attr_display_strength"></span><label class="settings" data-i18n-title="Strength" title="Strength"><input name="attr_strength_base" placeholder="3" title="@{strength_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_strength_modifier" placeholder="+" title="@{strength_modifier}" type="number" value=""/></label><button data-i18n="w" name="roll_willpower" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{willpower}}}{{base=^{base}}}{{dice=[[((@{willpower}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">w</button><span name="attr_display_willpower"></span><label class="settings" data-i18n-title="Willpower" title="Willpower"><input name="attr_willpower_base" placeholder="3" title="@{willpower_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_willpower_modifier" placeholder="+" title="@{willpower_modifier}" type="number" value=""/></label><button data-i18n="l" name="roll_logic" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{logic}}}{{base=^{base}}}{{dice=[[((@{logic}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">l</button><span name="attr_display_logic"></span><label class="settings" data-i18n-title="Logic" title="Logic"><input name="attr_logic_base" placeholder="3" title="@{logic_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_logic_modifier" placeholder="+" title="@{logic_modifier}" type="number" value=""/></label><button data-i18n="i" name="roll_intuition" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{intuition}}}{{base=^{base}}}{{dice=[[((@{intuition}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">i</button><span name="attr_display_intuition"></span><label class="settings" data-i18n-title="Intuition" title="Intuition"><input name="attr_intuition_base" placeholder="3" title="@{intuition_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_intuition_modifier" placeholder="+" title="@{intuition_modifier}" type="number" value=""/></label><button data-i18n="c" name="roll_charisma" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{charisma}}}{{base=^{base}}}{{dice=[[((@{charisma}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">c</button><span name="attr_display_charisma"></span><label class="settings" data-i18n-title="Charisma" title="Charisma"><input name="attr_charisma_base" placeholder="3" title="@{charisma_base}" type="number" value="3"/></label><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_charisma_modifier" placeholder="+" title="@{charisma_modifier}" type="number" value=""/></label><button data-i18n="e" name="roll_edge" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{edge}}}{{base=^{base}}}{{dice=[[((@{edge}+@{attribute_roll})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">e</button><span name="attr_edge"></span><label class="settings" data-i18n-title="edge" title="edge"><input name="attr_edge" placeholder="3" title="@{edge}" type="number" value="3"/></label><h1 data-i18n="ess">ess</h1><span name="attr_essence"></span><label class="settings" data-i18n-title="essence" title="essence"><input name="attr_essence" placeholder="6" title="@{essence}" type="number" value="6"/></label><h1 class="hide-magic" data-i18n="m">m</h1><span class="hide-magic" name="attr_magic"></span><label class="settings hide-magic" data-i18n-title="magic" title="magic"><input name="attr_magic" placeholder="6" title="@{magic}" type="number" value="6"/></label><h1 class="hide-magic" data-i18n="f">f</h1><span class="hide-magic" name="attr_force"></span><label class="settings hide-magic" data-i18n-title="force" title="force"><input name="attr_force" placeholder="6" title="@{force}" type="number" value="6"/></label><h1 class="hide-resonance" data-i18n="r">r</h1><span class="hide-resonance" name="attr_resonance"></span><label class="settings hide-resonance" data-i18n-title="resonance" title="resonance"><input name="attr_resonance" placeholder="6" title="@{resonance}" type="number" value="6"/></label></div><div class="host attribute"><button data-i18n="host_rating" name="roll_host_rating" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{host_rating}}}{{base=^{host_rating}}}{{dice=[[((@{host_rating}+@{host_rating})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">host_rating</button><span name="attr_host_rating"></span><label class="settings" data-i18n-title="host_rating" title="Host Rating"><input name="attr_host_rating" placeholder="5" title="@{host_rating}" type="number" value=""/></label><button data-i18n="attack" name="roll_attack" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{attack}}}{{base=^{host_rating}}}{{dice=[[((@{host_rating}+@{attack})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">attack</button><span name="attr_attack"></span><label class="settings" data-i18n-title="attack" title="Attack"><input name="attr_attack" placeholder="5" title="@{attack}" type="number" value=""/></label><button data-i18n="sleaze" name="roll_sleaze" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{sleaze}}}{{base=^{host_rating}}}{{dice=[[((@{host_rating}+@{sleaze})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">sleaze</button><span name="attr_sleaze"></span><label class="settings" data-i18n-title="sleaze" title="Sleaze"><input name="attr_sleaze" placeholder="6" title="@{sleaze}" type="number" value=""/></label><button data-i18n="data_processing" name="roll_data_processing" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{data_processing}}}{{base=^{host_rating}}}{{dice=[[((@{host_rating}+@{data_processing})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">data_processing</button><span name="attr_data_processing"></span><label class="settings" data-i18n-title="data_processing" title="Data Processing"><input name="attr_data_processing" placeholder="7" title="@{data_processing}" type="number" value=""/></label><button data-i18n="firewall" name="roll_firewall" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{firewall}}}{{base=^{host_rating}}}{{dice=[[((@{host_rating}+@{firewall})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">firewall</button><span name="attr_firewall"></span><label class="settings" data-i18n-title="firewall" title="Firewall"><input name="attr_firewall" placeholder="8" title="@{firewall}" type="number" value=""/></label></div><div class="vehicle attribute"><h1 data-i18n="hand">Hand</h1><span name="attr_handling"></span><label class="settings" data-i18n-title="hand" title="Hand"><input name="attr_handling" placeholder="3" title="@{handling}" type="number" value=""/></label><h1 data-i18n="handoff">Hand (Off)</h1><span name="attr_handling_offroad"></span><label class="settings" data-i18n-title="handoff" title="Hand (Off)"><input name="attr_handling_offroad" placeholder="3" title="@{handling_offroad}" type="number" value=""/></label><h1 data-i18n="speed">Speed</h1><span name="attr_speed"></span><label class="settings" data-i18n-title="speed" title="Speed"><input name="attr_speed" placeholder="3" title="@{speed}" type="number" value=""/></label><h1 data-i18n="speedoff">Speed (Off)</h1><span name="attr_speed_offroad"></span><label class="settings" data-i18n-title="speedoff" title="Speed (Off)"><input name="attr_speed_offroad" placeholder="3" title="@{speed_offroad}" type="number" value=""/></label><h1 data-i18n="accel">Accel</h1><span name="attr_acceleration"></span><label class="settings" data-i18n-title="accel" title="Accel"><input name="attr_acceleration" placeholder="3" title="@{acceleration}" type="number" value=""/></label><h1 data-i18n="body">Body</h1><span name="attr_body"></span><label class="settings" data-i18n-title="body" title="Body"><input name="attr_body" placeholder="3" title="@{body}" type="number" value=""/></label><button data-i18n="pilot" name="roll_pilot" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{pilot}}}{{base=^{pilot}}}{{dice=[[((@{pilot}+@{pilot})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">pilot</button><span name="attr_pilot"></span><label class="settings" data-i18n-title="pilot" title="Pilot"><input name="attr_pilot" placeholder="3" title="@{pilot}" type="number" value=""/></label><h1 data-i18n="sensor">Sensor</h1><span name="attr_sensor"></span><label class="settings" data-i18n-title="sensor" title="Sensor"><input name="attr_sensor" placeholder="3" title="@{sensor}" type="number" value=""/></label><h1 data-i18n="seat">Seat</h1><span name="attr_seating"></span><label class="settings" data-i18n-title="seat" title="Seat"><input name="attr_seating" placeholder="3" title="@{seating}" type="number" value=""/></label></div><div class="sprite attribute"><button data-i18n="level" name="roll_level" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{level}}}{{base=^{level}}}{{dice=[[((@{level}+@{level})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">level</button><span name="attr_level"></span><label class="settings" data-i18n-title="level" title="Level"><input name="attr_level" placeholder="5" title="@{level}" type="number" value=""/></label><button data-i18n="attack" name="roll_attack" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{attack}}}{{base=^{level}}}{{dice=[[((@{level}+@{attack})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">attack</button><span name="attr_attack"></span><label class="settings" data-i18n-title="attack" title="Attack"><input name="attr_attack" placeholder="5" title="@{attack}" type="number" value=""/></label><button data-i18n="sleaze" name="roll_sleaze" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{sleaze}}}{{base=^{level}}}{{dice=[[((@{level}+@{sleaze})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">sleaze</button><span name="attr_sleaze"></span><label class="settings" data-i18n-title="sleaze" title="Sleaze"><input name="attr_sleaze" placeholder="6" title="@{sleaze}" type="number" value=""/></label><button data-i18n="data_processing" name="roll_data_processing" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{data_processing}}}{{base=^{level}}}{{dice=[[((@{level}+@{data_processing})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">data_processing</button><span name="attr_data_processing"></span><label class="settings" data-i18n-title="data_processing" title="Data Processing"><input name="attr_data_processing" placeholder="7" title="@{data_processing}" type="number" value=""/></label><button data-i18n="firewall" name="roll_firewall" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{firewall}}}{{base=^{level}}}{{dice=[[((@{level}+@{firewall})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">firewall</button><span name="attr_firewall"></span><label class="settings" data-i18n-title="firewall" title="Firewall"><input name="attr_firewall" placeholder="8" title="@{firewall}" type="number" value=""/></label></div><div class="mid body"><div class="column"><input name="attr_pr" type="hidden" value=""/><div class="rows grunt"><h2 data-i18n="pr">Professional Rating</h2><span name="attr_pr" style="margin-left: 2%;"></span><label class="settings" data-i18n-title="pr" title="Professional Rating"><input name="attr_pr" title="@{pr}" type="number"/></label></div><h1 class="settings" data-i18n="bonuses">Bonuses</h1><div class="rows grunt"><button data-i18n="initiative" name="Initiative" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{initiative}}}{{base=^{base}}}{{dice=[[((@{initiative_mod})+@{wounds_toggle}+@{modifiers_toggle})+(@{initiative_dice})d6cf0 &{tracker}]]}}">Initiative</button><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_initiative_mod_modifier" placeholder="0" title="@{initiative_modifier}" type="number" value="0"/></label><span class="settings">+</span><label class="settings" data-i18n-title="modifierdice" title="Modifier Dice"><input min="0" max="4" name="attr_initiative_dice_modifier" placeholder="0" title="@{initiative_dice_modifier}" type="number" value="0"/></label><span class="settings" data-i18n="d6">d6</span><span class="settings tiny-span">=</span><span name="attr_display_initiative_mod"></span><span class="tiny-span">+</span><span name="attr_initiative_dice"></span><span class="tiny-span" data-i18n="d6">d6</span></div><div class="rows grunt hide-magic"><button data-i18n="astralinitiative" name="Astral Initiative" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{astralinitiative}}}{{base=^{base}}}{{dice=[[((@{astral_mod})+@{wounds_toggle}+@{modifiers_toggle})+(@{astral_dice})d6cf0 &{tracker}]]}}">Astral Initiative</button><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_astral_mod_modifier" placeholder="0" title="@{astral_modifier}" type="number" value="0"/></label><span class="settings">+</span><label class="settings" data-i18n-title="modifierdice" title="Modifier Dice"><input min="0" max="4" name="attr_astral_dice_modifier" placeholder="0" title="@{astral_dice_modifier}" type="number" value="0"/></label><span class="settings" data-i18n="d6">d6</span><span class="settings tiny-span">=</span><span name="attr_display_astral_mod"></span><span class="tiny-span">+</span><span name="attr_astral_dice"></span><span class="tiny-span" data-i18n="d6">d6</span></div><div class="rows grunt vehicle sprite host"><button data-i18n="matrixinitiative" name="Matrix Initiative" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{matrixinitiative}}}{{base=^{base}}}{{dice=[[((@{matrix_mod})+@{wounds_toggle}+@{modifiers_toggle})+(@{matrix_dice})d6cf0 &{tracker}]]}}">Matrix Initiative</button><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_matrix_mod_modifier" placeholder="0" title="@{matrix_modifier}" type="number" value="0"/></label><span class="settings">+</span><label class="settings" data-i18n-title="modifierdice" title="Modifier Dice"><input min="0" max="4" name="attr_matrix_dice_modifier" placeholder="0" title="@{matrix_dice_modifier}" type="number" value="0"/></label><span class="settings" data-i18n="d6">d6</span><span class="settings tiny-span">=</span><span name="attr_display_matrix_mod"></span><span class="tiny-span">+</span><span name="attr_matrix_dice"></span><span class="tiny-span" data-i18n="d6">d6</span></div><div class="rows grunt"><h2 data-i18n="movement">Movement</h2><label class="settings" data-i18n-title="walk modifier" title="walk modifier"><input name="attr_walk_modifier" placeholder="0" title="@{walk_modifier}" type="number" value="0"/></label><span class="settings"> / </span><label class="settings" data-i18n-title="run modifier" title="run modifier"><input name="attr_run_modifier" placeholder="0" title="@{run_modifier}" type="number" value="0"/></label><span class="settings"> / + </span><label class="settings" data-i18n-title="movement modifier" title="movement modifier"><input name="attr_movement_mod_modifier" placeholder="2" title="@{movement_mod_modifier}" type="number" value="2"/></label><span class="settings"></span><span class="settings tiny-span">=</span><span name="attr_walk" title="@{walk}"></span><span> / </span><span name="attr_run" title="@{run}"></span><span> / + </span><span name="attr_movement_mod" title="@{movement_mod}"></span><span></span></div><div class="rows grunt"><button data-i18n="conditionmonitorps" name="act_cond_reset" type="action">Condition Monitor (P/S)</button><label class="settings" data-i18n-title="physicalbonus" title="physical bonus"><input name="attr_physical_modifier" placeholder="0" title="@{physical_modifier}" type="number" value="0"/></label><span class="settings">/</span><label class="settings" data-i18n-title="stunbonus" title="stun bonus"><input name="attr_stun_modifier" placeholder="0" title="@{stun_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_physical_max" title="@{physical_max}"></span><span>/</span><span name="attr_stun_max" title="@{stun_max}"></span></div><div class="rows vehicle"><button data-i18n="conditionmonitorpm" name="act_cond_reset" type="action">Condition Monitor (P/M)</button><label class="settings" data-i18n-title="physicalbonus" title="physical bonus"><input name="attr_physical_modifier" placeholder="0" title="@{physical_modifier}" type="number" value="0"/></label><span class="settings">/</span><label class="settings" data-i18n-title="matrixbonus" title="matrix bonus"><input name="attr_matrix_modifier" placeholder="0" title="@{matrix_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_physical_max" title="@{physical_max}"></span><span>/</span><span name="attr_matrix_max" title="@{matrix_max}"></span></div><div class="rows host sprite"><button data-i18n="conditionmonitorm" name="act_cond_reset" type="action">Condition Monitor (M)</button><span name="attr_matrix_max"></span></div><div class="rows grunt"><h2 data-i18n="physical">val</h2><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_physical_limit_modifier" placeholder="0" title="@{physical_limit_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_physical_limit" title="@{physical_limit}"></span><h2 data-i18n="mental">val</h2><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_mental_limit_modifier" placeholder="0" title="@{mental_limit_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_mental_limit" title="@{mental_limit}"></span><h2 data-i18n="social">val</h2><label class="settings" data-i18n-title="modifier" title="modifier"><input name="attr_social_limit_modifier" placeholder="0" title="@{social_limit_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_social_limit" title="@{social_limit}"></span></div><div class="grunt pain-tolerance"><div class="rows settings"><h2 data-i18n="high pain tolerance"></h2><label data-i18n-title="high pain tolerance"><input type="number" name="attr_high_pain_tolerance" min="0" value="" placeholder="#" title="@{high_pain_tolerance}"/></label></div><div class="rows settings"><h2 data-i18n="low pain tolerance"></h2><label data-i18n-title="low pain tolerance"><input type="checkbox" name="attr_low_pain_tolerance" value="2" title="@{low_pain_tolerance}"/></label></div><div class="rows settings"><h2 data-i18n="damage compensators"></h2><label data-i18n-title="damage compensators physical"><input type="number" min="0" name="attr_damage_compensators_physical" value="" placeholder="1" title="@{damage_compensators_physical}"/></label><span>/</span><label data-i18n-title="damage compensators stun"><input type="number" min="0" name="attr_damage_compensators_stun" value="" placeholder="2" title="@{damage_compensators_stun}"/></label></div></div><div class="rows vehicle"><div class="rows"><h2 data-i18n="data_processing">key</h2><label class="settings" data-i18n-title="data_processing" title="data_processing"> <input name="attr_data_processing" min="0" placeholder="0" title="@{data_processing}" type="number" value=""/></label><span class="settings tiny-span">=</span><span name="attr_data_processing"></span></div><div class="rows"><h2 data-i18n="firewall">key</h2><label class="settings" data-i18n-title="firewall" title="firewall"> <input name="attr_firewall" min="0" placeholder="0" title="@{firewall}" type="number" value=""/></label><span class="settings tiny-span">=</span><span name="attr_firewall"></span></div><div class="rows"><h2 data-i18n="devicerating">key</h2><label class="settings" data-i18n-title="devicerating" title="devicerating"> <input name="attr_device_rating" min="0" placeholder="0" title="@{device_rating}" type="number" value=""/></label><span class="settings tiny-span">=</span><span name="attr_device_rating"></span></div></div></div><div class="column"><div class="rows"><button data-i18n="armorrating" name="roll_armorrating" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{armorrating}}}{{base=base}}{{dice=[[((@{armor_rating})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">armorrating</button><label class="settings" data-i18n-title="armorrating" title="armorrating"><input name="attr_armor_rating" placeholder="9" title="@{armor_rating}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_armor_rating"></span></div><h1 class="settings" data-i18n="modifier">Modifier</h1><div class="rows"><button data-i18n="defense" name="roll_defense" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{defense}}}{{base=base}}{{dice=[[((@{defense})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">defense</button><label class="settings" data-i18n-title="defense" title="defense"><input name="attr_defense_modifier" placeholder="9" title="@{defense_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_defense"></span></div><div class="rows"><button data-i18n="soak" name="roll_soak" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{soak}}}{{base=base}}{{dice=[[((@{soak}+@{soak_modifier})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">soak</button><label class="settings" data-i18n-title="soak" title="soak"><input name="attr_soak_modifier" placeholder="0" title="@{soak_modifier}" type="number" value="0"/></label><span class="settings tiny-span">=</span><span name="attr_soak"></span></div><div class="rows"><button data-i18n="acidprotection" name="roll_acidprotection" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{acidprotection}}}{{base=base}}{{dice=[[((@{soak}+@{acid_modifier})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">acidprotection</button><label class="settings" data-i18n-title="acidprotection" title="acidprotection"><input name="attr_acid_modifier" placeholder="0" title="@{acid_modifier}" type="number" value="0"/></label></div><div class="rows"><button data-i18n="coldprotection" name="roll_coldprotection" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{coldprotection}}}{{base=base}}{{dice=[[((@{soak}+@{cold_modifier})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">coldprotection</button><label class="settings" data-i18n-title="coldprotection" title="coldprotection"><input name="attr_cold_modifier" placeholder="0" title="@{cold_modifier}" type="number" value="0"/></label></div><div class="rows"><button data-i18n="electricalprotection" name="roll_electricalprotection" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{electricalprotection}}}{{base=base}}{{dice=[[((@{soak}+@{electrical_modifier})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">electricalprotection</button><label class="settings" data-i18n-title="electricalprotection" title="electricalprotection"><input name="attr_electrical_modifier" placeholder="0" title="@{electrical_modifier}" type="number" value="0"/></label></div><div class="rows"><button data-i18n="fireprotection" name="roll_fireprotection" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{fireprotection}}}{{base=base}}{{dice=[[((@{soak}+@{fire_modifier})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">fireprotection</button><label class="settings" data-i18n-title="fireprotection" title="fireprotection"><input name="attr_fire_modifier" placeholder="0" title="@{fire_modifier}" type="number" value="0"/></label></div><div class="rows"><button data-i18n="radiationprotection" name="roll_radiationprotection" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=^{radiationprotection}}}{{base=base}}{{dice=[[((@{soak}+@{radiation_modifier})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}">radiationprotection</button><label class="settings" data-i18n-title="radiationprotection" title="radiationprotection"><input name="attr_radiation_modifier" placeholder="0" title="@{radiation_modifier}" type="number" value="0"/></label></div></div><!--/- OPTIONS--><div class="column"><div class="rows"><h1 class="settings" data-i18n="options">Options</h1></div><div class="rows grunt"><label class="settings" data-i18n-title="mundane" title="mundane"><input class="character-type" name="attr_flag_special" title="@{flag_special}" type="radio" value="mundane"/><h2 data-i18n="mundane">key</h2></label><label class="settings" data-i18n-title="awakened" title="awakened"><input class="character-type" name="attr_flag_special" title="@{flag_special}" type="radio" value="magic"/><h2 data-i18n="awakened">key</h2></label><label class="settings" data-i18n-title="emerged" title="emerged"><input class="character-type" name="attr_flag_special" title="@{flag_special}" type="radio" value="resonance"/><h2 data-i18n="emerged">key</h2></label></div><div class="rows host grunt vehicle"><label class="settings" title="Matrix Device"><input class="character-type" name="attr_flag_matrix" title="@{flag_matrix}" type="checkbox" value="matrix"/><h2>Matrix Device</h2></label></div><div class="rows vehicle"><label class="settings" title="Drone"><input class="character-type" name="attr_flag_drone" title="@{flag_drone}" type="checkbox" value="drone"/><h2>Drone</h2></label></div></div></div><div class="end body"><input name="attr_quality" type="hidden" value=""/><div class="textrow grunt"><h1 data-i18n="quality">key</h1><span name="attr_quality"></span><label class="settings" data-i18n-title="quality" title="Qualities"><textarea name="attr_quality" placeholder="Qualities" title="@{quality}"></textarea></label></div><input name="attr_augmentations" type="hidden" value=""/><div class="textrow grunt"><h1 data-i18n="augmentations">key</h1><span name="attr_augmentations"></span><label class="settings" data-i18n-title="augmentations" title="Augmentations"><textarea name="attr_augmentations" placeholder="Augmentations" title="@{augmentations}"></textarea></label></div><input name="attr_gear" type="hidden" value=""/><div class="textrow grunt vehicle"><h1 data-i18n="gear">key</h1><span name="attr_gear"></span><label class="settings" data-i18n-title="gear" title="Gear"><textarea name="attr_gear" placeholder="Gear" title="@{gear}"></textarea></label></div><input name="attr_programs" type="hidden" value=""/><div class="textrow vehicle"><h1 data-i18n="programs">key</h1><span name="attr_programs"></span><label class="settings" data-i18n-title="programs" title="Programs"><textarea name="attr_programs" placeholder="Programs" title="@{programs}"></textarea></label></div><input name="attr_modifications" type="hidden" value=""/><div class="textrow vehicle"><h1 data-i18n="modifications">key</h1><span name="attr_modifications"></span><label class="settings" data-i18n-title="modifications" title="Modifications"><textarea name="attr_modifications" placeholder="Modifications" title="@{modifications}"></textarea></label></div><input name="attr_powers" type="hidden" value=""/><div class="textrow grunt hide-magic"><h1 data-i18n="powers">key</h1><span name="attr_powers"></span><label class="settings" data-i18n-title="powers" title="Powers"><textarea name="attr_powers" placeholder="Powers" title="@{powers}"></textarea></label></div><input name="attr_weakness" type="hidden" value=""/><div class="textrow grunt hide-magic"><h1 data-i18n="weakness">key</h1><span name="attr_weakness"></span><label class="settings" data-i18n-title="weakness" title="Weakness"><textarea name="attr_weakness" placeholder="Weakness" title="@{weakness}"></textarea></label></div><div class="textrow grunt hide-magic"><input name="attr_initiate" type="hidden" value=""/><h1 data-i18n="initiate">key</h1><span name="attr_initiate"></span><label class="settings" data-i18n-title="initiate" title="Initiate"><input name="attr_initiate" placeholder="initiate" type="number" title="@{initiate}"/></label><br/><span name="attr_metamagic"></span><label class="settings" data-i18n-title="metamagic" title="metamagic"><textarea name="attr_metamagic" placeholder="metamagic" title="@{metamagic}"></textarea></label></div><div class="textrow grunt hide-resonance"><input name="attr_submersion" type="hidden" value=""/><h1 data-i18n="submersion">key</h1><span name="attr_submersion"></span><label class="settings" data-i18n-title="submersion" title="Submersion"><input name="attr_submersion" placeholder="submersion" type="number" title="@{submersion}"/></label><br/><span name="attr_echos"></span><label class="settings" data-i18n-title="echos" title="echos"><textarea name="attr_echos" placeholder="echos" title="@{echos}"></textarea></label></div><div class="rows grunt repeating inline-repeating"><h1 data-i18n="skills">skills</h1><fieldset class="repeating_active"><input name="attr_display_rating" type="hidden"/><input name="attr_specialization" type="hidden" value=""/><input name="attr_display_limit" type="hidden" value="Physical"/><input name="attr_display_attribute" type="hidden" value="Agility"/><input name="attr_dicepool" type="hidden" value="0"/><input name="attr_display_skill" type="hidden" value=""/><input class="toggle" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><button class="eclipse" name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit} @{limit}}}"><span name="attr_display_skill"></span></button><button class="eclipse" name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit} @{limit}}}"><span name="attr_specialization"></span></button><span name="attr_display_rating"></span><div class="settings"><h2 data-i18n="skill">Skill</h2><h2 data-i18n="rating">Rating</h2><h2 data-i18n="ratingmodifier">Rating Modifier</h2><h2 data-i18n="attribute">Attribute</h2><h2 data-i18n="limit">Limit</h2><select class="skill-select" name="attr_skill" title="@{repeating_active_${x}_skill}" value="Close Combat Group"><option class="option-headers" disabled="true" data-i18n="combatskills">Combat Skills</option>
<option class="option-groups" value="Close Combat Group" data-i18n="closecombatgroup">Close Combat Group</option>
<option class="option-groups" value="Firearms Group" data-i18n="firearmsgroup">Firearms Group</option>
<option value="Archery" data-i18n="archery">Archery</option>
<option value="Automatics" data-i18n="automatics">Automatics</option>
<option value="Blades" data-i18n="blades">Blades</option>
<option value="Clubs" data-i18n="clubs">Clubs</option>
<option value="Exotic Melee" data-i18n="exoticmelee">Exotic Melee</option>
<option value="Exotic Range" data-i18n="exoticrange">Exotic Range</option>
<option value="Heavy Weapons" data-i18n="heavyweapons">Heavy Weapons</option>
<option value="Longarms" data-i18n="longarms">Longarms</option>
<option value="Pistols" data-i18n="pistols">Pistols</option>
<option value="Throwing Weapons" data-i18n="throwingweapons">Throwing Weapons</option>
<option value="Unarmed Combat" data-i18n="unarmedcombat">Unarmed Combat</option>
<option class="option-headers" disabled="true" data-i18n="physicalskills">Physical Skills</option>
<option class="option-groups" value="Athletics Group" data-i18n="athleticsgroup">Athletics Group</option>
<option class="option-groups" value="Outdoors Group" data-i18n="outdoorsgroup">Outdoors Group</option>
<option class="option-groups" value="Stealth Group" data-i18n="stealthgroup">Stealth Group</option>
<option value="Disguise" data-i18n="disguise">Disguise</option>
<option value="Diving" data-i18n="diving">Diving</option>
<option value="Escape Artist" data-i18n="escapeartist">Escape Artist</option>
<option value="Flight" data-i18n="flight">Flight</option>
<option value="Free Fall" data-i18n="freefall">Free Fall</option>
<option value="Gymnastics" data-i18n="gymnastics">Gymnastics</option>
<option value="Palming" data-i18n="palming">Palming</option>
<option value="Perception" data-i18n="perception">Perception</option>
<option value="Running" data-i18n="running">Running</option>
<option value="Sneaking" data-i18n="sneaking">Sneaking</option>
<option value="Survival" data-i18n="survival">Survival</option>
<option value="Swimming" data-i18n="swimming">Swimming</option>
<option value="Tracking" data-i18n="tracking">Tracking</option>
<option class="option-headers" disabled="true" data-i18n="socialskills">Social Skills</option>
<option class="option-groups" value="Acting Group" data-i18n="actinggroup">Acting Group</option>
<option class="option-groups" value="Influence Group" data-i18n="influencegroup">Influence Group</option>
<option value="Con" data-i18n="con">Con</option>
<option value="Etiquette" data-i18n="etiquette">Etiquette</option>
<option value="Impersonation" data-i18n="impersonation">Impersonation</option>
<option value="Instruction" data-i18n="instruction">Instruction</option>
<option value="Intimidation" data-i18n="intimidation">Intimidation</option>
<option value="Leadership" data-i18n="leadership">Leadership</option>
<option value="Negotiation" data-i18n="negotiation">Negotiation</option>
<option value="Performance" data-i18n="performance">Performance</option>
<option class="option-headers" disabled="true" data-i18n="magicalskills">Magical Skills</option>
<option class="option-groups" value="Conjuring Group" data-i18n="conjuringgroup">Conjuring Group</option>
<option class="option-groups" value="Enchanting Group" data-i18n="enchantinggroup">Enchanting Group</option>
<option class="option-groups" value="Sorcery Group" data-i18n="sorcerygroup">Sorcery Group</option>
<option value="Alchemy" data-i18n="alchemy">Alchemy</option>
<option value="Arcana" data-i18n="arcana">Arcana</option>
<option value="Artificing" data-i18n="artificing">Artificing</option>
<option value="Assensing" data-i18n="assensing">Assensing</option>
<option value="Astral Combat" data-i18n="astralcombat">Astral Combat</option>
<option value="Banishing" data-i18n="banishing">Banishing</option>
<option value="Binding" data-i18n="binding">Binding</option>
<option value="Counterspelling" data-i18n="counterspelling">Counterspelling</option>
<option value="Disenchanting" data-i18n="disenchanting">Disenchanting</option>
<option value="Ritual Spellcasting" data-i18n="ritualspellcasting">Ritual Spellcasting</option>
<option value="Spellcasting" data-i18n="spellcasting">Spellcasting</option>
<option value="Summoning" data-i18n="summoning">Summoning</option>
<option class="option-headers" disabled="true" data-i18n="resonanceskills">Resonance Skills</option>
<option class="option-groups" value="Tasking Group" data-i18n="taskinggroup">Tasking Group</option>
<option value="Compiling" data-i18n="compiling">Compiling</option>
<option value="Decompiling" data-i18n="decompiling">Decompiling</option>
<option value="Registering" data-i18n="registering">Registering</option>
<option class="option-headers" disabled="true" data-i18n="technicalskills">Technical Skills</option>
<option class="option-groups" value="Biotech Group" data-i18n="biotechgroup">Biotech Group</option>
<option class="option-groups" value="Cracking Group" data-i18n="crackinggroup">Cracking Group</option>
<option class="option-groups" value="Electronics Group" data-i18n="electronicsgroup">Electronics Group</option>
<option class="option-groups" value="Engineering Group" data-i18n="engineeringgroup">Engineering Group</option>
<option value="Aeronautics Mechanic" data-i18n="aeronauticsmechanic">Aeronautics Mechanic</option>
<option value="Animal Handling" data-i18n="animalhandling">Animal Handling</option>
<option value="Armorer" data-i18n="armorer">Armorer</option>
<option value="Artisan" data-i18n="artisan">Artisan</option>
<option value="Automotive Mechanic" data-i18n="automotivemechanic">Automotive Mechanic</option>
<option value="Biotechnology" data-i18n="biotechnology">Biotechnology</option>
<option value="Chemistry" data-i18n="chemistry">Chemistry</option>
<option value="Computer" data-i18n="computer">Computer</option>
<option value="Cybercombat" data-i18n="cybercombat">Cybercombat</option>
<option value="Cybertechnology" data-i18n="cybertechnology">Cybertechnology</option>
<option value="Demolitions" data-i18n="demolitions">Demolitions</option>
<option value="Electronic Warfare" data-i18n="electronicwarfare">Electronic Warfare</option>
<option value="First Aid" data-i18n="firstaid">First Aid</option>
<option value="Forgery" data-i18n="forgery">Forgery</option>
<option value="Hacking" data-i18n="hacking">Hacking</option>
<option value="Hardware" data-i18n="hardware">Hardware</option>
<option value="Industrial Mechanic" data-i18n="industrialmechanic">Industrial Mechanic</option>
<option value="Locksmith" data-i18n="locksmith">Locksmith</option>
<option value="Medicine" data-i18n="medicine">Medicine</option>
<option value="Nautical Mechanic" data-i18n="nauticalmechanic">Nautical Mechanic</option>
<option value="Navigation" data-i18n="navigation">Navigation</option>
<option value="Gunnery" data-i18n="gunnery">Gunnery</option>
<option value="Pilot Aerospace" data-i18n="pilotaerospace">Pilot Aerospace</option>
<option value="Pilot Aircraft" data-i18n="pilotaircraft">Pilot Aircraft</option>
<option value="Pilot Exotic Vehicle" data-i18n="pilotexoticvehicle">Pilot Exotic Vehicle</option>
<option value="Pilot Ground Craft" data-i18n="pilotgroundcraft">Pilot Ground Craft</option>
<option value="Pilot Walker" data-i18n="pilotwalker">Pilot Walker</option>
<option value="Pilot Watercraft" data-i18n="pilotwatercraft">Pilot Watercraft</option>
<option value="Software" data-i18n="software">Software</option></select><label data-i18n-title="rating" title="rating"><input name="attr_rating" min="0" placeholder="0" title="@{repeating_active_${x}_rating}" type="number"/></label><label data-i18n-title="ratingmodifier" title="Rating Modifier"><input name="attr_rating_modifier" min="0" placeholder="0" title="@{repeating_active_${x}_rating_modifier}" type="number"/></label><select class="attribute-select" name="attr_attribute" title="@{repeating_active_${x}_attribute}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}" selected="selected">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" title="@{repeating_active_${x}_limit}" value="physical_limit"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}">Mental</option><option data-i18n="physical" value="@{physical_limit}" selected="selected">Physical</option><option data-i18n="social" value="@{social_limit}">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select><h2 class="full-row" data-i18n="specialization">specialization</h2><label class="full-row" data-i18n-title="specialization" title="specialization"> <input name="attr_specialization" placeholder="Specalizations" title="@{repeating_active_${x}_specialization}" type="text"/></label></div></fieldset></div><div class="rows grunt repeating inline-repeating"><h1 data-i18n="knowledgeskills">knowledgeskills</h1><fieldset class="repeating_knowledge"><input name="attr_display_rating" type="hidden"/><input name="attr_specialization" type="hidden" value=""/><input name="attr_display_limit" type="hidden" value="Mental"/><input name="attr_display_attribute" type="hidden" value="Logic"/><input name="attr_dicepool" type="hidden" value="0"/><input class="toggle" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><button class="eclipse" name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit} @{limit}}}"><span name="attr_skill"></span></button><button class="eclipse" name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit} @{limit}}}"><span name="attr_specialization"></span></button><span name="attr_display_rating"></span><div class="settings"><h2 data-i18n="skill">Skill</h2><h2 data-i18n="rating">Rating</h2><h2 data-i18n="ratingmodifier">Rating Modifier</h2><h2 data-i18n="attribute">Attribute</h2><h2 data-i18n="limit">Limit</h2><label data-i18n-title="skill" title="skill"><input name="attr_skill" placeholder="knowledge" title="@{repeating_knowledge_${x}_skill}" type="text"/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" min="0" placeholder="0" title="@{repeating_knowledge_${x}_rating}" type="number"/></label><label data-i18n-title="ratingmodifier" title="Rating Modifier"><input name="attr_rating_modifier" min="0" placeholder="0" title="@{repeating_knowledge_${x}_rating_modifier}" type="number"/></label><select class="attribute-select" name="attr_attribute" title="@{repeating_knowledge_${x}_attribute}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}" selected="selected">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" title="@{repeating_knowledge_${x}_limit}" value="physical_limit"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}" selected="selected">Mental</option><option data-i18n="physical" value="@{physical_limit}">Physical</option><option data-i18n="social" value="@{social_limit}">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select><h2 class="full-row" data-i18n="specialization">specialization</h2><label class="full-row" data-i18n-title="specialization" title="specialization"> <input name="attr_specialization" placeholder="Specalizations" title="@{repeating_knowledge_${x}_specialization}" type="text"/></label></div></fieldset></div><div class="rows grunt repeating inline-repeating"><h1 data-i18n="languageskills">languageskills</h1><fieldset class="repeating_language"><input name="attr_display_rating" type="hidden"/><input name="attr_specialization" type="hidden" value=""/><input name="attr_display_limit" type="hidden" value="Social"/><input name="attr_display_attribute" type="hidden" value="Charisma"/><input name="attr_dicepool" type="hidden" value="0"/><input class="toggle" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><button class="eclipse" name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=@{display_limit} @{limit}}}"><span name="attr_skill"></span></button><button class="eclipse" name="roll_specialization" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=@{display_attribute}}}{{dice=[[((@{dicepool}+@{attribute}+2)+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=Spec: @{specialization}, @{display_limit} @{limit}}}"><span name="attr_specialization"></span></button><span name="attr_display_rating"></span><div class="settings"><h2 data-i18n="skill">Skill</h2><h2 data-i18n="rating">Rating</h2><h2 data-i18n="ratingmodifier">Rating Modifier</h2><h2 data-i18n="attribute">Attribute</h2><h2 data-i18n="limit">Limit</h2><label data-i18n-title="skill" title="skill"><input name="attr_skill" placeholder="language" title="@{repeating_language_${x}_skill}" type="text"/></label><label data-i18n-title="rating" title="rating"><input name="attr_rating" min="0" placeholder="0" title="@{repeating_language_${x}_rating}" type="number"/></label><label data-i18n-title="ratingmodifier" title="Rating Modifier"><input name="attr_rating_modifier" min="0" placeholder="0" title="@{repeating_language_${x}_rating_modifier}" type="number"/></label><select class="attribute-select" name="attr_attribute" title="@{repeating_language_${x}_attribute}"><option data-i18n="body" value="@{body}">Body</option><option data-i18n="agility" value="@{agility}">Agility</option><option data-i18n="reaction" value="@{reaction}">Reaction</option><option data-i18n="strength" value="@{strength}">Strength</option><option data-i18n="willpower" value="@{willpower}">Willpower</option><option data-i18n="logic" value="@{logic}">Logic</option><option data-i18n="intuition" value="@{intuition}">Intuition</option><option data-i18n="charisma" value="@{charisma}" selected="selected">Charisma</option><option data-i18n="magic" value="@{magic}">Magic</option><option data-i18n="resonance" value="@{resonance}">Resonance</option></select><select class="limit-select" name="attr_limit" title="@{repeating_language_${x}_limit}" value="physical_limit"><option value="">-</option><option data-i18n="mental" value="@{mental_limit}">Mental</option><option data-i18n="physical" value="@{physical_limit}">Physical</option><option data-i18n="social" value="@{social_limit}" selected="selected">Social</option><option data-i18n="attack" value="@{attack}">Attack</option><option data-i18n="data_processing" value="@{data_processing}">Data Processing</option><option data-i18n="firewall" value="@{firewall}">Firewall</option><option data-i18n="sleaze" value="@{sleaze}">Sleaze</option></select><h2 class="full-row" data-i18n="specialization">specialization</h2><label class="full-row" data-i18n-title="specialization" title="specialization"> <input name="attr_specialization" placeholder="Specalizations" title="@{repeating_language_${x}_specialization}" type="text"/></label></div></fieldset></div><div class="rows sprite repeating inline-repeating"><h1 data-i18n="skills">skills</h1><fieldset class="repeating_active"><input class="toggle" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><button name="roll_skill" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{skill}}}{{base=^{level}}}{{dice=[[((@{level}+@{level})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span name="attr_display_skill"></span></button><div class="settings"><h2 class="full-row" data-i18n="skill">Skill</h2><select class="skill-select" name="attr_skill" title="@{repeating_active_${x}_skill}"> <option value="Computer" data-i18n="computer">Computer</option>
<option value="Cybercombat" data-i18n="cybercombat">Cybercombat</option>
<option value="Electronic Warfare" data-i18n="electronicwarfare">Electronic Warfare</option>
<option value="Hacking" data-i18n="hacking">Hacking</option>
<option value="Hardware" data-i18n="hardware">Hardware</option></select></div></fieldset></div><div class="rows sprite repeating inline-repeating"><h1 data-i18n="powers">Powers</h1><fieldset class="repeating_powers"><input class="toggle" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><button name="roll_power" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{power}}}{{base=^{level}}}{{dice=[[((@{level}+@{level})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span name="attr_power"></span></button><div class="settings"><h2 class="full-row" data-i18n="power">power</h2><label class="full-row" data-i18n-title="power" title="power"><input name="attr_power" placeholder="power" title="@{repeating_powers_${x}_power}" type="text"/></label><h2 class="full-row" data-i18n="notes">Notes</h2><label class="full-row" data-i18n-title="notes" title="notes"><textarea name="attr_notes" placeholder="Powers notes" title="@{repeating_powers_${x}_notes}" value=""></textarea></label></div></fieldset></div><div class="rows grunt vehicle repeating weapons"><h1 data-i18n="weapons">Weapons</h1><fieldset class="repeating_weapon"><input name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><input name="attr_weapon" type="hidden" value=""/><span name="attr_weapon_dice"></span><button name="roll_weapon" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{weapon_type}}}{{base=^{base}}}{{dice=[[((@{weapon_dice})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=ACC @{weapon_acc}, DV @{weapon_dv}, AP @{weapon_ap}}}{{rea=[[@{weapon_reach}]]}}"><span name="attr_weapon_name"></span></button><span name="attr_weapon"></span><input name="attr_weapon_range" type="hidden" value="range"/><div class="settings"><h2 data-i18n="range">Range</h2><h2 data-i18n="dice">Dice</h2><h2 data-i18n="name">Name</h2><h2 data-i18n="type">Type</h2><h2 data-i18n="reach">Reach</h2><h2 data-i18n="acc">ACC</h2><h2 data-i18n="dam">Dam</h2><h2 data-i18n="ap">AP</h2><h2 data-i18n="modes">Modes</h2><h2 data-i18n="recoil">Recoil</h2><h2 data-i18n="ammo">Ammo</h2><select name="attr_weapon_range" title="@{repeating_weapon_${x}_weapon_range}" value="range"><option data-i18n="range" value="range" selected="selected">range</option><option data-i18n="melee" value="melee">melee</option></select><label data-i18n-title="dice" title="Dice"><input name="attr_weapon_dice" placeholder="18" title="@{repeating_weapon_${x}_weapon_dice}" type="number" value=""/></label><label data-i18n-title="name" title="Name"><input name="attr_weapon_name" placeholder="Ares Predator" title="@{repeating_weapon_${x}_weapon_name}" type="text" value=""/></label><label data-i18n-title="type" title="Type"><input name="attr_weapon_type" placeholder="Heavy Pistol" title="@{repeating_weapon_${x}_weapon_type}" type="text" value=""/></label><label data-i18n-title="reach" title="Reach"><input name="attr_weapon_reach" placeholder="0" title="@{repeating_weapon_${x}_weapon_reach}" type="number" value="0"/></label><label data-i18n-title="acc" title="ACC"><input name="attr_weapon_acc" placeholder="5" title="@{repeating_weapon_${x}_weapon_acc}" type="text" value=""/></label><label data-i18n-title="dam" title="Dam"><input name="attr_weapon_dv" placeholder="9P" title="@{repeating_weapon_${x}_weapon_dv}" type="text" value=""/></label><label data-i18n-title="ap" title="AP"><input name="attr_weapon_ap" placeholder="-2" title="@{repeating_weapon_${x}_weapon_ap}" type="number" value=""/></label><label data-i18n-title="modes" title="Modes"><input name="attr_weapon_mode" placeholder="SA/BF/FA" title="@{repeating_weapon_${x}_weapon_mode}" type="text" value=""/></label><label data-i18n-title="recoil" title="Recoil"><input name="attr_weapon_recoil" placeholder="+2" title="@{repeating_weapon_${x}_weapon_recoil}" type="text" value=""/></label><label data-i18n-title="ammo" title="Ammo"><input name="attr_weapon_ammo" placeholder="15" title="@{repeating_weapon_${x}_weapon_ammo}" type="number" value=""/></label><label data-i18n-title="notes" title="Notes"><input name="attr_weapon_note" placeholder="w/ 3 clips of explosive rounds" title="@{repeating_weapon_${x}_weapon_note}" type="text" value=""/></label><span>(c)</span></div></fieldset></div><div class="rows grunt repeating spells hide-magic"><h1 data-i18n="spells">Spells</h1><fieldset class="repeating_NPCspell"><input name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><input name="attr_spell" type="hidden" value=""/><span name="attr_dice"></span><button name="roll_spell" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=@{name}}}{{base=^{base}}}{{dice=[[((@{dice})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=^{force} ?{Force|}, Drain [[?{Force|}+(@{drain})]]}}"><span name="attr_name"></span></button><span name="attr_spell"></span><div class="settings"><input name="attr_category" type="hidden" value=""/><div class="headers"><h2 data-i18n="category">Category</h2><h2 data-i18n="dice">Dice</h2><h2 data-i18n="name">Name</h2><h2 data-i18n="type">Type</h2><h2 data-i18n="range">Range</h2><h2 data-i18n="duration">Duration</h2><h2 data-i18n="drain">Drain</h2><h2 data-i18n="combat">Combat</h2><h2 data-i18n="dam">Dam</h2></div><select name="attr_category" title="@{repeating_NPCspell_${x}_category}" value="combat"><option data-i18n="combat" value="Combat" selected="selected">combat</option><option data-i18n="detection" value="Detection">detection</option><option data-i18n="health" value="Health">health</option><option data-i18n="illusion" value="Illusion">illusion</option><option data-i18n="manipulation" value="Manipulation">manipulation</option></select><label data-i18n-title="dice" title="Dice"><input name="attr_dice" placeholder="18" title="@{repeating_NPCspell_${x}_dice}" type="number"/></label><label data-i18n-title="name" title="Name"><input name="attr_name" placeholder="Fireball" title="@{repeating_NPCspell_${x}_name}" type="text"/></label><select name="attr_type" title="@{repeating_NPCspell_${x}_type}" value="P"><option data-i18n="mana" value="M">mana</option><option data-i18n="physical" value="P">physical</option></select><select name="attr_range" title="@{repeating_NPCspell_${x}_range}" value="LOS"><option data-i18n="los" value="LOS">los</option><option data-i18n="los (a)" value="LOS (A)">los (a)</option><option data-i18n="special" value="Special">special</option><option data-i18n="t" value="T">t</option><option data-i18n="t (a)" value="T (A)">t (a)</option></select><select name="attr_duration" title="@{repeating_NPCspell_${x}_duration}" value="Instant"><option data-i18n="instant" value="Instant">instant</option><option data-i18n="permanent" value="Permanent">permanent</option><option data-i18n="special" value="Special">special</option><option data-i18n="sustained" value="Sustained">sustained</option></select><label data-i18n-title="drain" title="Drain"><input name="attr_drain" placeholder="-1" title="@{repeating_NPCspell_${x}_drain}" type="number"/></label><select name="attr_combat_type" title="@{repeating_NPCspell_${x}_combat_type}" value="Force"><option value="Force " selected="selected"></option><option data-i18n="direct" value="Direct, Force ">direct</option><option data-i18n="indirect" value="Indirect, Force ?{Force|}, AP -">indirect</option></select><label data-i18n-title="dam" title="Dam"><input name="attr_damage" placeholder="P" title="@{repeating_NPCspell_${x}_damage}" type="text"/></label><label data-i18n-title="notes" title="Notes"><input name="attr_note" placeholder="may start fires" title="@{repeating_NPCspell_${x}_note}" type="text"/></label></div></fieldset></div><div class="rows grunt repeating forms hide-resonance"><h1 data-i18n="complex form">Complex Forms</h1><fieldset class="repeating_form"><input name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><input name="attr_form" type="hidden" value=""/><span name="attr_form_dice"></span><button name="roll_complex form" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=f@{orm_name}}}{{base=^{base}}}{{dice=[[((@{form_dice})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{desc=?{Level|}, Fade [[?{Level|}+(@{form_fade})]]}}"><span name="attr_form_name"></span></button><span name="attr_form"></span><div class="settings"><h2 data-i18n="dice">Dice</h2><h2 data-i18n="name">Name</h2><h2 data-i18n="target">Target</h2><h2 data-i18n="duration">Duration</h2><h2 data-i18n="fade">Fade</h2><label data-i18n-title="dice" title="Dice"><input name="attr_form_dice" placeholder="18" title="@{repeating_form_${x}_form_dice}" type="number"/></label><label data-i18n-title="name" title="Name"><input name="attr_form_name" placeholder="Editor" title="@{repeating_form_${x}_form_name}" type="text"/></label><select name="attr_form_target" title="@{repeating_form_${x}_form_target}" value="device"><option data-i18n="device" value="device" selected="selected">device</option><option data-i18n="file" value="file">file</option><option data-i18n="host" value="host">host</option><option data-i18n="ic" value="ic">ic</option><option data-i18n="persona" value="persona">persona</option><option data-i18n="self" value="self">self</option><option data-i18n="sprite" value="sprite">sprite</option></select><label data-i18n-title="duration" title="Duration"><input name="attr_form_duration" placeholder="Permanent" title="@{repeating_form_${x}_form_duration}" type="text"/></label><label data-i18n-title="fade" title="Fade"><input name="attr_form_fade" placeholder="+2" title="@{repeating_form_${x}_form_fade}" type="number"/></label><label data-i18n-title="notes" title="Notes"><input name="attr_form_note" placeholder="edit files" title="@{repeating_form_${x}_form_note}" type="text"/></label></div></fieldset></div><div class="rows host repeating ic"><h1 data-i18n="intrusioncountermeasures">Intrusion Countermeasures</h1><fieldset class="repeating_IC"><input name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><input name="attr_IC" type="hidden" value=""/><button name="roll_IC" type="roll" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=Intrusion Countermeasures}}{{base=^{base}}}{{dice=[[((@{IC_attack})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}"><span name="attr_IC_name"></span></button><span name="attr_IC"></span><div class="settings"><h2 data-i18n="name">Name</h2><h2 data-i18n="ic limit">IC Limit</h2><h2 data-i18n="defense attribute">Defense Attribute</h2><h2 data-i18n="defense matrix attribute">Defense Matrix Attribute</h2><label data-i18n-title="name" title="Name"><input name="attr_IC_name" placeholder="Black" title="@{repeating_IC_${x}_name}" type="text"/></label><select name="attr_IC_limit" title="@{repeating_IC_${x}_limit}" value="attack"><option data-i18n="attack" value="Attack" selected="selected">attack</option><option data-i18n="data_processing" value="Data Processing">data_processing</option></select><select name="attr_IC_attribute" title="@{repeating_IC_${x}_attribute}" value="willpower"><option data-i18n="willpower" value="Willpower" selected="selected">willpower</option><option data-i18n="intuition" value="Intuition">intuition</option><option data-i18n="logic" value="Logic">logic</option></select><select name="attr_IC_matrix" title="@{repeating_IC_${x}_matrix}" value="firewall"><option data-i18n="attack" value="Attack">attack</option><option data-i18n="sleaze" value="Sleaze">sleaze</option><option data-i18n="data_processing" value="Data Processing">data_processing</option><option data-i18n="firewall" value="Firewall" selected="selected">firewall</option></select><label data-i18n-title="notes" title="Notes"><input name="attr_IC_note" placeholder="deploy the ic" title="@{repeating_IC_${x}_note}" type="text"/></label></div></fieldset></div></div><input name="attr_flag_matrix" type="hidden" value=""/><div class="matrix body matrix-device"><div class="rows"><h1 data-i18n="matrixdevice">Matrix Device</h1><label data-i18n-title="device" title="device"><input name="attr_device_name" placeholder="Sony CIY-720" type="text"/></label><button data-i18n="devicerating" name="device rating" value="@{gm_toggle} &{template:rolls}{{mod=[[@{modifiers_toggle}]]}}{{wound=[[@{wounds_toggle}]]}}{{edge=[[@{edge_toggle}]]}}{{header=Matrix Resistance}}{{base=^{base}}}{{dice=[[((@{device_rating}+@{firewall})+@{wounds_toggle}+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}" type="roll">Device Rating</button><label class="round" data-i18n-title="devicerating" title="devicerating"><input name="attr_device_rating" placeholder="4" type="number" value=""/></label></div><div class="rows"><button data-i18n="attack" name="Attack" value="&{template:rolls}{{header=^{attack}}}{{base=^{base}}}{{dice=[[(@{attack}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" type="roll">Attack</button><div class="matrix-bubble matrixAttack"><input name="attr_attack" value="1" type="radio"/><span></span><input name="attr_attack" value="2" type="radio"/><span></span><input name="attr_attack" value="3" type="radio"/><span></span><input name="attr_attack" value="4" type="radio"/><span></span><input name="attr_attack" value="5" type="radio"/><span></span><input name="attr_attack" value="6" type="radio"/><span></span><input name="attr_attack" value="7" type="radio"/><span></span><input name="attr_attack" value="8" type="radio"/><span></span><input name="attr_attack" value="9" type="radio"/><span></span><input name="attr_attack" value="10" type="radio"/><span></span><input name="attr_attack" value="11" type="radio"/><span></span><input name="attr_attack" value="12" type="radio"/><span></span><input name="attr_attack" value="13" type="radio"/><span></span><input name="attr_attack" value="14" type="radio"/><span></span><input name="attr_attack" value="15" type="radio"/><span></span><input name="attr_attack" value="16" type="radio"/><span></span><input name="attr_attack" value="17" type="radio"/><span></span><input name="attr_attack" value="18" type="radio"/><span></span><input name="attr_attack" value="19" type="radio"/><span></span><input name="attr_attack" value="20" type="radio"/><span></span><input name="attr_attack" value="21" type="radio"/><span></span><input name="attr_attack" value="22" type="radio"/><span></span><input name="attr_attack" value="23" type="radio"/><span></span><input name="attr_attack" value="24" type="radio"/><span></span><input name="attr_attack" value="25" type="radio"/><span></span></div><label class="round" data-i18n-title="attack" title="attack"><input name="attr_attack" placeholder="4" type="number" value=""/></label></div><div class="rows"><button data-i18n="sleaze" name="Sleaze" value="&{template:rolls}{{header=^{sleaze}}}{{base=^{base}}}{{dice=[[(@{sleaze}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" type="roll">Sleaze</button><div class="matrix-bubble matrixSleaze"><input name="attr_sleaze" value="1" type="radio"/><span></span><input name="attr_sleaze" value="2" type="radio"/><span></span><input name="attr_sleaze" value="3" type="radio"/><span></span><input name="attr_sleaze" value="4" type="radio"/><span></span><input name="attr_sleaze" value="5" type="radio"/><span></span><input name="attr_sleaze" value="6" type="radio"/><span></span><input name="attr_sleaze" value="7" type="radio"/><span></span><input name="attr_sleaze" value="8" type="radio"/><span></span><input name="attr_sleaze" value="9" type="radio"/><span></span><input name="attr_sleaze" value="10" type="radio"/><span></span><input name="attr_sleaze" value="11" type="radio"/><span></span><input name="attr_sleaze" value="12" type="radio"/><span></span><input name="attr_sleaze" value="13" type="radio"/><span></span><input name="attr_sleaze" value="14" type="radio"/><span></span><input name="attr_sleaze" value="15" type="radio"/><span></span><input name="attr_sleaze" value="16" type="radio"/><span></span><input name="attr_sleaze" value="17" type="radio"/><span></span><input name="attr_sleaze" value="18" type="radio"/><span></span><input name="attr_sleaze" value="19" type="radio"/><span></span><input name="attr_sleaze" value="20" type="radio"/><span></span><input name="attr_sleaze" value="21" type="radio"/><span></span><input name="attr_sleaze" value="22" type="radio"/><span></span><input name="attr_sleaze" value="23" type="radio"/><span></span><input name="attr_sleaze" value="24" type="radio"/><span></span><input name="attr_sleaze" value="25" type="radio"/><span></span></div><label class="round" data-i18n-title="sleaze" title="sleaze"><input name="attr_sleaze" placeholder="4" type="number" value=""/></label></div><div class="rows"><button data-i18n="data_processing" name="Data Processing" value="&{template:rolls}{{header=^{data_processing}}}{{base=^{base}}}{{dice=[[(@{data_processing}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" type="roll">Data Processing</button><div class="matrix-bubble matrixData"><input name="attr_data_processing" value="1" type="radio"/><span></span><input name="attr_data_processing" value="2" type="radio"/><span></span><input name="attr_data_processing" value="3" type="radio"/><span></span><input name="attr_data_processing" value="4" type="radio"/><span></span><input name="attr_data_processing" value="5" type="radio"/><span></span><input name="attr_data_processing" value="6" type="radio"/><span></span><input name="attr_data_processing" value="7" type="radio"/><span></span><input name="attr_data_processing" value="8" type="radio"/><span></span><input name="attr_data_processing" value="9" type="radio"/><span></span><input name="attr_data_processing" value="10" type="radio"/><span></span><input name="attr_data_processing" value="11" type="radio"/><span></span><input name="attr_data_processing" value="12" type="radio"/><span></span><input name="attr_data_processing" value="13" type="radio"/><span></span><input name="attr_data_processing" value="14" type="radio"/><span></span><input name="attr_data_processing" value="15" type="radio"/><span></span><input name="attr_data_processing" value="16" type="radio"/><span></span><input name="attr_data_processing" value="17" type="radio"/><span></span><input name="attr_data_processing" value="18" type="radio"/><span></span><input name="attr_data_processing" value="19" type="radio"/><span></span><input name="attr_data_processing" value="20" type="radio"/><span></span><input name="attr_data_processing" value="21" type="radio"/><span></span><input name="attr_data_processing" value="22" type="radio"/><span></span><input name="attr_data_processing" value="23" type="radio"/><span></span><input name="attr_data_processing" value="24" type="radio"/><span></span><input name="attr_data_processing" value="25" type="radio"/><span></span></div><label class="round" data-i18n-title="data_processing" title="data_processing"><input name="attr_data_processing" placeholder="4" type="number" value=""/></label></div><div class="rows"><button data-i18n="firewall" name="Firewall" value="&{template:rolls}{{header=^{firewall}}}{{base=^{base}}}{{dice=[[(@{firewall}+(?{Attribute|Willpower,@{willpower}|Logic,@{logic}|Intuition,@{intuition}})+@{modifiers_toggle}+@{edge_toggle})d6>5@{explode_toggle}]]}}{{mod=[[@{modifiers_toggle}]]}}{{edge=[[@{edge_toggle}]]}}" type="roll">Firewall</button><div class="matrix-bubble matrixFirewall"><input name="attr_firewall" value="1" type="radio"/><span></span><input name="attr_firewall" value="2" type="radio"/><span></span><input name="attr_firewall" value="3" type="radio"/><span></span><input name="attr_firewall" value="4" type="radio"/><span></span><input name="attr_firewall" value="5" type="radio"/><span></span><input name="attr_firewall" value="6" type="radio"/><span></span><input name="attr_firewall" value="7" type="radio"/><span></span><input name="attr_firewall" value="8" type="radio"/><span></span><input name="attr_firewall" value="9" type="radio"/><span></span><input name="attr_firewall" value="10" type="radio"/><span></span><input name="attr_firewall" value="11" type="radio"/><span></span><input name="attr_firewall" value="12" type="radio"/><span></span><input name="attr_firewall" value="13" type="radio"/><span></span><input name="attr_firewall" value="14" type="radio"/><span></span><input name="attr_firewall" value="15" type="radio"/><span></span><input name="attr_firewall" value="16" type="radio"/><span></span><input name="attr_firewall" value="17" type="radio"/><span></span><input name="attr_firewall" value="18" type="radio"/><span></span><input name="attr_firewall" value="19" type="radio"/><span></span><input name="attr_firewall" value="20" type="radio"/><span></span><input name="attr_firewall" value="21" type="radio"/><span></span><input name="attr_firewall" value="22" type="radio"/><span></span><input name="attr_firewall" value="23" type="radio"/><span></span><input name="attr_firewall" value="24" type="radio"/><span></span><input name="attr_firewall" value="25" type="radio"/><span></span></div><label class="round" data-i18n-title="firewall" title="firewall"><input name="attr_firewall" placeholder="4" type="number" value=""/></label></div><div class="rows repeating"><h1 data-i18n="programs">Programs</h1><fieldset class="repeating_programs"><input class="toggle" name="attr_flag" title="Settings toggle" type="checkbox" checked="checked"/><span class="pictos">x</span><input class="toggle" name="attr_program_on" type="checkbox" checked="checked"/><span class="pictos">Q</span><button name="roll_program" type="roll" value="@{gm_toggle} &amp;{template:rolls}{{header=@{program}}}{{desc=@{program_note}}}"><span name="attr_program"></span></button><span name="attr_program_note"></span><div class="settings"><h2 data-i18n="name">name</h2><label data-i18n-title="name" title="name"><input name="attr_program" placeholder="Program Name" title="@{repeating_programs_${x}_program}" type="text" value=""/></label><h2 data-i18n="notes">notes</h2><label data-i18n-title="notes" title="notes"><textarea name="attr_program_note" placeholder="Program Description" title="@{repeating_programs_${x}_program_note}" type="text" value=""></textarea></label></div></fieldset></div></div></div><div class="footer"><div><span data-i18n="copyrightfooter"></span><span>Version</span><span name="attr_version"></span></div><img alt="Emerald Productins, LLC" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/src/imgs//EProd_Emerald_Gloss.png"/></div><div class="rolltemplates"><rolltemplate class="sheet-rolltemplate-rolls"><div class="sheet-template-container"><div class="sheet-template-header">{{#header}}<h1>{{header}}</h1>{{/header}}
{{#base}}<span>{{base}}</span>{{/base}}
{{#rollLess() wound 0}}<span></span><span data-i18n="wounds"></span>{{/rollLess() wound 0}}
{{#rollLess() mod 0}}<span></span><span data-i18n="modifier"></span>{{/rollLess() mod 0}}
{{#rollGreater() mod 0}}<span></span><span data-i18n="modifier"></span>{{/rollGreater() mod 0}}
{{#rollGreater() edge 0}}<span></span><span data-i18n="edge"></span>{{/rollGreater() edge 0}}</div><div class="sheet-template-body">{{#dice}}<div class="sheet-template-row"><span class="inlinerollresult">{{dice}}</span></div>{{/dice}}
{{#desc}}<div class="sheet-template-row"><span class="sheet-template-desc"> {{desc}}
{{#rollGreater() rea 0}}<span>,</span><span data-i18n="reach"></span>{{rea}}
{{/rollGreater() rea 0}}
{{#rollGreater() drain 1}}<span>,</span><span data-i18n="drain"></span>{{drain}}
{{/rollGreater() drain 1}}
{{#rollLess() drain 2}}<span>,</span><span data-i18n="drain-2"></span>{{drain}}
{{/rollLess() drain 2}}</span></div>{{/desc}}</div></div></rolltemplate></div><input type="hidden" name="attr_wounds" value="0" />
<input type="hidden" name="attr_explode_toggle" value="" />
<input type="hidden" name="attr_attribute_roll" value="" />
<input type="hidden" name="attr_armor_name" value="select a Primary in Arms" />
<input type="hidden" name="attr_soak" min="0" value="3" />
<input type="hidden" name="attr_primary_range_weapon" value="select a Primary in Arms" />
<input type="hidden" name="attr_primary_range_weapon_skill" />
<input type="hidden" name="attr_primary_range_weapon_damage" />
<input type="hidden" name="attr_primary_range_weapon_dicepool" />
<input type="hidden" name="attr_primary_range_weapon_acc" />
<input type="hidden" name="attr_primary_range_weapon_ap" />
<input type="hidden" name="attr_primary_range_weapon_mode" />
<input type="hidden" name="attr_primary_range_weapon_recoil" />
<input type="hidden" name="attr_primary_range_weapon_ammo" />
<input type="hidden" name="attr_shots_fired" value="1" />
<input type="hidden" name="attr_primary_melee_weapon" value="select a Primary in Arms" />
<input type="hidden" name="attr_primary_melee_weapon_skill" />
<input type="hidden" name="attr_primary_melee_weapon_damage" />
<input type="hidden" name="attr_primary_melee_weapon_dicepool" />
<input type="hidden" name="attr_primary_melee_weapon_acc" />
<input type="hidden" name="attr_primary_melee_weapon_ap" />
<input type="hidden" name="attr_primary_melee_weapon_reach" />
<input type="hidden" name="attr_physical_limit" value="4" />
<input type="hidden" name="attr_mental_limit"s value="4" />
<input type="hidden" name="attr_social_limit" value="5" />
<input type="hidden" name="attr_initiative_mod" value="6" />
<input type="hidden" name="attr_initiative_dice" min="1" max="5" value="1" />
<input type="hidden" name="attr_astral_mod" value="6" />
<input type="hidden" name="attr_astral_dice" max="5" value="3" />
<input type="hidden" name="attr_matrix_mod" value="0" />
<input type="hidden" name="attr_matrix_dice" max="5" />
<input type="hidden" name="attr_walk" value="12" />
<input type="hidden" name="attr_run" value="24" />
<input type="hidden" name="attr_physical" value="0" />
<input type="hidden" name="attr_stun" value="0" />
<input type="hidden" name="attr_physical_max" min="0" value="10" />
<input type="hidden" name="attr_stun_max" min="0" value="10" />
<input type="hidden" name="attr_matrix" value="0" />
<input type="hidden" name="attr_matrix_max" min="8" value="10" />
<input type="hidden" name="attr_defense" value="6" />
<input type="hidden" name="attr_acting" min="0" value="0" />
<input type="hidden" name="attr_aeronauticsmechanic" min="0" value="0" />
<input type="hidden" name="attr_alchemy" min="0" value="0" />
<input type="hidden" name="attr_animalhandling" min="0" value="0" />
<input type="hidden" name="attr_arcana" min="0" value="0" />
<input type="hidden" name="attr_archery" min="0" value="0" />
<input type="hidden" name="attr_armorer" min="0" value="0" />
<input type="hidden" name="attr_artificing" min="0" value="0" />
<input type="hidden" name="attr_artisan" min="0" value="0" />
<input type="hidden" name="attr_assensing" min="0" value="0" />
<input type="hidden" name="attr_astralcombat" min="0" value="0" />
<input type="hidden" name="attr_athletics" min="0" value="0" />
<input type="hidden" name="attr_automatics" min="0" min="0" value="0" />
<input type="hidden" name="attr_automotivemechanic" min="0" value="0" />
<input type="hidden" name="attr_banishing" min="0" value="0" />
<input type="hidden" name="attr_binding" min="0" value="0" />
<input type="hidden" name="attr_biotech" min="0" value="0" />
<input type="hidden" name="attr_biotechnology" min="0" value="0" />
<input type="hidden" name="attr_blades" min="0" value="0" />
<input type="hidden" name="attr_chemistry" min="0" value="0" />
<input type="hidden" name="attr_closecombat" min="0" value="0" />
<input type="hidden" name="attr_clubs" min="0" value="0" />
<input type="hidden" name="attr_compiling" min="0" value="0" />
<input type="hidden" name="attr_computer" min="0" value="0" />
<input type="hidden" name="attr_con" min="0" value="0" />
<input type="hidden" name="attr_conjuring" min="0" value="0" />
<input type="hidden" name="attr_counterspelling" min="0" value="0" />
<input type="hidden" name="attr_cracking" min="0" value="0" />
<input type="hidden" name="attr_cybercombat" min="0" value="0" />
<input type="hidden" name="attr_cybertechnology" min="0" value="0" />
<input type="hidden" name="attr_decompiling" min="0" value="0" />
<input type="hidden" name="attr_demolitions" min="0" value="0" />
<input type="hidden" name="attr_disenchanting" min="0" value="0" />
<input type="hidden" name="attr_disguise" min="0" value="0" />
<input type="hidden" name="attr_diving" min="0" value="0" />
<input type="hidden" name="attr_electronics" min="0" value="0" />
<input type="hidden" name="attr_electronicwarfare" min="0" value="0" />
<input type="hidden" name="attr_enchanting" min="0" value="0" />
<input type="hidden" name="attr_engineering" min="0" value="0" />
<input type="hidden" name="attr_escapeartist" min="0" value="0" />
<input type="hidden" name="attr_etiquette" min="0" value="0" />
<input type="hidden" name="attr_exoticmelee" min="0" value="0" />
<input type="hidden" name="attr_exoticrange" min="0" value="0" />
<input type="hidden" name="attr_firearms" min="0" value="0" />
<input type="hidden" name="attr_firstaid" min="0" value="0" />
<input type="hidden" name="attr_flight" min="0" value="0" />
<input type="hidden" name="attr_forgery" min="0" value="0" />
<input type="hidden" name="attr_freefall" min="0" value="0" />
<input type="hidden" name="attr_gunnery" min="0" value="0" />
<input type="hidden" name="attr_gymnastics" min="0" value="0" />
<input type="hidden" name="attr_hacking" min="0" value="0" />
<input type="hidden" name="attr_hardware" min="0" value="0" />
<input type="hidden" name="attr_heavyweapons" min="0" value="0" />
<input type="hidden" name="attr_impersonation" min="0" value="0" />
<input type="hidden" name="attr_industrialmechanic" min="0" value="0" />
<input type="hidden" name="attr_influence" min="0" value="0" />
<input type="hidden" name="attr_instruction" min="0" value="0" />
<input type="hidden" name="attr_intimidation" min="0" value="0" />
<input type="hidden" name="attr_leadership" min="0" value="0" />
<input type="hidden" name="attr_locksmith" min="0" value="0" />
<input type="hidden" name="attr_longarms" min="0" value="0" />
<input type="hidden" name="attr_medicine" min="0" value="0" />
<input type="hidden" name="attr_nauticalmechanic" min="0" value="0" />
<input type="hidden" name="attr_navigation" min="0" value="0" />
<input type="hidden" name="attr_negotiation" min="0" value="0" />
<input type="hidden" name="attr_outdoors" min="0" value="0" />
<input type="hidden" name="attr_palming" min="0" value="0" />
<input type="hidden" name="attr_perception" min="0" value="0" />
<input type="hidden" name="attr_performance" min="0" value="0" />
<input type="hidden" name="attr_pilotaerospace" min="0" value="0" />
<input type="hidden" name="attr_pilotaircraft" min="0" value="0" />
<input type="hidden" name="attr_pilotexoticvehicle" min="0" value="0" />
<input type="hidden" name="attr_pilotgroundcraft" min="0" value="0" />
<input type="hidden" name="attr_pilotwalker" min="0" value="0" />
<input type="hidden" name="attr_pilotwatercraft" min="0" value="0" />
<input type="hidden" name="attr_pistols" min="0" value="0" />
<input type="hidden" name="attr_registering" min="0" value="0" />
<input type="hidden" name="attr_ritualspellcasting" min="0" value="0" />
<input type="hidden" name="attr_running" min="0" value="0" />
<input type="hidden" name="attr_sneaking" min="0" value="0" />
<input type="hidden" name="attr_software" min="0" value="0" />
<input type="hidden" name="attr_sorcery" min="0" value="0" />
<input type="hidden" name="attr_spellcasting" min="0" value="0" />
<input type="hidden" name="attr_stealth" min="0" value="0" />
<input type="hidden" name="attr_summoning" min="0" value="0" />
<input type="hidden" name="attr_survival" min="0" value="0" />
<input type="hidden" name="attr_swimming" min="0" value="0" />
<input type="hidden" name="attr_tasking" min="0" value="0" />
<input type="hidden" name="attr_throwingweapons" min="0" value="0" />
<input type="hidden" name="attr_tracking" min="0" value="0" />
<input type="hidden" name="attr_unarmedcombat" min="0" value="0" /><script type="text/worker">
const sheetAttributes = {
attributes: ['body', 'agility', 'reaction', 'strength', 'willpower', 'logic', 'intuition', 'charisma', 'edge'],
translationsAttributes: ['attribute', 'body', 'agility', 'reaction', 'strength', 'willpower', 'logic', 'intuition', 'charisma', 'edge', 'none'],
repeating: ['quality', 'martial', 'items', 'range', 'melee', 'armor', 'spell', 'preps', 'ritual', 'powers', 'forms', 'vehicle', 'augementations', 'lifestyle', 'contacts', 'programs'],
repeatingSkills: ['active', 'knowledge', 'language'],
tabs: [`core`, `arms`, `augs`, `gear`, `magic`, `matrix`, `social`, `vehicle`, `options`],
woundCalculation: ['high_pain_tolerance', 'low_pain_tolerance', 'damage_compensators_physical', 'damage_compensators_stun', 'stun', 'physical'],
attributeLimits: ['mental_limit', 'physical_limit', 'social_limit'],
mental_limit: ['intuition', 'willpower', 'logic'],
physical_limit: ['body', 'reaction', 'strength'],
social_limit: ['essence', 'willpower', 'charisma'],
calculatedAttributes: ['body', 'agility', 'reaction', 'strength', 'willpower', 'logic', 'intuition','charisma','magic', 'resonance', 'attack', 'sleaze', 'data_processing', 'firewall'],
initiative_mod: ['reaction', 'intuition', 'initiative_mod_modifier', 'initiative_mod_temp', 'initiative_mod_temp_flag'],
astral_mod: ['intuition', 'astral_mod_modifier'],
matrix_mod: [],
derivedAttributes: ['memory', 'composure', 'defense', 'soak', 'overflow', 'judge_intentions', 'lift_carry'],
lift_carry: ['body', 'strength', 'lift_carry_modifier'],
overflow: ['body', 'overflow_modifier'],
soak: ['body', 'armor_rating', 'soak_modifier', 'soak_temp', `soak_temp_flag`],
defense: ['reaction', 'intuition', 'defense_modifier', 'defense_temp', `defense_temp_flag`],
judge_intentions: ['charisma', 'intuition', 'judge_intentions_modifier'],
composure: ['charisma', 'willpower', 'composure_modifier'],
memory: ['logic', 'willpower', 'memory_modifier'],
conditionTracks: ['stun', 'physical', 'matrix'],
physical: ['physical_modifier', 'body', 'sheet_type', 'flag_drone'],
stun: ['stun_modifier', 'willpower'],
matrix: ['matrix_modifier', 'device_rating'],
stunCharacters: ['grunt', 'pc'],
physicalCharacters: ['grunt', 'pc', 'vehicle'],
matrixCharacters: ['vehicle', 'host', 'sprite'],
matrixAttributes: ['attack', 'sleaze', 'data_processing', 'firewall'],
weaponTypes: ['range', 'melee'],
rangeAttributes: ['dicepool', 'weapon', 'damage', 'acc', 'ap', 'skill', 'ammo', 'mode', 'recoil'],
meleeAttributes: ['dicepool', 'weapon', 'damage', 'acc', 'ap', 'skill', 'reach'],
spellTypes: ['spell', 'preps', 'ritual', 'forms'],
armorAttributes: ['name', 'rating', 'acid_modifier', 'electrical_modifier', 'cold_modifier', 'fire_modifier', 'radiation_modifier', 'dicepool_modifier'],
armorSoak: ['dicepool_modifier', 'rating'],
armorProtections: ['acid', 'electrical', 'cold', 'fire', 'radiation']
}
class PrimaryWeapon {
constructor(type) {
this[`primary_${type}_weapon`] = 'select a Primary in Arms',
this[`primary_${type}_weapon_skill`] = type === 'range' ? '@{firearms}' : '@{closecombat}',
this[`primary_${type}_weapon_damage`] = '',
this[`primary_${type}_weapon_dicepool`] = '',
this[`primary_${type}_weapon_acc`] = '',
this[`primary_${type}_weapon_ap`] = ''
}
}
class PrimaryRangeWeapon extends PrimaryWeapon {
constructor(type) {
super(type)
this[`primary_${type}_weapon_mode`] = '',
this[`primary_${type}_weapon_recoil`] = '',
this[`primary_${type}_weapon_ammo`] = '',
this[`primary_${type}_weapon_ammo_max`] = ''
}
}
class PrimaryMeleeWeapon extends PrimaryWeapon {
constructor(type) {
super(type)
this[`primary_${type}_weapon_reach`] = ''
}
}
class PrimaryArmor {
constructor(name) {
this.armor_name = name || 'select a Primary in Arms',
this.soak = 0,
this.soak_modifier = 0,
this.armor_rating = 0,
this.acid_modifier = 0,
this.cold_modifier = 0,
this.fire_modifier = 0,
this.radiation_modifier = 0,
this.electrical_modifier = 0
}
}
const processingFunctions = {
convertIntegerNegative: number => number > 0 ? -Math.abs(number) : number,
convertIntegersNegatives: numbers => {
for (let [key, value] of Object.entries(numbers)) {
numbers[key] = processingFunctions.convertIntegerNegative(value);
}
return numbers
},
findRepeatingField: trigger => trigger.split('_')[1],
//Roll20 does not allow for Promises
//getAttributes: array => new Promise((resolve, reject) => array ? getAttrs(array, v => resolve(v)) : reject(errorMessage('Function failed'))),
getReprowid: trigger => {
const split = trigger.split('_');
return `${split[0]}_${split[1]}_${split[2]}`
},
getReprowAttribute: key => {
const getReprowid = processingFunctions.getReprowid(key)
return key.split(`${getReprowid}_`)[1]
},
getTranslations: translationKeys => {
let translations = {}
translationKeys.forEach(key => translations[`${key}`] = getTranslationByKey(key))
return translations
},
parseInteger: string => parseInt(string) || 0,
parseIntegers: numbers => {
for (let [key, value] of Object.entries(numbers)) {
numbers[key] = parseInt(value) || 0;
}
return numbers
},
setAttributes: (update, silent) => silent && typeof update === 'object' ? setAttrs(update, {silent:true}) : typeof update === 'object' ? setAttrs(update) : console.error(`${update} is not an object`),
sliceAttr: attribute => attribute.slice(2, -1),
sumIntegers: numbers => numbers.reduce((a,b) => a + b, 0),
}
const shadowrunFunctions = {
addRepRow: (repRowID, attributeList) => {
let weaponAttributeWithRepeatingRow = []
attributeList.forEach(weaponAttribute => weaponAttributeWithRepeatingRow.push(`${repRowID}_${weaponAttribute}`))
return weaponAttributeWithRepeatingRow
},
attributeFactory: attrs => {
attrs = shadowrunFunctions.findFlagInKeys(attrs) ? shadowrunFunctions.processTempFlags(attrs) : attrs
attrs = processingFunctions.parseIntegers(attrs)
attrs = shadowrunFunctions.calculateBonuses(attrs)
attrs.total = processingFunctions.sumIntegers(Object.values(attrs))
attrs.base = attrs.total - attrs.bonus
return attrs
},
conditionFactory: attrs => {
attrs.attribute = shadowrunFunctions.determineConditionAttribute(attrs)
attrs.base = shadowrunFunctions.determineConditionBase(attrs.sheet_type, attrs.flag_drone)
attrs.modifier = attrs[shadowrunFunctions.findModifierInKeys(attrs)]
Object.keys(attrs).forEach(key => !['attribute', 'base', 'modifier'].includes(key) ? delete attrs[key] : false)
attrs = processingFunctions.parseIntegers(attrs)
return attrs
},
contructRepeatingWeaponAttributes: (repRowID, type) => {
const attributeList = shadowrunFunctions.determineWeaponAttributesByType(type)
const constructedWeaponAttributes = shadowrunFunctions.addRepRow(repRowID, attributeList)
return constructedWeaponAttributes
},
buildDisplay: (base, bonus) => bonus === 0 ? base : `${base} (${base + bonus})`,
calculateBonuses: attrs => {
attrs.bonus = 0
for (let [key, value] of Object.entries(attrs)) {
if (key.includes('modifier') || key.includes('temp')) {
attrs.bonus += value
delete attrs[key]
}
}
return attrs
},
calculateConditionTracks: conditionInts => Math.ceil(conditionInts.attribute/2) + conditionInts.base + conditionInts.modifier,
calculateLimitTotal: attrs => Math.ceil((attrs[0] + attrs[1] + (attrs[2] * 2))/3),
calculateRunSpeed: (agility, modifier) => (agility * 4) + modifier,
calculateWalkSpeed:(agility, modifier) => (agility * 2) + modifier,
calculateWounds: attrs => {
const divisor = attrs.low_pain_tolerance === 2 ? attrs.low_pain_tolerance : 3;
const highPain = attrs.high_pain_tolerance >= 1 ? attrs.high_pain_tolerance : 0;
let sum = 0;
["stun", "physical"].forEach(attr => {
const damageCompensator = attrs[`damage_compensators_${attr}`] || 0
let dividend = Math.max(attrs[`${attr}`] - (highPain + damageCompensator), 0)
sum -= Math.floor(dividend / divisor) || 0
})
return sum
},
convertSkillSelectToHiddenSkill: skillName => {
let skill = skillName.toLowerCase()
skill = skill.includes('group') ? skill.slice(0, -6) : skill
skill = skill.includes(" ") ? skill.replace(/ /g,"") : skill
return skill
},
determineConditionBase: (type, drone) => drone && drone === 'drone' ? 6 : type === 'vehicle' ? 12 : 8,
determineConditionAttribute: attrs => attrs.willpower ? attrs.willpower : attrs.body ? attrs.body : attrs.device_rating ? attrs.device_rating : 0,
determineExplodingEdge: newValue => newValue === `@{edge}` ? "!" : "",
determineWeaponAttributesByType: weaponType => weaponType === 'range' ? sheetAttributes.rangeAttributes : sheetAttributes.meleeAttributes,
findFlagInKeys: attrs => Object.keys(attrs).find(key => key.includes('_flag')),
findModifierInKeys: attrs => Object.keys(attrs).find(key => key.includes('_modifier')),
processTempFlags: attrs => {
try {
const tempFlag = shadowrunFunctions.findFlagInKeys(attrs)
const attrName = tempFlag.split('_temp_flag')[0]
attrs[`${tempFlag}`] === 'on' ? false : delete attrs[`${attrName}_temp`];
delete attrs[`${tempFlag}`];
return attrs
} catch (error) {
console.error(error)
}
},
resetRepeatingFieldsPrimaries: (repeatingSection, repRowID) => {
getSectionIDs(repeatingSection, ids => {
let attributesWithIDs = [];
let update = {};
ids.forEach(id => attributesWithIDs.push(`${repeatingSection}_${id}_primary`))
attributesWithIDs.forEach(attribute => !attribute.includes(repRowID) ? update[attribute] = 0 : false)
setAttrs(update);
})
},
shotsFired: (shots, trigger) => shots > 0 && trigger.includes('remove') ? shots -= 1 : trigger.includes('add') ? shots += 1 : shots,
//Reset will remove data in Primary entries on Core tab
resetPrimaryArmor: () => {
const resetPrimary = new PrimaryArmor()
let update = {}
for (let [key, value] of Object.entries(resetPrimary)) {
update[key] = value
}
return update
},
resetPrimaryWeapon: type => {
const resetPrimary = type === 'range' ? new PrimaryRangeWeapon(type) : new PrimaryMeleeWeapon(type)
let update = {}
for (let [key, value] of Object.entries(resetPrimary)) {
update[key] = value
}
return update
},
updateLimitTotal: attrs => {
attrs.essence ? Math.ceil(attrs.essence) || 0 : false;
return shadowrunFunctions.calculateLimitTotal(Object.values(attrs))
},
//Update Functions take data from one place and applies it to other attributes
updatePrimaryArmor: attrs => {
let update = {}
for (let [key, value] of Object.entries(attrs)) {
const repRowID = processingFunctions.getReprowid(key)
if (key.includes('name')) {
update['armor_name'] = attrs[`${repRowID}_name`]
} else if (key.includes('rating')) {
update['armor_rating'] = value
} else if (key.includes('dicepool_modifier')) {
update['soak_modifier'] = value
} else {
const type = key.split('_')[3]
update[`${type}_modifier`] = value
}
}
return update
},
updatePrimaryWeapons: attrs => {
let update = {}
for (let [key, value] of Object.entries(attrs)) {
const type = processingFunctions.findRepeatingField(key)
const weaponAttribute = processingFunctions.getReprowAttribute(key)
const primaryAttributeName = key.includes('weapon') ? `primary_${type}_weapon` : `primary_${type}_weapon_${weaponAttribute}`
update[primaryAttributeName] = value
if (key.includes('ammo')) {
update[`${primaryAttributeName}_max`] = value
}
}
return update
}
}
//for Mocha Unit Testing
//-module.exports = shadowrunFunctions;
//Edge toggle to include ! for exploding dice
const edgeToggle = newValue => {
processingFunctions.setAttributes({
explode_toggle: shadowrunFunctions.determineExplodingEdge(newValue)
})
}
const updateHostAttributes = newValue => {
newValue = processingFunctions.parseInteger(newValue)
processingFunctions.setAttributes({
matrix_max: 8 + Math.ceil(newValue/2),
ic_attack: Math.min(newValue + newValue)
})
}
const updateSpriteConditionTrack = newValue => {
newValue = processingFunctions.parseInteger(newValue)
processingFunctions.setAttributes({
matrix_max: 8 + Math.ceil(newValue/2)
})
}
//ALSO COVER COMPLEX FORMS
const updateSpellsDicepool = eventinfo => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
getAttrs([`${repRowID}_specialization`, `${repRowID}_dicepool_modifier`], attrs => {
attrs = processingFunctions.parseIntegers(attrs)
processingFunctions.setAttributes({
[`${repRowID}_dicepool`]: processingFunctions.sumIntegers(Object.values(attrs))
})
})
}
const resetNpcCondition = () => setAttributes({physical: 0, stun: 0, matrix: 0})
const updatePrimary = eventinfo => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
getAttrs([`${repRowID}_primary`], attrs => {
if (attrs[`${repRowID}_primary`] === 'primary') {
let update = {}
if (repRowID.includes('armor')) {
update = shadowrunFunctions.updatePrimaryArmor({[eventinfo.triggerName]: eventinfo.newValue})
} else {
update = shadowrunFunctions.updatePrimaryWeapons({[eventinfo.triggerName]: eventinfo.newValue})
}
processingFunctions.setAttributes(update)
}
})
}
const updateRepeatingPrimary = (eventinfo, type) => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
if (eventinfo.newValue === undefined) {
return false
} else if (eventinfo.newValue === 'primary') {
const constructedAttributes = type === 'armor' ? shadowrunFunctions.addRepRow(repRowID, sheetAttributes.armorAttributes) : shadowrunFunctions.contructRepeatingWeaponAttributes(repRowID, type);
//get the attributes to update primary
getAttrs(constructedAttributes, attrs => {
const update = type === 'armor' ? shadowrunFunctions.updatePrimaryArmor(attrs) : shadowrunFunctions.updatePrimaryWeapons(attrs);
processingFunctions.setAttributes(update)
})
//Reset all the other primaries
shadowrunFunctions.resetRepeatingFieldsPrimaries(`repeating_${type}`, repRowID)
} else {
const update = type === 'armor' ? shadowrunFunctions.resetPrimaryArmor() : shadowrunFunctions.resetPrimaryWeapon(type);
processingFunctions.setAttributes(update)
}
}
const updateRepeatingWeaponDicepool = trigger => {
const repRowID = processingFunctions.getReprowid(trigger)
getAttrs([`${repRowID}_dicepool_modifier`, `${repRowID}_specialization`], attrs => {
attrs = processingFunctions.parseIntegers(attrs)
processingFunctions.setAttributes({
[`${repRowID}_dicepool`]: processingFunctions.sumIntegers(Object.values(attrs))
})
})
}
const updateRepeatingSkillDicepool = eventinfo => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
getAttrs([`${repRowID}_skill`], attrs => {
let skill = shadowrunFunctions.convertSkillSelectToHiddenSkill(attrs[`${repRowID}_skill`])
processingFunctions.setAttributes({
[`${skill}`]: eventinfo.newValue
})
})
}
const updateRepeatingSkillLimit = eventinfo => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
if (eventinfo.newValue === "none") {
processingFunctions.setAttributes({[`${repRowID}_display_limit`]: ' '})
} else {
const translationKey = processingFunctions.sliceAttr(eventinfo.newValue)
const translation = getTranslationByKey(translationKey);
processingFunctions.setAttributes({
[`${repRowID}_display_limit`]: translation
})
}
}
const updateRepeatingSkillName = eventinfo => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
const translationKey = eventinfo.newValue.replace(/ /g, '').toLowerCase()
const translation = getTranslationByKey(translationKey);
processingFunctions.setAttributes({
[`${repRowID}_display_skill`]: translation
})
}
const updateRepeatingSkillAttribute = eventinfo => {
const repRowID = processingFunctions.getReprowid(eventinfo.triggerName)
const translationKey = processingFunctions.sliceAttr(eventinfo.newValue)
const translation = getTranslationByKey(translationKey);
processingFunctions.setAttributes({
[`${repRowID}_display_attribute`]: translation
})
}
const updateRepeatingSkillRating = trigger => {
const repRowID = processingFunctions.getReprowid(trigger)
getAttrs([`${repRowID}_rating`, `${repRowID}_rating_modifier`], attrs => {
attrs = shadowrunFunctions.attributeFactory(attrs)
processingFunctions.setAttributes({
[`${repRowID}_dicepool`]: attrs.total,
[`${repRowID}_display_rating`]: shadowrunFunctions.buildDisplay(attrs.base, attrs.bonus)
})
})
}
const updateWounds = () => {
getAttrs(sheetAttributes.woundCalculation, attrs => {
attrs = processingFunctions.parseIntegers(attrs)
const sum = shadowrunFunctions.calculateWounds(attrs)
processingFunctions.setAttributes({wounds: sum})
})
}
const updateConditionTracks= conditionTrack => {
getAttrs(sheetAttributes[conditionTrack], attrs => {
attrs = shadowrunFunctions.conditionFactory(attrs)
const conditionTotal = shadowrunFunctions.calculateConditionTracks(attrs)
processingFunctions.setAttributes({[`${conditionTrack}_max`]: conditionTotal}, true)
})
}
const translations = () => {
const attributes = sheetAttributes.translationsAttributes
const translations = processingFunctions.getTranslations(attributes)
let attribute_roll = `?{${translations.attribute}`
delete translations.attribute
for (let [key, value] of Object.entries(translations)) {
attribute_roll += key !== 'none' ? `|${value},@{${key}}` : `|${value},0}`
}
processingFunctions.setAttributes({attribute_roll: attribute_roll})
}
const updateShotsFired = trigger => {
getAttrs([`shots_fired`], attrs => {
attrs = processingFunctions.parseIntegers(attrs)
const shots = shadowrunFunctions.shotsFired(attrs.shots_fired, trigger)
processingFunctions.setAttributes({shots_fired: shots})
});
}
const updateAmmoWithShotsFired = () => {
getAttrs([`primary_range_weapon_ammo`, `shots_fired`], attrs => {
attrs = processingFunctions.parseIntegers(attrs)
attrs.shots_fired = processingFunctions.convertIntegerNegative(attrs.shots_fired)
processingFunctions.setAttributes({primary_range_weapon_ammo: processingFunctions.sumIntegers(Object.values(attrs))})
});
}
const updateAmmoWithMax = () => {
getAttrs([`primary_range_weapon_ammo_max`], attrs => {
attrs = processingFunctions.parseIntegers(attrs)
processingFunctions.setAttributes({primary_range_weapon_ammo: attrs.primary_range_weapon_ammo_max})
});
}
const updateTab = attr => processingFunctions.setAttributes({tab: attr})
const updateAttributes = (array, attribute) => {
getAttrs(array, attrs => {
attrs = shadowrunFunctions.attributeFactory(attrs)
processingFunctions.setAttributes({
[attribute]: attrs.total,
[`display_${attribute}`]: attrs.base === attrs.total ? attrs.base : `${attrs.base} (${attrs.total})`
})
})
}
const updateLimitTotal = attrs => {
attrs.essence ? Math.ceil(attrs.essence) || 0 : false;
return shadowrunFunctions.calculateLimitTotal(Object.values(attrs))
}
const updateLimits = attributeLimit => {
const array = sheetAttributes[attributeLimit].concat([`${attributeLimit}_modifier`, `${attributeLimit}_temp`, `${attributeLimit}_temp_flag`])
getAttrs(array, attrs => {
attrs = shadowrunFunctions.attributeFactory(attrs)
const bonus = attrs.bonus
delete attrs.bonus
const base = shadowrunFunctions.updateLimitTotal(attrs)
processingFunctions.setAttributes({
[attributeLimit]: processingFunctions.sumIntegers([base, bonus])
})
})
}
const updateMovement = () => {
getAttrs(['agility', 'walk_modifier', 'run_modifier'], attrs => {
attrs = processingFunctions.parseIntegers(attrs)
processingFunctions.setAttributes({
walk: shadowrunFunctions.calculateWalkSpeed(attrs.agility, attrs.walk_modifier),
run: shadowrunFunctions.calculateRunSpeed(attrs.agility, attrs.run_modifier)
})
})
}
const updateDerivedAttribute = derivedAttribute => {
getAttrs(sheetAttributes[derivedAttribute], attrs => {
attrs = shadowrunFunctions.attributeFactory(attrs)
processingFunctions.setAttributes({[derivedAttribute]: attrs.total})
})
}
const updateInitiativeDice = () => {
getAttrs(["initiative_dice_modifier", "edge_toggle", "initiative_dice_temp", "initiative_dice_temp_flag"], values => {
const edgeFlag = values.edge_toggle === "@{edge}" ? true : false;
values = shadowrunFunctions.processTempFlags(values)
values = processingFunctions.parseIntegers(values)
const bonus = shadowrunFunctions.calculateBonuses(values)
const total = Math.min(values.bonus+1,5)
processingFunctions.setAttributes({
initiative_dice: edgeFlag ? 5 : total
})
})
}
//- +======== EVERYTHING BELOW THIS LINE LACKS UNIT TESTS =======+
//- +======== NEEDS REFACTORING =======+
const resetConditionTrack = eventinfo => {
const attr = eventinfo.triggerName.split("_").pop();
processingFunctions.setAttributes({[`${attr}`] : 0})
}
//Calculate Matrix Initiatve.
const updateMatrixInitiative = () => {
getAttrs(["sheet_type", "data_processing", "pilot", "intuition", "matrix_mod_modifier", "host_rating", "level", "matrix_dice_modifier", "edge_toggle"], v => {
const sheetType = v.sheet_type;
const edgeFlag = v.edge_toggle === "@{edge}" ? true : false;
v = processingFunctions.parseIntegers(v);
let base = v.data_processing;
base += sheetType === "sprite" ? v.level : sheetType === "vehicle" ? v.pilot : sheetType === "host" ? v.host_rating : v.intuition;
const total = base + v.matrix_mod_modifier;
setAttrs({
["matrix_mod"]: total,
["matrix_dice"]: edgeFlag ? 5 : 4 + v.matrix_dice_modifier,
["display_matrix_mod"]: v.matrix_mod_modifier === 0 ? base : `${base} (${total})`
})
})
}
//Setting the Default attribute name for default skill
const updateDefaultAttribute = newValue => {
getAttrs(["default_display"], value => {
const display = value.default_display
let update = {};
//This sets a hidden input with the Attribute name so the roll template can use it to indicate what attribute was rolled
const attribute = processingFunctions.sliceAttr(newValue)
const translation = getTranslationByKey(`${attribute}`)
if (translation != display) {
processingFunctions.setAttributes({default_display: translation})
}
})
}
//Calculate Astral Initiatve
const updateAstralInitiative = () => {
getAttrs(["intuition", "astral_mod_modifier"], v => {
v = processingFunctions.parseIntegers(v);
const base = v.intuition * 2, bonus = v.astral_mod_modifier, total = base + bonus;
setAttrs({
["astral_mod"]: total,
["display_astral_mod"]: bonus === 0 ? base : `${base} (${total})`
})
})
}
const updateAstralInitiativeDice = () => {
getAttrs(["astral_dice_modifier", "edge_toggle"], v => {
const edgeFlag = v.edge_toggle === "@{edge}" ? true : false;
const bonus = parseInt(v.astral_dice_modifier) || 0;
setAttrs({
astral_dice: edgeFlag ? 5 : Math.min(bonus+3,5)
})
})
}
//Weapon displays set into an Array
// Builder function to display details properly
// Note that since undefined are falsey if there's no label or sign we can leave the parameters blank
function repeatingStringBuilder(v, keyBase) {
return function(key, label, sign) {
// fetch the attr from v checking if it has a value
const val = v[`${keyBase}${key}`];
if (!val) return '';
// Apply the sign if needed
const disp = sign && val > 0 ? `+${val}` : val;
// Apply label if needed
return label ? `${label} ${disp}` : disp;
}
}
on("change:repeating_weapon", () => {
const source = "repeating_weapon_weapon";
getAttrs([`${source}_range`, `${source}_type`, `${source}_reach`, `${source}_acc`, `${source}_dv`, `${source}_ap`, `${source}_mode`, `${source}_rc`, `${source}_ammo`, `${source}_note`, `${source}_primary`], (v) => {
// Local builder putting the needed variables into scope for repeatingStringBuilder
const b = repeatingStringBuilder(v, `${source}_`);
// Determine fields to display and in their proper order and formatting
// Anonymous function is purely stylistic and adds more overhead than just a simple switch/case. Personally I find the function looks cleaner and hides any internal scope that might conflict with outside
const display = (() => {
// 0 for weapon_range is a ranged weapon. A 1 is a melee weapon.
switch(v.repeating_weapon_weapon_range) {
case '0':
// Not a fan of how ammo has to be handled. Could potentially be placed in the repeatingStringBuilder if used more often for other change:repeating functions as some sort of suffix parameter
const ammo = b('amm');
return [
b('type'),
b('acc', 'ACC'),
b('dv', 'DV'),
b('ap', 'AP', true),
b('mode'),
b('rc', 'RC'),
ammo ? `${ammo} (c)` : '',
b('note')
];
case '1': return [
b('type'),
b('reach', 'Reach', true),
b('acc', 'ACC'),
b('dv', 'DV'),
b('ap', 'AP', true),
b('note')
];
default: return [
b('type'),
b('acc', 'ACC'),
b('dv', 'DV'),
b('ap', 'AP', true),
b('note')
];
}
})()
// Remove all empty strings
.filter(s => s)
// Concat all the strings and add comma between
.join(', ');
let update = {};
update[`${source}`] = `[${display}]`;
// Finally wrap square brackets around the weapon display
setAttrs(update);
});
});
//Spell displays set into an Array
on("change:repeating_NPCspell", () => {
getAttrs(["repeating_NPCspell_combat_type", "repeating_NPCspell_type", "repeating_NPCspell_range", "repeating_NPCspell_damage", "repeating_NPCspell_duration", "repeating_NPCspell_drain", "repeating_NPCspell_note"], (v) =>{
const com = v.repeating_NPCspell_combat_type;
const typ = `Type ${v.repeating_NPCspell_type}, `;
const ran = `${v.repeating_NPCspell_range}, `;
const dam = `Damage ${v.repeating_NPCspell_damage}, `;
const dur = `Duration ${v.repeating_NPCspell_duration}, `;
const not = `, ${v.repeating_NPCspell_note}`;
const dra = v.repeating_NPCspell_drain;
const drain = (dra > 0) ? `F+${dra} ` : (dra < 0) ? `F${dra} ` :"F ";
const info = `[${typ}${ran}${dam}${dur}${drain}${not}]`;
display = (com === "Direct, Force ") ? ` (Direct) ${info}` :
(com === "Indirect, Force ?{Force|}, AP -") ? ` (Indirect) ${info}` : `${info}`;
setAttrs({repeating_NPCspell_spell: display});
});
});
//Complex Form displays set into an Array
on("change:repeating_form", () => {
getAttrs(["repeating_form_form_duration", "repeating_form_form_target", "repeating_form_form_fade", "repeating_form_form_note", ], (v) =>{
const tar = `Target ${v.repeating_form_form_target}, `;
const dur = `Duration ${v.repeating_form_form_duration}, `;
const not = `, ${v.repeating_form_form_note}` || '';
const fad = (v.repeating_form_form_fade > 0) ? `L+${v.repeating_form_form_fade}` :
(v.repeating_form_form_fade < 0) ? `L${v.repeating_form_form_fade}` : "L";
setAttrs({
repeating_form_form: ` [${tar}${dur}${fad}${not}]`
});
});
});
//IC displays are set into an Array
on("change:repeating_IC", () => {
getAttrs(["attack", "data_processing", "repeating_IC_IC_limit", "repeating_IC_IC_attribute", "repeating_IC_IC_matrix", "repeating_IC_IC_note"], (v) =>{
const att = parseInt(v.attack) || 0;
const data = parseInt(v.data_processing) || 0;
const attr = v.repeating_IC_IC_attribute;
const mat = v.repeating_IC_IC_matrix;
const not = v.repeating_IC_IC_note;
setAttrs({
repeating_IC_IC: (v.repeating_IC_IC_limit === "@{data_processing}") ? ` ([${data}] vs. ${attr} + ${mat}, ${not})` : `([${att}] vs. ${attr} + ${mat}, ${not})`
});
});
});
['acceleration', 'armor', 'body', 'data_processing', 'handling', 'handling_off', 'pilot', 'sensor','speed'].forEach(attr => {
// Attach listener
on(`change:repeating_vehicle:${attr}_base change:repeating_vehicle:${attr}_modifier change:repeating_vehicle:${attr}_temp`, () => {
// Load attribute values
getAttrs([`repeating_vehicle_${attr}_base`, `repeating_vehicle_${attr}_modifier`, `repeating_vehicle_${attr}_temp`], (v) => {
// Do some math to calculate the total
const bas = parseInt(v[`repeating_vehicle_${attr}_base`]) || 0;
const mod = parseInt(v[`repeating_vehicle_${attr}_modifier`]) || 0;
const tem = parseInt(v[`repeating_vehicle_${attr}_temp`]) || 0;
const bon = mod + tem;
const stat = bas + bon;
// Update the finalized total
setAttrs({
[attr]: stat,
[`repeating_vehicle_display_${attr}`]: bon === 0 ? bas : `${bas} (${stat})`
}, {silent: true});
});
});
});
const versioning = version => {
console.log(`%c Shadowrun 5th Edition versioning, ${version}`, "color: darkblue; font-weight:bold");
switch(true) {
case version < 1.35:
onepointthreefive()
setAttrs({version: 1.35}, () => versioning(1.35))
break;
case version < 1.41:
onepointfour()
setAttrs({version: 1.41}, () => versioning(1.41))
break;
case version < 4.0:
fourpointzero()
setAttrs({version: 4.0}, () => versioning(4.0))
break;
case version < 4.1:
fourpointone()
setAttrs({version: 4.1}, () => versioning(4.1))
break;
case version < 4.11:
fourpointone()
fourpointoneone()
setAttrs({version: 4.11}, () => versioning(4.11))
break;
case version < 4.15:
fourpointonefive()
setAttrs({version: 4.15}, () => versioning(4.15))
break;
default:
console.log(`%c Shadowrun 5th Edition is update to date. Version ${version}`, "color: green; font-weight:bold");
}
};
const fourpointonefive = () => {
updateDerivedAttribute('defense')
updateAttributes(sheetAttributes.initiative_mod, 'initiative_mod')
updateAstralInitiative()
sheetAttributes.repeatingSkills.forEach(skill => {
getSectionIDs(skill, idarray => {
let attributes = []
idarray.forEach(id => attributes.push(`repeating_${skill}_${id}_limit`))
getAttrs(attributes, values => {
let update = {}
for (let [key, value] of Object.entries(values)) {
const repRowID = processingFunctions.getReprowid(key)
if (value.includes('limit')) {
const translationKey = processingFunctions.sliceAttr(value)
update[`${repRowID}_display_limit`] = getTranslationByKey(translationKey)
} else {
update[`${repRowID}_display_limit`] = ' '
}
}
processingFunctions.setAttributes(update)
})
})
})
}
const fourpointoneone = () => {
getSectionIDs('forms', idarray => {
let attributes = [];
let update = {};
idarray.forEach(id => attributes.push(`repeating_forms_${id}_spec`))
getAttrs(attributes, value => {
idarray.forEach(id => update[`repeating_forms_${id}_specialization`] = value[`repeating_forms_${id}_spec`])
setAttrs(update);
});
});
}
const fourpointone = () => {
getAttrs(["initiative_modifier", "initiative_temp", "initiative_temp_flag"], value => {
setAttrs({
initiative_mod_modifier: value.initiative_modifier,
initiative_mod_temp: value.initiative_temp,
initiative_mod_temp_flag: value.initiative_mod_temp_flag
})
})
getSectionIDs('range', idarray => {
let attributes = [];
let update = {};
idarray.forEach(id => attributes.push(`repeating_range_${id}_spec`))
getAttrs(attributes, value => {
idarray.forEach(id => update[`repeating_range_${id}_specialization`] = value[`repeating_range_${id}_spec`])
setAttrs(update);
});
});
getSectionIDs('melee', idarray => {
let attributes = [];
let update = {};
idarray.forEach(id => attributes.push(`repeating_melee_${id}_spec`))
getAttrs(attributes, value => {
idarray.forEach(id => update[`repeating_melee_${id}_specialization`] = value[`repeating_melee_${id}_spec`])
setAttrs(update);
});
});
getSectionIDs("active", idarray => {
let attributes = [];
let update = {};
idarray.forEach(id => attributes.push(`repeating_active_${id}_skill`))
getAttrs(attributes, value => {
idarray.forEach(id => update[`repeating_active_${id}_display_skill`] = value[`repeating_active_${id}_skill`])
setAttrs(update);
});
});
}
const fourpointzero = () => {
const attributes = ['physical', 'physical_damage', 'stun', 'stun_damage', 'sheet_type', 'matrix_con'];
getAttrs(attributes, value => {
let update = {};
update["physical"] = value.physical_damage || 0;
update["stun"] = value.stun_damage || 0;
update["matrix"] = value.matrix_con || 0;
setAttrs(update);
});
getSectionIDs("ritual", idarray => {
let ritualAttributes = [];
let update = {};
idarray.forEach(id => {
ritualAttributes.push(`repeating_ritual_${id}_spec`);
});
getAttrs(ritualAttributes, value => {
idarray.forEach(id => {
update[`repeating_ritual_${id}_specialization`] = value[`repeating_ritual_${id}_spec`]
});
setAttrs(update);
});
});
};
const onepointfour = () => {
const toggles = [`wound_toggle`, `edge_toggle`, `modifier_toggle`];
getAttrs(toggles, (v) => {
let set = {};
toggles.forEach(attr => {
const name = attr.split("_")[0], value = v[`${attr}`].toString();
value != "0" || !value.includes(name) ? set[`${attr}`] = 0 : false;
});
setAttrs(set);
});
};
const onepointthreefive = () => {
getAttrs(["sheet_type"], (v) => {
if (v.sheet_type === "goon") {
setAttrs({
["sheet_type"]: "grunt"
});
}
});
};
on('sheet:opened', () => {
getAttrs(['version'], v => { versioning(parseFloat(v.version) || 1); });
translations();
});
on('clicked:shots_remove clicked:shots_add', eventinfo => updateShotsFired(eventinfo.triggerName))
on('clicked:primary_ammo', () => updateAmmoWithShotsFired())
on('clicked:reload', () => updateAmmoWithMax())
sheetAttributes.tabs.forEach(attr => on(`clicked:tab_${attr}`, () => updateTab(attr)))
on('change:agility change:walk_modifier change:run_modifier', () => updateMovement())
sheetAttributes.calculatedAttributes.forEach(attribute => {
const attributeArray = [`${attribute}_base`, `${attribute}_modifier`, `${attribute}_temp`, `${attribute}_temp_flag`]
attributeArray.forEach(attr => on(`change:${attr}`, () => updateAttributes(attributeArray, attribute)))
});
sheetAttributes.initiative_mod.forEach(attr => on(`change:${attr}`, () => updateAttributes(sheetAttributes.initiative_mod, 'initiative_mod')))
sheetAttributes.astral_mod.forEach(attr => on(`change:${attr}`, () => updateAstralInitiative()))
sheetAttributes.derivedAttributes.forEach(derivedAttribute => {
sheetAttributes[derivedAttribute].forEach(attr => on(`change:${attr}`, () => updateDerivedAttribute(derivedAttribute)))
})
sheetAttributes.attributeLimits.forEach(attributeLimit => {
sheetAttributes[attributeLimit].forEach(attr => on(`change:${attr}`, () => updateLimits(attributeLimit)))
on(`change:${attributeLimit}_modifier change:${attributeLimit}_temp change:${attributeLimit}_temp_flag`, () => updateLimits([`${attributeLimit}`]))
})
sheetAttributes.conditionTracks.forEach(conditionTrack => {
sheetAttributes[conditionTrack].forEach(attr => on(`change:${attr}`, () => updateConditionTracks(conditionTrack)))
})
sheetAttributes.woundCalculation.forEach(attr => on(`change:${attr}`, () => updateWounds()))
sheetAttributes.repeatingSkills.forEach(field => {
on(`change:repeating_${field}:rating change:repeating_${field}:rating_modifier`, eventinfo => updateRepeatingSkillRating(eventinfo.triggerName))
on(`change:repeating_${field}:attribute`, eventinfo => updateRepeatingSkillAttribute(eventinfo))
on(`change:repeating_${field}:limit`, eventinfo => updateRepeatingSkillLimit(eventinfo))
on(`change:repeating_${field}:dicepool`, eventinfo => updateRepeatingSkillDicepool(eventinfo))
})
sheetAttributes.weaponTypes.forEach(type => {
on(`change:repeating_${type}:dicepool_modifier change:repeating_${type}:specialization`, eventinfo => updateRepeatingWeaponDicepool(eventinfo.triggerName))
on(`change:repeating_${type}:primary`, eventinfo => updateRepeatingPrimary(eventinfo, type))
})
sheetAttributes.rangeAttributes.forEach(attr => on(`change:repeating_range:${attr}`, eventinfo => updatePrimary(eventinfo)))
sheetAttributes.meleeAttributes.forEach(attr => on(`change:repeating_melee:${attr}`, eventinfo => updatePrimary(eventinfo)))
sheetAttributes.armorAttributes.forEach(attr => on(`change:repeating_armor:${attr}`, eventinfo => updatePrimary(eventinfo)))
on("change:repeating_armor:primary", eventinfo => updateRepeatingPrimary(eventinfo, 'armor'))
on(`change:repeating_active:skill`, eventinfo => updateRepeatingSkillName(eventinfo))
on('clicked:cond_reset_physical clicked:cond_reset_stun', eventinfo => resetConditionTrack(eventinfo))
on('change:edge_toggle', eventinfo => edgeToggle(eventinfo.newValue))
on('change:device_rating change:matrix_modifier', () => updateMatrixMaximum())
on('change:intuition change:astral_mod_modifier', () => updateAstralInitiative())
on('change:initiative_dice_modifier change:edge_toggle change:initiative_dice_temp change:initiative_dice_temp_flag', () => updateInitiativeDice())
on('change:astral_dice_modifier change:edge_toggle', () => updateAstralInitiativeDice())
on('change:host_rating change:data_processing change:pilot change:intuition change:matrix_mod_modifier change:level change:matrix_dice_modifier change:edge_toggle', () => updateMatrixInitiative())
on("clicked:cond_reset", () => resetNpcCondition());
sheetAttributes.spellTypes.forEach(type => on(`change:repeating_${type}:dicepool_modifier change:repeating_${type}:specialization`, eventinfo => updateSpellsDicepool(eventinfo)))
on("change:level", eventinfo => updateSpriteConditionTrack(eventinfo.newValue))
on("change:host_rating", eventinfo => updateHostAttributes(eventinfo.newValue))
on("change:default_attribute", eventinfo => updateDefaultAttribute(eventinfo.newValue))
//IMPORTERS
const importHeroLab = (character) => {
console.log(`%c HERO LAB IMPORTER:`, "color: purple; font-weight:bold");
};
const importChummer = (character) => {
//Match Chummer JSON keys with their sheet attribute.
//Chummer name is on the left, Roll20 sheet atribute on right.
const jsonKeys = {
"name": "name"
,"adept": "flag_special"
,"age" : "age"
,"alias": "character_name"
,"armor": "armor"
,"calculatednotoriety": "notoriety"
,"calculatedpublicawareness": "public_awareness"
,"calculatedstreetcred": "street_cred"
,"cmoverflow": "overflow"
,"composure" : "composure"
,"height": "height"
,"initdice": "initiative_dice"
,"initvalue": "initiative_mod"
,"judgeintentions" : "judge_intentions"
,"karma": "karma"
,"liftandcarry": "lift_carry"
,"limitmental": "mental_limit"
,"limitphysical": "physical_limit"
,"limitsocial": "social_limit"
,"magician": "flag_special"
,"memory": "memory"
,"nuyen":"primary_nuyen"
,"physicalcm": "physical_max"
//,"physicalcmfilled": "physical_damage" //RESULTING IN INFINATE LOOP
,"playername": "player_name"
,"sex": "sex"
,"stuncm": "stun_max"
//,"stuncmfilled": "stun_damage"
,"technomancer": "flag_special"
,"totaless": "essence"
,"totalkarma": "total_karma"
,"weight": "weight"
,"indirectdefenseresist": "defense"
};
const attributeKeys = {
"BOD": "body"
,"AGI": "agility"
,"REA": "reaction"
,"STR": "strength"
,"CHA": "charisma"
,"INT": "intuition"
,"LOG": "logic"
,"WIL": "willpower"
,"EDG": "edge"
,"MAG": "magic"
,"RES": "resonance"
};
const processChummer = new Promise((resolve, reject) => {
console.log(`%c CHUMMER IMPORTER`, "color: purple; font-weight:bold");
const sortedKeys = alphabatizeKeys(jsonKeys);
let setText = {
"error": "",
"results": "",
"ignored": ""
};
let update = {};
//MATRIX
const setCyberdeck = (cyberdeck) => {
update["cyberdeck"] = cyberdeck.name;
update["device_rating"] = cyberdeck.devicerating;
update["attribute_1"] = cyberdeck.attack;
update["attribute_2"] = cyberdeck.sleaze;
update["attribute_3"] = cyberdeck.dataprocessing;
update["attribute_4"] = cyberdeck.firewall;
update["matrix"] = 0;
}
// PROCESS TOP LEVEL KEYS
Object.keys(sortedKeys).forEach((key) => {
try {
const charSheetAttr = jsonKeys[key];
const chummerValue = character[key];
if ((key === "adept" || key === "magician" || key === "technomancer")) {
if (chummerValue.toUpperCase() === "TRUE") {
update[`${charSheetAttr}`] = (key === "technomancer") ? "resonance" : "magic";
} else if (!update.hasOwnProperty(`${charSheetAttr}`)) { // if we don't have the property set already otherwise keys get overriden
update[`${charSheetAttr}`] = "mundane";
};
} else if (key === "totaless") {
const essence = chummerValue.includes(",") ? chummerValue.replace(",", ".") : chummerValue;
update[`${charSheetAttr}`] = parseFloat(essence) || 6;
} else if (chummerValue && chummerValue != null) {
update[`${charSheetAttr}`] = chummerValue;
} else {
setText["error"] += addFeedback(charSheetAttr, chummerValue);
};
const textUpdate = (update[`${charSheetAttr}`]) ? "results" : "ignored";
const feedbackText = addFeedback(jsonKeys[key].replace("_"," "), update[`${charSheetAttr}`]);
(setText[`results`].includes(feedbackText) || setText[`ignored`].includes(feedbackText)) ? false : setText[`${textUpdate}`] += feedbackText;
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(key), error);
};
});
// PROCESS METATYPE
try {
update[`metatype`] = character.metatype;
if (character.metavariant) {
update[`metatype`] += ` (${character.metavariant})`
}
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(character.metatype), error);
};
// PROCESS ATTRIBUTES
const attributes = character.attributes[1].attribute;
let attributeTotals = {
"essence": update["essence"]
}; // USED FOR LIMITS BELOW
attributes.forEach((object) => {
try {
const charSheetAttr = attributeKeys[object.name];
if (charSheetAttr === "edge") {
update[`${charSheetAttr}`] = object.base;
} else {
update[`${charSheetAttr}_base`] = object.base;
update[`${charSheetAttr}_modifier`] = object.total - object.base;
};
// USED FOR LIMITS BELOW
attributeTotals[`${charSheetAttr}`] = parseInt(object.total) || 0;
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(object), error);
};
});
//PROCESS LIMITS
const limitKeys = {
"limitmental": "mental_limit"
,"limitphysical": "physical_limit"
,"limitsocial": "social_limit"
};
Object.keys(limitKeys).forEach((key) => {
//CALCULATE THE BASE FOR LIMIT
const limitCalculate = (attrsArray) => {
return Math.ceil(((attrsArray[0] + attrsArray[1] + (attrsArray[2] * 2))/3))
};
try {
let attrs = [];
if (key === "limitmental") {
attrs.push(attributeTotals["intuition"], attributeTotals["willpower"], attributeTotals["logic"]);
} else if (key === "limitphysical") {
attrs.push(attributeTotals["body"], attributeTotals["reaction"], attributeTotals["strength"]);
} else {
attrs.push(attributeTotals["essence"], attributeTotals["willpower"], attributeTotals["charisma"]);
};
//SET LIMIT MODIFIER EQUAL TO THE TOTAL IN CHUMMER - THE CALCULATED BASE LIMIT
update[`${limitKeys[key]}_modifier`] = parseInt(character[key]) - limitCalculate(attrs);
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(`${key}`), error);
};
});
// LOOP THROUGHT QUALITIES
if (character.qualities != null && character.qualities.quality != null) {
const qualitiesList = getArray(character.qualities.quality);
qualitiesList.forEach((quality) => {
try {
const id = generateRowID();
update[`repeating_quality_${id}_flag`] = "display";
update[`repeating_quality_${id}_quality`] = quality.name;
update[`repeating_quality_${id}_type`] = (quality.qualitytype === "Positive") ? "P" : "N";
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(quality), error);
};
});
}
// LOOP THROUGH SKILLS & GENERATE REPEATING FIELDS
if (character.skills != null && character.skills.skill != null) {
const skillsList = getArray(character.skills.skill);
skillsList.forEach((skill) => {
try {
const rating = parseInt(skill.rating) || 0;
if (rating > 0) {
const id = generateRowID();
const type =
(skill.knowledge.toUpperCase() === "TRUE" && skill.islanguage.toUpperCase() === "TRUE") ? "language" :
(skill.knowledge.toUpperCase() === "TRUE") ? "knowledge" :
"active";
const exotic = skill.exotic.toUpperCase();
const section = `repeating_${type}_${id}`
// Exotic Weapons need their name in Specialization
update[`${section}_flag`] = "display";
update[`${section}_skill`] =
(skill.name === "Exotic Melee Weapon") ? "Exotic Melee" :
(skill.name === "Exotic Ranged Weapon") ? "Exotic Range" :
skill.name;
update[`${section}_display`] =
(skill.name === "Exotic Melee Weapon") ? "Exotic Melee" :
(skill.name === "Exotic Ranged Weapon") ? "Exotic Range" :
skill.name;
update[`${section}_rating`] = skill.rating;
update[`${section}_rating_modifier`] = skill.ratingmod;
const skilltotal = parseInt(skill.rating) + parseInt(skill.ratingmod);
update[`${section}_dicepool`] = skilltotal;
//ACTIVE SKILLS HAVE THEIR TOTAL SAVED IN A HIDDEN ATTRIBUTE
if (type === "active") {
update[skill.name.toLowerCase().replace(/ /g, "")] = skilltotal;
};
//This needs to be verified with multiple specialization
if (skill.skillspecialization && skill.skillspecialization != null) {
const chummerSpecialization = skill.skillspecialization.skillspecialization.name;
const specialization = (chummerSpecialization.includes("[")) ? chummerSpecialization.slice(1, -1) : chummerSpecialization;
update[`${section}_specialization`] = specialization;
} else if (exotic === "TRUE") {
update[`${section}_specialization`] = skill.spec;
};
//CREATE THE DISPLAYS FOR SKILLS
if (update[`${section}_specialization`]) {
update[`${section}_display_specialization`] = `(${update[`${section}_specialization`]})`;
};
//DISPLAY FOR RTG
update[`${section}_display_rating`] = (skill.ratingmod != 0) ? `${skill.rating} (${skilltotal})` : `${skill.rating}`;
const attribute = skill.attribute;
update[`${section}_attribute`] = `@{${attributeKeys[attribute]}}`;
update[`${section}_display_attribute`] = attributeKeys[attribute];
update[`${section}_limit`] =
(attribute === "AGI" || attribute === "BOD" || attribute === "STR" || attribute === "REA") ? `@{physical_limit}` :
(attribute === "WIL" || attribute === "LOG" || attribute === "INT") ? `@{mental_limit}` :
(attribute === "CHA") ? `@{social_limit}` : "none";
};
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(skill), error);
};
});
}
//MOVEMENT
try {
const movement = character.movementwalk.split(",")[0].split("/");
update[`walk`] = movement[0];
update[`run`] = movement[1];
} catch (error) {
setText["error"] += addFeedback("movement", error);
};
//MARTIAL ARTS
if (character.martialarts != null && character.martialarts.martialart != null) {
const martialartsList = getArray(character.martialarts.martialart);
martialartsList.forEach((art) => {
const techniqueList = getArray(art.martialarttechniques.martialarttechnique);
techniqueList.forEach((tech) => {
try {
const id = generateRowID();
update[`repeating_martial_${id}_flag`] = "display";
update[`repeating_martial_${id}_technique`] = tech.name;
update[`repeating_martial_${id}_style`] = art.name;
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(art), error);
};
});
});
};
//WEAPON KEYS
const weaponKeys = {
"name": "weapon"
,"damage": "damage"
,"ap": "ap"
,"dicepool": "dicepool"
,"skill": "skill"
,"reach": "reach"
,"rc": "recoil"
,"mode": "mode_options"
,"accuracy": "acc"
};
//WEAPONS
if (character.weapons != null && character.weapons.weapon != null) {
const weaponsList = getArray(character.weapons.weapon);
weaponsList.forEach((weapon) => {
try {
const id = generateRowID();
const section = (weapon.type.toUpperCase() === "MELEE") ? `repeating_melee_${id}` : `repeating_range_${id}`;
const npcWeapon = `repeating_weapon_${id}`;
const category = weapon.category.toUpperCase();
Object.keys(weaponKeys).forEach((key) => {
if (weapon[`${key}`] && weapon[`${key}`] != null) {
update[`${section}_${weaponKeys[key]}`] =
(key != "damage" && weapon[`${key}`].includes("(")) ? getValInParen(weapon[`${key}`]) :
(key === "skill") ? `@{${weapon[`${key}`].toLowerCase().replace(" ", "")}}` :
weapon[`${key}`];
} else if (key === "skill" && category.includes("EXOTIC")) {
update[`${section}_skill`] = 0;
};
});
//EXOTIC WEAPONS NEED SPECIAL HANDLING
if (category.includes("EXOTIC")) {
update[`${section}_dicepool_modifier`] = weapon.dicepool;
};
//RANGED WEAPONS NEED CLIP & RANGES
if (weapon.type.toUpperCase() === "RANGED") {
if (weapon.clips != null && weapon.clips.clip != null) {
const clips = Array.isArray(weapon.clips.clip) ? weapon.clips.clip : [ weapon.clips.clip ];
update[`${section}_ammo`] = clips[0].count;
} else if (weapon.name.includes("Grenade")) {
const gearsList = getArray(character.gears.gear);
gearsList.forEach((gear) => {
if (weapon.name === gear.name) {
update[`${section}_ammo`] = gear.qty || 1;
};
});
} else if (weapon.ammo) {
update[`${section}_ammo`] = weapon.ammo;
};
//RANGE
const rangeList = weapon.ranges;
let range = "";
Object.keys(rangeList).forEach((key) => {
if (key != "name" && rangeList[key] != null) {
const rangeNumber = rangeList[key].split("-")[1];
range += (key === "short") ? `${rangeNumber}` : `/${rangeNumber}`;
};
});
update[`${section}_range`] = range;
};
//ACCESSORIES
if (weapon.accessories) {
let accessories = "";
const accessoriesList = getArray(weapon.accessories.accessory);
accessoriesList.forEach((accessory) => {
accessories += `${accessory["name"]}, `
});
update[`${section}_notes`] = accessories;
};
// TOGGLE THE SETTINGS OFF
update[`${section}_flag`] = "display";
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(weapon), error);
};
});
}
//ARMOR
if (character.armors != null && character.armors.armor != null) {
const armorsList = getArray(character.armors.armor);
armorsList.forEach((armor) => {
try {
const id = generateRowID();
if (armor.category != "Clothing") {
const section = `repeating_armor_${id}`;
let armorMods = "";
let armorGear = "";
// ARMOR NAME
update[`${section}_name`] = armor.name;
// ARMOR sometimes has a bonus
update[`${section}_rating`] = (armor.armor.includes("/+")) ? armor.armor.split("/+")[0] : armor.armor;
// ARMOR MODS
if (armor.armormods && armor.armormods != null) {
const modsList = getArray(armor.armormods.armormod);
modsList.forEach((modification) => {
armorMods += `${modification.name}, `;
if (modification.name === "Nonconductivity") {
update[`${section}_electrical_modifier`] = modification.rating;
} else if (modification.name === "Thermal Damping" || modification === "Insulation") {
update[`${section}_cold_modifier`] = modification.rating;
} else if (modification.name === "Radiation Shielding") {
update[`${section}_radiation_modifier`] = modification.rating;
} else if (modification.name === "Chemical Protection") {
update[`${section}_acid_modifier`] = modification.rating;
} else if (modification.name === "Fire Resistance") {
update[`${section}_fire_modifier`] = modification.rating;
};
});
};
// ARMOR GEAR
if (armor.gears && armor.gears != null) {
const gearList = getArray(armor.gears.gear);
gearList.forEach((gear) => {
if (gear.children) {
const childrenList = getArray(gear.children.gear);
childrenList.forEach((child) => {
armorGear += `${gear.name} (${child.name}), `;
});
} else {
armorGear += `${gear.name}, `;
};
});
};
// HIDE SETTINGS
update[`${section}_flag`] = "display";
update[`${section}_notes`] =
(armorMods && armorGear) ? `Modification: ${armorMods} Gear: ${armorGear}` :
(armorMods) ? `Modification: ${armorMods}` :
(armorGear) ? `Gear: ${armorGear}` : "";
} else {
// Chummer puts Clothing in with armor
const section = `repeating_items_${id}`;
update[`${section}_item`] = armor.name;
update[`${section}_flag`] = "display";
};
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(armor), error);
}
});
}
//AUGMENTATIONS
if (character.cyberwares != null && character.cyberwares.cyberware != null) {
const cyberwaresList = getArray(character.cyberwares.cyberware);
cyberwaresList.forEach((ware) => {
const id = generateRowID();
try {
const section = `repeating_augementations_${id}`;
update[`${section}_flag`] = "display";
update[`${section}_augmentation`] = ware.name;
update[`${section}_rating`] = ware.rating;
update[`${section}_essence`] = ware.ess;
update[`${section}_notes`] = `Grade: ${ware.grade}`;
if (ware.gears != null && ware.gears.gear != null) {
const wareGearList = getArray(ware.gears.gear);
wareGearList.forEach((gear) => {
if (gear.category.toLowerCase().includes("cyberdeck")) {
setCyberdeck(gear);
}
});
}
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(ware.name), error);
}
});
};
console.log(character);
// GEAR
if (character.gears != null && character.gears.gear != null) {
const gearsList = getArray(character.gears.gear);
gearsList.forEach((gear) => {
const id = generateRowID();
try {
if (gear.name.toLowerCase() === "fake sin") {
const section = `repeating_lifestyle_${id}`;
update[`${section}_name`] = `${gear.extra} (rating ${gear.rating})`;
update[`${section}_lifestyle`] = (gear.location != null) ? `${gear.location},` : "";
update[`${section}_flag`] = "display";
update[`${section}_licenses`] = "";
if (gear.children && gear.children.gear != null) {
const childrenList = getArray(gear.children.gear);
childrenList.forEach((child) => {
update[`${section}_licenses`] += `${child.extra} (rating ${child.rating}), `;
});
}
} else if (gear.category.toLowerCase().includes("cyberdeck")) {
setCyberdeck(gear);
} else if (gear.category.toLowerCase().includes("programs")) {
const section = `repeating_programs_${id}`;
update[`${section}_program`] = gear.name;
update[`${section}_flag`] = "display";
} else {
const section = `repeating_items_${id}`;
let gearNotes = "";
update[`${section}_item`] = gear.name;
update[`${section}_flag`] = "display";
update[`${section}_rating`] = (gear.rating > 0) ? gear.rating : "";
//NAME
update[`${section}_item`] += (gear.name.includes("Ammo:")) ? ` (${gear.extra}) ` : "";
update[`${section}_item`] += (gear.qty > 1) ?` x${gear.qty}` : "";
//NOTES
gearNotes += (gear.location != null) ? `Location: ${gear.location},` : "";
gearNotes += (gear.qty != null) ? ` Qty: ${gear.qty},` : "";
gearNotes += (gear.extra != null) ? ` Extra: ${gear.extra},` : "";
if (gear.children && gear.children != null) {
const childrenList = getArray(gear.children.gear);
childrenList.forEach((child) => {
gearNotes += `${child.name}, `;
});
};
update[`${section}_notes`] = gearNotes;
}
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(gear.name), error);
};
});
};
//SPELL KEYS
const spellKeys = {
"category": "category"
,"name": "name"
,"range": "range"
};
// SPELLS
if (character.spells != null && character.spells.spell != null) {
const spellsList = getArray(character.spells.spell);
spellsList.forEach((spell) => {
try {
const id = generateRowID();
const type = (spell.alchemy.toUpperCase() === "TRUE") ? "preps" : "spell";
const section = `repeating_${type}_${id}`;
Object.keys(spellKeys).forEach((key) => {
if (spell[`${key}`] && spell[`${key}`] != null) {
update[`${section}_${spellKeys[key]}`] = spell[`${key}`];
};
});
// FLAG
update[`${section}_flag`] = "display";
// TYPE
update[`${section}_type`] = (spell.type === "P") ? "Physical" : "Mana";
// DRAIN
update[`${section}_drain`] = spell.dv.replace("F", "");
// SET COMBAT TYPE
if (spell.category.toUpperCase() === "COMBAT") {
const combatType = spell.descriptors.toUpperCase();
update[`${section}_combat_type`] =
(combatType.includes("DIRECT")) ? "Direct, Force " :
(combatType.includes("INDIRECT")) ? "Indirect, Force ?{Force|}, AP -" :
"Force ";
update[`${section}_damage`] = spell.damage;
}
// DURATION
const duration = spell.duration.toUpperCase();
update[`${section}_duration`] =
(duration === "S") ? "Sustained" :
(duration === "I") ? "Instant" :
(duration === "P") ? "Permanent" :
"Special";
// NOTES
if (spell.descriptors != null) {
update[`${section}_notes`] = spell.descriptors;
}
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(spell.name), error);
}
});
}
// POWERS
if (character.powers != null && character.powers.power != null) {
const powersList = getArray(character.powers.power);
powersList.forEach((power) => {
try {
const id = generateRowID();
const section = `repeating_powers_${id}`;
update[`${section}_name`] = (power.fullname != null) ? power.fullname : power.name;
update[`${section}_rating`] = power.rating;
if (power.totalpoints != null) {
update[`${section}_notes`] = `Total Points: ${power.totalpoints}.`;
}
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(power.name), error);
}
});
}
// LIFESTYLES
if (character.lifestyles != null && character.lifestyles.lifestyle != null) {
const lifestyleList = getArray(character.lifestyles.lifestyle);
lifestyleList.forEach((lifestyle) => {
try {
const id = generateRowID();
const section = `repeating_lifestyle_${id}`;
update[`${section}_name`] = lifestyle.name;
update[`${section}_flag`] = "display";
if (lifestyle.qualities != null && lifestyle.qualities.quality) {
const lqualitiesList = getArray(lifestyle.qualities.quality);
let lifestyleQualities = "";
lqualitiesList.forEach((quality) => {
try {
lifestyleQualities += (quality.fullname != null) ? quality.fullname : quality.name;
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(quality.name), error);
}
});
update[`${section}_lifestyle`] = lifestyleQualities;
}
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(lifestyle.name), error);
}
});
}
// CONTACTS
if (character.contacts != null && character.contacts.contact != null) {
const contactList = getArray(character.contacts.contact);
contactList.forEach((contact) => {
try {
const id = generateRowID();
const section = `repeating_contacts_${id}`;
let contactNotes = "";
update[`${section}_name`] = (contact.role != null) ? `${contact.name} (${contact.role})` : `${contact.name}`;
update[`${section}_loyalty`] = contact.loyalty;
update[`${section}_connection`] = contact.connection;
update[`${section}_flag`] = "display";
["metatype", "sex", "age", "preferredpayment", "hobbiesvice", "personallife"].forEach((detail) => {
if (contact[`${detail}`] != null) {
contactNotes += `${contact[`${detail}`]}. `
}
});
update[`${section}_notes`] = contactNotes;
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(contact.name), error);
}
});
}
// VEHICLE KEYS
const vehicleKeys = {
"handling": "handling_base"
,"accel": "acceleration_base"
,"speed": "speed_base"
,"body": "body_base"
,"armor": "armor_base"
,"sensor": "sensor_base"
,"pilot": "pilot_base"
};
// VEHICLES
/* if (character.vehicles != null && character.vehicles.vehicle != null) {
const vehicleList = getArray(character.vehicles.vehicle);
vehicleList.forEach((vehicle) => {
try {
const id = generateRowID();
const section = `repeating_vehicle_${id}`;
let vehicleNotes = "";
update[`${section}_name`] = vehicle.name;
update[`${section}_flag`] = "display";
Object.keys(vehicleKeys).forEach((key) => {
if (vehicle[`${key}`] && vehicle[`${key}`] != null) {
update[`${section}_${vehicleKeys[`${key}`]}`] =
(vehicle[`${key}`].includes("/")) ? getSplitNum(vehicle[`${key}`]) :
vehicle[`${key}`];
};
});
["attack", "sleaze", "dataprocessing", "firewall", "devicerating"].forEach((matrixAttr) => {
vehicleNotes += (matrixAttr === "devicerating") ? `Device Rating (${vehicle[`${matrixAttr}`]}) ` :
(matrixAttr === "firewall") ? `${vehicle[`${matrixAttr}`]} ` : `${vehicle[`${matrixAttr}`]}/`;
});
if (vehicle.mods != null && vehicle.mods.mod != null) {
const vehicleModsList = getArray(vehicle.mods.mod);
vehicleNotes += "Mods: "
vehicleModsList.forEach((mod) => {
vehicleNotes += (mod.fullname != null) ? `${mod.fullname}, ` : `${mod.name}, `;
});
}
if (vehicle.gears != null && vehicle.gears.gear != null) {
const vehicleGearList = getArray(vehicle.gears.gear);
vehicleNotes += "Gear: "
vehicleGearList.forEach((gear) => {
if (gear.children != null && gear.children.gear != null) {
const vehicleChildrenList = getArray(gear.children.gear);
let vehicleChildrenNotes = "";
vehicleChildrenList.forEach((child) => {
vehicleChildrenNotes += `${child.name}, `;
});
vehicleNotes += `${gear.name} (${vehicleChildrenNotes}), `;
} else {
vehicleNotes += `${gear.name}, `;
};
});
}
update[`${section}_notes`] = vehicleNotes;
} catch (error) {
setText["error"] += addFeedback(JSON.stringify(vehicle.name), error);
}
});
}
*/
setCharmancerText(setText);
resolve(update);
console.log(update);
}).then((update) => {
let setText = {
"hidden": ""
};
//GENERATE INPUTS TO SAVE THE DATA
Object.keys(update).forEach((key) => {
const label = (key.includes("_")) ? key.replace("_", " ") : key;
const input = `<label><div>${label}</div><input type="text" name="comp_${key}" value="${update[key]}" /></label>`;
setText[`hidden`] += (setText[`hidden`].includes(input)) ? "" : input;
const feedbackLabel =
(key.includes("repeating")) ? key.split("_")[3] :
(key.includes("_")) ? key.replace("_", " ") : key;
(feedbackLabel === "flag" || feedbackLabel === "display") ? false : setText["results"] += addFeedback(feedbackLabel, update[key]);
});
setAttrs(update);
return setText;
}).then((result) => {
setCharmancerText(result);
});
};
// APPLY Changes
on("mancerfinish:apply", () => {
const mancerData = getCharmancerData();
const mancerValues = mancerData["importer"].values;
Object.keys(mancerValues).forEach((key) => {
if (key == "builder" || key == "jsonData" || key == "hidden") {
delete mancerValues[key];
};
});
clean();
setAttrs(mancerValues, () => {
console.log(`%c APPLY IMPORTER:`, "color: blue; font-weight:bold");
console.log(mancerValues);
deleteCharmancerData(["importer"]);
finishCharactermancer();
});
});
// CHARACTERMANCER IMPORTER
on("clicked:import_launch", (eventinfo) => {
startCharactermancer("importer");
});
on("page:importer", () => {
setAttrs({builder: "Chummer"});
setCharmancerText({
"directions" : chummerDirections
});
});
on("clicked:import", () => {
const mancerData = getCharmancerData();
const mancerValues = mancerData["importer"].values;
let applyEnabled = true;
let setText = {};
// Verify the user entered a JSON in the textarea. If not, provide user feedabck.
if (mancerValues.jsonData) {
const parsedData = JSON.parse(mancerValues.jsonData) || false;
setText[`import-feedback`] = "";
// There is a value in the textarea! Check to see if its a valid JSON. Provide users feeadback
if (parsedData) {
setText[`import-feedback`] += `<p class="feedback">A valid JSON was imported for ${mancerValues.builder}.</p>`
// Send the parsed data to the selected importer or let users know something went wrong
if (mancerValues.builder && mancerValues.builder === "Chummer") {
if (parsedData.characters && parsedData.characters.character) {
importChummer(parsedData.characters.character);
} else {
setText[`import-feedback`] += `<p class="warning">Parsed JSON is missing character data.</p>`;
applyEnabled = false
}
} else if (mancerValues.builder && mancerValues.builder === "Hero Lab") {
importHeroLab();
setText[`import-feedback`] += `<p class="warning">Coming Soon....</p>`;
} else {
setText[`import-feedback`] += `<p class="warning">A character builder was not selected. Try changing your selection then change it back if needed.</p>`;
applyEnabled = false
}
} else {
setText[`import-feedback`] += `<p class="warning"><span>The text imported is not a valid JSON. Verify the JSON is formatted correctly. Check the format at,</span> JSONLint.com.</p>`;
applyEnabled = false
};
} else {
setText[`import-feedback`] = `<p class="warning">No information was entered in the JSON text area.</p>`;
applyEnabled = false
};
let buttonStatus = (applyEnabled) ? "" : "disabled";
setText[`finish-button`] = `<button class="finish" type="finish" value="apply" data-i18n="apply" ${buttonStatus}>Apply</button>`;
setCharmancerText(setText);
});
const chummerDirections = `<ol>
<li>In Chummer mark your character as created</li>
<li>Go to File -> Export -> Export JSON</li>
<li>Copy the JSON in the file</li>
<li>Paste it into the textfield below</li>
<li>Click the Import button</li>
<li>Review the data. Use the checkbox <strong>Show Hidden Inputs</strong> to fix data.</li>
<li>Click Apply to <u>overwrite</u> information on the character sheet</li>
</ol>`;
const herolabDirections = `
<ol>
<li>Download the file "HLtoRoll20Export.hl" from: https://drive.google.com/file/d/0B3E3jkp51s8aRmpTU1NMRjRIVkk/view</li>
<li>Double click the file. Hero Lab will import it automatically now.</li>
<li>Load a character</li>
<li>Go to File/Save Custom Output and select the "Roll20 Export"</li>
<li>Save the file. It should open automatically in your browser</li>
<li>Follow the directions.</li>
</ol>`;
on("change:builder", (eventinfo) => {
let setText = {};
setText[`directions`] = (eventinfo.newValue === "Chummer") ? chummerDirections : herolabDirections;
setCharmancerText(setText);
});
const clean = () => {
['active', 'knowledge', 'language', 'quality', 'martial',
'range', 'melee', 'weapon', 'armor', 'augementations',
'items', 'NPCspell', 'spell', 'rituals', 'preps', 'powers',
'contacts', 'vehicle', 'lifestyle', "programs", "forms"].forEach(group => {
getSectionIDs(`repeating_${group}`, (ids) => {
ids.forEach((id) => {
removeRepeatingRow(`repeating_${group}_${id}`);
});
});
});
};
//USEFUL FUNCTIONS
const capitialize = (string) => {
return string.charAt(0).toUpperCase() + string.slice(1);
};
const addFeedback = (attribute, value) => {
return `<p class="feedback"><strong>${capitialize(attribute)}:</strong> ${value} </p>`
};
const alphabatizeKeys = (unsortedJSON) => {
let alphabeticalKeys = {};
Object.keys(unsortedJSON).sort().forEach((key) => {
alphabeticalKeys[key] = unsortedJSON[key];
});
return alphabeticalKeys
};
const getValInParen = (value) => {
return value.split("(")[1].split(")")[0];
};
const getArray = (array) => {
return Array.isArray(array) ? array : [ array ];
};
const getSplitNum = (value) => {
return value.split("/")[0];
}
</script><!-- CHARACTERMANCER IMPORTER -->
<charmancer class="sheet-charmancer-importer">
<div class="mancer-box">
<h1>Shadowrun Fifth Edition Character Importer</h1>
<h2>Setup</h2>
<p>This will import character JSON data generated from Chummer 5. This is an <em>experimental</em> feature which is not 100% completed. It will save you a bit of time when bringing a character to Roll20.</p>
<h3>Pick Character Builder</h3>
<div class="pick-builder">
<label title="choose chummer">
<h4>Chummer</h4>
<input type="radio" name="comp_builder" value="Chummer" checked />
</label>
<!--<label title="choose hero lab">
<h4>Hero Lab</h4>
<input type="radio" name="comp_builder" value="Hero Lab" />
</label>-->
</div>
<div class="directions"></div>
<h3>Enter JSON Here</h3>
<textarea name="comp_jsonData" placeholder="Add JSON here"></textarea>
<button type="action" name="act_import" data-i18n="import">Import</button>
<hr />
<h2>Results</h2>
<!-- <p>Review for errors and resolve them in your JSON as needed before completing the import by clicking Apply.</p> -->
<div class="import-feedback"><p>Enter a JSON string in the text area above.</p></div>
<div class="result-grid">
<h3>Character data to be updated</h3>
<div class="results"><p>Import button has not been pressed yet.</p></div>
<h3>Character data not to be updated</h3>
<div class="error"><p>Import button has not been pressed yet.</p></div>
</div>
<h4 class="hidden-header">Show Hidden Inputs</h4>
<input type="checkbox" name="comp_hidden" value="on">
<div class="hidden"></div>
<hr />
<h2>Complete</h2>
<p>After reviewing the data above, click Apply. This will <strong>overwrite</strong> data on the sheet where applicable.</p>
<h3>Chummer Notes</h3>
<ul>
<li>
Chummer frequently has the wrong information for <strong>Weapons</strong>. Review them in the Arms tab after clicking apply.
</li>
<li>
<strong>specialization</strong> will not be applied to Weapons or Magic. You will need to manually update the checkbox.
</li>
<li>
<strong>Vehicles</strong> will not be imported.
</li>
<li>
<strong>Complex Forms</strong> will not be imported.
</li>
</ul>
<div class="finish-button">
<button class="finish" type="finish" value="apply" data-i18n="apply" disabled>Apply</button>
</div>
<div class="bottombar">
<button class="prev" type="cancel" value="cancel" data-i18n="cancel">Cancel</button>
</div>
</div>
</charmancer>
<charmancer class="sheet-charmancer-final">
<div class="charmancer">
<div class="">
<h1>Importing your Shadowrun character...overwriting previous data</h1>
<img alt="emerald productions, llc" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/images/EProd_Title_Green.jpg" />
</div>
</div>
</charmancer>