mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
2366 lines
159 KiB
HTML
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 </div>
|
|
<div class="quarter str-q"><input class="stat-quarter" type="number" name="attr_str_quarter" readonly/></div>
|
|
<div class="quarter str-q-label"> 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 </div>
|
|
<div class="quarter for-q"><input class="stat-quarter" type="number" name="attr_for_quarter" readonly/></div>
|
|
<div class="quarter for-q-label"> 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 </div>
|
|
<div class="quarter agi-q"><input class="stat-quarter" type="number" name="attr_agi_quarter" readonly/></div>
|
|
<div class="quarter agi-q-label"> 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 </div>
|
|
<div class="quarter int-q"><input class="stat-quarter" type="number" name="attr_int_quarter" readonly/></div>
|
|
<div class="quarter int-q-label"> 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 </div>
|
|
<div class="quarter ins-q"><input class="stat-quarter" type="number" name="attr_ins_quarter" readonly/></div>
|
|
<div class="quarter ins-q-label"> 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 </div>
|
|
<div class="quarter cha-q"><input class="stat-quarter" type="number" name="attr_cha_quarter" readonly/></div>
|
|
<div class="quarter cha-q-label"> 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 </div>
|
|
<div class="quarter fs-q"><input class="stat-quarter" type="number" name="attr_fs_quarter" readonly/></div>
|
|
<div class="quarter fs-q-label"> 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 </div>
|
|
<div class="quarter bs-q"><input class="stat-quarter" type="number" name="attr_bs_quarter" readonly/></div>
|
|
<div class="quarter bs-q-label"> 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 </div>
|
|
<div class="quarter salvage-q"><input class="stat-quarter" type="number" name="attr_salvage_quarter" readonly/></div>
|
|
<div class="quarter salvage-q-label"> 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 </div>
|
|
<div class="quarter resilience-q"><input class="stat-quarter" type="number" name="attr_resilience_quarter" readonly/></div>
|
|
<div class="quarter resilience-q-label"> 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 </div>
|
|
<div class="quarter resolve-q"><input class="stat-quarter" type="number" name="attr_resolve_quarter" readonly/></div>
|
|
<div class="quarter resolve-q-label"> 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 </div>
|
|
<div class="quarter immunity-q"><input class="stat-quarter" type="number" name="attr_immunity_quarter" readonly/></div>
|
|
<div class="quarter immunity-q-label"> 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> |