Files
roll20-character-sheets/Alternity-2018/Alternity-2018.html
T
2024-06-03 13:15:14 -04:00

602 lines
26 KiB
HTML

<div class="container">
<!-- BUTTONS FOR DIFFERENT TABS -->
<!-- https://wiki.roll20.net/CSS_Wizardry#Tabs -->
<div class="tabs">
<button type="action" name="act_general-tab" >General</button>
<button type="action" name="act_skills-tab" >Skills</button>
<button type="action" name="act_combat-tab" >Combat</button>
<button type="action" name="act_equipment-tab" >Gear</button>
</div>
<input type='hidden' class='tabstoggle' name='attr_sheetTab' value='general-tab' />
<!-- GENERAL TAB -->
<div class='general-tab'>
<div class="flexbox" >
<!-- CHARACTER INFO BOX -->
<div class="stylish-box character-info">
<div>
<label>Name:</label>
<input type="text" spellcheck="false" name="attr_character_name" />
</div>
<div>
<label>Species:</label>
<input type="text" spellcheck="false" name="attr_species" />
</div>
<div>
<label>Archetype:</label>
<input type="text" spellcheck="false" name="attr_archetype" />
</div>
<div>
<label>Level:</label>
<input type="number" min=0 max=10 name="attr_level" />
</div>
<div>
<label>Hero Points:</label></td>
<input type="number" min=0 name="attr_hero_points" />
</div>
<div>
<label>Initiative:</label>
<input type="number" min=0 name="attr_initiative_average" />
/
<input type="number" min=0 name="attr_initiative_excellent" />
/
<input type="number" min=0 name="attr_initiative_stellar" />
&nbsp;
<select name="attr_initiative_step_die" class="w8">
<option value="-2d20">-6 step</option>
<option value="-d20">-5 step</option>
<option value="-d12">-4 step</option>
<option value="-d8">-3 step</option>
<option value="-d6">-2 step</option>
<option value="-d4">-1 step</option>
<option value="+0">0 step</option>
<option value="+d4">+1 step</option>
<option value="+d6">+2 step</option>
<option value="+d8">+3 step</option>
<option value="+d12">+4 step</option>
<option value="+d20">+5 step</option>
<option value="+2d20">+6 step</option>
</select>
<button type='roll' value='&{template:alternity2018skill} {{name=Initiative}} {{skill_score_text=@{initiative_average} / @{initiative_excellent} / @{initiative_stellar}}} {{average=[[@{initiative_average}]]}} {{excellent=[[@{initiative_excellent}]]}} {{stellar=[[@{initiative_stellar}]]}} {{roll=[[d20 ?{Difficulty Die|your default (@{initiative_step_die}), @{initiative_step_die}|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
<div>
<label>Speed:</label>
<input type="number" min=0 name="attr_speed" /> m
</div>
<div>
<label>Encumbrance:</label>
<input type="number" min=0 name="attr_encumbrance" /> kg
</div>
</div>
<!-- ABILITY SCORES BOX -->
<div class="stylish-box ability-scores">
<div>
<label>Strength:</label></td>
<input type="number" min=0 max=10 name="attr_strength" />
<button type='roll' value='&{template:alternity2018skill} {{name=Strength}} {{average=[[20-@{strength}]]}} {{excellent=[[25-@{strength}]]}} {{stellar=[[30-@{strength}]]}} {{roll=[[d20 ?{Difficulty Die|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
<div>
<label>Agility:</label></td>
<input type="number" min=0 max=10 name="attr_agility" />
<button type='roll' value='&{template:alternity2018skill} {{name=Agility}} {{average=[[20-@{agility}]]}} {{excellent=[[25-@{agility}]]}} {{stellar=[[30-@{agility}]]}} {{roll=[[d20 ?{Difficulty Die|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
<div>
<label>Vitality:</label></td>
<input type="number" min=0 max=10 name="attr_vitality" />
<button type='roll' value='&{template:alternity2018skill} {{name=Vitality}} {{average=[[20-@{vitality}]]}} {{excellent=[[25-@{vitality}]]}} {{stellar=[[30-@{vitality}]]}} {{roll=[[d20 ?{Difficulty Die|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
<div>
<label>Intelligence:</label></td>
<input type="number" min=0 max=10 name="attr_intelligence" />
<button type='roll' value='&{template:alternity2018skill} {{name=Intelligence}} {{average=[[20-@{intelligence}]]}} {{excellent=[[25-@{intelligence}]]}} {{stellar=[[30-@{intelligence}]]}} {{roll=[[d20 ?{Difficulty Die|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
<div>
<label>Focus:</label></td>
<input type="number" min=0 max=10 name="attr_focus" />
<button type='roll' value='&{template:alternity2018skill} {{name=Focus}} {{average=[[20-@{focus}]]}} {{excellent=[[25-@{focus}]]}} {{stellar=[[30-@{focus}]]}} {{roll=[[d20 ?{Difficulty Die|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
<div>
<label>Personality:</label>
<input type="number" min=0 max=10 name="attr_personality" />
<button type='roll' value='&{template:alternity2018skill} {{name=Personality}} {{average=[[20-@{personality}]]}} {{excellent=[[25-@{personality}]]}} {{stellar=[[30-@{personality}]]}} {{roll=[[d20 ?{Difficulty Die|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button>
</div>
</div>
</div>
<!-- TALENTS BOX -->
<div>
<div class="stylish-box">
<h3>Talents</h3>
<div class="table fullwidth talents">
<div class="th">
<div class="td">Edit</div>
<div class="td">Name</div>
<div class="td">Notes</div>
<div class="td">Show</div>
</div>
<fieldset class="repeating_talents">
<input class="toggleable-switch" type="checkbox" checked="checked" name="attr_talent_editable"/></label>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_talent_name"/></div>
<div class="td toggleable-view truncatable"><span name="attr_talent_name"></span></div>
<div class="td toggleable-edit"><textarea spellcheck="false" name="attr_talent_info"></textarea></div>
<div class="td toggleable-view truncatable"><span name="attr_talent_info"></span></div>
<div class="td"><button type='roll' value='&{template:alternity2018info} {{name=@{talent_name}}} {{info=@{talent_info}}}'></button></div>
</fieldset>
</div>
</div>
</div>
<!-- OTHER NOTES BOX -->
<!-- (Uses identical styling to talents.) -->
<div>
<div class="stylish-box">
<h3>Other Notes</h3>
<div class="table fullwidth talents">
<div class="th">
<div class="td">Edit</div>
<div class="td">Name</div>
<div class="td">Notes</div>
<div class="td">Show</div>
</div>
<fieldset class="repeating_notes">
<input class="toggleable-switch" type="checkbox" checked="checked" name="attr_note_editable"/></label>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_note_name"/></div>
<div class="td toggleable-view truncatable"><span name="attr_note_name"></span></div>
<div class="td toggleable-edit"><textarea spellcheck="false" name="attr_note_info"></textarea></div>
<div class="td toggleable-view truncatable"><span name="attr_note_info"></span></div>
<div class="td"><button type='roll' value='&{template:alternity2018info} {{name=@{note_name}}} {{info=@{note_info}}}'></button></div>
</fieldset>
</div>
</div>
</div>
</div>
<!-- SKILLS TAB -->
<div class='skills-tab'>
<!-- SKILLS BOX -->
<div class="flexbox" >
<div class="stylish-box">
<h3>Skills</h3>
<div class="table fullwidth skills">
<div class="th">
<div class="td">Edit</div>
<div class="td">Skill Name</div>
<div class="td">Ranks</div>
<div class="td">Skill Score</div>
<div class="td">Default Die</div>
<div class="td">Notes</div>
<div class="td">Roll</div>
</div>
<fieldset class="repeating_skills">
<input class="toggleable-switch" type="checkbox" checked="checked" name="attr_skill_editable"/></label>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_skill_name"/></div>
<div class="td toggleable-view truncatable"><span name="attr_skill_name"></span></div>
<div class="td toggleable-edit"><input type="number" min=0 max=10 name="attr_skill_ranks" /></div>
<div class="td toggleable-view"><span name="attr_skill_ranks"></div>
<div class="td toggleable-edit">
<input type="number" min=0 max=19 name="attr_skill_score_average" />
/ <input type="number" min=5 max=24 name="attr_skill_score_excellent" />
/ <input type="number" min=10 max=29 name="attr_skill_score_stellar" />
</div>
<div class="td toggleable-view">
<span name="attr_skill_score_average"></span>
/ <span name="attr_skill_score_excellent"></span>
/ <span name="attr_skill_score_stellar"></span>
</div>
<div class="td toggleable-edit">
<select name="attr_skill_step_die" class="w8">
<option value="-2d20">-6 step</option>
<option value="-d20">-5 step</option>
<option value="-d12">-4 step</option>
<option value="-d8">-3 step</option>
<option value="-d6">-2 step</option>
<option value="-d4">-1 step</option>
<option value="+0">0 step</option>
<option value="+d4">+1 step</option>
<option value="+d6">+2 step</option>
<option value="+d8">+3 step</option>
<option value="+d12">+4 step</option>
<option value="+d20">+5 step</option>
<option value="+2d20">+6 step</option>
</select>
</div>
<div class="td toggleable-view"><span name="attr_skill_step_die"></div>
<div class="td toggleable-edit"><textarea spellcheck="false" name="attr_skill_info" class="w12"></textarea></div>
<div class="td toggleable-view truncatable"><span name="attr_skill_info"></span></div>
<div class="td"><button type='roll' value='&{template:alternity2018skill} {{name=@{skill_name}}} {{notes=@{skill_info}}} {{skill_score_text=@{skill_score_average} / @{skill_score_excellent} / @{skill_score_stellar}}} {{average=[[@{skill_score_average}]]}} {{excellent=[[@{skill_score_excellent}]]}} {{stellar=[[@{skill_score_stellar}]]}} {{roll=[[d20 ?{Difficulty Die|your default (@{skill_step_die}), @{skill_step_die}|-6 (-2d20), -2d20|+5 (-d20), -d20|-4 (-d12), -d12|-3 (-d8), -d8|-2 (-d6), -d6|-1 (-d4), -d4|+0, 0|+1 (+d4), +d4|+2 (+d6), +d6|+3 (+d8), +d8|+4 (+d12), +d12|+5 (+d20), +d20|+6 (+2d20), +2d20}]]}}'></button></div>
</fieldset>
<div class="tr">
<div class="td">&nbsp;</div>
<div class="td">Total Ranks</div>
<div class="td border-top"><span name="attr_skill_total_ranks"></span></div>
<div class="td">&nbsp;</div>
<div class="td">&nbsp;</div>
<div class="td">&nbsp;</div>
<div class="td">&nbsp;</div>
</div>
</div>
</div>
</div>
</div>
<!-- COMBAT TAB -->
<div class='combat-tab'>
<!-- WEAPONS BOX -->
<div>
<div class="stylish-box">
<h3>Weapons</h3>
<div class="table fullwidth weapons">
<div class="th">
<div class="td">Edit</div>
<div class="td">Weapon Name</div>
<div class="td">Range</div>
<div class="td">Speed</div>
<div class="td">Dmg Avg</div>
<div class="td">Dmg Ex</div>
<div class="td">Special</div>
<div class="td">Roll</div>
</div>
<fieldset class="repeating_weapons">
<input class="toggleable-switch" type="checkbox" checked="checked" name="attr_weapon_editable"/></label>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_weapon_name" class="w12" /></div>
<div class="td toggleable-edit">
<select name="attr_weapon_range" class="w9">
<option value="Adjacent">Adjacent</option>
<option value="Close">Close</option>
<option value="Medium">Medium</option>
<option value="Long">Long</option>
<option value="Very Long">Very Long</option>
<option value="Extreme">Extreme</option>
</select>
</div>
<div class="td toggleable-edit"><input type="number" min=2 max=5 name="attr_weapon_speed" /></div>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_weapon_damage_average" class="w5" /></div>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_weapon_damage_excellent" class="w5" /></div>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_weapon_special" class="w12" /></div>
<div class="td toggleable-view truncatable"><span name="attr_weapon_name"></span></div>
<div class="td toggleable-view"><span name="attr_weapon_range"></span></div>
<div class="td toggleable-view"><span name="attr_weapon_speed"></span></div>
<div class="td toggleable-view"><span name="attr_weapon_damage_average"></span></div>
<div class="td toggleable-view"><span name="attr_weapon_damage_excellent"></span></div>
<div class="td toggleable-view"><span name="attr_weapon_special"></span></div>
<div class="td"><button type='roll' value='&{template:alternity2018weapon} {{name=@{weapon_name}}} {{range=@{weapon_range}}} {{speed=@{weapon_speed}}} {{special=@{weapon_special}}} {{damageAvg=@{weapon_damage_average}}} {{damageAvgRoll=[[@{weapon_damage_average}]]}} {{damageEx=@{weapon_damage_excellent}}} {{damageExRoll=[[@{weapon_damage_excellent}]]}}'></button></div>
</fieldset>
</div>
</div>
</div>
<!-- ARMOR AND DAMAGE BOX -->
<div>
<div class="stylish-box">
<h3>Armor and Damage</h3>
<p class="armor-values">Armor reduces <strong>physical</strong> by <input type="number" min=0 name="attr_armour_physical" />, <strong>energy</strong> by <input type="number" min=0 name="attr_armour_energy" /></p>
<div class="table damage">
<div class="th">
<div class="td">Severity</div>
<div class="td">Description</div>
<div class="td">Wounds</div>
<div class="td">Max</div>
<div class="td">Show</div>
</div>
<div class="tr">
<div class="td">16+</div>
<div class="td">Mortal wound (cannot act)</div>
<div class="td"><input type="number" min=0 name="attr_wound_mortal" /></div>
<div class="td"><input type="number" min=0 name="attr_wound_mortal_max" /></div>
<div><button type='roll' value='&{template:alternity2018wounds} {{name=@{character_name}}} {{mortal=@{wound_mortal}}} {{mortal_max=@{wound_mortal|max}}} {{critical=@{wound_critical}}} {{critical_max=@{wound_critical|max}}} {{serious=@{wound_serious}}} {{serious_max=@{wound_serious|max}}} {{moderate=@{wound_moderate}}} {{moderate_max=@{wound_moderate|max}}} {{light=@{wound_light}}} {{light_max=@{wound_light|max}}} {{graze=@{wound_graze}}} {{graze_max=@{wound_graze|max}}}'></button></div>
</div>
<div class="tr">
<div class="td">13 - 15</div>
<div class="td">Critical wound (-3 die steps)</div>
<div class="td"><input type="number" min=0 name="attr_wound_critical" /></div>
<div class="td"><input type="number" min=0 name="attr_wound_critical_max" /></div>
<div>&nbsp;</div>
</div>
<div class="tr">
<div class="td">10 - 12 </div>
<div class="td">Serious wound (-2 die steps)</div>
<div class="td"><input type="number" min=0 name="attr_wound_serious" /></div>
<div class="td"><input type="number" min=0 name="attr_wound_serious_max" /></div>
<div>&nbsp;</div>
</div>
<div class="tr">
<div class="td">7 - 9</div>
<div class="td">Moderate wound (-1 die steps)</div>
<div class="td"><input type="number" min=0 name="attr_wound_moderate" /></div>
<div class="td"><input type="number" min=0 name="attr_wound_moderate_max" /></div>
<div>&nbsp;</div>
</div>
<div class="tr">
<div class="td">4 - 6</div>
<div class="td">Light wound (no effect)</div>
<div class="td"><input type="number" min=0 name="attr_wound_light" /></div>
<div class="td"><input type="number" min=0 name="attr_wound_light_max" /></div>
<div>&nbsp;</div>
</div>
<div class="tr">
<div class="td">1 - 3</div>
<div class="td">Graze (no effect)</div>
<div class="td"><input type="number" min=0 name="attr_wound_graze" /></div>
<div class="td"><input type="number" min=0 name="attr_wound_graze_max" /></div>
<div>&nbsp;</div>
</div>
</div>
</div>
</div>
</div>
<!-- GEAR BOX -->
<div class='equipment-tab'>
<div class="stylish-box">
<h3>Equipment</h3>
<div class="table fullwidth equipment">
<div class="th">
<div class="td">Edit</div>
<div class="td">Name</div>
<div class="td">Mass (kg)</div>
<div class="td">Qty</div>
<div class="td">Notes</div>
<div class="td">Show</div>
</div>
<fieldset class="repeating_equipment">
<input class="toggleable-switch" type="checkbox" checked="checked" name="attr_equipment_editable"/></label>
<div class="td toggleable-edit"><input type="text" spellcheck="false" name="attr_equipment_name"/></div>
<div class="td toggleable-view truncatable"><span name="attr_equipment_name"></span></div>
<div class="td toggleable-edit"><input type="number" min="0" step="any" name="attr_equipment_mass"/></div>
<div class="td toggleable-view"><span name="attr_equipment_mass"></span></div>
<div class="td toggleable-edit"><input type="number" min="0" step="1" name="attr_equipment_quantity"/></div>
<div class="td toggleable-view"><span name="attr_equipment_quantity"></span></div>
<div class="td toggleable-edit"><textarea spellcheck="false" name="attr_equipment_info"></textarea></div>
<div class="td toggleable-view truncatable"><span name="attr_equipment_info"></span></div>
<div class="td"><button type='roll' value='&{template:alternity2018equipment} {{name=@{equipment_name}}} {{mass=@{equipment_mass}}} {{quantity=@{equipment_quantity}}} {{info=@{equipment_info}}}'></button></div>
</fieldset>
<div class="tr">
<div class="td">&nbsp;</div>
<div class="td">Totals</div>
<div class="td border-top"><span name="attr_equipment_total_mass"></span></div>
<div class="td border-top"><span name="attr_equipment_total_quantity"></span></div>
<div class="td">&nbsp;</div>
<div class="td">&nbsp;</div>
</div>
</div>
</div>
</div>
</div>
<!-----------------------
ROLL TEMPLATES
------------------------>
<rolltemplate class="sheet-rolltemplate-alternity2018info">
<div class="rolltemplate-default">
<table>
<caption><strong>{{name}}</strong></caption>
<tbody>
<tr>
<td colspan=2 style="text-align:left;">{{info}}</td>
</tr>
</tbody>
</table>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-alternity2018equipment">
<div class="rolltemplate-default">
<table>
<caption><strong>{{name}}</strong></caption>
<tbody>
{{#info }}
<tr>
<td colspan=2 style="text-align:left;">{{info}}</td>
</tr>
{{/info }}
{{#mass }}
<tr>
<td>Mass</td>
<td>{{mass}} kg</td>
</tr>
{{/mass }}
{{#quantity }}
<tr>
<td>Quantity</td>
<td>{{quantity}}</td>
</tr>
{{/quantity }}
</tbody>
</table>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-alternity2018weapon">
<div class="rolltemplate-default">
<table>
<caption><strong>{{name}}</strong></caption>
<tbody>
{{#range }}
<tr>
<td>Range</td>
<td>{{range}}</td>
</tr>
{{/range }}
{{#speed }}
<tr>
<td>Speed</td>
<td>{{speed}}</td>
</tr>
{{/speed }}
{{#damageAvg }}
<tr>
<td>Damage (Avg)</td>
<td>{{damageAvg}} {{#damageAvgRoll }}= {{damageAvgRoll}}{{/damageAvgRoll }}</td>
</tr>
{{/damageAvg }}
{{#damageEx }}
<tr>
<td>Damage (Ex)</td>
<td>{{damageEx}} {{#damageExRoll }}= {{damageExRoll}}{{/damageExRoll }}</td>
</tr>
{{/damageEx }}
{{#special }}
<tr>
<td>Special</td>
<td>{{special}}</td>
</tr>
{{/special }}
<tr>
</tbody>
</table>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-alternity2018skill">
<div class="rolltemplate-default">
<table>
<caption><strong>{{name}}</strong></caption>
<tbody>
<tr>
<td>Skill Score</td>
{{^skill_score_text}}
<td>{{average}} / {{excellent}} / {{stellar}}</td>
{{/skill_score_text}}
{{#skill_score_text}}
<td>{{skill_score_text}}</td>
{{/skill_score_text}}
</tr>
<tr>
<td>Result</td>
<td>{{roll}}</td>
</tr>
<tr>
<!-- Odd nesting to get around boundary issues. -->
{{#rollLess() roll average }}
<td colspan=2 class="fail"><span>Failed!</span></td>
{{/rollLess() roll average }}
{{#rollLess() roll excellent }}
{{#rollBetween() roll average excellent}}
<td colspan=2 class="average"><span>Average!</span></td>
{{/rollBetween() roll average excellent}}
{{/rollLess() roll excellent }}
{{#rollLess() roll stellar }}
{{#rollBetween() roll excellent stellar}}
<td colspan=2 class="excellent"><span>Excellent!</span></td>
{{/rollBetween() roll excellent stellar}}
{{/rollLess() roll stellar }}
{{#^rollLess() roll stellar }}
<td colspan=2 class="stellar"><span>Stellar!</span></td>
{{/^rollLess() roll stellar }}
</tr>
<tr>
{{#notes }}
<td colspan=2 class="left-align">{{notes}}</td>
{{/notes }}
</tr>
</tbody>
</table>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-alternity2018wounds">
<div class="rolltemplate-default">
<table>
<caption><strong>{{name}}'s Wounds</strong></caption>
<tbody>
<tr>
<td>Mortal (cannot act)</td>
<td>{{mortal}} of {{mortal_max}}</td>
</tr>
<tr>
<td>Critical (-3)</td>
<td>{{critical}} of {{critical_max}}</td>
</tr>
<tr>
<td>Serious (-2)</td>
<td>{{serious}} of {{serious_max}}</td>
</tr>
<tr>
<td>Moderate (-1)</td>
<td>{{moderate}} of {{moderate_max}}</td>
</tr>
<tr>
<td>Light (no effect)</td>
<td>{{light}} of {{light_max}}</td>
</tr>
<tr>
<td>Graze (no effect)</td>
<td>{{graze}} of {{graze_max}}</td>
</tr>
</tbody>
</table>
</div>
</rolltemplate>
<!-----------------------
SCRIPTS
------------------------>
<script type="text/worker">
// For sheet tabs:
// https://wiki.roll20.net/CSS_Wizardry#Tabs
const buttonlist = ["general-tab","skills-tab","combat-tab","equipment-tab"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
// Update total skill ranks:
on('change:repeating_skills remove:repeating_skills', function() {
repeatingSum("skill_total_ranks","skills",["skill_ranks"]);
});
// Update total mass of equipment:
on('change:repeating_equipment remove:repeating_equipment', function() {
repeatingSum("equipment_total_mass","equipment",["equipment_mass","equipment_quantity"]);
});
// Update total quantity of equipment:
on('change:repeating_equipment remove:repeating_equipment', function() {
repeatingSum("equipment_total_quantity","equipment",["equipment_quantity"]);
});
// Roll20's repeating sum function.
// https://wiki.roll20.net/RepeatingSum#The_Code
/* ===== 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']
*/
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);
});
setAttrs(output);
});
});
};
</script>