Files
roll20-character-sheets/Maximum Apocalypse/MaximumApocalypse.html
T

2366 lines
159 KiB
HTML

<!-- mod_query attribute will be replaced by on("sheet:opened") function with translated version -->
<input type="hidden" name="attr_mod_query" value="?{Modifiers|None, 0|1 Advantage, 1|1 Disadvantage, -1|2 Advantages, 2|2 Disadvantage, -2|3 Advantages, 3|3 Disadvantage, -3}"/>
<input type="hidden" name="attr_mod_bool_one_if_adv" value="({[[{@{mod_query}, 0}kh1]], 1}kl1)"/>
<input type="hidden" name="attr_mod_bool_one_if_dis" value="([[{[[{@{mod_query}, 0}kl1]], -1}kh1]]*-1)"/>
<input type="hidden" name="attr_mod_bool_one_if_nomod" value="(1-@{mod_bool_one_if_adv}+-@{mod_bool_one_if_dis})"/>
<input type="hidden" name="attr_roll_perc_adv" value="(([[@{mod_bool_one_if_adv}+1*@{mod_bool_one_if_adv}]]d10kl1cs>0cf<0-[[1*@{mod_bool_one_if_adv}]])*10)"/>
<input type="hidden" name="attr_roll_perc_dis" value="(([[@{mod_bool_one_if_dis}+1*@{mod_bool_one_if_dis}]]d10kh1cs>0cf<0-[[1*@{mod_bool_one_if_dis}]])*10)"/>
<input type="hidden" name="attr_roll_perc_nomod" value="(([[1*@{mod_bool_one_if_nomod}]]d10cs>0cf<0-[[1*@{mod_bool_one_if_nomod}]])*10)"/>
<input type="hidden" name="attr_roll_perc" value="@{roll_perc_adv}+@{roll_perc_dis}+@{roll_perc_nomod}+(1d10cs>0cf<0)"/>
<input type="hidden" name="attr_roll_perc_simple" value="(((1d10cs<2cf>9)-1)*10)+(1d10)"/>
<input type="hidden" name="attr_roll_thresh_mod" value="((({@{mod_query}, 1}kh1-1)*5)+@{threshold_modifier})"/>
<div class="main">
<div class="character section">
<div class="character-name-input data-entry"><input name="attr_character_name" type="text"/></div>
<div class="character-name-label"><label data-i18n="character_name">Character Name.</label></div>
<div class="logo">
<img height="500px" width="500px" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Maximum%20Apocalypse/ma-logo.png" alt="Maxiumum Apocalypse"/>
</div>
<div class="player-name-input data-entry"><input name="attr_player_name" type="text"/></div>
<div class="player-name-label"><label data-i18n="player_name">Player Name.</label></div>
<div class="archetype-primary-input data-entry">
<select name="attr_archetype_primary" data-i18n-list="archetypes">
<option value="" selected></option>
<option data-i18n="firefighter" value="firefighter" data-i18n-list-item="firefighter">Firefighter.</option>
<option data-i18n="gunslinger" value="gunslinger" data-i18n-list-item="gunslinger">Gunslinger.</option>
<option data-i18n="hunter" value="hunter" data-i18n-list-item="hunter">Hunter.</option>
<option data-i18n="mechanic" value="mechanic" data-i18n-list-item="mechanic">Mechanic.</option>
<option data-i18n="priest" value="priest" data-i18n-list-item="priest">Priest.</option>
<option data-i18n="ronin" value="ronin" data-i18n-list-item="ronin">Ronin.</option>
<option data-i18n="scientist" value="scientist" data-i18n-list-item="scientist">Scientist.</option>
<option data-i18n="surgeon" value="surgeon" data-i18n-list-item="surgeon">Surgeon.</option>
<option data-i18n="thief" value="thief" data-i18n-list-item="thief">Thief.</option>
<option data-i18n="veteran" value="veteran" data-i18n-list-item="veteran">Veteran.</option>
</select>
</div>
<div class="archetype-primary-label"><label data-i18n="primary_archetype">Primary Archetype.</label></div>
<div class="archetype-secondary-input data-entry">
<select name="attr_archetype_secondary" data-i18n-list="archetypes">
<option value="" selected></option>
<option data-i18n="firefighter" value="firefighter" data-i18n-list-item="firefighter">Firefighter.</option>
<option data-i18n="gunslinger" value="gunslinger" data-i18n-list-item="gunslinger">Gunslinger.</option>
<option data-i18n="hunter" value="hunter" data-i18n-list-item="hunter">Hunter.</option>
<option data-i18n="mechanic" value="mechanic" data-i18n-list-item="mechanic">Mechanic.</option>
<option data-i18n="priest" value="priest" data-i18n-list-item="priest">Priest.</option>
<option data-i18n="ronin" value="ronin" data-i18n-list-item="ronin">Ronin.</option>
<option data-i18n="scientist" value="scientist" data-i18n-list-item="scientist">Scientist.</option>
<option data-i18n="surgeon" value="surgeon" data-i18n-list-item="surgeon">Surgeon.</option>
<option data-i18n="thief" value="thief" data-i18n-list-item="thief">Thief.</option>
<option data-i18n="veteran" value="veteran" data-i18n-list-item="veteran">Veteran.</option>
</select>
</div>
<div class="archetype-secondary-label"><label data-i18n="secondary_archetype">Secondary Archetype.</label></div>
<div class="apocalypse-input data-entry">
<select name="attr_apocalypse" data-i18n-list="apocalypses">
<option value="" selected></option>
<option data-i18n="alien_invasion" value="aliens" data-i18n-list-item="aliens">Alien Invasion.</option>
<option data-i18n="food_riots" value="food_riots" data-i18n-list-item="food_riots">Food Riots.</option>
<option data-i18n="kaiju_attack" value="kaiju" data-i18n-list-item="kaiju">Kaiju Attack.</option>
<option data-i18n="nuclear_holocaust" value="nuclear" data-i18n-list-item="nuclear">Nuclear Holocaust.</option>
<option data-i18n="peak_oil_collapse" value="oil-collapse" data-i18n-list-item="oil-collapse">Peak Oil Collapse.</option>
<option data-i18n="robot_upraising" value="robots" data-i18n-list-item="robots">Robot Uprising.</option>
<option data-i18n="seismic_cataclysm" value="seismic" data-i18n-list-item="seismic">Seismic Cataclysm.</option>
<option data-i18n="supernatural_horrors" value="horrors" data-i18n-list-item="horrors">Supernatural Horrors.</option>
<option data-i18n="the_rapture" value="rapture" data-i18n-list-item="rapture">The Rapture.</option>
<option data-i18n="time_paradox" value="time_paradox" data-i18n-list-item="time_paradox">Time Paradox.</option>
<option data-i18n="zombie_apocalypse" value="zombies" data-i18n-list-item="zombies">Zombie Apocalypse.</option>
</select>
</div>
<div class="apocalypse-label"><label data-i18n="personal_apocalypse">Personal Apocalypse.</label></div>
<div class="age-input data-entry">
<select name="attr_age">
<option value="" selected></option>
<option data-i18n="child_0-15" value="child">Child (0-15).</option>
<option data-i18n="youth_16-29" value="youth">Youth (16-29).</option>
<option data-i18n="middle_30-45" value="Mmddle">Middle (30-45).</option>
<option data-i18n="mature_46-59" value="mature">Mature (46-59).</option>
<option data-i18n="geriatric_60+" value="geriatric">Geriatric (60+).</option>
</select>
</div>
<div class="age-label"><label data-i18n="age">Age.</label></div>
</div>
<div class="stats-grid">
<div class="stat str">
<div class="stat-labels str-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{strength}}} {{firstdegree1=[[@{str_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{str_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{str_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{str_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{str_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{str_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="strength">Strength.</span>
</button>
</div>
<div class="code dark"><span class="code">(STR)</span></div>
</div>
<div class="str-input"><input class="stat" type="number" name="attr_str" value="25"/></div>
<div class="half str-h"><input class="stat-half" type="number" name="attr_str_half" readonly/></div>
<div class="half str-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter str-q"><input class="stat-quarter" type="number" name="attr_str_quarter" readonly/></div>
<div class="quarter str-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_str_temp_check" class="stat-temp-check"/>
<div class="str-temp stat-temp"><input class="stat-quarter" type="number" name="attr_str_temp" readonly/></div>
<input type="hidden" name="attr_str_thresh"/>
</div>
<div class="stat for">
<div class="stat-labels for-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{fortitude}}} {{firstdegree1=[[@{for_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{for_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{for_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{for_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{for_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{for_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="fortitude">Fortitude.</span>
</button>
</div>
<div class="code dark"><span class="code">(FOR)</span></div>
</div>
<div class="for-input"><input class="stat" type="number" name="attr_for" value="25"/></div>
<div class="half for-h"><input class="stat-half" type="number" name="attr_for_half" readonly/></div>
<div class="half for-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter for-q"><input class="stat-quarter" type="number" name="attr_for_quarter" readonly/></div>
<div class="quarter for-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_for_temp_check" class="stat-temp-check"/>
<div class="for-temp stat-temp"><input class="stat-quarter" type="number" name="attr_for_temp" readonly/></div>
<input type="hidden" name="attr_for_thresh"/>
</div>
<div class="stat agi">
<div class="stat-labels agi-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{agility}}} {{firstdegree1=[[@{agi_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{agi_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{agi_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{agi_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{agi_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{agi_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="agility">Agility.</span>
</button>
</div>
<div class="code dark"><span class="code">(AGI)</span></div>
</div>
<div class="agi-input"><input class="stat" type="number" name="attr_agi" value="25"/></div>
<div class="half agi-h"><input class="stat-half" type="number" name="attr_agi_half" readonly/></div>
<div class="half agi-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter agi-q"><input class="stat-quarter" type="number" name="attr_agi_quarter" readonly/></div>
<div class="quarter agi-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_agi_temp_check" class="stat-temp-check"/>
<div class="agi-temp stat-temp"><input class="stat-quarter" type="number" name="attr_agi_temp" readonly/></div>
<input type="hidden" name="attr_agi_thresh"/>
</div>
<div class="stat int">
<div class="stat-labels int-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{intelligence}}} {{firstdegree1=[[@{int_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{int_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{int_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{int_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{int_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{int_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="intelligence">Intelligence.</span>
</button>
</div>
<div class="code dark"><span class="code">(INT)</span></div>
</div>
<div class="int-input"><input class="stat" type="number" name="attr_int" value="25"/></div>
<div class="half int-h"><input class="stat-half" type="number" name="attr_int_half" readonly/></div>
<div class="half int-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter int-q"><input class="stat-quarter" type="number" name="attr_int_quarter" readonly/></div>
<div class="quarter int-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_int_temp_check" class="stat-temp-check"/>
<div class="int-temp stat-temp"><input class="stat-quarter" type="number" name="attr_int_temp" readonly/></div>
<input type="hidden" name="attr_int_thresh"/>
</div>
<div class="stat ins">
<div class="stat-labels ins-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{instinct}}} {{firstdegree1=[[@{ins_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{ins_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{ins_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{ins_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{ins_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{ins_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="instinct">Instinct.</span>
</button>
</div>
<div class="code dark"><span class="code">(INS)</span></div>
</div>
<div class="ins-input"><input class="stat" type="number" name="attr_ins" value="25"/></div>
<div class="half ins-h"><input class="stat-half" type="number" name="attr_ins_half" readonly/></div>
<div class="half ins-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter ins-q"><input class="stat-quarter" type="number" name="attr_ins_quarter" readonly/></div>
<div class="quarter ins-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_ins_temp_check" class="stat-temp-check"/>
<div class="ins-temp stat-temp"><input class="stat-quarter" type="number" name="attr_ins_temp" readonly/></div>
<input type="hidden" name="attr_ins_thresh"/>
</div>
<div class="stat cha">
<div class="stat-labels cha-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{charisma}}} {{firstdegree1=[[@{cha_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{cha_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{cha_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{cha_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{cha_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{cha_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="charisma">Charisma.</span>
</button>
</div>
<div class="code dark"><span class="code">(CHA)</span></div>
</div>
<div class="cha-input"><input class="stat" type="number" name="attr_cha" value="25"/></div>
<div class="half cha-h"><input class="stat-half" type="number" name="attr_cha_half" readonly/></div>
<div class="half cha-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter cha-q"><input class="stat-quarter" type="number" name="attr_cha_quarter" readonly/></div>
<div class="quarter cha-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_cha_temp_check" class="stat-temp-check"/>
<div class="cha-temp stat-temp"><input class="stat-quarter" type="number" name="attr_cha_temp" readonly/></div>
<input type="hidden" name="attr_cha_thresh"/>
</div>
<div class="stat fs">
<div class="stat-labels fs-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{fighting_skill}}} {{firstdegree1=[[@{fs_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{fs_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{fs_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{fs_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{fs_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{fs_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="fighting_skill">Fighting Skill.</span>
</button>
</div>
<div class="code dark"><span class="code">(FS)</span></div>
</div>
<div class="fs-input"><input class="stat" type="number" name="attr_fs" value="25"/></div>
<div class="half fs-h"><input class="stat-half" type="number" name="attr_fs_half" readonly/></div>
<div class="half fs-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter fs-q"><input class="stat-quarter" type="number" name="attr_fs_quarter" readonly/></div>
<div class="quarter fs-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_fs_temp_check" class="stat-temp-check"/>
<div class="fs-temp stat-temp"><input class="stat-quarter" type="number" name="attr_fs_temp" readonly/></div>
<input type="hidden" name="attr_fs_thresh"/>
</div>
<div class="stat bs">
<div class="stat-labels bs-labels">
<div class="banner">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{ballistic_skill}}} {{firstdegree1=[[@{bs_thresh}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{bs_thresh}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{bs_thresh}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{bs_thresh}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{bs_thresh}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{bs_thresh}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button stat-roll">
<span data-i18n="ballistic_skill">Ballistic Skill.</span>
</button>
</div>
<div class="code dark"><span class="code">(BS)</span></div>
</div>
<div class="bs-input"><input class="stat" type="number" name="attr_bs" value="25"/></div>
<div class="half bs-h"><input class="stat-half" type="number" name="attr_bs_half" readonly/></div>
<div class="half bs-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter bs-q"><input class="stat-quarter" type="number" name="attr_bs_quarter" readonly/></div>
<div class="quarter bs-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
<input type="hidden" name="attr_fs_temp_check" class="stat-temp-check"/>
<div class="bs-temp stat-temp"><input class="stat-quarter" type="number" name="attr_bs_temp" readonly/></div>
<input type="hidden" name="attr_bs_thresh"/>
</div>
</div>
<div class="skills section flex-col">
<div class="skill-banner banner"><span data-i18n="skills">Skills.</span></div>
<div class="skill-str code">(STR)</div>
<div class="skill-for code">(FOR)</div>
<div class="skill-agi code">(AGI)</div>
<div class="skill-int code">(INT)</div>
<div class="skill-ins code">(INS)</div>
<div class="skill-cha code">(CHA)</div>
<div class="skill-fs code">(FS)</div>
<div class="skill-bs code">(BS)</div>
<!-- SKILLS ROW 1 -->
<div class="athletics-prof prof">
<select class="prof" name="attr_athletics_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_athletics"/>
<input type="hidden" name="attr_athletics_prof_desc"/>
</div>
<div class="athletics-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{athletics}}} {{profdesc=@{athletics_prof_desc}}} {{firstdegree1=[[@{athletics}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{athletics}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{athletics}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{athletics}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{athletics}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{athletics}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="athletics">Athletics.</span>
</button>
</div>
<div class="archery-prof prof">
<select class="prof" name="attr_archery_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_archery"/>
<input type="hidden" name="attr_archery_prof_desc"/>
</div>
<div class="archery-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{archery}}} {{profdesc=@{archery_prof_desc}}} {{firstdegree1=[[@{archery}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{archery}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{archery}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{archery}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{archery}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{archery}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="archery">Archery.</span>
</button>
</div>
<div class="academics-prof prof">
<select class="prof" name="attr_academics_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_academics"/>
<input type="hidden" name="attr_academics_prof_desc"/>
</div>
<div class="academics-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{academics}}} {{profdesc=@{academics_prof_desc}}} {{firstdegree1=[[@{academics}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{academics}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{academics}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{academics}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{academics}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{academics}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="academics">Academics.</span>
</button>
</div>
<div class="crafting-prof prof">
<select class="prof" name="attr_crafting_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_crafting"/>
<input type="hidden" name="attr_crafting_prof_desc"/>
</div>
<div class="crafting-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{crafting}}} {{profdesc=@{crafting_prof_desc}}} {{firstdegree1=[[@{crafting}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{crafting}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{crafting}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{crafting}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{crafting}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{crafting}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="crafting">Crafting.</span>
</button>
</div>
<div class="animalken-prof prof">
<select class="prof" name="attr_animalken_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_animalken"/>
<input type="hidden" name="attr_animalken_prof_desc"/>
</div>
<div class="animalken-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{animal_ken}}} {{profdesc=@{animalken_prof_desc}}} {{firstdegree1=[[@{animalken}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{animalken}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{animalken}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{animalken}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{animalken}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{animalken}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="animal_ken">Animal Ken.</span>
</button>
</div>
<div class="blades-prof prof">
<select class="prof" name="attr_blades_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_blades"/>
<input type="hidden" name="attr_blades_prof_desc"/>
</div>
<div class="blades-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{blades}}} {{profdesc=@{blades_prof_desc}}} {{firstdegree1=[[@{blades}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{blades}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{blades}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{blades}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{blades}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{blades}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="blades">Blades.</span>
</button>
</div>
<div class="firearms-prof prof">
<select class="prof" name="attr_firearms_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_firearms"/>
<input type="hidden" name="attr_firearms_prof_desc"/>
</div>
<div class="firearms-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{firearms}}} {{profdesc=@{firearms_prof_desc}}} {{firstdegree1=[[@{firearms}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{firearms}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{firearms}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{firearms}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{firearms}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{firearms}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="firearms">Firearms.</span>
</button>
</div>
<!-- SKILLS ROW 2 -->
<div class="lockpick-prof prof">
<select class="prof" name="attr_lockpick_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_lockpick"/>
<input type="hidden" name="attr_lockpick_prof_desc"/>
</div>
<div class="lockpick-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{lockpick}}} {{profdesc=@{lockpick_prof_desc}}} {{firstdegree1=[[@{lockpick}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{lockpick}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{lockpick}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{lockpick}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{lockpick}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{lockpick}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="lockpick">Lockpick.</span>
</button>
</div>
<div class="mechanics-prof prof">
<select class="prof" name="attr_mechanics_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_mechanics"/>
<input type="hidden" name="attr_mechanics_prof_desc"/>
</div>
<div class="mechanics-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{mechanics}}} {{profdesc=@{mechanics_prof_desc}}} {{firstdegree1=[[@{mechanics}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{mechanics}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{mechanics}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{mechanics}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{mechanics}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{mechanics}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="mechanics">Mechanics.</span>
</button>
</div>
<div class="drive-prof prof">
<select class="prof" name="attr_drive_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_drive"/>
<input type="hidden" name="attr_drive_prof_desc"/>
</div>
<div class="drive-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{drive}}} {{profdesc=@{drive_prof_desc}}} {{firstdegree1=[[@{drive}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{drive}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{drive}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{drive}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{drive}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{drive}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="drive">Drive.</span>
</button>
</div>
<div class="charm-prof prof">
<select class="prof" name="attr_charm_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_charm"/>
<input type="hidden" name="attr_charm_prof_desc"/>
</div>
<div class="charm-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{charm}}} {{profdesc=@{charm_prof_desc}}} {{firstdegree1=[[@{charm}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{charm}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{charm}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{charm}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{charm}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{charm}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="charm">Charm.</span>
</button>
</div>
<div class="brawl-prof prof">
<select class="prof" name="attr_brawl_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_brawl"/>
<input type="hidden" name="attr_brawl_prof_desc"/>
</div>
<div class="brawl-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{brawl}}} {{profdesc=@{brawl_prof_desc}}} {{firstdegree1=[[@{brawl}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{brawl}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{brawl}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{brawl}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="brawl">Brawl.</span>
</button>
</div>
<div class="heavyweapons-prof prof">
<select class="prof" name="attr_heavyweapons_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_heavyweapons"/>
<input type="hidden" name="attr_heavyweapons_prof_desc"/>
</div>
<div class="heavyweapons-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{heavy_weapons}}} {{profdesc=@{heavyweapons_prof_desc}}} {{firstdegree1=[[@{heavyweapons}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{heavyweapons}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{heavyweapons}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{heavyweapons}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{heavyweapons}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{heavyweapons}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="heavy_weapons">Heavy Weapons.</span>
</button>
</div>
<!-- SKILLS ROW 3 -->
<div class="palming-prof prof">
<select class="prof" name="attr_palming_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_palming"/>
<input type="hidden" name="attr_palming_prof_desc"/>
</div>
<div class="palming-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{palming}}} {{profdesc=@{palming_prof_desc}}} {{firstdegree1=[[@{palming}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{palming}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{palming}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{palming}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{palming}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{palming}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="palming">Palming.</span>
</button>
</div>
<div class="medicine-prof prof">
<select class="prof" name="attr_medicine_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_medicine"/>
<input type="hidden" name="attr_medicine_prof_desc"/>
</div>
<div class="medicine-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{medicine}}} {{profdesc=@{medicine_prof_desc}}} {{firstdegree1=[[@{medicine}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{medicine}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{medicine}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{medicine}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{medicine}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{medicine}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="medicine">Medicine.</span>
</button>
</div>
<div class="navigation-prof prof">
<select class="prof" name="attr_navigation_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_navigation"/>
<input type="hidden" name="attr_navigation_prof_desc"/>
</div>
<div class="navigation-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{navigation}}} {{profdesc=@{navigation_prof_desc}}} {{firstdegree1=[[@{navigation}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{navigation}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{navigation}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{navigation}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{navigation}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{navigation}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="navigation">Navigation.</span>
</button>
</div>
<div class="command-prof prof">
<select class="prof" name="attr_command_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_command"/>
<input type="hidden" name="attr_command_prof_desc"/>
</div>
<div class="command-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{command}}} {{profdesc=@{command_prof_desc}}} {{firstdegree1=[[@{command}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{command}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{command}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{command}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{command}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{command}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="command">Command.</span>
</button>
</div>
<div class="clubs-prof prof">
<select class="prof" name="attr_clubs_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_clubs"/>
<input type="hidden" name="attr_clubs_prof_desc"/>
</div>
<div class="clubs-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{clubs}}} {{profdesc=@{clubs_prof_desc}}} {{firstdegree1=[[@{clubs}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{clubs}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{clubs}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{clubs}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{clubs}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{clubs}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="clubs">Clubs.</span>
</button>
</div>
<!-- SKILLS ROW 4 -->
<div class="stealth-prof prof">
<select class="prof" name="attr_stealth_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_stealth"/>
<input type="hidden" name="attr_stealth_prof_desc"/>
</div>
<div class="stealth-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{stealth}}} {{profdesc=@{stealth_prof_desc}}} {{firstdegree1=[[@{stealth}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{stealth}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{stealth}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{stealth}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{stealth}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{stealth}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="stealth">Stealth.</span>
</button>
</div>
<div class="science-prof prof">
<select class="prof" name="attr_science_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_science"/>
<input type="hidden" name="attr_science_prof_desc"/>
</div>
<div class="science-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{science}}} {{profdesc=@{science_prof_desc}}} {{firstdegree1=[[@{science}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{science}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{science}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{science}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{science}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{science}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="science">Science.</span>
</button>
</div>
<div class="perception-prof prof">
<select class="prof" name="attr_perception_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_perception"/>
<input type="hidden" name="attr_perception_prof_desc"/>
</div>
<div class="perception-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{perception}}} {{profdesc=@{perception_prof_desc}}} {{firstdegree1=[[@{perception}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{perception}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{perception}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{perception}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{perception}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{perception}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="perception">Perception.</span>
</button>
</div>
<div class="interrogate-prof prof">
<select class="prof" name="attr_interrogate_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_interrogate"/>
<input type="hidden" name="attr_interrogate_prof_desc"/>
</div>
<div class="interrogate-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{interrogate}}} {{profdesc=@{interrogate_prof_desc}}} {{firstdegree1=[[@{interrogate}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{interrogate}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{interrogate}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{interrogate}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{interrogate}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{interrogate}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="interrogate">Interrogate.</span>
</button>
</div>
<!-- SKILLS ROW 5 -->
<div class="wrangle-prof prof">
<select class="prof" name="attr_wrangle_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_wrangle"/>
<input type="hidden" name="attr_wrangle_prof_desc"/>
</div>
<div class="wrangle-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{wrangle}}} {{profdesc=@{wrangle_prof_desc}}} {{firstdegree1=[[@{wrangle}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{wrangle}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{wrangle}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{wrangle}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{wrangle}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{wrangle}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="wrangle">Wrangle.</span>
</button>
</div>
<div class="techuse-prof prof">
<select class="prof" name="attr_techuse_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_techuse"/>
<input type="hidden" name="attr_techuse_prof_desc"/>
</div>
<div class="techuse-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{tech_use}}} {{profdesc=@{techuse_prof_desc}}} {{firstdegree1=[[@{techuse}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{techuse}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{techuse}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{techuse}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{techuse}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{techuse}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="tech_use">Tech Use.</span>
</button>
</div>
<div class="survival-prof prof">
<select class="prof" name="attr_survival_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_survival"/>
<input type="hidden" name="attr_survival_prof_desc"/>
</div>
<div class="survival-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{survival}}} {{profdesc=@{survival_prof_desc}}} {{firstdegree1=[[@{survival}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{survival}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{survival}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{survival}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{survival}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{survival}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="survival">Survival.</span>
</button>
</div>
<div class="intimidate-prof prof">
<select class="prof" name="attr_intimidate_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_intimidate"/>
<input type="hidden" name="attr_intimidate_prof_desc"/>
</div>
<div class="intimidate-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{intimidate}}} {{profdesc=@{intimidate_prof_desc}}} {{firstdegree1=[[@{intimidate}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{intimidate}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{intimidate}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{intimidate}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{intimidate}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{intimidate}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="intimidate">Intimidate.</span>
</button>
</div>
<!-- SKILLS ROW 6 -->
<div class="tracking-prof prof">
<select class="prof" name="attr_tracking_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_tracking"/>
<input type="hidden" name="attr_tracking_prof_desc"/>
</div>
<div class="tracking-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{tracking}}} {{profdesc=@{tracking_prof_desc}}} {{firstdegree1=[[@{tracking}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{tracking}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{tracking}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{tracking}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{tracking}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{tracking}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="tracking">Tracking.</span>
</button>
</div>
<!-- SKILLS ROW 7 -->
<div class="xenotechuse-prof prof">
<select class="prof" name="attr_xenotechuse_prof">
<option value="-">-</option>
<option value="p">P</option>
<option value="s">S</option>
<option value="t">T</option>
<option value="m">M</option>
</select>
<input type="hidden" name="attr_xenotechuse"/>
<input type="hidden" name="attr_xenotechuse_prof_desc"/>
</div>
<div class="xenotechuse-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{xenotech_use}}} {{profdesc=@{xenotechuse_prof_desc}}} {{firstdegree1=[[@{xenotechuse}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{xenotechuse}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{xenotechuse}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{xenotechuse}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{xenotechuse}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{xenotechuse}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="xenotech_use">Xenotech Use.</span>
</button>
</div>
<div class="prof-desc">
<div class="prof-circle"><select class="prof" disabled/></div>
<div class="prof-code-not code">-</div>
<div class="prof-desc-not"><label data-i18n="not_proficient">Not Proficient.</label></div>
<div class="prof-code-p code">P</div>
<div class="prof-desc-p"><label data-i18n="proficient">Proficient.</label></div>
<div class="prof-code-s code">S</div>
<div class="prof-desc-s"><label data-i18n="skilled">Skilled.</label></div>
<div class="prof-code-t code">T</div>
<div class="prof-desc-t"><label data-i18n="trained">Trained.</label></div>
<div class="prof-code-m code">M</div>
<div class="prof-desc-m"><label data-i18n="master">Master.</label></div>
<div class="prof-text"><span data-i18n="proficiency_text">Skills that are NOT PROFICIENT start as DISADVANTAGE and cannot have ADVANTAGE when rolled.</span></div>
</div>
<div class="contort-prof prof">
<input type="hidden" name="attr_contort"/>
</div>
<div class="contort-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{contort}}} {{profdesc=^{na}}} {{firstdegree1=[[@{contort}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{contort}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{contort}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{contort}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{contort}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{contort}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="contort">Contort.</span>
</button>
</div>
<div class="lift-prof prof">
<input type="hidden" name="attr_lift"/>
</div>
<div class="lift-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{lift}}} {{profdesc=^{na}}} {{firstdegree1=[[@{lift}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{lift}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{lift}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{lift}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{lift}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{lift}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="lift">Lift.</span>
</button>
</div>
<div class="pry-prof prof">
<input type="hidden" name="attr_pry"/>
</div>
<div class="pry-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{pry}}} {{profdesc=^{na}}} {{firstdegree1=[[@{pry}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{pry}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{pry}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{pry}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{pry}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{pry}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="pry">Pry.</span>
</button>
</div>
<div class="remember-prof prof">
<input type="hidden" name="attr_remember"/>
</div>
<div class="remember-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{remember}}} {{profdesc=^{na}}} {{firstdegree1=[[@{remember}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{remember}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{remember}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{remember}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{remember}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{remember}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="remember">Remember.</span>
</button>
</div>
<div class="throw-prof prof">
<input type="hidden" name="attr_throwing"/>
</div>
<div class="throw-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{throw}}} {{profdesc=^{na}}} {{firstdegree1=[[@{throwing}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{throwing}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{throwing}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{throwing}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{throwing}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{throwing}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="skill-label blank-roll-button">
<span data-i18n="throw">Throw.</span>
</button>
</div>
<div class="roll-modifiers">
<span class="label" data-i18n="threshold_modifier_text">Threshold modifier prompt on every roll ?.</span>
<input type="checkbox" value="?{Threshold Modifier|0}" name="attr_threshold_modifier"/>
<br/>
<span class="label" data-i18n="damage_code_text">Damage code prompt on every attack ?.</span>
<input type="checkbox" name="attr_prompt_dmg" value="on"/>
<input type="hidden" name="attr_dmg_query" value="0"/>
</div>
<div class="gm-modifiers">
<span class="label" data-i18n="use_api_text">Use API for rolls (Requires Pro Account) ?.</span>
<input type="checkbox" value="!ma roll" name="attr_api_use"/>
<br/>
<span class="label" data-i18n="disable_calc_text">Manually set Special Stats and Dodge ?.</span>
<input type="checkbox" name="attr_disabled_attrs" value="build, build_dc, health_max, init, salvage, resilience, resolve, immunity, armor_max, dodge"/>
</div>
<div class="luck-label">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{luck}}} {{firstdegree1=[[@{luck}+@{threshold_modifier}+1]]}} {{firstdegree=[[@{luck}+@{threshold_modifier}]]}} {{seconddegree1=[[floor((@{luck}+@{threshold_modifier})/2)+1]]}} {{seconddegree=[[floor((@{luck}+@{threshold_modifier})/2)]]}} {{thirddegree1=[[floor((@{luck}+@{threshold_modifier})/4)+1]]}} {{thirddegree=[[floor((@{luck}+@{threshold_modifier})/4)]]}} {{profroll=[[@{roll_perc_simple}]]}} {{mod=[[0]]}} {{absmod=[[0]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button luck-button">
<span data-i18n="luck">Luck.</span><span> (L)</span>
</button>
</div>
<div class="luck-reroll">
<input type="hidden" name="attr_api_use" class="api-use-check"/>
<button value="?{Re-Roll?|No,Re-Roll Cancelled|Yes,!ma lrr @{character_id}|Yes & don't use luck,!ma reroll}" type="roll" class="blank-roll-button sheet-luck-button luck-reroll">
<span data-i18n="re-roll">Re-Roll.</span>
</button>
</div>
<div class="luck-use-label">
<input type="hidden" name="attr_has_faith" class="has-faith-check"/>
<input type="hidden" name="attr_has_luck_stars" class="has-luck-stars-check"/>
<span data-i18n="luck_use_per_game">Luck Use Per Game.</span><br/>
<span>( </span><span data-i18n="luck">Luck.</span><span>/ 10 </span><span class="has-faith"> +3 </span><span class="has-luck-stars"> +1 </span><span>)</span>
</div>
<div class="luck-input">
<input class="stat" type="number" name="attr_luck" value="25"/>
</div>
<div class="luck-max lozenge">
<input class="lozenge" type="number" name="attr_luck_uses_max" width="18" readonly/>
</div>
<div class="luck-current">
<input class="stat" type="number" name="attr_luck_uses"/>
</div>
<div class="luck-base-label luck-lower-label">
<span data-i18n="base_stat_perc">Base Stat %.</span>
</div>
<div class="luck-max-label luck-lower-label">
<span data-i18n="max">Max.</span>
</div>
<div class="luck-current-label luck-lower-label">
<span data-i18n="current">Current.</span>
</div>
</div>
<div class="sp-stats section">
<div class="sp-stats-ltl"></div>
<div class="sp-stats-lbl"></div>
<div class="sp-stats-banner banner"><span data-i18n="special_stats">Special Stats.</span></div>
<div class="sp-stats-ltr"></div>
<div class="sp-stats-lbr"></div>
<div class="armor-shield">
<div class="shield-label subheading"><span data-i18n="armor">Armor.</span></div>
<div class="shield-input-max notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="shield shield-max readonly-optional" type="number" name="attr_armor_max"/>
</div>
<div class="shield-input-max-label self-center shield-label">
<span data-i18n="max">Max.</span>
</div>
<div class="shield-input-current self-center">
<input class="shield shield-current" type="number" name="attr_armor" value="0"/>
</div>
<div class="shield-input-current-label self-center shield-label">
<span data-i18n="current">Current.</span>
</div>
</div>
<div class="armor-table">
<div class="armor-head">
<div class="armor-col-head-1 table-head"><span data-i18n="armor_piece">Armor Piece.</span></div>
<div class="armor-col-head-2 table-head-small"><span data-i18n="armor_points">Armor Points.</span></div>
<div class="armor-col-head-3 table-head">CP</div>
</div>
<div class="armor-row table-row">
<fieldset class="repeating_armor">
<input name="attr_armor_name" class="armor-name table-cell" type="text" size="15"/>
<input name="attr_armor_ap" class="armor-ap table-cell" type="number" size="5"/>
<input name="attr_armor_cp" class="armor-cp table-cell" type="number" size="5"/>
</fieldset>
</div>
<input type="hidden" name="attr_armor_cp_total"/>
</div>
<div class="build">
<div class="stat-labels build-labels">
<div data-i18n="build" class="subheading">Build.</div>
<div class="footing">
<span>(STR + FOR)</span>
<input type="hidden" name="attr_has_giant_genetics" class="has-giant-genetics-check"/>
<span class="has-giant-genetics"> + 50 </span>
</div>
</div>
<div class="build-input notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="build-lozenge readonly-optional" type="number" name="attr_build" width="18"/>
</div>
<div class="dc-input notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="dc-lozenge readonly-optional" type="number" name="attr_build_dc" width="18"/>
</div>
<div class="dc-input-label">
<span class="dc-input-label">DC</span><br/>
<span class="dc-input-label" data-i18n="modifier">Modifier.</span>
</div>
<div class="food food-req-label">
<span data-i18n="required_food">Required Food.</span><span>:</span>
</div>
<div class="food food-req">
<input class="food-req" type="number" name="attr_food_req" readonly/>
<span data-i18n="unit(s)">Unit(s).</span>
</div>
</div>
<div class="health">
<div class="stat-labels health-labels">
<div class="subheading"><span data-i18n="health_points" class="subheading">Health Points.</span></div>
<div class="footing"><span class="footing">(BUILD / 5)</span></div>
</div>
<div class="health-max notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="health-lozenge readonly-optional" type="number" name="attr_health_max"/>
</div>
<div class="health-current">
<input class="health-current" type="number" name="attr_health" value="0"/>
</div>
<div class="health-max-label self-center luck-lower-label">
<span data-i18n="max">Max.</span>
</div>
<div class="health-current-label self-center luck-lower-label">
<span data-i18n="current">Current.</span>
</div>
</div>
<div class="initiative">
<div class="stat-labels init-labels">
<div class="subheading">
<button value="&{template:maxapoc} {{init=[[@{init} &{tracker}]]}} {{title=@{selected|token_name}}}" type="roll" class="blank-roll-button">
<span data-i18n="initiative" class="subheading">Initiative.</span>
</button>
</div>
<div class="footing">
<input type="hidden" name="attr_has_instinctive" class="has-instinctive-check"/>
<span class="footing">(AGI + LUCK</span>
<span class="footing has-instinctive"> + INS</span>
<span class="footing">) / 10</span>
</div>
</div>
<div class="init notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="init-lozenge readonly-optional" type="number" name="attr_init" width="18"/>
</div>
<div class="init- init-5">
<input class="init- init-5" type="number" name="attr_init_5" readonly/>
</div>
<div class="init- init-10">
<input class="init- init-10" type="number" name="attr_init_10" readonly/>
</div>
<div class="init- init-15">
<input class="init- init-15" type="number" name="attr_init_15" readonly/>
</div>
<div class="init-5-l self-center">
<span class="half">-5</span>
</div>
<div class="init-10-l self-center">
<span class="half">-10</span>
</div>
<div class="init-15-l self-center">
<span class="half">-15</span>
</div>
<div class="init- init-temp">
<input class="init- init-temp" type="number" name="attr_init_temp"/>
</div>
<div class="init- init-temp-label">
<span data-i18n="temporary_modifier" class="footing">Temp. Modifier</span><span class="footing">:</span>
</div>
<div class="init-next">
<button value="&{template:maxapoc} {{message=^{next_comat_phase}}} {{profroll=[[5 &{tracker:-}]]}} {{title=@{selected|token_name}}}" type="roll" class="blank-roll-button">
<span data-i18n="next_phase">Next Phase.</span>
</button>
</div>
</div>
<div class="saves">
<div class="save-salvage special-stat">
<div class="stat-labels salvage-labels">
<div class="subheading">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{salvage}}} {{firstdegree1=[[@{salvage}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{salvage}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{salvage}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{salvage}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{salvage}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{salvage}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button">
<span data-i18n="salvage" class="subheading">Salvage.</span>
</button>
</div>
<div class="footing"><span class="footing">(INS + LUCK) / 2</span></div>
</div>
<div class="salvage-input notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="stat readonly-optional" type="number" name="attr_salvage"/>
</div>
<div class="half salvage-h"><input class="stat-half" type="number" name="attr_salvage_half" readonly/></div>
<div class="half salvage-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter salvage-q"><input class="stat-quarter" type="number" name="attr_salvage_quarter" readonly/></div>
<div class="quarter salvage-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
</div>
<div class="save-resilience special-stat">
<div class="stat-labels resilience-labels">
<div class="subheading">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{resilience}}} {{firstdegree1=[[@{resilience}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{resilience}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{resilience}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{resilience}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{resilience}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{resilience}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button">
<span data-i18n="resilience" class="subheading">Resilience.</span>
</button>
</div>
<div class="footing"><span class="footing">(STR + FORT) / 2</span></div>
</div>
<div class="resilience-input notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="stat readonly-optional" type="number" name="attr_resilience"/>
</div>
<div class="half resilience-h"><input class="stat-half" type="number" name="attr_resilience_half" readonly/></div>
<div class="half resilience-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter resilience-q"><input class="stat-quarter" type="number" name="attr_resilience_quarter" readonly/></div>
<div class="quarter resilience-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
</div>
<div class="save-resolve special-stat">
<div class="stat-labels resolve-labels">
<div class="subheading">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{resolve}}} {{firstdegree1=[[@{resolve}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{resolve}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{resolve}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{resolve}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{resolve}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{resolve}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button">
<span data-i18n="resolve" class="subheading">Resolve.</span>
</button>
</div>
<div class="footing"><span class="footing">(INT + INS) / 2</span></div>
</div>
<div class="resolve-input">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="stat readonly-optional" type="number" name="attr_resolve"/>
</div>
<div class="half resolve-h"><input class="stat-half" type="number" name="attr_resolve_half" readonly/></div>
<div class="half resolve-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter resolve-q"><input class="stat-quarter" type="number" name="attr_resolve_quarter" readonly/></div>
<div class="quarter resolve-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
</div>
<div class="save-immunity special-stat">
<div class="stat-labels immunity-labels">
<div class="subheading">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{immunity}}} {{firstdegree1=[[@{immunity}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{immunity}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{immunity}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{immunity}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{immunity}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{immunity}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button">
<span data-i18n="immunity" class="subheading">Immunity.</span>
</button>
</div>
<div class="footing"><span class="footing">(FOR + LUCK) / 2</span></div>
</div>
<div class="immunity-input notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input class="stat readonly-optional" type="number" name="attr_immunity"/>
</div>
<div class="half immunity-h"><input class="stat-half" type="number" name="attr_immunity_half" readonly/></div>
<div class="half immunity-h-label">1/2&nbsp;&nbsp;&nbsp;</div>
<div class="quarter immunity-q"><input class="stat-quarter" type="number" name="attr_immunity_quarter" readonly/></div>
<div class="quarter immunity-q-label">&nbsp;&nbsp;&nbsp;1/4</div>
</div>
</div>
</div>
<div class="defense section">
<div class="defense-banner banner"><span data-i18n="defensive_actions">Defensive Actions.</span></div>
<div class="defense-table">
<div class="defense-head">
<div class="defense-col-head-1 table-head"><span data-i18n="defensive_actions">Defense Actions.</span></div>
<div class="defense-col-head-2 table-head"><span data-i18n="threshold">Threshold.</span></div>
<div class="defense-col-head-3 table-head">1/2</div>
<div class="defense-col-head-4 table-head">1/4</div>
</div>
<div class="dodge-row defense-row table-row">
<div class="dodge-desc defense-desc table-cell">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{dodge}}} {{firstdegree1=[[@{dodge}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{dodge}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{dodge}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{dodge}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{dodge}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{dodge}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button defense-button">
<span data-i18n="dodge" class="subheading">Dodge.</span><br/>
<input type="hidden" name="attr_has_reflex" class="has-reflex-check"/>
<input type="hidden" name="attr_has_moving_target" class="has-moving-target-check"/>
<span class="footing">(AGI + INS) / 2 </span>
<span class="has-reflex footing"> +10 </span>
<span class="has-moving-target footing"> +5 </span>
</button>
</div>
<div class="dodge-threshold table-cell notallowed-optional">
<input type="hidden" name="attr_disabled_attrs" class="sheet-disable-calc"/>
<input name="attr_dodge" class="defense-threshold readonly-optional" type="number" />
</div>
<div class="dodge-threshold-h table-cell"><input name="attr_dodge_half" class="defense-threshold-h" type="number" readonly/></div>
<div class="dodge-threshold-q table-cell"><input name="attr_dodge_quarter" class="defense-threshold-q" type="number" readonly/></div>
</div>
<div class="full-dodge-row defense-row table-row">
<div class="full-dodge-desc defense-desc table-cell">
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{full_dodge}}} {{firstdegree1=[[@{full_dodge}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{full_dodge}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{full_dodge}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{full_dodge}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{full_dodge}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{full_dodge}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{selected|token_name}}} [[5 &{tracker:-}]]" type="roll" class="blank-roll-button defense-button">
<span data-i18n="full_dodge" class="subheading">Full Dodge.</span><br/>
<span class="footing">(DODGE + 1/2 STR) Init -5</span>
</button>
</div>
<div class="full-dodge-threshold table-cell"><input name="attr_full_dodge" class="defense-threshold" type="number" readonly/></div>
<div class="full-dodge-threshold-h table-cell"><input name="attr_full_dodge_half" class="defense-threshold-h" type="number" readonly/></div>
<div class="full-dodge-threshold-q table-cell"><input name="attr_full_dodge_quarter" class="defense-threshold-q" type="number" readonly/></div>
</div>
<div class="parry-row defense-row table-row">
<div class="parry-desc defense-desc table-cell defense-message">
<!--button value="@{api_use} &{template:maxapoc} {{subtitle=^{parry}}} {{firstdegree1=[[@{parry}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{parry}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{parry}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{parry}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{parry}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{parry}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button defense-button"-->
<span data-i18n="parry" class="defense-message">Parry.</span><br/>
<span class="defense-footing">(<span data-i18n="blades">Blades.</span>/<span data-i18n="brawl">Brawl.</span>/<span data-i18n="clubs">Clubs.</span>)</span>
<!--/button-->
</div>
<!--div class="parry-threshold table-cell"><input name="attr_parry" class="defense-threshold" type="number" readonly/></div>
<div class="parry-threshold-h table-cell"><input name="attr_parry_half" class="defense-threshold-h" type="number" readonly/></div>
<div class="parry-threshold-q table-cell"><input name="attr_parry_quarter" class="defense-threshold-q" type="number" readonly/></div-->
<div class="parry-message defense-message">
<span data-i18n="see_weapon_attacks" class="defense-message">See Weapon Attacks.</span>
</div>
</div>
<div class="riposte-row defense-row table-row">
<div class="riposte-desc defense-desc table-cell defense-message">
<!--button value="@{api_use} &{template:maxapoc} {{subtitle=^{riposte}}} {{firstdegree1=[[@{riposte}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{riposte}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{riposte}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{riposte}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{riposte}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{riposte}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{selected|token_name}}} [[3 &{tracker:-}]]" type="roll" class="blank-roll-button defense-button"-->
<span data-i18n="riposte" class="defense-message">Riposte.</span><br/>
<span class="defense-footing">(<span data-i18n="parry">Parry.</span>+<span data-i18n="attack">Attack.</span>) Init -3</span>
<!--/button-->
</div>
<!--div class="riposte-threshold table-cell"><input name="attr_riposte" class="defense-threshold" type="number" readonly/></div>
<div class="riposte-threshold-h table-cell"><input name="attr_riposte_half" class="defense-threshold-h" type="number" readonly/></div>
<div class="riposte-threshold-q table-cell"><input name="attr_riposte_quarter" class="defense-threshold-q" type="number" readonly/></div-->
<div class="riposte-message defense-message">
<span data-i18n="see_weapon_attacks" class="defense-message">See Weapon Attacks.</span>
</div>
</div>
</div>
</div>
<div class="attacks section">
<div class="attack-banner banner"><span data-i18n="weapon_attacks">Weapon Attacks.</span></div>
<div class="attack-table">
<div class="attack-head">
<div class="table-head attack-weapon"><span data-i18n="weapon">Weapon.</span></div>
<div class="table-head attack-skill"><span data-i18n="type">Type.</span></div>
<div class="table-head attack-dc">DC</div>
<div class="table-head attack-threshold"><span data-i18n="threshold">Threshold.</span></div>
<div class="table-head attack-threshold-h">1/2</div>
<div class="table-head attack-threshold-q">1/4</div>
<div class="table-head attack-ammo"><span data-i18n="ammo">Ammo.</span></div>
<div class="table-head attack-traits"><span data-i18n="traits">Traits.</span></div>
<div class="table-head attack-cp">CP</div>
<div class="table-head attack-roll">
<span data-i18n="attack" class="subheading">Attack.</span>
</div>
<div class="table-head parry-roll">
<span data-i18n="parry" class="subheading">Parry.</span>
</div>
<div class="table-head riposte-roll">
<span data-i18n="riposte" class="subheading">Riposte.</span><br/>
<span class="footing">Init -3</span>
</div>
</div>
<div class="attack-row-brawl table-row">
<input class="attack-cell attack-weapon table-cell" data-i18n="unarmed" value="Unarmed." name="attr_brawl_skill" readonly/>
<input class="attack-cell attack-skill table-cell brawl" data-i18n="brawl" value="Brawl." name="attr_brawl_weapon" readonly/>
<select name="attr_brawl_dc" class="attack-cell attack-dc table-cell">
<option value="0"></option>
<option title="Light (1d4)." data-i18n-title="light" value="1d4">L</option>
<option title="Average (2d4)." data-i18n-title="average" value="2d4">A</option>
<option title="Heavy (1d6+3)." data-i18n-title="heavy" value="1d6+3">H</option>
<option title="Massive (2d6+3)." data-i18n-title="massive" value="2d6+3">M</option>
<option title="Extreme (1d8+7)." data-i18n-title="extreme" value="1d8+7">E</option>
<option title="Devastating (2d8+7)." data-i18n-title="devastating" value="2d8+7">D</option>
<option title="Ferocious (1d10+11)." data-i18n-title="ferocious" value="1d10+11">F</option>
<option title="Ruinous (2d10+11)" data-i18n-title="ruinous" value="2d10+11">R</option>
<option title="Ruinous + Light (2d10+1d4+11)." data-i18n-title="ruinous_light" value="2d10+1d4+11">R+L</option>
<option title="Ruinous + Average (2d10+2d4+11)." data-i18n-title="ruinous_average" value="2d10+2d4+11">R+A</option>
<option title="Ruinous + Heavy (2d10+1d6+14)." data-i18n-title="ruinous_heavy" value="2d10+1d6+14">R+H</option>
<option title="Ruinous + Massive (2d10+2d6+14)." data-i18n-title="ruinous_massive" value="2d10+2d6+14">R+M</option>
<option title="Ruinous + Extreme (2d10+1d8+18)." data-i18n-title="ruinous_extreme" value="2d10+1d8+18">R+E</option>
<option title="Ruinous + Devastating (2d10+2d8+18)." data-i18n-title="ruinous_devastating" value="2d10+2d8+18">R+D</option>
<option title="Ruinous + Ferocious (3d10+22)." data-i18n-title="ruinous_ferocious" value="3d10+22">R+F</option>
<option title="Ruinous + Ruinous (4d10+22)." data-i18n-title="ruinous_ruinous" value="4d10+22">R+R</option>
</select>
<input name="attr_brawl" class="attack-threshold table-cell" type="number" readonly/>
<input name="attr_brawl_half" class="attack-threshold-h table-cell" type="number" readonly/>
<input name="attr_brawl_quarter" class="attack-threshold-q table-cell" type="number" readonly/>
<input name="attr_brawl_ammo" class="attack-ammo table-cell" type="text" value="n/a" readonly/>
<input name="attr_brawl_traits" class="attack-traits table-cell" type="text"/>
<input name="attr_brawl_cp" class="attack-cp table-cell" type="text" value="n/a" readonly/>
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{brawl}}} {{firstdegree1=[[@{brawl}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{brawl}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{brawl}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{brawl}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}} {{dmgroll=[[@{brawl_dc}]]}} {{dmgqueryroll=[[@{dmg_query}]]}}" type="roll" class="blank-roll-button attack-roll">
<span data-i18n="attack">Attack.</span>
</button>
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{parry}: ^{brawl}}} {{firstdegree1=[[@{brawl}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{brawl}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{brawl}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{brawl}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button parry-roll">
<span data-i18n="parry">Parry.</span>
</button>
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{riposte}: ^{brawl}}} {{firstdegree1=[[@{brawl}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{brawl}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{brawl}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{brawl}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{brawl}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{selected|token_name}}} {{dmgroll=[[@{brawl_dc}]]}} {{dmgqueryroll=[[@{dmg_query}]]}} [[3 &{tracker:-}]]" type="roll" class="blank-roll-button riposte-roll">
<span data-i18n="riposte">Riposte.</span>
</button>
</div>
<div class="attack-row table-row">
<fieldset class="repeating_attack">
<input name="attr_attack_weapon" class="attack-cell attack-weapon table-cell" type="text"/>
<select name="attr_attack_skill" class="attack-cell attack-skill table-cell" data-i18n-list="attack-skills">
<option value=""></option>
<option value="archery" data-i18n="archery" data-i18n-list-item="archery">Archery.</option>
<option value="blades" data-i18n="blades" data-i18n-list-item="blades">Blades.</option>
<option value="brawl" data-i18n="brawl" data-i18n-list-item="brawl">Brawl.</option>
<option value="bs_thresh" data-i18n-list-item="bs">BS</option>
<option value="clubs" data-i18n="clubs" data-i18n-list-item="clubs">Clubs.</option>
<option value="firearms" data-i18n="firearms" data-i18n-list-item="firearms">Firearms.</option>
<option value="fs_thresh" data-i18n-list-item="fs">FS</option>
<option value="heavyweapons" data-i18n="heavy_weapons" data-i18n-list-item="heavy_weapons">Heavy Weapns.</option>
<option value="throwing" data-i18n="throw" data-i18n-list-item="throw">Throw.</option>
<option value="wrangle" data-i18n="wrangle" data-i18n-list-item="wrangle">Wrangle.</option>
</select>
<select name="attr_attack_dc" class="attack-cell attack-dc table-cell shortened-select">
<option value="0"></option>
<option title="Light (1d4)." data-i18n-title="light" value="1d4">L</option>
<option title="Average (2d4)." data-i18n-title="average" value="2d4">A</option>
<option title="Heavy (1d6+3)." data-i18n-title="heavy" value="1d6+3">H</option>
<option title="Massive (2d6+3)." data-i18n-title="massive" value="2d6+3">M</option>
<option title="Extreme (1d8+7)." data-i18n-title="extreme" value="1d8+7">E</option>
<option title="Devastating (2d8+7)." data-i18n-title="devastating" value="2d8+7">D</option>
<option title="Ferocious (1d10+11)." data-i18n-title="ferocious" value="1d10+11">F</option>
<option title="Ruinous (2d10+11)" data-i18n-title="ruinous" value="2d10+11">R</option>
<option title="Ruinous + Light (2d10+1d4+11)." data-i18n-title="ruinous_light" value="2d10+1d4+11">R+L</option>
<option title="Ruinous + Average (2d10+2d4+11)." data-i18n-title="ruinous_average" value="2d10+2d4+11">R+A</option>
<option title="Ruinous + Heavy (2d10+1d6+14)." data-i18n-title="ruinous_heavy" value="2d10+1d6+14">R+H</option>
<option title="Ruinous + Massive (2d10+2d6+14)." data-i18n-title="ruinous_massive" value="2d10+2d6+14">R+M</option>
<option title="Ruinous + Extreme (2d10+1d8+18)." data-i18n-title="ruinous_extreme" value="2d10+1d8+18">R+E</option>
<option title="Ruinous + Devastating (2d10+2d8+18)." data-i18n-title="ruinous_devastating" value="2d10+2d8+18">R+D</option>
<option title="Ruinous + Ferocious (3d10+22)." data-i18n-title="ruinous_ferocious" value="3d10+22">R+F</option>
<option title="Ruinous + Ruinous (4d10+22)." data-i18n-title="ruinous_ruinous" value="4d10+22">R+R</option>
</select>
<input name="attr_attack_threshold" class="attack-cell attack-threshold table-cell" type="number"/>
<input name="attr_attack_threshold_half" class="attack-cell attack-threshold-h table-cell" type="number"/>
<input name="attr_attack_threshold_quarter" class="attack-cell attack-threshold-q table-cell" type="number"/>
<input name="attr_attack_ammo" class="attack-cell attack-ammo table-cell" type="number"/>
<input name="attr_attack_traits" class="attack-cell attack-traits table-cell" type="text"/>
<input name="attr_attack_unreliable" type="hidden" value="0"/>
<input name="attr_attack_cp" class="attack-cell attack-cp table-cell" type="number"/>
<input name="attr_attack_id" type="hidden"/>
<button value="@{api_use} &{template:maxapoc} {{unreliable=[[@{attack_unreliable}]]}} {{subtitle=@{attack_weapon}}} {{firstdegree1=[[@{attack_threshold}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{attack_threshold}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{attack_threshold}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{attack_threshold}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{attack_threshold}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{attack_threshold}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}} {{dmgroll=[[@{attack_dc}]]}} {{dmgqueryroll=[[@{dmg_query}]]}}" type="roll" class="blank-roll-button attack-roll">
<span data-i18n="attack">Attack.</span>
</button>
<input type="hidden" name="attr_attack_defense" class="attack-defense-check" value="0"/>
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{parry}: @{attack_weapon}}} {{firstdegree1=[[@{attack_threshold}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{attack_threshold}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{attack_threshold}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{attack_threshold}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{attack_threshold}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{attack_threshold}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button parry-roll defense-roll">
<span data-i18n="parry">Parry.</span>
</button>
<button value="@{api_use} &{template:maxapoc} {{subtitle=^{riposte}: @{attack_weapon}}} {{firstdegree1=[[@{attack_threshold}+@{roll_thresh_mod}+1]]}} {{firstdegree=[[@{attack_threshold}+@{roll_thresh_mod}]]}} {{seconddegree1=[[floor((@{attack_threshold}+@{roll_thresh_mod})/2)+1]]}} {{seconddegree=[[floor((@{attack_threshold}+@{roll_thresh_mod})/2)]]}} {{thirddegree1=[[floor((@{attack_threshold}+@{roll_thresh_mod})/4)+1]]}} {{thirddegree=[[floor((@{attack_threshold}+@{roll_thresh_mod})/4)]]}} {{profroll=[[@{roll_perc}]]}} {{mod=[[@{mod_query}]]}} {{absmod=[[abs(@{mod_query})]]}} {{title=@{selected|token_name}}} {{dmgroll=[[@{attack_dc}]]}} {{dmgqueryroll=[[@{dmg_query}]]}} [[3 &{tracker:-}]]" type="roll" class="blank-roll-button riposte-roll defense-roll">
<span data-i18n="riposte">Riposte.</span>
</button>
<!--button value="@{api_use} &{template:maxapoc} {{subtitle=@{attack_weapon}}} {{dmgroll=[[@{attack_dc}]]}} {{title=@{character_name}}}" type="roll" class="blank-roll-button damage-roll">
<span data-i18n="damage">Damage.</span>
</button-->
</fieldset>
</div>
<input type="hidden" name="attr_attack_cp_total"/>
</div>
</div>
<div class="gear section">
<div class="gear-banner banner"><span data-i18n="gear_inventory">Gear Inventory.</span></div>
<div class="gear-table">
<div class="gear-head">
<div class="gear-col-head-1 table-head gear-item"><span data-i18n="item">Item.</span></div>
<div class="gear-col-head-2 table-head gear-characteristic-expand expand-colum-header">+</div>
<div class="gear-col-head-3 table-head gear-characteristic"><span data-i18n="characteristic">Characteristic.</span></div>
<div class="gear-col-head-8 table-head gear-cp">CP</div>
</div>
<div class="gear-row table-row">
<fieldset class="repeating_gear">
<input name="attr_gear_item" class="gear-item table-cell" type="text"/>
<input name="attr_gear_characteristic_expanded" type="checkbox" class="ability-effect-expand"/>
<input name="attr_gear_characteristic_expanded" type="hidden" class="textarea-expand" value="0"/>
<textarea name="attr_gear_characteristic" class="gear-characteristic table-cell textarea-collapsed" rows="1"></textarea>
<textarea name="attr_gear_characteristic" class="gear-characteristic table-cell textarea-expanded" rows="6"></textarea>
<input name="attr_gear_cp" class="gear-cp table-cell" type="number"/>
</fieldset>
</div>
<input type="hidden" name="attr_gear_cp_total"/>
</div>
</div>
<div class="abilities">
<div class="abilities-banner banner"><span data-i18n="special_abilities">Special Abilities.</span></div>
<div class="abilities-table">
<div class="abilities-head">
<div class="table-head table-cell ability-source"><span data-i18n="source" class="ability-head-text">Source.</span></div>
<div class="table-head table-cell ability-name"><span data-i18n="ability_name" class="ability-head-text">Ability Name.</span></div>
<div class="table-head table-cell ability-effect-expand expand-colum-header">+</div>
<div class="table-head table-cell ability-effect"><span data-i18n="effect" class="ability-head-text">Effect.</span></div>
</div>
<div class="abilities-row table-row">
<fieldset class="repeating_abilities">
<input name="attr_ability_source" class="ability-source table-cell" type="text"/>
<input name="attr_ability_name" class="ability-name table-cell" type="text"/>
<input name="attr_ability_effect_expanded" type="checkbox" class="ability-effect-expand"/>
<input name="attr_ability_effect_expanded" type="hidden" class="textarea-expand" value="0"/>
<textarea name="attr_ability_effect" class="ability-effect table-cell textarea-collapsed" rows="1"></textarea>
<textarea name="attr_ability_effect" class="ability-effect table-cell textarea-expanded" rows="6"></textarea>
</fieldset>
</div>
</div>
</div>
<div class="cp section">
<div class="cp-banner banner"><span data-i18n="current">Current.</span><br/>CP</div>
<div class="cp-inferior cp-box"><input name="attr_cp_inferior" class="cp-input" type="number" autocomplete="chrome-off"/></div>
<div class="cp-inferior-label cp-label"><span data-i18n="inferior_cp">Inferior CP.</span></div>
<div class="cp-cp cp-box"><input name="attr_cp" class="cp-input" type="number" autocomplete="chrome-off"/></div>
<div class="cp-cp-label cp-label">CP</div>
<div class="cp-superior cp-box"><input name="attr_cp_superior" class="cp-input" type="number" autocomplete="chrome-off"/></div>
<div class="cp-superior-label cp-label"><span data-i18n="superior_cp">Superior CP.</span></div>
<div class="cp-cx cp-box"><input name="attr_cx" class="cp-input" type="number" autocomplete="chrome-off"/></div>
<div class="cp-cp-label cp-label">CX</div>
<input type="hidden" name="attr_cp_total"/>
</div>
<div class="cp-costs section">
<span data-i18n="cp_costs">CP Costs.</span><br/>
<span data-i18n="heal">Heal.</span> = <span data-i18n="one_per_4_hp">1 per 4 HP.</span><br/>
<span data-i18n="repair">Repair.</span> = <span data-i18n="one_per_4_cp">1 per 4 CP.</span><br/>
<span data-i18n="armor">Armor.</span> = <span data-i18n="three_per_armor_point">3 per Armor pt.</span>
</div>
<div class="resolve-infection section">
<div class="resolve-table">
<div class="resolve-banner-text banner">
<span data-i18n="resolve_dmg">Resolve DMG.</span>
</div>
<div class="resolve-banner-status">
<input class="resolve-status" type="checkbox" checked disabled/>
</div>
<div class="unnerved-desc resolve-desc">
<span data-i18n="unnerved" class="subheading">Unnerved.</span><br/>
<span class="footing">(<span data-i18n="disadvantage_on_rolls">Disadv. on rolls.</span>)</span>
</div>
<div class="unnerved-status resolve-status"><input name="attr_unnerved" class="unnerved-status resolve-status" type="checkbox"/></div>
<div class="shaken-desc resolve-desc">
<span data-i18n="shaken" class="subheading">Shaken.</span><br/>
<span class="footing">(<span data-i18n="-3_initiative">-3 initiative.</span>)</span>
</div>
<div class="shaken-status resolve-status"><input name="attr_shaken" class="shaken-status resolve-status" type="checkbox"/></div>
<div class="insanity-desc resolve-desc">
<span data-i18n="insanity_condition" class="insanity-desc subheading">Insanity Condition.</span>
</div>
<div class="insanity-status resolve-status"><input name="attr_insanity" class="insanity-status resolve-status" type="checkbox"/></div>
</div>
<div class="infection-table">
<div class="infection-banner banner">
<span data-i18n="infection">Infection.</span>
</div>
<div class="infection-no infection-col-head-1 table-head"><span data-i18n="stage">Stage.</span></div>
<div class="infection-desc infection-col-head-2 table-head"><span data-i18n="infection">Infection.</span></div>
<div class="infection-status infection-col-head-3 table-head"><input class="infection-status" type="checkbox" checked disabled/></div>
<div class="infection-no incubation-no">1</div>
<div class="infection-desc incubation-desc"><span data-i18n="incubation" class="subheading">Incubation.</span></div>
<div class="infection-status incubation-status"><input name="attr_incubation" class="infection-status incubation-status" type="checkbox"/></div>
<div class="infection-no gestation-no">2</div>
<div class="infection-desc gestation-desc"><span data-i18n="gestation" class="subheading">Gestation.</span></div>
<div class="infection-status gestation-status"><input name="attr_gestation" class="infection-status gestation-status" type="checkbox"/></div>
<div class="infection-no symptomatic-no">3</div>
<div class="infection-desc symptomatic-desc"><span data-i18n="symptomatic" class="subheading">Symptomatic.</span></div>
<div class="infection-status symptomatic-status"><input name="attr_symptomatic" class="infection-status symptomatic-status" type="checkbox"/></div>
<div class="infection-no prodromal-no">4</div>
<div class="infection-desc prodromal-desc"><span data-i18n="prodromal" class="subheading">Prodromal.</span></div>
<div class="infection-status prodromal-status"><input name="attr_prodromal" class="infection-status prodromal-status" type="checkbox"/></div>
<div class="infection-no acute-no">5</div>
<div class="infection-desc acute-desc"><span data-i18n="acute" class="subheading">Acute.</span></div>
<div class="infection-status acute-status"><input name="attr_acute" class="infection-status acute-status" type="checkbox"/></div>
<div class="infection-no transformdie-no">6</div>
<div class="infection-desc transformdie-desc"><span data-i18n="transform_die" class="subheading">Transform/Die.</span></div>
<div class="infection-status transformdie-status"><input name="attr_transformdie" class="infection-status transformdie-status" type="checkbox"/></div>
</div>
</div>
<div class="hunger section">
<div class="hunger-banner banner"><span data-i18n="hunger" class="banner">Hunger.</span></div>
<input type="hidden" name="attr_starving_threshold"/>
<input type="hidden" name="attr_starving" class="starving-check"/>
<input type="hidden" name="attr_has_collar" class="has-collar-check"/>
<div class="starving hunger-desc-left table-head-small">
<span>1/4 FOR</span>
<input type="hidden" name="attr_has_tightening_the_belt" class="tightening-the-belt-check"/>
<span class="tightening-the-belt"> +4 </span>
<span> = </span>
</div>
<div class="starving has-collar hunger-desc-left table-head-small">
<span data-i18n="na">N/A</span> (<span data-i18n="collar">Collar</span>)
<span> = </span>
</div>
<div class="starving hunger-desc-right table-head-small"><span data-i18n="starving">Starving.</span></div>
<input type="hidden" name="attr_emaciated_threshold"/>
<input type="hidden" name="attr_emaciated" class="emaciated-check"/>
<div class="emaciated hunger-desc-left table-head-small">
<span>1/2 FOR </span>
<input type="hidden" name="attr_has_tightening_the_belt" class="tightening-the-belt-check"/>
<span class="tightening-the-belt"> +8 </span>
<span> = </span>
</div>
<div class="emaciated has-collar hunger-desc-left table-head-small">
<span data-i18n="na">N/A</span> (<span data-i18n="collar">Collar</span>)
<span> = </span>
</div>
<div class="emaciated hunger-desc-right table-head-small"><span data-i18n="emaciated">Emaciated.</span></div>
<input type="hidden" name="attr_dead" class="dead-check"/>
<div class="dead hunger-desc-left table-head-small">FOR = </div>
<div class="dead hunger-desc-right table-head-small"><span data-i18n="dead">Dead.</span></div>
<div class="hunger-input"><input name="attr_hunger" class="hunger-input prof" type="number" value="0"/></div>
</div>
<div class="build-repair section">
<div class="build-banner banner"><span data-i18n="build_repair">Build / Repair.</span></div>
<div class="head desc table-head"><span data-i18n="repair_skill">Repair Skill.</span></div>
<div class="head build-prof table-head">P</div>
<div class="head build-threshold table-head-small"><span data-i18n="threshold">Threshold.</span></div>
<div class="head build-threshold-h table-head">1/2</div>
<div class="head build-threshold-q table-head">1/4</div>
<div class="crafting desc"><span data-i18n="crafting" class="subheading">Crafting.</span></div>
<div class="crafting build-prof"><input name="attr_crafting_prof" class="build-prof fill" type="text" readonly/></div>
<div class="crafting build-threshold"><input name="attr_crafting" class="fill" type="number" readonly/></div>
<div class="crafting build-threshold-h"><input name="attr_crafting_half" class="fill" type="number" readonly/></div>
<div class="crafting build-threshold-q"><input name="attr_crafting_quarter" class="fill" type="number" readonly/></div>
<div class="mechanics desc"><span data-i18n="mechanics" class="subheading">Mechanics.</span></div>
<div class="mechanics build-prof"><input name="attr_mechanics_prof" class="build-prof fill" type="text" readonly/></div>
<div class="mechanics build-threshold"><input name="attr_mechanics" class="fill" type="number" readonly/></div>
<div class="mechanics build-threshold-h"><input name="attr_mechanics_half" class="fill" type="number" readonly/></div>
<div class="mechanics build-threshold-q"><input name="attr_mechanics_quarter" class="fill" type="number" readonly/></div>
<div class="science desc"><span data-i18n="science" class="subheading">Science.</span></div>
<div class="science build-prof"><input name="attr_science_prof" class="build-prof fill" type="text" readonly/></div>
<div class="science build-threshold"><input name="attr_science" class="fill" type="number" readonly/></div>
<div class="science build-threshold-h"><input name="attr_science_half" class="fill" type="number" readonly/></div>
<div class="science build-threshold-q"><input name="attr_science_quarter" class="fill" type="number" readonly/></div>
<div class="medicine desc"><span data-i18n="medicine" class="subheading">Medicine.</span></div>
<div class="medicine build-prof"><input name="attr_medicine_prof" class="build-prof fill" type="text" readonly/></div>
<div class="medicine build-threshold"><input name="attr_medicine" class="fill" type="number" readonly/></div>
<div class="medicine build-threshold-h"><input name="attr_medicine_half" class="fill" type="number" readonly/></div>
<div class="medicine build-threshold-q"><input name="attr_medicine_quarter" class="fill" type="number" readonly/></div>
</div>
<div class="encum-table section">
<div class="encum-banner banner"><span data-i18n="encumbrance">Encumbrance.</span></div>
<div class="encum-head table-head">
-1 <span data-i18n="initiative">initiative.</span>,
<span data-i18n="disadvantage_on_dodge">Disadv. on Dodge.</span>,
1/2 <span data-i18n="move">Move.</span>
</div>
<div class="encum max-label subheading">( 200 + <span data-i18n="build">Build.</span>) CP</div>
<div class="encum current-label subheading"><span data-i18n="current">Current.</span></div>
<div class="encum exceeded-label subheading"><span data-i18n="yes">Y.</span>?</div>
<div class="encum max"><input name="attr_encum_max" class="fill" type="number" readonly/></div>
<div class="encum current"><input name="attr_encum" class="build-prof fill" type="number" readonly/></div>
<div class="encum exceeded"><input name="attr_encumbered" class="fill" type="checkbox" readonly/></div>
</div>
<div class="experience">
<div class="experience-banner"><span data-i18n="experience">Experience.</span></div>
<div class="experience-unused-label table-head"><span data-i18n="unused_xp">Unused XP.</span></div>
<div class="experience-total-label table-head"><span data-i18n="total_xp">Total XP.</span></div>
<div class="experience-unused cp-box"><input name="attr_xp_unused" class="cp-input" type="number" autocomplete="chrome-off"/></div>
<div class="experience-total cp-box"><input name="attr_xp_total" class="cp-input" type="number" autocomplete="chrome-off"/></div>
</div>
</div>
<!-- dummy spans so they are included in the generated translation file -->
<span style="display: none" data-i18n="modifiers">Modifiers</span>
<span style="display: none" data-i18n="none">None</span>
<span style="display: none" data-i18n="1_advantage">1 Advantage</span>
<span style="display: none" data-i18n="1_disadvantage">1 Disadvantage</span>
<span style="display: none" data-i18n="2_advantages">2 Advantages</span>
<span style="display: none" data-i18n="2_disadvantages">2 Disadvantages</span>
<span style="display: none" data-i18n="3_advantages">3 Advantages</span>
<span style="display: none" data-i18n="3_disadvantages">3 Disadvantages</span>
<span style="display: none" data-i18n="damage_code">Damage Code</span>
<span style="display: none" data-i18n="light">Light</span>
<span style="display: none" data-i18n="average">Average</span>
<span style="display: none" data-i18n="heavy">Heavy</span>
<span style="display: none" data-i18n="massive">Massive</span>
<span style="display: none" data-i18n="extreme">Extreme</span>
<span style="display: none" data-i18n="devastating">Devastating</span>
<span style="display: none" data-i18n="ferocious">Ferocious</span>
<span style="display: none" data-i18n="ruinous">Ruinous</span>
<span style="display: none" data-i18n="ruinous_light">Ruinous + Light</span>
<span style="display: none" data-i18n="ruinous_average">Ruinous + Average</span>
<span style="display: none" data-i18n="ruinous_heavy">Ruinous + Heavy</span>
<span style="display: none" data-i18n="ruinous_massive">Ruinous + Massive</span>
<span style="display: none" data-i18n="ruinous_extreme">Ruinous + Extreme</span>
<span style="display: none" data-i18n="ruinous_devastating">Ruinous + Devastating</span>
<span style="display: none" data-i18n="ruinous_ferocious">Ruinous + Ferocious</span>
<span style="display: none" data-i18n="ruinous_ruinous">Ruinous + Ruinous</span>
<input type="hidden" name="disabled_attrs" value=""/>
<script type="text/worker">
/*
* START: TRANSLATED ROLL QUERIES
*/
const prof_mod_labels = [];
prof_mod_labels[prof_mod_labels.length] = {key: 'none', name: 'None', value: '0'};
prof_mod_labels[prof_mod_labels.length] = {key: '1_advantage', name: '1 Advantage.', value: '1'};
prof_mod_labels[prof_mod_labels.length] = {key: '1_disadvantage', name: '1 Disadvantage.', value: '-1'};
prof_mod_labels[prof_mod_labels.length] = {key: '2_advantages', name: '2 Advantages.', value: '2'};
prof_mod_labels[prof_mod_labels.length] = {key: '2_disadvantages', name: '2 Disadvantages.', value: '-2'};
prof_mod_labels[prof_mod_labels.length] = {key: '3_advantages', name: '3 Advantages.', value: '3'};
prof_mod_labels[prof_mod_labels.length] = {key: '3_disadvantages', name: '3 Disadvantages.', value: '-3'};
const dmg_codes = [];
dmg_codes[dmg_codes.length] = {key: 'light', roll:"1d4", code:'L', name:'Light.'};
dmg_codes[dmg_codes.length] = {key: 'average', roll:"2d4", code:'A', name:'Average.'};
dmg_codes[dmg_codes.length] = {key: 'heavy', roll:"1d6+3", code:'H', name:'Heavy.'};
dmg_codes[dmg_codes.length] = {key: 'massive', roll:"2d6+3", code:'M', name:'Massive.'};
dmg_codes[dmg_codes.length] = {key: 'extreme', roll:"1d8+7", code:'E', name:'Extreme.'};
dmg_codes[dmg_codes.length] = {key: 'devastating', roll:"2d8+7", code:'D', name:'Devastating.'};
dmg_codes[dmg_codes.length] = {key: 'ferocious', roll:"1d10+11", code:'F', name:'Ferocious.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous', roll:"2d10+11", code:'R', name:'Ruinous.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_light', roll:"2d10+1d4+11", code:'R+L', name:'Ruinous + Light.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_average', roll:"2d10+2d4+11", code:'R+A', name:'Ruinous + Average.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_heavy', roll:"2d10+1d6+14", code:'R+H', name:'Ruinous + Heavy.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_massive', roll:"2d10+2d6+14", code:'R+M', name:'Ruinous + Massive.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_extreme', roll:"2d10+1d8+18", code:'R+E', name:'Ruinous + Extreme.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_devastating', roll:"2d10+2d8+18", code:'R+D', name:'Ruinous + Devastating.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_ferocious', roll:"3d10+22", code:'R+F', name:'Ruinous + Ferocious.'};
dmg_codes[dmg_codes.length] = {key: 'ruinous_ruinous', roll:"4d10+22", code:'R+R', name:'Ruinous + Ruinous.'};
on("sheet:opened", function(eventInfo)
{
// concatenate modifiers roll query
var modQuery = "?{";
var modQueryLabel = getTranslationByKey("modifiers");
if (!modQueryLabel) modQueryLabel = "Modifiers."
modQuery += modQueryLabel;
for(var i=0;i<prof_mod_labels.length;i++)
{
let mod = prof_mod_labels[i];
let translation = getTranslationByKey(mod.key);
if(!translation) translation = mod.name;
//console.log('prof_mod_translation: ' + translation);
modQuery += "|" + translation + "," + mod.value;
}
modQuery += "}";
// Brawl translation
var brawlSkillName = getTranslationByKey("unarmed");
if (!brawlSkillName) brawlSkillName = "Unarmed.";
var brawlWeaponName = getTranslationByKey("brawl");
if (!brawlWeaponName) brawlWeaponName = "Brawl.";
// console output
console.log('modQuery: ' + modQuery);
console.log('brawlSkillName: ' + brawlSkillName);
console.log('brawlWeaponName: ' + brawlWeaponName);
// update translated roll queries
setAttrs({
mod_query: modQuery,
brawl_skill: brawlSkillName,
brawl_weapon: brawlWeaponName
});
});
on("change:prompt_dmg", function(eventInfo)
{
var dmgQuery = "0";
if(eventInfo.newValue === 'on')
{
// ?{Damage Code|1d4|2d4|1d6+3|2d6+3|1d8+7|2d8+7|1d10+11|2d10+11|2d10+1d4+11|2d10+2d4+11|2d10+1d6+14|2d10+2d6+14|2d10+1d8+18|2d10+2d8+18|3d10+22|4d10+220}
// concatenate damage code roll query
dmgQuery = "?{";
var dmgQueryLabel = getTranslationByKey("damage_code");
if (!dmgQueryLabel) dmgQueryLabel = "Damage Code."
dmgQuery += dmgQueryLabel;
for(var i=0;i<dmg_codes.length;i++)
{
let dmg = dmg_codes[i];
let translation = getTranslationByKey(dmg.key);
if(!translation) translation = dmg.name;
dmgQuery += "|" + translation + "," + dmg.roll;
}
dmgQuery += "}";
}
// console output
console.log('dmgQuery: ' + dmgQuery);
// update translated roll query
setAttrs({
dmg_query: dmgQuery
});
});
/*
* END: TRANSLATED ROLL QUERIES
*/
/*
* START: SUPPORT DISABLE ATTRIBUTE CALCULATION
*/
const BASE_ATTRS = ['str', 'for', 'agi', 'int', 'ins', 'cha', 'fs', 'bs', 'luck'];
const csvToIndexedObject = function(csv)
{
var retVal = {};
var arr = csv ? csv.split(',') : [];
_.each(arr, function(arrValue)
{
retVal[arrValue.trim()] = true;
});
return retVal;
};
// SET GLOBAL VAR ON SHEET OPEN AND WHEN CHECKBOX CHANGED
on("change:disabled_attrs", function(eventInfo)
{
if(eventInfo.newValue === '0')
{
console.log('toggle disabled_attrs re-enabling...');
// update disabled_attrs & trigger re-calculation (prefix all base attrs with zero & then set back)
getAttrs(BASE_ATTRS, function(values)
{
var correctValues = {};
var triggerValues = {};
_.each(values, function(value, attr)
{
correctValues[attr] = parseInt(value) || value;
triggerValues[attr] = "0" + value;
});
console.log('toggle disabled_attrs trigger calc:' + JSON.stringify(triggerValues));
console.log('toggle disabled_attrs reset calc:' + JSON.stringify(correctValues));
setAttrs(triggerValues, '', function()
{
console.log('toggle disabled_attrs re-calc complete. Triggering reset.');
// recalc armor
repeatingSum("armor_max","armor","armor_ap");
// recalc from base attr
setAttrs(correctValues, '', function() {
console.log('toggle disabled_attrs re-set complete.');
});
});
});
}
});
/*
* END: DISABLE ATTRIBUTE CALCULATION
*/
/* ======================================================
BEGIN MULTIVERSAL SHEET WORKER GENERATOR
======================================================
Use this script to build sheet workers automatically.
Place this section in your script block, preferably at the end.
Fill the two data objects, multistats and multifunctions, with your details.
VERSION 1.
READMORE: https://app.roll20.net/forum/permalink/7664925/
======================================================*/
/*
* START OF MULTIVERSAL SHEET LOGIC
*/
const multistats = {
luck_uses_max: {rule: 'luck_uses', attributes: ['luck', 'has_faith', "has_luck_stars"], modifier: 10},
contort: {rule: 'contort', attributes: ['agi', 'build_dc']},
lift: {rule: 'sum', attributes: ['str']},
pry: {rule: 'sum', attributes: ['str']},
remember: {rule: 'sum', attributes: ['int']},
throwing: {rule: 'sum', attributes: ['agi']},
build: {rule: 'build', attributes: ['str', 'for', 'has_giant_genetics'], modifier: 1},
build_dc: {rule: 'build_dc', attributes: ['build']},
food_req: {rule: 'food_req', attributes: ['build_dc']},
health_max: {rule: 'special_stat', attributes: ['build'], modifier: 5},
starving: {rule: 'hungry', attributes: ['hunger', 'starving_threshold']},
starving_threshold: {rule: 'hunger_threshold', attributes: ['for_quarter', 'has_tightening_the_belt', 'has_collar'], modifier: 4},
emaciated: {rule: 'hungry', attributes: ['hunger', 'emaciated_threshold']},
emaciated_threshold: {rule: 'hunger_threshold', attributes: ['for_half', 'has_tightening_the_belt', 'has_collar'], modifier: 8},
dead: {rule: 'greater_than_or_equal', attributes: ['hunger', 'for']},
init: {rule: 'init', values: -1, attributes: ['agi', 'luck', 'init_temp', 'encumbered', 'shaken', 'acute', 'starving', 'emaciated', 'has_moving_target', 'has_instinctive', 'ins'], modifier: 10},
init_5: {rule: 'add', attributes: ['init'], modifier: -5},
init_10: {rule: 'add', attributes: ['init'], modifier: -10},
init_15: {rule: 'add', attributes: ['init'], modifier: -15},
salvage: {rule: 'special_stat', attributes: ['ins', 'luck'], modifier: 2},
resilience: {rule: 'special_stat', attributes: ['str', 'for'], modifier: 2},
resolve: {rule: 'special_stat', attributes: ['int', 'ins'], modifier: 2},
immunity: {rule: 'special_stat', attributes: ['for', 'luck'], modifier: 2},
dodge: {rule: 'dodge', attributes: ['agi', 'ins', 'has_reflex', 'has_moving_target'], modifier: 2},
full_dodge: {rule: 'full_dodge', attributes: ['dodge', 'str']},
parry: {rule: 'max', attributes: ['blades', 'brawl', 'clubs']},
riposte: {rule: 'max', attributes: ['blades', 'brawl', 'clubs']},
encum_max: {rule: 'add', attributes: ['build'], modifier: 200},
cp_total: {rule: 'sum', attributes: ['cp_inferior', 'cp', 'cp_superior', 'cx']},
encum: {rule: 'sum', attributes: ['armor_cp_total', 'attack_cp_total', 'gear_cp_total', 'cp_total']},
encumbered: {rule: 'encumbered', attributes: ['encum', 'encum_max', 'armor_max']},
'$attack_unreliable': {rule: 'contains', values: -1, section: 'attack', attributes: ['$attack_traits'], modifier: 'unreliable'},
'$attack_defense': {rule: 'is_defense_skill', values: -1, section: 'attack', attributes: ['$attack_skill']}
};
const stats = ['str', 'for', 'agi', 'int', 'ins', 'cha', 'fs', 'bs', 'brawl',
'salvage', 'resilience', 'resolve', 'immunity', 'crafting', 'mechanics', 'science', 'medicine',
'dodge', 'full_dodge', 'parry', 'riposte'];
stats.forEach(stat => {
multistats[`${stat}_half`] = {rule: 'half', attributes: [stat]};
multistats[`${stat}_quarter`] = {rule: 'quarter', attributes: [stat]};
multistats[`${stat}_temp`] = {rule: 'toggle', values: -1, attributes: ['starving'], modifier: -10};
multistats[`${stat}_temp_check`] = {rule: 'sum', attributes: [`${stat}_temp`]}; // just copy the temp value
multistats[`${stat}_thresh`] = {rule: 'sum', attributes: [`${stat}`, `${stat}_temp`]};
});
const skills = {athletics: 'str', archery: 'agi', academics: 'int', crafting: 'ins' , animalken: 'cha', blades: 'fs', firearms: 'bs',
lockpick: 'agi', mechanics: 'int', drive: 'ins', charm: 'cha', brawl: 'fs' , heavyweapons: 'bs', palming: 'agi', medicine: 'int',
navigation: 'ins' , command: 'cha', clubs: 'fs', stealth: 'agi', science: 'int', perception: 'ins', interrogate: 'cha',
wrangle: 'agi', techuse: 'int', survival: 'ins', intimidate: 'cha', tracking: 'ins', xenotechuse: 'ins'};
Object.entries(skills).forEach(([skill,stat]) => {
multistats[skill] = {rule: 'prof', values: -1, attributes: [stat+'_thresh', skill+'_prof']};
multistats[skill+"_prof_desc"] = {rule: 'prof_desc', values: -1, attributes: [skill+'_prof']};
});
const prof_mods = {};
prof_mods['-'] = {mod:0,desc:'Not Proficient'};
prof_mods['p'] = {mod:0,desc:'Proficient'};
prof_mods['s'] = {mod:5,desc:'Skilled'};
prof_mods['t'] = {mod:10,desc:'Trained'};
prof_mods['m'] = {mod:15,desc:'Master'};
const build_dc_mods = {};
build_dc_mods[-1] = {food_units: 1, contort_mod: 20};
build_dc_mods[0] = {food_units: 2, contort_mod: 10};
build_dc_mods[1] = {food_units: 3, contort_mod: 0};
build_dc_mods[2] = {food_units: 4, contort_mod: -10};
build_dc_mods[3] = {food_units: 5, contort_mod: -20};
const multifunctions = {
sum: (arr) => arr.reduce((total, add) => total + add), // add up any number of attributes
pick_from_list: (arr) => arr[ arr[0] ], // get the value of an attribute, from a select.
half: (arr) => Math.max(Math.floor(arr[0] / 2), 1),
quarter: (arr) => Math.max(Math.floor(arr[0] / 4), 1),
build_dc: (arr) => Math.floor(arr[0]/50)-1,
food_req: (arr) => build_dc_mods[arr[0]].food_units,
contort: (arr) => arr[0] + build_dc_mods[arr[1]].contort_mod || arr[0],
add: (arr, val) => arr[0]+val,
full_dodge: (arr) => Math.floor(arr[0]+(arr[1]/2)),
max: (arr) => Math.max(...arr),
encumbered: (arr) => arr[0] > arr[1] || arr[2] >= 12 ? 'on' : '0',
greater_than_or_equal: (arr) => arr[0] >= arr[1] ? 'on' : '0',
toggle: (arr, modifier) => arr[0] === 'on' ? modifier : 0,
contains: (arr, modifier) => arr.join('').toLowerCase().indexOf(modifier)>-1 ? 1 : 0,
is_defense_skill: (arr) => arr[0] === 'blades' || arr[0] === 'brawl' || arr[0] === 'clubs' ? '1' : '0',
luck_uses: function(arr, divisor)
{
let luck = arr[0];
let has_faith = arr[1];
let has_luck_stars = arr[2];
let luck_uses = Math.floor(luck / divisor)
luck_uses += has_faith > 0 ? 3 : 0;
luck_uses += has_luck_stars > 0 ? 3 : 0;
return luck_uses;
},
dodge: function(arr, divisor) {
let agi = arr[0];
let ins = arr[1];
let has_reflex = arr[2];
let has_moving_target = arr[3];
let dodge = Math.floor((agi + ins) / divisor)
dodge += has_reflex > 0 ? 10 : 0;
dodge += has_moving_target > 0 ? 5 : 0;
return dodge;
},
prof: function(arr)
{
let stat_val = parseInt(arr[0]) || 0;
let prof_mod = prof_mods[arr[1]];
return stat_val + prof_mod.mod;
},
prof_desc: function(arr)
{
let prof_mod = prof_mods[arr[0]];
return prof_mod.desc;
},
special_stat: function(arr, divisor)
{
let sum = multifunctions.sum(arr);
let stat = Math.floor(sum / divisor);
return stat;
},
build: function(arr)
{
let str = arr[0];
let fort = arr[1];
let hasGiantGenetics = arr[2];
return str + fort + (hasGiantGenetics > 0 ? 50 : 0);
},
hungry: function(arr)
{
let hunger = arr[0];
let threshold = arr[1];
return hunger >= threshold ? 'on' : '0';
},
hunger_threshold: function(arr, modifier)
{
let baseThreshold = arr[0];
let hasTighteningTheBelt = arr[1];
let hasCollar = arr[2];
let threshold = baseThreshold + (hasTighteningTheBelt > 0 ? modifier : 0);
return hasCollar > 0 ? 999 : threshold;
},
init: function(arr, divisor)
{
let agi = parseInt(arr[0]) || 0;
let luck = parseInt(arr[1]) || 0;
let initTemp = parseInt(arr[2]) || 0;
let encumbered = arr[3];
let shaken = arr[4];
let acute = arr[5];
let starving = arr[6];
let emaciated = arr[7];
let hasMovingTarget = arr[8];
let hasInstinctive = arr[9];
let instinct = parseInt(arr[10]) || 0;
let init = agi+luck;
init += hasInstinctive > 0 ? instinct : 0;
init = Math.floor(init / divisor);
init += initTemp;
init -= encumbered === 'on' ? 1 : 0;
init -= shaken === 'on' ? 3 : 0;
init -= acute === 'on' ? 5 : 0;
init -= starving === 'on' ? 2 : 0;
init -= emaciated === 'on' ? 2 : 0;
init += hasMovingTarget > 0 ? 1 : 0;
return init;
}
};
/*
* END OF MULTIVERSAL SHEET LOGIC
*/
// ======================================================*/
// DO NOT EDIT BELOW THIS LINE //
// ======================================================*/
/*
* START OF MULTIVERSAL FUNCTIONS
*/
const mvlog = (title, text, color = 'green', style='font-size:12px; font-weight:normal;', headerstyle = 'font-size:13px; font-weight:bold;') => {
let titleStyle = `color:${color}; ${headerstyle} text-decoration:underline;`;
let textStyle = `color:${color}; ${style}`;
const output = `%c${title}:%c ${text}`;
console.log(output,titleStyle,textStyle);
};
// can use $ placeholder in attribute names. This converts '$_stat' to 'repeating_section_stat'
const rep = '$'; //placeholder for repeating_section_
const makeRepeatingName = (attribute, section) => attribute.startsWith(rep) ? attribute.replace(rep, `repeating_${section}_`) : attribute;
const makeRepeatingAttributes = (attributes, section) => attributes.map(a => makeRepeatingName(a, section));
const makeRepeatingID = (a, section, id) => a.replace(`repeating_${section}_`,`repeating_${section}_${id}_`);
// given array of attributes, find if any have repeating_ and return the section name
// section name will be 2nd element of name split on "_"
const findSection = (arr) => {
const s = arr.find(a => a.includes('repeating_'));
const section = (s ? s.split('_')[1] : null);
return section;
};
// check if attribute is one where a repeating section attribute depends on attributes both inside and outside the repeating section
const isMixed = (attributes, destination) => {
const some = someRepeating(attributes);
const all = allRepeating(attributes);
const repeatingdestination = destination.startsWith('repeating_');
return (some && !all && repeatingdestination);
};
const allRepeating = attributes => attributes.every(r => r.startsWith('repeating_'));
const someRepeating = attributes => attributes.some(r => r.startsWith('repeating_'));
const defaultDataType = 'array'; // might change this to object
const getData = (values, data = 'a', isnumbers = 0) => {
// only a is functional right now, so this function is redundant.
switch(data.charAt(0).toLowerCase()) {
case 'o': return values;
case 'a': return Object.values(values).map(i => 1 === isnumbers ? parseInt(i) ||0 : (0 === isnumbers ? +i || 0 : i));
case 'v': return Object.values(values)[0];
}
};
const processMax = (destination, result, max) => {
const settings = {};
if(max === 'current' || max === 'both') settings[destination] = result;
if(max === 'max' || max === 'both') settings[`${destination}_max`] = result;
return settings;
};
const isFunction = value => value && (Object.prototype.toString.call(value) === '[object Function]' || 'function' === typeof value || value instanceof Function);
const processFunction = (destination, values, section) => {
const rule = multistats[destination].rule;
const func = isFunction(rule) ? rule: multifunctions[rule]; // need to test if this works for arrow functions
const data = multistats[destination].data || defaultDataType;
const isnumbers = multistats[destination].values || 0;
const v = getData(values, data, isnumbers);
const modifier = multistats[destination].modifier || null;
const result = func(v, modifier);
mvlog(`${makeRepeatingName(destination,section).toUpperCase()} MULTIFUNCTION`, `RULE: ${rule}; VALUES: ${JSON.stringify(values)}; RESULT: ${result}`);
return result;
};
Object.keys(multistats).forEach(destination => {
// get the section name if it exists. It is needed for mixed workers
const attributes_base = multistats[destination].attributes;
const section = multistats[destination].section || findSection(attributes_base) || null;
const attributes = makeRepeatingAttributes(attributes_base, section);
const realdestination = makeRepeatingName(destination, section); // needed in case of $ in destination
mvlog(`MULTIVERSAL- ${realdestination}`,`${attributes.join(', ')}`,'green');
if (isMixed(attributes, realdestination)) {
const changes = attributes.reduce((change, step) => `${change} change:${step.replace('repeating_' + section + '_','repeating_' +section + ':')}`,
`remove:repeating_${section} sheet:opened`);
on(changes.toLowerCase(), function (event)
{
const trigger = event.sourceAttribute || '';
const triggerRow = (trigger && trigger.includes('_') && trigger.length >2) ? trigger.split('_')[2] : '';
// if triggerRow, only update initial row
getSectionIDs(`repeating_${section}`, function (ids) {
const sectionAtts = attributes.filter(f => f.startsWith(`repeating_${section}`));
const fixedAtts = attributes.filter(f => !f.startsWith(`repeating_${section}`));
if (triggerRow) ids = [triggerRow];
const fieldNames = ids.reduce( (m,id) => [...m, ...(sectionAtts.map(field => makeRepeatingID(field,section,id) ))],[]);
getAttrs([...fieldNames,...fixedAtts], function (values) {
let settings = {};
const max = multistats[destination].max || 'current';
const fixedValues = fixedAtts.reduce((obj, a) => {
obj[a] = values[a];
return obj;
}, {});
ids.forEach(id => {
// first get all relevant attributes for this row of the section
const sectionValues = sectionAtts.reduce((obj, a) => {
const att = makeRepeatingID(a, section, id);
obj[att] = values[att];
return obj;}, {});
// now apply the formula for this row and add to settings
const combinedValues = {...sectionValues,...fixedValues};
const result = processFunction(destination,combinedValues, section);
const tempDestination = makeRepeatingID(realdestination,section,id);
const tempSettings = processMax(tempDestination, result, max);
settings = Object.assign({}, settings, tempSettings);
});
setAttrs(settings);
});
});
});
} else {
const changes = attributes.reduce((change, step) => `${change} change:${step.replace('repeating_' + section + '_','repeating_' +section + ':')}`,
`${someRepeating([...attributes,realdestination]) ? '' : 'sheet:opened '}${section ? `remove:repeating_${section}` : ''}`);
on(changes.toLowerCase(), function ()
{
getAttrs([...attributes, 'disabled_attrs'], function (values)
{
if(csvToIndexedObject(values['disabled_attrs'])[destination])
{
mvlog(`MULTIVERSAL DISABLED - ${destination}`,`${values['disabled_attrs']}`,'orange');
}
else
{
const result = processFunction(destination,values, section);
const max = multistats[destination].max || 'current';
const settings = processMax(realdestination, result, max);
setAttrs(settings);
}
});
});
}
});
/*
* END OF MULTIVERSAL FUNCTIONS
*/
// ======================================================*/
// END Multiversal Sheet Worker Generator //
// ======================================================*/
/* ===== PARAMETERS ==========
destinations = the name of the attribute that stores the total quantity
can be a single attribute, or an array: ['total_cost', 'total_weight']
If more than one, the matching fields must be in the same order.
section = name of repeating fieldset, without the repeating_
fields = the name of the attribute field to be summed
destination and fields both can be a single attribute: 'weight'
or an array of attributes: ['weight','number','equipped']
*/
/*
* START OF REPEATING SUMS
*/
const repeatingSum = (destinations, section, fields) => {
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, '').split(',')];
if (!Array.isArray(fields)) fields = [fields.replace(/\s/g, '').split(',')];
getSectionIDs(`repeating_${section}`, idArray => {
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
getAttrs([...attrArray], v => {
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
const output = {};
destinations.forEach((destination, index) => {
output[destination] = idArray.reduce((total, id) => total + getValue(section, id, fields[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * getValue(section, id, mult), 1), 0);
});
console.log('repeatingSum: destinations: "' + destinations + '"; section: "' + section + '"; fields: "' + fields + '"; output: "' + JSON.stringify(output));
setAttrs(output);
});
});
};
const repeatingPresence = (destinations, section, fields, names) => {
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, '').split(',')];
if (!Array.isArray(fields)) fields = Array(destinations.length).fill(fields);
if (!Array.isArray(names)) names = [names.replace(/\s/g, '').split(',')];
getSectionIDs(`repeating_${section}`, idArray => {
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
getAttrs([...attrArray], v => {
const checkValue = (section, id, field, name) => v[`repeating_${section}_${id}_${field}`].trim().toLowerCase() === `${name}`.replace(/_/g, ' ').toLowerCase() ||
v[`repeating_${section}_${id}_${field}`].trim().toLowerCase() === (""+getTranslationByKey(`${name}`)).toLowerCase() ? 1 : 0;
const output = {};
destinations.forEach((destination, index) => {
output[destination] = idArray.reduce((total, id) => total + checkValue(section, id, fields[index], names[index]), 0);
});
console.log('repeatingPresence: destinations: "' + destinations + '"; section: "' + section + '"; fields: "' + fields + '"; names: "' + names + '"; output: "' + JSON.stringify(output));
setAttrs(output);
});
});
};
// armor point total
on('change:repeating_armor:armor_ap remove:repeating_armor', function()
{
getAttrs(['disabled_attrs'], function(values)
{
// if armor_max calc disabled skip
if(csvToIndexedObject(values['disabled_attrs'])['armor_max'])
{
console.log(`MULTIVERSAL DISABLED - armor_max (${values['disabled_attrs']})`);
return;
}
repeatingSum("armor_max","armor","armor_ap");
});
});
// armor cp total
on('change:repeating_armor:armor_cp remove:repeating_armor', function() {
repeatingSum("armor_cp_total","armor","armor_cp");
});
// weapon cp total
on('change:repeating_attack:attack_cp remove:repeating_attack', function() {
repeatingSum("attack_cp_total","attack","attack_cp");
});
// gear cp total
on('change:repeating_gear:gear_cp remove:repeating_gear', function() {
repeatingSum("gear_cp_total","gear","gear_cp");
});
/*
* END OF REPEATING SUMS
*/
/*
* START OF REPEATING ABILITY PRESENCE
*/
// detect special abilities
on('change:repeating_abilities:ability_name remove:repeating_abilities', function() {
var abilitieNames = ["faith", "reflex", "tightening_the_belt", "moving_target", "giant_genetics", "luck_stars", "collar", "instinctive"];
var abilityAttrs = _.map(abilitieNames, function(name){ return 'has_' + name; });
repeatingPresence(abilityAttrs, "abilities", "ability_name", abilitieNames);
});
/*
* END OF REPEATING ABILITY PRESENCE
*/
/*
* START OF ATTACK THRESHOLD CALCULATIONS
*/
// update attack thresholds when attack skill changed
on("change:repeating_attack:attack_skill", function(eventInfo)
{
getAttrs([eventInfo.newValue], function(values) {
let skillThreshold = values[eventInfo.newValue];
setAttrs({
repeating_attack_attack_threshold: skillThreshold,
repeating_attack_attack_threshold_half: Math.max(Math.floor(skillThreshold / 2), 1),
repeating_attack_attack_threshold_quarter: Math.max(Math.floor(skillThreshold / 4), 1)
});
});
});
const attackPrefix = 'repeating_attack_'
const attackSuffix = '_attack_skill'
const attackSkills = ['archery', 'blades', 'brawl', 'bs_thresh', 'clubs', 'firearms', 'fs_thresh', 'heavyweapons', 'throwing', 'wrangle'];
// update attack thresholds when attack's skill proficiency changed
attackSkills.forEach(attackSkill => {
on("change:"+attackSkill, function(eventInfo)
{
let changedSkill = eventInfo.sourceAttribute;
let changedSkillThreshold = eventInfo.newValue;
getSectionIDs("repeating_attack", function (idarray)
{
var attackIds = [];
for (let i = 0; i < idarray.length; i++)
{
attackIds.push(attackPrefix + idarray[i] + attackSuffix);
}
getAttrs(attackIds, function (values)
{
let updatesAttrs = {};
Object.entries(values).forEach(([attackSkillRef,attackSkill]) => {
if(attackSkill === changedSkill)
{
let pattern = attackPrefix+"(.*?)"+attackSuffix;
let id = attackSkillRef.match(pattern)[1];
updatesAttrs['repeating_attack_' + id + '_attack_threshold'] = changedSkillThreshold;
updatesAttrs['repeating_attack_' + id + '_attack_threshold_half'] = Math.max(Math.floor(changedSkillThreshold / 2), 1);
updatesAttrs['repeating_attack_' + id + '_attack_threshold_quarter'] = Math.max(Math.floor(changedSkillThreshold / 4), 1);
mvlog('ATTACK THRESHOLD UPDATE', `SKILL: ${changedSkill}; VALUES: ${JSON.stringify(updatesAttrs)}`);
}
});
if(updatesAttrs) setAttrs(updatesAttrs);
});
});
});
});
/*
* END OF ATTACK THRESHOLD CALCULATIONS
*/
/*
* START OF SETTING ATTACK ID ATTR
*/
on("sheet:opened change:repeating_attack", function()
{
setRepeatingFieldId("attack", "attack_id");
});
const setRepeatingFieldId = function(repeatingSectionName, attrName)
{
getSectionIDs("repeating_" + repeatingSectionName, function(idarray)
{
var attrs = {};
for(var i=0; i < idarray.length; i++)
{
var repeatingFieldId = 'repeating_' + repeatingSectionName + '_' + idarray[i] + '_' + attrName;
attrs[repeatingFieldId] = repeatingFieldId;
}
setAttrs(attrs,{silent:true});
});
};
/*
* END OF SETTING ATTACK ID ATTR
*/
</script>
<rolltemplate class="sheet-rolltemplate-maxapoc">
<div class="sheet-container">
<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">
<!-- DEBUG -->
{{#debug}}
<div class="sheet-desc">DEBUG START</div>
{{#allprops() attack}}
<div>{{key}}</div><div>{{value}}</div>
{{/allprops() attack}}
<div class="sheet-desc">DEBUG END</div>
{{/debug}}
<!-- PROFICIENCY -->
{{#profdesc}}<div class="sheet-key" data-i18n="proficiency">Proficiency.</div><div class="sheet-value">{{profdesc}}</div>{{/profdesc}}
<!-- SHOW PROFICIENCY ROLL SECTIONS -->
{{#mod}}
<!-- MODIFIER -->
<div class="sheet-key" data-i18n="modifier">Modifier.</div>
{{#rollGreater() mod 0}}
<div class="sheet-value">{{mod}} <span data-i18n="advantages">Advantage(s).</span></div>
{{/rollGreater() mod 0}}
{{#rollTotal() mod 0}}
<div class="sheet-value" data-i18n="none">None.</div>
{{/rollTotal() mod 0}}
{{#rollLess() mod 0}}
<div class="sheet-value">{{absmod}} <span data-i18n="disadvantages">Disadvantage(s).</span></div>
{{/rollLess() mod 0}}
<!-- DEGREES OF SUCCESS -->
<div class="sheet-key" data-i18n="required_success">Required Success.</div>
{{#rollGreater() mod -2}}
<div class="sheet-value" data-i18n="normal">Normal.</div>
{{/rollGreater() mod -2}}
{{#rollTotal() mod -2}}
<div class="sheet-value" data-i18n="great">Great.</div>
{{/rollTotal() mod -2}}
{{#rollTotal() mod -3}}
<div class="sheet-value" data-i18n="amazing">Amazing.</div>
{{/rollTotal() mod -3}}
<!-- SUCCESS TARGETS -->
<div class="sheet-desc" data-i18n="success_targets">Success Targets.</div>
<!-- 1 DISADVANTAGE OR LESS -->
{{#rollGreater() mod -2}}
<div class="sheet-key" data-i18n="normal">Normal.</div><div class="sheet-value">{{firstdegree}}</div>
<div class="sheet-key" data-i18n="great">Great.</div><div class="sheet-value">{{seconddegree}}</div>
{{/rollGreater() mod -2}}
<!-- 2 DISADVANTAGES -->
{{#rollTotal() mod -2}}
<div class="sheet-key" data-i18n="normal">Normal.</div><div class="sheet-value" data-i18n="not_applicable">N/A.</div>
<div class="sheet-key" data-i18n="great">Great.</div><div class="sheet-value">{{seconddegree}}</div>
{{/rollTotal() mod -2}}
<!-- 3 DISADVANTAGES -->
{{#rollTotal() mod -3}}
<div class="sheet-key" data-i18n="normal">Normal.</div><div class="sheet-value" data-i18n="not_applicable">N/A.</div>
<div class="sheet-key" data-i18n="great">Great.</div><div class="sheet-value" data-i18n="not_applicable">N/A.</div>
{{/rollTotal() mod -3}}
<!-- END: SUCCESS TARGETS -->
<!-- ROLL -->
<div class="sheet-key" data-i18n="amazing">Amazing.</div><div class="sheet-value">{{thirddegree}}</div>
<!-- ROLL OUTCOME -->
<div class="sheet-desc" data-i18n="result">Result.</div>
<div class="sheet-key" data-i18n="roll">Roll.</div><div class="sheet-value">{{profroll}}</div>
<div class="sheet-key" data-i18n="outcome">Outcome.</div>
<!-- 1 DISADVANTAGE OR LESS -->
{{#rollGreater() mod -2}}
{{#rollTotal() profroll 1}}
<div class="sheet-value"><span data-i18n="critical_success">Critical Success.</span> !!!</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">4</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollTotal() profroll 1}}
{{#rollBetween() profroll 2 thirddegree}}
<div class="sheet-value"><span data-i18n="amazing_success">Amazing Success.</span> !!</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">3</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollBetween() profroll 2 thirddegree}}
{{#rollBetween() profroll thirddegree1 seconddegree}}
<div class="sheet-value"><span data-i18n="great_success">Great Success.</span> !</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">2</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollBetween() profroll thirddegree1 seconddegree}}
{{#rollBetween() profroll seconddegree1 firstdegree}}
<div class="sheet-value" data-i18n="success">Success.</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success</div><div class="sheet-value">1</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollBetween() profroll seconddegree1 firstdegree}}
{{/rollGreater() mod -2}}
<!-- 2 DISADVANTAGES -->
{{#rollTotal() mod -2}}
{{#rollTotal() profroll 1}}
<div class="sheet-value"><span data-i18n="critical_success">Critical Success.</span> !!!</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">3</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollTotal() profroll 1}}
{{#rollBetween() profroll 2 thirddegree}}
<div class="sheet-value"><span data-i18n="amazing_success">Amazing Success.</span> !!</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">2</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollBetween() profroll 2 thirddegree}}
{{#rollBetween() profroll thirddegree1 seconddegree}}
<div class="sheet-value"><span data-i18n="great_success">Great Success.</span> !</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">1</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollBetween() profroll thirddegree1 seconddegree}}
{{#rollBetween() profroll seconddegree1 firstdegree}}
<div class="sheet-value">{{#luckreroll}}<span data-i18n="reroll_critical">Re-Roll Critical.</span> {{/luckreroll}}<span data-i18n="failure">Failure.</span></div>
{{/rollBetween() profroll seconddegree1 firstdegree}}
{{/rollTotal() mod -2}}
<!-- 3 DISADVANTAGES -->
{{#rollTotal() mod -3}}
{{#rollTotal() profroll 1}}
<div class="sheet-value"><span data-i18n="critical_success">Critical Success.</span> !!!</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">2</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollTotal() profroll 1}}
{{#rollBetween() profroll 2 thirddegree}}
<div class="sheet-value"><span data-i18n="amazing_success">Amazing Success.</span> !!</div>
<div class="sheet-key" data-i18n="degrees_of_success">Degrees of Success.</div><div class="sheet-value">1</div>
{{#rollGreater() dmgqueryroll 0}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgqueryroll}}</div>
{{/rollGreater() dmgqueryroll 0}}
{{#rollTotal() dmgqueryroll 0}}
{{#dmgroll}}
<div class="sheet-key" data-i18n="damage">Damage.</div><div class="sheet-value">{{dmgroll}}</div>
{{/dmgroll}}
{{/rollTotal() dmgqueryroll 0}}
{{/rollBetween() profroll 2 thirddegree}}
{{#rollBetween() profroll thirddegree1 seconddegree}}
<div class="sheet-value">{{#luckreroll}}<span data-i18n="reroll_critical">Re-Roll Critical.</span> {{/luckreroll}}<span data-i18n="failure">Failure.</span></div>
{{/rollBetween() profroll thirddegree1 seconddegree}}
{{#rollBetween() profroll seconddegree1 firstdegree}}
<div class="sheet-value">{{#luckreroll}}<span data-i18n="reroll_critical">Re-Roll Critical.</span> {{/luckreroll}}<span data-i18n="failure">Failure.</span></div>
{{/rollBetween() profroll seconddegree1 firstdegree}}
{{/rollTotal() mod -3}}
<!-- END: ROLL OUTCOME -->
{{#rollBetween() profroll firstdegree1 99}}
<div class="sheet-value">{{#luckreroll}}<span data-i18n="reroll_critical">Re-Roll Critical.</span> {{/luckreroll}}<span data-i18n="failure">Failure.</span></div>
{{/rollBetween() profroll firstdegree1 99}}
{{#rollTotal() profroll 100}}
<div class="sheet-value"><span data-i18n="critical_failure">Critical Failure.</span> !!!!</div>
{{/rollTotal() profroll 100}}
<!-- JAMMED UNRELIABLE WEAPON -->
{{#rollTotal() unreliable 1}}
{{#rollGreater() profroll 94}}
<div class="sheet-desc"><span data-i18n="weapon_jammed">WEAPON JAMMED.</span> !</div>
{{/rollGreater() profroll 94}}
{{/rollTotal() unreliable 1}}
{{/mod}}
{{#init}}
<div class="sheet-key" data-i18n="initiative">Initiative.</div><div class="sheet-value">{{init}}</div>
{{/init}}
{{#message}}
<div class="sheet-desc">{{message}}</div>
{{/message}}
</div>
</div>
</rolltemplate>