Files
roll20-character-sheets/HeroSystem6eHeroic/HeroSystem6eHeroic.html
T
2023-05-19 21:55:14 -07:00

8439 lines
370 KiB
HTML

<div class="tab">
<button type="action" name="act_characteristics" >Characteristics</button>
<button type="action" name="act_gear" >Gear</button>
<button type="action" name="act_skills" >Skills</button>
<button type="action" name="act_powers" >Powers</button>
<button type="action" name="act_complications" >Talents & Complications</button>
<button type="action" name="act_options" >Options</button>
</div>
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="characteristics"/>
<!-- --------------------------------------------------------------------------------- -->
<!-- Bio, primary statistics, and combat statistics tab -->
<!-- --------------------------------------------------------------------------------- -->
<div class="sheet-characteristics">
<div class="grid-container-tab-characteristics">
<div class="grid-container-characteristics-leftGrid">
<div class="item-characteristics-logo">
<img src="https://github.com/Roll20/roll20-character-sheets/blob/master/HeroSystem6eHeroic/HeroSystemGraphic.png?raw=true" alt="Sheet Logo" style="width:209px;height:105px;">
</div>
<div class="item-characteristics-bio">
<div class="item-characteristics-bio-nameLabel">
<h1>Name:</h1>
</div>
<div class="item-characteristics-bio-nameText">
<input type="text" value="" name="attr_character_name" title="@{character_name}" maxlength="36" tabindex="1"/>
</div>
<div class="item-characteristics-bio-titleLabel">
<h1>Title:</h1>
</div>
<div class="item-characteristics-bio-titleText">
<input type="text" value="" name="attr_character_title" title="@{character_title}" maxlength="36" tabindex="2"/>
</div>
<div class="item-characteristics-bio-backgroundLabel">
<h1>Background:</h1>
</div>
<div class="item-characteristics-bio-backgroundText">
<textarea name="attr_backgroundText" title="@{backgroundText}" cols="28" rows="3" maxlength="64" tabindex="3"/></textarea>
</div>
</div>
<div class="item-characteristics-earnings">
<div class="item-characteristics-earnings-experienceLabel">
<h1>Experience:</h1>
</div>
<div class="item-characteristics-earnings-experience">
<input type="number" min="0" value="0" name="attr_experience" title="@{experience}" tabindex="4"/>
</div>
<div class="item-characteristics-earnings-moneyLabel">
<input type="text" value="Money:" name="attr_moneyLabel" maxlength="15" tabindex="-1">
</div>
<div class="item-characteristics-earnings-money">
<input type="number" value="0" name="attr_money" title="@{money}" step="1" tabindex="5"/>
</div>
</div>
<div class="item-characteristics-primary-attributes">
<div class="item-characteristics-primary-attributes-names">
<h1>Characteristics</h1>
<h2>Strength</h2>
<h2>Dexterity</h2>
<h2>Constitution</h2>
<h2>Intelligence</h2>
<h2>Ego</h2>
<h2>Presence</h2>
</div>
<div class="item-characteristics-primary-attributes-values">
<h1>Value</h1>
<input type="number" value="10" name="attr_strength" title="@{strength}" min="1" tabindex="6"/>
<input type="number" value="10" name="attr_dexterity" title="@{dexterity}" min="1" tabindex="7"/>
<input type="number" value="10" name="attr_constitution" title="@{constitution}" min="1" tabindex="8"/>
<input type="number" value="10" name="attr_intelligence" title="@{intelligence}" min="1" tabindex="9"/>
<input type="number" value="10" name="attr_ego" title="@{ego}" min="1" tabindex="10"/>
<input type="number" value="10" name="attr_presence" title="@{presence}" min="1" tabindex="11"/>
</div>
<div class="item-characteristics-primary-attributes-rollChances">
<h1>Roll</h1>
<input type="text" value="11" name="attr_strengthChance" title="@{strengthChance}" readonly tabindex="-1"/>
<input type="text" value="11" name="attr_dexterityChance" title="@{dexterityChance}" readonly tabindex="-1"/>
<input type="text" value="11" name="attr_constitutionChance" title="@{constitutionChance}" readonly tabindex="-1"/>
<input type="text" value="11" name="attr_intelligenceChance" title="@{intelligenceChance}" readonly tabindex="-1"/>
<input type="text" value="11" name="attr_egoChance" title="@{egoChance}" readonly tabindex="-1"/>
<input type="text" value="11" name="attr_presenceChance" title="@{presenceChance}" readonly tabindex="-1"/>
</div>
<div class="item-characteristics-primary-attributes-rollButtons">
<h1>&#8205;</h1> <!-- Invisible character -->
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_strength" title="%{strength}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Strength }} {{Base Chance = [[@{strengthChance}[Strength Chance]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_dexterity" title="%{dexterity}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Dexterity }} {{Base Chance = [[@{dexterityChance}[Dexterity Chance]+@{weightDexDCVPenalty}[Weight Penalty]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_constitution" title="%{constitution}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Constitution}} {{Base Chance = [[@{constitutionChance}[Constitution Chance]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_intelligence" title="%{intelligence}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Intelligence}} {{Base Chance = [[@{intelligenceChance}[Intelligence Chance]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_ego" title="%{ego}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Ego}} {{Base Chance = [[@{egoChance}[Ego Chance]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_presence" title="%{presence}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Presence}} {{Base Chance = [[@{presenceChance}[Presence Chance]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
</div>
<div class="item-characteristics-primary-attributes-costs">
<h1>CP</h1>
<input type="text" value="0" name="attr_strengthCP" readonly tabindex="-1" title="@{strengthCP}"/>
<input type="text" value="0" name="attr_dexterityCP" readonly tabindex="-1" title="@{dexterityCP}"/>
<input type="text" value="0" name="attr_constitutionCP" readonly tabindex="-1" title="@{constitutionCP}"/>
<input type="text" value="0" name="attr_intelligenceCP" readonly tabindex="-1" title="@{intelligenceCP}"/>
<input type="text" value="0" name="attr_egoCP" readonly tabindex="-1" title="@{egoCP}"/>
<input type="text" value="0" name="attr_presenceCP" readonly tabindex="-1" title="@{presenceCP}"/>
</div>
</div>
<div class="item-characteristics-combat-attributes">
<div class="item-characteristics-combat-attributes-names">
<h1>Combat Abilities</h1>
<h2 title="Offensive Combat Value">OCV</h2>
<h2 title="Defensive Combat Value">DCV</h2>
<h2 title="Offensive Mental Combat Value">OMCV</h2>
<h2 title="Defensive Mental Combat Value">DMCV</h2>
<h2>Speed</h2>
<h2>Physical Defense</h2>
<h2>Energy Defense</h2>
<h2>Body</h2>
<h2>Stun</h2>
<h2>Endurance</h2>
<h2>Recovery</h2>
</div>
<div class="item-characteristics-combat-attributes-values">
<h1>Value</h1>
<input type="number" value="3" name="attr_ocv" min="1" tabindex="12" title="@{ocv}"/>
<input type="number" value="3" name="attr_dcv" min="1" tabindex="13" title="@{dcv}"/>
<input type="number" value="3" name="attr_omcv" min="1" tabindex="14" title="@{omcv}"/>
<input type="number" value="3" name="attr_dmcv" min="1" tabindex="15" title="@{dmcv}"/>
<input type="number" value="2" name="attr_speed" min="1" max="12" tabindex="16" title="@{speed}"/>
<input type="number" value="2" name="attr_pd" min="1" tabindex="17" title="@{pd}"/>
<input type="number" value="2" name="attr_ed" min="1" tabindex="18" title = "@{ed}"/>
<input type="number" value="10" name="attr_body" min ="1" tabindex="19" title="@{body}"/>
<input type="number" value="20" name="attr_stun" min="0" step="2" tabindex="20" title="@{stun}"/>
<input type="number" value="20" name="attr_endurance" min="0" step="5" tabindex="21" title="@{endurance}"/>
<input type="number" value="4" name="attr_recovery" min="1" tabindex="22" title="@{recovery}"/>
</div>
<div class="item-characteristics-combat-attributes-costs">
<h1>CP</h1>
<input type="text" value="0" name="attr_ocvCP" readonly tabindex="-1" title="@{ocvCP}"/>
<input type="text" value="0" name="attr_dcvCP" readonly tabindex="-1" title="@{dcvCP}"/>
<input type="text" value="0" name="attr_omcvCP" readonly tabindex="-1" title="@{omcvCP}"/>
<input type="text" value="0" name="attr_dmcvCP" readonly tabindex="-1" title="@{dmcvCP}"/>
<input type="text" value="0" name="attr_speedCP" readonly tabindex="-1" title="@{speedCP}"/>
<input type="text" value="0" name="attr_pdCP" readonly tabindex="-1" title="@{pdCP}"/>
<input type="text" value="0" name="attr_edCP" readonly tabindex="-1" title="@{edCP}"/>
<input type="text" value="0" name="attr_bodyCP" readonly tabindex="-1" title="@{bodyCP}"/>
<input type="text" value="0" name="attr_stunCP" readonly tabindex="-1" title="@{stunCP}"/>
<input type="text" value="0" name="attr_enduranceCP" readonly tabindex="-1" title="@{enduranceCP}"/>
<input type="text" value="0" name="attr_recoveryCP" readonly tabindex="-1" title="@{recoveryCP}"/>
</div>
</div>
<div class="item-characteristics-movement-abilities">
<div class="item-characteristics-movement-abilities-names">
<h1>Movement</h1>
<h2>Running</h2>
<h2>Leaping</h2>
<h2>Swimming</h2>
</div>
<div class="item-characteristics-movement-abilities-values">
<h1>Value</h1>
<input type="number" value="12" name="attr_running" min="0" step="1" tabindex="23" title="@{running}"/>
<input type="number" value="4" name="attr_leaping" min="0" step="2" tabindex="24" title="@{leaping}"/>
<input type="number" value="4" name="attr_swimming" min="0" step="2" tabindex="25" title="@{swimming}"/>
</div>
<div class="item-characteristics-movement-abilities-costs">
<h1>CP</h1>
<input type="text" value="0" name="attr_runningCP" readonly tabindex="-1" title="@{runningCP}"/>
<input type="text" value="0" name="attr_leapingCP" readonly tabindex="-1" title="@{leapingCP}"/>
<input type="text" value="0" name="attr_swimmingCP" readonly tabindex="-1" title="@{swimmingCP"/>
</div>
</div>
</div>
<div class="grid-container-characteristics-rightGrid">
<div class="item-characteristics-portrait">
<!-- Hidden variables for the portrait display slideshow -->
<input type="hidden" class="item-portrait-slideshow" name="attr_portraitSelection" value="0" min="0" step="1" max="2"/>
<input type="hidden" name="attr_totalNumberOfPortraits" value="2"/>
<!-- A set of portrait images or rule cards with the visible image selected by the user. -->
<!-- There are three cards: -->
<!-- (1) A welcome card that could be changed to something else. Increasing attr_totalNumberOfPortraits's maximum value (and updates to the CSS) would allow for more cards. -->
<!-- (2) The character's Avatar Portrait. -->
<!-- (3) A sticky note for more player notes. -->
<!-- The rule card: -->
<div class="item-portrait-00">
<h1>Welcome!</h1>
<div class="item-portrait-flex-container">
<div class="item-portrait-rule-description">
<h1>Starting Character Points</h1>
<p>Heroic characters are typically built on a base of 125 CP plus up to 50 CP that are offset with Complications. Use the Bonus CP input at the bottom of this sheet to account for free abilities.</p>
</div>
<div class="item-portrait-rule-description">
<h1>Portrait</h1>
<p>You may change this frame to your avatar or to space for more notes with the hidden side arrow buttons.</p>
</div>
</div>
</div>
<!-- Avatar Portrait Image -->
<div class="item-portrait-01">
<img alt="Character Avatar" name="attr_theSheetAvatar" style="width:250px;height:250px;">
</div>
<!-- Sticky Note -->
<div class="item-portrait-02">
<textarea name="attr_portraitStickyNote" maxlength="403">Sticky Note</textarea>
</div>
<!-- Portrait frame select buttons -->
<button type="action" name="act_left-arrow-button" tabindex="-1" class="button button-left-arrow">&#10094;</button>
<button type="action" name="act_right-arrow-button" tabindex="-1" class="button button-right-arrow">&#10095;</button>
</div>
<div class="item-characteristics-health">
<h2>BODY</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentBODY" title="@{CurrentBODY}" value="10" maxlength="3" pattern="[0-9]+" tabindex="26"/>
<div class="item-health-stat-plus-minus-enclosure">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_bodyPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_bodyMinus">
<span>&#10094;</span>
</button>
</div>
</div>
<h2>STUN</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentSTUN" title="@{CurrentSTUN}" value="20" maxlength="3" pattern="[0-9]+" tabindex="27"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_stunPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_stunMinus">
<span>&#10094;</span>
</button>
</div>
</div>
<h2>END</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentEND" title="@{CurrentEND}" value="20" maxlength="3" pattern="[0-9]+" tabindex="28"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_endurancePlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_enduranceMinus">
<span>&#10094;</span>
</button>
</div>
</div>
<button type="action" class="button buttonRecover" tabindex="-1" name="act_recoverHealth" title="%{recoverHealth}">Recover</button>
<button type="action" class="button buttonReset" tabindex="-1" name="act_resetHealth" title="%{resetHealth}">Reset</button>
</div>
<div class="grid-container-container-turn-segments">
<label class="container-speed-indicator" >
<input type="checkbox" name="attr_speedIndicator01">
<span class="checkmark01" ></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator02">
<span class="checkmark02"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator03">
<span class="checkmark03"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator04">
<span class="checkmark04"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator05">
<span class="checkmark05"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator06" checked="true">
<span class="checkmark06"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator07">
<span class="checkmark07"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator08">
<span class="checkmark08"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator09">
<span class="checkmark09"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator10">
<span class="checkmark10"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator11">
<span class="checkmark11"></span>
</label>
<label class="container-speed-indicator">
<input type="checkbox" name="attr_speedIndicator12" checked="true">
<span class="checkmark12"></span>
</label>
</div>
<div class="item-characteristics-turn-tracker">
<button type="roll" class="button buttonTracker" tabindex="-1" name="roll_initiative" title="%{initiative}" value="&{template:custom} {{title=@{character_name}}} {{subtitle=Joins the Initiative}} {{Dexterity=[[(@{dexterity}[Dexterity]+?{Modifiers|0}[Modifier]) &{tracker}]]}}">Tracker</button>
</div>
<div class="item-characteristics-history">
<textarea name="attr_historyText" title="@{historyText}" maxlength="4440" tabindex="36">Biography</textarea>
</div>
<!-- Perception Rolls -->
<div class="item-characteristics-perception">
<div class="subitem-characteristics-perception-row-container">
<div class="subitem-characteristics-perception-stat-container">
<h1>Perception</h1>
<div class="subitem-characteristics-perception-column-container">
<input type="text" name="attr_intelligenceChance" title="@{intelligenceChance}" value="11" readonly tabindex="-1">
<span>+<input type="number" name="attr_enhancedPerceptionModifier" title="@{enhancedPerceptionModifier}" value="0" min="-10" max="10" step="1" tabindex="29"></span>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_perceptionRoll" title="%{perceptionRoll}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Perception}} {{Base Chance = [[@{intelligenceChance}[Intelligence Chance]+@{enhancedPerceptionModifier}[Perception Modifier]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
</div>
</div>
<div class="subitem-characteristics-perception-stat-container">
<input type="text" value="Vision" name="attr_perceptionVisionLabel" title="@{perceptionVisionLabel}" maxlength="12" tabindex="30">
<div class="subitem-characteristics-perception-column-container">
<input type="text" name="attr_perceptionEnhanced" title="@{perceptionEnhanced}" value="11" readonly tabindex="-1">
<span>+<input type="number" name="attr_perceptionModifierVision" title="@{perceptionModifierVision}" value="0" min="-10" max="10" step="1" tabindex="31"></span>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_perceptionRollVision" title="%{roll_perceptionRollVision}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Perception - @{perceptionVisionLabel} }} {{Base Chance = [[@{intelligenceChance}[Intelligence Chance]+@{enhancedPerceptionModifier}[Perception Modifier]+@{perceptionModifierVision}[@{perceptionVisionLabel} Modifier]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
</div>
</div>
<div class="subitem-characteristics-perception-stat-container">
<input type="text" value="Hearing" name="attr_perceptionHearingLabel" title="@{perceptionHearingLabel}" maxlength="12" tabindex="32">
<div class="subitem-characteristics-perception-column-container">
<input type="text" name="attr_perceptionEnhanced" title="@{perceptionEnhanced}" value="11" readonly tabindex="-1">
<span>+<input type="number" name="attr_perceptionModifierHearing" title="@{perceptionModifierHearing}" value="0" min="-10" max="10" step="1" tabindex="33"></span>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_perceptionRollHearing" title="%{roll_perceptionRollHearing}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Perception - @{perceptionHearingLabel} }} {{Base Chance = [[?{Modifiers|0}+@{intelligenceChance}[Intelligence Chance]+@{enhancedPerceptionModifier}[Perception Modifier]+@{perceptionModifierHearing}[@{perceptionHearingLabel} Modifier]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
</div>
</div>
<div class="subitem-characteristics-perception-stat-container">
<input type="text" value="Smell" name="attr_perceptionSmellLabel" title="@{perceptionSmellLabel}" maxlength="12" tabindex="34">
<div class="subitem-characteristics-perception-column-container">
<input type="text" name="attr_perceptionEnhanced" title="@{perceptionEnhanced}" value="11" readonly tabindex="-1">
<span>+<input type="number" name="attr_perceptionModifierSmell" title="@{perceptionModifierSmell}" value="0" min="-10" max="10" step="1" tabindex="35"></span>
<button type="roll" class="button buttonRoll" tabindex="-1" name="roll_perceptionRollSmell" title="%{roll_perceptionRollSmell}" value="&{template:custom} {{title=@{character_name} - @{character_title}}} {{subtitle= Uses Perception - @{perceptionSmellLabel} }} {{Base Chance = [[?{Modifiers|0}+@{intelligenceChance}[Intelligence Chance]+@{enhancedPerceptionModifier}[Perception Modifier]+@{perceptionModifierSmell}[@{perceptionSmellLabel} Modifier]+?{Modifiers|0}[Modifier]]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- --------------------------------------------------------------------------------- -->
<!-- Gear, weapons, and armor tab -->
<!-- --------------------------------------------------------------------------------- -->
<div class="sheet-gear">
<div class="grid-container-tab-gear">
<div class="item-tab-gear-flex-container-encumbrance">
<div class="subitem-tab-gear-flex-container-encumbrance">
<h1>Lift</h1>
<h1>Weight</h1>
<input type="number" name="attr_liftWeight" title="@{liftWeight}" value="100" readonly tabindex="-1"/>
</div>
<div class="subitem-tab-gear-flex-container-encumbrance">
<h1>Free</h1>
<h1>Carry</h1>
<input type="number" name="attr_encumbranceFreeCarry" title="@{encumbranceFreeCarry}" value="10" readonly tabindex="-1"/>
</div>
<div class="subitem-tab-gear-flex-container-encumbrance">
<h1>Carried</h1>
<h1>Load</h1>
<input type="number" name="attr_carriedWeight" title="@{carriedWeight}" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-tab-gear-flex-container-encumbrance">
<h1>END</h1>
<h1>per Turn</h1>
<input type="number" name="attr_weightEndPenalty" title="@{weightEndPenalty}" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-tab-gear-flex-container-encumbrance">
<h1>DCV & DEX</h1>
<h1>Roll Penalty</h1>
<input type="number" name="attr_weightDexDCVPenalty" title="@{weightDexDCVPenalty}" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-tab-gear-flex-container-encumbrance-bonus">
<h1>DCV</h1>
<h1>Modifier</h1>
<div class="subitem-tab-gear-plus-minus-enclosure">
<input type="text" name="attr_bonusDCVmodifier" title="@{bonusDCVmodifier}" value="0" maxlength="2" pattern="[0-9]+" tabindex="-1"/>
<div class="subitem-tab-gear-flex-container-stat">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_bonusDCVmodifierPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_bonusDCVmodifierMinus">
<span>&#10094;</span>
</button>
</div>
</div>
</div>
<div class="subitem-tab-gear-flex-container-encumbrance">
<h1>Movement</h1>
<h1>Penalty</h1>
<input type="number" name="attr_weightMovePenalty" title="@{weightMovePenalty}" value="0" readonly tabindex="-1"/>
</div>
</div>
<div class="item-tab-gear-grid-container-armor">
<div class="subitem-tab-gear-flex-container-armor">
<div class="subitem-tab-gear-flex-container-armor-row">
<h1>Armor</h1>
<h1>rPD</h1>
<h1>PD</h1>
<h1>rED</h1>
<h1>ED</h1>
<h1>END/T</h1>
<h1>ACT</h1>
<h1>&#8205;</h1>
<h1>Locations</h1>
<h1>Mass</h1>
</div>
<!-- Armor Item 01 -->
<div class="subitem-tab-gear-flex-container-armor-row">
<input type="text" name="attr_armorName01" title="@{armorName01}" value="" maxlength="20" tabindex="50"/>
<input type="number" name="attr_armorPD01" title="@{armorPD01}" step="1" value="0" min="0" step="1" tabindex="51"/>
<input type="number" name="attr_totalPD01" title="@{totalPD01}" step="1" value="0" min="0" step="1" tabindex="51.5"/>
<input type="number" name="attr_armorED01" title="@{armorED01}" step="1" value="0" min="0" step="1" tabindex="52"/>
<input type="number" name="attr_totalED01" title="@{totalED01}" step="1" value="0" min="0" step="1" tabindex="52.5"/>
<div class="custom-select">
<select name="attr_armorEND01" title="@{armorEND01}" tabindex="-1">
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="0" selected>0</option>
</select>
</div>
<div class="custom-select">
<select name="attr_armorActivation01" title="@{armorActivation01}" tabindex="-1">
<option value="15">15-</option>
<option value="14">14-</option>
<option value="13">13-</option>
<option value="12">12-</option>
<option value="11">11-</option>
<option value="10">10-</option>
<option value="9">9-</option>
<option value="8">8-</option>
<option value="18" selected>NA</option>
</select>
</div>
<button type="roll" class="button buttonRollActivate" tabindex="-1" name="roll_armorActivation01" title="%{armorActivation01}" value="&{template:custom-activate} {{title=@{character_name} - @{character_title}}} {{subtitle= Defends with @{armorName01}**}} {{Activate on = [[@{armorActivation01}]] **or less**}} {{Result = [[3d6cf6cs1]]}} {{Resistant Defense = **rPD ``@{armorPD01}`` rED ``@{armorED01}``**}} {{Total Defense = **PD ``@{totalPD01}`` ED ``@{totalED01}``**}}" >Roll</button>
<input type="text" class="armorLocationsText" name="attr_armorLocations01" title="@{armorLocations01}" maxlength="24" tabindex="54"/>
<input type="number" name="attr_armorMass01" title="@{armorMass01}" value="0" min="0" step="0.1" tabindex="55"/>
</div>
<!-- Armor Item 02 -->
<div class="subitem-tab-gear-flex-container-armor-row">
<input type="text" name="attr_armorName02" title="@{armorName02}" value="" maxlength="20" tabindex="56"/>
<input type="number" name="attr_armorPD02" title="@{armorPD02}" step="1" value="0" min="0" step="1" tabindex="57"/>
<input type="number" name="attr_totalPD02" title="@{totalPD02}" step="1" value="0" min="0" step="1" tabindex="57.5"/>
<input type="number" name="attr_armorED02" title="@{armorED02}" step="1" value="0" min="0" step="1" tabindex="58"/>
<input type="number" name="attr_totalED02" title="@{totalED02}" step="1" value="0" min="0" step="1" tabindex="58.5"/>
<div class="custom-select">
<select name="attr_armorEND02" title="@{armorEND02}" tabindex="-1">
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="0" selected>0</option>
</select>
</div>
<div class="custom-select">
<select name="attr_armorActivation02" title="@{armorActivation02}" tabindex="-1">
<option value="15">15-</option>
<option value="14">14-</option>
<option value="13">13-</option>
<option value="12">12-</option>
<option value="11">11-</option>
<option value="10">10-</option>
<option value="9">9-</option>
<option value="8">8-</option>
<option value="18" selected>NA</option>
</select>
</div>
<button type="roll" class="button buttonRollActivate" tabindex="-1" name="roll_armorActivation02" title="%{armorActivation02}" value="&{template:custom-activate} {{title=@{character_name} - @{character_title}}} {{subtitle= Defends with @{armorName02}**}} {{Activate on = [[@{armorActivation02}]] **or less**}} {{Result = [[3d6cf6cs1]]}} {{Resistant Defense = **rPD ``@{armorPD02}`` rED ``@{armorED02}``**}} {{Total Defense = **PD ``@{totalPD02}`` ED ``@{totalED02}``**}}" >Roll</button>
<input type="text" class="armorLocationsText" name="attr_armorLocations02" title="@{armorLocations02}" maxlength="24" tabindex="59"/>
<input type="number" name="attr_armorMass02" title="@{armorMass02}" value="0" min="0" step="0.1" tabindex="60"/>
</div>
<!-- Armor Item 03 -->
<div class="subitem-tab-gear-flex-container-armor-row">
<input type="text" name="attr_armorName03" title="@{armorName03}" value="" maxlength="20" tabindex="61"/>
<input type="number" name="attr_armorPD03" title="@{armorPD03}" step="1" value="0" min="0" step="1" tabindex="62"/>
<input type="number" name="attr_totalPD03" title="@{totalPD03}" step="1" value="0" min="0" step="1" tabindex="62.5"/>
<input type="number" name="attr_armorED03" title="@{armorED03}" step="1" value="0" min="0" step="1" tabindex="63"/>
<input type="number" name="attr_totalED03" title="@{totalED03}" step="1" value="0" min="0" step="1" tabindex="63.5"/>
<div class="custom-select">
<select name="attr_armorEND03" title="@{armorEND03}" tabindex="-1">
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="0" selected>0</option>
</select>
</div>
<div class="custom-select">
<select name="attr_armorActivation03" title="@{armorActivation03}" tabindex="-1">
<option value="15">15-</option>
<option value="14">14-</option>
<option value="13">13-</option>
<option value="12">12-</option>
<option value="11">11-</option>
<option value="10">10-</option>
<option value="9">9-</option>
<option value="8">8-</option>
<option value="18" selected>NA</option>
</select>
</div>
<button type="roll" class="button buttonRollActivate" tabindex="-1" name="roll_armorActivation03" title="%{armorActivation03}" value="&{template:custom-activate} {{title=@{character_name} - @{character_title}}} {{subtitle= Defends with @{armorName03}**}} {{Activate on = [[@{armorActivation03}]] **or less**}} {{Result = [[3d6cf6cs1]]}} {{Resistant Defense = **rPD ``@{armorPD03}`` rED ``@{armorED03}``**}} {{Total Defense = **PD ``@{totalPD03}`` ED ``@{totalED03}``**}}" >Roll</button>
<input type="text" class="armorLocationsText" name="attr_armorLocations03" title="@{armorLocations03}" maxlength="24" tabindex="64"/>
<input type="number" name="attr_armorMass03" title="@{armorMass03}" value="0" min="0" step="0.1" tabindex="65"/>
</div>
<!-- Armor Item 04 -->
<div class="subitem-tab-gear-flex-container-armor-row">
<input type="text" name="attr_armorName04" title="@{armorName04}" value="" maxlength="20" tabindex="66"/>
<input type="number" name="attr_armorPD04" title="@{armorPD04}" step="1" value="0" min="0" step="1" tabindex="67"/>
<input type="number" name="attr_totalPD04" title="@{totalPD04}" step="1" value="0" min="0" step="1" tabindex="67.5"/>
<input type="number" name="attr_armorED04" title="@{armorED04}" step="1" value="0" min="0" step="1" tabindex="68"/>
<input type="number" name="attr_totalED04" title="@{totalED04}" step="1" value="0" min="0" step="1" tabindex="68.5"/>
<div class="custom-select">
<select name="attr_armorEND04" title="@{armorEND04}" tabindex="-1">
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="0" selected>0</option>
</select>
</div>
<div class="custom-select">
<select name="attr_armorActivation04" title="@{armorActivation04}" tabindex="-1">
<option value="15">15-</option>
<option value="14">14-</option>
<option value="13">13-</option>
<option value="12">12-</option>
<option value="11">11-</option>
<option value="10">10-</option>
<option value="9">9-</option>
<option value="8">8-</option>
<option value="18" selected>NA</option>
</select>
</div>
<button type="roll" class="button buttonRollActivate" tabindex="-1" name="roll_armorActivation04" title="%{armorActivation04}" value="&{template:custom-activate} {{title=@{character_name} - @{character_title}}} {{subtitle= Defends with @{armorName04}**}} {{Activate on = [[@{armorActivation04}]] **or less**}} {{Result = [[3d6cf6cs1]]}} {{Resistant Defense = **rPD ``@{armorPD04}`` rED ``@{armorED04}``**}} {{Total Defense = **PD ``@{totalPD04}`` ED ``@{totalED04}``**}}" >Roll</button>
<input type="text" class="armorLocationsText" name="attr_armorLocations04" title="@{armorLocations04}" maxlength="24" tabindex="69"/>
<input type="number" name="attr_armorMass04" title="@{armorMass04}" value="0" min="0" step="0.1" tabindex="70"/>
</div>
</div>
<!-- Shield -->
<div class="subitem-tab-gear-flex-container-shield">
<div class="subitem-tab-gear-flex-container-shield-row">
<h1>Shield</h1>
<h1>DCV</h1>
<h1>Damage</h1>
<h1>N</h1>
<h1>&#8205;</h1>
<h1>OCV</h1>
<h1>STUNx</h1>
<h1>STR</h1>
<h1>END</h1>
<h1>BODY</h1>
<h1>DEF</h1>
<h1>Mass</h1>
</div>
<input type="hidden" name="attr_targetOCVpenalty" value="0"/>
<input type="hidden" name="attr_targetHitRoll" value="3d6cs0cf0"/>
<div class="subitem-tab-gear-flex-container-shield-row">
<input type="text" name="attr_shieldName" title="@{shieldName}" value="" maxlength="20" tabindex="76"/>
<input type="number" name="attr_shieldDCV" title="@{shieldDCV}" step="1" min="0" value="0" tabindex="77"/>
<input type="text" name="attr_shieldDamage" title="@{shieldDamage}" step="1" min="0" value="0" maxlength="16" tabindex="78"/>
<label class="container-checkbox-small">
<input type="checkbox" checked="checked" name="attr_shieldNormalDamage">
<span class="checkmark-small" title="@{shieldNormalDamage}"></span>
</label>
<button type="action" class="button buttonRollShieldAttack" tabindex="-1" name="act_attackShield" title="%{attackShield}">Roll</button>
<input type="number" name="attr_shieldOCV" title="@{shieldOCV}" step="1" min="-10" value="0" tabindex="79"/>
<input type="number" name="attr_shieldStunMod" title="@{shieldStunMod}" value="0" min="-2" step="1" tabindex="80"/>
<input type="number" name="attr_shieldStrength" title="@{shieldStrength}" step="1" min="0" value="0" tabindex="81"/>
<input type="text" name="attr_shieldEndurance" title="@{shieldEndurance}" value="0" readonly tabindex="-1"/>
<input type="number" name="attr_shieldBody" title="@{shieldBody}" step="1" min="0" value="0" tabindex="83"/>
<input type="number" name="attr_shieldDefense" title="@{shieldDefense}" step="1" min="0" value="0" tabindex="84"/>
<input type="number" name="attr_shieldMass" title="@{shieldMass}" step="0.1" min="0" value="0" tabindex="85"/>
</div>
</div>
</div>
<div class="item-tab-gear-flex-container-weapons">
<div class="subitem-tab-gear-flex-container-weapon-row">
<h1>Weapons</h1>
<h1>Damage</h1>
<h1>N</h1>
<h1>&#8205;</h1>
<h1>OCV</h1>
<h1>RMod</h1>
<h1>STUNx</h1>
<h1>Shots</h1>
<h1>STR</h1>
<h1>END</h1>
<h1>Range</h1>
<h1>AoE</h1>
<h1>Mass</h1>
</div>
<!-- Weapon 01 -->
<div class="subitem-tab-gear-flex-container-weapon-row">
<input type="text" name="attr_weaponName01" title="@{weaponName01}" value="" maxlength="20" tabindex="86"/>
<input type="text" name="attr_weaponDamage01" title="@{weaponDamage01}" value="0" maxlength="16" tabindex="87"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponNormalDamage01">
<span class="checkmark-small" title="@{weaponNormalDamage01}"></span>
</label>
<button type="action" class="button buttonRollAttack" tabindex="-1" name="act_attackWeapon01" title="%{attackWeapon01}">Roll</button>
<input type="number" name="attr_weaponOCV01" title="@{weaponOCV01}" step="1" value="0" tabindex="88"/>
<input type="number" name="attr_weaponRangeMod01" title="@{weaponRangeMod01}" step="1" value="0" tabindex="89"/>
<input type="number" name="attr_weaponStunMod01" title="@{weaponStunMod01}" value="0" min="-2" step="1" tabindex="90"/>
<input type="number" name="attr_weaponShots01" title="@{weaponShots01}" step="1" min="0" value ="0" tabindex="91"/>
<input type="number" name="attr_weaponStrength01" title="@{weaponStrength01}" step="1" min="0" value="0" tabindex="92"/>
<input type="text" name="attr_weaponEndurance01" title="@{weaponEndurance01}" value="0" readonly tabindex="-1"/>
<input type="number" name="attr_weaponRange01" title="@{weaponRange01}" step="1" min="0" value="0" tabindex="93"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponAreaEffect01">
<span class="checkmark-small" title="@{weaponAreaEffect01}"></span>
</label>
<input type="number" name="attr_weaponMass01" title="@{weaponMass01}" step="0.1" min="0" value="0" tabindex="94"/>
</div>
<!-- Weapon 02 -->
<div class="subitem-tab-gear-flex-container-weapon-row">
<input type="text" name="attr_weaponName02" title="@{weaponName02}" value="" maxlength="20" tabindex="95"/>
<input type="text" name="attr_weaponDamage02" title="@{weaponDamage02}" value="0" maxlength="16" tabindex="96"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponNormalDamage02">
<span class="checkmark-small" title="@{weaponNormalDamage02}"></span>
</label>
<button type="action" class="button buttonRollAttack" tabindex="-1" name="act_attackWeapon02" title="%{attackWeapon02}">Roll</button>
<input type="number" name="attr_weaponOCV02" title="@{weaponOCV02}" step="1" value="0" tabindex="97"/>
<input type="number" name="attr_weaponRangeMod02" title="@{weaponRangeMod02}" step="1" value="0" tabindex="98"/>
<input type="number" name="attr_weaponStunMod02" title="@{weaponStunMod02}" value="0" min="-2" step="1" tabindex="99"/>
<input type="number" name="attr_weaponShots02" title="@{weaponShots02}" step="1" min="0" value="0" tabindex="100"/>
<input type="number" name="attr_weaponStrength02" title="@{weaponStrength02}" step="1" min="0" value="0" tabindex="101"/>
<input type="text" name="attr_weaponEndurance02" title="@{weaponEndurance02}" value="0" readonly tabindex="-1"/>
<input type="number" name="attr_weaponRange02" title="@{weaponRange02}" step="1" min="0" value="0" tabindex="102"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponAreaEffect02">
<span class="checkmark-small" title="@{weaponAreaEffect02}"></span>
</label>
<input type="number" name="attr_weaponMass02" title="@{weaponMass02}" step="0.1" min="0" value="0" tabindex="103"/>
</div>
<!-- Weapon 03 -->
<div class="subitem-tab-gear-flex-container-weapon-row">
<input type="text" name="attr_weaponName03" title="@{weaponName03}" value="" maxlength="20" tabindex="104"/>
<input type="text" name="attr_weaponDamage03" title="@{weaponDamage03}" value="0" maxlength="16" tabindex="105"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponNormalDamage03">
<span class="checkmark-small" title="@{weaponNormalDamage03}"></span>
</label>
<button type="action" class="button buttonRollAttack" tabindex="-1" name="act_attackWeapon03" title="%{attackWeapon03}">Roll</button>
<input type="number" name="attr_weaponOCV03" title="@{weaponOCV03}" step="1" value="0" tabindex="106"/>
<input type="number" name="attr_weaponRangeMod03" title="@{weaponRangeMod03}" step="1" value="0" tabindex="107"/>
<input type="number" name="attr_weaponStunMod03" title="@{weaponStunMod03}" value="0" min="-2" step="1" tabindex="108"/>
<input type="number" name="attr_weaponShots03" title="@{weaponShots03}" step="1" min="0" value="0" tabindex="109"/>
<input type="number" name="attr_weaponStrength03" title="@{weaponStrength03}" step="1" min="0" value="0" tabindex="110"/>
<input type="text" name="attr_weaponEndurance03" title="@{weaponEndurance03}" value="0" readonly tabindex="-1"/>
<input type="number" name="attr_weaponRange03" title="@{weaponRange03}" step="1" min="0" value="0" tabindex="111"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponAreaEffect03">
<span class="checkmark-small" title="@{weaponAreaEffect03}"></span>
</label>
<input type="number" name="attr_weaponMass03" title="@{weaponMass03}" step="0.1" min="0" value="0" tabindex="112"/>
</div>
<!-- Weapon 04 -->
<div class="subitem-tab-gear-flex-container-weapon-row">
<input type="text" name="attr_weaponName04" title="@{weaponName04}" value="" maxlength="20" tabindex="113"/>
<input type="text" name="attr_weaponDamage04" title="@{weaponDamage04}" value="0" maxlength="16" tabindex="114"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponNormalDamage04">
<span class="checkmark-small" title="@{weaponNormalDamage04}"></span>
</label>
<button type="action" class="button buttonRollAttack" tabindex="-1" name="act_attackWeapon04" title="@{attackWeapon04}">Roll</button>
<input type="number" name="attr_weaponOCV04" title="@{weaponOCV04}" step="1" value="0" tabindex="115"/>
<input type="number" name="attr_weaponRangeMod04" title="@{weaponRangeMod04}" step="1" value="0" tabindex="116"/>
<input type="number" name="attr_weaponStunMod04" title="@{weaponStunMod04}" value="0" min="-2" step="1" tabindex="117"/>
<input type="number" name="attr_weaponShots04" title="@{weaponShots04}" step="1" min="0" value="0" tabindex="118"/>
<input type="number" name="attr_weaponStrength04" title="@{weaponStrength04}" step="1" min="0" value="0" tabindex="119"/>
<input type="text" name="attr_weaponEndurance04" title="@{weaponEndurance04}" value="0" readonly tabindex="-1"/>
<input type="number" name="attr_weaponRange04" title="@{weaponRange04}" step="1" min="0" value="0" tabindex="120"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponAreaEffect04">
<span class="checkmark-small" title="@{weaponAreaEffect04}"></span>
</label>
<input type="number" name="attr_weaponMass04" title="@{weaponMass04}" step="0.1" min="0" value="0" tabindex="121"/>
</div>
<!-- Weapon 05 -->
<div class="subitem-tab-gear-flex-container-weapon-row">
<input type="text" name="attr_weaponName05" title="@{weaponName05}" vvalue="" maxlength="20" tabindex="122"/>
<input type="text" name="attr_weaponDamage05" title="@{weaponDamage05}" value="0" maxlength="16" tabindex="123"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponNormalDamage05">
<span class="checkmark-small" title="@{weaponNormalDamage05}"></span>
</label>
<button type="action" class="button buttonRollAttack" tabindex="-1" name="act_attackWeapon05" title="%{attackWeapon05}">Roll</button>
<input type="number" name="attr_weaponOCV05" title="@{weaponOCV05}" step="1" value="0" tabindex="124"/>
<input type="number" name="attr_weaponRangeMod05" title="@{weaponRangeMod05}" step="1" value="0" tabindex="125"/>
<input type="number" name="attr_weaponStunMod05" title="@{weaponStunMod05}" value="0" min="-2" step="1" tabindex="126"/>
<input type="number" name="attr_weaponShots05" title="@{weaponShots05}" step="1" min="0" value="0" tabindex="127"/>
<input type="number" name="attr_weaponStrength05" title="@{weaponStrength05}" step="1" min="0" value="0" tabindex="128"/>
<input type="text" name="attr_weaponEndurance05" title="@{weaponEndurance05}" value="0" readonly tabindex="-1"/>
<input type="number" name="attr_weaponRange05" title="@{weaponRange05}" step="1" min="0" value="0" tabindex="129"/>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_weaponAreaEffect05">
<span class="checkmark-small" title="@{weaponAreaEffect05}"></span>
</label>
<input type="number" name="attr_weaponMass05" title="@{weaponMass05}" step="0.1" min="0" value="0" tabindex="130"/>
</div>
</div>
<div class="item-tab-gear-flex-container-equipment">
<div class="subitem-tab-gear-flex-container-equipment">
<h1>Equipment</h1>
<h1>Mass</h1>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText01" title="@{equipText01}" maxlength="30" tabindex="131"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp01">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown01">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass01" title="@{equipMass01}" min="0" step="0.1" tabindex="132"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText02" title="@{equipText02}" maxlength="30" tabindex="134"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp02">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown02">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass02" title="@{equipMass02}" min="0" step="0.1" tabindex="135"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText03" title="@{equipText03}" maxlength="30" tabindex="136"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp03">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown03">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass03" title="@{equipMass03}" min="0" step="0.1" tabindex="137"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText04" title="@{equipText04}" maxlength="30" tabindex="138"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp04">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown04">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass04" title="@{equipMass04}" min="0" step="0.1" tabindex="139"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText05" title="@{equipText05}" maxlength="30" tabindex="140"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp05">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown05">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass05" title="@{equipMass05}" min="0" step="0.1" tabindex="141"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText06" title="@{equipText06}" maxlength="30" tabindex="142"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp06">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown06">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass06" title="@{equipMass06}" min="0" step="0.1" tabindex="143"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText07" title="@{equipText07}" maxlength="30" tabindex="144"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp07">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown07">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass07" title="@{equipMass07}" min="0" step="0.1" tabindex="145"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText08" title="@{equipText08}" maxlength="30" tabindex="146"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp08">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown08">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass08" title="@{equipMass08}" min="0" step="0.1" tabindex="147"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText09" title="@{equipText09}" maxlength="30" tabindex="148"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp09">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown09">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass09" title="@{equipMass09}" min="0" step="0.1" tabindex="149"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText10" title="@{equipText10}" maxlength="30" tabindex="150"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp10">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown10">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass10" title="@{equipMass10}" min="0" step="0.1" tabindex="151"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText11" title="@{equipText11}" maxlength="30" tabindex="152"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp11">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown11">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass11" title="@{equipMass11}" min="0" step="0.1" tabindex="153"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText12" title="@{equipText12}" maxlength="30" tabindex="154"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp12">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown12">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass12" title="@{equipMass12}" min="0" step="0.1" tabindex="155"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText13" title="@{equipText13}" maxlength="30" tabindex="156"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp13">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown13">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass13" title="@{equipMass13}" min="0" step="0.1"/ tabindex="157"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText14" title="@{equipText14}" maxlength="30" tabindex="158"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp14">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown14">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass14" title="@{equipMass14}" min="0" step="0.1" tabindex="159"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText15" title="@{equipText15}" maxlength="30" tabindex="160"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp15">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown15">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass15" title="@{equipMass15}" min="0" step="0.1" tabindex="161"/>
</div>
<div class="subitem-tab-gear-flex-container-equipment">
<input type="text" name="attr_equipText16" title="@{equipText16}" maxlength="30" tabindex="162"/>
<div class="gear-mover-plus-minus-enclosure">
<div class="gear-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_equipUp16">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_equipDown16">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="number" name="attr_equipMass16" title="@{equipText16}" min="0" step="0.1" tabindex="163"/>
</div>
</div>
<!-- Tab Gear Health Status -->
<div class="item-gear-health">
<h2>BODY</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentBODY" title="@{CurrentBODY}" value="10" maxlength="3" pattern="[0-9]+" tabindex="-1"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_bodyPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_bodyMinus">
<span>&#10094;</span>
</button>
</div>
</div>
<h2>STUN</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentSTUN" title="@{CurrentSTUN}" value="20" maxlength="3" pattern="[0-9]+" tabindex="-1"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_stunPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_stunMinus">
<span>&#10094;</span>
</button>
</div>
</div>
<h2>END</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentEND" title="@{CurrentEND}" value="20" maxlength="3" pattern="[0-9]+" tabindex="-1"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_endurancePlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_enduranceMinus">
<span>&#10094;</span>
</button>
</div>
</div>
<button type="action" class="button buttonRecover" tabindex="-1" name="act_recoverHealth" title="%{recoverHealth}" title="%{recoverHealth}">Recover</button>
<button type="action" class="button buttonReset" tabindex="-1" name="act_resetHealth" title="%{resetHealth}">Reset</button>
</div>
<!-- Maneuvers Container -->
<div class="item-tab-gear-slide-container">
<input type="hidden" class="item-gear-slideshow" name="attr_gearSlideSelection" value="1" min="1" step="1" max="4"/>
<input type="hidden" name="attr_totalNumberOfGearSlides" value="4"/>
<div class="item-tab-gear-slide-flex-container-maneuvers">
<!-- Slide showing basic Hero combat maneuvers a flex container for rows of flex columns -->
<div class="subitem-tab-gear-slide-flex-container-maneuvers-heading">
<h1>Maneuver</h1>
<h1>Phase</h1>
<h1>OCV</h1>
<h1>DCV</h1>
<h1>Effects</h1>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Block</h1>
<h2>1/2</h2>
<h2>+0</h2>
<h2>+0</h2>
<h2>Block, Abort</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Brace</h1>
<h2>0</h2>
<h2>+2</h2>
<h2>1/2</h2>
<h2>+2 OCV vs. Range Mod.</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Disarm</h1>
<h2>1/2</h2>
<h2>-2</h2>
<h2>+0</h2>
<h2>Strength vs Strength</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-dark-row">
<h1>Dodge</h1>
<h2>1/2</h2>
<h2></h2>
<h2>+3</h2>
<h2>Abort, vs. all attacks</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-dark-row">
<h1>Grab</h1>
<h2>1/2</h2>
<h2>-1*</h2>
<h2>-2*</h2>
<h2>Grab two limbs</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-dark-row">
<h1>Grab By</h1>
<h2>1/2</h2>
<h2>-3</h2>
<h2>-4</h2>
<h2>Move, grab, +v/10 STR</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Haymaker</h1>
<h2>1/2*</h2>
<h2>+0</h2>
<h2>-5</h2>
<h2>+4 DC to attack</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Move By</h1>
<h2>1/2</h2>
<h2>-2</h2>
<h2>-2</h2>
<h2>STR/2 +v/10; take 1/3</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Move Through</h1>
<h2>1/2</h2>
<h2>-v/10</h2>
<h2>-3</h2>
<h2>STR+v/6; take 1/2 or full</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-dark-row">
<h1>Multiple Attack</h1>
<h2>1</h2>
<h2>var.</h2>
<h2>1/2</h2>
<h2>Attack multiple times</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-dark-row">
<h1>Set</h1>
<h2>1</h2>
<h2>+1*</h2>
<h2>+0</h2>
<h2>Ranged attacks. May Brace</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-dark-row">
<h1>Shove</h1>
<h2>1/2</h2>
<h2>-1</h2>
<h2>-1</h2>
<h2>Push 1m per 5 STR</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Strike</h1>
<h2>1/2</h2>
<h2>+0</h2>
<h2>+0</h2>
<h2>Damage by STR or weapon</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Throw</h1>
<h2>1/2</h2>
<h2>+0</h2>
<h2>+0</h2>
<h2>Throw with STR damage</h2>
</div>
<div class="subitem-tab-gear-slide-flex-container-maneuvers-light-row">
<h1>Trip</h1>
<h2>1/2</h2>
<h2>-1</h2>
<h2>-2</h2>
<h2>Knock target prone</h2>
</div>
</div>
<div class="item-tab-gear-slide-flex-container-martial-maneuvers">
<!-- Slide showing special martial arts maneuvers. Entries need to be supplied by the user. -->
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-heading">
<h1>Martial Maneuver</h1>
<h1>Phase</h1>
<h1>OCV</h1>
<h1>DCV</h1>
<h1>Effects</h1>
</div>
<div class="item-tab-gear-slide-flex-container-martial-maneuvers-block">
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-row">
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points">
<input type="text" value="" maxlength="24" name="attr_martialManeuverName01" title="@{martialManeuverName01}" tabindex="164"/>
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points-row">
<h1>CP:</h1>
<input type="number" value="0" min="0" step="1" name="attr_martialManeuverCP01" title="@{martialManeuverCP01}" tabindex="165"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showMartialRoll01" title="%{showMartialRoll01}" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Martial Maneuver - @{martialManeuverName01}}} {{Phases=@{martialManeuverPhase01}}} {{OCV = @{martialManeuverOCV01}}} {{DCV = @{martialManeuverDCV01}}} {{desc=@{martialManeuverEffect01}}}">Show</button>
</div>
</div>
<input type="text" value="1/2" name="attr_martialManeuverPhase01" title="@{martialManeuverPhase01}" tabindex="166"/>
<input type="text" value="+0" name="attr_martialManeuverOCV01" title="@{martialManeuverOCV01}" tabindex="167"/>
<input type="text" value="+0" name="attr_martialManeuverDCV01" title="@{martialManeuverDCV01}" tabindex="168"/>
<textarea value="" name="attr_martialManeuverEffect01" title="@{martialManeuverEffect01}" tabindex="169"/>
</div>
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-row">
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points">
<input type="text" value="" maxlength="24" name="attr_martialManeuverName02" title="@{martialManeuverName02}" tabindex="170"/>
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points-row">
<h1>CP:</h1>
<input type="number" value="0" min="0" step="1" name="attr_martialManeuverCP02" title="@{martialManeuverCP02}" tabindex="171"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showMartialRoll02" title="%{showMartialRoll02}" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Martial Maneuver - @{martialManeuverName02}}} {{Phases=@{martialManeuverPhase02}}} {{OCV = @{martialManeuverOCV02}}} {{DCV = @{martialManeuverDCV02}}} {{desc=@{martialManeuverEffect02}}}">Show</button>
</div>
</div>
<input type="text" value="1/2" name="attr_martialManeuverPhase02" title="@{martialManeuverPhase02}" tabindex="172"/>
<input type="text" value="+0" name="attr_martialManeuverOCV02" title="@{martialManeuverOCV02}" tabindex="173"/>
<input type="text" value="+0" name="attr_martialManeuverDCV02" title="@{martialManeuverDCV02}" tabindex="174"/>
<textarea value="" name="attr_martialManeuverEffect02" title="@{martialManeuverEffect02}" tabindex="175"/>
</div>
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-row">
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points">
<input type="text" value="" maxlength="24" name="attr_martialManeuverName03" title="@{martialManeuverName03}" tabindex="176"/>
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points-row">
<h1>CP:</h1>
<input type="number" value="0" min="0" step="1" name="attr_martialManeuverCP03" title="@{martialManeuverCP03}" tabindex="177"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showMartialRoll03" title="%{showMartialRoll03}" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Martial Maneuver - @{martialManeuverName03}}} {{Phases=@{martialManeuverPhase03}}} {{OCV = @{martialManeuverOCV03}}} {{DCV = @{martialManeuverDCV03}}} {{desc=@{martialManeuverEffect03}}}">Show</button>
</div>
</div>
<input type="text" value="1/2" name="attr_martialManeuverPhase03" title="@{martialManeuverPhase03}" tabindex="178"/>
<input type="text" value="+0" name="attr_martialManeuverOCV03" title="@{martialManeuverOCV03}" tabindex="179"/>
<input type="text" value="+0" name="attr_martialManeuverDCV03" title="@{martialManeuverDCV03}" tabindex="180"/>
<textarea value="" name="attr_martialManeuverEffect03" title="@{martialManeuverEffect03}" tabindex="181"/>
</div>
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-row">
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points">
<input type="text" value="" maxlength="24" name="attr_martialManeuverName04" title="@{martialManeuverName04}" tabindex="182"/>
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points-row">
<h1>CP:</h1>
<input type="number" value="0" min="0" step="1" name="attr_martialManeuverCP04" title="@{martialManeuverCP04}" tabindex="183"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showMartialRoll04" title="%{showMartialRoll04}" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Martial Maneuver - @{martialManeuverName04}}} {{Phases=@{martialManeuverPhase04}}} {{OCV = @{martialManeuverOCV04}}} {{DCV = @{martialManeuverDCV04}}} {{desc=@{martialManeuverEffect04}}}">Show</button>
</div>
</div>
<input type="text" value="1/2" name="attr_martialManeuverPhase04" title="@{martialManeuverPhase04}" tabindex="184"/>
<input type="text" value="+0" name="attr_martialManeuverOCV04" title="@{martialManeuverOCV04}" tabindex="185"/>
<input type="text" value="+0" name="attr_martialManeuverDCV04" title="@{martialManeuverDCV04}" tabindex="186"/>
<textarea value="" name="attr_martialManeuverEffect04" title="@{martialManeuverEffect04}" tabindex="187"/>
</div>
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-row">
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points">
<input type="text" value="" maxlength="24" name="attr_martialManeuverName05" title="@{martialManeuverName05}" tabindex="188"/>
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points-row">
<h1>CP:</h1>
<input type="number" value="0" min="0" step="1" name="attr_martialManeuverCP05" title="@{martialManeuverCP05}" tabindex="189"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showMartialRoll05" title="%{showMartialRoll05}" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Martial Maneuver - @{martialManeuverName05}}} {{Phases=@{martialManeuverPhase05}}} {{OCV = @{martialManeuverOCV05}}} {{DCV = @{martialManeuverDCV05}}} {{desc=@{martialManeuverEffect05}}}">Show</button>
</div>
</div>
<input type="text" value="1/2" name="attr_martialManeuverPhase05" title="@{martialManeuverPhase05}" tabindex="190"/>
<input type="text" value="+0" name="attr_martialManeuverOCV05" title="@{martialManeuverOCV05}" tabindex="191"/>
<input type="text" value="+0" name="attr_martialManeuverDCV05" title="@{martialManeuverDCV05}" tabindex="192"/>
<textarea value="" name="attr_martialManeuverEffect05" title="@{martialManeuverEffect05}" tabindex="193"/>
</div>
<div class="subitem-tab-gear-slide-flex-container-martial-maneuvers-row">
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points">
<input type="text" value="" maxlength="24" name="attr_martialManeuverName06" title="@{martialManeuverName06}" tabindex="194"/>
<div class="subitem-tab-gear-slide-flex-container-martial-name-and-points-row">
<h1>CP:</h1>
<input type="number" value="0" min="0" step="1" name="attr_martialManeuverCP06" title="@{martialManeuverCP06}" tabindex="195"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showMartialRoll06" title="%{showMartialRoll06}" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Martial Maneuver - @{martialManeuverName06}}} {{Phases=@{martialManeuverPhase06}}} {{OCV = @{martialManeuverOCV06}}} {{DCV = @{martialManeuverDCV06}}} {{desc=@{martialManeuverEffect06}}}">Show</button>
</div>
</div>
<input type="text" value="1/2" name="attr_martialManeuverPhase06" title="@{martialManeuverPhase06}" tabindex="196"/>
<input type="text" value="+0" name="attr_martialManeuverOCV06" title="@{martialManeuverOCV06}" tabindex="197"/>
<input type="text" value="+0" name="attr_martialManeuverDCV06" title="@{martialManeuverDCV06}" tabindex="198"/>
<textarea value="" name="attr_martialManeuverEffect06" title="@{martialManeuverEffect06}" tabindex="199"/>
</div>
</div>
<div class="subitem-tab-gear-slide-flex-container-standard-attack">
<h1>Basic Attack</h1>
<span><button type="action" class="button buttonRollNormalAttack" tabindex="-1" name="act_standardAttackRoll" title="%{standardAttackRoll}">Roll</button></span>
<h2>1/2</h2>
<h2>+0</h2>
<h2>+0</h2>
<h2 title="@{hiddenManeuverDamage01}">Normal damage STR/5</h2>
</div>
<!-- Range Modifier Table -->
<div class="subitem-tab-gear-slide-flex-container-range-modifiers">
<div class="subitem-tab-gear-slide-range-modifier-container-first">
<h2>Range (m)</h2>
<h2>OCV Mod:</h2>
</div>
<div class="subitem-tab-gear-slide-range-modifier-container">
<h2>0-8</h2>
<h2>0</h2>
</div>
<div class="subitem-tab-gear-slide-range-modifier-container">
<h2>9-16</h2>
<h2>-2</h2>
</div>
<div class="subitem-tab-gear-slide-range-modifier-container">
<h2>17-32</h2>
<h2>-4</h2>
</div>
<div class="subitem-tab-gear-slide-range-modifier-container">
<h2>33-64</h2>
<h2>-6</h2>
</div>
<div class="subitem-tab-gear-slide-range-modifier-container">
<h2>65-125</h2>
<h2>-8</h2>
</div>
<div class="subitem-tab-gear-slide-range-modifier-container">
<h2>126-250</h2>
<h2>-10</h2>
</div>
</div>
</div>
<div class="item-tab-gear-slide-flex-container-hit-locations">
<div class="item-gear-slide-container-hit-locations-flex-row">
<!-- Special target locations -->
<div class="item-gear-slide-flex-container-hit-locations-special">
<div class="subitem-gear-slide-flex-container-hit-locations-special-heading">
<h1>Target</h1>
<h1>Roll</h1>
<h1>Location</h1>
<h1>OCV</h1>
</div>
<div class="subitem-gear-slide-flex-container-hit-locations-special-top-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="1" checked>
<span class="custom-radio-button"></span>
</label>
<h1>3d6</h1>
<h1>Any</h1>
<h1>0</h1>
</div>
<div class="subitem-gear-slide-flex-container-hit-locations-special-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="12">
<span class="custom-radio-button"></span>
</label>
<h1>1d6+3</h1>
<h1>Head Shot</h1>
<h1>-4</h1>
</div>
<div class="subitem-gear-slide-flex-container-hit-locations-special-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="13">
<span class="custom-radio-button"></span>
</label>
<h1>2d6+1</h1>
<h1>High Shot</h1>
<h1>-2</h1>
</div>
<div class="subitem-gear-slide-flex-container-hit-locations-special-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="14">
<span class="custom-radio-button"></span>
</label>
<h1>2d6+4</h1>
<h1>Body Shot</h1>
<h1>-1</h1>
</div>
<div class="subitem-gear-slide-flex-container-hit-locations-special-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="15">
<span class="custom-radio-button"></span>
</label>
<h1>2d6+7</h1>
<h1>Low Shot</h1>
<h1>-2</h1>
</div>
<div class="subitem-gear-slide-flex-container-hit-locations-special-bottom-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="16">
<span class="custom-radio-button"></span>
</label>
<h1>1d6+12</h1>
<h1>Leg Shot</h1>
<h1>-4</h1>
</div>
</div>
<!-- Targeting Options -->
<div class="item-gear-slide-container-hit-locations-options">
<div class="subitem-gear-slide-container-hit-locations-options-top">
<label class="container-checkbox-small-gray">
<input type="checkbox" name="attr_halveTargetOCVpenalty">
<span class="checkmark-small-gray" title="@{halveTargetOCVpenalty}"></span>
</label>
<h1>Half Penalty</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-options-bottom">
<h1>Apply PSL</h1>
<input type="number" name="attr_penaltySkillLevels" title="@{penaltySkillLevels}" value="0" min="0" step="1" tabindex="200"/>
</div>
</div>
</div>
<!-- Standard Hit Location Table -->
<div class="item-gear-slide-container-hit-locations-table">
<div class="subitem-gear-slide-container-hit-locations-table-heading">
<h1>Target</h1>
<h1>Roll</h1>
<h1>Location</h1>
<h1>STUNx</h1>
<h1>N STUN</h1>
<h1>BODYx</h1>
<h1>OCV</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-top-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="2">
<span class="custom-radio-button"></span>
</label>
<h1>3-5</h1>
<h1>Head</h1>
<h1>x5</h1>
<h1>x2</h1>
<h1>x2</h1>
<h1>-8</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="3">
<span class="custom-radio-button"></span>
</label>
<h1>6</h1>
<h1>Hands</h1>
<h1>x1</h1>
<h1>x1/2</h1>
<h1>x1/2</h1>
<h1>-6</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="4">
<span class="custom-radio-button"></span>
</label>
<h1>7-8</h1>
<h1>Arms</h1>
<h1>x2</h1>
<h1>x1/2</h1>
<h1>x1/2</h1>
<h1>-5</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="5">
<span class="custom-radio-button"></span>
</label>
<h1>9</h1>
<h1>Shoulders</h1>
<h1>x3</h1>
<h1>x1</h1>
<h1>x1</h1>
<h1>-5</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="6">
<span class="custom-radio-button"></span>
</label>
<h1>10-11</h1>
<h1>Chest</h1>
<h1>x3</h1>
<h1>x1</h1>
<h1>x1</h1>
<h1>-3</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="7">
<span class="custom-radio-button"></span>
</label>
<h1>12</h1>
<h1>Stomach</h1>
<h1>x4</h1>
<h1>x3/2</h1>
<h1>x1</h1>
<h1>-7</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="8">
<span class="custom-radio-button"></span>
</label>
<h1>13</h1>
<h1>Vitals</h1>
<h1>x4</h1>
<h1>x3/2</h1>
<h1>x2</h1>
<h1>-8</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="9">
<span class="custom-radio-button"></span>
</label>
<h1>14</h1>
<h1>Thighs</h1>
<h1>x2</h1>
<h1>x1</h1>
<h1>x1</h1>
<h1>-4</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-middle-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="10">
<span class="custom-radio-button"></span>
</label>
<h1>15-16</h1>
<h1>Legs</h1>
<h1>x2</h1>
<h1>x1/2</h1>
<h1>x1/2</h1>
<h1>-6</h1>
</div>
<div class="subitem-gear-slide-container-hit-locations-table-bottom-row">
<label class="custom-radio-button-container">
<input type="radio" name="attr_targetSelection" value="11">
<span class="custom-radio-button"></span>
</label>
<h1>17-18</h1>
<h1>Feet</h1>
<h1>x1</h1>
<h1>x1/2</h1>
<h1>x1/2</h1>
<h1>-8</h1>
</div>
</div>
</div>
<!-- Slide for text -->
<div class="item-tab-gear-slide-treasure-text">
<textarea name="attr_treasures" title="@{treasures}" maxlength="4096" tabindex="201"></textarea>
</div>
<button type="action" name="act_left-gear-arrow-button" tabindex="-1" class="button button-left-arrow">&#10094;</button>
<button type="action" name="act_right-gear-arrow-button" tabindex="-1" class="button button-right-arrow">&#10095;</button>
</div>
</div>
</div>
<!-- --------------------------------------------------------------------------------- -->
<!-- Skills tab -->
<!-- --------------------------------------------------------------------------------- -->
<div class="sheet-skills">
<div class="grid-container-skills-tab">
<div class="item-skillsTab-flex-container-skills-group01">
<!-- Left side skills heading -->
<div class="subitem-skillsTab-grid-container-skills-heading-left">
<div class="subitem-skillsTab-grid-container-skills-heading-left-name">
<h1>Skill</h1>
</div>
<div class="subitem-skillsTab-grid-container-skills-heading-left-type">
<h1>Type</h1>
</div>
<div class="subitem-skillsTab-grid-container-skills-heading-left-roll">
<h1>Roll</h1>
</div>
<div class="subitem-skillsTab-grid-container-skills-heading-left-cost">
<h1>CP</h1>
</div>
</div>
<!-- Skill 01 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName01" maxlength="20" tabindex="300"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp01">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown01">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-alternate-skill">
<select name="attr_skillType01">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance01" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill01" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName01}}} {{Base Chance = [[@{skillRollChance01}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}">Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP01" tabindex="301"/>
</div>
<!-- Skill 02 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName02" maxlength="20" tabindex="302"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp02">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown02">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType02">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance02" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill02" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName02}}} {{Base Chance = [[@{skillRollChance02}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP02" tabindex="303"/>
</div>
<!-- Skill 03 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName03" maxlength="20" tabindex="304"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp03">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown03">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType03">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance03" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill03" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName03}}} {{Base Chance = [[@{skillRollChance03}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP03" tabindex="305"/>
</div>
<!-- Skill 04 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName04" maxlength="20" tabindex="306"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp04">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown04">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType04">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance04" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill04" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName04}}} {{Base Chance = [[@{skillRollChance04}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP04" tabindex="307"/>
</div>
<!-- Skill 05 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName05" maxlength="20" tabindex="308"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp05">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown05">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-alternate-skill">
<select name="attr_skillType05">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance05" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill05" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName05}}} {{Base Chance = [[@{skillRollChance05}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP05" tabindex="309"/>
</div>
<!-- Skill 06 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName06" maxlength="20" tabindex="310"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp06">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown06">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType06">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance06" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill06" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName06}}} {{Base Chance = [[@{skillRollChance06}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP06" tabindex="311"/>
</div>
<!-- Skill 07 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName07" maxlength="20" tabindex="312"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp07">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown07">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType07">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance07" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill07" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName07}}} {{Base Chance = [[@{skillRollChance07}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP07" tabindex="313"/>
</div>
<!-- Skill 08 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName08" maxlength="20" tabindex="314"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp08">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown08">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType08">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance08" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill08" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName08}}} {{Base Chance = [[@{skillRollChance08}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP08" tabindex="315"/>
</div>
<!-- Skill 09 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName09" maxlength="20" tabindex="316"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp09">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown09">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType09">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance09" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill09" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName09}}} {{Base Chance = [[@{skillRollChance09}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP09" tabindex="317"/>
</div>
<!-- Skill 10 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName10" maxlength="20" tabindex="318"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp10">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown10">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType10">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance10" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill10" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName10}}} {{Base Chance = [[@{skillRollChance10}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP10" tabindex="319"/>
</div>
</div>
<!-- Skill Group 02-->
<div class="item-skillsTab-flex-container-skills-group02">
<!-- Skill 11 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName11" maxlength="20" tabindex="320"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp11">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown11">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-alternate-skill">
<select name="attr_skillType11">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance11" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill11" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName11}}} {{Base Chance = [[@{skillRollChance11}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP11" tabindex="321"/>
</div>
<!-- Skill 12 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName12" maxlength="20" tabindex="322"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp12">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown12">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType12">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance12" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill12" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName12}}} {{Base Chance = [[@{skillRollChance12}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP12" tabindex="323"/>
</div>
<!-- Skill 13 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName13" maxlength="20" tabindex="324"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp13">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown13">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType13">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance13" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill13" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName13}}} {{Base Chance = [[@{skillRollChance13}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP13" tabindex="325"/>
</div>
<!-- Skill 14 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName14" maxlength="20" tabindex="326"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp14">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown14">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType14">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance14" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill14" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName14}}} {{Base Chance = [[@{skillRollChance14}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP14" tabindex="327"/>
</div>
<!-- Skill 15 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName15" maxlength="20" tabindex="328"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp15">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown15">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-alternate-skill">
<select name="attr_skillType15">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance15" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill15" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName15}}} {{Base Chance = [[@{skillRollChance15}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP15" tabindex="329"/>
</div>
<!-- Skill 16 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName16" maxlength="20" tabindex="330"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp16">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown16">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType16">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance16" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill16" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName16}}} {{Base Chance = [[@{skillRollChance16}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP16" tabindex="331"/>
</div>
<!-- Skill 17 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName17" maxlength="20" tabindex="332"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp17">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown17">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType17">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance17" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill17" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName17}}} {{Base Chance = [[@{skillRollChance17}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP17" tabindex="333"/>
</div>
<!-- Skill 18 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName18" maxlength="20" tabindex="334"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp18">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown18">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType18">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance18" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill18" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName18}}} {{Base Chance = [[@{skillRollChance18}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP18" tabindex="335"/>
</div>
<!-- Skill 19 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName19" maxlength="20" tabindex="336"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp19">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown19">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType19">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance19" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill19" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName19}}} {{Base Chance = [[@{skillRollChance19}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP19" tabindex="337"/>
</div>
<!-- Skill 20 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName20" maxlength="20" tabindex="338"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp20">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown20">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType20">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance20" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill20" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName20}}} {{Base Chance = [[@{skillRollChance20}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP20" tabindex="339"/>
</div>
</div>
<!-- Skill Group 03-->
<div class="item-skillsTab-flex-container-skills-group03">
<!-- Skill 21 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName21" maxlength="20" tabindex="340"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp21">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown21">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-alternate-skill">
<select name="attr_skillType21">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="combat">Combat</option>
<option value="tf">TF</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance21" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill21" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName21}}} {{Base Chance = [[@{skillRollChance21}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP21" tabindex="341"/>
</div>
<!-- Skill 22 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName22" maxlength="20" tabindex="342"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp22">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown22">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType22">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance22" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill22" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName22}}} {{Base Chance = [[@{skillRollChance22}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP22" tabindex="343"/>
</div>
<!-- Skill 23 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName23" maxlength="20" tabindex="344"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp23">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown23">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType23">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance23" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill23" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName23}}} {{Base Chance = [[@{skillRollChance23}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP23" tabindex="345"/>
</div>
<!-- Skill 24 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName24" maxlength="20" tabindex="346"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp24">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown24">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType24">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance24" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill24" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName24}}} {{Base Chance = [[@{skillRollChance24}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP24" tabindex="347"/>
</div>
<!-- Skill 25 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName25" maxlength="20" tabindex="348"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp25">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown25">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-alternate-skill">
<select name="attr_skillType25">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance25" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill25" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName25}}} {{Base Chance = [[@{skillRollChance25}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP25" tabindex="349"/>
</div>
<!-- Skill 26 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName26" maxlength="20" tabindex="350"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp26">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown26">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType26">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance26" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill26" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName26}}} {{Base Chance = [[@{skillRollChance26}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP26" tabindex="351"/>
</div>
<!-- Skill 27 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName27" maxlength="20" tabindex="352"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp27">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown27">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType27">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance27" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill27" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName27}}} {{Base Chance = [[@{skillRollChance27}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP27" tabindex="353"/>
</div>
<!-- Skill 28 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName28" maxlength="20" tabindex="354"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp28">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown28">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType28">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance28" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill28" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName28}}} {{Base Chance = [[@{skillRollChance28}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP28" tabindex="355"/>
</div>
<!-- Skill 29 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName29" maxlength="20" tabindex="356"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp29">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown29">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType29">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance29" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill29" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName29}}} {{Base Chance = [[@{skillRollChance29}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP29" tabindex="357"/>
</div>
<!-- Skill 30 -->
<div class="subitem-skillsTab-flex-container-skill">
<input type="text" value="" name="attr_skillName30" maxlength="20" tabindex="358"/>
<div class="skill-mover-plus-minus-enclosure">
<div class="skill-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_skillUp30">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_skillDown30">
<span>&#10094;</span>
</button>
</div>
</div>
<div class="custom-select-skill">
<select name="attr_skillType30">
<option value="none" selected>-</option>
<option value="str">STR</option>
<option value="dex">DEX</option>
<option value="con">CON</option>
<option value="int">INT</option>
<option value="ego">EGO</option>
<option value="pre">PRE</option>
<option value="ak">AK</option>
<option value="ks">KS</option>
<option value="intKS">KS (INT)</option>
<option value="ps">PS</option>
<option value="intPS">PS (INT)</option>
<option value="dexPS">PS (DEX)</option>
<option value="ss">SS</option>
<option value="intSS">SS (INT)</option>
<option value="tf">TF</option>
<option value="combat">Combat</option>
<option value="other">Other</option>
<option value="group">Group</option>
</select>
</div>
<input type="text" value="0" name="attr_skillRollChance30" readonly tabindex="-1"/>
<button type="roll" class='button buttonRoll' name="roll_testSkill30" tabindex="-1" value="&{template:custom} {{title=@{character_name} - @{character_title} }} {{subtitle= Uses @{skillName30}}} {{Base Chance = [[@{skillRollChance30}+?{Modifiers|0}]] }} {{Roll=[[3d6cf6cs1]]}} {{}}" >Roll</button>
<input type="number" value="0" min="0" name="attr_skillCP30" tabindex="359"/>
</div>
</div>
<!-- Combat skills section -->
<div class="item-skillsTab-grid-container-combat-skills">
<!-- Combat skill names -->
<div class="subitem-skillsTab-flex-container-combat-skills-names">
<h1>Combat Skills</h1>
<input type="text" value="" name="attr_skillName31" maxlength="20" tabindex="360"/>
<input type="text" value="" name="attr_skillName32" maxlength="20" tabindex="362"/>
<input type="text" value="" name="attr_skillName33" maxlength="20" tabindex="364"/>
<input type="text" value="" name="attr_skillName34" maxlength="20" tabindex="366"/>
<input type="text" value="" name="attr_skillName35" maxlength="20" tabindex="368"/>
<input type="text" value="" name="attr_skillName36" maxlength="20" tabindex="370"/>
<input type="text" value="" name="attr_skillName37" maxlength="20" tabindex="372"/>
</div>
<div class="subitem-skillsTab-flex-container-combat-skills-level-names">
<h1>All HTH Levels</h1> <!-- skill 38 -->
<h1>All Range Levels</h1> <!-- skill 39 -->
<h1>All Combat Levels</h1> <!-- skill 40 -->
</div>
<!-- Combat skill levels where needed -->
<div class="subitem-skillsTab-flex-container-combat-skills-levels">
<h1>Levels</h1>
<input type="number" value="0" min="0" name="attr_skillLevels31" tabindex="361"/>
<input type="number" value="0" min="0" name="attr_skillLevels32" tabindex="363"/>
<input type="number" value="0" min="0" name="attr_skillLevels33" tabindex="365"/>
<input type="number" value="0" min="0" name="attr_skillLevels34" tabindex="367"/>
<input type="number" value="0" min="0" name="attr_skillLevels35" tabindex="369"/>
<input type="number" value="0" min="0" name="attr_skillLevels36" tabindex="371"/>
<input type="number" value="0" min="0" name="attr_skillLevels37" tabindex="373"/>
<input type="number" value="0" min="0" name="attr_skillLevels38" tabindex="375"/> <!-- All HTH -->
<input type="number" value="0" min="0" name="attr_skillLevels39" tabindex="377"/> <!-- All Range -->
<input type="number" value="0" min="0" name="attr_skillLevels40" tabindex="379"/> <!-- All Combat -->
</div>
<div class="subitem-skillsTab-flex-container-combat-skills-types">
<h1>Type</h1>
<div class="custom-select">
<select name="attr_skillType31">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL5">CSL5</option>
<option value="CSL8">CSL8</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<div class="custom-select">
<select name="attr_skillType32">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL8">CSL8</option>
<option value="CSL5">CSL5</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<div class="custom-select">
<select name="attr_skillType33">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL5">CSL5</option>
<option value="CSL8">CSL8</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<div class="custom-select">
<select name="attr_skillType34">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL5">CSL5</option>
<option value="CSL8">CSL8</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<div class="custom-select">
<select name="attr_skillType35">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL5">CSL5</option>
<option value="CSL8">CSL8</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<div class="custom-select">
<select name="attr_skillType36">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL5">CSL5</option>
<option value="CSL8">CSL8</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<div class="custom-select">
<select name="attr_skillType37">
<option value="none" selected>-</option>
<option value="Fam1" >WF1</option>
<option value="Fam2" >WF2</option>
<option value="CSL2">CSL2</option>
<option value="CSL3">CSL3</option>
<option value="CSL5">CSL5</option>
<option value="CSL8">CSL8</option>
<option value="PSL1">PSL1</option>
<option value="PSL2">PSL2</option>
<option value="PSL3">PSL3</option>
</select>
</div>
<!-- Blank entry for Skill 38 type: All HTH -->
<!-- Blank entry for Skill 39 type: All Range -->
<!-- Blank entry for Skill 40 type: All Combat -->
</div>
<div class="subitem-skillsTab-flex-container-combat-skills-costs">
<h1>CP</h1>
<input type="text" value="0" name="attr_skillCP31" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP32" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP33" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP34" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP35" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP36" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP37" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP38" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP39" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_skillCP40" readonly tabindex="-1"/>
</div>
</div>
<!-- Language skills section -->
<div class="item-skillsTab-flex-container-languages">
<!-- Language skills heading -->
<div class="subitem-skillsTab-flex-container-languages-heading">
<div class="subitem-skillsTab-flex-container-languages-heading-name">
<h1>Languages</h1>
</div>
<div class="subitem-skillsTab-flex-container-languages-heading-fluency">
<h1>Fluency</h1>
</div>
<div class="subitem-skillsTab-flex-container-languages-heading-literacy">
<h1>Lit.</h1>
</div>
<div class="subitem-skillsTab-flex-container-languages-heading-cost">
<h1>CP</h1>
</div>
</div>
<!-- Language skill 01 (41 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="Native Language" name="attr_skillName41" maxlength="23" tabindex="380"/>
<div class="custom-select">
<select name="attr_skillFluency41">
<option value="native" selected >Native</option>
<option value="none">-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy41">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP41" readonly tabindex="-1"/>
</div>
<!-- Language skill 02 (42 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName42" maxlength="23" tabindex="381"/>
<div class="custom-select">
<select name="attr_skillFluency42">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy42">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP42" readonly tabindex="-1"/>
</div>
<!-- Language skill 03 (43 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName43" maxlength="23" tabindex="382"/>
<div class="custom-select">
<select name="attr_skillFluency43">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy43">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP43" readonly tabindex="-1"/>
</div>
<!-- Language skill 04 (44 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName44" maxlength="23" tabindex="383"/>
<div class="custom-select">
<select name="attr_skillFluency44">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy44">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP44" readonly tabindex="-1"/>
</div>
<!-- Language skill 05 (45 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName45" maxlength="23" tabindex="384"/>
<div class="custom-select">
<select name="attr_skillFluency45">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy45">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP45" readonly tabindex="-1"/>
</div>
<!-- Language skill 06 (46 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName46" maxlength="23" tabindex="385"/>
<div class="custom-select">
<select name="attr_skillFluency46">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy46">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP46" readonly tabindex="-1"/>
</div>
<!-- Language skill 07 (47 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName47" maxlength="23" tabindex="386"/>
<div class="custom-select">
<select name="attr_skillFluency47">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy47">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP47" readonly tabindex="-1"/>
</div>
<!-- Language skill 08 (48 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName48" maxlength="23" tabindex="387"/>
<div class="custom-select">
<select name="attr_skillFluency48">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy48">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP48" readonly tabindex="-1"/>
</div>
<!-- Language skill 09 (49 overall) -->
<div class="subitem-skillsTab-flex-container-language">
<input type="text" value="" name="attr_skillName49" maxlength="23" tabindex="388"/>
<div class="custom-select">
<select name="attr_skillFluency49">
<option value="native">Native</option>
<option value="none" selected >-</option>
<option value="basic" >Basic</option>
<option value="fluent" >Fluent</option>
<option value="accent" >Accent</option>
<option value="idiomatic">Idiomatic</option>
<option value="imitate" >Imitate</option>
</select>
</div>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_skillLiteracy49">
<span class="checkmark-small"></span>
</label>
<input type="text" value="0" name="attr_skillCP49" readonly tabindex="-1"/>
</div>
</div>
<!-- Enhancers and Levels -->
<div class="item-skillsTab-grid-container-skill-enhancers">
<!-- Enhancer Heading -->
<div class="subitem-skillsTab-flex-container-skill-enhancers-heading">
<h1>Enhancer</h1>
<h1>CP</h1>
</div>
<!-- Enhancer Checkboxes -->
<div class="subitem-skillsTab-flex-container-skill-enhancers-checkboxes">
<label class="container-checkbox-small">
<input type="checkbox" name="attr_enhancerJack">
<span class="checkmark-small"></span>
</label>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_enhancerLing">
<span class="checkmark-small"></span>
</label>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_enhancerSch">
<span class="checkmark-small"></span>
</label>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_enhancerSci">
<span class="checkmark-small"></span>
</label>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_enhancerTrav">
<span class="checkmark-small"></span>
</label>
<label class="container-checkbox-small">
<input type="checkbox" name="attr_enhancerWell">
<span class="checkmark-small"></span>
</label>
</div>
<!-- Skill Names -->
<div class="subitem-skillsTab-flex-container-skill-enhancers-names">
<h1>Jack of all Trades</h1>
<h1>Linguist</h1>
<h1>Scholar</h1>
<h1>Scientist</h1>
<h1>Traveler</h1>
<h1>Well-Connected</h1>
<h1>Interaction Skill Levels</h1>
<h1>Intellect Skill Levels</h1>
<h1>Agility Skill Levels</h1>
<h1>Non-combat Skill Levels</h1>
<h1>Overall Levels</h1>
</div>
<!-- Skill Levels -->
<div class="subitem-skillsTab-flex-container-skill-enhancers-levels">
<input type="number" name="attr_interactionLevels" min="0" value="0" tabindex="390"/>
<input type="number" name="attr_intellectLevels" min="0" value="0" tabindex="391"/>
<input type="number" name="attr_agilityLevels" min="0" value="0" tabindex="392"/>
<input type="number" name="attr_noncombatLevels" min="0" value="0" tabindex="393"/>
<input type="number" name="attr_overallLevels" min="0" value="0" tabindex="394"/>
</div>
<!-- Skill Costs -->
<div class="subitem-skillsTab-flex-container-skill-enhancers-costs">
<input type="text" value="0" name="attr_enhancerJackCP" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_enhancerLingCP" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_enhancerSchCP" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_enhancerSciCP" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_enhancerTravCP" readonly tabindex="-1"/>
<input type="text" value="0" name="attr_enhancerWellCP" readonly tabindex="-1"/>
<input type="text" name="attr_interactionLevelsCP" value="0" readonly tabindex="-1"/>
<input type="text" name="attr_intellectLevelsCP" value="0" readonly tabindex="-1"/>
<input type="text" name="attr_agilityLevelsCP" value="0" readonly tabindex="-1"/>
<input type="text" name="attr_noncombatLevelsCP" value="0" readonly tabindex="-1"/>
<input type="text" name="attr_overallLevelsCP" value="0" readonly tabindex="-1"/>
</div>
</div>
</div>
</div>
<!-- --------------------------------------------------------------------------------- -->
<!-- Powers Tab -->
<!-- --------------------------------------------------------------------------------- -->
<div class="sheet-powers">
<div class="grid-container-powers">
<!-- Left side powers -->
<div class="flex-container-powers-left">
<input type="hidden" class="sheet-left-power-toggle" name="attr_leftPowerToggle" value="powerExpand01" />
<!-- Power 01 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp01">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown01">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName01" maxlength="35" tabindex="400"/>
<div class="custom-select">
<select name="attr_powerType01">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND01" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND01" tabindex="-1">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-01">
<button type="action" class="buttonExpand" name="act_powerExpand01">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect01" maxlength="25" tabindex="401"/>
<input type="text" name="attr_powerDice01" value="0d6" maxlength="16" tabindex="402"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll01" value="18" min="0" max="30" tabindex="403"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll01">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power01">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost01" min="0" value="0" tabindex="404"/>
</div>
<div class="subitem-visibility-power01">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost01" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power01">
<h1>CP:</h1>
<input type="text" name="attr_powerCP01" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-01">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages01" min="0" value="0" step="0.25" tabindex="405"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations01" min="0" value="0" step="0.25" tabindex="406"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND01">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText01" maxlength="512" tabindex="407"></textarea>
</div>
</div>
<!-- Power 02 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp02">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown02">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName02" maxlength="35" tabindex="410"/>
<div class="custom-select">
<select name="attr_powerType02">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND02" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND02">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-02">
<button type="action" class="buttonExpand" name="act_powerExpand02">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect02" maxlength="25" tabindex="411"/>
<input type="text" name="attr_powerDice02" value="0d6" maxlength="16" tabindex="412"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll02" value="18" min="0" max="30" tabindex="413"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll02">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power02">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost02" min="0" value="0" tabindex="414"/>
</div>
<div class="subitem-visibility-power02">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost02" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power02">
<h1>CP:</h1>
<input type="text" name="attr_powerCP02" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-02">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages02" min="0" value="0" step="0.25" tabindex="415"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations02" min="0" value="0" step="0.25" tabindex="416"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND02">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText02" maxlength="512" tabindex="417"></textarea>
</div>
</div>
<!-- Power 03 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp03">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown03">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName03" maxlength="35" tabindex="420"/>
<div class="custom-select">
<select name="attr_powerType03">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND03" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND03">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-03">
<button type="action" class="buttonExpand" name="act_powerExpand03">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect03" maxlength="25" tabindex="421"/>
<input type="text" name="attr_powerDice03" value="0d6" maxlength="16" tabindex="422"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll03" value="18" min="0" max="30" tabindex="423"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll03">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power03">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost03" min="0" value="0" tabindex="424"/>
</div>
<div class="subitem-visibility-power03">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost03" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power03">
<h1>CP:</h1>
<input type="text" name="attr_powerCP03" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-03">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages03" min="0" value="0" step="0.25" tabindex="425"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations03" min="0" value="0" step="0.25" tabindex="426"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND03">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText03" maxlength="512" tabindex="427"></textarea>
</div>
</div>
<!-- Power 04 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp04">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown04">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName04" maxlength="35" tabindex="430"/>
<div class="custom-select">
<select name="attr_powerType04">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND04" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND04">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-04">
<button type="action" class="buttonExpand" name="act_powerExpand04">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect04" maxlength="25" tabindex="431"/>
<input type="text" name="attr_powerDice04" value="0d6" maxlength="16" tabindex="432"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll04" value="18" min="0" max="30" tabindex="433"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll04">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power04">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost04" min="0" value="0" tabindex="434"/>
</div>
<div class="subitem-visibility-power04">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost04" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power04">
<h1>CP:</h1>
<input type="text" name="attr_powerCP04" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-04">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages04" min="0" value="0" step="0.25" tabindex="435"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations04" min="0" value="0" step="0.25" tabindex="436"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND04">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText04" maxlength="512" tabindex="437"></textarea>
</div>
</div>
<!-- Power 05 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp05">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown05">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName05" maxlength="35" tabindex="440"/>
<div class="custom-select">
<select name="attr_powerType05">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND05" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND05">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-05">
<button type="action" class="buttonExpand" name="act_powerExpand05">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect05" maxlength="25" tabindex="441"/>
<input type="text" name="attr_powerDice05" value="0d6" maxlength="16" tabindex="442"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll05" value="18" min="0" max="30" tabindex="443"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll05">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power05">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost05" min="0" value="0" tabindex="444"/>
</div>
<div class="subitem-visibility-power05">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost05" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power05">
<h1>CP:</h1>
<input type="text" name="attr_powerCP05" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-05">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages05" min="0" value="0" step="0.25" tabindex="445"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations05" min="0" value="0" step="0.25" tabindex="446"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND05">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText05" maxlength="512" tabindex="447"></textarea>
</div>
</div>
<!-- Power 06 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp06">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown06">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName06" maxlength="35" tabindex="450"/>
<div class="custom-select">
<select name="attr_powerType06">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND06" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND06">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-02">
<button type="action" class="buttonExpand" name="act_powerExpand06">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect06" maxlength="25" tabindex="451"/>
<input type="text" name="attr_powerDice06" value="0d6" maxlength="16" tabindex="452"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll06" value="18" min="0" max="30" tabindex="453"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll06">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power06">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost06" min="0" value="0" tabindex="454"/>
</div>
<div class="subitem-visibility-power06">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost06" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power06">
<h1>CP:</h1>
<input type="text" name="attr_powerCP06" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-06">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages06" min="0" value="0" step="0.25" tabindex="455"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations06" min="0" value="0" step="0.25" tabindex="456"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND06">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText06" maxlength="512" tabindex="457"></textarea>
</div>
</div>
<!-- Power 07 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp07">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown07">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName07" maxlength="35" tabindex="460"/>
<div class="custom-select">
<select name="attr_powerType07">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND07" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND07">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-07">
<button type="action" class="buttonExpand" name="act_powerExpand07">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect07" maxlength="25" tabindex="461"/>
<input type="text" name="attr_powerDice07" value="0d6" maxlength="16" tabindex="462"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll07" value="18" min="0" max="30" tabindex="463"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll07">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power07">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost07" min="0" value="0" tabindex="464"/>
</div>
<div class="subitem-visibility-power07">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost07" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power07">
<h1>CP:</h1>
<input type="text" name="attr_powerCP07" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-07">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages07" min="0" value="0" step="0.25" tabindex="465"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations07" min="0" value="0" step="0.25" tabindex="466"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND07">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText07" maxlength="512" tabindex="467"></textarea>
</div>
</div>
<!-- Power 08 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp08">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown08">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName08" maxlength="35" tabindex="470"/>
<div class="custom-select">
<select name="attr_powerType08">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND08" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND08">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-08">
<button type="action" class="buttonExpand" name="act_powerExpand08">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect08" maxlength="25" tabindex="471"/>
<input type="text" name="attr_powerDice08" value="0d6" maxlength="16" tabindex="472"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll08" value="18" min="0" max="30" tabindex="473"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll08">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power08">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost08" min="0" value="0" tabindex="474"/>
</div>
<div class="subitem-visibility-power08">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost08" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power08">
<h1>CP:</h1>
<input type="text" name="attr_powerCP08" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-08">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages08" min="0" value="0" step="0.25" tabindex="475"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations08" min="0" value="0" step="0.25" tabindex="476"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND08">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText08" maxlength="512" tabindex="477"></textarea>
</div>
</div>
<!-- Power 09 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-left">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp09">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown09">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName09" maxlength="35" tabindex="480"/>
<div class="custom-select">
<select name="attr_powerType09">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND09" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-left" tabindex="-1" name="act_buttonPowerEND09">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-left">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-09">
<button type="action" class="buttonExpand" name="act_powerExpand09">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect09" maxlength="25" tabindex="481"/>
<input type="text" name="attr_powerDice09" value="0d6" maxlength="16" tabindex="482"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll09" value="18" min="0" max="30" tabindex="483"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll09">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-left">
<div class="subitem-visibility-power09">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost09" min="0" value="0" tabindex="484"/>
</div>
<div class="subitem-visibility-power09">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost09" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power09">
<h1>CP:</h1>
<input type="text" name="attr_powerCP09" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-09">
<div class="subitem-flex-power-limitations-left">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages09" min="0" value="0" step="0.25" tabindex="485"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations09" min="0" value="0" step="0.25" tabindex="486"/>
<h1>END:</h1>
<div class="custom-select">
<select name="attr_powerReducedEND09">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText09" maxlength="512" tabindex="487"></textarea>
</div>
</div>
</div>
<!-- Tab Power Health Status -->
<div class="item-powers-health">
<div class="item-health-stat-enclosure">
<h2>BODY</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentBODY" title="@{CurrentBODY}" value="10" maxlength="3" pattern="[0-9]+" tabindex="-1"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_bodyPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_bodyMinus">
<span>&#10094;</span>
</button>
</div>
</div>
</div>
<div class="item-health-stat-enclosure">
<h2>STUN</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentSTUN" title="@{CurrentSTUN}" value="20" maxlength="3" pattern="[0-9]+" tabindex="-1"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_stunPlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_stunMinus">
<span>&#10094;</span>
</button>
</div>
</div>
</div>
<div class="item-health-stat-enclosure">
<h2>END</h2>
<div class="item-health-stat">
<input type="text" name="attr_CurrentEND" title="@{CurrentEND}" value="20" maxlength="3" pattern="[0-9]+" tabindex="-1"/>
<div class="item-health-stat-plus-minus-enclosure ">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_endurancePlus">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_enduranceMinus">
<span>&#10094;</span>
</button>
</div>
</div>
</div>
<div class="item-health-stat-enclosure">
<button type="action" class="button buttonRecover" tabindex="-1" name="act_recoverHealth" title="%{recoverHealth}">Recover</button>
<button type="action" class="button buttonReset" tabindex="-1" name="act_resetHealth" title="%{resetHealth}">Reset</button>
</div>
</div>
<!-- Right side powers -->
<div class="flex-container-powers-right">
<input type="hidden" class="sheet-right-power-toggle" name="attr_rightPowerToggle" value="powerExpand10" />
<!-- Power 10 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp10">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown10">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName10" maxlength="35" tabindex="490"/>
<div class="custom-select-alternate">
<select name="attr_powerType10">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND10" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND10">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-10">
<button type="action" class="buttonExpand" name="act_powerExpand10">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect10" maxlength="25" tabindex="491"/>
<input type="text" name="attr_powerDice10" value="0d6" maxlength="16" tabindex="492"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll10" value="18" min="0" max="30" tabindex="493"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll10">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power10">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost10" min="0" value="0" tabindex="494"/>
</div>
<div class="subitem-visibility-power10">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost10" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power10">
<h1>CP:</h1>
<input type="text" name="attr_powerCP10" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-10">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages10" min="0" value="0" step="0.25" tabindex="495"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations10" min="0" value="0" step="0.25" tabindex="496"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND10">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText10" maxlength="512" tabindex="497"></textarea>
</div>
</div>
<!-- Power 11 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp11">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown11">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName11" maxlength="35" tabindex="500"/>
<div class="custom-select-alternate">
<select name="attr_powerType11">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND11" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND11">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-11">
<button type="action" class="buttonExpand" name="act_powerExpand11">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect11" maxlength="25" tabindex="501"/>
<input type="text" name="attr_powerDice11" value="0d6" maxlength="16" tabindex="502"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll11" value="18" min="0" max="30" tabindex="503"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll11">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power11">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost11" min="0" value="0" tabindex="504"/>
</div>
<div class="subitem-visibility-power11">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost11" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power11">
<h1>CP:</h1>
<input type="text" name="attr_powerCP11" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-11">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages11" min="0" value="0" step="0.25" tabindex="505"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations11" min="0" value="0" step="0.25" tabindex="506"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND11">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText11" maxlength="512" tabindex="450"></textarea>
</div>
</div>
<!-- Power 12 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp12">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown12">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName12" maxlength="35" tabindex="510"/>
<div class="custom-select-alternate">
<select name="attr_powerType12">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND12" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND12">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-12">
<button type="action" class="buttonExpand" name="act_powerExpand12">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect12" maxlength="25" tabindex="451"/>
<input type="text" name="attr_powerDice12" value="0d6" maxlength="16" tabindex="512"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll12" value="18" min="0" max="30" tabindex="513"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll12">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power12">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost12" min="0" value="0" tabindex="514"/>
</div>
<div class="subitem-visibility-power12">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost12" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power12">
<h1>CP:</h1>
<input type="text" name="attr_powerCP12" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-12">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages12" min="0" value="0" step="0.25" tabindex="515"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations12" min="0" value="0" step="0.25" tabindex="516"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND12">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText12" maxlength="512" tabindex="517"></textarea>
</div>
</div>
<!-- Power 13 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp13">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown13">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName13" maxlength="35" tabindex="520"/>
<div class="custom-select-alternate">
<select name="attr_powerType13">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND13" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND13">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-13">
<button type="action" class="buttonExpand" name="act_powerExpand13">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect13" maxlength="25" tabindex="521"/>
<input type="text" name="attr_powerDice13" value="0d6" maxlength="16" tabindex="522"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll13" value="18" min="0" max="30" tabindex="523"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll13">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power13">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost13" min="0" value="0" tabindex="524"/>
</div>
<div class="subitem-visibility-power13">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost13" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power13">
<h1>CP:</h1>
<input type="text" name="attr_powerCP13" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-13">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages13" min="0" value="0" step="0.25" tabindex="525"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations13" min="0" value="0" step="0.25" tabindex="526"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND13">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText13" maxlength="512" tabindex="527"></textarea>
</div>
</div>
<!-- Power 14 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp14">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown14">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName14" maxlength="35" tabindex="530"/>
<div class="custom-select-alternate">
<select name="attr_powerType14">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND14" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND14">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-14">
<button type="action" class="buttonExpand" name="act_powerExpand14">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect14" maxlength="25" tabindex="531"/>
<input type="text" name="attr_powerDice14" value="0d6" maxlength="16" tabindex="532"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll14" value="18" min="0" max="30" tabindex="533"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll14">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power14">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost14" min="0" value="0" tabindex="534"/>
</div>
<div class="subitem-visibility-power14">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost14" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power14">
<h1>CP:</h1>
<input type="text" name="attr_powerCP14" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-14">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages14" min="0" value="0" step="0.25" tabindex="535"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations14" min="0" value="0" step="0.25" tabindex="536"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND14">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText14" maxlength="512" tabindex="537"></textarea>
</div>
</div>
<!-- Power 15 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp15">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown15">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName15" maxlength="35" tabindex="540"/>
<div class="custom-select-alternate">
<select name="attr_powerType15">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND15" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND15">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-15">
<button type="action" class="buttonExpand" name="act_powerExpand15">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect15" maxlength="25" tabindex="541"/>
<input type="text" name="attr_powerDice15" value="0d6" maxlength="16" tabindex="542"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll15" value="18" min="0" max="30" tabindex="543"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll15">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power15">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost15" min="0" value="0" tabindex="544"/>
</div>
<div class="subitem-visibility-power15">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost15" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power15">
<h1>CP:</h1>
<input type="text" name="attr_powerCP15" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-15">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages15" min="0" value="0" step="0.25" tabindex="545"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations15" min="0" value="0" step="0.25" tabindex="546"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND15">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText15" maxlength="512" tabindex="547"></textarea>
</div>
</div>
<!-- Power 16 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp16">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown16">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName16" maxlength="35" tabindex="550"/>
<div class="custom-select-alternate">
<select name="attr_powerType16">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND16" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND16">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-16">
<button type="action" class="buttonExpand" name="act_powerExpand16">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect16" maxlength="25" tabindex="551"/>
<input type="text" name="attr_powerDice16" value="0d6" maxlength="16" tabindex="552"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll16" value="18" min="0" max="30" tabindex="553"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll16">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power16">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost16" min="0" value="0" tabindex="554"/>
</div>
<div class="subitem-visibility-power16">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost16" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power16">
<h1>CP:</h1>
<input type="text" name="attr_powerCP16" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-16">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages16" min="0" value="0" step="0.25" tabindex="555"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations16" min="0" value="0" step="0.25" tabindex="556"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND16">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText16" maxlength="512" tabindex="557"></textarea>
</div>
</div>
<!-- Power 17 -->
<div class="item-flex-power">
<!-- Power and type -->
<div class="subitem-flex-power-heading-right">
<div class="power-mover-plus-minus-enclosure">
<div class="power-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_powerUp17">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_powerDown17">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" value="" name="attr_powerName17" maxlength="35" tabindex="560"/>
<div class="custom-select-alternate">
<select name="attr_powerType17">
<option value="single" selected>Single Power</option>
<option value="multipower">Multipower</option>
<option value="variableSlot">Variable Slot</option>
<option value="fixedSlot">Fixed Slot</option>
<option value="powerPool">Power Pool</option>
<option value="compound">Compound</option>
<option value="unified">Unified</option>
</select>
</div>
<input type="text" name="attr_powerEND17" value="0" readonly tabindex="-1"/>
<button type="action" class="button button-Power-END-right" tabindex="-1" tabindex="-1" name="act_buttonPowerEND17">END</button>
</div>
<!-- Power effect -->
<div class="subitem-flex-power-effect-right">
<div class="custom-expand-button-container">
<div class="custom-expand-button-container-17">
<button type="action" class="buttonExpand" name="act_powerExpand17">
<div class=custom-button-triangle>
</div>
</button>
</div>
</div>
<input type="text" name="attr_powerEffect17" maxlength="25" tabindex="561"/>
<input type="text" name="attr_powerDice17" value="0d6" maxlength="16" tabindex="562"/>
<h1>Roll:</h1>
<input type="number" name="attr_powerSkillRoll17" value="18" min="0" max="30" tabindex="563"/>
<button type="action" class="button buttonRollPower" tabindex="-1" name="act_powerRoll17">Roll</button>
</div>
<!-- Points Block -->
<div class="subitem-flex-power-points-block-right">
<div class="subitem-visibility-power17">
<h1>Base Cost:</h1>
<input type="number" name="attr_powerBaseCost17" min="0" value="0" tabindex="544"/>
</div>
<div class="subitem-visibility-power17">
<h1>Active Cost:</h1>
<input type="text" name="attr_powerActiveCost17" value="0" readonly tabindex="-1"/>
</div>
<div class="subitem-opacity-power17">
<h1>CP:</h1>
<input type="text" name="attr_powerCP17" value="0" readonly tabindex="-1"/>
</div>
</div>
<!-- Expanding Block -->
<div class="sheet-power-expand-17">
<div class="subitem-flex-power-limitations-right">
<h1>Adv:</h1>
<input type="number" name="attr_powerAdvantages17" min="0" value="0" step="0.25" tabindex="565"/>
<h1>Lim:</h1>
<input type="number" name="attr_powerLimitations17" min="0" value="0" step="0.25" tabindex="566"/>
<h1>END:</h1>
<div class="custom-select-alternate">
<select name="attr_powerReducedEND17">
<option value="noEND">None</option>
<option value="costsENDhalf">Costs END (half)</option>
<option value="costsENDfull">Costs END (full)</option>
<option value="zeroENDAF">Zero (AF)</option>
<option value="zeroEND">Zero</option>
<option value="reducedENDAF">Reduced (AF)</option>
<option value="reducedEND">Reduced</option>
<option value="standardEND" selected>Standard</option>
<option value="increasedENDx2">Increase x2</option>
<option value="increasedENDx3">Increase x3</option>
<option value="increasedENDx4">Increase x4</option>
<option value="increasedENDx5">Increase x5</option>
<option value="increasedENDx6">Increase x6</option>
<option value="increasedENDx7">Increase x7</option>
<option value="increasedENDx8">Increase x8</option>
<option value="increasedENDx9">Increase x9</option>
<option value="increasedENDx10">Increase x10</option>
</select>
</div>
</div>
<textarea name="attr_powerText17" maxlength="512" tabindex="567"></textarea>
</div>
</div>
</div>
</div>
</div>
<!-- --------------------------------------------------------------------------------- -->
<!-- Perks, Talents, and Complications tab -->
<!-- --------------------------------------------------------------------------------- -->
<div class="sheet-complications">
<div class="grid-container-complications-talents">
<!-- Perks and Talents -->
<div class="flex-container-complications-talents-left">
<h2> Perks and Talents</h2>
<!-- Talent 01 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp01">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown01">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName01" value="" maxlength="32" tabindex="600"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll01" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName01}}} {{desc=@{talentText01}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP01" value="0" min="0" tabindex="601"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText01" maxlength="240" tabindex="602"></textarea>
</div>
<!-- Talent 02 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp02">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown02">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName02" value="" maxlength="32" tabindex="603"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll02" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName02}}} {{desc=@{talentText02}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP02" value="0" min="0" tabindex="604"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText02" maxlength="240" tabindex="605"></textarea>
</div>
<!-- Talent 03 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp03">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown03">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName03" value="" maxlength="32"tabindex="606"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll03" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName03}}} {{desc=@{talentText03}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP03" value="0" min="0" tabindex="607"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText03" maxlength="240" tabindex="608"></textarea>
</div>
<!-- Talent 04 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp04">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown04">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName04" value="" maxlength="32" tabindex="609"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll04" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName04}}} {{desc=@{talentText04}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP04" value="0" min="0" tabindex="610"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText04" maxlength="240" tabindex="611"></textarea>
</div>
<!-- Talent 05 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp05">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown05">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName05" value="" maxlength="32" tabindex="612"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll05" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName05}}} {{desc=@{talentText05}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP05" value="0" min="0" tabindex="613"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText05" maxlength="240" tabindex="614"></textarea>
</div>
<!-- Talent 06 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp06">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown06">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName06" value="" maxlength="32" tabindex="615"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll06" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName06}}} {{desc=@{talentText06}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP06" value="0" min="0" tabindex="616"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText06" maxlength="240" tabindex="617"></textarea>
</div>
<!-- Talent 07 -->
<div class="item-talent-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_talentUp07">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_talentDown07">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_talentName07" value="" maxlength="32" tabindex="618"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showTalentRoll07" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Perks & Talents - @{talentName07}}} {{desc=@{talentText07}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_talentCP07" value="0" min="0" tabindex="619"/>
</div>
<div class="item-talent-textbox">
<textarea name="attr_talentText07" maxlength="240" tabindex="620"></textarea>
</div>
</div>
<!-- Complications -->
<div class="flex-container-complications-talents-right">
<h2>Complications</h2>
<!-- Complication 01 -->
<div class="item-complication-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_complicationUp01">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_complicationDown01">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_complicationName01" value="" maxlength="32" tabindex="630"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showComplicationRoll01" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Complication - @{complicationName01}}} {{desc=@{complicationText01}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_complicationCP01" value="0" min="0" tabindex="631"/>
</div>
<div class="item-complication-textbox">
<textarea name="attr_complicationText01" maxlength="240" tabindex="632"></textarea>
</div>
<!-- Complication 02 -->
<div class="item-complication-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_complicationUp02">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_complicationDown02">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_complicationName02" value="" maxlength="32" tabindex="633"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showComplicationRoll02" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Complication - @{complicationName02}}} {{desc=@{complicationText02}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_complicationCP02" value="0" min="0" tabindex="634"/>
</div>
<div class="item-complication-textbox">
<textarea name="attr_complicationText02" maxlength="240" tabindex="635"></textarea>
</div>
<!-- Complication 03 -->
<div class="item-complication-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_complicationUp03">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_complicationDown03">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_complicationName03" value="" maxlength="32" tabindex="636"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showComplicationRoll03" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Complication - @{complicationName03}}} {{desc=@{complicationText03}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_complicationCP03" value="0" min="0" tabindex="637"/>
</div>
<div class="item-complication-textbox">
<textarea name="attr_complicationText03" maxlength="240" tabindex="638"></textarea>
</div>
<!-- Complication 04 -->
<div class="item-complication-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_complicationUp04">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_complicationDown04">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_complicationName04" value="" maxlength="32" tabindex="639"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showComplicationRoll04" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Complication - @{complicationName04}}} {{desc=@{complicationText04}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_complicationCP04" value="0" min="0" tabindex="640"/>
</div>
<div class="item-complication-textbox">
<textarea name="attr_complicationText04" maxlength="240" tabindex="641"></textarea>
</div>
<!-- Complication 05 -->
<div class="item-complication-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_complicationUp05">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_complicationDown05">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_complicationName05" value="" maxlength="32" tabindex="642"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showComplicationRoll05" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Complication - @{complicationName05}}} {{desc=@{complicationText05}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_complicationCP05" value="0" min="0" tabindex="643"/>
</div>
<div class="item-complication-textbox">
<textarea name="attr_complicationText05" maxlength="240" tabindex="644"></textarea>
</div>
<!-- Complication 06 -->
<div class="item-complication-heading">
<div class="talent-mover-plus-minus-enclosure">
<div class="talent-mover-plus-minus-button">
<button type="action" class="button buttonPlus" tabindex="-1" name="act_complicationUp06">
<span>&#10095;</span>
</button>
<button type="action" class="button buttonMinus" tabindex="-1" name="act_complicationDown06">
<span>&#10094;</span>
</button>
</div>
</div>
<input type="text" name="attr_complicationName06" value="" maxlength="32" tabindex="645"/>
<button type="roll" class="button buttonRollShow" tabindex="-1" name="roll_showComplicationRoll06" value="&{template:custom-show} {{title=@{character_name} - @{character_title}}} {{subtitle= Complication - @{complicationName06}}} {{desc=@{complicationText06}}}">Show</button>
<h1>CP:</h1>
<input type="number" name="attr_complicationCP06" value="0" min="0" tabindex="646"/>
</div>
<div class="item-complication-textbox">
<textarea name="attr_complicationText06" maxlength="240" tabindex="647"></textarea>
</div>
</div>
<!-- Complications Notes -->
<div class="flex-container-complications-bottom">
<textarea name="attr_complicationsTextLeft" maxlength="2048" tabindex="648"></textarea>
<textarea name="attr_complicationsTextRight" maxlength="2048" tabindex="649"></textarea>
</div>
</div>
</div>
<!-- --------------------------------------------------------------------------------- -->
<!-- Options tab -->
<!-- --------------------------------------------------------------------------------- -->
<div class="sheet-options">
<div class="grid-container-tab-options">
<div class="item-options">
<div class="item-options-row">
<h1> Options </h1>
</div>
<div class="item-options-row">
<label class="container-checkbox">
<input type="checkbox" name="attr_useCharacteristicMaximums">
<span class="checkmark" title="@{useCharacteristicMaximums}"></span>
</label>
<h1>Characteristic Maximums</h1>
</div>
<div class="item-options-row">
<label class="container-checkbox">
<input type="checkbox" checked="checked" name="attr_optionLiteracyCostsPoints">
<span class="checkmark" title="@{optionLiteracyCostsPoints}"></span>
</label>
<h1>Literacy Costs Character Points</h1>
</div>
<div class="item-options-row">
<label class="container-checkbox">
<input type="checkbox" checked="checked" name="attr_optionAutoSubtractEND">
<span class="checkmark" title="@{optionAutoSubtractEND}"></span>
</label>
<h1>Attack and Power Buttons Apply END Costs</h1>
</div>
<div class="item-options-row">
<label class="container-checkbox">
<input type="checkbox" name="attr_optionSuperHeroicEndurance">
<span class="checkmark" title="@{optionSuperHeroicEndurance}"></span>
</label>
<h1>Super-Heroic Campaign Endurance</h1>
</div>
<div class="item-options-row">
<label class="container-checkbox">
<input type="checkbox" name="attr_optionHitLocationSystem">
<span class="checkmark" title="@{optionHitLocationSystem}"></span>
</label>
<h1>Use Hit Location System</h1>
</div>
<div class="item-options-row">
<label class="container-checkbox">
<input type="checkbox" name="attr_optionTakesNoSTUN">
<span class="checkmark" title="@{optionTakesNoSTUN}"></span>
</label>
<h1>Takes No STUN</h1>
</div>
<div class="item-version-row">
<div class="item-version-label">
<h2>Version:</h2>
</div>
<div class="item-version-information">
<input type="text" value="2.0" name="attr_version" title="@{version}" readonly tabindex="-1"/>
</div>
</div>
</div>
</div>
</div>
<!-- --------------------------------------------------------------------------------- -->
<!-- Tally bar that appears below all tabs to keep track of point totals -->
<!-- --------------------------------------------------------------------------------- -->
<div class = "sheet-tallybar">
<div class="sheet-flex-tallybar">
<span>Char:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_characteristicsCost title="@{characteristicsCost}" readonly="true" tabindex="-1"/></span>
<span>Skills:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_skillsCost title="@{skillsCost}" readonly="true" tabindex="-1"/></span>
<span>Powers:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_powersPerksTalentsCost title="@{powersPerksTalentsCost}" readonly="true" tabindex="-1"/></span>
<span>Complications:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_complicationsBenefit title="@{complicationsBenefit}" readonly="true" tabindex="-1"/></span>
<span>Bonus:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_bonusBenefit title="@{bonusBenefit}" tabindex="-1"/></span>
<span>EXP:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_experienceBenefit title="@{experienceBenefit}" tabindex="-1"/></span>
<span>Total:</span>
<span><input class="tally" type="number" value="0" min="0" name=attr_totalCharacterCost title="@{totalCharacterCost}" readonly="true" tabindex="-1"/></span>
</div>
</div>
<!-- Hidden variables to protect characteristics during option changes -->
<input type="hidden" name="attr_hiddenSTUN" value="20"/>
<input type="hidden" name="CurrentBODY_max" value="10"/>
<input type="hidden" name="CurrentSTUN_max" value="20"/>
<input type="hidden" name="CurrentEND_max" value="20"/>
<!-- Some hidden variables to help simplify skill point calculations -->
<input type="hidden" name="attr_hiddenSet1SkillsCost" value="0"/>
<input type="hidden" name="attr_hiddenSet2SkillsCost" value="0"/>
<input type="hidden" name="attr_hiddenSet3SkillsCost" value="0"/>
<input type="hidden" name="attr_hiddenCombatSkillsCost" value="0"/>
<input type="hidden" name="attr_hiddenLanguageSkillsCost" value="0"/>
<input type="hidden" name="attr_hiddenEnhancerSkillsCost" value="0"/>
<input type="hidden" name="attr_hiddenMartialSkillsCost" value="0"/>
<!-- Hidden variables for clean weapon damage strings -->
<input type="hidden" name="attr_hiddenShieldDamage01" value="0"/>
<input type="hidden" name="attr_hiddenWeaponDamage01" value="0"/>
<input type="hidden" name="attr_hiddenWeaponDamage02" value="0"/>
<input type="hidden" name="attr_hiddenWeaponDamage03" value="0"/>
<input type="hidden" name="attr_hiddenWeaponDamage04" value="0"/>
<input type="hidden" name="attr_hiddenWeaponDamage05" value="0"/>
<input type="hidden" name="attr_hiddenManeuverDamage01" value="2d6"/>
<input type="hidden" name="attr_hiddenBasicEndurance" value="2"/>
<!-- Hidden variables for clean power dice strings -->
<input type="hidden" name="attr_hiddenPowerDice01" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice02" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice03" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice04" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice05" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice06" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice07" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice08" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice09" value="0"/>
<input type="hidden" name="attr_hiddenPowerDice10" value="0"/>
<!-- Hidden variable for token display -->
<input type="hidden" name="attr_currentDCV" value="0"/>
<!-- Jackob's Roll Template -->
<rolltemplate class="sheet-rolltemplate-custom">
<div class="template-wrapper">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
</div>
</div>
</div>
</rolltemplate>
<!-- Jackob's Roll Template for normal damage attacks -->
<!-- Includes row for computed BODY damage using July, 2021 Roll Parsing feature -->
<rolltemplate class="sheet-rolltemplate-custom-normal-attack">
<div class="sheet-template-wrapper">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color HITLOC STUN BODY}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color HITLOC STUN BODY}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
<!-- Stun, Body, and Hit Location go at the end -->
{{#STUN}}
<div class="sheet-key">STUN</div>
<div class="sheet-value">{{computed::STUN}}</div>
{{/STUN}}
{{#BODY}}
<div class="sheet-key">BODY</div>
<div class="sheet-value">{{computed::BODY}}</div>
{{/BODY}}
{{#HITLOC}}
<div class="sheet-key">Hit Location</div>
<div class="sheet-value">{{computed::HITLOC}}</div>
{{/HITLOC}}
</div>
</div>
</div>
</rolltemplate>
<!-- Jackob's Roll Template for killing damage attacks -->
<rolltemplate class="sheet-rolltemplate-custom-attack">
<div class="sheet-template-wrapper">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color HITLOC STUN BODY}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color HITLOC STUN BODY}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
<!-- Stun, Body, and Hit Location go at the end -->
{{#STUN}}
<div class="sheet-key">STUN</div>
<div class="sheet-value">{{computed::STUN}}</div>
{{/STUN}}
{{#BODY}}
<div class="sheet-key">BODY</div>
<div class="sheet-value">{{computed::BODY}}</div>
{{/BODY}}
{{#HITLOC}}
<div class="sheet-key">Hit Location</div>
<div class="sheet-value">{{computed::HITLOC}}</div>
{{/HITLOC}}
</div>
</div>
</div>
</rolltemplate>
<!-- Jackob's Roll Template -->
<rolltemplate class="sheet-rolltemplate-custom-activate">
<div class="sheet-template-wrapper">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
</div>
</div>
</div>
</rolltemplate>
<!-- Jackob's Roll Template for Powers -->
<rolltemplate class="sheet-rolltemplate-custom-power-attack">
<div class="sheet-template-wrapper">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
</div>
</div>
</div>
</rolltemplate>
<!-- Jackob's Roll Template used for showing talents, perks, and complications -->
<rolltemplate class="sheet-rolltemplate-custom-show">
<div class="sheet-template-wrapper">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}<div class="sheet-title">{{title}}</div>{{/title}}
{{#subtitle}}<div class="sheet-subtitle">{{subtitle}}</div>{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color}}
{{#desc}}<div class="sheet-desc">{{desc}}</div>{{/desc}}
</div>
</div>
</div>
</rolltemplate>
<!-- --------------------------------------------------------------------------------- -->
<!-- Sheet workers -->
<!-- --------------------------------------------------------------------------------- -->
<script type="text/worker">
//Async functions
const setActiveCharacterId = function(charId){
var oldAcid=getActiveCharacterId();
var ev = new CustomEvent("message");
ev.data={"id":"0", "type":"setActiveCharacter", "data":charId};
self.dispatchEvent(ev);
return oldAcid;
};
const _getAttrs = function (props){
var acid=getActiveCharacterId(); //save the current activeCharacterID in case it has changed when the promise runs
var prevAcid=null; //local variable defined here, because it needs to be shared across the promise callbacks defined below
return new Promise((resolve,reject)=>{
prevAcid=setActiveCharacterId(acid); //in case the activeCharacterId has changed, restore it to what we were expecting and save the current value to restore later
try{
getAttrs(props,(values)=>{ resolve(values); });
}
catch{ reject(); }
}).finally(()=>{
setActiveCharacterId(prevAcid); //restore activeCharcterId to what it was when the promise first ran
});
};
// Get the URL to the pseudo attribute attr_character_avatar for use in the Portrait Section.
on("sheet:opened", async function() {
let attributes = {sheetTab:"characteristics"};
// Fetch just what is needed to determine the version
let values = await _getAttrs(["version", "totalCharacterCost", "validateMay23", "character_name", "character_avatar"]);
let name = values.character_name;
let origVersion = parseFloat(values.version)||1.0;
attributes.theSheetAvatar = values.character_avatar;
// Check for unversioned sheets
if (values.validateMay23 == undefined) {
// if no points spent, then it's a new sheet
if (parseInt(values.totalCharacterCost)||0 != 0)
origVersion = 1.0;
attributes.validateMay23 = 1;
}
let version = origVersion;
if (version < 1.1) {
values = await _getAttrs(["intelligenceChance", "enhancedPerceptionModifier", "body", "stun", "endurance", "strength", "optionSuperHeroicEndurance"]);
var hiddenBasicEndurance = (parseInt(values.strength)||0) / (values.optionSuperHeroicEndurance != 0 ? 5 : 10);
attributes.perceptionEnhanced = parseInt(values.intelligenceChance)||11 + parseInt(values.enhancedPerceptionModifier)||0;
attributes.CurrentBODY_max = parseInt(values.body)||0;
attributes.CurrentSTUN_max = parseInt(values.stun)||0;
attributes.CurrentEND_max = parseInt(values.endurance)||0;
attributes.hiddenBasicEndurance = Math.max(1,heroRoundLow(hiddenBasicEndurance));
version = 1.1;
};
if (version != origVersion) {
console.log(`Updated ${name} from ${origVersion} to ${version}`);
attributes.version = version;
}
// We are doing this with await's in order to only do a single setAttrs at the end
setAttrs(attributes);
});
// Tab buttons
const buttonlist = ["characteristics","skills","powers","complications","gear","options"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
/* ------------------------- */
/* Functions used sheet-wide */
/* ------------------------- */
const maxWeaponNum = 5;
const maxEquipmentNum = 16;
const maxSkillNum = 30;
const maxPowerNum = 17;
const maxTalentNum = 7;
const maxComplicationNum = 6;
function arrayOf(num) {
// For use in our forEach loops, this creates an array of numbers 1 to num
return Array.from({length: num}, (_, i) => i + 1);
}
function heroRoundHigh(theNumber) {
// In the Hero System rounding favors the player. Here where high is good.
let theIntegerPart = Math.floor(theNumber);
let theRemainder = Math.floor(100*(theNumber-theIntegerPart))/100;
if (theRemainder<=0.4) {
return theIntegerPart;
} else {
return theIntegerPart+1;
}
}
function heroRoundLow(theNumber) {
// In the Hero System rounding favors the player. Here where low is good.
let theIntegerPart = Math.floor(theNumber);
let theRemainder = Math.floor(100*(theNumber-theIntegerPart))/100;
if (theRemainder<0.6) {
return theIntegerPart;
} else {
return theIntegerPart+1;
}
}
function calculateRoll(theNumber) {
// Determine basic characteristic and skill roll chance
return heroRoundHigh(9+theNumber/5);
}
/* ------------------------- */
/* Portrait Selection */
/* ------------------------- */
// Demote the portrait slide show.
on("clicked:left-arrow-button", function () {
advancePortrait(-1);
});
// Advance the portrait slide show.
on("clicked:right-arrow-button", function () {
advancePortrait(+1);
});
function advancePortrait(direction) {
getAttrs(["portraitSelection", "totalNumberOfPortraits"], function(values) {
const currentSelection = parseInt(values.portraitSelection)||0;
const minimumSelection = 0;
const maximumSelection = parseInt(values.totalNumberOfPortraits)||1;
let newSelection = currentSelection+direction;
if (newSelection < minimumSelection) {
newSelection = maximumSelection;
}
if (newSelection > maximumSelection) {
newSelection = minimumSelection;
}
setAttrs({
"portraitSelection":newSelection
});
});
}
/* ------------------------- */
/* Gear Slide Selection */
/* ------------------------- */
// Demote the portrait slide show.
on("clicked:left-gear-arrow-button", function () {
advanceGearSlide(-1);
});
// Advance the portrait slide show.
on("clicked:right-gear-arrow-button", function () {
advanceGearSlide(+1);
});
function advanceGearSlide(direction) {
getAttrs(["gearSlideSelection", "totalNumberOfGearSlides"], function(values) {
const currentSelection = parseInt(values.gearSlideSelection)||1;
const minimumSelection = 1;
const maximumSelection = parseInt(values.totalNumberOfGearSlides)||1;
let newSelection = currentSelection+direction;
if (newSelection < minimumSelection) {
newSelection = maximumSelection;
}
if (newSelection > maximumSelection) {
newSelection = minimumSelection;
}
setAttrs({
"gearSlideSelection":newSelection
});
});
}
/* -------------------------------------- */
/* Functions used for health status boxes */
/* -------------------------------------- */
/* Increment and Decrement buttons for Health Fields on Page 1: Characteristics */
// Add 1 to currentBODY
on("clicked:bodyPlus", function () {
getAttrs(["currentBODY"], function(values) {
const currentValue = parseInt(values.currentBODY)||0;
setAttrs({
"currentBODY":currentValue+1
});
});
});
// Subtract 1 from currentBODY
on("clicked:bodyMinus", function () {
getAttrs(["currentBODY"], function(values) {
const currentValue = parseInt(values.currentBODY)||0;
setAttrs({
"currentBODY":currentValue-1
});
});
});
// Add 1 to currentSTUN
on("clicked:stunPlus", function () {
getAttrs(["currentSTUN", "optionTakesNoSTUN"], function(values) {
let currentValue = parseInt(values.currentSTUN)||0;
const takesNoSTUN = values.optionTakesNoSTUN;
if (takesNoSTUN != 0) {
currentValue = 0;
} else {
currentValue = currentValue+1;
}
setAttrs({
"currentSTUN":currentValue
});
});
});
// Subtract 1 from currentSTUN
on("clicked:stunMinus", function () {
getAttrs(["currentSTUN", "optionTakesNoSTUN"], function(values) {
let currentValue = parseInt(values.currentSTUN)||0;
const takesNoSTUN = values.optionTakesNoSTUN;
if (takesNoSTUN != 0) {
currentValue = 0;
} else {
currentValue = currentValue-1;
}
setAttrs({
"currentSTUN":currentValue
});
});
});
// Add 1 to currentEND
on("clicked:endurancePlus", function () {
getAttrs(["currentEND"], function(values) {
const currentValue = parseInt(values.currentEND)||0;
// Attempt to correct negative END values.
setAttrs({
"currentEND": Math.max(0, currentValue+1)
});
});
});
// Subtract 1 from currentEND
on("clicked:enduranceMinus", function () {
getAttrs(["currentEND"], function(values) {
const currentValue = parseInt(values.currentEND)||0;
setAttrs({
"currentEND":Math.max(0,currentValue-1)
});
});
});
// Subtract X from currentEND.
// Used for power and attack buttons.
function subtractEndurance(enduranceSpent) {
getAttrs(["currentEND"], function(values) {
let currentValue = parseInt(values.currentEND)||0;
currentValue = currentValue - enduranceSpent;
// Attempt to correct negative END values.
setAttrs({
"currentEND":Math.max(0,currentValue)
});
});
}
// Reset endurance and stun in item-characteristics-health when the reset action button is clicked.
on("clicked:resetHealth", function () {
getAttrs(["endurance","stun"], function(values) {
const maxEND = parseInt(values.endurance);
const maxSTUN = parseInt(values.stun);
setAttrs({
"currentSTUN":maxSTUN,
"currentEND":maxEND,
});
});
});
/* Recover Buttons */
// Recover endurance and stun when the recover button in the item-characteristics-health box is clicked.
on("clicked:recoverHealth", function () {
getAttrs(["endurance","stun","CurrentEND", "CurrentSTUN", "recovery"], function(values) {
const maxEND = parseInt(values.endurance);
const maxSTUN = parseInt(values.stun);
const recovery = parseInt(values.recovery);
let currentEND = parseInt(values.CurrentEND);
let currentSTUN = parseInt(values.CurrentSTUN);
let newSTUN = Math.min(currentSTUN + recovery, maxSTUN);
let newEND = Math.min(currentEND + recovery, maxEND);
// Check to see if character hasn't been boosted above character max by Aid power or similar.
setAttrs({
CurrentSTUN:Math.max(currentSTUN,newSTUN),
CurrentEND:Math.max(currentEND,newEND)
});
});
});
/* -------------------------------------- */
/* Functions used for characteristics tab */
/* -------------------------------------- */
function sumCharacteristicPoints() {
// Add up points spent on characteristics.
// All character attributes added in one function to avoid getAttrs() limitations.
// Add attribute costs in one go
getAttrs(["strengthCP","dexterityCP","constitutionCP","intelligenceCP","egoCP","presenceCP","ocvCP","dcvCP","omcvCP","dmcvCP","speedCP","pdCP","edCP","bodyCP","stunCP","enduranceCP","recoveryCP","runningCP","leapingCP","swimmingCP"], function(values) {
const strengthCost = parseInt(values.strengthCP)||0;
const dexterityCost = parseInt(values.dexterityCP)||0;
const constitutionCost = parseInt(values.constitutionCP)||0;
const intelligenceCost = parseInt(values.intelligenceCP)||0;
const egoCost = parseInt(values.egoCP)||0;
const presenceCost = parseInt(values.presenceCP)||0;
const ocvCost = parseInt(values.ocvCP)||0;
const dcvCost = parseInt(values.dcvCP)||0;
const omcvCost = parseInt(values.omcvCP)||0;
const dmcvCost = parseInt(values.dmcvCP)||0;
const speedCost = parseInt(values.speedCP)||0;
const pdCost = parseInt(values.pdCP)||0;
const edCost = parseInt(values.edCP)||0;
const bodyCost = parseInt(values.bodyCP)||0;
const stunCost = parseInt(values.stunCP)||0;
const endCost = parseInt(values.enduranceCP)||0;
const recCost = parseInt(values.recoveryCP)||0;
const runningCost = parseInt(values.runningCP)||0;
const leapingCost = parseInt(values.leapingCP)||0;
const swimmingCost = parseInt(values.swimmingCP)||0;
let primaryAttributesCost = strengthCost+dexterityCost+constitutionCost+intelligenceCost+egoCost+presenceCost;
let combatValuesCost = ocvCost+dcvCost+omcvCost+dmcvCost;
let defenseCost = pdCost+edCost;
let healthCost = bodyCost+stunCost+endCost+recCost;
let movementCost = runningCost+leapingCost+swimmingCost;
let characterAttributeCost = primaryAttributesCost+combatValuesCost+speedCost+defenseCost+healthCost+movementCost;
setAttrs({
"characteristicsCost":parseInt(characterAttributeCost)
});
});
}
// Update Strength related stats and skills
on("change:strength change:useCharacteristicMaximums", function () {
getAttrs(["strength","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.strength)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 1;
let statCP = 0;
var liftCapability;
var freeCarry;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
switch (statValue) {
case 0: liftCapability = 0;
break;
case 1: liftCapability = 8;
break;
case 2: liftCapability = 16;
break;
case 3: liftCapability = 25;
break;
case 4: liftCapability = 38;
break;
default: liftCapability=Math.round(25*Math.pow(2,(statValue/5)));
}
freeCarry=liftCapability/10;
// Update cost and roll chance
setAttrs({
"strengthCP":statCP,
"strengthChance":calculateRoll(statValue),
"liftWeight":liftCapability,
"encumbranceFreeCarry":freeCarry
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Dexterity
on("change:dexterity change:useCharacteristicMaximums", function () {
getAttrs(["dexterity","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.dexterity)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 2;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost and roll chance
setAttrs({
"dexterityCP":statCP,
"dexterityChance":calculateRoll(statValue)
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Constitution
on("change:constitution change:useCharacteristicMaximums", function () {
getAttrs(["constitution","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.constitution)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 1;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost and roll chance
setAttrs({
"constitutionCP":statCP,
"constitutionChance":calculateRoll(statValue)
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Intelligence
on("change:intelligence change:enhancedPerceptionModifier change:useCharacteristicMaximums", function () {
getAttrs(["intelligence","useCharacteristicMaximums","enhancedPerceptionModifier"], function(values) {
const statValue = parseInt(values.intelligence)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 1;
// Here we get the enhanced perception modifier. Perception is like a child of Intelligence.
// The base value of perception is the intelligence roll. The Perception roll is the base value plus the enhancedPerceptionModifier.
// Individual senses start at Intelligence Chance + Perception modifier.
const enhancedPerceptionMod = parseInt(values.enhancedPerceptionModifier)||0;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost and roll chance
setAttrs({
"intelligenceCP":statCP,
"intelligenceChance":calculateRoll(statValue),
"perceptionEnhanced":calculateRoll(statValue)+enhancedPerceptionMod
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Ego
on("change:ego change:useCharacteristicMaximums", function () {
getAttrs(["ego","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.ego)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 1;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost and roll chance
setAttrs({
"egoCP":statCP,
"egoChance":calculateRoll(statValue)
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Presence
on("change:presence change:useCharacteristicMaximums", function () {
getAttrs(["presence","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.presence)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 1;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost and roll chance
setAttrs({
"presenceCP":statCP,
"presenceChance":calculateRoll(statValue)
});
// Update costs
sumCharacteristicPoints();
});
});
// Combat Characteristics
// Update Offensive Combat Value
on("change:ocv change:useCharacteristicMaximums", function () {
getAttrs(["ocv","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.ocv)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 3;
const maxStat = 8;
const costStat = 5;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"ocvCP":statCP
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Defensive Combat Value
// Encumbrance Section: Add 1 to bonusDCVmodifier
on("clicked:bonusDCVmodifierPlus", function () {
getAttrs(["bonusDCVmodifier"], function(values) {
const currentValue = parseInt(values.bonusDCVmodifier)||0;
setAttrs({
"bonusDCVmodifier":Math.min(Math.max(-10, (currentValue+1) ), +10)
});
});
});
// Encumbrance Section: Subtract 1 from bonusDCVmodifier
on("clicked:bonusDCVmodifierMinus", function () {
getAttrs(["bonusDCVmodifier"], function(values) {
const currentValue = parseInt(values.bonusDCVmodifier)||0;
setAttrs({
"bonusDCVmodifier":Math.min(Math.max(-10, (currentValue-1) ), +10)
});
});
});
// Update hidden attribute currentDCV
on("change:dcv change:weightDexDCVPenalty change:shieldDCV change:bonusDCVmodifier change:useCharacteristicMaximums change:optionTakesNoSTUN", function () {
getAttrs(["dcv","useCharacteristicMaximums","currentDCV","weightDexDCVPenalty","shieldDCV","bonusDCVmodifier", "optionTakesNoSTUN"], function(values) {
const statValue = parseInt(values.dcv)||0;
const shieldBonus = parseInt(values.shieldDCV)||0;
const weightPenalty = parseInt(values.weightDexDCVPenalty)||0;
const bonusModifier = parseInt(values.bonusDCVmodifier)||0;
const useMaximums = values.useCharacteristicMaximums;
const takesNoSTUN = values.optionTakesNoSTUN;
let baseStat = 3;
const maxStat = 8;
let costStat = 5;
let statCP = 0;
// Automaton defenses cost triple.
if (takesNoSTUN != 0) {
costStat = costStat*3;
}
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost and current DCV
setAttrs({
"dcvCP":statCP,
"currentDCV":statValue+shieldBonus+weightPenalty+bonusModifier
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Mental Offensive Combat Value
on("change:omcv change:useCharacteristicMaximums", function () {
getAttrs(["omcv","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.omcv)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 3;
const maxStat = 8;
const costStat = 3;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"omcvCP":statCP
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Mental Defensive Combat Value
on("change:dmcv change:useCharacteristicMaximums change:optionTakesNoSTUN", function () {
getAttrs(["dmcv","useCharacteristicMaximums", "optionTakesNoSTUN"], function(values) {
const statValue = parseInt(values.dmcv)||0;
const useMaximums = values.useCharacteristicMaximums;
const takesNoSTUN = values.optionTakesNoSTUN;
const baseStat = 3;
const maxStat = 8;
let costStat = 3;
let statCP = 0;
// Automaton defenses cost triple.
if (takesNoSTUN != 0) {
costStat = costStat*3;
}
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"dmcvCP":statCP
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Speed
on("change:speed change:useCharacteristicMaximums", function () {
getAttrs(["speed","useCharacteristicMaximums"], function(values) {
let theSpeed = parseInt(values.speed)||0;
let useMaximums = values.useCharacteristicMaximums;
const baseStat = 2;
const maxStat = 4;
const costStat = 10;
let statCP = 0;
if ( (theSpeed>maxStat) && (useMaximums != 0) ) {
statCP=(theSpeed-maxStat)*costStat+(theSpeed-baseStat)*costStat;
} else {
statCP=(theSpeed-baseStat)*costStat;
}
// Update cost
setAttrs({
"speedCP":statCP,
"speedIndicator01": theSpeed == 12 ? "on" : 0,
"speedIndicator02": theSpeed >= 6 ? "on" : 0,
"speedIndicator03": [4,5,8,9,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator04": [3,6,7,9,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator05": [5,8,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator06": [2,4,6,7,8,9,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator07": [1,7,9,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator08": [3,5,6,8,9,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator09": [4,7,8,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator10": [5,6,9,10,11,12].includes(theSpeed) ? "on" : 0,
"speedIndicator11": theSpeed >= 7 ? "on" : 0,
"speedIndicator12": theSpeed != 1 ? "on" : 0
});
sumCharacteristicPoints();
});
});
// Update Physical Defense
on("change:pd change:useCharacteristicMaximums change:optionTakesNoSTUN", function () {
getAttrs(["pd","useCharacteristicMaximums", "optionTakesNoSTUN"], function(values) {
const statValue = parseInt(values.pd)||0;
const useMaximums = values.useCharacteristicMaximums;
const takesNoSTUN = values.optionTakesNoSTUN;
let baseStat = 2;
const maxStat = 8;
let costStat = 1;
let statCP = 0;
// Automaton defenses cost triple.
if (takesNoSTUN != 0) {
costStat = costStat*3;
baseStat = 1;
}
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"pdCP":statCP
});
// Update costs
sumCharacteristicPoints();
});
});
// Update Energy Defense
on("change:ed change:useCharacteristicMaximums change:optionTakesNoSTUN", function () {
getAttrs(["ed","useCharacteristicMaximums", "optionTakesNoSTUN"], function(values) {
const statValue = parseInt(values.ed)||0;
const useMaximums = values.useCharacteristicMaximums;
const takesNoSTUN = values.optionTakesNoSTUN;
let baseStat = 2;
const maxStat = 8;
let costStat = 1;
let statCP = 0;
// Automaton defenses cost triple.
if (takesNoSTUN != 0) {
costStat = costStat*3;
baseStat = 1;
}
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"edCP":statCP
});
// Update costs
sumCharacteristicPoints();
});
});
// Update BODY
on("change:body change:useCharacteristicMaximums", function () {
getAttrs(["body","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.body)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 10;
const maxStat = 20;
const costStat = 1;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"CurrentBODY_max": statValue,
"bodyCP": statCP
});
// Update costs
sumCharacteristicPoints();
});
});
// Handle STUN data when optionTakesNoSTUN is checked.
on("change:optionTakesNoSTUN", function () {
getAttrs(["optionTakesNoSTUN", "stun", "hiddenSTUN"], function(values) {
const takesNoSTUN = values.optionTakesNoSTUN;
let statValue = values.stun;
let savedStatValue = values.hiddenSTUN;
// Store STUN in hiddenSTUN and then set it to zero.
if (takesNoSTUN != 0) {
savedStatValue = statValue;
statValue = 0;
} else {
statValue = savedStatValue;
}
// Update character. Reset health status.
setAttrs({
"hiddenSTUN": savedStatValue,
"stun": statValue,
"currentSTUN": statValue,
"currentSTUN_max": statValue
});
// Update characteristics cost
sumCharacteristicPoints();
});
});
// Update STUN
on("change:stun change:useCharacteristicMaximums change:optionTakesNoSTUN", function () {
getAttrs(["stun","useCharacteristicMaximums", "hiddenSTUN", "optionTakesNoSTUN"], function(values) {
const statValue = parseInt(values.stun)||0;
const useMaximums = values.useCharacteristicMaximums;
const takesNoSTUN = values.optionTakesNoSTUN;
let baseStat = 20;
const maxStat = 50;
const costStat = 0.5;
let statCP = 0;
// If option takesNoSTUN is not checked. Save the new value of STUN.
if (takesNoSTUN != 0) {
// Reset STUN and cost to zero.
setAttrs({
"stun":0,
"CurrentSTUN_max": 0,
"stunCP":0
});
} else {
// Calculate costs, save stun to hiddenSTUN, and calculate cost.
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
setAttrs({
"hiddenSTUN":statValue,
"CurrentSTUN_max": statValue,
"stunCP":heroRoundLow(statCP)
});
}
// Update costs
sumCharacteristicPoints();
});
});
// Update Endurance
on("change:endurance change:useCharacteristicMaximums", function () {
getAttrs(["endurance","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.endurance)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 20;
const maxStat = 50;
const costStat = 0.2;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"CurrentEND_max": statValue,
"enduranceCP":heroRoundLow(statCP)
});
// Update characteristics cost
sumCharacteristicPoints();
});
});
// Update Recovery
on("change:recovery change:useCharacteristicMaximums", function () {
getAttrs(["recovery","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.recovery)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 4;
const maxStat = 10;
const costStat = 1;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"recoveryCP":statCP
});
// Update characteristics cost
sumCharacteristicPoints();
});
});
// Movement abilities
// Update Running
on("change:running change:useCharacteristicMaximums", function () {
getAttrs(["running","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.running)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 12;
const maxStat = 20;
const costStat = 1;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"runningCP":statCP
});
// Update characteristics cost
sumCharacteristicPoints();
});
});
// Update Leaping
on("change:leaping change:useCharacteristicMaximums", function () {
getAttrs(["leaping","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.leaping)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 4;
const maxStat = 10;
const costStat = 0.5;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"leapingCP":heroRoundLow(statCP)
});
// Update characteristics cost
sumCharacteristicPoints();
});
});
// Update Swimming
on("change:swimming change:useCharacteristicMaximums", function () {
getAttrs(["swimming","useCharacteristicMaximums"], function(values) {
const statValue = parseInt(values.swimming)||0;
const useMaximums = values.useCharacteristicMaximums;
const baseStat = 4;
const maxStat = 10;
const costStat = 0.5;
let statCP = 0;
if ( (statValue>maxStat) && (useMaximums != 0) ) {
statCP=(statValue-maxStat)*costStat+(statValue-baseStat)*costStat;
} else {
statCP=(statValue-baseStat)*costStat;
}
// Update cost
setAttrs({
"swimmingCP":heroRoundLow(statCP)
});
// Update characteristics cost
sumCharacteristicPoints();
});
});
// Update point totals when option: useCharacteristicMaximums checked or unchecked.
on("change:useCharacteristicMaximums", function () {
sumCharacteristicPoints();
});
/* -------------------------------------- */
/* Functions used for tally bar */
/* -------------------------------------- */
function addPoints() {
// Add up points from each section of the tally bar and subtract the complications benefit to arrive at a total character cost
// Seems to need a onchange() notice for each tab total to be recognized correctly.
getAttrs(["hiddenCombatSkillsCost","characteristicsCost","hiddenSet1SkillsCost","hiddenSet2SkillsCost","hiddenSet3SkillsCost","hiddenLanguageSkillsCost","hiddenEnhancerSkillsCost","hiddenMartialSkillsCost","powersPerksTalentsCost","complicationsBenefit","bonusBenefit","experienceBenefit"], function(values) {
const characteristicsCP = parseInt(values.characteristicsCost)||0;
const set1SkillsCP = parseInt(values.hiddenSet1SkillsCost)||0;
const set2SkillsCP = parseInt(values.hiddenSet2SkillsCost)||0;
const set3SkillsCP = parseInt(values.hiddenSet3SkillsCost)||0;
const combatSkillsCP = parseInt(values.hiddenCombatSkillsCost)||0;
const languageSkillsCP = parseInt(values.hiddenLanguageSkillsCost)||0;
const enhancerSkillsCP = parseInt(values.hiddenEnhancerSkillsCost)||0;
const martialSkillsCP = parseInt(values.hiddenMartialSkillsCost)||0;
const powersPerksTalentsCP = parseInt(values.powersPerksTalentsCost)||0;
const complicationsCP = parseInt(values.complicationsBenefit)||0;
const bonusCP = parseInt(values.bonusBenefit)||0;
const experienceCP = parseInt(values.experienceBenefit)||0;
let totalSkillsCP = set1SkillsCP+set2SkillsCP+set3SkillsCP+combatSkillsCP+languageSkillsCP+enhancerSkillsCP+martialSkillsCP;
let totalCP = characteristicsCP+totalSkillsCP+powersPerksTalentsCP-complicationsCP-bonusCP-experienceCP;
setAttrs({
"skillsCost":totalSkillsCP,
"totalCharacterCost":totalCP
});
});
}
on("change:characteristicsCost change:hiddenSet1SkillsCost change:hiddenSet2SkillsCost change:hiddenSet3SkillsCost change:hiddenCombatSkillsCost change:hiddenEnhancerSkillsCost change:hiddenLanguageSkillsCost change:hiddenMartialSkillsCost change:powersPerksTalentsCost change:complicationsBenefit change:bonusBenefit change:experienceBenefit", function () {
// Update total character points any of the hidden character point subtotals change.
addPoints();
});
/* -------------------------------------------------- */
/* Functions used for talents and complications tab */
/* -------------------------------------------------- */
// Update Tally Bar after change notice any complication's CP benefit.
on("change:complicationCP01 change:complicationCP02 change:complicationCP03 change:complicationCP04 change:complicationCP05 change:complicationCP06", function () {
getAttrs(["complicationCP01","complicationCP02","complicationCP03","complicationCP04","complicationCP05","complicationCP06"], function(values) {
let totalBenefit = 0;
for (let i = 0; i < maxComplicationNum; i++)
totalBenefit += parseInt(values["complicationCP"+String(i).padStart(2,'0')])||0;
setAttrs({
"complicationsBenefit":totalBenefit
});
});
});
function sumPowersPerksTalents() {
getAttrs(["talentCP01","talentCP02","talentCP03","talentCP04","talentCP05","talentCP06","talentCP07","powerCP01","powerCP02","powerCP03","powerCP04","powerCP05","powerCP06", "powerCP07", "powerCP08", "powerCP09", "powerCP10"], function(values) {
let talentsCost = 0;
for (let i = 0; i < maxTalentNum; i++)
talentsCost += parseInt(values["talentCP"+String(i).padStart(2,'0')])||0;
let powersCost = 0;
for (let i = 0; i < maxPowerNum; i++)
powersCost += parseInt(values["powerCP"+String(i).padStart(2,'0')])||0;
setAttrs({
"powersPerksTalentsCost":(talentsCost + powersCost)
});
});
}
// Update Tally Bar after change to any Talent's CP cost.
on("change:talentCP01 change:talentCP02 change:talentCP03 change:talentCP04 change:talentCP05 change:talentCP06 change:talentCP07", function () {
sumPowersPerksTalents();
});
/* -------------------------------------------------- */
/* Functions used for powers tab */
/* -------------------------------------------------- */
function calculatePowerEND(powerActiveCost,powerReducedEND) {
// Calculates power endurance given active cost and reduced, standard, or increased endurance limitation.
var powerEND=0;
var found=1;
if (["standardEND", "costsENDfull"].includes(powerReducedEND)) {
powerEND=heroRoundLow(powerActiveCost/10);
} else if (["reducedEND", "reducedENDAF", "costsENDhalf"].includes(powerReducedEND)) {
powerEND=heroRoundLow(powerActiveCost/20);
} else if (powerReducedEND.startsWith("increasedENDx")) {
// Grab the Multiplier first, if 0 then that means we're x10
powerEND = parseInt(powerReducedEND.slice(-1));
powerEND = (powerEND ? powerEND : 10) * (heroRoundLow(powerActiveCost/10));
} else {
found = 0;
}
if (found)
powerEND = Math.max(found, powerEND);
return powerEND;
}
function calculateActiveCost(powerBaseCost,powerAdvantages,powerReducedEND) {
var powerActiveCost=0;
switch (powerReducedEND) {
case 'reducedENDAF': powerActiveCost=powerBaseCost*(powerAdvantages+1.5);
break;
case 'zeroENDAF': powerActiveCost=powerBaseCost*(powerAdvantages+2);
break;
case 'reducedEND': powerActiveCost=powerBaseCost*(powerAdvantages+1.25);
break;
case 'zeroEND': powerActiveCost=powerBaseCost*(powerAdvantages+1.5);
break;
default: powerActiveCost=powerBaseCost*(1+powerAdvantages);
}
return powerActiveCost;
}
function increasedENDlimitation(settingEND) {
switch (settingEND) {
case 'costsENDhalf': return 0.25;
break;
case 'costsENDfull': return 0.5;
break;
case 'increasedENDx2': return 0.5;
break;
case 'increasedENDx2': return 0.5;
break;
case 'increasedENDx3': return 1;
break;
case 'increasedENDx4': return 1.5;
break;
case 'increasedENDx5': return 2;
break;
case 'increasedENDx6': return 2.5;
break;
case 'increasedENDx7': return 3;
break;
case 'increasedENDx8': return 3.5;
break;
case 'increasedENDx9': return 3.5;
break;
case 'increasedENDx10': return 4;
break;
default: return 0;
}
}
/* Expanders for Powers */
arrayOf(maxPowerNum).forEach(num => {
var button = "powerExpand"+String(num).padStart(2,'0');
on(`clicked:${button}`, function() {
var attributes = new Object();
var attribToSet = num <= (maxPowerNum + 1) / 2 ? "leftPowerToggle" : "rightPowerToggle";
attributes[attribToSet] = button;
setAttrs(attributes);
});
});
/* Power XX Change */
arrayOf(maxPowerNum).forEach(num => {
var ID = String(num).padStart(2,'0');
on("change:powerType"+ID+" change:powerBaseCost"+ID+" change:powerAdvantages"+ID+" change:powerReducedEND"+ID+" change:powerLimitations"+ID+" change:powerDice"+ID, function () {
getAttrs(["powerType"+ID,"powerBaseCost"+ID,"powerAdvantages"+ID,"powerReducedEND"+ID,"powerLimitations"+ID,"powerDice"+ID], function(values) {
let powerType = values["powerType"+ID];
const powerBaseCost = parseInt(values["powerBaseCost"+ID])||0;
const powerAdvantages = parseFloat(values["powerAdvantages"+ID])||0;
let thePowerDice=values["powerDice"+ID];
const powerReducedEND = values["powerReducedEND"+ID];
var increasedENDLimitation=increasedENDlimitation(powerReducedEND);
var powerLimitations = (parseFloat(values["powerLimitations"+ID])||0)+increasedENDLimitation;
let powerActiveCost=0;
let powerModifiedCost=0;
let powerRealCost=0;
let powerEND=0;
powerPreReducedEndActiveCost=powerBaseCost * (1+powerAdvantages);
powerEND=calculatePowerEND(powerPreReducedEndActiveCost, powerReducedEND);
powerActiveCost=calculateActiveCost(powerBaseCost, powerAdvantages, powerReducedEND);
powerActiveCost=heroRoundLow(powerActiveCost);
thePowerDice=thePowerDice.replace(/[^\ddD\\+\\-]/g,"");
if (powerBaseCost != 0) {
switch (powerType) {
case 'variableSlot': powerRealCost=powerActiveCost/(1+powerLimitations)/5;
powerRealCost=heroRoundLow(powerRealCost);
if (powerRealCost<1) {
powerRealCost=1;
};
break;
case 'fixedSlot': powerRealCost=powerActiveCost/(1+powerLimitations)/10;
powerRealCost=heroRoundLow(powerRealCost);
if (powerRealCost<1) {
powerRealCost=1;
};
break;
default: powerRealCost=powerActiveCost/(1+powerLimitations);
powerRealCost=heroRoundLow(powerRealCost);
if (powerRealCost<1) {
powerRealCost=1;
};
}
} else {
powerActiveCost=0;
powerEND=0;
}
var attributes = new Object();
attributes["powerActiveCost"+ID] = powerActiveCost;
attributes["powerEND"+ID] = powerEND;
attributes["powerCP"+ID] = powerRealCost;
attributes["hiddenPowerDice"+ID] = thePowerDice;
setAttrs(attributes);
});
});
});
/* Use Power XX Endurance */
arrayOf(maxPowerNum).forEach(num => {
var powerId = String(num).padStart(2,'0');
on("clicked:buttonPowerEND"+powerId, function() {
getAttrs(["powerEND"+powerId], function(values) {
subtractEndurance(parseInt(values["powerEND"+powerId]));
});
});
});
/* Activate Power XX */
arrayOf(maxPowerNum).forEach(num => {
var powerId = String(num).padStart(2,'0');
on("clicked:powerRoll"+powerId, function() {
var theRoll = "&{template:custom-power-attack} {{title=@{character_name} - @{character_title}}} "
+ "{{subtitle= @{powerName"+powerId+"} - @{powerEffect"+powerId+"}}} {{desc=@{powerText"+powerId+"}}} "
+ "{{Activate On = [[?{Modifiers|0}+@{powerSkillRoll"+powerId+"}]] **or less**}} "
+ "{{Success Roll=[[3d6cf6cs1]]}} {{Attack Roll=[[3d6cf6cs1]]}} "
+ "{{Effect Roll=[[@{hiddenPowerDice"+powerId+"}sd]]}} "
+ "{{END=[[@{powerEND"+powerId+"}]] (@{CurrentEND})}}";
startRoll(theRoll, (results) => {
// Roll activation and effect dice. If the option to auto apply endurance is TRUE, subtract the power's END once from endurance.
getAttrs(["optionAutoSubtractEND", "powerEND"+powerId], function(values) {
let powerEND = parseInt(values["powerEND"+powerId])||0;
if (values.optionAutoSubtractEND != 0)
subtractEndurance(powerEND);
});
finishRoll(results.rollId, {});
});
});
});
// Update Tally Bar after change to any Power's CP cost.
on("change:powerCP01 change:powerCP02 change:powerCP03 change:powerCP04 change:powerCP05 change:powerCP06 change:powerCP07 change:powerCP08 change:powerCP09 change:powerCP10 change:powerCP11 change:powerCP12 change:powerCP13 change:powerCP14 change:powerCP15 change:powerCP16 change:powerCP17", function () {
sumPowersPerksTalents();
});
/* -------------- */
/* Power Movers */
/* -------------- */
arrayOf(maxPowerNum).forEach(num => {
var lowId = String(num).padStart(2,'0');
var highId = String(num == maxPowerNum ? 1 : num + 1).padStart(2,'0');
on("clicked:powerDown"+lowId+" clicked:powerUp"+highId, function() {
getAttrs(["powerName"+lowId, "powerType"+lowId, "powerEffect"+lowId, "powerDice"+lowId, "powerSkillRoll"+lowId,
"powerBaseCost"+lowId, "powerAdvantages"+lowId, "powerLimitations"+lowId, "powerReducedEND"+lowId, "powerText"+lowId,
"powerName"+highId, "powerType"+highId, "powerEffect"+highId, "powerDice"+highId, "powerSkillRoll"+highId,
"powerBaseCost"+highId, "powerAdvantages"+highId, "powerLimitations"+highId, "powerReducedEND"+highId, "powerText"+highId], function(values)
{
var attributes = new Object();
attributes["powerName"+lowId] = values["powerName"+highId];
attributes["powerName"+highId] = values["powerName"+lowId];
attributes["powerType"+lowId] = values["powerType"+highId];
attributes["powerType"+highId] = values["powerType"+lowId];
attributes["powerEffect"+lowId] = values["powerEffect"+highId];
attributes["powerEffect"+highId] = values["powerEffect"+lowId];
attributes["powerDice"+lowId] = values["powerDice"+highId];
attributes["powerDice"+highId] = values["powerDice"+lowId];
attributes["powerSkillRoll"+lowId] = values["powerSkillRoll"+highId];
attributes["powerSkillRoll"+highId] = values["powerSkillRoll"+lowId];
attributes["powerBaseCost"+lowId] = values["powerBaseCost"+highId];
attributes["powerBaseCost"+highId] = values["powerBaseCost"+lowId];
attributes["powerAdvantages"+lowId] = values["powerAdvantages"+highId];
attributes["powerAdvantages"+highId] = values["powerAdvantages"+lowId];
attributes["powerLimitations"+lowId] = values["powerLimitations"+highId];
attributes["powerLimitations"+highId] = values["powerLimitations"+lowId];
attributes["powerReducedEND"+lowId] = values["powerReducedEND"+highId];
attributes["powerReducedEND"+highId] = values["powerReducedEND"+lowId];
attributes["powerText"+lowId] = values["powerText"+highId];
attributes["powerText"+highId] = values["powerText"+lowId];
setAttrs(attributes);
});
});
});
/* -------------------------------------------------- */
/* Functions used for skills tab */
/* -------------------------------------------------- */
function calculateLanguageSkillCost(skillFluency, skillLiteracy, enhancerLinguist, literacyCost) {
var enhancerBonus=0;
var languageCP=0;
let literacyCP=0;
if (skillLiteracy!=0) {
literacyCP=literacyCost;
}
if (enhancerLinguist!=0) {
enhancerBonus=1;
}
switch (skillFluency) {
case "native": languageCP = literacyCP;
break;
case "none": languageCP = literacyCP;
break;
case "basic": languageCP = 1+literacyCP;
break;
case "fluent": languageCP = 2+literacyCP-enhancerBonus;
break;
case "accent": languageCP = 3+literacyCP-enhancerBonus;
break;
case "idiomatic": languageCP = 4+literacyCP-enhancerBonus;
break;
case "imitate": languageCP = 5+literacyCP-enhancerBonus;
break;
}
return languageCP;
}
function standardSkillChance(theBaseSkillRoll,skillCP,additionalLevels) {
var skillCost=3;
var skillLevelCost=2;
var theSkillRollChance;
var theSkillBonus;
if (skillCP==0) {
theSkillRollChance=0;
} else if (skillCP==1) {
theSkillRollChance=8;
} else if (skillCP==2) {
theSkillRollChance=10;
} else {
theSkillBonus=Math.floor((skillCP-skillCost)/skillLevelCost);
theSkillRollChance=theBaseSkillRoll+theSkillBonus+additionalLevels;
}
return theSkillRollChance;
}
function knowledgeSkillChance(enhancer,skillCP,additionalLevels) {
// Calculate KS, PS, or AK-type skill roll chance.
var skillCost=2;
var skillLevelCost=1;
var theBaseSkillRoll=11;
var theSkillBonus=0;
var theSkillRollChance=0;
if (skillCP==0) {
theSkillRollChance = 0;
} else if (skillCP==1 && enhancer == 0) {
theSkillRollChance = 8;
} else if ( (skillCP>=2) && (enhancer == 0) ) {
theSkillBonus=skillCP-skillCost;
theSkillRollChance = theBaseSkillRoll+theSkillBonus+additionalLevels;
} else {
skillCost=1;
theSkillBonus=skillCP-skillCost;
theSkillRollChance = theBaseSkillRoll+theSkillBonus+additionalLevels;
}
return theSkillRollChance;
}
function knowledgeIntSkillChance(theBaseSkillRoll, enhancer, skillCP, additionalLevels) {
// Knowledge, Professional, and Science Skills can be purchased as Intelligence-based skills. In such a case
// this function replaces the more general knowledgeSkillChance(...) function.
var skillCost=3;
var skillLevelCost=1;
var theSkillBonus=0;
var theSkillRollChance=0;
if (skillCP==0) {
theSkillRollChance = 0;
} else if (skillCP==1 && enhancer == 0) {
theSkillRollChance = 8;
} else if (skillCP==1 && enhancer != 0) {
theSkillRollChance = 11+additionalLevels; // I.e., a regular Knowledge Skill is the better choice.
} else if ( (skillCP==2) && (enhancer == 0) ) {
theSkillRollChance = 11+additionalLevels; // I.e., a regular Knowledge Skill is better than 10- skill proficiency.
} else if ( (skillCP==3) && (enhancer == 0) ) {
theSkillBonus=0;
theSkillRollChance=theBaseSkillRoll+theSkillBonus+additionalLevels;
} else {
if (enhancer!=0) {
skillCost=2;
}
theSkillBonus=Math.floor((skillCP-skillCost)/skillLevelCost);
theSkillRollChance=theBaseSkillRoll+theSkillBonus+additionalLevels;
}
return theSkillRollChance;
}
function calculateSkillChance(skillType,skillCP,enhancerJack,enhancerSch,enhancerSci,enhancerTrav,strengthChance,dexterityChance,constitutionChance,intelligenceChance,egoChance,presenceChance,interactionSkillLevels,intellectSkillLevels,agilitySkillLevels,bonusLevels) {
// Calculates the skill roll chance for a general skill.
//
// A bit crazy, but all of these variables need to be passed to this function for the the switch function contained below
// to calculate the skill roll chance for the skill passed to the function.
switch (skillType) {
case "str":
theSkillRollChance=standardSkillChance( strengthChance,skillCP,bonusLevels);
break;
case "dex":
theSkillRollChance=standardSkillChance( dexterityChance,skillCP,agilitySkillLevels+bonusLevels);
break;
case "con":
theSkillRollChance=standardSkillChance( constitutionChance,skillCP,bonusLevels);
break;
case "int":
theSkillRollChance=standardSkillChance( intelligenceChance,skillCP,intellectSkillLevels+bonusLevels);
break;
case "ego":
theSkillRollChance=standardSkillChance( egoChance,skillCP,bonusLevels);
break;
case "pre":
theSkillRollChance=standardSkillChance( presenceChance,skillCP,interactionSkillLevels+bonusLevels);
break;
case "ps":
theSkillRollChance=knowledgeSkillChance( enhancerJack,skillCP,bonusLevels);
break;
case "intPS":
theSkillRollChance=knowledgeIntSkillChance( intelligenceChance, enhancerJack,skillCP,bonusLevels);
break;
case "dexPS":
theSkillRollChance=knowledgeIntSkillChance( dexterityChance, enhancerJack,skillCP,bonusLevels);
break;
case "ks":
theSkillRollChance=knowledgeSkillChance( enhancerSch,skillCP,bonusLevels);
break;
case "intKS":
theSkillRollChance=knowledgeIntSkillChance( intelligenceChance, enhancerSch, skillCP,bonusLevels);
break;
case "ss":
theSkillRollChance=knowledgeSkillChance( enhancerSci,skillCP,bonusLevels);
break;
case "intSS":
theSkillRollChance=knowledgeIntSkillChance( intelligenceChance, enhancerSci, skillCP,bonusLevels);
break;
case "ak":
theSkillRollChance=knowledgeSkillChance( enhancerTrav,skillCP,bonusLevels);;
break;
case "other":
theSkillRollChance=0;
break;
case "none":
theSkillRollChance=0;
break;
case "group":
theSkillRollChance=0;
break;
default:
theSkillRollChance=0;
}
return theSkillRollChance;
}
/* -------------- */
/* Skill Movers */
/* -------------- */
arrayOf(maxSkillNum).forEach(num => {
var lowId = String(num).padStart(2,'0');
var highId = String(num == maxSkillNum ? 1 : num + 1).padStart(2,'0');
on("clicked:skillDown"+lowId+" clicked:skillUp"+highId, function () {
getAttrs(["skillName"+lowId, "skillName"+highId, "skillType"+lowId, "skillType"+highId, "skillCP"+lowId, "skillCP"+highId], function(values) {
var attributes = new Object();
attributes["skillName"+lowId] = values["skillName"+highId];
attributes["skillName"+highId] = values["skillName"+lowId];
attributes["skillType"+lowId] = values["skillType"+highId];
attributes["skillType"+highId] = values["skillType"+lowId];
attributes["skillCP"+lowId] = values["skillCP"+highId];
attributes["skillCP"+highId] = values["skillCP"+lowId];
setAttrs(attributes);
});
});
});
/* ------------------- */
/* Skill Updaters */
/* ------------------- */
/* Skill set 01-10 */
on("change:skillType01 change:skillCP01 change:skillType02 change:skillCP02 change:skillType03 change:skillCP03 change:skillType04 change:skillCP04 change:skillType05 change:skillCP05 change:skillType06 change:skillCP06 change:skillType07 change:skillCP07 change:skillType08 change:skillCP08 change:skillType09 change:skillCP09 change:skillType10 change:skillCP10 change:enhancerJack change:enhancerSch change:enhancerSci change:enhancerTrav change:strengthChance change:dexterityChance change:constitutionChance change:intelligenceChance change:egoChance change:presenceChance change:interactionLevels change:intellectLevels change:agilityLevels change:noncombatLevels change:overallLevels", function() {
//
// The sandbox makes calculating the skill roll chance of general skills messy. All of these modifiers need to be accessed and checked for changes.
// Group levels are handled by slotting into skills 01 and 05. A player will need to organize the three skills that the group levels apply into
// the three lines below the desired group level.
//
getAttrs(["skillType01","skillCP01","skillType02","skillCP02","skillType03","skillCP03","skillType04","skillCP04","skillType05","skillCP05","skillType06","skillCP06","skillType07","skillCP07","skillType08","skillCP08","skillType09","skillCP09","skillType10","skillCP10","enhancerJack","enhancerSch","enhancerSci","enhancerTrav","strengthChance","dexterityChance","constitutionChance","intelligenceChance","egoChance","presenceChance","interactionLevels","intellectLevels","agilityLevels","noncombatLevels","overallLevels"], function(values) {
// Skill 01
let bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance01=calculateSkillChance(values.skillType01, (parseInt(values.skillCP01)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 02
// Bonus Levels for Skills 02, 03, and 04 may include group levels if Skill 01 is of type "group".
if (values.skillType01==="group") {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0)+Math.floor((parseInt(values.skillCP01))/3);
} else {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
}
let skillRollChance02=calculateSkillChance(values.skillType02, (parseInt(values.skillCP02)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 03
let skillRollChance03=calculateSkillChance(values.skillType03, (parseInt(values.skillCP03)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 04
let skillRollChance04=calculateSkillChance(values.skillType04, (parseInt(values.skillCP04)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 05
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance05=calculateSkillChance(values.skillType05, (parseInt(values.skillCP05)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 06
// Bonus Levels for Skills 06, 07, and 08 may include group levels if Skill 05 is of type "group".
if (values.skillType05=="group") {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0)+Math.floor((parseInt(values.skillCP05))/3);
} else {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
}
let skillRollChance06=calculateSkillChance(values.skillType06, (parseInt(values.skillCP06)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 07
let skillRollChance07=calculateSkillChance(values.skillType07, (parseInt(values.skillCP07)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 08
let skillRollChance08=calculateSkillChance(values.skillType08, (parseInt(values.skillCP08)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 09
// Skills 09 and 10 aren't available for group levels.
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance09=calculateSkillChance(values.skillType09, (parseInt(values.skillCP09)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 10
let skillRollChance10=calculateSkillChance(values.skillType10, (parseInt(values.skillCP10)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill Set 1 total character point cost
let setSkillsCost=(parseInt(values.skillCP01)||0)+(parseInt(values.skillCP02)||0)+(parseInt(values.skillCP03)||0)+(parseInt(values.skillCP04)||0)+(parseInt(values.skillCP05)||0)+(parseInt(values.skillCP06)||0)+(parseInt(values.skillCP07)||0)+(parseInt(values.skillCP08)||0)+(parseInt(values.skillCP09)||0)+(parseInt(values.skillCP10)||0);
// Assign calculated skill rolls.
setAttrs({
"skillRollChance01":skillRollChance01,
"skillRollChance02":skillRollChance02,
"skillRollChance03":skillRollChance03,
"skillRollChance04":skillRollChance04,
"skillRollChance05":skillRollChance05,
"skillRollChance06":skillRollChance06,
"skillRollChance07":skillRollChance07,
"skillRollChance08":skillRollChance08,
"skillRollChance09":skillRollChance09,
"skillRollChance10":skillRollChance10,
"hiddenSet1SkillsCost":setSkillsCost
});
});
});
/* Skill set 11-20 */
on("change:skillType11 change:skillCP11 change:skillType12 change:skillCP12 change:skillType13 change:skillCP13 change:skillType14 change:skillCP14 change:skillType15 change:skillCP15 change:skillType16 change:skillCP16 change:skillType17 change:skillCP17 change:skillType18 change:skillCP18 change:skillType19 change:skillCP19 change:skillType20 change:skillCP20 change:enhancerJack change:enhancerSch change:enhancerSci change:enhancerTrav change:strengthChance change:dexterityChance change:constitutionChance change:intelligenceChance change:egoChance change:presenceChance change:interactionLevels change:intellectLevels change:agilityLevels change:noncombatLevels change:overallLevels", function() {
//
// The sandbox makes calculating the skill roll chance of general skills messy. All of these modifiers need to be accessed and checked for changes.
// Group levels are handled by slotting into skills 11 and 15. A player will need to organize the three skills that the group levels apply into
// the three lines below the desired group level.
//
getAttrs(["skillType11","skillCP11","skillType12","skillCP12","skillType13","skillCP13","skillType14","skillCP14","skillType15","skillCP15","skillType16","skillCP16","skillType17","skillCP17","skillType18","skillCP18","skillType19","skillCP19","skillType20","skillCP20","enhancerJack","enhancerSch","enhancerSci","enhancerTrav","strengthChance","dexterityChance","constitutionChance","intelligenceChance","egoChance","presenceChance","interactionLevels","intellectLevels","agilityLevels","noncombatLevels","overallLevels"], function(values) {
// Skill 11
let bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance11=calculateSkillChance(values.skillType11, (parseInt(values.skillCP11)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 12
// Bonus Levels for Skills 12, 13, and 14 may include group levels if Skill 11 is of type "group".
if (values.skillType11==="group") {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0)+Math.floor((parseInt(values.skillCP11))/3);
} else {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
}
let skillRollChance12=calculateSkillChance(values.skillType12, (parseInt(values.skillCP12)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 13
let skillRollChance13=calculateSkillChance(values.skillType13, (parseInt(values.skillCP13)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 14
let skillRollChance14=calculateSkillChance(values.skillType14, (parseInt(values.skillCP14)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 15
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance15=calculateSkillChance(values.skillType15, (parseInt(values.skillCP15)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 16
// Bonus Levels for Skills 16, 17, and 18 may include group levels if Skill 15 is of type "group".
if (values.skillType15==="group") {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0)+Math.floor((parseInt(values.skillCP15))/3);
} else {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
}
let skillRollChance16=calculateSkillChance(values.skillType16, (parseInt(values.skillCP16)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 17
let skillRollChance17=calculateSkillChance(values.skillType17, (parseInt(values.skillCP17)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 18
let skillRollChance18=calculateSkillChance(values.skillType18, (parseInt(values.skillCP18)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 19
// Skills 19 and 20 aren't available for group levels.
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance19=calculateSkillChance(values.skillType19, (parseInt(values.skillCP19)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 20
let skillRollChance20=calculateSkillChance(values.skillType20, (parseInt(values.skillCP20)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill Set 2 total character point cost
let setSkillsCost=(parseInt(values.skillCP11)||0)+(parseInt(values.skillCP12)||0)+(parseInt(values.skillCP13)||0)+(parseInt(values.skillCP14)||0)+(parseInt(values.skillCP15)||0)+(parseInt(values.skillCP16)||0)+(parseInt(values.skillCP17)||0)+(parseInt(values.skillCP18)||0)+(parseInt(values.skillCP19)||0)+(parseInt(values.skillCP20)||0);
// Assign calculated skill rolls.
setAttrs({
"skillRollChance11":skillRollChance11,
"skillRollChance12":skillRollChance12,
"skillRollChance13":skillRollChance13,
"skillRollChance14":skillRollChance14,
"skillRollChance15":skillRollChance15,
"skillRollChance16":skillRollChance16,
"skillRollChance17":skillRollChance17,
"skillRollChance18":skillRollChance18,
"skillRollChance19":skillRollChance19,
"skillRollChance20":skillRollChance20,
"hiddenSet2SkillsCost":setSkillsCost
});
});
});
/* Skill set 21-30 */
on("change:skillType21 change:skillCP21 change:skillType22 change:skillCP22 change:skillType23 change:skillCP23 change:skillType24 change:skillCP24 change:skillType25 change:skillCP25 change:skillType26 change:skillCP26 change:skillType27 change:skillCP27 change:skillType28 change:skillCP28 change:skillType29 change:skillCP29 change:skillType30 change:skillCP30 change:enhancerJack change:enhancerSch change:enhancerSci change:enhancerTrav change:strengthChance change:dexterityChance change:constitutionChance change:intelligenceChance change:egoChance change:presenceChance change:interactionLevels change:intellectLevels change:agilityLevels change:noncombatLevels change:overallLevels", function() {
//
// The sandbox makes calculating the skill roll chance of general skills messy. All of these modifiers need to be accessed and checked for changes.
// Group levels are handled by slotting into skills 21 and 25. A player will need to organize the three skills that the group levels apply into
// the three lines below the desired group level.
//
getAttrs(["skillType21","skillCP21","skillType22","skillCP22","skillType23","skillCP23","skillType24","skillCP24","skillType25","skillCP25","skillType26","skillCP26","skillType27","skillCP27","skillType28","skillCP28","skillType29","skillCP29","skillType30","skillCP30","enhancerJack","enhancerSch","enhancerSci","enhancerTrav","strengthChance","dexterityChance","constitutionChance","intelligenceChance","egoChance","presenceChance","interactionLevels","intellectLevels","agilityLevels","noncombatLevels","overallLevels"], function(values) {
// Skill 21
let bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance21=calculateSkillChance(values.skillType21, (parseInt(values.skillCP21)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 22
// Bonus Levels for Skills 22, 23, and 24 may include group levels if Skill 21 is of type "group".
if (values.skillType21==="group") {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0)+Math.floor((parseInt(values.skillCP21))/3);
} else {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
}
let skillRollChance22=calculateSkillChance(values.skillType22, (parseInt(values.skillCP22)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 23
let skillRollChance23=calculateSkillChance(values.skillType23, (parseInt(values.skillCP23)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 24
let skillRollChance24=calculateSkillChance(values.skillType24, (parseInt(values.skillCP24)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 25
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance25=calculateSkillChance(values.skillType25, (parseInt(values.skillCP25)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 26
// Bonus Levels for Skills 26, 27, and 28 may include group levels if Skill 25 is of type "group".
if (values.skillType25==="group") {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0)+Math.floor((parseInt(values.skillCP25))/3);
} else {
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
}
let skillRollChance26=calculateSkillChance(values.skillType26, (parseInt(values.skillCP26)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 27
let skillRollChance27=calculateSkillChance(values.skillType27, (parseInt(values.skillCP27)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 28
let skillRollChance28=calculateSkillChance(values.skillType28, (parseInt(values.skillCP28)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 29
// Skills 29 and 30 aren't available for group levels.
bonusLevels=(parseInt(values.noncombatLevels)||0)+(parseInt(values.overallLevels)||0);
let skillRollChance29=calculateSkillChance(values.skillType29, (parseInt(values.skillCP29)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill 30
let skillRollChance30=calculateSkillChance(values.skillType30, (parseInt(values.skillCP30)||0), values.enhancerJack, values.enhancerSch, values.enhancerSci, values.enhancerTrav, (parseInt(values.strengthChance)||0), (parseInt(values.dexterityChance)||0), (parseInt(values.constitutionChance)||0), (parseInt(values.intelligenceChance)||0), (parseInt(values.egoChance)||0), (parseInt(values.presenceChance)||0), (parseInt(values.interactionLevels)||0), (parseInt(values.intellectLevels)||0), (parseInt(values.agilityLevels)||0), bonusLevels);
// Skill Set 3 total character point cost
let setSkillsCost=(parseInt(values.skillCP21)||0)+(parseInt(values.skillCP22)||0)+(parseInt(values.skillCP23)||0)+(parseInt(values.skillCP24)||0)+(parseInt(values.skillCP25)||0)+(parseInt(values.skillCP26)||0)+(parseInt(values.skillCP27)||0)+(parseInt(values.skillCP28)||0)+(parseInt(values.skillCP29)||0)+(parseInt(values.skillCP30)||0);
// Assign calculated skill rolls.
setAttrs({
"skillRollChance21":skillRollChance21,
"skillRollChance22":skillRollChance22,
"skillRollChance23":skillRollChance23,
"skillRollChance24":skillRollChance24,
"skillRollChance25":skillRollChance25,
"skillRollChance26":skillRollChance26,
"skillRollChance27":skillRollChance27,
"skillRollChance28":skillRollChance28,
"skillRollChance29":skillRollChance29,
"skillRollChance30":skillRollChance30,
"hiddenSet3SkillsCost":setSkillsCost
});
});
});
/* Combat Skills */
on("change:skillLevels31 change:skillType31 change:skillLevels32 change:skillType32 change:skillLevels33 change:skillType33 change:skillLevels34 change:skillType34 change:skillLevels35 change:skillType35 change:skillLevels36 change:skillType36 change:skillLevels37 change:skillType37 change:skillLevels38 change:skillLevels39 change:skillLevels40", function () {
//
// Calculation of combat skill costs is based on many user selections.
// If the skill is a weapon familiarity, the cost is either 1 CP (WF1) or 2 CP (WF2).
// If the selection is a skill level, the cost is determined by number of levels and the scope (single: 2, small group: 3, or large group: 5).
// The costs of general combat skills are calculated by the function calculateCombatSkillCost(..).
//
// Skill level costs for all HTH, all ranged, and all combat are calculated here without the calculateCombatSkillCost(..).
//
getAttrs(["skillLevels31", "skillType31", "skillLevels32", "skillType32", "skillLevels33", "skillType33", "skillLevels34", "skillType34", "skillLevels35", "skillType35", "skillLevels36", "skillType36", "skillLevels37", "skillType37", "skillLevels38","skillLevels39","skillLevels40"], function(values) {
// Skills 31-37 are general combat skills with costs determined by their skill type or levels.
let skill31Cost = calculateCombatSkillCost(values.skillType31, (parseInt(values.skillLevels31)||0) );
let skill32Cost = calculateCombatSkillCost(values.skillType32, (parseInt(values.skillLevels32)||0) );
let skill33Cost = calculateCombatSkillCost(values.skillType33, (parseInt(values.skillLevels33)||0) );
let skill34Cost = calculateCombatSkillCost(values.skillType34, (parseInt(values.skillLevels34)||0) );
let skill35Cost = calculateCombatSkillCost(values.skillType35, (parseInt(values.skillLevels35)||0) );
let skill36Cost = calculateCombatSkillCost(values.skillType36, (parseInt(values.skillLevels36)||0) );
let skill37Cost = calculateCombatSkillCost(values.skillType37, (parseInt(values.skillLevels37)||0) );
// Skill 38: All HTH Combat Levels cost 8 CP each.
let skill38Cost = 8*(parseInt(values.skillLevels38)||0);
// Skill 39: All Range Combat Levels cost 8 CP each.
let skill39Cost = 8*(parseInt(values.skillLevels39)||0);
// Skill 40: All Combat Levels cost 10 CP each.
let skill40Cost = 10*(parseInt(values.skillLevels40)||0);
let combatSkillsCost = skill31Cost+skill32Cost+skill33Cost+skill34Cost+skill35Cost+skill36Cost+skill37Cost+skill38Cost+skill39Cost+skill40Cost;
setAttrs({
"hiddenCombatSkillsCost":combatSkillsCost,
"skillCP31":skill31Cost,
"skillCP32":skill32Cost,
"skillCP33":skill33Cost,
"skillCP34":skill34Cost,
"skillCP35":skill35Cost,
"skillCP36":skill36Cost,
"skillCP37":skill37Cost,
"skillCP38":skill38Cost,
"skillCP39":skill39Cost,
"skillCP40":skill40Cost
});
});
});
function calculateCombatSkillCost(skillType,numberOfLevels) {
// Used to calculate costs of general combat skill and familiarities.
let skillBaseCost=0;
let skillLevelCost=0;
switch (skillType) {
case "none": skillLevelCost=0;
skillBaseCost = 0;
break;
case "Fam1": skillLevelCost=0;
skillBaseCost = 1;
break;
case "Fam2": skillLevelCost=0;
skillBaseCost = 2;
break;
case "CSL2": skillLevelCost=2;
skillBaseCost = 0;
break;
case "CSL3": skillLevelCost=3;
skillBaseCost = 0;
break;
case "CSL5": skillLevelCost=5;
skillBaseCost = 0;
break;
case "CSL8": skillLevelCost=8;
skillBaseCost = 0;
break;
case "PSL1": skillLevelCost=1;
skillBaseCost = 0;
break;
case "PSL2": skillLevelCost=2;
skillBaseCost = 0;
break;
case "PSL3": skillLevelCost=3;
skillBaseCost = 0;
break;
default: skillLevelCost=0;
skillBaseCost = 0;
break;
}
return skillBaseCost+numberOfLevels*skillLevelCost;
}
/* Language Skills */
on("change:enhancerLing change:skillFluency41 change:skillLiteracy41 change:skillFluency42 change:skillLiteracy42 change:skillFluency43 change:skillLiteracy43 change:skillFluency44 change:skillLiteracy44 change:skillFluency45 change:skillLiteracy45 change:skillFluency46 change:skillLiteracy46 change:skillFluency47 change:skillLiteracy47 change:skillFluency48 change:skillLiteracy48 change:skillFluency49 change:skillLiteracy49, optionLiteracyCostsPoints", function () {
// Language skills are relatively simple without levels or roll calculations. The linguist enhancer is the only complication.
// All calculations handled by the function calculateLanguageSkillCost(...).
getAttrs(["enhancerLing", "skillFluency41","skillLiteracy41", "skillFluency42","skillLiteracy42", "skillFluency43","skillLiteracy43", "skillFluency44","skillLiteracy44", "skillFluency45","skillLiteracy45", "skillFluency46","skillLiteracy46", "skillFluency47","skillLiteracy47", "skillFluency48","skillLiteracy48", "skillFluency49","skillLiteracy49","optionLiteracyCostsPoints"], function(values) {
const linguist = values.enhancerLing;
let literacyCost = 0;
if (values.optionLiteracyCostsPoints!=0) {
literacyCost = 1;
}
let skill41Cost = calculateLanguageSkillCost( values.skillFluency41 , values.skillLiteracy41, linguist, literacyCost);
let skill42Cost = calculateLanguageSkillCost( values.skillFluency42 , values.skillLiteracy42, linguist, literacyCost);
let skill43Cost = calculateLanguageSkillCost( values.skillFluency43 , values.skillLiteracy43, linguist, literacyCost);
let skill44Cost = calculateLanguageSkillCost( values.skillFluency44 , values.skillLiteracy44, linguist, literacyCost);
let skill45Cost = calculateLanguageSkillCost( values.skillFluency45 , values.skillLiteracy45, linguist, literacyCost);
let skill46Cost = calculateLanguageSkillCost( values.skillFluency46 , values.skillLiteracy46, linguist, literacyCost);
let skill47Cost = calculateLanguageSkillCost( values.skillFluency47 , values.skillLiteracy47, linguist, literacyCost);
let skill48Cost = calculateLanguageSkillCost( values.skillFluency48 , values.skillLiteracy48, linguist, literacyCost);
let skill49Cost = calculateLanguageSkillCost( values.skillFluency49 , values.skillLiteracy49, linguist, literacyCost);
let totalLanguageCosts = skill41Cost+skill42Cost+skill43Cost+skill44Cost+skill45Cost+skill46Cost+skill47Cost+skill48Cost+skill49Cost;
setAttrs({
"hiddenLanguageSkillsCost":totalLanguageCosts,
"skillCP41":skill41Cost,
"skillCP42":skill42Cost,
"skillCP43":skill43Cost,
"skillCP44":skill44Cost,
"skillCP45":skill45Cost,
"skillCP46":skill46Cost,
"skillCP47":skill47Cost,
"skillCP48":skill48Cost,
"skillCP49":skill49Cost
});
});
});
/* Skill Enhancers and wide-scope noncombat levels */
on("change:enhancerJack change:enhancerLing change:enhancerSch change:enhancerSci change:enhancerTrav change:enhancerWell change:interactionLevels change:intellectLevels change:agilityLevels change:noncombatLevels change:overallLevels", function () {
// If any of the enhancers or wide-scope noncombat levels change (anything in the lower right skill block) recalculate their costs.
// Because enhancers lower the costs of other skills and wide-scope levels change the rolls of other other skills, the
// non-combat skills 01-30 will have their costs and roll chances recalculated as well.
getAttrs(["enhancerJack","enhancerLing","enhancerSch","enhancerSci","enhancerTrav","enhancerWell","interactionLevels","intellectLevels","agilityLevels","noncombatLevels","overallLevels"], function(values) {
// Check for purchased enhancers and assign costs of 3 CP for each.
const enhancerJackStatus=values.enhancerJack;
const enhancerLingStatus=values.enhancerLing;
const enhancerSchStatus=values.enhancerSch;
const enhancerSciStatus=values.enhancerSci;
const enhancerTravStatus=values.enhancerTrav;
const enhancerWellStatus=values.enhancerWell;
let enhancerJackCost = 0;
let enhancerLingCost = 0;
let enhancerSchCost = 0;
let enhancerSciCost = 0;
let enhancerTravCost = 0;
let enhancerWellCost = 0;
if (enhancerJackStatus!=0) {
enhancerJackCost = 3;
}
if (enhancerLingStatus!=0) {
enhancerLingCost = 3;
}
if (enhancerSchStatus!=0) {
enhancerSchCost = 3;
}
if (enhancerSciStatus!=0) {
enhancerSciCost = 3;
}
if (enhancerTravStatus!=0) {
enhancerTravCost = 3;
}
if (enhancerWellStatus!=0) {
enhancerWellCost = 3;
}
setAttrs({
"enhancerJackCP":enhancerJackCost,
"enhancerLingCP":enhancerLingCost,
"enhancerSchCP":enhancerSchCost,
"enhancerSciCP":enhancerSciCost,
"enhancerWellCP":enhancerWellCost,
"enhancerTravCP":enhancerTravCost
});
// Calculate costs for each wide-scope non-combat level.
const interactionSkillLevels=parseInt(values.interactionLevels)||0;
const intellectSkillLevels=parseInt(values.intellectLevels)||0;
const agilitySkillLevels=parseInt(values.agilityLevels)||0;
const noncombatSkillLevels=parseInt(values.noncombatLevels)||0;
const overallSkillLevels=parseInt(values.overallLevels)||0;
let interactionSkillLevelsCost= interactionSkillLevels*4;
let intellectSkillLevelsCost= intellectSkillLevels*4;
let agilitySkillLevelsCost= agilitySkillLevels*6;
let noncombatSkillLevelsCost= noncombatSkillLevels*10;
let overallSkillLevelsCost= overallSkillLevels*12;
setAttrs({
"interactionLevelsCP":interactionSkillLevelsCost,
"intellectLevelsCP":intellectSkillLevelsCost,
"agilityLevelsCP":agilitySkillLevelsCost,
"noncombatLevelsCP":noncombatSkillLevelsCost,
"overallLevelsCP":overallSkillLevelsCost
});
skillEnhancersCost = enhancerJackCost+enhancerLingCost+enhancerSchCost+enhancerSciCost+enhancerTravCost+enhancerWellCost;
skillLevelsCost=interactionSkillLevelsCost+intellectSkillLevelsCost+agilitySkillLevelsCost+noncombatSkillLevelsCost+overallSkillLevelsCost;
setAttrs({
"hiddenEnhancerSkillsCost":skillEnhancersCost+skillLevelsCost,
});
//addSkillPoints();
});
});
/* Martial Skills, which are entered in the Gear Section */
on("change:martialManeuverCP01 change:martialManeuverCP02 change:martialManeuverCP03 change:martialManeuverCP04 change:martialManeuverCP05 change:martialManeuverCP06", function () {
// Martial maneuver skills are not dependent on other attributes or skills.
getAttrs(["martialManeuverCP01", "martialManeuverCP02","martialManeuverCP03", "martialManeuverCP04","martialManeuverCP05", "martialManeuverCP06"], function(values) {
let martialManeuver01Cost = parseInt(values.martialManeuverCP01)||0;
let martialManeuver02Cost = parseInt(values.martialManeuverCP02)||0;
let martialManeuver03Cost = parseInt(values.martialManeuverCP03)||0;
let martialManeuver04Cost = parseInt(values.martialManeuverCP04)||0;
let martialManeuver05Cost = parseInt(values.martialManeuverCP05)||0;
let martialManeuver06Cost = parseInt(values.martialManeuverCP06)||0;
let totalMartialManeuversCost = martialManeuver01Cost+martialManeuver02Cost+martialManeuver03Cost+martialManeuver04Cost+martialManeuver05Cost+martialManeuver06Cost;
setAttrs({
"hiddenMartialSkillsCost":totalMartialManeuversCost
});
});
});
/* -------------------------------------------------- */
/* Functions used for gear tab */
/* -------------------------------------------------- */
/* Calculate weapon endurance costs */
on("change:optionSuperHeroicEndurance change:weaponStrength01 change:weaponStrength02 change:weaponStrength03 change:weaponStrength04 change:weaponStrength05 change:shieldStrength change:strength", function() {
getAttrs(["optionSuperHeroicEndurance", "weaponStrength01","weaponStrength02","weaponStrength03","weaponStrength04","weaponStrength05","shieldStrength","strength"], function(values) {
// If optionSuperHeroicEndurance is true, endurance cost is 1 per 5 strength, otherwise it is 1 per 10 strength used.
optionSuperHeroic = values.optionSuperHeroicEndurance;
let enduranceCostFactor = 10;
if (optionSuperHeroic != 0) {
enduranceCostFactor=5;
}
let enduranceCost01= heroRoundLow( (parseInt(values.weaponStrength01)||0)/enduranceCostFactor );
if ( (enduranceCost01<1) && (parseInt(values.weaponStrength01)||0)>0) {
enduranceCost01=1
}
let enduranceCost02= heroRoundLow( (parseInt(values.weaponStrength02)||0)/enduranceCostFactor );
if ( (enduranceCost02<1) && (parseInt(values.weaponStrength02)||0)>0) {
enduranceCost02=1
}
let enduranceCost03= heroRoundLow( (parseInt(values.weaponStrength03)||0)/enduranceCostFactor );
if ( (enduranceCost03<1) && (parseInt(values.weaponStrength03)||0)>0) {
enduranceCost03=1
}
let enduranceCost04= heroRoundLow( (parseInt(values.weaponStrength04)||0)/enduranceCostFactor );
if ( (enduranceCost04<1) && (parseInt(values.weaponStrength04)||0)>0) {
enduranceCost04=1
}
let enduranceCost05= heroRoundLow( (parseInt(values.weaponStrength05)||0)/enduranceCostFactor );
if ( (enduranceCost05<1) && (parseInt(values.weaponStrength05)||0)>0) {
enduranceCost05=1
}
let enduranceCostShield= heroRoundLow( (parseInt(values.shieldStrength)||0)/enduranceCostFactor );
if ( (enduranceCostShield<1) && (parseInt(values.shieldStrength)||0)>0) {
enduranceCostShield=1
}
let enduranceCostBasic= heroRoundLow( (parseInt(values.strength)||0)/enduranceCostFactor );
if ( (enduranceCostBasic<1) && (parseInt(values.strength)||0)>0) {
enduranceCostBasic=1
}
setAttrs({
"weaponEndurance01":enduranceCost01,
"weaponEndurance02":enduranceCost02,
"weaponEndurance03":enduranceCost03,
"weaponEndurance04":enduranceCost04,
"weaponEndurance05":enduranceCost05,
"shieldEndurance":enduranceCostShield,
"hiddenBasicEndurance":enduranceCostBasic
});
});
});
/* Gear Tab sum up equipment weight */
on("change:liftWeight change:armorEND01 change:armorEND02 change:armorEND03 change:armorEND04 change:armorMass01 change:armorMass01 change:armorMass02 change:armorMass03 change:armorMass04 change:shieldMass change:weaponMass01 change:weaponMass02 change:weaponMass03 change:weaponMass04 change:weaponMass05 change:equipMass01 change:equipMass02 change:equipMass03 change:equipMass04 change:equipMass05 change:equipMass06 change:equipMass07 change:equipMass08 change:equipMass09 change:equipMass10 change:equipMass11 change:equipMass12 change:equipMass13 change:equipMass14 change:equipMass15 change:equipMass16", function () {
// Add the masses of all items of equipment.
// Determine END used per turn, DCV/DEX roll penalty, and Movement Penalty.
getAttrs(["liftWeight","armorEND01","armorEND02","armorEND03","armorEND04","armorMass01","armorMass02","armorMass03","armorMass04","shieldMass", "weaponMass01", "weaponMass02", "weaponMass03", "weaponMass04", "weaponMass05", "equipMass01", "equipMass02", "equipMass03", "equipMass04", "equipMass05", "equipMass06", "equipMass07", "equipMass08", "equipMass09", "equipMass10", "equipMass11", "equipMass12", "equipMass13", "equipMass14", "equipMass15", "equipMass16"], function(values) {
// Add up carried mass
armorCarried=(parseFloat(values.armorMass01)||0)+(parseFloat(values.armorMass02)||0)+(parseFloat(values.armorMass03)||0)+(parseFloat(values.armorMass04)||0)+(parseFloat(values.shieldMass)||0);
weaponsCarried=(parseFloat(values.weaponMass01)||0)+(parseFloat(values.weaponMass02)||0)+(parseFloat(values.weaponMass03)||0)+(parseFloat(values.weaponMass04)||0)+(parseFloat(values.weaponMass05)||0);
equipmentCarried=(parseFloat(values.equipMass01)||0)+(parseFloat(values.equipMass02)||0)+(parseFloat(values.equipMass03)||0)+(parseFloat(values.equipMass04)||0)+(parseFloat(values.equipMass05)||0)+(parseFloat(values.equipMass06)||0)+(parseFloat(values.equipMass07)||0)+(parseFloat(values.equipMass08)||0)+(parseFloat(values.equipMass09)||0)+(parseFloat(values.equipMass10)||0)+(parseFloat(values.equipMass11)||0)+(parseFloat(values.equipMass12)||0)+(parseFloat(values.equipMass13)||0)+(parseFloat(values.equipMass14)||0)+(parseFloat(values.equipMass15)||0)+(parseFloat(values.equipMass16)||0);
carriedWeight=armorCarried+weaponsCarried+equipmentCarried;
carriedWeight=Math.floor(10*carriedWeight)/10;
// Determine penalties
const lift=(parseFloat(values.liftWeight)||0);
const armorENDcost = (parseInt(values.armorEND01)||0)+(parseInt(values.armorEND02)||0)+(parseInt(values.armorEND03)||0)+(parseInt(values.armorEND04)||0);
let enduranceCost=0;
let dexPenalty=0;
let movePenalty=0;
if (carriedWeight<=lift*0.1) {
dexPenalty=0;
enduranceCost=0+armorENDcost;
movePenalty=0;
} else if (carriedWeight<=lift*0.24) {
dexPenalty=-1;
enduranceCost=0+armorENDcost;
movePenalty=0;
} else if (carriedWeight<=lift*0.49) {
dexPenalty=-2;
enduranceCost=1+armorENDcost;
movePenalty=-2;
} else if (carriedWeight<=lift*0.74) {
dexPenalty=-3;
enduranceCost=2+armorENDcost;
movePenalty=-4;
} else if (carriedWeight<=lift*0.89) {
dexPenalty=-4;
enduranceCost=3+armorENDcost;
movePenalty=-8;
} else {
dexPenalty=-5;
enduranceCost=4+armorENDcost;
movePenalty=-16;
}
setAttrs({
"carriedWeight":carriedWeight,
"weightEndPenalty":enduranceCost,
"weightDexDCVPenalty":dexPenalty,
"weightMovePenalty":movePenalty
});
});
});
// Open with first tab (thanks to GiGs)
on("sheet:opened", function() {
setAttrs({sheetTab:"characteristics"});
});
/* ------------------------------------------------ */
/* --- Weapon Attacks and Hit Location Helpers --- */
/* ------------------------------------------------ */
// Update targetOCVpenalty.
on("change:optionHitLocationSystem change:targetSelection change:halveTargetOCVpenalty change:penaltySkillLevels", function () {
getAttrs(["optionHitLocationSystem","targetSelection","halveTargetOCVpenalty","penaltySkillLevels"], function(values) {
let penalty = 0;
let targetString = "3d6cs0cf0";
if (values.optionHitLocationSystem != 0) {
switch (parseInt(values.targetSelection)||1) {
case 1: penalty = 0;
break;
case 2: penalty = -8;
targetString = "1d3cs0cf0+2";
break;
case 3: penalty = -6;
targetString = "6";
break;
case 4: penalty = -5;
targetString = "1d2cs0cf0+6";
break;
case 5: penalty = -5;
targetString = "9";
break;
case 6: penalty = -3;
targetString = "1d2cs0cf0+9";
break;
case 7: penalty = -7;
targetString = "12";
break;
case 8: penalty = -8;
targetString = "13";
break;
case 9: penalty = -4;
targetString = "14";
break;
case 10: penalty = -6;
targetString = "1d2cs0cf0+14";
break;
case 11: penalty = -8;
targetString = "1d2cs0cf0+16";
break;
case 12: penalty = -4;
targetString = "1d6cs0cf0+3";
break;
case 13: penalty = -2;
targetString = "2d6cs0cf0+1";
break;
case 14: penalty = -1;
targetString = "2d6cs0cf0+4";
break;
case 15: penalty = -2;
targetString = "2d6cs0cf0+7";
break;
case 16: penalty = -4;
targetString = "1d6cs0cf0+12";
break;
default: penalty = 0;
};
if (values.halveTargetOCVpenalty != 0) {
penalty = heroRoundHigh(penalty/2);
}
// Apply penalty skill levels.
penalty = Math.min(0,penalty+(parseInt(values.penaltySkillLevels)||0));
}
// Update OCV penalty.. We flip it here so we can subtract it later.
setAttrs({
"targetOCVpenalty": -penalty,
"targetHitRoll": targetString
});
});
});
function hitLocationDetails(hitLocation) {
// Used to get information about a hit location.
let theMessage = "Chest";
let STUNx = 1;
let NSTUN = 1;
let BODYx = 1;
// Determine target location and stun multiplier.
switch (hitLocation) {
case 3:
case 4:
case 5:
theMessage = "Head";
STUNx = 5;
NSTUN = 2;
BODYx = 2;
break;
case 6:
theMessage = "Hands";
STUNx = 1;
NSTUN = 1/2;
BODYx = 1/2;
break;
case 7:
case 8:
theMessage = "Arms";
STUNx = 2;
NSTUN = 1/2;
BODYx = 1/2;
break;
case 9:
theMessage = "Shoulders";
STUNx = 3;
NSTUN = 1;
BODYx = 1;
break;
case 10:
case 11:
theMessage = "Chest";
STUNx = 3;
NSTUN = 1;
BODYx = 1;
break;
case 12:
theMessage = "Stomach";
STUNx = 4;
NSTUN = 3/2;
BODYx = 1;
break;
case 13:
theMessage = "Vitals";
STUNx = 4;
NSTUN = 3/2;
BODYx = 2;
break;
case 14:
theMessage = "Thighs";
STUNx = 2;
NSTUN = 1;
BODYx = 1;
break;
case 15:
case 16:
theMessage = "Legs";
STUNx = 2;
NSTUN = 1/2;
BODYx = 1/2;
break;
case 17:
case 18:
case 19: // Low Shot only
theMessage = "Feet";
STUNx = 1;
NSTUN = 1/2;
BODYx = 1/2;
break;
}
normalMessage = hitLocation + ": " + theMessage;
killMessage = normalMessage;
// This is already included in calculations shown
// if (STUNx != 1) {
// killMessage += "";
// killMessage += " x" + STUNx + "STUN*";
// }
if (NSTUN != 1) {
normalMessage += " x" + NSTUN + "STUN";
}
if (BODYx != 1) {
normalMessage += " x" + BODYx + "BODY";
killMessage += " x" + BODYx + "BODY";
}
var theHitLocation = {
normalMessage: normalMessage,
killMessage: killMessage,
roll: hitLocation,
STUNx: STUNx,
NSTUN: NSTUN,
BODYx: BODYx
};
return theHitLocation;
}
function convertStunToBody(diceRolls) {
let computed = 0;
for(let groupOfDice of diceRolls) {
if (groupOfDice.sides == 3) {
// calculate normal damage of d3 dice.
for (let element of groupOfDice.results) {
if (element === 3) {
computed = computed+1;
} else if (element === 2) {
computed = computed + Math.floor(Math.random()*2); // Flip a coin. 0 or 1 BODY corresponding to a '3' or '4' on a d6.
} else {
computed = computed+0; // Add nothing.
}
}
} else if (groupOfDice.sides == 6) {
// calculate normal damage of d6 dice.
for (let element of groupOfDice.results) {
if (element === 1) {
computed = computed+0; // Add nothing.
} else if (element === 6) {
computed = computed+2;
} else {
computed = computed+1;
}
}
}
}
return computed;
}
/* ------------------------ */
/* --- Weapon Attacks --- */
/* ------------------------ */
on("change:shieldDamage change:weaponDamage01 change:weaponDamage02 change:weaponDamage03 change:weaponDamage04 change:weaponDamage05 change:strength", function () {
// This function attempts to clean damage text input into text more likely to be rollable dice.
// Only characters 0-9, d, D, +, and - are passed to attack rolls.
getAttrs(["shieldDamage","weaponDamage01","weaponDamage02","weaponDamage03","weaponDamage04","weaponDamage05","strength"], function(values) {
var theShieldDamage=values.shieldDamage;
theShieldDamage=theShieldDamage.replace(/[^\ddD\\+\\-]/g,"");
var theWeaponDamage01=values.weaponDamage01;
theWeaponDamage01=theWeaponDamage01.replace(/[^\ddD\\+\\-]/g,"");
var theWeaponDamage02=values.weaponDamage02;
theWeaponDamage02=theWeaponDamage02.replace(/[^\ddD\\+\\-]/g,"");
var theWeaponDamage03=values.weaponDamage03;
theWeaponDamage03=theWeaponDamage03.replace(/[^\ddD\\+\\-]/g,"");
var theWeaponDamage04=values.weaponDamage04;
theWeaponDamage04=theWeaponDamage04.replace(/[^\ddD\\+\\-]/g,"");
var theWeaponDamage05=values.weaponDamage05;
theWeaponDamage05=theWeaponDamage05.replace(/[^\ddD\\+\\-]/g,"");
// Calculate basic strength damage dice and create a roll20 dice string of d6s and d3s.
let theStrength=parseInt(values.strength)||0;
let theNumberOfD6=(parseInt((theStrength-(theStrength%5))/5)||0).toString();
let theNumberOfD3=0;
if (theStrength%5>2) {
theNumberOfD3=1;
}
var theStrengthDamage=theNumberOfD6.concat("d6+",theNumberOfD3.toString(),"d3");
setAttrs({
hiddenShieldDamage01:theShieldDamage,
hiddenWeaponDamage01:theWeaponDamage01,
hiddenWeaponDamage02:theWeaponDamage02,
hiddenWeaponDamage03:theWeaponDamage03,
hiddenWeaponDamage04:theWeaponDamage04,
hiddenWeaponDamage05:theWeaponDamage05,
hiddenManeuverDamage01:theStrengthDamage
});
});
});
arrayOf(maxWeaponNum).forEach(num => {
var weaponId = String(num).padStart(2,'0');
on(`clicked:attackWeapon${weaponId}`, (info) => {
// Roll attack and damage dice for Weapon XX.
getAttrs(["weaponNormalDamage"+weaponId, "weaponStunMod"+weaponId, "weaponEndurance"+weaponId, "weaponAreaEffect"+weaponId,
"optionAutoSubtractEND", "optionHitLocationSystem"], function(values) {
let areaOfEffect = values["weaponAreaEffect"+weaponId] != 0;
let useHitLocations = values.optionHitLocationSystem != 0;
let isNormalDamage = values["weaponNormalDamage"+weaponId] != 0;
let stunMod = parseInt(values["weaponStunMod"+weaponId])||0;
let subtractENDAmt = parseInt(values["weaponEndurance"+weaponId])||0;
let dmgType = isNormalDamage ? "STUN" : "BODY";
let otherDmgType = isNormalDamage ? "BODY" : "STUN";
// If isNormalDamage is TRUE, use the Normal Damage template.
var theRoll = "&{template:custom"+(isNormalDamage ? "-normal" : "")+"-attack} {{title=@{character_name} - @{character_title}}} "
+ "{{subtitle= Makes a " + (isNormalDamage ? "normal" : "killing") + " attack with @{weaponName"+weaponId+"}}} "
+ "{{Hit DCV=[[11-3d6cf6cs1[Roll]+@{ocv}[OCV]+@{weaponOCV"+weaponId+"}[WeaponOCV]-[["+ (areaOfEffect ? 0 : 1) +"*@{targetOCVPenalty}]][TargetOCV]+?{Modifiers|0}[Modifier]]]}} "
+ (subtractENDAmt ? "{{END=[[@{weaponEndurance"+weaponId+"}]] (@{currentEND})}} " : "")
+ "{{"+dmgType+"=[[@{hiddenWeaponDamage"+weaponId+"}]]}} "
+ "{{"+otherDmgType+"=[[0[See "+dmgType+"]]]}}";
if (useHitLocations)
theRoll += " {{HITLOC=[[@{targetHitRoll}]]}}";
startRoll(theRoll, (results) => {
let computed = parseInt(results.results[dmgType].result)||0;
let theMessage = "AOE";
let theSTUNMultiplier = Math.floor(Math.random()*3+1);
// Get hit location message if system used.
if (useHitLocations && !areaOfEffect) {
let theHitLocation = hitLocationDetails(results.results.HITLOC.result);
theMessage = isNormalDamage ? theHitLocation.normalMessage : theHitLocation.killMessage;
theSTUNMultiplier = theHitLocation.STUNx;
}
if (isNormalDamage) {
// Convert dice roll to equivalent BODY damage.
computed = convertStunToBody(results.results.STUN.rolls);
} else {
theSTUNMultiplier = Math.max(1,theSTUNMultiplier + stunMod);
computed *= theSTUNMultiplier;
computed = String(computed) + " (BODY x" + theSTUNMultiplier + ")";
}
let theResult = new Object();
theResult[otherDmgType] = computed;
theResult.HITLOC = theMessage;
// Subtract END cost if option checked.
if (values.optionAutoSubtractEND != 0) {
subtractEndurance(subtractENDAmt);
}
finishRoll(results.rollId, theResult);
});
});
});
});
on('clicked:attackShield', (info) => {
// Roll attack and damage dice for the shield.
getAttrs(["shieldNormalDamage", "shieldStunMod", "shieldEndurance", "optionAutoSubtractEND", "optionHitLocationSystem"], function(values) {
let useHitLocations = values.optionHitLocationSystem != 0;
let isNormalDamage = values.shieldNormalDamage != 0;
let stunMod = parseInt(values.shieldStunMod)||0;
let subtractENDAmt = parseInt(values.shieldEndurance)||0;
let dmgType = isNormalDamage ? "STUN" : "BODY";
let otherDmgType = isNormalDamage ? "BODY" : "STUN";
// If isNormalDamage is TRUE, use the Normal Damage template.
var theRoll = "&{template:custom"+(isNormalDamage ? "-normal" : "")+"-attack} {{title=@{character_name} - @{character_title}}} "
+ "{{subtitle= Makes a " + (isNormalDamage ? "normal" : "killing") + " attack with @{shieldName}}} "
+ "{{Hit DCV=[[11-3d6cf6cs1[Roll]+@{ocv}[OCV]+@{shieldOCV}[Shield OCV]-[[abs(?{Blocking|Yes,1|No,-1}-1)/2*@{targetOCVpenalty}]][TargetOCV]+[[?{Blocking}*@{shieldDCV}]][ShieldDCV]+?{Modifiers|0}[Modifier]]]}} "
+ (subtractENDAmt ? "{{END=[[[[abs(?{Blocking}-1)/2]][Blocking]*@{shieldEndurance}[Endurance Cost]]] (@{currentEND})}} " : "")
+ "{{"+dmgType+"=[[@{hiddenShieldDamage01}]]}} "
+ "{{"+otherDmgType+"=[[0[See "+dmgType+"]]]}}";
if (useHitLocations)
theRoll += " {{HITLOC=[[@{targetHitRoll}]]}}";
startRoll(theRoll, (results) => {
let theMessage = "AOE";
let theSTUNMultiplier = Math.floor(Math.random()*3+1);
let computed = parseInt(results.results[dmgType].result)||0;
// Little hacky get whether or not the person is blocking.
let regex = /\+(-?\d+)\[ShieldDCV\]/g
let isBlocking = parseInt(regex.exec(results.results["Hit DCV"].expression)) > 0;
// Get hit location message if system used.
if (useHitLocations && !isBlocking) {
var theHitLocation = hitLocationDetails(results.results.HITLOC.result);
theMessage = isNormalDamage ? theHitLocation.normalMessage : theHitLocation.killMessage;
theSTUNMultiplier = theHitLocation.STUNx;
}
if (isNormalDamage) {
// Convert dice roll to equivalent BODY damage.
computed = convertStunToBody(results.results.STUN.rolls);
} else {
theSTUNMultiplier = Math.max(1,theSTUNMultiplier + stunMod);
computed *= theSTUNMultiplier;
if (theSTUNMultiplier != 1)
computed = String(computed) + " (x" + theSTUNMultiplier + " included)";
}
let theResult = new Object();
if (!isBlocking) {
theResult[otherDmgType] = computed;
theResult.HITLOC = theMessage;
} else {
theResult.STUN = "BLOCK";
theResult.BODY = "BLOCK";
theResult.HITLOC = "vs. OCV";
}
// Subtract END cost if option checked.
if (!isBlocking && values.optionAutoSubtractEND != 0) {
subtractEndurance(subtractENDAmt);
}
finishRoll(results.rollId, theResult);
});
});
});
on('clicked:standardAttackRoll', (info) => {
// Roll attack and damage dice for standardAttack
getAttrs(["hiddenBasicEndurance", "optionAutoSubtractEND", "optionHitLocationSystem"], function(values) {
let useHitLocations = values.optionHitLocationSystem != 0;
let subtractENDAmt = parseInt(values.hiddenBasicEndurance)||0;
let theRoll = "&{template:custom-normal-attack} {{title=@{character_name} - @{character_title}}} "
+ "{{subtitle= Makes a normal attack with Strength @{strength}}} "
+ "{{Hit DCV=[[11-3d6cf6cs1[Roll]+@{ocv}[OCV]-@{targetOCVPenalty}[TargetOCV]+?{Modifier|0}[Modifier]]]}} "
+ (subtractENDAmt ? "{{END=[[@{hiddenBasicEndurance}]] (@{currentEND})}} " : "")
+ "{{STUN=[[@{hiddenManeuverDamage01}]]}} "
+ "{{BODY=[[0[See STUN]]]}}";
if (useHitLocations)
theRoll += " {{HITLOC=[[@{targetHitRoll}]]}}";
startRoll(theRoll, (results) => {
let theMessage = " ";
let computed = convertStunToBody(results.results.STUN.rolls);
// Get hit location message if system used.
if (useHitLocations) {
theMessage = hitLocationDetails(results.results.HITLOC.result).normalMessage;
}
let theResult = new Object();
theResult.BODY = computed;
theResult.HITLOC = theMessage;
// Subtract END cost if option checked.
if (values.optionAutoSubtractEND != 0) {
subtractEndurance(subtractENDAmt);
}
finishRoll(results.rollId, theResult);
});
});
});
/* ---------------- */
/* Equipment Movers */
/* ---------------- */
arrayOf(maxEquipmentNum).forEach(num => {
var lowId = String(num).padStart(2,'0');
var highId = String(num == maxEquipmentNum ? 1 : num + 1).padStart(2,'0');
on("clicked:equipDown"+lowId+" clicked:equipUp"+highId, function () {
getAttrs(["equipText"+lowId, "equipText"+highId, "equipMass"+lowId, "equipMass"+highId], function(values) {
var attributes = new Object();
attributes["equipText"+lowId] = values["equipText"+highId];
attributes["equipText"+highId] = values["equipText"+lowId];
attributes["equipMass"+lowId] = values["equipMass"+highId];
attributes["equipMass"+highId] = values["equipMass"+lowId];
setAttrs(attributes);
});
});
});
/* ------------- */
/* Talent Movers */
/* ------------- */
arrayOf(maxTalentNum).forEach(num => {
var lowId = String(num).padStart(2,'0');
var highId = String(num == maxTalentNum ? 1 : num + 1).padStart(2,'0');
on("clicked:talentDown"+lowId+" clicked:talentUp"+highId, function () {
getAttrs(["talentName"+lowId, "talentName"+highId, "talentText"+lowId, "talentText"+highId, "talentCP"+lowId, "talentCP"+highId], function(values) {
var attributes = new Object();
attributes["talentName"+lowId] = values["talentName"+highId];
attributes["talentName"+highId] = values["talentName"+lowId];
attributes["talentText"+lowId] = values["talentText"+highId];
attributes["talentText"+highId] = values["talentText"+lowId];
attributes["talentCP"+lowId] = values["talentCP"+highId];
attributes["talentCP"+highId] = values["talentCP"+lowId];
setAttrs(attributes);
});
});
});
/* ------------------- */
/* Complication Movers */
/* ------------------- */
arrayOf(maxComplicationNum).forEach(num => {
var lowId = String(num).padStart(2,'0');
var highId = String(num == maxComplicationNum ? 1 : num + 1).padStart(2,'0');
on("clicked:complicationDown"+lowId+" clicked:complicationUp"+highId, function () {
getAttrs(["complicationName"+lowId, "complicationName"+highId, "complicationText"+lowId, "complicationText"+highId, "complicationCP"+lowId, "complicationCP"+highId], function(values) {
var attributes = new Object();
attributes["complicationName"+lowId] = values["complicationName"+highId];
attributes["complicationName"+highId] = values["complicationName"+lowId];
attributes["complicationText"+lowId] = values["complicationText"+highId];
attributes["complicationText"+highId] = values["complicationText"+lowId];
attributes["complicationCP"+lowId] = values["complicationCP"+highId];
attributes["complicationCP"+highId] = values["complicationCP"+lowId];
setAttrs(attributes);
});
});
});
// End sheet workers
</script>