Files
2024-06-03 13:15:14 -04:00

1872 lines
95 KiB
HTML

<div class='logo'></div>
<div class='everything'>
<div class='sheet-2colrow' style='margin-top: 0.5in;'>
<div class='sheet-col'>
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel' style='width:100px;'>NAME</td>
<td class='statBody readonly'><span name='attr_character_name'></span></td>
</tr>
</table>
</div>
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel' style='width:100px;'>LEVEL</td>
<td class='statBody'>
<div class='statField'><input type='number' name='attr_level' value='1'></div>
</td>
<td class='statLabel' style='width:100px;'>XP</td>
<td class='statBody'>
<div class='statField'><input type='number' name='attr_exp' value='0'></div>
</td>
</tr>
</table>
</div>
</div>
<div class='sheet-col'></div>
</div>
<div class='tabsContainer'>
<div id='mainTab' class='tab'>
<input type='radio' name='tab' id='sheet-mainRadio' class='tabInput' checked />
<label class='tabLabel' for='sheet-mainRadio'>MAIN</label>
<div class='tabPanel'>
<div class='sheet-2colrow'>
<div class='sheet-col'>
<!-- hit points -->
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel' style='width:30%;'>HIT POINTS</td>
<td class='statBody' style='width:40%;'>
<div class='statField inline' style='width:50%'><input type='number' name='attr_hp' value='0'></div>
/<span class='readonly readonly-field' style='width:40%;'name='attr_hpMax'>
</td>
<td class='statLabel' style='width:20%;'>Modifier</td>
<td class='statBody'>
<div class='statField'><input type='number' name='attr_hpMaxModifier' value='0'></div>
</td>
</tr>
</table>
<table style='width:100%;'>
<tr>
<td style='width:70%;'>
<input id='secondWindCheck' type='checkbox' name='attr_secondWind' />
<label for='secondWindCheck'>Used Second Wind?</label>
</td>
<td class='statLabel' style='width:20%;'>TEMP HP</td>
<td class='statBody'><div class='statField'><input type='number' name='attr_tempHp' value='0'></div></td>
</tr>
</table>
</div>
<!-- defenses -->
<div class='statBox'>
<div class='statLabel'>
DEFENSES
</div>
<table style='width:100%;'>
<tr>
<th style='width:20%;'></th>
<th>AC</th>
<th>Fortitude</th>
<th>Reflex</th>
<th>Will</th>
</tr>
<tr class='readonly' title='10 + level + ability mod + origins + gear + misc'>
<td>Total</td>
<td class='statBody'><span class='readonly-field' name='attr_AC'></span></td>
<td class='statBody'><span class='readonly-field' name='attr_fortitude'></span></td>
<td class='statBody'><span class='readonly-field' name='attr_reflex'></span></td>
<td class='statBody'><span class='readonly-field' name='attr_will'></span></td>
</tr>
<tr>
<td>Origins</td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsAC' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsFortitude' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsReflex' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsWill' value='0'></div></td>
</tr>
<tr>
<td>Gear</td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearAC' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearFortitude' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearReflex' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearWill' value='0'></div></td>
</tr>
<tr>
<td>Misc</td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscAC' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscFortitude' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscReflex' value='0'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscWill' value='0'></div></td>
</tr>
</table>
<table style='width:100%;'>
<tr>
<td>Armor type: </td>
<td><input type='radio' name='attr_armorType' value='none'>None</td>
<td><input type='radio' name='attr_armorType' value='light'>Light</td>
<td><input type='radio' name='attr_armorType' value='heavy'>Heavy</td>
</tr>
</table>
</div>
<!-- Resistance and Immunity -->
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel' style='width:25%;'>RESISTS</td>
<td class='statBody' style='width:35%;'><div class='statField'><input type='text' name='attr_resists'></div></td>
<td class='statLabel' style='width:25%;'>WEAK TO</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_vulns'></div></td>
</tr>
</table>
</div>
</div>
<div class='sheet-col'>
<!-- Ability Scores -->
<div class='statBox'>
<div class='statLabel'>
ABILITY SCORES (+ MODIFIER)
</div>
<table>
<tr>
<td style='width:15%;'>STR</td>
<td class='statBody'>
<div class='statField inline' style='width:50%;'><input type='number' name='attr_str' value='10'></div>
<span class='readonly'>(<span name='attr_strMod'></span>)</span>
</td>
<td class='statBody'><button type='roll' value='/r 1d20 + @{level} + @{strMod}'></button></td>
<td style='width:15%;'>CON</td>
<td class='statBody'>
<div class='statField inline' style='width:50%;'><input type='number' name='attr_con' value='10'></div>
<span class='readonly'>(<span name='attr_conMod'></span>)</span>
</td>
<td class='statBody'><button type='roll' value='/r 1d20 + @{level} + @{conMod}'></button></td>
</tr>
<tr>
<td>DEX</td>
<td class='statBody'>
<div class='statField inline' style='width:50%;'><input type='number' name='attr_dex' value='10'></div>
<span class='readonly'>(<span name='attr_dexMod'></span>)</span>
</td>
<td class='statBody'><button type='roll' value='/r 1d20 + @{level} + @{dexMod}'></button></td>
<td>INT</td>
<td class='statBody'>
<div class='statField inline' style='width:50%;'><input type='number' name='attr_int' value='10'></div>
<span class='readonly'>(<span name='attr_intMod'></span>)</span>
</td>
<td class='statBody'><button type='roll' value='/r 1d20 + @{level} + @{intMod}'></button></td>
</tr>
<tr>
<td>WIS</td>
<td class='statBody'>
<div class='statField inline' style='width:50%;'><input type='number' name='attr_wis' value='10'></div>
<span class='readonly'>(<span name='attr_wisMod'></span>)</span>
</td>
<td class='statBody'><button type='roll' value='/r 1d20 + @{level} + @{wisMod}'></button></td>
<td>CHA</td>
<td class='statBody'>
<div class='statField inline' style='width:50%;'><input type='number' name='attr_cha' value='10'></div>
<span class='readonly'>(<span name='attr_chaMod'></span>)</span>
</td>
<td class='statBody'><button type='roll' value='/r 1d20 + @{level} + @{chaMod}'></button></td>
</tr>
</table>
</div>
<!-- Initiative -->
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel' style='width:40%;'>INITIATIVE</td>
<td class='statBody readonly' style='width:20%;'><span class='readonly-field' name='attr_initiativeTotal'></span></td>
<td class='statLabel' style='width:20%;'>Modifier</td>
<td class='statBody' style='width:20%;'><div class='statField'><input type='number' name='attr_initiativeModifier' value='0'></div></td>
</tr>
</table>
</div>
<!-- Movement -->
<div class='statBox'>
<div class='statLabel'>MOVEMENT</div>
<table style='width:100%;'>
<tr>
<td style='width:20%;'>SPEED</td>
<td class='statBody' style='width:15%;'><div class='statField'><input type='number' name='attr_speed' value='30'></div></td>
<td style='width:20%;'>SPECIAL</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_specialMovements'></div></td>
</tr>
</table>
</div>
<!-- Alpha uses -->
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel' style='width:40%;'>ALPHA MUTATIONS</td>
<td class='statBody readonly' style='width:10%;'><span name='attr_numAlpha'></span></td>
<td class='statLabel' style='width:40%;'>VOCATION FEATS</td>
<td class='statBody readonly'><span name='attr_numFeats'></span></td>
</tr>
</table>
</div>
</div>
</div>
<div class='statBox'>
<div class='statLabel'>SKILLS</div>
<table style='width:100%;'>
<tr>
<td style='width:50%;'>
<table style='width:100%;'>
<tr>
<th></th>
<th class='readonly' title='Level + Ability Mod + Origin + Gear + Misc' style='width:15%;'>Total</th>
<th title='Total from origins' style='width:15%;'>Origins</th>
<th title='Total bonus from gear' style='width:15%;'>Gear</th>
<th title='Total other bonuses' style='width:15%;'>Misc</th>
<th></th>
</tr>
<tr>
<td>Acrobatics (Dex)</td>
<td class='statBody readonly'><span name='attr_acrobatics'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsAcrobatics'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearAcrobatics'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscAcrobatics'></div></td>
<td><button type='roll' value='/r 1d20 + @{acrobatics}'></button></td>
</tr>
<tr>
<td>Athletics (Str)</td>
<td class='statBody readonly'><span name='attr_athletics'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsAthletics'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearAthletics'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscAthletics'></div></td>
<td><button type='roll' value='/r 1d20 + @{athletics}'></button></td>
</tr>
<tr>
<td>Conspiracy (Int)</td>
<td class='statBody readonly'><span name='attr_conspiracy'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsConspiracy'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearConspiracy'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscConspiracy'></div></td>
<td><button type='roll' value='/r 1d20 + @{conspiracy}'></button></td>
</tr>
<tr>
<td>Insight (Wis)</td>
<td class='statBody readonly'><span name='attr_insight'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsInsight'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearInsight'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscInsight'></div></td>
<td><button type='roll' value='/r 1d20 + @{insight}'></button></td>
</tr>
<tr>
<td>Interaction (Cha)</td>
<td class='statBody readonly'><span name='attr_interaction'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsInteraction'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearInteraction'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscInteraction'></div></td>
<td><button type='roll' value='/r 1d20 + @{interaction})'></button></td>
</tr>
</table>
</td>
<td style='width:50%;'>
<table style='width:100%;'>
<tr>
<th></th>
<th class='readonly' title='Level + Ability Mod + Origin + Gear + Misc' style='width:15%;'>Total</th>
<th title='Total from Origins' style='width:15%;'>Origins</th>
<th title='Total bonus from gear' style='width:15%;'>Gear</th>
<th title='Total other bonuses' style='width:15%;'>Misc</th>
</tr>
<tr>
<td>Mechanics (Int)</td>
<td class='statBody readonly'><span name='attr_mechanics'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsMechanics'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearMechanics'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscMechanics'></div></td>
<td><button type='roll' value='/r 1d20 + @{mechanics}'></button></td>
</tr>
<tr>
<td>Nature (Wis)</td>
<td class='statBody readonly'><span name='attr_nature'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsNature'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearNature'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscNature'></div></td>
<td><button type='roll' value='/r 1d20 + @{nature}'></button></td>
</tr>
<tr>
<td>Perception (Wis)</td>
<td class='statBody readonly'><span name='attr_perception'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsPerception'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearPerception'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscPerception'></div></td>
<td><button type='roll' value='/r 1d20 + @{perception}'></button></td>
</tr>
<tr>
<td>Science (Int)</td>
<td class='statBody readonly'><span name='attr_science'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsScience'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearScience'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscScience'></div></td>
<td><button type='roll' value='/r 1d20 + @{science}'></button></td>
</tr>
<tr>
<td>Stealth (Dex)</td>
<td class='statBody readonly'><span name='attr_stealth'></span></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_originsStealth'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_gearStealth'></div></td>
<td class='statBody'><div class='statField'><input type='number' name='attr_miscStealth'></div></td>
<td><button type='roll' value='/r 1d20 + @{stealth}'></button></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<!-- Character advancement -->
<div class='statBox'>
<div class='statLabel'>CHARACTER ADVANCEMENT</div>
<table class='character-advancement-table'>
<tr>
<td>XP</td>
<td>Level</td>
<td>Benefit choice</td>
<td>Alpha Mutations</td>
<td>Vocation Feats</td>
</tr>
<table>
<table class='character-advancement-table'>
<tr class='statBody'>
<td>0</td>
<td>1</td>
<td>Origin Traits, Origin novice powers</td>
<td>1</td>
<td>0</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel2' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel2' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>500</td>
<td>2</td>
<td>
<div class='statField'>
<select name='attr_crit1' style='width:auto;'>
<option value='1'>Critical Hit Benefit: Primary origin</option>
<option value='2'>Critical Hit Benefit: Secondary origin</option>
</select>
</div>
</td>
<td>1</td>
<td>0</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel3' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel3' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>1000</td>
<td>3</td>
<td>
<div class='statField'>
<select name='attr_util1' style='width:auto;'>
<option value='1'>Utility Power: Primary origin</option>
<option value='2'>Utility Power: Secondary origin</option>
</select>
</div>
</td>
<td>1</td>
<td>0</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel4' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel4' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>2000</td>
<td>4</td>
<td>-</td>
<td>2</td>
<td>1</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel5' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel5' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>3000</td>
<td>5</td>
<td>
<div class='statField'>
<select name='attr_expert1' style='width:auto;'>
<option value='1'>Expert Power: Primary origin</option>
<option value='2'>Expert Power: Secondary origin</option>
</select>
</div>
</td>
<td>2</td>
<td>1</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel6' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel6' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>4000</td>
<td>6</td>
<td>
<div class='statField'>
<select name='attr_crit2' style='width:auto;'>
<option value='1'>Critical Hit Benefit: Primary origin</option>
<option value='2'>Critical Hit Benefit: Secondary origin</option>
</select>
</div>
</td>
<td>2</td>
<td>1</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel7' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel7' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>5000</td>
<td>7</td>
<td>
<div class='statField'>
<select name='attr_util2' style='width:auto;'>
<option value='1'>Utility Power: Primary origin</option>
<option value='2'>Utility Power: Secondary origin</option>
</select>
</div>
</td>
<td>2</td>
<td>2</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel8' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel8' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>6500</td>
<td>8</td>
<td>-</td>
<td>3</td>
<td>2</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel9' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel9' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>8500</td>
<td>9</td>
<td>
<div class='statField'>
<select name='attr_expert2' style='width:auto;'>
<option value='1'>Expert Power: Primary origin</option>
<option value='2'>Expert Power: Secondary origin</option>
</select>
</div>
</td>
<td>3</td>
<td>2</td>
</tr>
</table>
<input type='radio' class='hidden-flag' name='attr_showLevel10' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showLevel10' value='no'>
<table class='character-advancement-table flag-fade'>
<tr class='statBody'>
<td>10000</td>
<td>10</td>
<td>
<div class='statField'>
<select name='attr_uberFeature' style='width:auto;'>
<option value='1'>Uber Feature: Use primary expert power 2x per encounter.</option>
<option value='2'>Uber Feature: Use secondary expert power 2x per encounter. </option>
<option value='3'>Uber Feature: Omega Charge success once per encounter.</option>
<option value='4'>Uber Feature: Keep one readied Alpha Mutation.</option>
</select>
</div>
</td>
<td>3</td>
<td>3</td>
</tr>
</table>
</div>
</div>
</div>
<div id='originTab' class='tab'>
<input type='radio' name='tab' id='sheet-originRadio' class='tabInput' />
<label class='tabLabel' for='sheet-originRadio'>ORIGINS</label>
<div class='tabPanel'>
<div class='sheet-2colrow'>
<!-- Origin 1 -->
<div class='sheet-col'>
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>PRIMARY ORIGIN</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin1'></div></td>
</tr>
</table>
</div>
<div class='statBox'>
<div class='statLabel'>MUTANT TYPE</div>
<table style='width:100%;'>
<tr>
<td>Ability</td>
<td class='statBody'>
<div class='statField'>
<select name='attr_origin1Ability'>
<option>Strength</option>
<option>Constitution</option>
<option>Dexterity</option>
<option>Intelligence</option>
<option>Wisdom</option>
<option>Charisma</option>
</select>
</div>
</td>
<td>Alpha</td>
<td class='statBody'>
<div class='statField'>
<select name='attr_origin1Overcharge'>
<option>All (Human)</option>
<option>Bio</option>
<option>Dark</option>
<option>Psi</option>
</select>
</div>
</td>
</tr>
</table>
</div>
<div class='statBox'>
<div class='statLabel'>TRAITS</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin1Traits' rows='3'></textarea></div>
</div>
</div>
<input class='hidden-flag' type='radio' name='attr_showOrigin1Crit' value='yes'>
<input class='hidden-flag' type='radio' name='attr_showOrigin1Crit' value='no'>
<div class='statBox flag-hide'>
<div class='statLabel'>CRITICAL HIT BENEFIT</div>
<div class='statBody'>
<div class='statField'><input type='text' name='attr_origin1Crit'></div>
</div>
</div>
<!-- Novice power -->
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>NOVICE POWER</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin1Novice'></div></td>
</tr>
</table>
<table>
<tr>
<td>
<input id='origin1_novice_used_checkbox' type='checkbox' name='attr_origin1NoviceUsed' />
<label for='origin1_novice_used_checkbox'>Used?</label>
</td>
<td class='statField'>
<select name='attr_origin1NoviceFreq'>
<option>At-Will</option>
<option>Encounter</option>
<option>Daily</option>
</select>
</td>
<td class='statField'>
<select name='attr_origin1NoviceAction'>
<option>Standard Action</option>
<option>Move Action</option>
<option>Minor Action</option>
<option>Free Action</option>
<option>Immediate Reaction</option>
<option>Immediate Interrupt</option>
</select>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin1NoviceDesc' rows='4'></textarea></div>
</div>
</div>
<!-- Utility power -->
<input class='hidden-flag' type='radio' name='attr_showOrigin1Util' value='yes'>
<input class='hidden-flag' type='radio' name='attr_showOrigin1Util' value='no'>
<div class='statBox flag-hide'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>UTILITY POWER</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin1Util'></div></td>
</tr>
</table>
<table>
<tr>
<td>
<input id='origin1_utility_used_checkbox' type='checkbox' name='attr_origin1UtilUsed' />
<label for='origin1_utility_used_checkbox'>Used?</label>
</td>
<td class='statField'>
<select name='attr_origin1UtilFreq'>
<option>At-Will</option>
<option>Encounter</option>
<option>Daily</option>
</select>
</td>
<td class='statField'>
<select name='attr_origin1UtilAction'>
<option>Standard Action</option>
<option>Move Action</option>
<option>Minor Action</option>
<option>Free Action</option>
<option>Immediate Reaction</option>
<option>Immediate Interrupt</option>
</select>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin1UtilDesc' rows='4'></textarea></div>
</div>
</div>
<!-- Expert power -->
<input class='hidden-flag' type='radio' name='attr_showOrigin1Expert' value='yes'>
<input class='hidden-flag' type='radio' name='attr_showOrigin1Expert' value='no'>
<div class='statBox flag-hide'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>EXPERT POWER</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin1Expert'></div></td>
</tr>
</table>
<table>
<tr>
<td>
<input id='origin1_expert_used_checkbox' type='checkbox' name='attr_origin1ExpertUsed' />
<label for='origin1_expert_used_checkbox'>Used?</label>
</td>
<td class='statField'>
<select name='attr_origin1ExpertFreq'>
<option>At-Will</option>
<option>Encounter</option>
<option>Daily</option>
</select>
</td>
<td class='statField'>
<select name='attr_origin1ExpertAction'>
<option>Standard Action</option>
<option>Move Action</option>
<option>Minor Action</option>
<option>Free Action</option>
<option>Immediate Reaction</option>
<option>Immediate Interrupt</option>
</select>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin1ExpertDesc' rows='4'></textarea></div>
</div>
</div>
</div>
<!-- Origin 2 -->
<div class='sheet-col'>
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>SECONDARY ORIGIN</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin2'></div></td>
</tr>
</table>
</div>
<div class='statBox'>
<div class='statLabel'>MUTANT TYPE</div>
<table style='width:100%;'>
<tr>
<td>Ability</td>
<td class='statBody'>
<div class='statField'>
<select name='attr_origin2Ability'>
<option>Strength</option>
<option>Constitution</option>
<option>Dexterity</option>
<option>Intelligence</option>
<option>Wisdom</option>
<option>Charisma</option>
</select>
</div>
</td>
<td>Alpha</td>
<td class='statBody'>
<div class='statField'>
<select name='attr_origin2Overcharge'>
<option>All (Human)</option>
<option>Bio</option>
<option>Dark</option>
<option>Psi</option>
</select>
</div>
</td>
</tr>
</table>
</div>
<div class='statBox'>
<div class='statLabel'>TRAITS</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin2Traits' rows='3'></textarea></div>
</div>
</div>
<input class='hidden-flag' type='radio' name='attr_showOrigin2Crit' value='yes'>
<input class='hidden-flag' type='radio' name='attr_showOrigin2Crit' value='no'>
<div class='statBox flag-hide'>
<div class='statLabel'>CRITICAL HIT BENEFIT</div>
<div class='statBody'>
<div class='statField'><input type='text' name='attr_origin2Crit'></div>
</div>
</div>
<!-- Novice power -->
<div class='statBox'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>NOVICE POWER</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin2Novice'></div></td>
</tr>
</table>
<table>
<tr>
<td>
<input id='origin2_novice_used_checkbox' type='checkbox' name='attr_origin2NoviceUsed' />
<label for='origin2_novice_used_checkbox'>Used?</label>
</td>
<td class='statField'>
<select name='attr_origin2NoviceFreq'>
<option>At-Will</option>
<option>Encounter</option>
<option>Daily</option>
</select>
</td>
<td class='statField'>
<select name='attr_origin2NoviceAction'>
<option>Standard Action</option>
<option>Move Action</option>
<option>Minor Action</option>
<option>Free Action</option>
<option>Immediate Reaction</option>
<option>Immediate Interrupt</option>
</select>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin2NoviceDesc' rows='4'></textarea></div>
</div>
</div>
<!-- Utility power -->
<input class='hidden-flag' type='radio' name='attr_showOrigin2Util' value='yes'>
<input class='hidden-flag' type='radio' name='attr_showOrigin2Util' value='no'>
<div class='statBox flag-hide'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>UTILITY POWER</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin2Util'></div></td>
</tr>
</table>
<table>
<tr>
<td>
<input id='origin2_utility_used_checkbox' type='checkbox' name='attr_origin2UtilUsed' />
<label for='origin2_utility_used_checkbox'>Used?</label>
</td>
<td class='statField'>
<select name='attr_origin2UtilFreq'>
<option>At-Will</option>
<option>Encounter</option>
<option>Daily</option>
</select>
</td>
<td class='statField'>
<select name='attr_origin2UtilAction'>
<option>Standard Action</option>
<option>Move Action</option>
<option>Minor Action</option>
<option>Free Action</option>
<option>Immediate Reaction</option>
<option>Immediate Interrupt</option>
</select>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin2UtilDesc' rows='4'></textarea></div>
</div>
</div>
<!-- Expert power -->
<input class='hidden-flag' type='radio' name='attr_showOrigin2Expert' value='yes'>
<input class='hidden-flag' type='radio' name='attr_showOrigin2Expert' value='no'>
<div class='statBox flag-hide'>
<table style='width:100%;'>
<tr>
<td class='statLabel'>EXPERT POWER</td>
<td class='statBody'><div class='statField'><input type='text' name='attr_origin2Expert'></div></td>
</tr>
</table>
<table>
<tr>
<td>
<input id='origin2_expert_used_checkbox' type='checkbox' name='attr_origin2ExpertUsed' />
<label for='origin2_expert_used_checkbox'>Used?</label>
</td>
<td class='statField'>
<select name='attr_origin2ExpertFreq'>
<option>At-Will</option>
<option>Encounter</option>
<option>Daily</option>
</select>
</td>
<td class='statField'>
<select name='attr_origin2ExpertAction'>
<option>Standard Action</option>
<option>Move Action</option>
<option>Minor Action</option>
<option>Free Action</option>
<option>Immediate Reaction</option>
<option>Immediate Interrupt</option>
</select>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'><textarea name='attr_origin2ExpertDesc' rows='4'></textarea></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id='featsTab' class='tab'>
<input type='radio' name='tab' id='sheet-featsRadio' class='tabInput' />
<label class='tabLabel' for='sheet-featsRadio'>BACKGROUND</label>
<div class='tabPanel'>
<div class='sheet-2colrow'>
<!-- Vocations -->
<div class='sheet-col'>
<input type='radio' class='hidden-flag' name='attr_showFeat1' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showFeat1' value='no'>
<div class='statBox flag-fade'>
<table class='border-bottom-thick' style='width:100%;'>
<tr class='statLabel'>
<td style='width:40%;'>VOCATION 1</td>
<td class='statBody'>
<div class='statField'><input type='text' name='attr_vocation1'></div>
</td>
</tr>
</table>
<div>Feat:</div>
<div class='statBody'>
<div class='statField'><input type='text' name='attr_vocation1Feat'></div>
</div>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_vocation1FeatDesc' rows='5'></textarea></div>
</div>
</div>
<input type='radio' class='hidden-flag' name='attr_showFeat2' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showFeat2' value='no'>
<div class='statBox flag-hide'>
<table class='border-bottom-thick' style='width:100%;'>
<tr class='statLabel'>
<td style='width:40%;'>VOCATION 2</td>
<td class='statBody'>
<div class='statField'><input type='text' name='attr_vocation2'></div>
</td>
</tr>
</table>
<div>Feat:</div>
<div class='statBody'>
<div class='statField'><input type='text' name='attr_vocation2Feat'></div>
</div>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_vocation2FeatDesc' rows='5'></textarea></div>
</div>
</div>
<input type='radio' class='hidden-flag' name='attr_showFeat3' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showFeat3' value='no'>
<div class='statBox flag-hide'>
<table class='border-bottom-thick' style='width:100%;'>
<tr class='statLabel'>
<td style='width:40%;'>VOCATION 3</td>
<td class='statBody'>
<div class='statField'><input type='text' name='attr_vocation3'></div>
</td>
</tr>
</table>
<div>Feat:</div>
<div class='statBody'>
<div class='statField'><input type='text' name='attr_vocation3Feat'></div>
</div>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_vocation3FeatDesc' rows='5'></textarea></div>
</div>
</div>
</div>
<!-- Cryptic alliance -->
<div class='sheet-col'>
<div class='statBox'>
<table style='width:100%;'>
<tr class='statLabel'>
<td style='width:40%;'>CRYPTIC ALLIANCE</td>
<td class='statBody'>
<div class='statField'><input type='text' name='attr_crypticAlliance'></div>
</td>
</tr>
</table>
<div>
<input type='checkbox' id='crypticAlliance_revealed_checkbox' name='attr_crypticAllianceRevealed'>
<label for='crypticAlliance_revealed_checkbox'>Revealed? </label>
</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_crypticAllianceEffect' rows='5'></textarea></div>
</div>
</div>
<div class='statBox'>
<div class='statLabel'>BIO/BACKGROUND INFO</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_character_bio' rows='20'></textarea></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id='lootTab' class='tab'>
<input type='radio' name='tab' id='sheet-lootRadio' class='tabInput' />
<label class='tabLabel' for='sheet-lootRadio'>GEAR</label>
<div class='tabPanel'>
<table style='width:100%;'>
<tr>
<td style='vertical-align: top; width:70%;'>
<!-- Omega Tech -->
<div class='statBox cardContainer'>
<div class='statLabel'>OMEGA TECH</div>
<div style='padding:1em 0.5em;'>
<fieldset class='repeating_omegaTech'>
<div class='statBox card'>
<table style='width:100%;'>
<tr class='statLabel'>
<td>
<div class='statField'><input type='text' style='background:none;' name='attr_omegaTechName' placeholder='Omega Tech name'></div>
</td>
<td style='width: 70px;'>
<div class='statField'>
<select name='attr_omegaTechOrigin'>
<option>Area 52</option>
<option>Ishtar</option>
<option>XI</option>
</select>
</div>
</td>
</tr>
</table>
<div class='statLabel'>
</div>
<table style='width:100%;'>
<tr>
<td>Type:</td>
<td class='statBody'>
<div class='statField'>
<select name='attr_omegaTechType'>
<option>Armor: Heavy</option>
<option>Armor: Light</option>
<option>Arms</option>
<option>Consumable</option>
<option>Feet</option>
<option>Hands</option>
<option>Head</option>
<option>Held</option>
<option>Neck</option>
<option>Ring</option>
<option>Vehicle</option>
<option>Waist</option>
<option>Weapon: 1-hand Melee</option>
<option>Weapon: 2-hand Melee</option>
<option>Weapon: 1-hand Range</option>
<option>Weapon: 2-hand Range</option>
<option>Other</option>
</select>
</div>
</td>
</tr>
</table>
<div>Property:</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_omegaTechProperty' rows='3'></textarea>
</div>
</div>
<table style='width:100%;'>
<tr>
<td style='width:80px;'>Power:</td>
<td>
<input type='checkbox' id='omegaTechPowerUsedCheckbox' name='attr_omegaTechPowerIsUsed'>
<label for='omegaTechPowerUsedCheckbox'>Used?</label>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_omegaTechPower' rows='5'></textarea>
</div>
</div>
<div>
<label for='omegaTechSalvagedCheckbox' style='width: 80px;'>Salvage:</label>
<input type='checkbox' id='omegaTechSalvagedCheckbox' name='attr_omegaTechIsSalvaged'>
</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_omegaTechSalvage' rows='3'></textarea></div>
</div>
</div>
</fieldset>
</div>
</div>
</td>
<td style='vertical-align:top;'>
<div class='statBox'>
<div class='statLabel'>Equipment</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_equipment' rows='16'></textarea>
</div>
</div>
</div>
<div class='statBox'>
<div class='statLabel'>Vehicles</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_vehicles' rows='8'></textarea>
</div>
</div>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id='lootTab' class='tab'>
<input type='radio' name='tab' id='sheet-alphaRadio' class='tabInput' />
<label class='tabLabel' for='sheet-alphaRadio'>ALPHA MUTATIONS</label>
<div class='tabPanel cardContainer'>
<div class='statBox'>
<div class='statLabel'>ACTIVE ALPHA MUTATIONS</div>
<div style='padding:1em 0.5em;'>
<div class='statBox card'>
<table style='width:100%;'>
<tr class='statLabel'>
<td>
<div class='statField'><input type='text' style='background:none;' name='attr_activeAlpha1' placeholder='Alpha Mutation name'></div>
</td>
<td style='width: 70px;'>
<div class='statField'>
<select name='attr_activeAlpha1Type'>
<option>Bio</option>
<option>Dark</option>
<option>Psi</option>
</select>
</div>
</td>
</tr>
</table>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_activeAlpha1Benefit' rows='3'></textarea>
</div>
</div>
<table style='width:100%;'>
<tr>
<td style='width:80px;'>Power:</td>
<td>
<input type='checkbox' name='attr_activeAlpha1IsUsed'>
<label>Used?</label>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_activeAlpha1Power' rows='5'></textarea>
</div>
</div>
<div>Overcharge:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_activeAlpha1Overcharge' rows='3'></textarea></div>
</div>
</div>
<input type='radio' class='hidden-flag' name='attr_showAlpha2' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showAlpha2' value='no'>
<div class='statBox card flag-hide'>
<table style='width:100%;'>
<tr class='statLabel'>
<td>
<div class='statField'><input type='text' style='background:none;' name='attr_activeAlpha2' placeholder='Alpha Mutation name'></div>
</td>
<td style='width: 70px;'>
<div class='statField'>
<select name='attr_activeAlpha2Type'>
<option>Bio</option>
<option>Dark</option>
<option>Psi</option>
</select>
</div>
</td>
</tr>
</table>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_activeAlpha2Benefit' rows='3'></textarea>
</div>
</div>
<table style='width:100%;'>
<tr>
<td style='width:80px;'>Power:</td>
<td>
<input type='checkbox' name='attr_activeAlpha2IsUsed'>
<label>Used?</label>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_activeAlpha2Power' rows='5'></textarea>
</div>
</div>
<div>Overcharge:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_activeAlpha2Overcharge' rows='3'></textarea></div>
</div>
</div>
<input type='radio' class='hidden-flag' name='attr_showAlpha3' value='yes'>
<input type='radio' class='hidden-flag' name='attr_showAlpha3' value='no'>
<div class='statBox card flag-hide'>
<table style='width:100%;'>
<tr class='statLabel'>
<td>
<div class='statField'><input type='text' style='background:none;' name='attr_activeAlpha3' placeholder='Alpha Mutation name'></div>
</td>
<td style='width: 70px;'>
<div class='statField'>
<select name='attr_activeAlpha3Type'>
<option>Bio</option>
<option>Dark</option>
<option>Psi</option>
</select>
</div>
</td>
</tr>
</table>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_activeAlpha3Benefit' rows='3'></textarea>
</div>
</div>
<table style='width:100%;'>
<tr>
<td style='width:80px;'>Power:</td>
<td>
<input type='checkbox' name='attr_activeAlpha3IsUsed'>
<label>Used?</label>
</td>
</tr>
</table>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_activeAlpha3Power' rows='5'></textarea>
</div>
</div>
<div>Overcharge:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_activeAlpha3Overcharge' rows='3'></textarea></div>
</div>
</div>
</div>
</div>
<div class='statBox'>
<div class='statLabel'>ALPHA MUTATIONS DECK</div>
<!-- Alpha mutation deck -->
<div style='padding:1em 0.5em;'>
<fieldset class='repeating_alphaMutationsDeck'>
<div class='statBox card'>
<table style='width:100%;'>
<tr class='statLabel'>
<td>
<div class='statField'><input type='text' style='background:none;' name='attr_alphaMutationName' placeholder='Alpha Mutation name'></div>
</td>
<td style='width: 70px;'>
<div class='statField'>
<select name='attr_alphaMutationType'>
<option>Bio</option>
<option>Dark</option>
<option>Psi</option>
</select>
</div>
</td>
</tr>
</table>
<div>Benefit:</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_alphaMutationBenefit' rows='3'></textarea>
</div>
</div>
<div>Power:</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_alphaMutationPower' rows='5'></textarea>
</div>
</div>
<div>Overcharge:</div>
<div class='statBody'>
<div class='statField'><textarea name='attr_alphaMutationOvercharge' rows='3'></textarea></div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div id='miscTab' class='tab'>
<input type='radio' name='tab' id='sheet-miscRadio' class='tabInput' />
<label class='tabLabel' for='sheet-miscRadio'>MISC</label>
<div class='tabPanel'>
<div class='statBox'>
<div class='statLabel'>NOTES</div>
<div class='statBody'>
<div class='statField'>
<textarea name='attr_notes' rows='20'></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/worker">
/**
* An asynchronous semaphore.
*/
var Asem = function(initCount, cb) {
this.count = initCount;
this.cb = cb;
this.hasFired = false;
};
_.extend(Asem.prototype, {
signal: function() {
this.count--;
if(this.count <= 0 && !this.hasFired) {
this.hasFired = true;
this.cb();
}
},
wait: function() {
this.count++;
}
});
/**
* Gets the specified attributes and parses them as an integer or 0.
*/
function parseAttrs(attrs, cb) {
getAttrs(attrs, function(values) {
_.each(attrs, function(attr) {
if(_.isUndefined(values[attr]))
values[attr] = 0;
else if(!isNaN(values[attr]))
values[attr] = parseInt(values[attr]);
});
cb(values);
});
}
// Ability score updates
function updateStrMod() {
parseAttrs(['str'], function(values) {
var strMod = Math.floor((values.str - 10)/2);
setAttrs({
strMod: strMod
});
});
}
function updateConMod() {
parseAttrs(['con'], function(values) {
var conMod = Math.floor((values.con - 10)/2);
setAttrs({
conMod: conMod
});
});
}
function updateDexMod() {
parseAttrs(['dex'], function(values) {
var dexMod = Math.floor((values.dex - 10)/2);
setAttrs({
dexMod: dexMod
});
});
}
function updateIntMod() {
parseAttrs(['int'], function(values) {
var intMod = Math.floor((values.int - 10)/2);
setAttrs({
intMod: intMod
});
});
}
function updateWisMod() {
parseAttrs(['wis'], function(values) {
var wisMod = Math.floor((values.wis - 10)/2);
setAttrs({
wisMod: wisMod
});
});
}
function updateChaMod() {
parseAttrs(['cha'], function(values) {
var chaMod = Math.floor((values.cha - 10)/2);
setAttrs({
chaMod: chaMod
});
});
}
function updateAllAbilityMods() {
updateStrMod();
updateConMod();
updateDexMod();
updateIntMod();
updateWisMod();
updateChaMod();
}
on('change:str', function() {
updateStrMod();
});
on('change:con', function() {
updateConMod();
});
on('change:dex', function() {
updateDexMod();
});
on('change:int', function() {
updateIntMod();
});
on('change:wis', function() {
updateWisMod();
});
on('change:cha', function() {
updateChaMod();
});
// Hit points
function updateHpMax() {
parseAttrs(['level', 'con', 'hpMaxModifier'], function(values) {
var hpMax = 12 + values.con + values.level*5 + values.hpMaxModifier;
setAttrs({
hpMax: hpMax
});
});
}
on('change:level change:con change:hpMaxModifier', function() {
updateHpMax();
});
// Defenses
function updateAC() {
parseAttrs(['level', 'armorType', 'dexMod', 'intMod', 'originsAC', 'gearAC', 'miscAC'], function(values) {
var totalAC = 10 + values.level + values.originsAC + values.gearAC + values.miscAC;
if(values.armorType !== 'heavy')
totalAC += Math.max(values.dexMod, values.intMod);
setAttrs({
AC: totalAC
});
});
}
function updateFortitude() {
parseAttrs(['level', 'strMod', 'conMod', 'originsFortitude', 'gearFortitude', 'miscFortitude'], function(values) {
var totalFort = 10 + values.level + Math.max(values.strMod, values.conMod) +
values.originsFortitude + values.gearFortitude + values.miscFortitude;
setAttrs({
fortitude: totalFort
});
});
}
function updateReflex() {
parseAttrs(['level', 'dexMod', 'intMod', 'originsReflex', 'gearReflex', 'miscReflex'], function(values) {
var totalReflex = 10 + values.level + Math.max(values.dexMod, values.intMod) +
values.originsReflex + values.gearReflex + values.miscReflex;
setAttrs({
reflex: totalReflex
});
});
}
function updateWill() {
parseAttrs(['level', 'wisMod', 'chaMod', 'originsWill', 'gearWill', 'miscWill'], function(values) {
var totalWill = 10 + values.level + Math.max(values.wisMod, values.chaMod) +
values.originsWill + values.gearWill + values.miscWill;
setAttrs({
will: totalWill
});
});
}
function updateAllDefenses() {
updateAC();
updateFortitude();
updateReflex();
updateWill();
}
on('change:level change:armorType change:dexMod change:intMod change:originsAC change:gearAC change:miscAC', function() {
updateAC();
});
on('change:level change:strMod change:conMod change:originsFortitude change:gearFortitude change:miscFortitude', function() {
updateFortitude();
});
on('change:level change:dexMod change:intMod change:originsReflex change:gearReflex change:miscReflex', function() {
updateReflex();
});
on('change:level change:wisMod change:chaMod change:originsWill change:gearWill change:miscWill', function() {
updateWill();
});
// Initiative
function updateInitiative() {
parseAttrs(['level', 'dexMod', 'initiativeModifier'], function(values) {
var initiativeTotal = values.level + values.dexMod + values.initiativeModifier;
setAttrs({
initiativeTotal: initiativeTotal
});
});
}
on('change:level change:dexMod change:initiativeModifier', function() {
updateInitiative();
});
// character advancement ,# Alpha mutations, and vocations
function updateCharacterAdvancement() {
parseAttrs(['level'], function(values) {
for(var i=2; i<=10; i++) {
var attrName = 'showLevel' + i;
var attrs = {};
attrs[attrName] = 'no';
if(values.level >= i)
attrs[attrName] = 'yes';
setAttrs(attrs);
}
});
}
function updateNumAlphaMutations() {
parseAttrs(['level'], function(values) {
var numAlpha = 1;
var showAlpha2 = 'no';
var showAlpha3 = 'no';
if(values.level >= 4) {
numAlpha = 2;
showAlpha2 = 'yes';
}
if(values.level >= 8) {
numAlpha = 3;
showAlpha3 = 'yes'
}
setAttrs({
numAlpha: numAlpha,
showAlpha2: showAlpha2,
showAlpha3: showAlpha3
});
});
}
function updateVocations() {
parseAttrs(['level'], function(values) {
var numFeats = 0;
var showFeat1 = 'no';
var showFeat2 = 'no';
var showFeat3 = 'no';
if(values.level >= 4) {
numFeats = 1;
showFeat1 = 'yes';
}
if(values.level >= 7) {
numFeats = 2;
showFeat2 = 'yes';
}
if(values.level >= 10) {
numFeats = 3;
showFeat3 = 'yes';
}
setAttrs({
numFeats: numFeats,
showFeat1: showFeat1,
showFeat2: showFeat2,
showFeat3: showFeat3
});
});
}
on('change:level', function() {
updateCharacterAdvancement();
updateNumAlphaMutations();
updateVocations();
});
on('change:crit1', function() {
parseAttrs(['crit1'], function(values) {
var crit2 = 3 - values.crit1;
setAttrs({
crit2: crit2
});
});
});
on('change:crit2', function() {
parseAttrs(['crit2'], function(values) {
var crit1 = 3 - values.crit2;
setAttrs({
crit1: crit1
});
});
});
on('change:util1', function() {
parseAttrs(['util1'], function(values) {
var util2 = 3 - values.util1;
setAttrs({
util2: util2
});
});
});
on('change:util2', function() {
parseAttrs(['util2'], function(values) {
var util1 = 3 - values.util2;
setAttrs({
util1: util1
});
});
});
on('change:expert1', function() {
parseAttrs(['expert1'], function(values) {
var expert2 = 3 - values.expert1;
setAttrs({
expert2: expert2
});
});
});
on('change:expert2', function() {
parseAttrs(['expert2'], function(values) {
var expert1 = 3 - values.expert2;
setAttrs({
expert1: expert1
});
});
});
// Skills
function updateAcrobatics() {
parseAttrs(['level', 'dexMod', 'originsAcrobatics', 'gearAcrobatics', 'miscAcrobatics'], function(values) {
var acrobatics = values.level + values.dexMod + values.originsAcrobatics + values.gearAcrobatics + values.miscAcrobatics;
setAttrs({
acrobatics: acrobatics
});
});
}
function updateAthletics() {
parseAttrs(['level', 'strMod', 'originsAthletics', 'gearAthletics', 'miscAthletics'], function(values) {
var athletics = values.level + values.strMod + values.originsAthletics + values.gearAthletics + values.miscAthletics;
setAttrs({
athletics: athletics
});
});
}
function updateConspiracy() {
parseAttrs(['level', 'intMod', 'originsConspiracy', 'gearConspiracy', 'miscConspiracy'], function(values) {
var conspiracy = values.level + values.intMod + values.originsConspiracy + values.gearConspiracy + values.miscConspiracy;
setAttrs({
conspiracy: conspiracy
});
});
}
function updateInsight() {
parseAttrs(['level', 'wisMod', 'originsInsight', 'gearInsight', 'miscInsight'], function(values) {
var insight = values.level + values.wisMod + values.originsInsight + values.gearInsight + values.miscInsight;
setAttrs({
insight: insight
});
});
}
function updateInteraction() {
parseAttrs(['level', 'chaMod', 'originsInteraction', 'gearInteraction', 'miscInteraction'], function(values) {
var interaction = values.level + values.chaMod + values.originsInteraction + values.gearInteraction + values.miscInteraction;
setAttrs({
interaction: interaction
});
});
}
function updateMechanics() {
parseAttrs(['level', 'intMod', 'originsMechanics', 'gearMechanics', 'miscMechanics'], function(values) {
var mechanics = values.level + values.intMod + values.originsMechanics + values.gearMechanics + values.miscMechanics;
setAttrs({
mechanics: mechanics
});
});
}
function updateNature() {
parseAttrs(['level', 'wisMod', 'originsNature', 'gearNature', 'miscNature'], function(values) {
var nature = values.level + values.wisMod + values.originsNature + values.gearNature + values.miscNature;
setAttrs({
nature: nature
});
});
}
function updatePerception() {
parseAttrs(['level', 'wisMod', 'originsPerception', 'gearPerception', 'miscPerception'], function(values) {
var perception = values.level + values.wisMod + values.originsPerception + values.gearPerception + values.miscPerception;
setAttrs({
perception: perception
});
});
}
function updateScience() {
parseAttrs(['level', 'intMod', 'originsScience', 'gearScience', 'miscScience'], function(values) {
var science = values.level + values.intMod + values.originsScience + values.gearScience + values.miscScience;
setAttrs({
science: science
});
});
}
function updateStealth() {
parseAttrs(['level', 'dexMod', 'originsStealth', 'gearStealth', 'miscStealth'], function(values) {
var stealth = values.level + values.dexMod + values.originsStealth + values.gearStealth + values.miscStealth;
setAttrs({
stealth: stealth
});
});
}
function updateAllSkills() {
updateAcrobatics();
updateAthletics();
updateConspiracy();
updateInsight();
updateInteraction();
updateMechanics();
updateNature();
updatePerception();
updateScience();
updateStealth();
}
on('change:level change:dexMod change:originsAcrobatics change:gearAcrobatics change:miscAcrobatics', function() {
updateAcrobatics();
});
on('change:level change:strMod change:originsAthletics change:gearAthletics change:miscAthletics', function() {
updateAthletics();
});
on('change:level change:intMod change:originsConspiracy change:gearConspiracy change:miscConspiracy', function() {
updateConspiracy();
});
on('change:level change:wisMod change:originsInsight change:gearInsight change:miscInsight', function() {
updateInsight();
});
on('change:level change:chaMod change:originsInteraction change:gearInteraction change:miscInteraction', function() {
updateInteraction();
});
on('change:level change:intMod change:originsMechanics change:gearMechanics change:miscMechanics', function() {
updateMechanics();
});
on('change:level change:wisMod change:originsNature change:gearNature change:miscNature', function() {
updateNature();
});
on('change:level change:wisMod change:originsPerception change:gearPerception change:miscPerception', function() {
updatePerception();
});
on('change:level change:intMod change:originsScience change:gearScience change:miscScience', function() {
updateScience();
});
on('change:level change:dexMod change:originsStealth change:gearStealth change:miscStealth', function() {
updateStealth();
});
// Origins
function updateOrigin1() {
parseAttrs(['level', 'crit1', 'util1', 'expert1'], function(values) {
var showCrit = 'no';
var showUtil = 'no';
var showExpert = 'no';
if((values.level >= 2 && values.crit1 === 1) || values.level >= 6)
showCrit = 'yes';
if((values.level >= 3 && values.util1 === 1) || values.level >= 7)
showUtil = 'yes';
if((values.level >= 5 && values.expert1 == 1) || values.level >= 9)
showExpert = 'yes';
setAttrs({
showOrigin1Crit: showCrit,
showOrigin1Util: showUtil,
showOrigin1Expert: showExpert
});
});
}
function updateOrigin2() {
parseAttrs(['level', 'crit1', 'util1', 'expert1'], function(values) {
var showCrit = 'no';
var showUtil = 'no';
var showExpert = 'no';
if((values.level >= 2 && values.crit1 === 2) || values.level >= 6)
showCrit = 'yes';
if((values.level >= 3 && values.util1 === 2) || values.level >= 7)
showUtil = 'yes';
if((values.level >= 5 && values.expert1 == 2) || values.level >= 9)
showExpert = 'yes';
setAttrs({
showOrigin2Crit: showCrit,
showOrigin2Util: showUtil,
showOrigin2Expert: showExpert
});
});
}
function updateAllOrigins() {
updateOrigin1();
updateOrigin2();
}
on('change:level change:crit1 change:crit2 change:util1 change:util2 change:expert1 change:expert2', function() {
updateAllOrigins();
});
</script>