mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-31 04:02:29 +00:00
5028 lines
290 KiB
HTML
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} &{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--> |