Files
roll20-character-sheets/Genefunk 2090/genefunk2090.html
T

5028 lines
290 KiB
HTML

<!--test new line-->
<!-- Default Values-->
<input type="hidden" name="attr_strength_mod" value="0"/>
<input type="hidden" name="attr_strength_save" value="0"/>
<input type="hidden" name="attr_strength_check_macro" value="{{d20=[[@{advantage_state} + @{strength_mod} @{strength_bonus}]]}}"/>
<input type="hidden" name="attr_strength_save_macro" value="{{d20=[[@{advantage_state} + @{strength_mod} + @{strength_save_proficiency} @{strength_save_bonus}]]}}"/>
<input type="hidden" name="attr_strength_bonus" value=""/>
<input type="hidden" name="attr_strength_save_bonus" value=""/>
<input type="hidden" name="attr_dexterity_mod" value="0"/>
<input type="hidden" name="attr_dexterity_save" value="0"/>
<input type="hidden" name="attr_dexterity_check_macro" value="{{d20=[[@{advantage_state} + @{dexterity_mod} @{dexterity_bonus}]]}}"/>
<input type="hidden" name="attr_dexterity_save_macro" value="{{d20=[[@{advantage_state} + @{dexterity_mod} + @{dexterity_save_proficiency} @{dexterity_save_bonus}]]}}"/>
<input type="hidden" name="attr_dexterity_bonus" value=""/>
<input type="hidden" name="attr_dexterity_save_bonus" value=""/>
<input type="hidden" name="attr_constitution_mod" value="0"/>
<input type="hidden" name="attr_constitution_save" value="0"/>
<input type="hidden" name="attr_constitution_check_macro" value="{{d20=[[@{advantage_state} + @{constitution_mod} @{constitution_bonus}]]}}"/>
<input type="hidden" name="attr_constitution_save_macro" value="{{d20=[[@{advantage_state} + @{constitution_mod} + @{constitution_save_proficiency} @{constitution_save_bonus}]]}}"/>
<input type="hidden" name="attr_constitution_bonus" value=""/>
<input type="hidden" name="attr_constitution_save_bonus" value=""/>
<input type="hidden" name="attr_intelligence_mod" value="0"/>
<input type="hidden" name="attr_intelligence_save" value="0"/>
<input type="hidden" name="attr_intelligence_check_macro" value="{{d20=[[@{advantage_state} + @{intelligence_mod} @{intelligence_bonus}]]}}"/>
<input type="hidden" name="attr_intelligence_save_macro" value="{{d20=[[@{advantage_state} + @{intelligence_mod} + @{intelligence_save_proficiency} @{intelligence_save_bonus}]]}}"/>
<input type="hidden" name="attr_intelligence_bonus" value=""/>
<input type="hidden" name="attr_intelligence_save_bonus" value=""/>
<input type="hidden" name="attr_wisdom_mod" value="0"/>
<input type="hidden" name="attr_wisdom_save" value="0"/>
<input type="hidden" name="attr_wisdom_check_macro" value="{{d20=[[@{advantage_state} + @{wisdom_mod} @{wisdom_bonus}]]}}"/>
<input type="hidden" name="attr_wisdom_save_macro" value="{{d20=[[@{advantage_state} + @{wisdom_mod} + @{wisdom_save_proficiency} @{wisdom_save_bonus}]]}}"/>
<input type="hidden" name="attr_wisdom_bonus" value=""/>
<input type="hidden" name="attr_wisdom_save_bonus" value=""/>
<input type="hidden" name="attr_charisma_mod" value="0"/>
<input type="hidden" name="attr_charisma_save" value="0"/>
<input type="hidden" name="attr_charisma_check_macro" value="{{d20=[[@{advantage_state} + @{charisma_mod} @{charisma_bonus}]]}}"/>
<input type="hidden" name="attr_charisma_save_macro" value="{{d20=[[@{advantage_state} + @{charisma_mod} + @{charisma_save_proficiency} @{charisma_save_bonus}]]}}"/>
<input type="hidden" name="attr_charisma_bonus" value=""/>
<input type="hidden" name="attr_charisma_save_bonus" value=""/>
<input type="hidden" name="attr_athletics_bonus" value=""/>
<input type="hidden" name="attr_athletics_macro" value="{{d20=[[@{advantage_state} + @{athletics_proficiency} + @{strength_mod} @{athletics_bonus}]]}}"/>
<input type="hidden" name="attr_acrobatics_bonus" value=""/>
<input type="hidden" name="attr_acrobatics_macro" value="{{d20=[[@{advantage_state} + @{acrobatics_proficiency} + @{dexterity_mod} @{acrobatics_bonus}]]}}"/>
<input type="hidden" name="attr_drive_bonus" value=""/>
<input type="hidden" name="attr_drive_macro" value="{{d20=[[@{advantage_state} + @{drive_proficiency} + @{dexterity_mod} @{drive_bonus}]]}}"/>
<input type="hidden" name="attr_sleight_of_hand_bonus" value=""/>
<input type="hidden" name="attr_sleight_of_hand_macro" value="{{d20=[[@{advantage_state} + @{sleight_of_hand_proficiency} + @{dexterity_mod} @{sleight_of_hand_bonus}]]}}"/>
<input type="hidden" name="attr_stealth_bonus" value=""/>
<input type="hidden" name="attr_stealth_macro" value="{{d20=[[@{advantage_state} + @{stealth_proficiency} + @{dexterity_mod} @{stealth_bonus}]]}}"/>
<input type="hidden" name="attr_bureaucracy_bonus" value=""/>
<input type="hidden" name="attr_bureaucracy_macro" value="{{d20=[[@{advantage_state} + @{bureaucracy_proficiency} + @{intelligence_mod} @{bureaucracy_bonus}]]}}"/>
<input type="hidden" name="attr_computers_bonus" value=""/>
<input type="hidden" name="attr_computers_macro" value="{{d20=[[@{advantage_state} + @{computers_proficiency} + @{intelligence_mod} @{computers_bonus}]]}}"/>
<input type="hidden" name="attr_investigation_bonus" value=""/>
<input type="hidden" name="attr_investigation_macro" value="{{d20=[[@{advantage_state} + @{investigation_proficiency} + @{intelligence_mod} @{investigation_bonus}]]}}"/>
<input type="hidden" name="attr_life_science_bonus" value=""/>
<input type="hidden" name="attr_life_science_macro" value="{{d20=[[@{advantage_state} + @{life_science_proficiency} + @{intelligence_mod} @{life_science_bonus}]]}}"/>
<input type="hidden" name="attr_mechanics_bonus" value=""/>
<input type="hidden" name="attr_mechanics_macro" value="{{d20=[[@{advantage_state} + @{mechanics_proficiency} + @{intelligence_mod} @{mechanics_bonus}]]}}"/>
<input type="hidden" name="attr_physical_science_bonus" value=""/>
<input type="hidden" name="attr_physical_science_macro" value="{{d20=[[@{advantage_state} + @{physical_science_proficiency} + @{intelligence_mod} @{physical_science_bonus}]]}}"/>
<input type="hidden" name="attr_social_science_bonus" value=""/>
<input type="hidden" name="attr_social_science_macro" value="{{d20=[[@{advantage_state} + @{social_science_proficiency} + @{intelligence_mod} @{social_science_bonus}]]}}"/>
<input type="hidden" name="attr_streetwise_bonus" value=""/>
<input type="hidden" name="attr_streetwise_macro" value="{{d20=[[@{advantage_state} + @{streetwise_proficiency} + @{intelligence_mod} @{streetwise_bonus}]]}}"/>
<input type="hidden" name="attr_insight_bonus" value=""/>
<input type="hidden" name="attr_insight_macro" value="{{d20=[[@{advantage_state} + @{insight_proficiency} + @{wisdom_mod} @{insight_bonus}]]}}"/>
<input type="hidden" name="attr_perception_bonus" value=""/>
<input type="hidden" name="attr_perception_macro" value="{{d20=[[@{advantage_state} + @{perception_proficiency} + @{wisdom_mod} @{perception_bonus}]]}}"/>
<input type="hidden" name="attr_survival_bonus" value=""/>
<input type="hidden" name="attr_survival_macro" value="{{d20=[[@{advantage_state} + @{survival_proficiency} + @{wisdom_mod} @{survival_bonus}]]}}"/>
<input type="hidden" name="attr_deception_bonus" value=""/>
<input type="hidden" name="attr_deception_macro" value="{{d20=[[@{advantage_state} + @{deception_proficiency} + @{charisma_mod} @{deception_bonus}]]}}"/>
<input type="hidden" name="attr_intimidation_bonus" value=""/>
<input type="hidden" name="attr_intimidation_macro" value="{{d20=[[@{advantage_state} + @{intimidation_proficiency} + @{charisma_mod} @{intimidation_bonus}]]}}"/>
<input type="hidden" name="attr_performance_bonus" value=""/>
<input type="hidden" name="attr_performance_macro" value="{{d20=[[@{advantage_state} + @{performance_proficiency} + @{charisma_mod} @{performance_bonus}]]}}"/>
<input type="hidden" name="attr_persuasion_bonus" value=""/>
<input type="hidden" name="attr_persuasion_macro" value="{{d20=[[@{advantage_state} + @{persuasion_proficiency} + @{charisma_mod} @{persuasion_bonus}]]}}"/>
<input class="hidden" type="number" name="attr_passive_perception" value="10"/>
<input type="hidden" name="attr_passive_perception_modded" value=""/>
<input class="hidden" type="number" name="attr_passive_insight" value="10"/>
<input type="hidden" name="attr_passive_insight_modded" value=""/>
<input type="hidden" name="attr_version" value=""/>
<input type="hidden" name="attr_template_start" value="@{whisper_state} &amp;{template:general} @{show_character_name}"/>
<!-- End Default Values-->
<div class="whole">
<input class="master-display-controller" type="hidden" name="attr_master_display_controller" value="character_type:pc | sheet_view:core | advantage_state:1d20"/>
<!-- Start PC sheet-->
<div class="pc">
<div class="name-logo-container"><img class="genefunk-logo" src="https://s3.amazonaws.com/files.d20.io/images/103013126/6YV1tDVuUKhJieOeCmgZww/original.png"/>
<div class="input-label-container"><span class="input-label" data-i18n="character name">character name</span>
<input type="text" name="attr_character_name" title="@{character_name}" value=""/>
</div>
</div>
<div class="character-basic-container">
<div class="input-label-container"><span class="input-label" data-i18n="class and level">class and level</span>
<input type="text" name="attr_class_level" title="@{class_level}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="genome">genome</span>
<input type="text" name="attr_genome" title="@{genome}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="cadre">cadre</span>
<input type="text" name="attr_cadre" title="@{cadre}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="experience points">experience points</span>
<input type="text" name="attr_experience_points" title="@{experience_points}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="backgrounds">backgrounds</span>
<input type="text" name="attr_backgrounds" title="@{backgrounds}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="appearance">appearance</span>
<input type="text" name="attr_appearance" title="@{appearance}" value=""/>
</div>
</div>
<div class="toggles">
<div class="toggle-row">
<div class="bordered-checkbox core">
<input class="core" type="radio" value="core" name="attr_sheet_view" checked="true"/><span class="core" data-i18n="core"></span>
</div>
<div class="bordered-checkbox hacks">
<input class="hacks" type="radio" value="hacks" name="attr_sheet_view"/><span class="hacks" data-i18n="hacks"></span>
</div>
<div class="bordered-checkbox settings">
<input class="settings" type="radio" value="settings" name="attr_sheet_view"/><span class="settings pictos" contents="y">y</span>
</div>
</div>
<div class="toggle-row">
<div class="bordered-checkbox advantage">
<input class="advantage" type="radio" value="2d20kh1" name="attr_advantage_state"/><span class="advantage" data-i18n="advantage"></span>
</div>
<div class="bordered-checkbox normal">
<input class="normal" type="radio" value="1d20" name="attr_advantage_state" checked="checked"/><span class="normal" data-i18n="normal"></span>
</div>
<div class="bordered-checkbox disadvantage">
<input class="disadvantage" type="radio" value="2d20kl1" name="attr_advantage_state"/><span class="disadvantage" data-i18n="disadvantage"></span>
</div>
<div class="bordered-checkbox query">
<input class="query" type="radio" value="?{Advantage|Normal,1d20|Advantage,2d20kh1|Disadvantage,2d20kl1}" name="attr_advantage_state"/><span class="query" data-i18n="query"></span>
</div>
</div>
</div>
<div class="core">
<div class="ability-skill-container">
<div class="ability-scores-container"><img class="helix-image" src="https://s3.amazonaws.com/files.d20.io/images/103759352/vmECQwpaseeQTN9tX7wJaw/max.png?1580877311"/>
<!-- ability -->
<div class="attribute-container">
<input type="hidden" name="attr_strength_misc" value=""/>
<button class="h3" data-i18n="strength abbreviation" type="roll" name="roll_strength" value="@{template_start} {{rollName=^{str check}}} @{strength_check_macro}">str</button><span class="score-label" data-i18n="score">score</span>
<div class="strength calc-container score">
<input class="base-value" type="number" name="attr_base_strength" value="10" title="@{base_strength} or @{strength}"/>
<input class="mod-value hidden" type="number" name="attr_strength" readonly="true" value="10"/>
<input class="mod-control" type="hidden" name="attr_strength_modded"/><span class="mod-value" name="attr_strength">10</span>
</div><span class="mod-label" data-i18n="mod">mod</span>
<div class="plus-container strength mod">
<input class="mod-control" type="hidden" name="attr_strength_mod_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_strength_mod" value="0" min="0"/><span class="plus-display strength mod" name="attr_strength_mod" title="@{strength_mod}">0</span>
</div>
<button class="save-label" type="roll" name="roll_strength_save" data-i18n="save" value="@{template_start} {{rollName=^{str save}}} @{strength_save_macro}">save</button>
<div class="save-label background"></div>
<label class="checkbox-container strength proficiency">
<input type="checkbox" name="attr_strength_save_proficiency" value="@{proficiency}" title="@{strength_save_proficiency}"/>
<span class="hexagon"></span>
</label><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span>
<div class="plus-container strength save">
<input class="mod-control" type="hidden" name="attr_strength_save_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_strength_save" value="0" min="0"/><span class="plus-display strength save" name="attr_strength_save" title="@{strength_save}">0</span>
</div>
</div>
<!-- ability -->
<div class="attribute-container">
<input type="hidden" name="attr_dexterity_misc" value=""/>
<button class="h3" data-i18n="dexterity abbreviation" type="roll" name="roll_dexterity" value="@{template_start} {{rollName=^{dex check}}} @{dexterity_check_macro}">dex</button><span class="score-label" data-i18n="score">score</span>
<div class="dexterity calc-container score">
<input class="base-value" type="number" name="attr_base_dexterity" value="10" title="@{base_dexterity} or @{dexterity}"/>
<input class="mod-value hidden" type="number" name="attr_dexterity" readonly="true" value="10"/>
<input class="mod-control" type="hidden" name="attr_dexterity_modded"/><span class="mod-value" name="attr_dexterity">10</span>
</div><span class="mod-label" data-i18n="mod">mod</span>
<div class="plus-container dexterity mod">
<input class="mod-control" type="hidden" name="attr_dexterity_mod_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_dexterity_mod" value="0" min="0"/><span class="plus-display dexterity mod" name="attr_dexterity_mod" title="@{dexterity_mod}">0</span>
</div>
<button class="save-label" type="roll" name="roll_dexterity_save" data-i18n="save" value="@{template_start} {{rollName=^{dex save}}} @{dexterity_save_macro}">save</button>
<div class="save-label background"></div>
<label class="checkbox-container dexterity proficiency">
<input type="checkbox" name="attr_dexterity_save_proficiency" value="@{proficiency}" title="@{dexterity_save_proficiency}"/>
<span class="hexagon"></span>
</label><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span>
<div class="plus-container dexterity save">
<input class="mod-control" type="hidden" name="attr_dexterity_save_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_dexterity_save" value="0" min="0"/><span class="plus-display dexterity save" name="attr_dexterity_save" title="@{dexterity_save}">0</span>
</div>
</div>
<!-- ability -->
<div class="attribute-container">
<input type="hidden" name="attr_constitution_misc" value=""/>
<button class="h3" data-i18n="constitution abbreviation" type="roll" name="roll_constitution" value="@{template_start} {{rollName=^{con check}}} @{constitution_check_macro}">con</button><span class="score-label" data-i18n="score">score</span>
<div class="constitution calc-container score">
<input class="base-value" type="number" name="attr_base_constitution" value="10" title="@{base_constitution} or @{constitution}"/>
<input class="mod-value hidden" type="number" name="attr_constitution" readonly="true" value="10"/>
<input class="mod-control" type="hidden" name="attr_constitution_modded"/><span class="mod-value" name="attr_constitution">10</span>
</div><span class="mod-label" data-i18n="mod">mod</span>
<div class="plus-container constitution mod">
<input class="mod-control" type="hidden" name="attr_constitution_mod_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_constitution_mod" value="0" min="0"/><span class="plus-display constitution mod" name="attr_constitution_mod" title="@{constitution_mod}">0</span>
</div>
<button class="save-label" type="roll" name="roll_constitution_save" data-i18n="save" value="@{template_start} {{rollName=^{con save}}} @{constitution_save_macro}">save</button>
<div class="save-label background"></div>
<label class="checkbox-container constitution proficiency">
<input type="checkbox" name="attr_constitution_save_proficiency" value="@{proficiency}" title="@{constitution_save_proficiency}"/>
<span class="hexagon"></span>
</label><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span>
<div class="plus-container constitution save">
<input class="mod-control" type="hidden" name="attr_constitution_save_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_constitution_save" value="0" min="0"/><span class="plus-display constitution save" name="attr_constitution_save" title="@{constitution_save}">0</span>
</div>
</div>
<!-- ability -->
<div class="attribute-container">
<input type="hidden" name="attr_intelligence_misc" value=""/>
<button class="h3" data-i18n="intelligence abbreviation" type="roll" name="roll_intelligence" value="@{template_start} {{rollName=^{int check}}} @{intelligence_check_macro}">int</button><span class="score-label" data-i18n="score">score</span>
<div class="intelligence calc-container score">
<input class="base-value" type="number" name="attr_base_intelligence" value="10" title="@{base_intelligence} or @{intelligence}"/>
<input class="mod-value hidden" type="number" name="attr_intelligence" readonly="true" value="10"/>
<input class="mod-control" type="hidden" name="attr_intelligence_modded"/><span class="mod-value" name="attr_intelligence">10</span>
</div><span class="mod-label" data-i18n="mod">mod</span>
<div class="plus-container intelligence mod">
<input class="mod-control" type="hidden" name="attr_intelligence_mod_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_intelligence_mod" value="0" min="0"/><span class="plus-display intelligence mod" name="attr_intelligence_mod" title="@{intelligence_mod}">0</span>
</div>
<button class="save-label" type="roll" name="roll_intelligence_save" data-i18n="save" value="@{template_start} {{rollName=^{int save}}} @{intelligence_save_macro}">save</button>
<div class="save-label background"></div>
<label class="checkbox-container intelligence proficiency">
<input type="checkbox" name="attr_intelligence_save_proficiency" value="@{proficiency}" title="@{intelligence_save_proficiency}"/>
<span class="hexagon"></span>
</label><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span>
<div class="plus-container intelligence save">
<input class="mod-control" type="hidden" name="attr_intelligence_save_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_intelligence_save" value="0" min="0"/><span class="plus-display intelligence save" name="attr_intelligence_save" title="@{intelligence_save}">0</span>
</div>
</div>
<!-- ability -->
<div class="attribute-container">
<input type="hidden" name="attr_wisdom_misc" value=""/>
<button class="h3" data-i18n="wisdom abbreviation" type="roll" name="roll_wisdom" value="@{template_start} {{rollName=^{wis check}}} @{wisdom_check_macro}">wis</button><span class="score-label" data-i18n="score">score</span>
<div class="wisdom calc-container score">
<input class="base-value" type="number" name="attr_base_wisdom" value="10" title="@{base_wisdom} or @{wisdom}"/>
<input class="mod-value hidden" type="number" name="attr_wisdom" readonly="true" value="10"/>
<input class="mod-control" type="hidden" name="attr_wisdom_modded"/><span class="mod-value" name="attr_wisdom">10</span>
</div><span class="mod-label" data-i18n="mod">mod</span>
<div class="plus-container wisdom mod">
<input class="mod-control" type="hidden" name="attr_wisdom_mod_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_wisdom_mod" value="0" min="0"/><span class="plus-display wisdom mod" name="attr_wisdom_mod" title="@{wisdom_mod}">0</span>
</div>
<button class="save-label" type="roll" name="roll_wisdom_save" data-i18n="save" value="@{template_start} {{rollName=^{wis save}}} @{wisdom_save_macro}">save</button>
<div class="save-label background"></div>
<label class="checkbox-container wisdom proficiency">
<input type="checkbox" name="attr_wisdom_save_proficiency" value="@{proficiency}" title="@{wisdom_save_proficiency}"/>
<span class="hexagon"></span>
</label><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span>
<div class="plus-container wisdom save">
<input class="mod-control" type="hidden" name="attr_wisdom_save_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_wisdom_save" value="0" min="0"/><span class="plus-display wisdom save" name="attr_wisdom_save" title="@{wisdom_save}">0</span>
</div>
</div>
<!-- ability -->
<div class="attribute-container">
<input type="hidden" name="attr_charisma_misc" value=""/>
<button class="h3" data-i18n="charisma abbreviation" type="roll" name="roll_charisma" value="@{template_start} {{rollName=^{cha check}}} @{charisma_check_macro}">cha</button><span class="score-label" data-i18n="score">score</span>
<div class="charisma calc-container score">
<input class="base-value" type="number" name="attr_base_charisma" value="10" title="@{base_charisma} or @{charisma}"/>
<input class="mod-value hidden" type="number" name="attr_charisma" readonly="true" value="10"/>
<input class="mod-control" type="hidden" name="attr_charisma_modded"/><span class="mod-value" name="attr_charisma">10</span>
</div><span class="mod-label" data-i18n="mod">mod</span>
<div class="plus-container charisma mod">
<input class="mod-control" type="hidden" name="attr_charisma_mod_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_charisma_mod" value="0" min="0"/><span class="plus-display charisma mod" name="attr_charisma_mod" title="@{charisma_mod}">0</span>
</div>
<button class="save-label" type="roll" name="roll_charisma_save" data-i18n="save" value="@{template_start} {{rollName=^{cha save}}} @{charisma_save_macro}">save</button>
<div class="save-label background"></div>
<label class="checkbox-container charisma proficiency">
<input type="checkbox" name="attr_charisma_save_proficiency" value="@{proficiency}" title="@{charisma_save_proficiency}"/>
<span class="hexagon"></span>
</label><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span>
<div class="plus-container charisma save">
<input class="mod-control" type="hidden" name="attr_charisma_save_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_charisma_save" value="0" min="0"/><span class="plus-display charisma save" name="attr_charisma_save" title="@{charisma_save}">0</span>
</div>
</div>
</div>
<div class="right-column">
<div class="hexagon-label-container">
<div class="true-hexagon polygon locked">
<div class="plus-container undefined">
<input class="mod-control" type="hidden" name="attr_proficiency_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_proficiency" value="2" min="0"/><span class="plus-display" name="attr_proficiency" title="@{proficiency}">2</span>
</div>
</div>
<div class="hexagon-label"><span data-i18n="proficiency bonus">proficiency bonus</span>
</div>
</div>
<div class="skills-container">
<h4 class="strength" data-i18n="strength skills">strength skills
</h4>
<div class="athletics expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_athletics_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{athletics_proficiency" name="attr_athletics_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{athletics_proficiency" name="attr_athletics_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{athletics_proficiency" name="attr_athletics_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{athletics_proficiency" name="attr_athletics_proficiency" value="[[@{proficiency}]]"/>
</div><span class="check-label proficiency" data-i18n="proficiency abbreviation">prof</span><span class="check-label expertise" data-i18n="expertise abbreviation">exp</span>
</div>
<div class="plus-container athletics">
<input class="mod-control" type="hidden" name="attr_athletics_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_athletics" value="0" min="0"/><span class="plus-display athletics" name="attr_athletics" title="@{athletics}">0</span>
</div>
<button class="athletics skill-label" type="roll" name="roll_athletics" data-i18n="athletics" value="@{template_start} {{rollName=^{athletics}}} @{athletics_macro}"></button>
<h4 class="dexterity" data-i18n="dexterity skills">dexterity skills
</h4>
<div class="acrobatics expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_acrobatics_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{acrobatics_proficiency" name="attr_acrobatics_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{acrobatics_proficiency" name="attr_acrobatics_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{acrobatics_proficiency" name="attr_acrobatics_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{acrobatics_proficiency" name="attr_acrobatics_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container acrobatics">
<input class="mod-control" type="hidden" name="attr_acrobatics_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_acrobatics" value="0" min="0"/><span class="plus-display acrobatics" name="attr_acrobatics" title="@{acrobatics}">0</span>
</div>
<button class="acrobatics skill-label" type="roll" name="roll_acrobatics" data-i18n="acrobatics" value="@{template_start} {{rollName=^{acrobatics}}} @{acrobatics_macro}"></button>
<div class="drive expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_drive_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{drive_proficiency" name="attr_drive_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{drive_proficiency" name="attr_drive_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{drive_proficiency" name="attr_drive_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{drive_proficiency" name="attr_drive_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container drive">
<input class="mod-control" type="hidden" name="attr_drive_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_drive" value="0" min="0"/><span class="plus-display drive" name="attr_drive" title="@{drive}">0</span>
</div>
<button class="drive skill-label" type="roll" name="roll_drive" data-i18n="drive" value="@{template_start} {{rollName=^{drive}}} @{drive_macro}"></button>
<div class="sleight_of_hand expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_sleight_of_hand_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{sleight_of_hand_proficiency" name="attr_sleight_of_hand_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{sleight_of_hand_proficiency" name="attr_sleight_of_hand_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{sleight_of_hand_proficiency" name="attr_sleight_of_hand_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{sleight_of_hand_proficiency" name="attr_sleight_of_hand_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container sleight_of_hand">
<input class="mod-control" type="hidden" name="attr_sleight_of_hand_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_sleight_of_hand" value="0" min="0"/><span class="plus-display sleight_of_hand" name="attr_sleight_of_hand" title="@{sleight_of_hand}">0</span>
</div>
<button class="sleight_of_hand skill-label" type="roll" name="roll_sleight_of_hand" data-i18n="sleight of hand" value="@{template_start} {{rollName=^{sleight of hand}}} @{sleight_of_hand_macro}"></button>
<div class="stealth expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_stealth_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{stealth_proficiency" name="attr_stealth_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{stealth_proficiency" name="attr_stealth_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{stealth_proficiency" name="attr_stealth_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{stealth_proficiency" name="attr_stealth_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container stealth">
<input class="mod-control" type="hidden" name="attr_stealth_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_stealth" value="0" min="0"/><span class="plus-display stealth" name="attr_stealth" title="@{stealth}">0</span>
</div>
<button class="stealth skill-label" type="roll" name="roll_stealth" data-i18n="stealth" value="@{template_start} {{rollName=^{stealth}}} @{stealth_macro}"></button>
<h4 class="intelligence" data-i18n="intelligence skills">intelligence skills
</h4>
<div class="bureaucracy expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_bureaucracy_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{bureaucracy_proficiency" name="attr_bureaucracy_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{bureaucracy_proficiency" name="attr_bureaucracy_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{bureaucracy_proficiency" name="attr_bureaucracy_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{bureaucracy_proficiency" name="attr_bureaucracy_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container bureaucracy">
<input class="mod-control" type="hidden" name="attr_bureaucracy_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_bureaucracy" value="0" min="0"/><span class="plus-display bureaucracy" name="attr_bureaucracy" title="@{bureaucracy}">0</span>
</div>
<button class="bureaucracy skill-label" type="roll" name="roll_bureaucracy" data-i18n="bureaucracy" value="@{template_start} {{rollName=^{bureaucracy}}} @{bureaucracy_macro}"></button>
<div class="computers expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_computers_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{computers_proficiency" name="attr_computers_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{computers_proficiency" name="attr_computers_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{computers_proficiency" name="attr_computers_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{computers_proficiency" name="attr_computers_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container computers">
<input class="mod-control" type="hidden" name="attr_computers_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_computers" value="0" min="0"/><span class="plus-display computers" name="attr_computers" title="@{computers}">0</span>
</div>
<button class="computers skill-label" type="roll" name="roll_computers" data-i18n="computers" value="@{template_start} {{rollName=^{computers}}} @{computers_macro}"></button>
<div class="investigation expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_investigation_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{investigation_proficiency" name="attr_investigation_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{investigation_proficiency" name="attr_investigation_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{investigation_proficiency" name="attr_investigation_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{investigation_proficiency" name="attr_investigation_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container investigation">
<input class="mod-control" type="hidden" name="attr_investigation_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_investigation" value="0" min="0"/><span class="plus-display investigation" name="attr_investigation" title="@{investigation}">0</span>
</div>
<button class="investigation skill-label" type="roll" name="roll_investigation" data-i18n="investigation" value="@{template_start} {{rollName=^{investigation}}} @{investigation_macro}"></button>
<div class="life_science expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_life_science_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{life_science_proficiency" name="attr_life_science_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{life_science_proficiency" name="attr_life_science_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{life_science_proficiency" name="attr_life_science_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{life_science_proficiency" name="attr_life_science_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container life_science">
<input class="mod-control" type="hidden" name="attr_life_science_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_life_science" value="0" min="0"/><span class="plus-display life_science" name="attr_life_science" title="@{life_science}">0</span>
</div>
<button class="life_science skill-label" type="roll" name="roll_life_science" data-i18n="life science" value="@{template_start} {{rollName=^{life science}}} @{life_science_macro}"></button>
<div class="mechanics expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_mechanics_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{mechanics_proficiency" name="attr_mechanics_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{mechanics_proficiency" name="attr_mechanics_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{mechanics_proficiency" name="attr_mechanics_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{mechanics_proficiency" name="attr_mechanics_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container mechanics">
<input class="mod-control" type="hidden" name="attr_mechanics_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_mechanics" value="0" min="0"/><span class="plus-display mechanics" name="attr_mechanics" title="@{mechanics}">0</span>
</div>
<button class="mechanics skill-label" type="roll" name="roll_mechanics" data-i18n="mechanics" value="@{template_start} {{rollName=^{mechanics}}} @{mechanics_macro}"></button>
<div class="physical_science expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_physical_science_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{physical_science_proficiency" name="attr_physical_science_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{physical_science_proficiency" name="attr_physical_science_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{physical_science_proficiency" name="attr_physical_science_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{physical_science_proficiency" name="attr_physical_science_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container physical_science">
<input class="mod-control" type="hidden" name="attr_physical_science_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_physical_science" value="0" min="0"/><span class="plus-display physical_science" name="attr_physical_science" title="@{physical_science}">0</span>
</div>
<button class="physical_science skill-label" type="roll" name="roll_physical_science" data-i18n="physical science" value="@{template_start} {{rollName=^{physical science}}} @{physical_science_macro}"></button>
<div class="social_science expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_social_science_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{social_science_proficiency" name="attr_social_science_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{social_science_proficiency" name="attr_social_science_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{social_science_proficiency" name="attr_social_science_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{social_science_proficiency" name="attr_social_science_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container social_science">
<input class="mod-control" type="hidden" name="attr_social_science_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_social_science" value="0" min="0"/><span class="plus-display social_science" name="attr_social_science" title="@{social_science}">0</span>
</div>
<button class="social_science skill-label" type="roll" name="roll_social_science" data-i18n="social science" value="@{template_start} {{rollName=^{social science}}} @{social_science_macro}"></button>
<div class="streetwise expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_streetwise_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{streetwise_proficiency" name="attr_streetwise_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{streetwise_proficiency" name="attr_streetwise_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{streetwise_proficiency" name="attr_streetwise_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{streetwise_proficiency" name="attr_streetwise_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container streetwise">
<input class="mod-control" type="hidden" name="attr_streetwise_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_streetwise" value="0" min="0"/><span class="plus-display streetwise" name="attr_streetwise" title="@{streetwise}">0</span>
</div>
<button class="streetwise skill-label" type="roll" name="roll_streetwise" data-i18n="streetwise" value="@{template_start} {{rollName=^{streetwise}}} @{streetwise_macro}"></button>
<h4 class="wisdom" data-i18n="wisdom skills">wisdom skills
</h4>
<div class="insight expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_insight_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{insight_proficiency" name="attr_insight_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{insight_proficiency" name="attr_insight_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{insight_proficiency" name="attr_insight_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{insight_proficiency" name="attr_insight_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container insight">
<input class="mod-control" type="hidden" name="attr_insight_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_insight" value="0" min="0"/><span class="plus-display insight" name="attr_insight" title="@{insight}">0</span>
</div>
<button class="insight skill-label" type="roll" name="roll_insight" data-i18n="insight" value="@{template_start} {{rollName=^{insight}}} @{insight_macro}"></button>
<div class="perception expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_perception_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{perception_proficiency" name="attr_perception_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{perception_proficiency" name="attr_perception_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{perception_proficiency" name="attr_perception_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{perception_proficiency" name="attr_perception_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container perception">
<input class="mod-control" type="hidden" name="attr_perception_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_perception" value="0" min="0"/><span class="plus-display perception" name="attr_perception" title="@{perception}">0</span>
</div>
<button class="perception skill-label" type="roll" name="roll_perception" data-i18n="perception" value="@{template_start} {{rollName=^{perception}}} @{perception_macro}"></button>
<div class="survival expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_survival_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{survival_proficiency" name="attr_survival_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{survival_proficiency" name="attr_survival_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{survival_proficiency" name="attr_survival_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{survival_proficiency" name="attr_survival_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container survival">
<input class="mod-control" type="hidden" name="attr_survival_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_survival" value="0" min="0"/><span class="plus-display survival" name="attr_survival" title="@{survival}">0</span>
</div>
<button class="survival skill-label" type="roll" name="roll_survival" data-i18n="survival" value="@{template_start} {{rollName=^{survival}}} @{survival_macro}"></button>
<h4 class="charisma" data-i18n="charisma skills">charisma skills
</h4>
<div class="deception expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_deception_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{deception_proficiency" name="attr_deception_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{deception_proficiency" name="attr_deception_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{deception_proficiency" name="attr_deception_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{deception_proficiency" name="attr_deception_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container deception">
<input class="mod-control" type="hidden" name="attr_deception_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_deception" value="0" min="0"/><span class="plus-display deception" name="attr_deception" title="@{deception}">0</span>
</div>
<button class="deception skill-label" type="roll" name="roll_deception" data-i18n="deception" value="@{template_start} {{rollName=^{deception}}} @{deception_macro}"></button>
<div class="intimidation expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_intimidation_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{intimidation_proficiency" name="attr_intimidation_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{intimidation_proficiency" name="attr_intimidation_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{intimidation_proficiency" name="attr_intimidation_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{intimidation_proficiency" name="attr_intimidation_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container intimidation">
<input class="mod-control" type="hidden" name="attr_intimidation_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_intimidation" value="0" min="0"/><span class="plus-display intimidation" name="attr_intimidation" title="@{intimidation}">0</span>
</div>
<button class="intimidation skill-label" type="roll" name="roll_intimidation" data-i18n="intimidation" value="@{template_start} {{rollName=^{intimidation}}} @{intimidation_macro}"></button>
<div class="performance expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_performance_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{performance_proficiency" name="attr_performance_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{performance_proficiency" name="attr_performance_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{performance_proficiency" name="attr_performance_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{performance_proficiency" name="attr_performance_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container performance">
<input class="mod-control" type="hidden" name="attr_performance_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_performance" value="0" min="0"/><span class="plus-display performance" name="attr_performance" title="@{performance}">0</span>
</div>
<button class="performance skill-label" type="roll" name="roll_performance" data-i18n="performance" value="@{template_start} {{rollName=^{performance}}} @{performance_macro}"></button>
<div class="persuasion expertise-check-label checkbox-container">
<input class="prof-control" type="hidden" name="attr_persuasion_proficiency" value="0"/>
<div class="prof-display true-hexagon polygon">
<input class="untrained" type="radio" title="@{persuasion_proficiency" name="attr_persuasion_proficiency" value="0" checked="checked"/>
<input class="proficiency" type="radio" title="@{persuasion_proficiency" name="attr_persuasion_proficiency" value="[[@{proficiency}]]"/>
</div>
<div class="expertise-display true-pentagon polygon">
<input class="expertise" type="radio" title="@{persuasion_proficiency" name="attr_persuasion_proficiency" value="[[2*@{proficiency}]]"/>
<input class="proficiency" type="radio" title="@{persuasion_proficiency" name="attr_persuasion_proficiency" value="[[@{proficiency}]]"/>
</div>
</div>
<div class="plus-container persuasion">
<input class="mod-control" type="hidden" name="attr_persuasion_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_persuasion" value="0" min="0"/><span class="plus-display persuasion" name="attr_persuasion" title="@{persuasion}">0</span>
</div>
<button class="persuasion skill-label" type="roll" name="roll_persuasion" data-i18n="persuasion" value="@{template_start} {{rollName=^{persuasion}}} @{persuasion_macro}"></button>
</div>
</div>
<div class="ability-footer">
<div class="hexagon-label-container">
<div class="true-hexagon polygon locked">
<input class="mod-control" type="hidden" name="attr_passive_perception_modded"/><span name="attr_passive_perception" value="10">10</span>
</div>
<div class="hexagon-label"><span data-i18n="passive perception">passive perception</span>
</div>
</div>
<div class="hexagon-label-container">
<div class="true-hexagon polygon locked">
<input class="mod-control" type="hidden" name="attr_passive_insight_modded"/><span name="attr_passive_insight" value="10">10</span>
</div>
<div class="hexagon-label"><span data-i18n="passive insight">passive insight</span>
</div>
</div>
<div class="senses-container">
<h4 data-i18n="senses">senses</h4>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_acute_olfaction" value="1" title="@{acute_olfaction}"/><span class="hexagon"></span>
</div><span data-i18n="acute olfaction">acute olfaction</span>
</label>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_darkvision" value="1" title="@{darkvision}"/><span class="hexagon"></span>
</div><span data-i18n="darkvision">darkvision</span>
</label>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_macrovision" value="1" title="@{macrovision}"/><span class="hexagon"></span>
</div><span data-i18n="macrovision">macrovision</span>
</label>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_microvision" value="1" title="@{microvision}"/><span class="hexagon"></span>
</div><span data-i18n="microvision">microvision</span>
</label>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_penetration" value="1" title="@{penetration}"/><span class="hexagon"></span>
</div><span data-i18n="penetration">penetration</span>
</label>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_spectrum" value="1" title="@{spectrum}"/><span class="hexagon"></span>
</div><span data-i18n="spectrum">spectrum</span>
</label>
</div>
</div>
</div>
<div class="mid-column">
<div class="armor-speed-container">
<!--initiative, dr, speed, and ac containers-->
<div class="hexagon-label-container initiative">
<div class="true-hexagon polygon locked">
<div class="plus-container undefined">
<input class="mod-control" type="hidden" name="attr_initiative_modded" value=""/>
<input class="plus-control hidden" type="number" name="attr_initiative" value="0" min="0"/><span class="plus-display" name="attr_initiative" title="@{initiative}">0</span>
</div>
</div>
<div class="hexagon-label">
<button class="hexagon-label" type="roll" name="roll_initiative" data-i18n="initiative" value="@{template_start} {{rollName=^{initiative}}} {{d20=[[@{advantage_state}+@{dexterity_mod}@{initiative_modded} &{tracker}]]}}" content="initiative">initiative
</button>
</div>
</div>
<div class="hexagon-label-container dr">
<div class="true-hexagon polygon">
<input type="number" name="attr_damage_reduction" value=""/>
</div>
<div class="hexagon-label"><span data-i18n="damage reduction">damage reduction</span>
</div>
</div>
<div class="hexagon-label-container speed">
<div class="true-hexagon polygon">
<input type="text" name="attr_speed" value=""/>
</div>
<div class="hexagon-label"><span data-i18n="speed">speed</span>
</div>
</div>
<div class="hexagon-label-container ac">
<div class="true-hexagon polygon">
<input type="hidden" name="attr_ac_formula" value="10+@{dexterity_mod}"/>
<input type="number" name="attr_ac" value="10"/>
</div>
<div class="hexagon-label"><span data-i18n="armor class">armor class</span>
</div>
</div>
</div>
<div class="hp-resistance-container">
<!--current health, max health, temp hp, hit dice, death saves, and resistances-->
<div class="current-death">
<div class="current-health">
<h4 data-i18n="current hit points">current hit points</h4>
<input class="h2" type="number" name="attr_hp"/>
</div>
<div class="hd">
<input type="hidden" name="attr_hit_dice_macro" value=""/>
<button class="h4" data-i18n="hit dice" type="roll" name="roll_hit_dice" value="@{template_start} {{rollName=^{hit dice}}} @{hit_dice_macro}"></button>
<input type="number" name="attr_d8_hd"/><span data-i18n="d8">d8</span>
<input type="number" name="attr_d10_hd"/><span data-i18n="d10">d10</span>
<input type="number" name="attr_d12_hd"/><span data-i18n="d12">d12</span>
</div>
<div class="death">
<button class="h4" data-i18n="death saves" type="roll" name="roll_death_saves" value="@{template_start} {{rollName=^{death save}}} {{d20=[[@{advantage_state}@{death_save_modded}]]}}">death saves</button>
<input type="hidden" name="attr_death_save_modded" value=""/>
<input class="success-control" type="hidden" name="attr_death_success" value="0"/>
<div class="success first checkbox-container">
<input type="radio" name="attr_death_success" value="0" title="@{death_success}"/>
<input type="radio" name="attr_death_success" value="1" title="@{death_success}"/><span class="hexagon"></span>
</div>
<div class="success second checkbox-container">
<input type="radio" name="attr_death_success" value="2" title="@{death_success}"/><span class="hexagon"></span>
</div>
<div class="success third checkbox-container">
<input type="radio" name="attr_death_success" value="3" title="@{death_success}"/><span class="hexagon"></span>
</div><span class="success" style="font-family:pictos;" data-i18n-title="Successes" title="Successes">k</span>
<input class="failure-control" type="hidden" name="attr_death_failure" value="0"/>
<div class="failure first checkbox-container">
<input type="radio" name="attr_death_failure" value="0" title="@{death_failure}"/>
<input type="radio" name="attr_death_failure" value="1" title="@{death_failure}"/><span class="hexagon"></span>
</div>
<div class="failure second checkbox-container">
<input type="radio" name="attr_death_failure" value="2" title="@{death_failure}"/><span class="hexagon"></span>
</div>
<div class="failure third checkbox-container">
<input type="radio" name="attr_death_failure" value="3" title="@{death_failure}"/><span class="hexagon"></span>
</div><img class="death-label failure" data-i18n-title="Failures" title="Failures" src="https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png?1575392209"/>
</div>
</div>
<div class="hexagon-label-container max">
<div class="true-hexagon polygon">
<input type="number" name="attr_hp_max" value=""/>
</div>
<div class="hexagon-label"><span data-i18n="maximum hit points">maximum hit points</span>
</div>
</div>
<div class="hexagon-label-container temp">
<div class="true-hexagon polygon">
<input type="number" name="attr_temp_hp" value=""/>
</div>
<div class="hexagon-label"><span data-i18n="temporary hit points">temporary hit points</span>
</div>
</div>
<div class="bordered-textarea resistances">
<h4 data-i18n="resistances">
</h4>
<textarea class="fixed" name="attr_resistances"></textarea>
</div>
</div>
<div class="bordered-container action-container">
<h4 data-i18n="actions">actions
</h4>
<h5 class="name" data-i18n="name">name
</h5>
<h5 class="mod" data-i18n="mod">mod
</h5>
<h5 class="damage" data-i18n="damage">damage
</h5>
<!--repeating actions-->
<fieldset class="repeating_action">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{action_proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_action_$X_name}" value=""/>
</div>
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_action_proficiency" value="@{proficiency}" title="@{repeating_action_$X_action_proficiency}"/><span class="hexagon"></span>
</div><span data-i18n="proficiency">proficiency</span>
</label>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_action_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack ability"><span class="input-label" data-i18n="attack ability">attack ability</span>
<select name="attr_attack_ability" title="@{repeating_action_$X_attack_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container attack bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_action_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="{{save_type=^{@{save_type}}}} @{save_macro}" title="@{repeating_action_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save ability">save ability</span>
<select name="attr_save_ability" title="@{repeating_action_$X_save_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_action_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_action_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_action_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage 1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_action_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical damage 1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_action_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage ability 1"><span class="input-label" data-i18n="damage ability 1">damage ability 1</span>
<select name="attr_damage_ability_1" title="@{repeating_action_$X_damage_ability_1}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage type 1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_action_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_action_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage 2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_action_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical damage 2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_action_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage ability 2"><span class="input-label" data-i18n="damage ability 2">damage ability 2</span>
<select name="attr_damage_ability_2" title="@{repeating_action_$X_damage_ability_2}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage type 2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_action_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_action_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_action_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_action_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_action_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button><span name="attr_name" value=""></span><span name="attr_bonus" value=""></span><span name="attr_damage_1" value=""></span>
</div>
</div>
</fieldset>
</div>
<div class="mosaic-satoshi-container">
<div class="hexagon-label-container mosaic">
<div class="true-hexagon polygon">
<input type="number" name="attr_mosaic_score" value=""/>
</div>
<div class="hexagon-label"><span data-i18n="mosaic score">mosaic score</span>
</div>
</div>
<div class="bordered-textarea satoshi">
<h4 data-i18n="satoshi">
</h4>
<textarea class="fixed" name="attr_satoshi"></textarea>
</div>
</div>
<div class="bordered-container inventory-container">
<h4 data-i18n="equipment">equipment
</h4>
<h5 class="name" data-i18n="name">name
</h5>
<h5 class="cost" data-i18n="cost">cost
</h5>
<h5 class="weight" data-i18n="weight">weight
</h5>
<!--Inventory details-->
<fieldset class="repeating_equipment">
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_equipment_$X_name}" value=""/>
</div>
<div class="input-label-container quantity"><span class="input-label" data-i18n="quantity">quantity</span>
<input type="text" name="attr_quantity" title="@{repeating_equipment_$X_quantity}" value=""/>
</div>
<div class="input-label-container weight"><span class="input-label" data-i18n="weight">weight</span>
<input type="text" name="attr_weight" title="@{repeating_equipment_$X_weight}" value=""/>
</div>
<div class="input-label-container cost"><span class="input-label" data-i18n="cost">cost</span>
<input type="text" name="attr_cost" title="@{repeating_equipment_$X_cost}" value=""/>
</div>
<div class="input-label-container mods"><span class="input-label" data-i18n="mods">mods</span>
<input type="text" name="attr_mods" title="@{repeating_equipment_$X_mods}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_equipment_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_action_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view"><span name="attr_name" value=""></span><span name="attr_weight" value=""></span><span name="attr_quantity" value=""></span>
</div>
</div>
</fieldset>
</div>
</div>
<div class="trait-column">
<div class="bordered-container trait-container">
<h4 data-i18n="features & traits">features & traits
</h4>
<h5 class="name" data-i18n="name">name
</h5>
<h5 class="source" data-i18n="source">source
</h5>
<fieldset class="repeating_trait">
<input type="hidden" name="attr_macro" value="{{source=@{source}}}"/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_trait_$X_name}" value=""/>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_trait_$X_source}" value=""/>
</div>
<div class="input-label-container mods"><span class="input-label" data-i18n="mods">mods</span>
<input type="text" name="attr_mods" title="@{repeating_trait_$X_mods}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_trait_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_action_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_details" value="@{template_start} {{rollName=@{name}}} @{macro} {{description=@{description}}}">
</button><span name="attr_name" value=""></span><span name="attr_source" value=""></span>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="hacks">
<div>
<div class="hack-master-container">
<div class="hack-header pentagon-hexagon-label-container">
<div class="true-hexagon polygon">
<input type="number" title="@{1st_level_slots}" name="attr_1st_level_slots" value=""/>
</div><span class="current label" data-i18n="current"></span>
<div class="true-pentagon polygon">
<input type="number" title="@{1st_level_slots|max}" name="attr_1st_level_slots_max" value=""/>
</div><span class="max label" data-i18n="max"></span>
</div>
<div class="bordered-container 1st-level hack-container">
<h4 data-i18n="1st level">1st level
</h4>
<fieldset class="repeating_hack">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<input class="level-display" type="hidden" name="attr_level" value=""/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_hack_$X_name}" value=""/>
</div>
<div class="input-label-container level"><span class="input-label" data-i18n="level">level</span>
<input type="number" name="attr_level" title="@{repeating_hack_$X_level}" value=""/>
</div>
<div class="input-label-container launch-time"><span class="input-label" data-i18n="launch time">launch time</span>
<input type="text" name="attr_launch_time" title="@{repeating_hack_$X_launch_time}" value=""/>
</div>
<div class="input-label-container duration"><span class="input-label" data-i18n="duration">duration</span>
<input type="text" name="attr_duration" title="@{repeating_hack_$X_duration}" value=""/>
</div>
<div class="input-label-container hack-type"><span class="input-label" data-i18n="hack type">hack type</span>
<select name="attr_hack_type" title="@{repeating_hack_$X_hack_type}">
<option value="injection" data-i18n="injection">injection
</option>
<option value="gadget" data-i18n="gadget">gadget
</option>
<option value="craft tech" data-i18n="craft tech">craft tech
</option>
<option value="craft explosive" data-i18n="craft explosive">craft explosive
</option>
<option value="bot" data-i18n="bot">bot
</option>
<option value="mind" data-i18n="mind">mind
</option>
<option value="software" data-i18n="software">software
</option>
</select>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_hack_$X_source}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_hack_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack-ability"><span class="input-label" data-i18n="attack ability">attack ability</span>
<select name="attr_attack_ability" title="@{repeating_hack_$X_attack_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container attack-bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_hack_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="@{save_macro}" title="@{repeating_hack_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save ability">save ability</span>
<select name="attr_save_ability" title="@{repeating_hack_$X_save_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_hack_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_hack_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_hack_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_hack_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical-damage-1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_hack_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage-ability-1"><span class="input-label" data-i18n="damage ability 1">damage ability 1</span>
<select name="attr_damage_ability_1" title="@{repeating_hack_$X_damage_ability_1}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_hack_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_hack_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_hack_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical-damage-2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_hack_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage-ability-2"><span class="input-label" data-i18n="damage ability 2">damage ability 2</span>
<select name="attr_damage_ability_2" title="@{repeating_hack_$X_damage_ability_2}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_hack_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_hack_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_hack_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_hack_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_hack_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button>
<input class="hack-type" type="hidden" name="attr_hack_type" value="injection"/><span class="name" name="attr_name" value=""></span><span class="hack-type" name="attr_hack_type" value=""></span>
</div>
</div>
</fieldset>
<div class="pseudo-control">
<button class="repcontrol_add" type="action" name="act_add_1st_hack"></button>
</div>
</div>
</div>
<div class="hack-master-container">
<div class="hack-header pentagon-hexagon-label-container">
<div class="true-hexagon polygon">
<input type="number" title="@{2nd_level_slots}" name="attr_2nd_level_slots" value=""/>
</div><span class="current label" data-i18n="current"></span>
<div class="true-pentagon polygon">
<input type="number" title="@{2nd_level_slots|max}" name="attr_2nd_level_slots_max" value=""/>
</div><span class="max label" data-i18n="max"></span>
</div>
<div class="bordered-container 2nd-level hack-container">
<h4 data-i18n="2nd level">2nd level
</h4>
<fieldset class="repeating_hack">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<input class="level-display" type="hidden" name="attr_level" value=""/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_hack_$X_name}" value=""/>
</div>
<div class="input-label-container level"><span class="input-label" data-i18n="level">level</span>
<input type="number" name="attr_level" title="@{repeating_hack_$X_level}" value=""/>
</div>
<div class="input-label-container launch-time"><span class="input-label" data-i18n="launch time">launch time</span>
<input type="text" name="attr_launch_time" title="@{repeating_hack_$X_launch_time}" value=""/>
</div>
<div class="input-label-container duration"><span class="input-label" data-i18n="duration">duration</span>
<input type="text" name="attr_duration" title="@{repeating_hack_$X_duration}" value=""/>
</div>
<div class="input-label-container hack-type"><span class="input-label" data-i18n="hack type">hack type</span>
<select name="attr_hack_type" title="@{repeating_hack_$X_hack_type}">
<option value="injection" data-i18n="injection">injection
</option>
<option value="gadget" data-i18n="gadget">gadget
</option>
<option value="craft tech" data-i18n="craft tech">craft tech
</option>
<option value="craft explosive" data-i18n="craft explosive">craft explosive
</option>
<option value="bot" data-i18n="bot">bot
</option>
<option value="mind" data-i18n="mind">mind
</option>
<option value="software" data-i18n="software">software
</option>
</select>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_hack_$X_source}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_hack_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack-ability"><span class="input-label" data-i18n="attack ability">attack ability</span>
<select name="attr_attack_ability" title="@{repeating_hack_$X_attack_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container attack-bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_hack_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="@{save_macro}" title="@{repeating_hack_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save ability">save ability</span>
<select name="attr_save_ability" title="@{repeating_hack_$X_save_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_hack_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_hack_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_hack_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_hack_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical-damage-1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_hack_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage-ability-1"><span class="input-label" data-i18n="damage ability 1">damage ability 1</span>
<select name="attr_damage_ability_1" title="@{repeating_hack_$X_damage_ability_1}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_hack_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_hack_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_hack_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical-damage-2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_hack_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage-ability-2"><span class="input-label" data-i18n="damage ability 2">damage ability 2</span>
<select name="attr_damage_ability_2" title="@{repeating_hack_$X_damage_ability_2}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_hack_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_hack_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_hack_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_hack_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_hack_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button>
<input class="hack-type" type="hidden" name="attr_hack_type" value="injection"/><span class="name" name="attr_name" value=""></span><span class="hack-type" name="attr_hack_type" value=""></span>
</div>
</div>
</fieldset>
<div class="pseudo-control">
<button class="repcontrol_add" type="action" name="act_add_2nd_hack"></button>
</div>
</div>
</div>
</div>
<div>
<div class="hack-master-container">
<div class="hack-header pentagon-hexagon-label-container">
<div class="true-hexagon polygon">
<input type="number" title="@{3rd_level_slots}" name="attr_3rd_level_slots" value=""/>
</div><span class="current label" data-i18n="current"></span>
<div class="true-pentagon polygon">
<input type="number" title="@{3rd_level_slots|max}" name="attr_3rd_level_slots_max" value=""/>
</div><span class="max label" data-i18n="max"></span>
</div>
<div class="bordered-container 3rd-level hack-container">
<h4 data-i18n="3rd level">3rd level
</h4>
<fieldset class="repeating_hack">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<input class="level-display" type="hidden" name="attr_level" value=""/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_hack_$X_name}" value=""/>
</div>
<div class="input-label-container level"><span class="input-label" data-i18n="level">level</span>
<input type="number" name="attr_level" title="@{repeating_hack_$X_level}" value=""/>
</div>
<div class="input-label-container launch-time"><span class="input-label" data-i18n="launch time">launch time</span>
<input type="text" name="attr_launch_time" title="@{repeating_hack_$X_launch_time}" value=""/>
</div>
<div class="input-label-container duration"><span class="input-label" data-i18n="duration">duration</span>
<input type="text" name="attr_duration" title="@{repeating_hack_$X_duration}" value=""/>
</div>
<div class="input-label-container hack-type"><span class="input-label" data-i18n="hack type">hack type</span>
<select name="attr_hack_type" title="@{repeating_hack_$X_hack_type}">
<option value="injection" data-i18n="injection">injection
</option>
<option value="gadget" data-i18n="gadget">gadget
</option>
<option value="craft tech" data-i18n="craft tech">craft tech
</option>
<option value="craft explosive" data-i18n="craft explosive">craft explosive
</option>
<option value="bot" data-i18n="bot">bot
</option>
<option value="mind" data-i18n="mind">mind
</option>
<option value="software" data-i18n="software">software
</option>
</select>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_hack_$X_source}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_hack_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack-ability"><span class="input-label" data-i18n="attack ability">attack ability</span>
<select name="attr_attack_ability" title="@{repeating_hack_$X_attack_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container attack-bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_hack_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="@{save_macro}" title="@{repeating_hack_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save ability">save ability</span>
<select name="attr_save_ability" title="@{repeating_hack_$X_save_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_hack_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_hack_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_hack_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_hack_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical-damage-1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_hack_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage-ability-1"><span class="input-label" data-i18n="damage ability 1">damage ability 1</span>
<select name="attr_damage_ability_1" title="@{repeating_hack_$X_damage_ability_1}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_hack_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_hack_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_hack_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical-damage-2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_hack_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage-ability-2"><span class="input-label" data-i18n="damage ability 2">damage ability 2</span>
<select name="attr_damage_ability_2" title="@{repeating_hack_$X_damage_ability_2}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_hack_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_hack_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_hack_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_hack_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_hack_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button>
<input class="hack-type" type="hidden" name="attr_hack_type" value="injection"/><span class="name" name="attr_name" value=""></span><span class="hack-type" name="attr_hack_type" value=""></span>
</div>
</div>
</fieldset>
<div class="pseudo-control">
<button class="repcontrol_add" type="action" name="act_add_3rd_hack"></button>
</div>
</div>
</div>
<div class="hack-master-container">
<div class="hack-header pentagon-hexagon-label-container">
<div class="true-hexagon polygon">
<input type="number" title="@{4th_level_slots}" name="attr_4th_level_slots" value=""/>
</div><span class="current label" data-i18n="current"></span>
<div class="true-pentagon polygon">
<input type="number" title="@{4th_level_slots|max}" name="attr_4th_level_slots_max" value=""/>
</div><span class="max label" data-i18n="max"></span>
</div>
<div class="bordered-container 4th-level hack-container">
<h4 data-i18n="4th level">4th level
</h4>
<fieldset class="repeating_hack">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<input class="level-display" type="hidden" name="attr_level" value=""/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_hack_$X_name}" value=""/>
</div>
<div class="input-label-container level"><span class="input-label" data-i18n="level">level</span>
<input type="number" name="attr_level" title="@{repeating_hack_$X_level}" value=""/>
</div>
<div class="input-label-container launch-time"><span class="input-label" data-i18n="launch time">launch time</span>
<input type="text" name="attr_launch_time" title="@{repeating_hack_$X_launch_time}" value=""/>
</div>
<div class="input-label-container duration"><span class="input-label" data-i18n="duration">duration</span>
<input type="text" name="attr_duration" title="@{repeating_hack_$X_duration}" value=""/>
</div>
<div class="input-label-container hack-type"><span class="input-label" data-i18n="hack type">hack type</span>
<select name="attr_hack_type" title="@{repeating_hack_$X_hack_type}">
<option value="injection" data-i18n="injection">injection
</option>
<option value="gadget" data-i18n="gadget">gadget
</option>
<option value="craft tech" data-i18n="craft tech">craft tech
</option>
<option value="craft explosive" data-i18n="craft explosive">craft explosive
</option>
<option value="bot" data-i18n="bot">bot
</option>
<option value="mind" data-i18n="mind">mind
</option>
<option value="software" data-i18n="software">software
</option>
</select>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_hack_$X_source}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_hack_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack-ability"><span class="input-label" data-i18n="attack ability">attack ability</span>
<select name="attr_attack_ability" title="@{repeating_hack_$X_attack_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container attack-bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_hack_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="@{save_macro}" title="@{repeating_hack_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save ability">save ability</span>
<select name="attr_save_ability" title="@{repeating_hack_$X_save_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_hack_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_hack_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_hack_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_hack_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical-damage-1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_hack_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage-ability-1"><span class="input-label" data-i18n="damage ability 1">damage ability 1</span>
<select name="attr_damage_ability_1" title="@{repeating_hack_$X_damage_ability_1}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_hack_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_hack_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_hack_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical-damage-2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_hack_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage-ability-2"><span class="input-label" data-i18n="damage ability 2">damage ability 2</span>
<select name="attr_damage_ability_2" title="@{repeating_hack_$X_damage_ability_2}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_hack_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_hack_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_hack_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_hack_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_hack_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button>
<input class="hack-type" type="hidden" name="attr_hack_type" value="injection"/><span class="name" name="attr_name" value=""></span><span class="hack-type" name="attr_hack_type" value=""></span>
</div>
</div>
</fieldset>
<div class="pseudo-control">
<button class="repcontrol_add" type="action" name="act_add_4th_hack"></button>
</div>
</div>
</div>
</div>
<div>
<div class="hack-master-container">
<div class="hack-header pentagon-hexagon-label-container">
<div class="true-hexagon polygon">
<input type="number" title="@{5th_level_slots}" name="attr_5th_level_slots" value=""/>
</div><span class="current label" data-i18n="current"></span>
<div class="true-pentagon polygon">
<input type="number" title="@{5th_level_slots|max}" name="attr_5th_level_slots_max" value=""/>
</div><span class="max label" data-i18n="max"></span>
</div>
<div class="bordered-container 5th-level hack-container">
<h4 data-i18n="5th level">5th level
</h4>
<fieldset class="repeating_hack">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<input class="level-display" type="hidden" name="attr_level" value=""/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_hack_$X_name}" value=""/>
</div>
<div class="input-label-container level"><span class="input-label" data-i18n="level">level</span>
<input type="number" name="attr_level" title="@{repeating_hack_$X_level}" value=""/>
</div>
<div class="input-label-container launch-time"><span class="input-label" data-i18n="launch time">launch time</span>
<input type="text" name="attr_launch_time" title="@{repeating_hack_$X_launch_time}" value=""/>
</div>
<div class="input-label-container duration"><span class="input-label" data-i18n="duration">duration</span>
<input type="text" name="attr_duration" title="@{repeating_hack_$X_duration}" value=""/>
</div>
<div class="input-label-container hack-type"><span class="input-label" data-i18n="hack type">hack type</span>
<select name="attr_hack_type" title="@{repeating_hack_$X_hack_type}">
<option value="injection" data-i18n="injection">injection
</option>
<option value="gadget" data-i18n="gadget">gadget
</option>
<option value="craft tech" data-i18n="craft tech">craft tech
</option>
<option value="craft explosive" data-i18n="craft explosive">craft explosive
</option>
<option value="bot" data-i18n="bot">bot
</option>
<option value="mind" data-i18n="mind">mind
</option>
<option value="software" data-i18n="software">software
</option>
</select>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_hack_$X_source}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_hack_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack-ability"><span class="input-label" data-i18n="attack ability">attack ability</span>
<select name="attr_attack_ability" title="@{repeating_hack_$X_attack_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container attack-bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_hack_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="@{save_macro}" title="@{repeating_hack_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save ability">save ability</span>
<select name="attr_save_ability" title="@{repeating_hack_$X_save_ability}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_hack_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_hack_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_hack_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_hack_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical-damage-1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_hack_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage-ability-1"><span class="input-label" data-i18n="damage ability 1">damage ability 1</span>
<select name="attr_damage_ability_1" title="@{repeating_hack_$X_damage_ability_1}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_hack_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_hack_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_hack_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical-damage-2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_hack_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage-ability-2"><span class="input-label" data-i18n="damage ability 2">damage ability 2</span>
<select name="attr_damage_ability_2" title="@{repeating_hack_$X_damage_ability_2}">
<option value="0" data-i18n="none" selected="true">none
</option>
<option value="@{strength_mod}" data-i18n="strength">strength
</option>
<option value="@{dexterity_mod}" data-i18n="dexterity">dexterity
</option>
<option value="@{constitution_mod}" data-i18n="constitution">constitution
</option>
<option value="@{intelligence_mod}" data-i18n="intelligence">intelligence
</option>
<option value="@{wisdom_mod}" data-i18n="wisdom">wisdom
</option>
<option value="@{charisma_mod}" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container damage-type-2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_hack_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_hack_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_hack_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_hack_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_hack_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button>
<input class="hack-type" type="hidden" name="attr_hack_type" value="injection"/><span class="name" name="attr_name" value=""></span><span class="hack-type" name="attr_hack_type" value=""></span>
</div>
</div>
</fieldset>
<div class="pseudo-control">
<button class="repcontrol_add" type="action" name="act_add_5th_hack"></button>
</div>
</div>
</div>
</div>
</div>
<div class="settings">
<div class="column">
<div class="bordered-container character-options">
<div>
<div class="gutter"></div>
<div class="input-label-container"><span class="input-label" data-i18n="carrying capacity modifier">carrying capacity modifier</span>
<input type="number" name="attr_carrying_capacity_modifier" title="@{carrying_capacity_modifier}" value="7"/>
</div>
<div class="input-label-container">
<div><span class="input-label" data-i18n="add initiative tiebreaker"></span>
<input type="checkbox" value="@{initiative}" checked="checked"/>
</div>
</div>
<div class="gutter"></div>
</div>
</div>
</div>
<div class="column">
<div class="bordered-container sheet-options">
<div>
<div class="gutter"></div>
<div class="grid-container">
<div class="bordered-checkbox pc-checkbox">
<input name="attr_character_type" value="pc" checked="true" type="radio"/><span data-i18n="pc"></span>
</div>
<div class="bordered-checkbox npc-checkbox">
<input name="attr_character_type" value="npc" type="radio"/><span data-i18n="npc"></span>
</div>
</div>
<div class="gutter"></div>
</div>
</div>
</div>
<div class="column">
<div class="bordered-container sheet-options">
<div>
<div class="gutter"></div>
<div class="input-label-container"><span class="input-label" data-i18n="whisper rolls to gm">whisper rolls to gm</span>
<select name="attr_whisper_state" title="@{whisper_state}">
<option value="" data-i18n="never" selected="true"></option>
<option value="/w gm" data-i18n="always"></option>
</select>
</div>
<div class="input-label-container">
<div><span class="input-label" data-i18n="show character name in templates"></span>
<input type="checkbox" name="attr_show_character_name" value="{{character_name=@{character_name}}} {{character_id=@{character_id}}}" checked="checked"/>
</div>
</div>
<div class="gutter"></div>
</div>
</div>
</div>
</div>
</div>
<div class="npc">
<div class="toggles">
<div class="toggle-row">
<div class="bordered-checkbox settings">
<input class="settings" type="radio" value="settings" name="attr_sheet_view"/><span class="settings pictos" contents="y">y</span>
<input class="npc" type="radio" value="in-play" name="attr_sheet_view"/><span class="settings pictos" contents="x">x</span>
</div>
<div class="bordered-checkbox whisper">
<input class="whisper" type="radio" value="/w gm" name="attr_whisper_state"/><span class="whisper pictos" contents="q">q</span>
<input class="public" type="radio" value=" " name="attr_whisper_state"/><span class="public pictos" contents="w">w</span>
</div>
<div class="bordered-checkbox advantage">
<input class="advantage" type="radio" value="2d20kh1" name="attr_advantage_state"/><span class="advantage" data-i18n="advantage"></span>
</div>
<div class="bordered-checkbox normal">
<input class="normal" type="radio" value="1d20" name="attr_advantage_state" checked="checked"/><span class="normal" data-i18n="normal"></span>
</div>
<div class="bordered-checkbox disadvantage">
<input class="disadvantage" type="radio" value="2d20kl1" name="attr_advantage_state"/><span class="disadvantage" data-i18n="disadvantage"></span>
</div>
<div class="bordered-checkbox query">
<input class="query" type="radio" value="?{Advantage|Normal,1d20|Advantage,2d20kh1|Disadvantage,2d20kl1}" name="attr_advantage_state"/><span class="query" data-i18n="query"></span>
</div>
</div>
<!-- End toggle-row-->
</div>
<!-- End toggles-->
<!-- npc importer-->
<div class="npc-info">
<div class="statblock">
<div class="statblock-section">
<input class="h2" type="text" name="attr_character_name"/>
</div>
<div class="settings">
<div class="import">
<div class="statblock-section">
<div class="grid-container">
<div class="bordered-checkbox import">
<input class="import-process" type="checkbox" value="import-process" name="attr_import"/><span class="import-process" data-i18n="import"></span>
</div>
<div class="bordered-checkbox import-cancel">
<input class="import-cancel" type="checkbox" value="cancel" name="attr_import_cancel"/><span class="import-cancel" data-i18n="cancel"></span>
</div>
</div>
</div>
<div class="statblock-section import-area">
<h4 class="import-confirm" data-i18n="confirm import, this will overwrite all data on the character"></h4>
<textarea name="attr_importer" placeholder="Enter the NPCs statblock here to automatically import" data-i18n-placeholder="Enter the NPCs statblock here to automatically import"></textarea>
</div>
</div>
<div class="statblock-section">
<div class="grid-container">
<div class="bordered-checkbox pc-checkbox">
<input name="attr_character_type" value="pc" type="radio"/><span data-i18n="pc"></span>
</div>
<div class="bordered-checkbox npc-checkbox">
<input name="attr_character_type" value="npc" type="radio"/><span data-i18n="npc"></span>
</div>
<div class="bordered-checkbox import">
<input class="import" type="checkbox" value="import" name="attr_import"/><span class="import" data-i18n="import"></span>
</div>
</div>
</div>
<div class="statblock-section">
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="size">size</span>
<input type="text" name="attr_size" title="@{size}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="genome">genome</span>
<input type="text" name="attr_genome" title="@{genome}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="modification">modification</span>
<input type="text" name="attr_modification" title="@{modification}" value=""/>
</div>
</div>
</div>
<div class="statblock-section">
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="ac">ac</span>
<input type="number" name="attr_ac" title="@{ac}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="damage reduction">damage reduction</span>
<input type="text" name="attr_damage_reduction" title="@{damage_reduction}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="hit points">hit points</span>
<input type="number" name="attr_hp" title="@{hp}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="hit dice">hit dice</span>
<input type="text" name="attr_hit_dice" title="@{hit_dice}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="speed">speed</span>
<input type="text" name="attr_speed" title="@{speed}" value=""/>
</div>
</div>
</div>
<div class="statblock-section">
<div class="ability-row">
<div class="input-label-container pseudo-number"><span class="input-label" data-i18n="strength">strength</span>
<input type="text" name="attr_strength" title="@{strength}" value="10"/>
</div>
<div class="input-label-container pseudo-number"><span class="input-label" data-i18n="dexterity">dexterity</span>
<input type="text" name="attr_dexterity" title="@{dexterity}" value="10"/>
</div>
<div class="input-label-container pseudo-number"><span class="input-label" data-i18n="constitution">constitution</span>
<input type="text" name="attr_constitution" title="@{constitution}" value="10"/>
</div>
<div class="input-label-container pseudo-number"><span class="input-label" data-i18n="intelligence">intelligence</span>
<input type="text" name="attr_intelligence" title="@{intelligence}" value="10"/>
</div>
<div class="input-label-container pseudo-number"><span class="input-label" data-i18n="wisdom">wisdom</span>
<input type="text" name="attr_wisdom" title="@{wisdom}" value="10"/>
</div>
<div class="input-label-container pseudo-number"><span class="input-label" data-i18n="charisma">charisma</span>
<input type="text" name="attr_charisma" title="@{charisma}" value="10"/>
</div>
<h4 class="save-header" data-i18n="saves"></h4>
<div class="input-label-container">
<input type="number" name="attr_strength_save_base" title="@{strength_save_base}" value=""/>
</div>
<div class="input-label-container">
<input type="number" name="attr_dexterity_save_base" title="@{dexterity_save_base}" value=""/>
</div>
<div class="input-label-container">
<input type="number" name="attr_constitution_save_base" title="@{constitution_save_base}" value=""/>
</div>
<div class="input-label-container">
<input type="number" name="attr_intelligence_save_base" title="@{intelligence_save_base}" value=""/>
</div>
<div class="input-label-container">
<input type="number" name="attr_wisdom_save_base" title="@{wisdom_save_base}" value=""/>
</div>
<div class="input-label-container">
<input type="number" name="attr_charisma_save_base" title="@{charisma_save_base}" value=""/>
</div>
</div>
</div>
<div class="statblock-section">
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="condition immunities">condition immunities</span>
<input type="text" name="attr_condition_immunities" title="@{condition_immunities}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="damage immunities">damage immunities</span>
<input type="text" name="attr_damage_immunities" title="@{damage_immunities}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="damage resistances">damage resistances</span>
<input type="text" name="attr_damage_resistances" title="@{damage_resistances}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="damage vulnerability">damage vulnerability</span>
<input type="text" name="attr_damage_vulnerability" title="@{damage_vulnerability}" value=""/>
</div>
</div>
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="athletics">athletics</span>
<input type="number" name="attr_athletics" title="@{athletics}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="acrobatics">acrobatics</span>
<input type="number" name="attr_acrobatics" title="@{acrobatics}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="drive">drive</span>
<input type="number" name="attr_drive" title="@{drive}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="sleight of hand">sleight of hand</span>
<input type="number" name="attr_sleight_of_hand" title="@{sleight_of_hand}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="stealth">stealth</span>
<input type="number" name="attr_stealth" title="@{stealth}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="bureaucracy">bureaucracy</span>
<input type="number" name="attr_bureaucracy" title="@{bureaucracy}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="computers">computers</span>
<input type="number" name="attr_computers" title="@{computers}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="investigation">investigation</span>
<input type="number" name="attr_investigation" title="@{investigation}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="life science">life science</span>
<input type="number" name="attr_life_science" title="@{life_science}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="mechanics">mechanics</span>
<input type="number" name="attr_mechanics" title="@{mechanics}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="physical science">physical science</span>
<input type="number" name="attr_physical_science" title="@{physical_science}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="social science">social science</span>
<input type="number" name="attr_social_science" title="@{social_science}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="streetwise">streetwise</span>
<input type="number" name="attr_streetwise" title="@{streetwise}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="insight">insight</span>
<input type="number" name="attr_insight" title="@{insight}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="perception">perception</span>
<input type="number" name="attr_perception" title="@{perception}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="survival">survival</span>
<input type="number" name="attr_survival" title="@{survival}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="deception">deception</span>
<input type="number" name="attr_deception" title="@{deception}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="intimidation">intimidation</span>
<input type="number" name="attr_intimidation" title="@{intimidation}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="performance">performance</span>
<input type="number" name="attr_performance" title="@{performance}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="persuasion">persuasion</span>
<input type="number" name="attr_persuasion" title="@{persuasion}" value=""/>
</div>
</div>
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="skill notes">skill notes</span>
<input type="text" name="attr_skill_notes" title="@{skill_notes}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="senses">senses</span>
<input type="text" name="attr_senses" title="@{senses}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="passive perception">passive perception</span>
<input type="number" name="attr_passive_perception" title="@{passive_perception}" value=""/>
</div>
</div>
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="languages">languages</span>
<input type="text" name="attr_languages" title="@{languages}" value=""/>
</div>
</div>
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="challenge">challenge</span>
<input type="text" name="attr_challenge" title="@{challenge}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="experience points">xp</span>
<input type="number" name="attr_experience_points" title="@{experience_points}" value=""/>
</div>
</div>
</div>
<div class="statblock-section">
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="hacker level">hacker level</span>
<input type="number" name="attr_hacker_level" title="@{hacker_level}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="hacking ability">hacking ability</span>
<select name="attr_hacking_ability" title="@{hacking_ability}">
<option value="none" data-i18n="none" selected="true"></option>
<option value="strength" data-i18n="strength"></option>
<option value="dexterity" data-i18n="dexterity"></option>
<option value="constitution" data-i18n="constitution"></option>
<option value="intelligence" data-i18n="intelligence"></option>
<option value="wisdom" data-i18n="wisdom"></option>
<option value="charisma" data-i18n="charisma"></option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="hack dc">hack dc</span>
<input type="number" name="attr_hack_dc" title="@{hack_dc}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="hack attack">hack attack</span>
<input type="number" name="attr_hack_attack" title="@{hack_attack}" value=""/>
</div>
</div>
<div class="row">
<div class="input-label-container"><span class="input-label" data-i18n="1st level slots">1st level slots</span>
<input type="number" name="attr_1st_level_slots" title="@{1st_level_slots}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="2nd level slots">2nd level slots</span>
<input type="number" name="attr_2nd_level_slots" title="@{2nd_level_slots}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="3rd level slots">3rd level slots</span>
<input type="number" name="attr_3rd_level_slots" title="@{3rd_level_slots}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="4th level slots">4th level slots</span>
<input type="number" name="attr_4th_level_slots" title="@{4th_level_slots}" value=""/>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="5th level slots">5th level slots</span>
<input type="number" name="attr_5th_level_slots" title="@{5th_level_slots}" value=""/>
</div>
</div>
<fieldset class="repeating_hack">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<input class="level-display" type="hidden" name="attr_level" value=""/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_hack_$X_name}" value=""/>
</div>
<div class="input-label-container level"><span class="input-label" data-i18n="level">level</span>
<input type="number" name="attr_level" title="@{repeating_hack_$X_level}" value=""/>
</div>
<div class="input-label-container launch-time"><span class="input-label" data-i18n="launch time">launch time</span>
<input type="text" name="attr_launch_time" title="@{repeating_hack_$X_launch_time}" value=""/>
</div>
<div class="input-label-container duration"><span class="input-label" data-i18n="duration">duration</span>
<input type="text" name="attr_duration" title="@{repeating_hack_$X_duration}" value=""/>
</div>
<div class="input-label-container hack-type"><span class="input-label" data-i18n="hack type">hack type</span>
<select name="attr_hack_type" title="@{repeating_hack_$X_hack_type}">
<option value="injection" data-i18n="injection">injection
</option>
<option value="gadget" data-i18n="gadget">gadget
</option>
<option value="craft tech" data-i18n="craft tech">craft tech
</option>
<option value="craft explosive" data-i18n="craft explosive">craft explosive
</option>
<option value="bot" data-i18n="bot">bot
</option>
<option value="mind" data-i18n="mind">mind
</option>
<option value="software" data-i18n="software">software
</option>
</select>
</div>
<div class="input-label-container source"><span class="input-label" data-i18n="source">source</span>
<input type="text" name="attr_source" title="@{repeating_hack_$X_source}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_hack_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack-bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_hack_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="@{save_macro}" title="@{repeating_hack_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_hack_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_hack_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_hack_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_hack_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical-damage-1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_hack_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage-type-1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_hack_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_hack_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage-2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_hack_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical-damage-2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_hack_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage-type-2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_hack_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_hack_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_hack_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_hack_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_hack_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button>
<input class="hack-type" type="hidden" name="attr_hack_type" value="injection"/><span class="name" name="attr_name" value=""></span><span class="hack-type" name="attr_hack_type" value=""></span>
</div>
</div>
</fieldset>
</div>
</div>
<div class="in-play">
<div class="statblock-section">
<div class="row"><span class="italics" name="attr_size"></span><span class="italics" name="attr_genome"></span>
<input class="parens-control" type="hidden" name="attr_modification"/><span class="italics parens">(</span><span class="italics" name="attr_modification"></span><span class="italics parens">)</span>
</div>
</div>
<div class="statblock-section">
<div class="row">
<h4 data-i18n="armor class"></h4><span name="attr_ac"></span>
<input class="parens-control" type="hidden" name="attr_ac_notes"/><span class="italics parens">(</span><span class="italics parens" name="attr_ac_notes"></span><span class="italics parens">)</span>
</div>
<div class="row">
<h4 data-i18n="damage reduction"></h4><span name="attr_damage_reduction"></span>
</div>
<div class="row">
<h4 data-i18n="hit points"></h4><span name="attr_hp"></span>
<input class="parens-control" type="hidden" name="attr_hit_dice"/><span class="italics parens">(</span><span class="italics parens" name="attr_hit_dice"></span><span class="italics parens">)</span>
</div>
<div class="row">
<h4 data-i18n="speed"></h4><span name="attr_speed"></span>
</div>
</div>
<div class="statblock-section">
<div class="row">
<div class="npc-ability-label">
<button class="h4" data-i18n="strength abbreviation" type="roll" name="roll_strength" value="@{template_start} {{rollName=^{str check}}} @{strength_check_macro}"></button><span class="score" name="attr_strength"></span>
<div class="paren-container">
<input class="parens-control" type="hidden" name="attr_strength" value="10"/><span class="parens">(</span>
<input class="plus-control hidden" type="number" name="attr_strength_mod" value="0" min="0"/><span class="mod plus-display" name="attr_strength_mod"></span><span class="parens">)</span>
</div>
<button class="h4 save-label" data-i18n="save" type="roll" name="roll_strength_save" value="@{template_start} {{rollName=^{str save}}} @{strength_save_macro}"></button>
<input class="plus-control hidden" type="number" name="attr_strength_mod" value="0" min="0"/><span class="save plus-display" name="attr_strength_save"></span>
</div>
<div class="npc-ability-label">
<button class="h4" data-i18n="dexterity abbreviation" type="roll" name="roll_dexterity" value="@{template_start} {{rollName=^{dex check}}} @{dexterity_check_macro}"></button><span class="score" name="attr_dexterity"></span>
<div class="paren-container">
<input class="parens-control" type="hidden" name="attr_dexterity" value="10"/><span class="parens">(</span>
<input class="plus-control hidden" type="number" name="attr_dexterity_mod" value="0" min="0"/><span class="mod plus-display" name="attr_dexterity_mod"></span><span class="parens">)</span>
</div>
<button class="h4 save-label" data-i18n="save" type="roll" name="roll_dexterity_save" value="@{template_start} {{rollName=^{dex save}}} @{dexterity_save_macro}"></button>
<input class="plus-control hidden" type="number" name="attr_dexterity_mod" value="0" min="0"/><span class="save plus-display" name="attr_dexterity_save"></span>
</div>
<div class="npc-ability-label">
<button class="h4" data-i18n="constitution abbreviation" type="roll" name="roll_constitution" value="@{template_start} {{rollName=^{con check}}} @{constitution_check_macro}"></button><span class="score" name="attr_constitution"></span>
<div class="paren-container">
<input class="parens-control" type="hidden" name="attr_constitution" value="10"/><span class="parens">(</span>
<input class="plus-control hidden" type="number" name="attr_constitution_mod" value="0" min="0"/><span class="mod plus-display" name="attr_constitution_mod"></span><span class="parens">)</span>
</div>
<button class="h4 save-label" data-i18n="save" type="roll" name="roll_constitution_save" value="@{template_start} {{rollName=^{con save}}} @{constitution_save_macro}"></button>
<input class="plus-control hidden" type="number" name="attr_constitution_mod" value="0" min="0"/><span class="save plus-display" name="attr_constitution_save"></span>
</div>
<div class="npc-ability-label">
<button class="h4" data-i18n="intelligence abbreviation" type="roll" name="roll_intelligence" value="@{template_start} {{rollName=^{int check}}} @{intelligence_check_macro}"></button><span class="score" name="attr_intelligence"></span>
<div class="paren-container">
<input class="parens-control" type="hidden" name="attr_intelligence" value="10"/><span class="parens">(</span>
<input class="plus-control hidden" type="number" name="attr_intelligence_mod" value="0" min="0"/><span class="mod plus-display" name="attr_intelligence_mod"></span><span class="parens">)</span>
</div>
<button class="h4 save-label" data-i18n="save" type="roll" name="roll_intelligence_save" value="@{template_start} {{rollName=^{int save}}} @{intelligence_save_macro}"></button>
<input class="plus-control hidden" type="number" name="attr_intelligence_mod" value="0" min="0"/><span class="save plus-display" name="attr_intelligence_save"></span>
</div>
<div class="npc-ability-label">
<button class="h4" data-i18n="wisdom abbreviation" type="roll" name="roll_wisdom" value="@{template_start} {{rollName=^{wis check}}} @{wisdom_check_macro}"></button><span class="score" name="attr_wisdom"></span>
<div class="paren-container">
<input class="parens-control" type="hidden" name="attr_wisdom" value="10"/><span class="parens">(</span>
<input class="plus-control hidden" type="number" name="attr_wisdom_mod" value="0" min="0"/><span class="mod plus-display" name="attr_wisdom_mod"></span><span class="parens">)</span>
</div>
<button class="h4 save-label" data-i18n="save" type="roll" name="roll_wisdom_save" value="@{template_start} {{rollName=^{wis save}}} @{wisdom_save_macro}"></button>
<input class="plus-control hidden" type="number" name="attr_wisdom_mod" value="0" min="0"/><span class="save plus-display" name="attr_wisdom_save"></span>
</div>
<div class="npc-ability-label">
<button class="h4" data-i18n="charisma abbreviation" type="roll" name="roll_charisma" value="@{template_start} {{rollName=^{cha check}}} @{charisma_check_macro}"></button><span class="score" name="attr_charisma"></span>
<div class="paren-container">
<input class="parens-control" type="hidden" name="attr_charisma" value="10"/><span class="parens">(</span>
<input class="plus-control hidden" type="number" name="attr_charisma_mod" value="0" min="0"/><span class="mod plus-display" name="attr_charisma_mod"></span><span class="parens">)</span>
</div>
<button class="h4 save-label" data-i18n="save" type="roll" name="roll_charisma_save" value="@{template_start} {{rollName=^{cha save}}} @{charisma_save_macro}"></button>
<input class="plus-control hidden" type="number" name="attr_charisma_mod" value="0" min="0"/><span class="save plus-display" name="attr_charisma_save"></span>
</div>
</div>
</div>
<div class="statblock-section">
<div class="row">
<h4 data-i18n="skills"></h4>
<input class="skill-control" type="hidden" name="attr_athletics"/>
<div class="skill-display" title="@{athletics}">
<button class="h4" type="roll" name="roll_athletics" data-i18n="athletics" value="@{template_start} {{rollName=^{athletics}}} @{athletics_macro}"></button><span name="attr_athletics"></span>
</div>
<input class="skill-control" type="hidden" name="attr_acrobatics"/>
<div class="skill-display" title="@{acrobatics}">
<button class="h4" type="roll" name="roll_acrobatics" data-i18n="acrobatics" value="@{template_start} {{rollName=^{acrobatics}}} @{acrobatics_macro}"></button><span name="attr_acrobatics"></span>
</div>
<input class="skill-control" type="hidden" name="attr_drive"/>
<div class="skill-display" title="@{drive}">
<button class="h4" type="roll" name="roll_drive" data-i18n="drive" value="@{template_start} {{rollName=^{drive}}} @{drive_macro}"></button><span name="attr_drive"></span>
</div>
<input class="skill-control" type="hidden" name="attr_sleight_of_hand"/>
<div class="skill-display" title="@{sleight_of_hand}">
<button class="h4" type="roll" name="roll_sleight_of_hand" data-i18n="sleight of hand" value="@{template_start} {{rollName=^{sleight of hand}}} @{sleight_of_hand_macro}"></button><span name="attr_sleight_of_hand"></span>
</div>
<input class="skill-control" type="hidden" name="attr_stealth"/>
<div class="skill-display" title="@{stealth}">
<button class="h4" type="roll" name="roll_stealth" data-i18n="stealth" value="@{template_start} {{rollName=^{stealth}}} @{stealth_macro}"></button><span name="attr_stealth"></span>
</div>
<input class="skill-control" type="hidden" name="attr_bureaucracy"/>
<div class="skill-display" title="@{bureaucracy}">
<button class="h4" type="roll" name="roll_bureaucracy" data-i18n="bureaucracy" value="@{template_start} {{rollName=^{bureaucracy}}} @{bureaucracy_macro}"></button><span name="attr_bureaucracy"></span>
</div>
<input class="skill-control" type="hidden" name="attr_computers"/>
<div class="skill-display" title="@{computers}">
<button class="h4" type="roll" name="roll_computers" data-i18n="computers" value="@{template_start} {{rollName=^{computers}}} @{computers_macro}"></button><span name="attr_computers"></span>
</div>
<input class="skill-control" type="hidden" name="attr_investigation"/>
<div class="skill-display" title="@{investigation}">
<button class="h4" type="roll" name="roll_investigation" data-i18n="investigation" value="@{template_start} {{rollName=^{investigation}}} @{investigation_macro}"></button><span name="attr_investigation"></span>
</div>
<input class="skill-control" type="hidden" name="attr_life_science"/>
<div class="skill-display" title="@{life_science}">
<button class="h4" type="roll" name="roll_life_science" data-i18n="life science" value="@{template_start} {{rollName=^{life science}}} @{life_science_macro}"></button><span name="attr_life_science"></span>
</div>
<input class="skill-control" type="hidden" name="attr_mechanics"/>
<div class="skill-display" title="@{mechanics}">
<button class="h4" type="roll" name="roll_mechanics" data-i18n="mechanics" value="@{template_start} {{rollName=^{mechanics}}} @{mechanics_macro}"></button><span name="attr_mechanics"></span>
</div>
<input class="skill-control" type="hidden" name="attr_physical_science"/>
<div class="skill-display" title="@{physical_science}">
<button class="h4" type="roll" name="roll_physical_science" data-i18n="physical science" value="@{template_start} {{rollName=^{physical science}}} @{physical_science_macro}"></button><span name="attr_physical_science"></span>
</div>
<input class="skill-control" type="hidden" name="attr_social_science"/>
<div class="skill-display" title="@{social_science}">
<button class="h4" type="roll" name="roll_social_science" data-i18n="social science" value="@{template_start} {{rollName=^{social science}}} @{social_science_macro}"></button><span name="attr_social_science"></span>
</div>
<input class="skill-control" type="hidden" name="attr_streetwise"/>
<div class="skill-display" title="@{streetwise}">
<button class="h4" type="roll" name="roll_streetwise" data-i18n="streetwise" value="@{template_start} {{rollName=^{streetwise}}} @{streetwise_macro}"></button><span name="attr_streetwise"></span>
</div>
<input class="skill-control" type="hidden" name="attr_insight"/>
<div class="skill-display" title="@{insight}">
<button class="h4" type="roll" name="roll_insight" data-i18n="insight" value="@{template_start} {{rollName=^{insight}}} @{insight_macro}"></button><span name="attr_insight"></span>
</div>
<input class="skill-control" type="hidden" name="attr_perception"/>
<div class="skill-display" title="@{perception}">
<button class="h4" type="roll" name="roll_perception" data-i18n="perception" value="@{template_start} {{rollName=^{perception}}} @{perception_macro}"></button><span name="attr_perception"></span>
</div>
<input class="skill-control" type="hidden" name="attr_survival"/>
<div class="skill-display" title="@{survival}">
<button class="h4" type="roll" name="roll_survival" data-i18n="survival" value="@{template_start} {{rollName=^{survival}}} @{survival_macro}"></button><span name="attr_survival"></span>
</div>
<input class="skill-control" type="hidden" name="attr_deception"/>
<div class="skill-display" title="@{deception}">
<button class="h4" type="roll" name="roll_deception" data-i18n="deception" value="@{template_start} {{rollName=^{deception}}} @{deception_macro}"></button><span name="attr_deception"></span>
</div>
<input class="skill-control" type="hidden" name="attr_intimidation"/>
<div class="skill-display" title="@{intimidation}">
<button class="h4" type="roll" name="roll_intimidation" data-i18n="intimidation" value="@{template_start} {{rollName=^{intimidation}}} @{intimidation_macro}"></button><span name="attr_intimidation"></span>
</div>
<input class="skill-control" type="hidden" name="attr_performance"/>
<div class="skill-display" title="@{performance}">
<button class="h4" type="roll" name="roll_performance" data-i18n="performance" value="@{template_start} {{rollName=^{performance}}} @{performance_macro}"></button><span name="attr_performance"></span>
</div>
<input class="skill-control" type="hidden" name="attr_persuasion"/>
<div class="skill-display" title="@{persuasion}">
<button class="h4" type="roll" name="roll_persuasion" data-i18n="persuasion" value="@{template_start} {{rollName=^{persuasion}}} @{persuasion_macro}"></button><span name="attr_persuasion"></span>
</div>
</div>
<div class="row">
<h4 data-i18n="skill notes"></h4><span name="attr_skill_notes" title="@{skill_notes}"></span>
</div>
<div class="row">
<h4 data-i18n="senses"></h4><span name="attr_senses" title="@{senses}"></span>
<h4 data-i18n="passive perception"></h4><span name="attr_passive_perception" title="@{passive_perception}"></span>
</div>
<div class="row">
<h4 data-i18n="languages"></h4><span name="attr_languages" title="@{languages}"></span>
</div>
<div class="row">
<h4 data-i18n="challenge"></h4><span name="attr_challenge"></span><span class="parens">(</span><span name="attr_experience_points"></span><span data-i18n="xp"></span><span class="parens">)</span>
</div>
</div>
<input class="hack-display-control level1" type="hidden" name="attr_1st_level_slots" value=""/>
<input class="hack-display-control level2" type="hidden" name="attr_2nd_level_slots" value=""/>
<input class="hack-display-control level3" type="hidden" name="attr_3rd_level_slots" value=""/>
<input class="hack-display-control level4" type="hidden" name="attr_4th_level_slots" value=""/>
<input class="hack-display-control level5" type="hidden" name="attr_5th_level_slots" value=""/>
<div class="statblock-section hack-display">
<div class="level1">
<h4 data-i18n="1st level"></h4><span>(</span><span name="attr_1st_level_slots"></span><span>):</span>
<fieldset class="repeating_hack">
<input class="button-control" type="hidden" name="attr_level" value=""/>
<button class="h4" type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_enable_item} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"><span name="attr_name"></span></button>
</fieldset>
</div>
<div class="level2">
<h4 data-i18n="2nd level"></h4><span>(</span><span name="attr_2nd_level_slots"></span><span>):</span>
<fieldset class="repeating_hack">
<input class="button-control" type="hidden" name="attr_level" value=""/>
<button class="h4" type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_enable_item} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"><span name="attr_name"></span></button>
</fieldset>
</div>
<div class="level3">
<h4 data-i18n="3rd level"></h4><span>(</span><span name="attr_3rd_level_slots"></span><span>):</span>
<fieldset class="repeating_hack">
<input class="button-control" type="hidden" name="attr_level" value=""/>
<button class="h4" type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_enable_item} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"><span name="attr_name"></span></button>
</fieldset>
</div>
<div class="level4">
<h4 data-i18n="4th level"></h4><span>(</span><span name="attr_4th_level_slots"></span><span>):</span>
<fieldset class="repeating_hack">
<input class="button-control" type="hidden" name="attr_level" value=""/>
<button class="h4" type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_enable_item} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"><span name="attr_name"></span></button>
</fieldset>
</div>
<div class="level5">
<h4 data-i18n="5th level"></h4><span>(</span><span name="attr_5th_level_slots"></span><span>):</span>
<fieldset class="repeating_hack">
<input class="button-control" type="hidden" name="attr_level" value=""/>
<button class="h4" type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_enable_item} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"><span name="attr_name"></span></button>
</fieldset>
</div>
</div>
</div>
</div>
<div class="repeating-container">
<div class="bordered-container trait-container">
<h4 data-i18n="features & traits">features & traits
</h4>
<fieldset class="repeating_trait">
<input type="hidden" name="attr_macro" value="{{source=@{source}}}"/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_trait_$X_name}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_trait_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_action_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_details" value="@{template_start} {{rollName=@{name}}} @{macro} {{description=@{description}}}"><span name="attr_name" value=""></span>
</button><span class="description" name="attr_description" value=""></span>
</div>
</div>
</fieldset>
</div>
<div class="bordered-container action-container">
<h4 data-i18n="actions">actions
</h4>
<h5 class="name" data-i18n="name">name
</h5>
<h5 class="mod" data-i18n="mod">mod
</h5>
<h5 class="damage" data-i18n="damage">damage
</h5>
<!--repeating actions-->
<fieldset class="repeating_action">
<input type="hidden" name="attr_attack_macro" value=""/>
<input type="hidden" name="attr_save_macro" value="{{dc=[[8 + @{save_ability} + @{action_proficiency} + 0@{dc_bonus}]]}}"/>
<input type="hidden" name="attr_damage_1_macro" value="{{damage_1=[[0@{damage_1} + @{damage_ability_1}]]}} {{regular_critical_1=[[0@{damage_1}]]}} {{is_custom_crit_1=@{critical_damage_1}}} {{custom_critical_1=[[0@{critical_damage_1}]]}}"/>
<input type="hidden" name="attr_damage_2_macro" value="{{damage_2=[[0@{damage_2} + @{damage_ability_2}]]}} {{regular_critical_2=[[0@{damage_2}]]}} {{is_custom_crit_2=@{critical_damage_2}}} {{custom_critical_2=[[0@{critical_damage_2}]]}}"/>
<div class="expandable-section">
<input class="expand-control" type="hidden" name="attr_expand_item" value="1"/>
<label class="expand-button">
<input type="checkbox" name="attr_expand_item" value="1" checked="true"/><span class="expand-state pictos">4</span>
</label>
<div class="expanded-view">
<div class="input-label-container name"><span class="input-label" data-i18n="name">name</span>
<input type="text" name="attr_name" title="@{repeating_action_$X_name}" value=""/>
</div>
<div class="enable-holder">
<input class="enable-controller" type="hidden" name="attr_attack_enable_item" value="0"/>
<div class="enable-section attack">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_attack_enable_item" value="1" title="@{repeating_action_$X_attack_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="attack">attack</span>
</label>
<div class="enabled-section">
<div class="input-label-container attack bonus"><span class="input-label" data-i18n="attack bonus">attack bonus</span>
<input type="text" name="attr_attack_bonus" title="@{repeating_action_$X_attack_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_save_enable_item" value="0"/>
<div class="enable-section save">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_save_enable_item" value="{{save_type=^{@{save_type}}}} @{save_macro}" title="@{repeating_action_$X_save_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="save">save</span>
</label>
<div class="enabled-section">
<div class="input-label-container"><span class="input-label" data-i18n="save type">save type</span>
<select name="attr_save_type" title="@{repeating_action_$X_save_type}">
<option value="none" data-i18n="none">none
</option>
<option value="strength" data-i18n="strength">strength
</option>
<option value="dexterity" data-i18n="dexterity">dexterity
</option>
<option value="constitution" data-i18n="constitution">constitution
</option>
<option value="intelligence" data-i18n="intelligence">intelligence
</option>
<option value="wisdom" data-i18n="wisdom">wisdom
</option>
<option value="charisma" data-i18n="charisma">charisma
</option>
</select>
</div>
<div class="input-label-container"><span class="input-label" data-i18n="dc bonus">dc bonus</span>
<input type="text" name="attr_dc_bonus" title="@{repeating_action_$X_dc_bonus}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_1_enable_item" value="0"/>
<div class="enable-section damage 1">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_1_enable_item" value="{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}" title="@{repeating_action_$X_damage_1_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 1">damage 1</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage 1"><span class="input-label" data-i18n="damage 1">damage 1</span>
<input type="text" name="attr_damage_1" title="@{repeating_action_$X_damage_1}" value=""/>
</div>
<div class="input-label-container critical damage 1"><span class="input-label" data-i18n="critical damage 1">critical damage 1</span>
<input type="text" name="attr_critical_damage_1" title="@{repeating_action_$X_critical_damage_1}" value=""/>
</div>
<div class="input-label-container damage type 1"><span class="input-label" data-i18n="damage type 1">damage type 1</span>
<input type="text" name="attr_damage_type_1" title="@{repeating_action_$X_damage_type_1}" value=""/>
</div>
</div>
</div>
<input class="enable-controller" type="hidden" name="attr_damage_2_enable_item" value="0"/>
<div class="enable-section damage 2">
<label class="hexagon-check-label">
<div class="checkbox-container">
<input type="checkbox" name="attr_damage_2_enable_item" value="{{damage_type_2=@{damage_type_2}}} @{damage_2_macro}" title="@{repeating_action_$X_damage_2_enable_item}"/><span class="hexagon"></span>
</div><span data-i18n="damage 2">damage 2</span>
</label>
<div class="enabled-section">
<div class="input-label-container damage 2"><span class="input-label" data-i18n="damage 2">damage 2</span>
<input type="text" name="attr_damage_2" title="@{repeating_action_$X_damage_2}" value=""/>
</div>
<div class="input-label-container critical damage 2"><span class="input-label" data-i18n="critical damage 2">critical damage 2</span>
<input type="text" name="attr_critical_damage_2" title="@{repeating_action_$X_critical_damage_2}" value=""/>
</div>
<div class="input-label-container damage type 2"><span class="input-label" data-i18n="damage type 2">damage type 2</span>
<input type="text" name="attr_damage_type_2" title="@{repeating_action_$X_damage_type_2}" value=""/>
</div>
</div>
</div>
</div>
<div class="input-label-container range"><span class="input-label" data-i18n="range">range</span>
<input type="text" name="attr_range" title="@{repeating_action_$X_range}" value=""/>
</div>
<div class="input-label-container properties"><span class="input-label" data-i18n="properties">properties</span>
<input type="text" name="attr_properties" title="@{repeating_action_$X_properties}" value=""/>
</div>
<div class="input-label-container description"><span class="input-label" data-i18n="description">description</span>
<textarea name="attr_description" title="@{repeating_action_$X_description}" value=""></textarea>
</div>
<input class="id" type="text" name="attr_id" title="@{repeating_action_$X_id}" readonly="readonly"/>
</div>
<div class="collapsed-view">
<button type="roll" name="roll_roll" value="@{template_start} {{rollName=@{name}}} @{attack_macro} @{save_enable_item} @{damage_1_enable_item} @{damage_2_enable_item} {{range=@{range}}} {{properties=@{properties}}} {{description=@{description}}}"></button><span name="attr_name" value=""></span><span name="attr_bonus" value=""></span><span name="attr_damage_1" value=""></span>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!-- Roll templates-->
<rolltemplate class="sheet-rolltemplate-general">
<div class="roll-display {{#d20}}1{{/d20}}{{#damage_1}}2{{/damage_1}}{{#damage_2}}3{{/damage_2}}{{#dc}}4{{/dc}}">{{#character_name}}
<div class="bordered-container character_name">
<h4>{{#character_id}}[{{character_name}}](http://journal.roll20.net/character/{{character_id}}){{/character_id}}{{^character_id}}{{character_name}}{{/character_id}}
</h4>
</div>{{/character_name}}{{#d20}}
<div class="true-hexagon polygon rollValue"><span>{{d20}}</span>{{#rollName}}<span>{{rollName}}</span>{{/rollName}}{{^rollName}}<span data-i18n="roll"></span>{{/rollName}}
</div>{{/d20}}{{#damage_1}}
<div class="true-hexagon polygon damage1"><span>{{damage_1}}</span>{{#rollWasCrit() d20}}{{#is_custom_crit_1}}<span>{{custom_critical_1}}</span>{{/is_custom_crit_1}}{{^is_custom_crit_1}}<span>{{regular_critical_1}}</span>{{/is_custom_crit_1}}{{/rollWasCrit() d20}}{{#damage_type_1}}<span>{{damage_type_1}}</span>{{/damage_type_1}}{{^damage_type_1}}<span data-i18n="damage 1"></span>{{/damage_type_1}}
</div>{{/damage_1}}{{#damage_2}}
<div class="true-hexagon polygon damage2"><span>{{damage_2}}</span>{{#rollWasCrit() d20}}{{#is_custom_crit_2}}<span>{{custom_critical_2}}</span>{{/is_custom_crit_2}}{{^is_custom_crit_2}}<span>{{regular_critical_2}}</span>{{/is_custom_crit_2}}{{/rollWasCrit() d20}}{{#damage_type_2}}<span>{{damage_type_2}}</span>{{/damage_type_2}}{{^damage_type_2}}<span data-i18n="damage 2"></span>{{/damage_type_2}}
</div>{{/damage_2}}{{#dc}}
<div class="true-hexagon polygon save"><span>{{dc}}</span>{{#save_type}}<span>{{save_type}}</span>{{/save_type}}{{^save_type}}<span data-i18n="save"></span>{{/save_type}}
</div>{{/dc}}{{#range}}
<div class="bordered-container range"><span>{{range}}</span>
</div>{{/range}}{{#properties}}
<div class="bordered-container properties"><span>{{properties}}</span>
</div>{{/properties}}{{#description}}
<div class="bordered-container description"><span>{{description}}</span>
</div>{{/description}}
</div>
</rolltemplate>
<!-- End Roll Templates-->
<!-- Start Scripts-->
<script type="text/worker">var genefunk2090 = genefunk2090 || (function() {
const version = 1.20;
const displayControllers = ['sheet_view','advantage_state','character_type','whisper_state'],
importControls = ['import','import_cancel'],
abilityScores = {str:'strength',dex:'dexterity',con:'constitution',int:'intelligence',wis:'wisdom',cha:'charisma'},
skillNames = ['athletics','acrobatics','drive','sleight_of_hand','stealth','bureaucracy','computers','investigation','life_science','mechanics','physical_science','social_science','streetwise','insight','perception','survival','deception','intimidation','performance','persuasion'],
skillList = {athletics:'strength',acrobatics:'dexterity',drive:'dexterity',sleight_of_hand:'dexterity',stealth:'dexterity',bureaucracy:'intelligence',computers:'intelligence',investigation:'intelligence',life_science:'intelligence',mechanics:'intelligence',physical_science:'intelligence',social_science:'intelligence',streetwise:'intelligence',insight:'wisdom',perception:'wisdom',survival:'wisdom',deception:'charisma',intimidation:'charisma',performance:'charisma',persuasion:'charisma'},
hackLevels = ['1st','2nd','3rd','4th','5th'],
repeating_section_details = [
{
section:'repeating_equipment',
fields:['name','quantity','weight','cost','mods','description','id']
},
{
section:'repeating_hack',
fields:['name','level','launch_time','duration','hack_type','source','action_proficiency','attack_enable_item','save_enable_item','damage_1_enable_item','damage_2_enable_item','attack_ability','attack_bonus','save_ability','save_type','dc_bonus','damage_1','critical_damage_1','damage_ability_1','damage_type_1','damage_2','critical_damage_2','damage_ability_2','damage_type_2','range','properties','description','id']
},
{
section:'repeating_action',
fields:['name','action_proficiency','attack_enable_item','save_enable_item','damage_1_enable_item','damage_2_enable_item','attack_ability','attack_bonus','save_ability','save_type','dc_bonus','damage_1','critical_damage_1','damage_ability_1','damage_type_1','damage_2','critical_damage_2','damage_ability_2','damage_type_2','range','properties','description','id']
},
{
section:'repeating_trait',
fields:['name','source','mods','description','id']
}
],
cascades = {
pc:{
class_level:{
name:'class_level',
defaultValue:'',
type:'text',
affects:['level']
},
level:{
name:'level',
defaultValue:'',
type:'number',
calculation:'custom',
affects:['proficiency']
},
proficiency:{
name:'proficiency',
defaultValue:'',
type:'number',
calculation:'2+floor((@{level}-1)/4)',
affects:['variable']
},
ac_formula:{
name:'ac_formula',
defaultValue:'10+@{dexterity_mod}',
type:'text',
calculation:'custom',
affects:['ac']
},
ac:{
name:'ac',
defaultValue:'10',
type:'number',
calculation:'@{ac_formula}',
affects:[]
},
base_strength:{
name:'base_strength',
defaultValue:10,
type:'number',
affects:['strength']
},
base_dexterity:{
name:'base_dexterity',
defaultValue:10,
type:'number',
affects:['dexterity']
},
base_constitution:{
name:'base_constitution',
defaultValue:10,
type:'number',
affects:['constitution']
},
base_intelligence:{
name:'base_intelligence',
defaultValue:10,
type:'number',
affects:['intelligence']
},
base_wisdom:{
name:'base_wisdom',
defaultValue:10,
type:'number',
affects:['wisdom']
},
base_charisma:{
name:'base_charisma',
defaultValue:10,
type:'number',
affects:['charisma']
},
strength:{
name:'strength',
defaultValue:10,
type:'number',
calculation:'@{base_strength} @{strength_modded}',
affects:['strength_mod']
},
dexterity:{
name:'dexterity',
defaultValue:10,
type:'number',
calculation:'@{base_dexterity} @{dexterity_modded}',
affects:['dexterity_mod']
},
constitution:{
name:'constitution',
defaultValue:10,
type:'number',
calculation:'@{base_constitution} @{constitution_modded}',
affects:['constitution_mod']
},
intelligence:{
name:'intelligence',
defaultValue:10,
type:'number',
calculation:'@{base_intelligence} @{intelligence_modded}',
affects:['intelligence_mod']
},
wisdom:{
name:'wisdom',
defaultValue:10,
type:'number',
calculation:'@{base_wisdom} @{wisdom_modded}',
affects:['wisdom_mod']
},
charisma:{
name:'charisma',
defaultValue:10,
type:'number',
calculation:'@{base_charisma} @{charisma_modded}',
affects:['charisma_mod']
},
strength_mod:{
name:'strength_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{strength}-10)/2)',
affects:['athletics','strength_save','variable']
},
strength_save_proficiency:{
name:'strength_save_proficiency',
defaultValue:0,
type:'text',
affects:['strength_save']
},
strength_save:{
name:'strength_save',
defaultValue:0,
type:'number',
calculation:'@{strength_mod} + @{strength_save_proficiency}@{strength_save_modded}',
affects:[]
},
dexterity_mod:{
name:'dexterity_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{dexterity}-10)/2)',
affects:['acrobatics','drive','sleight_of_hand','stealth','dexterity_save','initiative','variable']
},
dexterity_save_proficiency:{
name:'dexterity_save_proficiency',
defaultValue:0,
type:'text',
affects:['dexterity_save']
},
dexterity_save:{
name:'dexterity_save',
defaultValue:0,
type:'number',
calculation:'@{dexterity_mod} + @{dexterity_save_proficiency}@{dexterity_save_modded}',
affects:[]
},
constitution_mod:{
name:'constitution_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{constitution}-10)/2)',
affects:['constitution_save','variable']
},
constitution_save_proficiency:{
name:'constitution_save_proficiency',
defaultValue:0,
type:'text',
affects:['constitution_save']
},
constitution_save:{
name:'constitution_save',
defaultValue:0,
type:'number',
calculation:'@{constitution_mod} + @{constitution_save_proficiency}@{constitution_save_modded}',
affects:[]
},
intelligence_mod:{
name:'intelligence_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{intelligence}-10)/2)',
affects:['bureaucracy','computers','investigation','life_science','mechanics','physical_science','social_science','streetwise','intelligence_save','variable']
},
intelligence_save_proficiency:{
name:'intelligence_save_proficiency',
defaultValue:0,
type:'text',
affects:['intelligence_save']
},
intelligence_save:{
name:'intelligence_save',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{intelligence_save_proficiency}@{intelligence_save_modded}',
affects:[]
},
wisdom_mod:{
name:'wisdom_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{wisdom}-10)/2)',
affects:['insight','perception','survival','wisdom_save','variable']
},
wisdom_save_proficiency:{
name:'wisdom_save_proficiency',
defaultValue:0,
type:'text',
affects:['wisdom_save']
},
wisdom_save:{
name:'wisdom_save',
defaultValue:0,
type:'number',
calculation:'@{wisdom_mod} + @{wisdom_save_proficiency}@{wisdom_save_modded}',
affects:[]
},
charisma_mod:{
name:'charisma_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{charisma}-10)/2)',
affects:['deception','intimidation','performance','persuasion','charisma_save','variable']
},
charisma_save_proficiency:{
name:'charisma_save_proficiency',
defaultValue:0,
type:'text',
affects:['charisma_save']
},
charisma_save:{
name:'charisma_save',
defaultValue:0,
type:'number',
calculation:'@{charisma_mod} + @{charisma_save_proficiency}@{charisma_save_modded}',
affects:[]
},
initiative:{
name:'initiative',
defaultValue:0,
type:'number',
calculation:'@{dexterity_mod}@{initiative_modded}',
affects:[]
},
initiative_modded:{
name:'initiative_modded',
defaultValue:'',
type:'text',
affects:['initiative']
},
athletics_proficiency:{
name:'athletics_proficiency',
defaultValue:0,
type:'text',
affects:['athletics']
},
athletics:{
name:'athletics',
defaultValue:0,
type:'number',
calculation:'@{strength_mod} + @{athletics_proficiency}@{athletics_modded}',
affects:[]
},
acrobatics_proficiency:{
name:'acrobatics_proficiency',
defaultValue:0,
type:'text',
affects:['acrobatics']
},
acrobatics:{
name:'acrobatics',
defaultValue:0,
type:'number',
calculation:'@{dexterity_mod} + @{acrobatics_proficiency}@{acrobatics_modded}',
affects:[]
},
drive_proficiency:{
name:'drive_proficiency',
defaultValue:0,
type:'text',
affects:['drive']
},
drive:{
name:'drive',
defaultValue:0,
type:'number',
calculation:'@{dexterity_mod} + @{drive_proficiency}@{drive_modded}',
affects:[]
},
sleight_of_hand_proficiency:{
name:'sleight_of_hand_proficiency',
defaultValue:0,
type:'text',
affects:['sleight_of_hand']
},
sleight_of_hand:{
name:'sleight_of_hand',
defaultValue:0,
type:'number',
calculation:'@{dexterity_mod} + @{sleight_of_hand_proficiency}@{sleight_of_hand_modded}',
affects:[]
},
stealth_proficiency:{
name:'stealth_proficiency',
defaultValue:0,
type:'text',
affects:['stealth']
},
stealth:{
name:'stealth',
defaultValue:0,
type:'number',
calculation:'@{dexterity_mod} + @{stealth_proficiency}@{stealth_modded}',
affects:[]
},
bureaucracy_proficiency:{
name:'bureaucracy_proficiency',
defaultValue:0,
type:'text',
affects:['bureaucracy']
},
bureaucracy:{
name:'bureaucracy',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{bureaucracy_proficiency}@{bureaucracy_modded}',
affects:[]
},
computers_proficiency:{
name:'computers_proficiency',
defaultValue:0,
type:'text',
affects:['computers']
},
computers:{
name:'computers',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{computers_proficiency}@{computers_modded}',
affects:[]
},
investigation_proficiency:{
name:'investigation_proficiency',
defaultValue:0,
type:'text',
affects:['investigation']
},
investigation:{
name:'investigation',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{investigation_proficiency}@{investigation_modded}',
affects:[]
},
life_science_proficiency:{
name:'life_science_proficiency',
defaultValue:0,
type:'text',
affects:['life_science']
},
life_science:{
name:'life_science',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{life_science_proficiency}@{life_science_modded}',
affects:[]
},
mechanics_proficiency:{
name:'mechanics_proficiency',
defaultValue:0,
type:'text',
affects:['mechanics']
},
mechanics:{
name:'mechanics',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{mechanics_proficiency}@{mechanics_modded}',
affects:[]
},
physical_science_proficiency:{
name:'physical_science_proficiency',
defaultValue:0,
type:'text',
affects:['physical_science']
},
physical_science:{
name:'physical_science',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{physical_science_proficiency}@{physical_science_modded}',
affects:[]
},
social_science_proficiency:{
name:'social_science_proficiency',
defaultValue:0,
type:'text',
affects:['social_science']
},
social_science:{
name:'social_science',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{social_science_proficiency}@{social_science_modded}',
affects:[]
},
streetwise_proficiency:{
name:'streetwise_proficiency',
defaultValue:0,
type:'text',
affects:['streetwise']
},
streetwise:{
name:'streetwise',
defaultValue:0,
type:'number',
calculation:'@{intelligence_mod} + @{streetwise_proficiency}@{streetwise_modded}',
affects:[]
},
insight_proficiency:{
name:'insight_proficiency',
defaultValue:0,
type:'text',
affects:['insight']
},
insight:{
name:'insight',
defaultValue:0,
type:'number',
calculation:'@{wisdom_mod} + @{insight_proficiency}@{insight_modded}',
affects:['passive_insight']
},
passive_insight:{
name:'passive_insight',
defaultValue:10,
type:'number',
calculation:'10 +@{insight}@{passive_insight_modded}',
affects:[]
},
passive_insight_modded:{
name:'passive_insight_modded',
defaultValue:'',
type:'text',
affects:['passive_insight']
},
perception_proficiency:{
name:'perception_proficiency',
defaultValue:0,
type:'text',
affects:['perception']
},
perception:{
name:'perception',
defaultValue:0,
type:'number',
calculation:'@{wisdom_mod} + @{perception_proficiency}@{perception_modded}',
affects:['passive_perception']
},
passive_perception:{
name:'passive_perception',
defaultValue:10,
type:'number',
calculation:'10 + @{perception}@{passive_perception_modded}',
affects:[]
},
passive_perception_modded:{
name:'passive_perception_modded',
defaultValue:'',
type:'text',
affects:['passive_perception']
},
survival_proficiency:{
name:'survival_proficiency',
defaultValue:0,
type:'text',
affects:['survival']
},
survival:{
name:'survival',
defaultValue:0,
type:'number',
calculation:'@{wisdom_mod} + @{survival_proficiency}@{survival_modded}',
affects:[]
},
deception_proficiency:{
name:'deception_proficiency',
defaultValue:0,
type:'text',
affects:['deception']
},
deception:{
name:'deception',
defaultValue:0,
type:'number',
calculation:'@{charisma_mod} + @{deception_proficiency}@{deception_modded}',
affects:[]
},
intimidation_proficiency:{
name:'intimidation_proficiency',
defaultValue:0,
type:'text',
affects:['intimidation']
},
intimidation:{
name:'intimidation',
defaultValue:0,
type:'number',
calculation:'@{charisma_mod} + @{intimidation_proficiency}@{intimidation_modded}',
affects:[]
},
performance_proficiency:{
name:'performance_proficiency',
defaultValue:0,
type:'text',
affects:['performance']
},
performance:{
name:'performance',
defaultValue:0,
type:'number',
calculation:'@{charisma_mod} + @{performance_proficiency}@{performance_modded}',
affects:[]
},
persuasion_proficiency:{
name:'persuasion_proficiency',
defaultValue:0,
type:'text',
affects:['persuasion']
},
persuasion:{
name:'persuasion',
defaultValue:0,
type:'number',
calculation:'@{charisma_mod} + @{persuasion_proficiency}@{persuasion_modded}',
affects:[]
},
repeating_action_$X_bonus:{
name:'repeating_action_$X_bonus',
defaultValue:0,
type:'number',
calculation:'@{repeating_action_$X_attack_ability} + @{repeating_action_$X_attack_bonus} + @{repeating_action_$X_action_proficiency}@{repeating_action_$X_attack_modded}',
affects:[]
},
repeating_action_$X_action_proficiency:{
name:'repeating_action_$X_action_proficiency',
defaultValue:'0',
type:'text',
affects:['repeating_action_$X_bonus']
},
repeating_action_$X_attack_ability:{
name:'repeating_action_$X_attack_ability',
defaultValue:'0',
type:'text',
affects:['repeating_action_$X_bonus']
},
repeating_action_$X_attack_bonus:{
name:'repeating_action_$X_attack_bonus',
defaultValue:'',
type:'text',
affects:['repeating_action_$X_bonus']
}
},
npc:{
/*character_name:{
name:'character_name',
defaultValue:'',
affects:[]
},*/
size:{
name:'size',
defaultValue:'',
affects:[]
},
genome:{
name:'genome',
defaultValue:'',
affects:[]
},
modification:{
name:'modification',
defaultValue:'',
affects:[]
},
ac:{
name:'ac' ,
defaultValue:'',
affects:[]
},
damage_reduction:{
name:'damage_reduction',
defaultValue:'',
affects:[]
},
hp:{
name:'hp',
defaultValue:'',
affects:[]
},
hp_max:{
name:'hp_max',
defaultValue:'',
affects:[]
},
hit_dice:{
name:'hit_dice',
defaultValue:'',
affects:[]
},
speed:{
name:'speed',
defaultValue:'',
affects:[]
},
strength:{
name:'strength',
type:'text',
defaultValue:10,
affects:['strength_mod']
},
strength_save_base:{
name:'strength_save_base',
type:'number',
defaultValue:'',
affects:['strength_save']
},
dexterity:{
name:'dexterity',
type:'text',
defaultValue:10,
affects:['dexterity_mod']
},
dexterity_save_base:{
name:'dexterity_save_base',
type:'number',
defaultValue:'',
affects:['dexterity_save']
},
constitution:{
name:'constitution',
type:'text',
defaultValue:10,
affects:['constitution_mod']
},
constitution_save_base:{
name:'constitution_save_base',
type:'number',
defaultValue:'',
affects:['constitution_save']
},
intelligence:{
name:'intelligence',
type:'text',
defaultValue:10,
affects:['intelligence_mod']
},
intelligence_save_base:{
name:'intelligence_save_base',
type:'number',
defaultValue:'',
affects:['intelligence_save']
},
wisdom:{
name:'wisdom',
type:'text',
defaultValue:10,
affects:['wisdom_mod']
},
wisdom_save_base:{
name:'wisdom_save_base',
type:'number',
defaultValue:'',
affects:['wisdom_save']
},
charisma:{
name:'charisma',
type:'text',
defaultValue:10,
affects:['charisma_mod']
},
charisma_save_base:{
name:'charisma_save_base',
type:'number',
defaultValue:'',
affects:['charisma_save']
},
strength_mod:{
name:'strength_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{strength}-10)/2)',
affects:['strength_save']
},
dexterity_mod:{
name:'dexterity_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{dexterity}-10)/2)',
affects:['dexterity_save']
},
constitution_mod:{
name:'constitution_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{constitution}-10)/2)',
affects:['constitution_save']
},
intelligence_mod:{
name:'intelligence_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{intelligence}-10)/2)',
affects:['intelligence_save']
},
wisdom_mod:{
name:'wisdom_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{wisdom}-10)/2)',
affects:['wisdom_save']
},
charisma_mod:{
name:'charisma_mod',
defaultValue:0,
type:'number',
calculation:'floor((@{charisma}-10)/2)',
affects:['charisma_save']
},
strength_save:{
name:'strength_save',
defaultValue:0,
type:'number',
calculation:'custom',
affects:[]
},
dexterity_save:{
name:'dexterity_save',
defaultValue:0,
type:'number',
calculation:'custom',
affects:[]
},
constitution_save:{
name:'constitution_save',
defaultValue:0,
type:'number',
calculation:'custom',
affects:[]
},
intelligence_save:{
name:'intelligence_save',
defaultValue:0,
type:'number',
calculation:'custom',
affects:[]
},
wisdom_save:{
name:'wisdom_save',
defaultValue:0,
type:'number',
calculation:'custom',
affects:[]
},
charisma_save:{
name:'charisma_save',
defaultValue:0,
type:'number',
calculation:'custom',
affects:[]
},
condition_immunities:{
name:'condition_immunities',
defaultValue:'',
affects:[]
},
damage_immunities:{
name:'damage_immunities',
defaultValue:'',
affects:[]
},
damage_resistances:{
name:'damage_resistances',
defaultValue:'',
affects:[]
},
damage_vulnerability:{
name:'damage_vulnerability',
defaultValue:'',
affects:[]
},
athletics:{
name:'athletics',
defaultValue:'',
affects:[]
},
acrobatics:{
name:'acrobatics',
defaultValue:'',
affects:[]
},
drive:{
name:'drive',
defaultValue:'',
affects:[]
},
sleight_of_hand:{
name:'sleight_of_hand',
defaultValue:'',
affects:[]
},
stealth:{
name:'stealth',
defaultValue:'',
affects:[]
},
bureaucracy:{
name:'bureaucracy',
defaultValue:'',
affects:[]
},
computers:{
name:'computers',
defaultValue:'',
affects:[]
},
investigation:{
name:'investigation',
defaultValue:'',
affects:[]
},
life_science:{
name:'life_science',
defaultValue:'',
affects:[]
},
mechanics:{
name:'mechanics',
defaultValue:'',
affects:[]
},
physical_science:{
name:'physical_science',
defaultValue:'',
affects:[]
},
social_science:{
name:'social_science',
defaultValue:'',
affects:[]
},
streetwise:{
name:'streetwise',
defaultValue:'',
affects:[]
},
insight:{
name:'insight',
defaultValue:'',
affects:[]
},
perception:{
name:'perception',
defaultValue:'',
affects:[]
},
survival:{
name:'survival',
defaultValue:'',
affects:[]
},
deception:{
name:'deception',
defaultValue:'',
affects:[]
},
intimidation:{
name:'intimidation',
defaultValue:'',
affects:[]
},
performance:{
name:'performance',
defaultValue:'',
affects:[]
},
persuasion:{
name:'persuasion',
defaultValue:'',
affects:[]
},
skill_notes:{
name:'skill_notes',
defaultValue:'',
affects:[]
},
senses:{
name:'senses',
defaultValue:'',
affects:[]
},
passive_perception:{
name:'passive_perception',
defaultValue:'',
affects:[]
},
languages:{
name:'languages',
defaultValue:'',
affects:[]
},
challenge:{
name:'challenge',
defaultValue:'',
affects:[]
},
experience_points:{
name:'experience_points',
defaultValue:'',
affects:[]
},
hacker_level:{
name:'hacker_level',
defaultValue:'',
affects:[]
},
hacking_ability:{
name:'hacking_ability',
defaultValue:'',
affects:[]
},
hack_dc:{
name:'hack_dc',
defaultValue:'',
affects:[]
},
hack_attack:{
name:'hack_attack',
defaultValue:'',
affects:[]
},
'1st_level_slots':{
name:'1st_level_slots',
defaultValue:'',
affects:[]
},
'1st_level_slots':{
name:'1st_level_slots',
defaultValue:'',
affects:[]
},
'2nd_level_slots':{
name:'2nd_level_slots',
defaultValue:'',
affects:[]
},
'3rd_level_slots':{
name:'3rd_level_slots',
defaultValue:'',
affects:[]
},
'4th_level_slots':{
name:'4th_level_slots',
defaultValue:'',
affects:[]
},
'5th_level_slots':{
name:'5th_level_slots',
defaultValue:'',
affects:[]
},
}
},
dropDowns = ['repeating_action_$X_attack_ability'],
hitDice = ['d8_hd','d10_hd','d12_hd'],
toMonitor = ['strength','dexterity','constitution','intelligence','wisdom','charisma','base_strength','base_dexterity','base_constitution','base_intelligence','base_wisdom','base_charisma','strength_save_proficiency','dexterity_save_proficiency','constitution_save_proficiency','intelligence_save_proficiency','wisdom_save_proficiency','charisma_save_proficiency','class_level','level','athletics_proficiency','acrobatics_proficiency','drive_proficiency','sleight_of_hand_proficiency','stealth_proficiency','bureaucracy_proficiency','computers_proficiency','investigation_proficiency','life_science_proficiency','mechanics_proficiency','physical_science_proficiency','social_science_proficiency','streetwise_proficiency','insight_proficiency','perception_proficiency','survival_proficiency','deception_proficiency','intimidation_proficiency','performance_proficiency','persuasion_proficiency','athletics_proficiency','acrobatics_proficiency','drive_proficiency','sleight_of_hand_proficiency','stealth_proficiency','bureaucracy_proficiency','computers_proficiency','investigation_proficiency','life_science_proficiency','mechanics_proficiency','physical_science_proficiency','social_science_proficiency','streetwise_proficiency','insight_proficiency','perception_proficiency','survival_proficiency','deception_proficiency','intimidation_proficiency','performance_proficiency','persuasion_proficiency','strength_save_base','dexterity_save_base','constitution_save_base','intelligence_save_base','wisdom_save_base','charisma_save_base'],
repeatingSections = ['repeating_action','repeating_hack','repeating_trait','repeating_equipment'],
baseGet = [...toMonitor,'proficiency','character_type','strength_mod','dexterity_mod','constitution_mod','intelligence_mod','wisdom_mod','charisma_mod','strength_save','dexterity_save','constitution_save','intelligence_save','wisdom_save','charisma_save','athletics','acrobatics','drive','sleight_of_hand','stealth','bureaucracy','computers','investigation','life_science','mechanics','physical_science','social_science','streetwise','insight','perception','survival','deception','intimidation','performance','persuasion'],
challengeToXP = {
'0':10,'1/8':25,'1/4':50,'1/2':100,'1':200,'2':450,'3':700,'4':1100,'5':1800,'6':2300,'7':2900,'8':3900,'9':5000,
'10':5900,'11':7200,'12':8400,'13':10000,'14':11500,'15':13000,'16':15000,'17':18000,'18':20000,'19':22000,'20':25000,
'21':33000,'22':41000,'23':50000,'24':62000,'25':75000,'26':90000,'27':105000,'28':120000,'29':135000,'30':155000
};
var registerEventHandlers = function(){
on('sheet:opened',openSheet);
['repeating_action:attack_enable_item','repeating_hack:attack_enable_item','repeating_action:damage_1_enable_item','repeating_hack:damage_1_enable_item','repeating_action:damage_2_enable_item','repeating_hack:damage_2_enable_item'].forEach((name)=>{
on(`change:${name}`,updateActionMacro);
});
displayControllers.forEach((attr)=>{
on(`change:${attr}`,importReact);
});
importControls.forEach((attr)=>{
on(`change:${attr}`,importReact);
});
hackLevels.forEach((attr)=>{
on(`clicked:add_${attr}_hack`,createHack);
});
on('change:character_type',changeCharacter);
on('change:challenge',convertChallenge);
on('change:hit_dice',averageHP);
hitDice.forEach((attr)=>{
on(`change:${attr}`,updateHDmacro);
});
[...toMonitor,...repeatingSections].forEach((attr)=>{
on(`change:${attr}${/repeating/.test(attr) ? ` remove:${attr}` :''}`,(event)=>{
let triggers = [event.sourceAttribute];
if(/_mods$/.test(event.sourceAttribute)){
triggers = extractModTrigger(`${event.newValue},${event.previousValue}`,triggers);
}else if(event.removedInfo && _.contains(_.keys(event.removedInfo),`${triggers[0]}_mods`)){
triggers = extractModTrigger(event.removedInfo[`${event.sourceAttribute}_mods`],[]);
}else if(event.removedInfo){
return;
}
getSections(accessSheet,baseGet,triggers);
});
});
},
extractModTrigger = function(string,triggers){
string.replace(/([+\-=].+?)\s+([^\s,]+)(?:,|$)/ig,(match,value,target)=>{
target = target.toLowerCase();
if(/=/.test(value) && target ==='ac'){
target = 'ac_formula';
}
if(!_.contains(triggers,target)){
triggers.push(target);
}
});
return triggers;
},
accessSheet = function(getArray,sections,triggers){
const setObj = {};
getAttrs(getArray,(attributes)=>{
const buffs = parseBuffs(attributes,sections,triggers);
if(attributes.character_type === 'pc' && !buffs.ac_formula){
buffs.ac_formula = [{value:cascades.pc.ac_formula.defaultValue,label:'AC'}];
}
triggers = parseTrigger(triggers,attributes.character_type,attributes,buffs,sections);
triggers = sortTrigger(triggers);
reactToTrigger(triggers,attributes,setObj,buffs);
});
},
parseBuffs = function(attributes,sections,triggers){ //parses all of the buffs contained in the repeating_trait, and repeating_equipment items
// creates an object indexed by attribute to be buffed containing objects that have all of the buffs for that attribute
// indexed by buff type
const modRegex = /([+\-=].+?)\s+([^\s,]+)(?:,|$)/ig;//mod expression +X target,+X target,...
//mod expression can use attribute calls, queries, roll expressions, etc.
return _.chain(_.keys(attributes))
.filter((attr_name)=>{
return /_mods$/.test(attr_name);
})
.reject((attr_name)=>{
return attributes[attr_name] === '' || !attributes[attr_name];
})
.reduce((memo,attr_name)=>{
attributes[attr_name].toLowerCase().replace(modRegex,(match,value,target)=>{
if(/=/.test(value) && target === 'ac'){
target = 'ac_formula';
triggers.push('ac_formula');
}
if(/repeating_[^_]+_\$/i.test(target)){
target.replace(/(repeating_[^_]+_)[^_]+(.+)/,(match,section,field)=>{
_.each(sections[section],(id)=>{
memo[`${section}${id}${field}`] = memo[`${section}${id}${field}`] || [];
let targObj = {
value:value,
label:attributes[attr_name.replace('mods','name')]
};
memo[`${section}${id}${field}`].push(targObj);
});
});
}else{
memo[target] = memo[target] || [];
let targObj = {
value:value,
label:attributes[attr_name.replace('mods','name')]
};
memo[target].push(targObj);
}
});
return memo;
},{})
.tap(log)
.value();
},
expandRepeating = function(cascade,sections){
let tempCasc = trueCopy(cascade);
tempCasc = _.keys(tempCasc).reduce((memo,key)=>{
if(/^repeating/.test(key)){
key.replace(/(repeating_[^_]+)_[^_]+_(.+)/,(match,section,field)=>{
_.each(sections[section].id,(id)=>{
memo[`${section}_${id}_${field}`]=trueCopy(tempCasc[key]);
memo[`${section}_${id}_${field}`].affects = memo[`${section}_${id}_${field}`].affects.map((affected)=>{
return affected.replace(/(repeating_[^_]+_)[^_]+(.+)/,`$1${id}$2`);
});
});
});
}else{
memo[key] = trueCopy(tempCasc[key]);
}
return memo;
},{});
return tempCasc;
},
updateActionMacro = function(event){
if(event.sourceAttribute === 'attack_enable_item'){
return;
}
getAttrs(['character_type'],(attributes)=>{
const setObj = {};
adjustActionMacro(event,attributes,setObj);
set(setObj);
});
},
adjustActionMacro = function(event,attributes,setObj = {}){
let macroAttr = event.sourceAttribute.replace(/enable_item/,'macro');
if(event.newValue*1){
setObj[macroAttr] = `{{d20=[[@{advantage_state} ${attributes.character_type === 'pc' ? '+ @{attack_ability} + @{action_proficiency}' : ''} + 0@{attack_bonus}]]}}`;
}else if(/{{damage_type_\d=@{damage_type_\d}}} @{damage_\d_macro}/.test(event.newValue)){
event.sourceAttribute.replace(/_(\d)_/,(match,num)=>{
setObj[macroAttr] = `{{damage_${num}=[[0@{damage_${num}}${attributes.character_type === 'pc' ? `+ @{damage_ability_${num}}` : ''}]]}} {{regular_critical_${num}=[[0@{damage_${num}}]]}} {{is_custom_crit_${num}=@{critical_damage_${num}}}} {{custom_critical_${num}=[[0@{critical_damage_${num}}]]}}`;
});
}else{
setObj[macroAttr] = ' ';
}
set(setObj);
},
trueCopy = function(obj){
return JSON.parse(JSON.stringify(obj));
},
applyBuffsToCascades = function(cascade,buffs,sections){
let tempCasc = expandRepeating(cascade,sections);
_.keys(buffs).forEach((key)=>{
buffs[key].forEach((buff)=>{
buff.value.replace(/@{(.+?)}/g,(match,attr)=>{
if(/repeating_[^_]+_\$[X\d]+/i.test(attr)){
attr.replace(/(repeating_[^_]+)_[^_]+_(.+)/,(match,section,field)=>{
sections[section].id.forEach((id)=>{
if(!_.contains(tempCasc[`${section}_${id}_${field}`].affects)){
tempCasc[`${section}_${id}_${field}`].affects.push(key);
}
});
});
}else{
if(!_.contains(tempCasc[attr].affects)){
tempCasc[attr].affects.push(key);
}
}
});
});
});
return tempCasc;
},
parseTrigger = function(triggers,character_type,attributes,buffs,sections){
let cascadeCopy = character_type==='pc' ? applyBuffsToCascades(cascades[character_type],buffs,sections) : expandRepeating(cascades[character_type],sections),
trigQueue,
trigWorker = (queue,arr) =>{
arr = arr || [];
let item = queue.shift(),
rowID,
itemLookup = item.replace(/(repeating_[^_]+_)([^_]+)/,(match,section,id)=>{
rowID = /\$/.test(id) ? undefined : id;
return `${section}$X`;
});
if(cascadeCopy[itemLookup]){
let parsedItem = {};
_.keys(cascadeCopy[itemLookup]).forEach((key)=>{
if(key === 'affects'){
parsedItem[key] = [];
let affectArray = cascadeCopy[itemLookup][key];
_.keys(buffs).forEach((key)=>{
if(new RegExp(`@{${itemLookup}}`).test(buffs[key].value)){
affectArray.push(key);
}
});
affectArray = _.unique(affectArray);
_.each(affectArray,(affected)=>{
if(/^repeating_/.test(affected)){
affected.replace(/(repeating_[^_]+_)[^_]+(.+)/,(match,section,field)=>{
if(rowID){
parsedItem[key].push(`${section}${rowID}${field}`);
if(_.every(arr,(item)=>{
return item.name !== `${section}${rowID}${field}`;
}) && !_.contains(queue,`${section}${rowID}${field}`)){
queue.push(`${section}${rowID}${field}`);
}
}else{
_.each(sections[section],(id)=>{
parsedItem[key].push(`${section}${id}${field}`);
if(_.every(arr,(item)=>{
return item.name !== `${section}${id}${field}`;
}) && !_.contains(queue,`${section}${id}${field}`)){
queue.push(`${section}${id}${field}`);
}
});
}
});
}else if(/^variable$/.test(affected)){
dropDowns.forEach((dropDown)=>{
dropDown.replace(/(?:(repeating_[^_]+)_[^_]+_)?(.+)/,(match,section,field)=>{
sections[section].forEach((id)=>{
if(attributes[`${section}_${id}_${field}`]===`@{${key}}`){
parsedItem[key].push(`${section}_${id}_${field}`);
queue.push(`${section}_${id}_${field}`);
}
});
});
});
}else{
parsedItem[key].push(affected);
if(_.every(arr,(item)=>{
return item.name !== affected;
}) && !_.contains(queue,affected)){
queue.push(affected);
}
}
});
}else{
parsedItem[key] = `${cascadeCopy[itemLookup][key]}`.replace(/(repeating_[^_]+_)[^_]+/,`$1${rowID||''}`);
}
});
if((cascadeCopy[itemLookup].calculation || itemLookup === 'ac_formula') && _.every(arr,(item)=>{
return item.name !== parsedItem.name;
})){
arr.push(parsedItem);
}
}
if(_.isEmpty(queue)){
return arr;
}else{
return trigWorker(queue,arr);
}
};
return trigWorker(triggers);
},
sortTrigger = function(triggers){
_.each(triggers,(trigger)=>{
trigger.order = triggers.reduce((memo,trig,index)=>{
if(_.contains(trig.affects,trigger.name)){
memo = trig.order + 1 || index;
}
return memo;
},0);
});
return _.sortBy(triggers,(obj)=>{return obj.order});
},
reactToTrigger = function(triggers,attributes,setObj,buffs){
_.each(triggers,(obj)=>{
let calc;
if(obj.calculation === 'custom'){
calc = customCalcs[obj.name](attributes,triggers,setObj,buffs,obj);
}else{
calc = sheetCalc(obj.name,obj.calculation,attributes,setObj,buffs);
}
if(!calc && calc !== 0){
calc = obj.defaultValue;
}
attributes[obj.name] = calc;
setObj[obj.name] = calc;
});
set(setObj);
},
calcLevel = function(attributes){
let level = 0;
attributes.class_level.replace(/\d+/g,(classLevel)=>{
level += classLevel*1;
});
return level;
},
calcAC = function(attributes,triggers,setObj,buffs){
return buffs.ac_formula.reduce((memo,buffObj)=>{
let calc = sheetCalc('ac_formula',buffObj.value,attributes,setObj,buffs);
if(calc >= memo.value){
memo = {value:calc,formula:buffObj.value};
}
return memo;
},{value:0}).formula || triggers.ac_formula.defaultValue;
},
npcSaveCalc = function(attributes,triggers,setObj,buffs,trigger){
let attr = trigger.name.replace(/_save.*/,'');
return (attributes[`${attr}_save_base`]*1||attributes[`${attr}_save_base`]!=='') ? attributes[`${attr}_save_base`] : attributes[`${attr}_mod`];
},
customCalcs = {
level:calcLevel,
ac_formula:calcAC,
strength_save:npcSaveCalc,
dexterity_save:npcSaveCalc,
constitution_save:npcSaveCalc,
intelligence_save:npcSaveCalc,
wisdom_save:npcSaveCalc,
charisma_save:npcSaveCalc
},
sheetCalc = function(name,calculation,attributes,setObj,buffs){
let parsedCalc = calculation;
while(/@{([^}]+)}/.test(parsedCalc)){
parsedCalc.replace(/@{(([^}]+)_modded)}/,(match,store,target)=>{
attributes[store] = (buffs[target]||[]).map((buffObj)=>{
return `+ [[${buffObj.value}]][${buffObj.label}]`;
}).join(' ');
setObj[store]=attributes[store];
});
parsedCalc = attributeParse(parsedCalc,attributes);
}
parsedCalc = parsedCalc.replace(/floor|ceil|round|abs/g,'Math.$&').replace(/\[\[|\]\]|\[.*?\]|=/g,'');
let finalCalc;
try{
finalCalc = eval(parsedCalc);
}catch(err){
finalCalc = undefined;
}
return finalCalc;
},
attributeParse = function(string,attributes){
return string.replace(/@{([^}]+)}/g,(match,name)=>{
return attributes[name.toLowerCase()];
});
},
updateHDmacro = function(event){
const setObj = {};
getAttrs(hitDice,(attributes)=>{
let hdAccumulator = [];
hitDice.forEach((hd)=>{
if(attributes[hd] && (attributes[hd]*1!==0 && attributes[hd]!=='')){
hdAccumulator.push(hd.replace(/_hd/,''));
}
});
hdAccumulator = hdAccumulator.join('|');
if(/\|/.test(hdAccumulator)){
hdAccumulator = `?{Die Size|${hdAccumulator}}`;
}
setObj.hit_dice_macro = `{{d20=[[?{Number of dice|1}${hdAccumulator} + [[?{Number of dice}*@{constitution_mod}]]]]}}`;
set(setObj);
});
},
convertChallenge = function(event){
set({experience_points:challengeToXP[event.newValue]||10});
},
averageHP = function(event){
const setObj = {};
let numDie,die,bonus;
event.newValue.replace(/(\d+)\s*d\s*(\d+)(?:\s*([+\-]\s*\d+))?/,(match,n,d,b)=>{
numDie = n*1||1;
die = d*1||6;
bonus = (b+'').replace(/\s*\+\s*/,'')*1||0;
});
setObj.hp = bonus + Math.floor(numDie*(die/2+0.5));
setObj.hp_max = setObj.hp;
set(setObj);
},
changeDisplay = function(){
getAttrs([...displayControllers,...importControls],(attributes)=>{
const setObj = processDisplayChange(attributes);
set(setObj);
});
},
processDisplayChange = function(attributes){
const setObj = {};
setObj.master_display_controller = displayControllers.map((attr)=>{
return `${attr}:${attributes[attr]}`
}).join(' | ');
setObj.master_display_controller = `${setObj.master_display_controller} | import:${attributes.import}`;
return setObj;
},
importReact = function(event){
const attrToGet = [...displayControllers,...importControls],
setObj = {};
let processImport = false;
if(event.newValue === '0' && event.sourceAttribute === 'import'){
attrToGet.push('importer');
processImport = true;
}else if(event.sourceAttribute === 'import_cancel'){
setObj.import = '0';
setObj.import_cancel = '0';
}
if(!processImport){
displayImportChange(attrToGet,setObj);
}else{
getSections(beginImport,[...baseGet,...attrToGet]);
}
},
displayImportChange = function(toGet,setObj){
getAttrs(toGet,(attributes)=>{
_.extend(attributes,setObj);
_.extend(setObj,processDisplayChange(attributes));
set(setObj);
});
},
beginImport = function(toGet,sections){
let setObj = {};
wipeSheet(sections,setObj);
getAttrs(toGet,(attributes)=>{
if(attributes.importer.trim() === ''){
setObj.import = 'import';
}else{
setObj = {...setObj,...parseStatblock(attributes.importer)};
setObj.sheet_view = 'in-play';
attributes = {...attributes,...setObj};
setObj = {...setObj,...processDisplayChange(attributes)};
}
set(setObj);
});
},
wipeSheet = function(sections){
const setObj = {};
Object.keys(cascades.npc).forEach((k)=>setObj[k]=cascades.npc[k].defaultValue);
setObj.import = 'import-process';
_.each(sections,(idArray,section)=>{
resetRepeatingSection(section,idArray);
});
},
resetRepeatingSection = function(section,idArray){
idArray.forEach((id)=>{
removeRepeatingRow(`${section}_${id}`);
});
},
parseStatblock = function(statblock){
if(statblock.trim() === ''){
return {};
}
let parser = headerParser,
section = 'header',
lines = statblock.replace(/\s+\n/g,'\n').replace(/[\-–—―−]/g,'-').split(/\n+/),
setObj = {};
const Parsers = {//regex as strings for matching against each line to determine if we continue with the current recursive parse, or move onto a new section
'^\\s*str\\s+dex\\s+con\\s+int\\s+wis\\s+cha':abilityScoreParser,
'^\\s*(?:saves|skills|senses|languages|challenge|damage resistance)\\s+':detailParser,
'^\\s*hacking\\.\\s+':hackParser,
'^\\s*traits$':traitParser,
'^\\s*actions\\s*$':actionParser
},
setParser = (lines) => {//Tests the line and changes the parser if necessary
return !!Object.keys(Parsers).find( (regexp) => {
if(new RegExp(regexp,"i").test(lines[0])){
section = regexp;
parser = Parsers[regexp];
if(/actions|^\s*str\s+dex\s+con\s+int\s+wis\s+cha/i.test(lines[0])){//if the section is one of these, then jump to the next line (shift it out of the array)
lines.shift();
}
return true;
}
return false;
});
};
setObj.character_name = lines.shift();
while(lines.length){//while there are lines
setParser(lines);//check the line and see if the parser needs to be changed
[setObj,lines] = parser(setObj,lines);//call the parser in question, and modify setObj and lines to be what the parser returns
};
return setObj;
},
processRegex = function(setObj,currLine,regexs){
_.keys(regexs).find((r)=>{
if(new RegExp(r,'i').test(currLine)){
let objMatch = currLine.match(new RegExp(r,'i'));
_.each(_.range(regexs[r].length),(l)=>{
_.each(regexs[r][l],(o)=>{
setObj[o]=objMatch[l + 1]||'';
});
});
return true;
}
return false;
});
},
headerParser = function(setObj,lines){
const regexs = {//regexs as strings for matching against lines. the properties are arrays of what attributes (in a sub array) receive the value from each matching group
'^\\s*(medium|tiny|large|huge)\\s+(.+?)(?:\\s+\\(\\s*(.+?)\\s*\\)|$)':[['size'],['genome'],['modification']],//size and type,
'^\\s*armor\\s+class\\s+(\\d+)':[['ac']],
'^\\s*damage\\s+reduction\\s+(\\d+)':[['damage_reduction']],
'^\\s*hit\\s+points\\s+(\\d+)\\s*\\((.+?)\\)':[['hp','hp_max'],['hit_dice']],
'^\\s*speed\\s+(.+)':[['speed']]
};
processRegex(setObj,lines.shift(),regexs);
return [setObj,lines];
},
abilityScoreParser = function(setObj,lines){
const regexs = {//regexs as strings for matching against lines. the properties are arrays of what attributes (in a sub array) receive the value from each matching group
'^\\s*(\\d+)\\s*\\(\\+?(\\-?\\d+)\\)\\s*(\\d+)\\s*\\(\\+?(\\-?\\d+)\\)\\s*(\\d+)\\s*\\(\\+?(\\-?\\d+)\\)\\s*(\\d+)\\s*\\(\\+?(\\-?\\d+)\\)\\s*(\\d+)\\s*\\(\\+?(\\-?\\d+)\\)\\s*(\\d+)\\s*\\(\\+?(\\-?\\d+)\\)':[['strength'],['strength_mod'],['dexterity'],['dexterity_mod'],['constitution'],['constitution_mod'],['intelligence'],['intelligence_mod'],['wisdom'],['wisdom_mod'],['charisma'],['charisma_mod']]
};
processRegex(setObj,lines.shift(),regexs);
return [setObj,lines];
},
detailParser = function(setObj,lines){
const regexs = {//regexs as strings for matching against lines. the properties are arrays of what attributes (in a sub array) receive the value from each matching group
'^\\s*senses\\s+passive perception (\\d+)(?:,\\s*(.+?))?$':[['passive_perception'],['senses']],
'^\\s*damage\\s+resistance\s+(.+)':[['damage_resistance']],
'^\\s*languages\\s+(.+)':[['languages']],
'^\\s*challenge\\s+([\\d\\/]+)\\s*\\(([\\d,]+)\\s*xp\\)':[['challenge'],['experience_points']]
};
let line = assembleDetailLine(lines);
if(/^\s*skills\s+/i.test(line)){
parseSkills(setObj,line);
}else if(/^\s*senses\s+/i.test(line)){
parseSenses(setObj,line);
}else{
processRegex(setObj,line,regexs);
}
if(/^\s*challenge/i.test(line) && !/^\s*(hacking\.|actions)/i.test(lines[0])){
lines.unshift('trait');
}
return [setObj,lines];
},
assembleDetailLine = function(lines,line){
line = line ? `${line} ${lines.shift()}` : lines.shift();
return /^\s*(?:saves|skills|senses|languages|challenge|damage resistance|hacking|actions)/i.test(lines[0]) ? line : assembleDetailLine(lines,line);
},
parseSkills = function(setObj,line){
line.replace(/(?:,\s*|skills\s+)(.+?)\s+\+?(\-?\d+)/ig,(match,skill,bonus)=>{
setObj[skill.replace(/\s+/,'_').toLowerCase()]=bonus;
});
},
parseSenses = function(setObj,line){
line.replace(/senses\s*(?:(.+?),\s*)?passive \s*perception\s*(\d+)(?:,\s*(.+?))?$/i,(match,senses,pp='',senses2)=>{
setObj.passive_perception = pp;
setObj.senses = [senses,senses2].filter(a=>a).join(', ');
});
},
hackParser = function(setObj,lines){
let line = assembleHackerDetails(lines);
line.replace(/.+?(\d+)(?:st|th|rd).+?ability is (strength|dexterity|constitution|intelligence|wisdom|charisma).+?DC\s*(\d+).+?(\-?\d+) to hit/,(match,level,ability,dc,attack)=>{
setObj.hacker_level = level;
setObj.hacking_ability = ability;
setObj.hack_dc = dc;
setObj.hack_attack = attack;
});
processHacks(setObj,lines);
if(/.+\./.test(lines[0])){
lines.unshift('traits')
}
return [setObj,lines];
},
assembleHackerDetails = function(lines){
let line = lines.shift();
while(!/:/.test(line) && lines.length){
line = `${line} ${lines.shift()}`;
}
return line.toLowerCase();
},
processHacks = function(setObj,lines){
while(lines.length && !/.+\.|actions/i.test(lines[0])){
let line = assembleHackLevel(lines);
line.replace(/(\d+)(st|rd|th)\s+level\s*\((\d+)\s+slots\):(.+)/,(match,level,ordinal,slots,hacks)=>{
setObj[`${level}${ordinal}_level_slots`] = slots;
hacks = hacks.trim().split(/\s*,\s*/);
hacks.forEach((hack)=>{
importHack(setObj,hack,level);
});
});
}
},
assembleHackLevel = function(lines){
let line = lines.shift();
while(lines.length && !/.+(?:\.|:)|actions/i.test(lines[0])){
line = `${line} ${lines.shift()}`;
}
return line;
},
importHack = function(setObj,hack,level){
const rowID = generateRowID();
setObj[`repeating_hack_${rowID}_level`] = level;
setObj[`repeating_hack_${rowID}_hack_type`] = 'injection';
setObj[`repeating_hack_${rowID}_id`] = rowID;
setObj[`repeating_hack_${rowID}_name`] = hack;
},
traitParser = function(setObj,lines){
if(/^\s*traits$/.test(lines[0])){
lines.shift();
}
let regex = /(?:.+\.|actions)\s*$/i;
do{
let line = assembleTraitDetails(lines);
importTrait(setObj,line);
}while(lines.length && !regex.test(lines[0]))
return [setObj,lines];
},
importTrait = function(setObj,line){
const rowID = generateRowID();
line.replace(/^(.+?)\.\s*(.+)/,(match,name,description)=>{
setObj[`repeating_trait_${rowID}_description`] = description;
setObj[`repeating_trait_${rowID}_id`] = rowID;
setObj[`repeating_trait_${rowID}_name`] = name;
setObj[`repeating_trait_${rowID}_expand_item`] = 0;
});
},
//collects lines to create the entire paragraph of a trait. If action is truthy, then it will parse for an action's details
assembleTraitDetails = function(lines,action){
let line = lines.shift();
while(lines.length && !/\.\s*$/.test(line)){
line = `${line} ${lines.shift()}`;
}
return line;
},
actionParser = function(setObj,lines){
do{
let line = assembleTraitDetails(lines,true);
importAction(setObj,line);
}while(lines.length && /^(?:.+\.).+/.test(lines[0]))
return [setObj,lines];
},
importAction = function(setObj,line){
const rowID = generateRowID();
line.replace(/^(.+?)\.\s+((?:ranged|melee)\s+weapon\s+attack:.+?(\-?\d+).+?(?:range|reach)\s+(.+?),\s*(.+?)\..+?\((.+?)\)\s*(.*?)\.\s*(.+)?|.+)/i,(match,name,details,attack,range,target,damageRoll,damageType,description)=>{
setObj[`repeating_action_${rowID}_id`] = rowID;
setObj[`repeating_action_${rowID}_name`] = name;
if(attack){
setObj[`repeating_action_${rowID}_attack_bonus`] = attack;
setObj[`repeating_action_${rowID}_bonus`] = attack;
setObj[`repeating_action_${rowID}_attack_enable_item`] = 1;
setObj[`repeating_action_${rowID}_attack_macro`] = '{{d20=[[@{advantage_state} + 0@{attack_bonus}]]}}';
}
if(damageRoll){
setObj[`repeating_action_${rowID}_damage_1`] = damageRoll;
setObj[`repeating_action_${rowID}_damage_type_1`] = damageType||'';
setObj[`repeating_action_${rowID}_damage_1_enable_item`] = '{{damage_type_1=@{damage_type_1}}} @{damage_1_macro}';
setObj[`repeating_action_${rowID}_damage_1_macro`] = `{{damage_${num}=[[0@{damage_${num}}]]}} {{regular_critical_${num}=[[0@{damage_${num}}]]}} {{is_custom_crit_${num}=@{critical_damage_${num}}}} {{custom_critical_${num}=[[0@{critical_damage_${num}}]]}}`;
}
if(description){
setObj[`repeating_action_${rowID}_description`] = description||'';
}else if(!attack&&!range&&!target&&!damageRoll&&!damageType){
setObj[`repeating_action_${rowID}_description`] = details;
}
setObj[`repeating_action_${rowID}_range`] = range||'';
setObj[`repeating_action_${rowID}_expand_item`] = 0;
});
},
createHack = function(event){
const setObj = {},
rowID = generateRowID(),
[hackLevel] = event.triggerName.match(/\d+/);
setObj[`repeating_hack_${rowID}_level`] = hackLevel;
setObj[`repeating_hack_${rowID}_hack_type`] = 'injection';
setObj[`repeating_hack_${rowID}_id`] = rowID;
set(setObj);
},
changeCharacter = function(event){
const switcher = {
npc:NPC,
pc:PC
};
getSections(switcher[event.newValue]);
},
PC = function(getArray,sections){
const setObj = {
whisper_state:''
};
_.keys(skillList).forEach((skill)=>{
setObj[`${skill}_macro`]=`{{d20=[[@{advantage_state} + @{${skill}_proficiency}[Proficiency] + @{${skillList[skill]}_mod}[${skillList[skill].toUpperCase()}] @{${skill}_bonus}]]}}`
});
_.keys(abilityScores).forEach((abbreviation)=>{
setObj[`${abilityScores[abbreviation]}_check_macro`]=`{{d20=[[@{advantage_state} + @{${abilityScores[abbreviation]}_mod}[${abbreviation.toUpperCase()}] @{${abilityScores[abbreviation]}_bonus}]]}}`;
setObj[`${abilityScores[abbreviation]}_save_macro`]=`{{d20=[[@{advantage_state} + @{${abilityScores[abbreviation]}_mod}[${abbreviation.toUpperCase()}] + @{${abilityScores[abbreviation]}_save_proficiency}[Proficiency] @{${abilityScores[abbreviation]}_save_bonus}]]}}`;
});
sections.repeating_trait.forEach((id)=>{
setObj[`repeating_trait_${id}_macro`]='{{source=@{source}}}';
});
['repeating_hack','repeating_action'].forEach((section)=>{
sections[section].forEach((id)=>{
setObj[`repeating_hack_${id}_attack_macro`]='{{d20=[[@{advantage_state} + @{attack_ability} + @{action_proficiency} + 0@{attack_bonus}]]}}';
setObj[`repeating_hack_${id}_save_macro`]='{{dc=[[8 + @{save_ability} + @{action_proficiency} + 0@{dc_bonus}]]}}';
[1,2].forEach((num)=>{
setObj[`${section}_${id}_damage_${num}_macro`]=`{{damage_${num}=[[0@{damage_${num}} + @{damage_ability_${num}}]]}} {{regular_critical_${num}=[[0@{damage_${num}}]]}} {{is_custom_crit_${num}=@{critical_damage_${num}}}} {{custom_critical_${num}=[[0@{critical_damage_${num}}]]}}`;
});
});
});
set(setObj,changeDisplay);
},
NPC = function(getArray,sections){
const setObj = {
whisper_state:'/w gm'
};
_.keys(skillList).forEach((skill)=>{
setObj[`${skill}_macro`]=`{{d20=[[@{advantage_state} + @{${skill}} @{${skill}_bonus}]]}}`
});
_.keys(abilityScores).forEach((abbreviation)=>{
setObj[`${abilityScores[abbreviation]}_check_macro`]=`{{d20=[[@{advantage_state} + @{${abilityScores[abbreviation]}_mod}[${abbreviation.toUpperCase()}] @{${abilityScores[abbreviation]}_bonus}]]}}`;
setObj[`${abilityScores[abbreviation]}_save_macro`]=`{{d20=[[@{advantage_state} + @{${abilityScores[abbreviation]}_save}[${abbreviation.toUpperCase()}] @{${abilityScores[abbreviation]}_save_bonus}]]}}`;
});
sections.repeating_trait.forEach((id)=>{
setObj[`repeating_trait_${id}_macro`]='';
});
['repeating_hack','repeating_action'].forEach((section)=>{
sections[section].forEach((id)=>{
setObj[`${section}_${id}_attack_macro`]='{{d20=[[@{advantage_state} + 0@{attack_bonus}]]}}';
setObj[`${section}_${id}_save_macro`]='{{dc=[[0@{dc_bonus}]]}}';
[1,2].forEach((num)=>{
setObj[`${section}_${id}_damage_${num}_macro`]=`{{damage_${num}=[[0@{damage_${num}}]]}} {{regular_critical_${num}=[[0@{damage_${num}}]]}} {{is_custom_crit_${num}=@{critical_damage_${num}}}} {{custom_critical_${num}=[[0@{critical_damage_${num}}]]}}`;
});
});
});
set(setObj,changeDisplay);
},
getSections = function(callback,getArray,trigger,sections,queue){
queue = queue || JSON.parse(JSON.stringify(repeating_section_details));
getArray = getArray || [];
sections = sections || {};
let section = queue.shift();
getSectionIDs(section.section,(idArray)=>{
sections[section.section]=[];
idArray.forEach((id)=>{
sections[section.section].push(id);
section.fields.forEach((field)=>{
getArray.push(`${section.section}_${id}_${field}`);
});
});
if(_.isEmpty(queue)){
callback(getArray,sections,trigger);
}else{
getSections(callback,getArray,trigger,sections,queue);
}
});
},
log = function(msg){
const sheetName = 'Genefunk2090';
if(typeof msg === 'string'){
console.log(`%c${sheetName} log| ${msg}`,"background-color:#159ccf");
}else if(typeof msg === 'object'){
Object.keys(msg).forEach((m)=>{
if(typeof msg[m] === 'string'){
console.log(`%c${sheetName} log| ${m}: ${msg[m]}`,"background-color:#159ccf");
}else{
console.log(`%c${sheetName} log| ${typeof msg[m]} ${m}`,"background-color:#159ccf");
console.table(msg[m]);
}
});
}
},
openSheet = function(){
getSections(updateSheet,baseGet);
},
updateSheet = function(getArray,sections){
const setObj = {};
getAttrs([...getArray,'sheet_version'],(attr)=>{
if(!attr.sheet_version){
attr.sheet_version = 0;
}
if(attr.sheet_version*1 < 1.1) updateTo1_1(attr,setObj);//First update applied
if(attr.sheet_version*1 < 1.12) updateTo1_12(attr,setObj);//update 1.12; npc hp attribute change
if(attr.sheet_version*1 < 1.20) updateTo1_20(attr,setObj);
set(setObj);
});
},
updateTo1_20 = function(attr,setObj){
const damageEnablers = Object.keys(attr).filter(k => /(?:attack|damage_\d)_enable_item/.test(k));
damageEnablers.forEach(d => adjustActionMacro({sourceAttribute:d,triggerName:d,newValue:attr[d]},attr,setObj));
if(attr.character_type === 'npc'){
setObj.hit_points = attr.hp
setObj.hit_points_max = attr.hp_max;
}
attr = {...attr,...setObj};
setObj.sheet_version = 1.20;
},
updateTo1_12 = function(attr,setObj){
if(attr.character_type === 'npc'){
setObj.hp = attr.hit_points;
setObj.hp_max = attr.hit_points_max;
}
attr = {...attr,...setObj};
setObj.sheet_version = 1.12;
},
updateTo1_1 = function(attr,setObj){
let enableItems = Object.keys(attr).filter((a)=>/attack_enable_item/.test(a));
enableItems.forEach((check)=>{
let macroName = check.replace(/attack_enable_item/,'attack_macro');
if(/@/.test(attr[check])){
setObj[check] = 1;
setObj[macroName] = `{{d20=[[@{advantage_state} ${attr.character_type === 'pc' ? '+ @{attack_ability} + @{action_proficiency}' : ''} + 0@{attack_bonus}]]}}`;
}else if(!attr[check]*1){
setObj[macroName] = ' ';
setObj[check] = 0;
}
});
setObj.sheet_version = 1.1;
attr = {...attr,...setObj};
},
bootUp = function(){
log(`Sheet Starting up`);
},
set = function(obj,callback){
setAttrs(obj,{silent:true},callback)
};
return {
BootUp: bootUp,
RegisterEventHandlers: registerEventHandlers
};
}());
genefunk2090.BootUp();
genefunk2090.RegisterEventHandlers();
</script>
<!-- End Scripts-->