mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
3850 lines
180 KiB
HTML
3850 lines
180 KiB
HTML
<main class="vsdarkmaster-wrapper">
|
||
|
||
<div class="header-grid-section">
|
||
<section>
|
||
<img class="header-logo" src="https://raw.githubusercontent.com/jamakkon/roll20-character-sheets/40213690e78ace7d25ba42f823f27001a0b9a4d8/Against-The-Darkmaster-Quickstart/vsdarkmaster-logo.png" title="Against the Darkmaster: The Classic Game of Fantasy Adventure" alt="Logo: Against the Darkmaster - The Classic Game of Fantasy Adventure"/>
|
||
</section>
|
||
<section>
|
||
<div class="header-form-row">
|
||
<span class="field-input labeled-field">
|
||
<input class="text-field-charname" type="text" id="character-name" name="attr_character_name" />
|
||
<label for="character-name" class="header-field-label">character Name</label>
|
||
</span>
|
||
<span class="field-input labeled-field">
|
||
<input type="number" id="character-level" class="number-field-wide" name="attr_character_level" value="1" />
|
||
<label for="character-level" class="header-field-label">level</label>
|
||
</span>
|
||
<span class="field-input labeled-field">
|
||
<input type="number" id="character-xp" class="number-field-wide" name="attr_character_xp" value="0" />
|
||
<label for="character-xp" class="header-field-label">xp</label>
|
||
</span>
|
||
<span class="field-input labeled-field">
|
||
<input type="number" id="character-next-level" class="number-field-wide" name="attr_character_next_level" value="0" />
|
||
<label for="character-next-level" class="header-field-label">next lvl</label>
|
||
</span>
|
||
</div>
|
||
<div class="header-form-row">
|
||
<span class="field-input labeled-field">
|
||
<input class="text-field-kin" type="text" id="character-kin" name="attr_character_kin" value="" />
|
||
<label for="character-kin" class="header-field-label">kin</label>
|
||
</span>
|
||
<span class="field-input labeled-field">
|
||
<input class="text-field-culture" type="text" id="character-culture" name="attr_character_culture" />
|
||
<label for="character-culture" class="header-field-label">culture</label>
|
||
</span>
|
||
<span class="field-input labeled-field">
|
||
<input class="text-field-vocation" type="text" id="character-vocation" name="attr_character_vocation" />
|
||
<label for="character-vocation" class="header-field-label">vocation</label>
|
||
</span>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
|
||
<input type="hidden" class="sheet-tabstoggle" name="attr_sheet_tab" value="personal" />
|
||
<div class="navigation-bar">
|
||
<button type="action" name="act_personal">Skills</button>
|
||
<button type="action" name="act_combat">Status & Combat</button>
|
||
<button type="action" name="act_spells">Spells</button>
|
||
<button type="action" name="act_equipment">Equipment</button>
|
||
<button type="action" name="act_settings">Settings</button>
|
||
</div>
|
||
|
||
|
||
<div class="sheet-personal">
|
||
<section>
|
||
<div class="passions-block">
|
||
<h3>Passions</h3>
|
||
<div class="passions-grid-section">
|
||
<label for="character-motivation" class="field-label header-field-label">motivation</label>
|
||
<span class="field-input">
|
||
<input type="text" id="character-motivation" name="attr_character_motivation" class="passions-text-field" />
|
||
</span>
|
||
<label for="character-nature" class="field-label header-field-label">nature</label>
|
||
<span class="field-input">
|
||
<input type="text" id="character-nature" name="attr_character_nature" class="passions-text-field" />
|
||
</span>
|
||
<label for="character-allegiance" class="field-label header-field-label">allegiance</label>
|
||
<span class="field-input">
|
||
<input type="text" id="character-allegiance" name="attr_character_allegiance" class="passions-text-field" />
|
||
</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="main-grid-section">
|
||
<div class="leftside">
|
||
<div class="drive-points">
|
||
<h3>Drive Points
|
||
<span>
|
||
<input type="checkbox" name="attr_drivepoints_1" value="1" />
|
||
<input type="checkbox" name="attr_drivepoints_2" value="2" />
|
||
<input type="checkbox" name="attr_drivepoints_3" value="3" />
|
||
<input type="checkbox" name="attr_drivepoints_4" value="4" />
|
||
<input type="checkbox" name="attr_drivepoints_5" value="5" />
|
||
</span>
|
||
</h3>
|
||
</div>
|
||
<div class="dice-buttons">
|
||
<button type="roll" class="rolld100" name="attr_1d5_roll" title="1d5 roll" value="@{wtype} &{template:1d100} {{type=1d5}} {{character=@{character_name}}} {{subtags=Generic}} {{roll=[[1d5 + ?{Modifier|0}[MODIFIER]]]}}">
|
||
<span class="dicetext">1d5</span>
|
||
</button>
|
||
|
||
<button type="roll" class="rolld100" name="attr_1d10_roll" title="1d10 roll" value="@{wtype} &{template:1d100} {{type=1d10}} {{character=@{character_name}}} {{subtags=Generic}} {{roll=[[1d10 + ?{Modifier|0}[MODIFIER]]]}}">
|
||
<span class="dicetext">1d10</span>
|
||
</button>
|
||
|
||
<button type="roll" class="rolld100" name="attr_1d100_roll" title="1d100 roll" value="@{wtype} &{template:1d100} {{type=1d100}} {{character=@{character_name}}} {{subtags=Generic}} {{roll=[[1d100 + ?{Modifier|0}[MODIFIER]]]}}">
|
||
<span class="dicetext">1d100</span>
|
||
</button>
|
||
|
||
<button type="roll" class="rolld100" name="attr_openended1d100_roll" title="Open-ended 1d100 roll" value="@{wtype} &{template:openended} {{type=Open-ended 1d100}} {{character=@{character_name}}} {{subtags=Generic}} {{roll=[[1d100!>95cs>95cf<5 + ?{Modifier|0}[MODIFIER]]]}} {{underflow=[[1d100!>95 * -1]]}}">
|
||
<span class="dicetext">1d100*</span>
|
||
</button>
|
||
</div>
|
||
|
||
|
||
<div class="heroic-path">
|
||
<h3>Heroic Path</h3>
|
||
<div class="heroicpath-grid-section">
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path1" value="1" title="1"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path2" value="2" title="2"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path3" value="3" title="3"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path4" value="4" title="4"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path5" value="5" title="5"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path6" value="6" title="6" /><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path7" value="7" title="7" /><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path8" value="8" title="8" /><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path9" value="9" title="9" /><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path10" value="10" title="10" /></span>
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path11" value="11" title="11"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path12" value="12" title="12"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path13" value="13" title="13"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path14" value="14" title="14"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path15" value="15" title="15"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path16" value="16" title="16"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path17" value="17" title="17"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path18" value="18" title="18"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path19" value="19" title="19"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path20" value="20" title="20"/></span>
|
||
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path21" value="21" title="21"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path22" value="22" title="22"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path23" value="23" title="23"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path24" value="24" title="24"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path25" value="25" title="25"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path26" value="26" title="26"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path27" value="27" title="27"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path28" value="28" title="28"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path29" value="29" title="29"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path30" value="30" title="30"/></span>
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path31" value="31" title="31"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path32" value="32" title="32"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path33" value="33" title="33"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path34" value="34" title="34"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path35" value="35" title="35"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path36" value="36" title="36"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path37" value="37" title="37"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path38" value="38" title="38"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path39" value="39" title="39"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path40" value="40" title="40"/></span>
|
||
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path41" value="41" title="41"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path42" value="42" title="42"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path43" value="43" title="43"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path44" value="44" title="44"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path45" value="45" title="45"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path46" value="46" title="46"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path47" value="47" title="47"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path48" value="48" title="48"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path49" value="49" title="49"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path50" value="50" title="50"/></span>
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path51" value="51" title="51"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path52" value="52" title="52"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path53" value="53" title="53"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path54" value="54" title="54"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path55" value="55" title="55"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path56" value="56" title="56"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path57" value="57" title="57"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path58" value="58" title="58"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path59" value="59" title="59"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path60" value="60" title="60"/></span>
|
||
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path61" value="61" title="61"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path62" value="62" title="62"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path63" value="63" title="63"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path64" value="64" title="64"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path65" value="65" title="65"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path66" value="66" title="66"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path67" value="67" title="67"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path68" value="68" title="68"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path69" value="69" title="69"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path70" value="70" title="70"/></span>
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path71" value="71" title="71"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path72" value="72" title="72"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path73" value="73" title="73"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path74" value="74" title="74"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path75" value="75" title="75"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path76" value="76" title="76"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path77" value="77" title="77"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path78" value="78" title="78"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path79" value="79" title="79"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path80" value="80" title="80"/></span>
|
||
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path81" value="81" title="81"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path82" value="82" title="82"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path83" value="83" title="83"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path84" value="84" title="84"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path85" value="85" title="85"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path86" value="86" title="86"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path87" value="87" title="87"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path88" value="88" title="88"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path89" value="89" title="89"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path90" value="90" title="90"/></span>
|
||
|
||
<span class=""><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path91" value="91" title="91"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path92" value="92" title="92"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path93" value="93" title="93"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path94" value="94" title="94"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path95" value="95" title="95"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path96" value="96" title="96"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path97" value="97" title="97"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path98" value="98" title="98"/><input class="heroic-checkbox" type="checkbox" name="attr_heroic_path99" value="99" title="99"/><input class="heroic-checkbox heroic-tens-checkbox" type="checkbox" name="attr_heroic_path100" value="100" title="100"/></span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stats-block">
|
||
<h3 title="The measures of one's intrinsic capabilities and basic strengths or flaws.">Stats</h3>
|
||
<div class="stats-table tablelike">
|
||
<div class="rowlike table-header">
|
||
<div class="celllike">
|
||
<span>Stat name</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<span>Abbr</span>
|
||
</div>
|
||
<div class="celllike">
|
||
Base
|
||
</div>
|
||
<div class="celllike">
|
||
Kin
|
||
</div>
|
||
<div class="celllike">
|
||
Spec
|
||
</div>
|
||
<div class="celllike">
|
||
Total
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike stats-name-cell">
|
||
<span class="stats-name" title="Brawn is character’s muscular strength and physical power">Brawn</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">brn</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_brn_base_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_brn_kin_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_brn_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_stats_brn_total_bonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_stats_brn_total_bonus_display" value="@{stats_brn_total_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike stats-name-cell">
|
||
<span class="stats-name" title="Swiftness is character’s dexterity, speed, coordination, balance and general agility.">Swiftness</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">swi</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_swi_base_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_swi_kin_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_swi_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_stats_swi_total_bonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_stats_swi_total_bonus_display" value="@{stats_swi_total_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike stats-name-cell">
|
||
<span class="stats-name" title="Fortitude is character's resistance and vigor.">Fortitude</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">for</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_for_base_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_for_kin_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_for_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_stats_for_total_bonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_stats_for_total_bonus_display" value="@{stats_for_total_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike stats-name-cell">
|
||
<span class="stats-name" title="Wit is character’s reasoning, cleverness, mnemonic ability, and mental agility.">Wits</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wit</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_wit_base_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_wit_kin_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_wit_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_stats_wit_total_bonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_stats_wit_total_bonus_display" value="@{stats_wit_total_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike stats-name-cell">
|
||
<span class="stats-name" title="Wisdom is character’s empathy, intuition, willpower, awareness and attention to detail.">Wisdom</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wsd</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_wsd_base_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_wsd_kin_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_wsd_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_stats_wsd_total_bonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_stats_wsd_total_bonus_display" value="@{stats_wsd_total_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike stats-name-cell">
|
||
<span class="stats-name" title="Bearing is character’s presence, charisma, and social influence.">Bearing</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">bea</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_bea_base_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_bea_kin_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_stats_bea_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_stats_bea_total_bonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_stats_bea_total_bonus_display" value="@{stats_bea_total_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="saves-block">
|
||
<h3>Save rolls</h3>
|
||
<div class="tablelike">
|
||
<div class="rowlike table-header">
|
||
<div class="celllike">
|
||
Roll name
|
||
</div>
|
||
<div class="celllike">
|
||
<span title="Save roll stat bonus">Stat</span>
|
||
</div>
|
||
<div class="celllike">
|
||
|
||
</div>
|
||
<div class="celllike">
|
||
<span title="Save roll kin bonus">Kin</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<span title="Save roll special bonus">Spec</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<span title="Character level based bonus for save rolls. (automatically added to the total)">Lvl</span>
|
||
</div>
|
||
<div class="celllike">
|
||
Total
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<button type="roll" class="roll-button" name="roll_saveroll_toughness" value="@{wtype} &{template:saveroll} {{type=Toughness}} {{character=@{character_name}}} {{subtags=Save Roll}} {{roll=[[1d100 + @{tsr_totalbonus}[BONUS] + ?{Modifier|0}[MODIFIER]]]}} {{bonus=[[@{tsr_totalbonus}]]}}" title="Toughness Save Roll">
|
||
<span class="stats-name">Toughness</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_tsr_statbonus" value="0" />
|
||
<input type="number" class="hundred" name="attr_tsr_statbonus_display" value="(@{tsr_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike">
|
||
<span class="stats-name" title="Associated stat for toughness save roll">for</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_tsr_kinbonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_tsr_specbonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_tsr_levelbonus" value="0"/>
|
||
<input type="number" class="hundred" name="attr_tsr_levelbonus_display" value="@{tsr_levelbonus}" disabled />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_tsr_totalbonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_tsr_totalbonus_display" value="@{tsr_totalbonus}" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<button type="roll" class="roll-button" name="roll_saveroll_willpower" value="@{wtype} &{template:saveroll} {{type=Willpower}} {{character=@{character_name}}} {{subtags=Save Roll}} {{roll=[[1d100 + @{wsr_totalbonus}[BONUS] + ?{Modifier|0}[MODIFIER]]]}} {{bonus=[[@{wsr_totalbonus}]]}}" title="Willpower Save Roll">
|
||
<span class="stats-name">Willpower</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_wsr_statbonus" value="0" />
|
||
<input type="number" class="hundred" name="attr_wsr_statbonus_display" value="(@{wsr_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike">
|
||
<span class="stats-name" title="Associated stat for toughness save roll">wsd</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_wsr_kinbonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" name="attr_wsr_specbonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_wsr_levelbonus" value="0" />
|
||
<input type="number" class="hundred" name="attr_wsr_levelbonus_display" value="@{wsr_levelbonus}" disabled />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_wsr_totalbonus" value="0" />
|
||
<input type="number" class="hundred total" name="attr_wsr_totalbonus_display" value="@{wsr_totalbonus}" disabled />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="abilities-block">
|
||
<h3>Special abilities</h3>
|
||
<fieldset class="repeating_specialabilities">
|
||
<input type="text" name="attr_special_ability" class="special-ability" spellcheck="false"/>
|
||
</fieldset>
|
||
</div>
|
||
<div class="background-block">
|
||
<h3>Background options</h3>
|
||
<fieldset class="repeating_backgroundoptions">
|
||
<input type="text" name="attr_background_option" class="background-option" spellcheck="false"/>
|
||
</fieldset>
|
||
</div>
|
||
<div class="languages-block">
|
||
<h3>Known languages</h3>
|
||
<fieldset class="repeating_languages">
|
||
<input type="text" name="attr_language" class="language" spellcheck="false"/>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="rightside">
|
||
<h3>Skills</h3>
|
||
<div class="skills-grid-table table-header" align="center">
|
||
<div class="skills-cell" title="">
|
||
Skill name
|
||
</div>
|
||
<div class="skills-cell" title="The degree of natural affinity with the skill.">
|
||
Bonus
|
||
</div>
|
||
<div class="skills-cell" title="The stat representing the natural affinity with the skill.">
|
||
Stat
|
||
</div>
|
||
<div class="skills-cell" title="The number of skill ranks representing training in the skill (cultural skill ranks, vocational development points, background options)">
|
||
#
|
||
</div>
|
||
<div class="skills-cell" title="The skill rank bonus (automatically calculated from the number of skill ranks)">
|
||
Rank
|
||
</div>
|
||
<div class="skills-cell" title="The fixed vocational bonus for the skill.">
|
||
Voc
|
||
</div>
|
||
<div class="skills-cell" title="The fixed kin bonus for the skill.">
|
||
Kin
|
||
</div>
|
||
<div class="skills-cell" title="The special bonus can accumulate from different sources: equipment, situation, background bonuses, spells, etc.">
|
||
Spec
|
||
</div>
|
||
<div class="skills-cell" title="The non-cumulative item bonus derives from special equipment or magical items.">
|
||
Item
|
||
</div>
|
||
<div class="skills-cell" title="The total skill bonus.">
|
||
Total
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table-subheading">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Armor
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_armor_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_armor" value="@{wtype} &{template:moveskillroll} {{type=Armor}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_armor_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_movement_penalty}[MOVE PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{movement_penalty=[[@{total_movement_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_armor_totalbonus}]]}}" title="Armor Skill Roll (Movement)">
|
||
<span class="skill-name" title="The ability to offset the armor penalty.">Armor</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span>(none)</span>
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span>-</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_armor_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_armor_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_armor_rankbonus_display" value="(@{skill_armor_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_armor_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_armor_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_armor_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_armor_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_armor_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_armor_totalbonus_display" value="(@{skill_armor_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table-subheading">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Combat
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_combat_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_attack_blunt" value="@{wtype} &{template:attackroll} {{type=Blunt}} {{character=@{character_name}}} {{subtags=Melee Attack Roll}} {{roll=[[1d100!>95cs>95cf<11 + @{skill_blunt_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_cmb_penalty}[CMB PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{cmb_penalty=[[@{total_cmb_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_blunt_totalbonus}]]}}" title="Blunt Attack Roll">
|
||
<span class="skill-name" title="The ability to crush, smash, and break effectively.">Blunt</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_blunt_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_blunt_statbonus_display" value="(@{skill_blunt_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">brn</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blunt_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_blunt_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_blunt_rankbonus_display" value="(@{skill_blunt_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blunt_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blunt_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blunt_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blunt_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_blunt_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_blunt_totalbonus_display" value="(@{skill_blunt_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_attack_blades" value="@{wtype} &{template:attackroll} {{type=Blades}} {{character=@{character_name}}} {{subtags=Melee Attack Roll}} {{roll=[[1d100!>95cs>95cf<11 + @{skill_blades_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_cmb_penalty}[CMB PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{cmb_penalty=[[@{total_cmb_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_blades_totalbonus}]]}}" title="Blades Attack Roll">
|
||
<span class="skill-name" title="The ability to cut and slash effectively.">Blades</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_blades_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_blades_statbonus_display" value="(@{skill_blades_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">brn</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blades_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_blades_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_blades_rankbonus_display" value="(@{skill_blades_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blades_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blades_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blades_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_blades_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_blades_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_blades_totalbonus_display" value="(@{skill_blades_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_attack_ranged" value="@{wtype} &{template:attackroll} {{type=Ranged}} {{character=@{character_name}}} {{subtags=Ranged Attack Roll}} {{roll=[[1d100!>95cs>95cf<11 + @{skill_ranged_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_cmb_penalty}[CMB PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{cmb_penalty=[[@{total_cmb_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_ranged_totalbonus}]]}}" title="Ranged Attack Roll">
|
||
<span class="skill-name" title="The ability to shoot or throw projectiles effectively.">Ranged</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_ranged_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_ranged_statbonus_display" value="(@{skill_ranged_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">swi</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ranged_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_ranged_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_ranged_rankbonus_display" value="(@{skill_ranged_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ranged_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ranged_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ranged_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ranged_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_ranged_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_ranged_totalbonus_display" value="(@{skill_ranged_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_attack_polearms" value="@{wtype} &{template:attackroll} {{type=Polearms}} {{character=@{character_name}}} {{subtags=Melee Attack Roll}} {{roll=[[1d100!>95cs>95cf<11 + @{skill_polearms_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_cmb_penalty}[CMB PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{cmb_penalty=[[@{total_cmb_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_polearms_totalbonus}]]}}" title="Polearms Attack Roll">
|
||
<span class="skill-name" title="The ability to pierce, slash, or smash with long-shafted (1.5-3 metres) weapons.">Polearms</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_polearms_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_polearms_statbonus_display" value="(@{skill_polearms_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">brn</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_polearms_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_polearms_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_polearms_rankbonus_display" value="(@{skill_polearms_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_polearms_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_polearms_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_polearms_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_polearms_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_polearms_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_polearms_totalbonus_display" value="(@{skill_polearms_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_attack_brawl" value="@{wtype} &{template:attackroll} {{type=Brawl}} {{character=@{character_name}}} {{subtags=Melee Attack Roll}} {{roll=[[1d100!>95cs>95cf<11 + @{skill_brawl_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_cmb_penalty}[CMB PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{cmb_penalty=[[@{total_cmb_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_brawl_totalbonus}]]}}" title="Brawl Attack Roll">
|
||
<span class="skill-name" title="The ability to use improvised or hand weapons or to fight unarmed effectively.">Brawl</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_brawl_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_brawl_statbonus_display" value="(@{skill_brawl_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">brn</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_brawl_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_brawl_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_brawl_rankbonus_display" value="(@{skill_brawl_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_brawl_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_brawl_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_brawl_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_brawl_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_brawl_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_brawl_totalbonus_display" value="(@{skill_brawl_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table-subheading ">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Adventuring
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_adventuring_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_athletics" value="@{wtype} &{template:moveskillroll} {{type=Athletics}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_athletics_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_movement_penalty}[MOVE PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{movement_penalty=[[@{total_movement_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_athletics_totalbonus}]]}}" title="Athletics Skill Roll (Movement)">
|
||
<span class="skill-name" title="The ability to use strength or stamina to overcome an obstacle.">Athletics</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_athletics_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_athletics_statbonus_display" value="(@{skill_athletics_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">brn</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_athletics_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_athletics_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_athletics_rankbonus_display" value="(@{skill_athletics_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_athletics_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_athletics_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_athletics_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_athletics_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_athletics_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_athletics_totalbonus_display" value="(@{skill_athletics_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_ride" value="@{wtype} &{template:moveskillroll} {{type=Ride}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_ride_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_movement_penalty}[MOVE PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{movement_penalty=[[@{total_movement_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_ride_totalbonus}]]}}" title="Ride Skill Roll (Movement)">
|
||
<span class="skill-name" title="The ability to control and maneuver a mount or drive an animal-powered land vehicle.">Ride</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_ride_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_ride_statbonus_display" value="(@{skill_ride_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">swi</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ride_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_ride_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_ride_rankbonus_display" value="(@{skill_ride_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ride_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ride_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ride_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_ride_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_ride_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_ride_totalbonus_display" value="(@{skill_ride_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_hunting" value="@{wtype} &{template:skillroll} {{type=Hunting}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_hunting_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_hunting_totalbonus}]]}}" title="Hunting Skill Roll">
|
||
<span class="skill-name" title="The ability to hunt or track down a creature, or set up simple traps.">Hunting</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_hunting_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_hunting_statbonus_display" value="(@{skill_hunting_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wit</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_hunting_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_hunting_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_hunting_rankbonus_display" value="(@{skill_hunting_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_hunting_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_hunting_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_hunting_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_hunting_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_hunting_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_hunting_totalbonus_display" value="(@{skill_hunting_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_nature" value="@{wtype} &{template:skillroll} {{type=Nature}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_nature_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_nature_totalbonus}]]}}" title="Nature Skill Roll">
|
||
<span class="skill-name" title="The knowledge of plants, beasts, and natural phenomena, or the ability to interact with animals or with the surrounding environment.">Nature</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_nature_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_nature_statbonus_display" value="(@{skill_nature_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wsd</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_nature_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_nature_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_nature_rankbonus_display" value="(@{skill_nature_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_nature_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_nature_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_nature_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_nature_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_nature_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_nature_totalbonus_display" value="(@{skill_nature_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_wandering" value="@{wtype} &{template:skillroll} {{type=Wandering}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_wandering_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_wandering_totalbonus}]]}}" title="Wandering Skill Roll">
|
||
<span class="skill-name" title="The ability to properly navigate and survive in the wilderness.">Wandering</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_wandering_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_wandering_statbonus_display" value="(@{skill_wandering_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wsd</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_wandering_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_wandering_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_wandering_rankbonus_display" value="(@{skill_wandering_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_wandering_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_wandering_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_wandering_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_wandering_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_wandering_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_wandering_totalbonus_display" value="(@{skill_wandering_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table-subheading">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Roguery
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_roguery_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_acrobatics" value="@{wtype} &{template:moveskillroll} {{type=Acrobatics}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_acrobatics_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_movement_penalty}[MOVE PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{movement_penalty=[[@{total_movement_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_acrobatics_totalbonus}]]}}" title="Acrobatics Skill Roll (Movement)">
|
||
<span class="skill-name" title="The ability to perform maneuvers that require a great deal of agility, balance, and motor coordination.">Acrobatics</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_acrobatics_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_statbonus_display" value="(@{skill_acrobatics_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">swi</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_acrobatics_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_rankbonus_display" value="(@{skill_acrobatics_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_acrobatics_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_acrobatics_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_acrobatics_totalbonus_display" value="(@{skill_acrobatics_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_stealth" value="@{wtype} &{template:moveskillroll} {{type=Stealth}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_stealth_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_movement_penalty}[MOVE PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{movement_penalty=[[@{total_movement_penalty}]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_stealth_totalbonus}]]}}" title="Stealth Skill Roll (Movement)">
|
||
<span class="skill-name" title="The ability of not being seen (or heard) by an opponent.">Stealth</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_stealth_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_stealth_statbonus_display" value="(@{skill_stealth_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">swi</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_stealth_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_stealth_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_stealth_rankbonus_display" value="(@{skill_stealth_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_stealth_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_stealth_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_stealth_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_stealth_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_stealth_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_stealth_totalbonus_display" value="(@{skill_stealth_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_lockstraps" value="@{wtype} &{template:skillroll} {{type=Locks & Traps}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_lockstraps_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_lockstraps_totalbonus}]]}}" title="Locks & Traps Skill Roll">
|
||
<span class="skill-name" title="The ability to pick locks and padlocks, and deal with traps, mechanisms, and similar devices">Locks & Traps</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_lockstraps_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_statbonus_display" value="(@{skill_lockstraps_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wit</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_lockstraps_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_rankbonus_display" value="(@{skill_lockstraps_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_lockstraps_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_lockstraps_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_lockstraps_totalbonus_display" value="(@{skill_lockstraps_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_perception" value="@{wtype} &{template:skillroll} {{type=Perception}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_perception_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_perception_totalbonus}]]}}" title="Perception Skill Roll">
|
||
<span class="skill-name" title="The ability to gather information and clues through one's five senses.">Perception</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_perception_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_perception_statbonus_display" value="(@{skill_perception_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wsd</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_perception_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_perception_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_perception_rankbonus_display" value="(@{skill_perception_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_perception_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_perception_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_perception_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_perception_itembonus" value="@{total_armor_perceptionpenalty}" title="Perception is affected by the perception penalty from armor." disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_perception_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_perception_totalbonus_display" value="(@{skill_perception_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_deceive" value="@{wtype} &{template:skillroll} {{type=Deceive}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_deceive_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_deceive_totalbonus}]]}}" title="Deceive Skill Roll">
|
||
<span class="skill-name" title="The ability to mislead others, disguise oneself, or provide a false perception of reality.">Deceive</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_deceive_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_deceive_statbonus_display" value="(@{skill_deceive_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wit</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_deceive_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_deceive_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_deceive_rankbonus_display" value="(@{skill_deceive_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_deceive_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_deceive_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_deceive_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_deceive_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_deceive_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_deceive_totalbonus_display" value="(@{skill_deceive_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table-subheading">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Lore
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_lore_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_arcana" value="@{wtype} &{template:skillroll} {{type=Arcana}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_arcana_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_arcana_totalbonus}]]}}" title="Arcana Skill Roll">
|
||
<span class="skill-name" title="The ability to read magical runes, use and identify enchanted items or materials, and recognize, or analyze supernatural creatures and phenomena.">Arcana</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_arcana_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_arcana_statbonus_display" value="(@{skill_arcana_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wit</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_arcana_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_arcana_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_arcana_rankbonus_display" value="(@{skill_arcana_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_arcana_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_arcana_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_arcana_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_arcana_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_arcana_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_arcana_totalbonus_display" value="(@{skill_arcana_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_charisma" value="@{wtype} &{template:skillroll} {{type=Charisma}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_charisma_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_charisma_totalbonus}]]}}" title="Charisma Skill Roll">
|
||
<span class="skill-name" title="The ability to convince others in doing something without resorting to tricks or misdirection">Charisma</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_charisma_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_charisma_statbonus_display" value="(@{skill_charisma_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">bea</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_charisma_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_charisma_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_charisma_rankbonus_display" value="(@{skill_charisma_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_charisma_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_charisma_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_charisma_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_charisma_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_charisma_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_charisma_totalbonus_display" value="(@{skill_charisma_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_charisma" value="@{wtype} &{template:skillroll} {{type=Cultures}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_cultures_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_cultures_totalbonus}]]}}" title="Cultures Skill Roll">
|
||
<span class="skill-name" title="The knowledge of the customs, beliefs, traditions, institutions, and languages of various cultures">Cultures</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_cultures_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_cultures_statbonus_display" value="(@{skill_cultures_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wit</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_cultures_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_cultures_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_cultures_rankbonus_display" value="(@{skill_cultures_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_cultures_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_cultures_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_cultures_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_cultures_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_cultures_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_cultures_totalbonus_display" value="(@{skill_cultures_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_healer" value="@{wtype} &{template:skillroll} {{type=Healer}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_healer_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_healer_totalbonus}]]}}" title="Healer Skill Roll">
|
||
<span class="skill-name" title="The general medical knowledge, and its application to treat wounds and injuries or to cure diseases or other ailments.">Healer</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_healer_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_healer_statbonus_display" value="(@{skill_healer_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">wsd</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_healer_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_healer_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_healer_rankbonus_display" value="(@{skill_healer_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_healer_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_healer_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_healer_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_healer_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_healer_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_healer_totalbonus_display" value="(@{skill_healer_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<button type="roll" class="roll-button" name="roll_skill_songstales" value="@{wtype} &{template:skillroll} {{type=Songs & Tales}} {{character=@{character_name}}} {{subtags=Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{skill_songstales_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{skill_songstales_totalbonus}]]}}" title="Songs & Tales Skill Roll">
|
||
<span class="skill-name" title="One's scholarly education and knowledge of folklore, history, myths and legends, as well as one's ability to tell them in an entertaining manner.">Songs & Tales</span>
|
||
</button>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_songstales_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_songstales_statbonus_display" value="(@{skill_songstales_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">bea</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_songstales_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_songstales_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_songstales_rankbonus_display" value="(@{skill_songstales_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_songstales_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_songstales_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_songstales_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_songstales_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_songstales_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_songstales_totalbonus_display" value="(@{skill_songstales_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table-subheading">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Body
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_body_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="skills-grid-table">
|
||
<div class="skills-cell skills-name-cell">
|
||
<span class="skill-name" title="The ability to endure physical punishment like wounds, scratches, and pain">Body</span>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_skill_body_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_body_statbonus_display" value="(@{skill_body_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<span class="stats-name">for</span>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_body_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_body_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_skill_body_rankbonus_display" value="(@{skill_body_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_body_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_body_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_body_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_skill_body_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_skill_body_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_skill_body_totalbonus_display" value="(@{skill_body_totalbonus})" disabled />
|
||
</div>
|
||
</div>
|
||
|
||
<h3>Specialty Skills</h3>
|
||
<div class="specialtyskills-grid-table table-header" align="center">
|
||
<div class="skills-cell" title="">
|
||
Skill name
|
||
</div>
|
||
<div class="skills-cell" title="The degree of natural affinity with the skill.">
|
||
Bonus
|
||
</div>
|
||
<div class="skills-cell" title="The stat representing the natural affinity with the skill.">
|
||
Stat
|
||
</div>
|
||
<div class="skills-cell" title="The number of skill ranks representing training in the skill (cultural skill ranks, vocational development points, background options)">
|
||
#
|
||
</div>
|
||
<div class="skills-cell" title="The skill rank bonus (automatically calculated from the number of skill ranks)">
|
||
Rank
|
||
</div>
|
||
<div class="skills-cell" title="The fixed vocational bonus for the skill.">
|
||
Voc
|
||
</div>
|
||
<div class="skills-cell" title="The fixed kin bonus for the skill.">
|
||
Kin
|
||
</div>
|
||
<div class="skills-cell" title="The special bonus can accumulate from different sources: equipment, situation, background bonuses, spells, etc.">
|
||
Spec
|
||
</div>
|
||
<div class="skills-cell" title="The non-cumulative item bonus derives from special equipment or magical items.">
|
||
Item
|
||
</div>
|
||
<div class="skills-cell" title="The total skill bonus.">
|
||
Total
|
||
</div>
|
||
<div>
|
||
</div>
|
||
</div>
|
||
<fieldset class="repeating_specialtyskill">
|
||
<div class="specialtyskills-grid-table" align="center">
|
||
<div class="skills-cell skills-name-cell">
|
||
<input type="text" class="specialtyskill-name" name="attr_specialtyskill_name" spellcheck="false" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_specialtyskill_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_specialtyskill_statbonus_display" value="(@{specialtyskill_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<select name="attr_specialtyskill_statbonus_selector" class="specialtyskill-stat">
|
||
<option value="brn">BRN</option>
|
||
<option value="swi">SWI</option>
|
||
<option value="for">FOR</option>
|
||
<option value="wit">WIT</option>
|
||
<option value="wsd">WSD</option>
|
||
<option value="bea">BEA</option>
|
||
</select>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_specialtyskill_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_specialtyskill_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_specialtyskill_rankbonus_display" value="(@{specialtyskill_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_specialtyskill_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_specialtyskill_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_specialtyskill_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_specialtyskill_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_specialtyskill_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_specialtyskill_totalbonus_display" value="(@{specialtyskill_totalbonus})" disabled />
|
||
</div>
|
||
<div>
|
||
<button type="roll" class="rolld100" name="roll_skill_specialtyskill" value="@{wtype} &{template:skillroll} {{type=@{specialtyskill_name}}} {{character=@{character_name}}} {{subtags=Specialty Skill Roll}} {{roll=[[1d100!>95cs>95cf<5 + @{specialtyskill_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{skill=[[@{specialtyskill_totalbonus}]]}}" title="Specialty Skill Roll">
|
||
<!-- -->
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
|
||
|
||
<div class="sheet-combat">
|
||
<section>
|
||
<div class="movement-defense-grid-section">
|
||
|
||
<span class="block">
|
||
<h3>Hit points</h3>
|
||
<div class="hitpoint-grid-section">
|
||
<div>
|
||
<span class="large-roundborder">
|
||
<input type="number" class="hundred current-hit-points hitpoint-color" name="attr_hit_points" min="0" value="0"/><br/>
|
||
</span>
|
||
<div class="roundborder-label" title="The manually maintained indicator of current hit points.">current hit points</div>
|
||
</div>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="total-hit-points" class="field-label" title="The total hit points equal to the Body skill total.">total hits</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred total" id="total-hit-points" name="attr_total_hit_points" value="@{skill_body_totalbonus}" disabled />
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="maxhits" class="field-label" title="The maximum number of hit points based on kin.">max hits</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" id="maxhits" name="attr_max_hitpoints" min="0" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="bleeding-rate" class="field-label" title="Bleeding rate (per round) represents a gradual weakening due to blood loss, pain, and general weariness.">bleeding</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" class="hundred" id="bleeding-rate" name="attr_hitpoints_bleed" value="0" />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</span>
|
||
|
||
<div class="movement-block block">
|
||
<h3>Movement</h3>
|
||
<div class="tablewrapper">
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="encumbrance-level" class="field-label header-field-label" title="Encumbrance Level (EL) represents how much characters are hampered in their movements and actions by the overall weight and volume of the items they carry.">enc. level</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<select name="attr_encumbrance_level" id="encumbrance-level" class="encumbrance-dropdown">
|
||
<option value="unencumbered">Unencumbered</option>
|
||
<option value="lightly_encumbered">Lightly Encumbered</option>
|
||
<option value="encumbered">Encumbered</option>
|
||
<option value="heavily_encumbered">Heavily Encumbered</option>
|
||
<option value="over_encumbered">Over Encumbered</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablewrapper">
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="base-movement-rate" class="field-label header-field-label" title="Base movement rate is usually 15 m/rnd.">base rate</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" id="base-movement-rate" class="hundred" name="attr_base_movement_rate" value="0" />
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="effective-movement-rate" class="field-label header-field-label" title="Effective Movement Rate is the Base Movement Rate modified by Encumbrance Level and Weariness.">effective rate</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_effective_movement_rate" value="0"/>
|
||
<input type="number" class="hundred total" name="attr_effective_movement_rate_display" value="@{effective_movement_rate}" disabled />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="defense-block block">
|
||
<input type="hidden" name="attr_total_armor_melee_def_bonus" value="0" />
|
||
<input type="hidden" name="attr_total_armor_missile_def_bonus" value="0" />
|
||
|
||
<input type="hidden" name="attr_total_def_melee_bonus" value="0" />
|
||
<input type="hidden" name="attr_total_def_missile_bonus" value="0" />
|
||
|
||
<h3>Defense</h3>
|
||
<div class="tablewrapper">
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="def-item-bonus" class="field-label header-field-label" title="">item bonus</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" id="def-item-bonus" class="hundred" name="attr_def_item_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<label for="def-spec-bonus" class="field-label header-field-label" title="">special bonus</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" id="def-spec-bonus" class="hundred" name="attr_def_spec_bonus" value="0" />
|
||
</div>
|
||
<div class="celllike">
|
||
<label for="effective-swi" class="field-label header-field-label" title="Effective Swiftness equals to SWI modified by the minimum 'Max SWI to DEF' armor constraint.">effective swi</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" id="effective-swi" class="hundred" name="attr_effective_swi_bonus_display" value="@{effective_swi_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablewrapper">
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="def-total_armor_melee_bonus" class="field-label header-field-label" title="The sum of Armor Defensive Bonuses vs. Melee">armor vs. melee</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" id="def-total_armor_melee_bonus" class="hundred" name="attr_total_armor_melee_def_bonus_display" value="@{total_armor_melee_def_bonus}" disabled/>
|
||
</div>
|
||
<div class="celllike">
|
||
<label for="def-total_armor_missile_bonus" class="field-label header-field-label" title="The sum of Armor Defensive Bonuses vs. Missiles">armor vs. missile</label>
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="number" id="def-total_armor_missile_bonus" class="hundred" name="attr_total_armor_missile_def_bonus_display" value="@{total_armor_missile_def_bonus}" disabled/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike" style="text-align: right;">
|
||
<span class="roundborder-label" title="Total DEF bonus vs. Melee Attacks">melee defense</span>
|
||
<span class="medium-squareborder">
|
||
<input type="number" id="def-total-melee-bonus" class="hundred defensive-bonus defense-color" name="attr_total_def_melee_bonus_display" value="@{total_def_melee_bonus}" disabled/>
|
||
</span>
|
||
|
||
</div>
|
||
<div class="celllike" style="text-align: left;">
|
||
<span class="roundborder-label" title="Total DEF bonus vs. Ranged Attacks">ranged defense</span>
|
||
<span class="medium-squareborder">
|
||
<input type="number" id="def-total-missile-bonus" class="hundred defensive-bonus defense-color" name="attr_total_def_missile_bonus_display" value="@{total_def_missile_bonus}" disabled/>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="status-grid-section">
|
||
|
||
<div class="block">
|
||
<h3>Conditions</h3>
|
||
<div class="conditions-grid-section">
|
||
<span class="condition-name" title="A Dying character will die in a given number of rounds unless condition is removed.">dying</span> <input type="checkbox" name="attr_condition_dying" value="1" />
|
||
<span class="condition-name" title="Characters attacked by an opponent with a melee attack are considered to be Engaged with that opponent. Engaged characters cannot take Movement Actions unless they Disengage or try to Run Away first.">engaged</span> <input type="checkbox" name="attr_condition_engaged" value="1" />
|
||
<span class="condition-name" title="Frightened creatures cannot attack the object of their fear (but can still Parry if attacked), and must attempt to flee from it, if possible.">frightened</span> <input type="checkbox" name="attr_condition_frightened" value="1" />
|
||
<span class="condition-name" title="Held characters are restrained by some other creature or force and cannot move freely.">held</span> <input type="checkbox" name="attr_condition_held" value="1" />
|
||
<span class="condition-name" title="Characters that are knocked out, sleeping, paralyzed, or otherwise unable to defend themselves are Incapacitated.">incapacitated</span> <input type="checkbox" name="attr_condition_incapacitated" value="1" />
|
||
<span class="condition-name" title="Characters that are knocked down or lying on the ground are Prone.">prone</span> <input type="checkbox" name="attr_condition_prone" value="1" />
|
||
<span class="condition-name" title="Stunned characters are temporarily dazed, staggered, or disoriented.">stunned</span> <input type="checkbox" name="attr_condition_stunned" value="1" />
|
||
<span class="condition-name" title="A character is considered Surprised when they’re attacked without being aware of it.">surprised</span> <input type="checkbox" name="attr_condition_surprised" value="1" />
|
||
<span class="condition-name" title="Weary characters move at half their normal Move Rate, can take only one Action each Round, and cannot recover HPs or heal from Bleeding and Injuries until this Condition is removed.">weary</span> <input type="checkbox" name="attr_condition_weary" value="1" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="block">
|
||
<h3>Penalties</h3>
|
||
<input type="hidden" name="attr_bruised_penalty" value="0" />
|
||
<input type="hidden" name="attr_total_armor_movepenalty" value="0" />
|
||
<input type="hidden" name="attr_total_armor_cmbpenalty" value="0" />
|
||
<input type="hidden" name="attr_total_armor_perceptionpenalty" value="0" />
|
||
<input type="hidden" name="attr_total_injury_penalty" value="0" />
|
||
<input type="hidden" name="attr_total_enc_penalty" value="0" />
|
||
|
||
<input type="hidden" name="attr_total_activity_penalty" value="0" />
|
||
<input type="hidden" name="attr_total_activity_penalty_explanation" value="" />
|
||
|
||
<input type="hidden" name="attr_total_cmb_penalty" value="0" />
|
||
<input type="hidden" name="attr_total_cmb_penalty_explanation" value="" />
|
||
|
||
<input type="hidden" name="attr_total_movement_penalty" value="0" />
|
||
<input type="hidden" name="attr_total_movement_penalty_explanation" value="" />
|
||
|
||
<input type="hidden" name="attr_total_def_penalty" value="0" />
|
||
|
||
<input type="hidden" name="attr_armor_min_swi_constraint" value="0" />
|
||
<input type="hidden" name="attr_effective_swi_bonus" value="0" />
|
||
|
||
|
||
<div class="penalty-grid-section">
|
||
<div class="penalty-grid-top-row">
|
||
<span class="large-roundborder">
|
||
<input type="number" class="thousand current-hit-points penalty-color" name="attr_generic_activity_penalty" min="0" value="0" title="Generic Activity Penalty"/>
|
||
</span>
|
||
<div class="roundborder-label" title="Manually entered temporary or persistent activity penalty.">generic penalty</div>
|
||
</div>
|
||
<div class="penalty-grid-top-row">
|
||
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="total-activity-penalty" class="roundborder-label penalty-label" title="Total Activity Penalty: an automatically compiled sum of penalties from hitloss, injuries, encumbrance and user input. (applied automatically)">total activity penalty</label>
|
||
<input id="total-activity-penalty" class="status_explanation" type="text" name="attr_total_activity_penalty_explanation_display" value="(@{total_activity_penalty_explanation})" disabled/>
|
||
</div>
|
||
<div class="celllike">
|
||
<span class="medium-squareborder">
|
||
<input type="number" id="total-activity-penalty" class="thousand current-hit-points automaticfield-color penalty-label" name="attr_total_activity_penalty_display" value="(@{total_activity_penalty})" disabled />
|
||
</span>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
|
||
</div>
|
||
<div class="celllike">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="total-cmb-penalty" class="field-label penalty-label" title="Additional CMB Penalty: an automatically compiled sum of penalties to Combat Bonus from armor and conditions. This penalty is additional to the total activity penalty and applies only to Combat bonus.">additional cmb penalty</label>
|
||
<input class="status_explanation" id="total-cmb-penalty" name="attr_total_cmb_penalty_explanation_display" value="(@{total_cmb_penalty_explanation})" disabled/>
|
||
</div>
|
||
<div class="celllike">
|
||
<span class="small-squareborder">
|
||
<input type="number" id="def-total-melee-bonus" class="thousand penalty automaticfield-color penalty-label" name="attr_total_cmb_penalty_display" value="(@{total_cmb_penalty})" disabled/>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="celllike">
|
||
<label for="total-movement-penalty" class="field-label penalty-label" title="Additional Movement Penalty: an automatically compiled sum of penalties to Movement Bonus from armor (offset by armor skill). This penalty is additional to the activity penalty and applies to movement and spell-casting.">additional movement penalty</label>
|
||
<input class="status_explanation" id="total-movement-penalty" type="text" name="attr_total_movement_penalty_explanation_display" value="(@{total_movement_penalty_explanation})" disabled/>
|
||
</div>
|
||
<div class="celllike">
|
||
<span class="small-squareborder">
|
||
<input type="number" class="thousand penalty automaticfield-color penalty-label" name="attr_total_movement_penalty_display" value="(@{total_movement_penalty})" disabled/>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="block">
|
||
<h3 title="You can use this section to keep track of the various injuries. The penalties will be added to total activity penalty.">Injuries</h3>
|
||
<div class="injury-grid injury table-header">
|
||
<span title="Injuries are categorized into three severities, according to the penalty they impose a character: Minor, Serious, Crippling.">
|
||
Severity
|
||
</span>
|
||
<span title="The penalty to all of the injured character’s Skill and Attack Rolls. (automatically added)">
|
||
Penalty
|
||
</span>
|
||
<span title="The nature and location of the injury.">
|
||
Description
|
||
</span>
|
||
</div>
|
||
<fieldset class="repeating_injury">
|
||
<div class="injury-grid injury">
|
||
<span>
|
||
<input type="text" name="attr_injury_severity" class="injury-severity" spellcheck="false"/>
|
||
</span>
|
||
<span>
|
||
<input type="number" name="attr_injury_penalty" class="hundred" max="0" value="0"/>
|
||
</span>
|
||
<span>
|
||
<input type="text" name="attr_injury_description" class="injury-description" spellcheck="false"/>
|
||
</span>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section>
|
||
<span class="block">
|
||
<h3>Armor & Shield</h3>
|
||
<div class="armor-grid-section table-header">
|
||
<div class="">
|
||
<span></span>
|
||
</div>
|
||
<div class="">
|
||
<span title="">Armor/Shield</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="This refers to the column on the Attack Tables (None NA, Light LA, Medium MA, or Heavy HA).">Type</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The body parts or zones actually protected by the armor worn.">Zones<br/>Protected</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="Maximum Swiftness bonus applicable to Defense when wearing the armor. (automatically applied)">Max SWI</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="Penalty to Skill Rolls for moving about and casting Spells while wearing the armor. (automatically applied)">Move<br/>Penalty</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="Penalty to the Combat Bonus (CMB). This penalty cannot be offset. (automatically applied)">CMB<br/>Penalty</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="Penalty to the Perception Skill bonus. This penalty cannot be offset. (automatically applied)">Percept.<br/>Penalty</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="Straight bonus to the Defense (DEF) against melee attacks. (automatically applied)">DEF vs.<br/>Melee</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="Straight bonus to the Defense (DEF) against ranged attacks. (automatically applied)">DEF vs.<br/>Missile</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="A list of the special Qualities possessed by the armor, if any.">Qualities</span>
|
||
</div>
|
||
</div>
|
||
<fieldset class="repeating_armor">
|
||
<div class="armor-grid-section">
|
||
<div class="">
|
||
<input type="checkbox" name="attr_armor_isactive" class="armor-isactive" value="1" title="A toggle to don and doff the armor making it active or inactive with respect to automatic mechanisms." checked/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_armor_name" class="armor-name"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_armor_type" class="armor-type"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_armor_zones" class="armor-zones"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_armor_maxswi" class="thousand" min="0" value="0"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_armor_movepenalty" class="thousand" value="0"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_armor_cmbpenalty" class="thousand" value="0"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_armor_perceptionpenalty" class="thousand" value="0"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_armor_melee_def_bonus" class="thousand" min="0" value="0"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_armor_missile_def_bonus" class="thousand" min="0" value="0"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_armor_qualities" class="armor-qualities"/>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</span>
|
||
<span class="block">
|
||
<h3>Weapons & Attacks</h3>
|
||
|
||
<div class="weapons-grid-section table-header">
|
||
<div class="">
|
||
<span title="">Weapon/attack</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The weapon can be used with one hand (1H), two hands (2H) or both (1H/2H).">Hands</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The length and reach of the weapon.">Length</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The relevant skill for Combat Bonus (CMB).">Skill(s)</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The Clumsy Range is the range in which the attacker fumbles the weapon when attacking.">CR</span>
|
||
</div>
|
||
<div class="The Attack Table that is consulted to determine the result of attacks with this weapon.">
|
||
<span>Attack<br/>Table</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The maximum result that the modified Attack Roll can get on the Attack Table.">Max.<br/>Result</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The primary type of Critical Strike (e.g. Impact, Pierce, Cut, Grapple) dealt by the weapon.">Primary<br/>Critical</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The alternate type of Critical Strike dealt by the weapon. If present, the attacker can freely choose to inflict this type of Critical Strike instead of the primary type.">Alt.<br/>Critical</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="The base range in meters for the weapon to be thrown or fired.">Base<br/>Range</span>
|
||
</div>
|
||
<div class="A list of the special Qualities possessed by the weapon, if it has any.">
|
||
<span>Qualities</span>
|
||
</div>
|
||
</div>
|
||
<fieldset class="repeating_weapons">
|
||
<div class="weapons-grid-section">
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_name" class="weapon-name"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_hands" class="weapon-hands"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_length" class="weapon-lengthreach"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_skill" class="weapon-skill"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_weapon_clumsyrange" class="hundred" value="0" />
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_attack_table" class="weapon-attack-table"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" class="thousand" name="attr_weapon_maxres" value="0" />
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_primary_critical" class="weapon-critical"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_alternate_critical" class="weapon-critical"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="number" name="attr_weapon_base_range" class="thousand" value="0" />
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_weapon_qualities" class="weapon-qualities" />
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</span>
|
||
|
||
</section>
|
||
</div>
|
||
|
||
|
||
<div class="sheet-spells">
|
||
<input type="hidden" name="attr_magicpoints_total" value="0" />
|
||
<input type="hidden" name="attr_magicpoints_statgain" value="0" />
|
||
<input type="hidden" name="attr_magicpoints_statgain_total" value="0" />
|
||
<input type="hidden" name="attr_magicpoints_vocgain_total" value="0" />
|
||
|
||
<div class="magic-grid-section">
|
||
<div class="block">
|
||
<h3>Magic Points</h3>
|
||
<div>
|
||
<span class="large-roundborder">
|
||
<input type="number" class="hundred current-hit-points hitpoint-color" name="attr_magicpoints_current" min="0" value="0"/><br/>
|
||
</span>
|
||
<div class="roundborder-label" title="The manually maintained indicator of current magic points.">current</div>
|
||
</div>
|
||
|
||
<div class="magicpoint-grid-section">
|
||
<label for="spellcasting-stat" class="field-label">magic stat</label>
|
||
<span>
|
||
<select id="spellcasting-stat" name="attr_spellcasting_stat" class="specialtyskill-stat">
|
||
<option value="wit">WIT</option>
|
||
<option value="wsd">WSD</option>
|
||
<option value="bea" selected>BEA</option>
|
||
</select>
|
||
</span>
|
||
<label for="magicpoints-statgain" class="field-label" title="The number of magic-points gained per level from Magic Stat. (automatically included in the total)">Stat gain/level</label>
|
||
<span class="field-input"><input type="number" id="magicpoints-statgain" name="attr_magicpoints_statgain_display" class="hundred" value="@{magicpoints_statgain}" disabled /></span>
|
||
<label for="magicpoints-vocgain" class="field-label" title="The number of magic-points gained per level from Vocation. (automatically included in the total)">voc gain/level</label>
|
||
<span class="field-input"><input type="number" id="magicpoints-vocgain" name="attr_magicpoints_vocgain" class="hundred" value="0" /></span>
|
||
<label for="magicpoints-kin" class="field-label">kin</label>
|
||
<span class="field-input"><input type="number" id="magicpoints-kin" name="attr_magicpoints_kin" class="hundred" value="0" /></span>
|
||
<label for="magicpoints-spec" class="field-label">special</label>
|
||
<span class="field-input"><input type="number" id="magicpoints-spec" name="attr_magicpoints_spec" class="hundred" value="0" /></span>
|
||
<label for="magicpoints-total" class="field-label">total</label>
|
||
<span class="field-input"><input type="number" id="magicpoints-total" name="attr_magicpoints_total_display" class="hundred total" value="@{magicpoints_total}" disabled/></span>
|
||
</div>
|
||
</div>
|
||
<div class="block">
|
||
<h3>Spells</h3>
|
||
<div class="spelllore-grid-table table-header" align="center">
|
||
<div class="skills-cell" title="">Lore name</div>
|
||
<div class="skills-cell" title="The degree of natural affinity with the lore.">
|
||
Bonus
|
||
</div>
|
||
<div class="skills-cell" title="The stat representing the natural affinity with the lore.">
|
||
Stat
|
||
</div>
|
||
<div class="skills-cell" title="The number of skill ranks representing training in the lore.">
|
||
#
|
||
</div>
|
||
<div class="skills-cell" title="The skill rank bonus (automatically calculated from the number of lore ranks)">
|
||
Rank
|
||
</div>
|
||
<div class="skills-cell" title="The fixed vocational bonus for the lore.">
|
||
Voc
|
||
</div>
|
||
<div class="skills-cell" title="The fixed kin bonus for the lore.">
|
||
Kin
|
||
</div>
|
||
<div class="skills-cell" title="The special bonus can accumulate from different sources: equipment, situation, background bonuses, spells, etc.">
|
||
Spec
|
||
</div>
|
||
<div class="skills-cell" title="The non-cumulative item bonus derives from special equipment or magical items.">
|
||
Item
|
||
</div>
|
||
<div class="skills-cell" title="The total skill bonus.">
|
||
Total
|
||
</div>
|
||
<div>
|
||
</div>
|
||
</div>
|
||
<div class="spelllore-grid-table-subheading">
|
||
<div class="skills-subheader skills-subheader-text">
|
||
Spell Lores
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-label">
|
||
Development Points Per Level
|
||
</div>
|
||
<div class="skills-subheader skills-subheader-points">
|
||
<input type="number" class="thousand total" name="attr_spelllore_devpts" value="0" />
|
||
</div>
|
||
</div>
|
||
<fieldset class="repeating_spelllore">
|
||
<div class="spelllore-grid-table" align="center">
|
||
<div class="skills-cell skills-name-cell">
|
||
<input type="text" class="spelllore-name" name="attr_spelllore_name" spellcheck="false" />
|
||
</div>
|
||
<div class="celllike">
|
||
<input type="hidden" name="attr_spelllore_statbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_spelllore_statbonus_display" value="(@{spelllore_statbonus})" disabled />
|
||
</div>
|
||
<div class="celllike stat-abbr">
|
||
<select name="attr_spelllore_statbonus_selector" class="specialtyskill-stat">
|
||
<option value="wit">WIT</option>
|
||
<option value="wsd">WSD</option>
|
||
<option value="bea" selected>BEA</option>
|
||
</select>
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_spelllore_numberofranks" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_spelllore_rankbonus" value="0" />
|
||
<input type="number" class="thousand" name="attr_spelllore_rankbonus_display" value="(@{spelllore_rankbonus})" disabled />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_spelllore_vocbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_spelllore_kinbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_spelllore_specbonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="number" class="thousand" name="attr_spelllore_itembonus" value="0" />
|
||
</div>
|
||
<div class="skills-cell">
|
||
<input type="hidden" name="attr_spelllore_totalbonus" value="0" />
|
||
<input type="number" class="thousand total" name="attr_spelllore_totalbonus_display" value="(@{spelllore_totalbonus})" disabled />
|
||
</div>
|
||
<div>
|
||
<button type="roll" class="rolld100" name="roll_skill_spelllore" value="@{wtype} &{template:spellroll} {{type=@{spelllore_name}}} {{character=@{character_name}}} {{subtags=Spell Casting Roll}} {{roll=[[1d100!>95cs>95cf<26 + @{spelllore_totalbonus}[BONUS] + @{total_activity_penalty}[ACTIVITY PENALTY] + @{total_movement_penalty}[MOVE PENALTY] + ?{Modifier|0}[MODIFIER]]]}} {{activity_penalty=[[@{total_activity_penalty}]]}} {{movement_penalty=[[@{total_movement_penalty}]]}} {{skill=[[@{spelllore_totalbonus}]]}}" title="Spell Casting Roll">
|
||
<!-- -->
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sheet-equipment">
|
||
<div class="equipment-grid-section">
|
||
<section class="block">
|
||
<h3>Equipment, Gear & Vehicles</h3>
|
||
<div class="gear-grid-section table-header">
|
||
<div class="">
|
||
<span title="">Item</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="">Location</span>
|
||
</div>
|
||
<div class="">
|
||
<span title="">Description</span>
|
||
</div>
|
||
</div>
|
||
<fieldset class="repeating_equipment">
|
||
<div class="gear-grid-section">
|
||
<div class="">
|
||
<input type="text" name="attr_item_name" class="item-name" spellcheck="false" />
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_item_location" class="item-location" spellcheck="false"/>
|
||
</div>
|
||
<div class="">
|
||
<input type="text" name="attr_item_description" class="item-description" spellcheck="false"/>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</section>
|
||
<section>
|
||
<div class="block">
|
||
<h3>Wealth Level & Status</h3>
|
||
<div class="wealthstatus-grid-section">
|
||
<div class="">
|
||
<select name="attr_wealth_level" class="wealthlevel-dropdown" title="The wealth and social status of a character are measured in Wealth Levels (WL), ranging from 0 to 5.">
|
||
<option value="wl0">0: Serf or Outcast</option>
|
||
<option value="wl1">1: Struggling</option>
|
||
<option value="wl2">2: Commoner</option>
|
||
<option value="wl3">3: Gentry</option>
|
||
<option value="wl4">4: Lesser Nobility</option>
|
||
<option value="wl5">5: Greater Nobility</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="block">
|
||
<h3>Character Size</h3>
|
||
<div>
|
||
<select name="attr_character_size" class="character-size-dropdown">
|
||
<option value="small">Small</option>
|
||
<option value="medium" selected>Medium</option>
|
||
<option value="large">Large</option>
|
||
<option value="huge">Huge</option>
|
||
<option value="colossal">Colossal</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="block">
|
||
<h3>Magic Items</h3>
|
||
<fieldset class="repeating_magicitems">
|
||
<div class="">
|
||
<input type="text" name="attr_magicitem" class="magicitem" spellcheck="false"/>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<div class="notes-grid-section">
|
||
<div class="block">
|
||
<h3>Notable People & NPCs</h3>
|
||
<fieldset class="repeating_people">
|
||
<div class="">
|
||
<input type="text" name="attr_people" class="people" spellcheck="false"/>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div class="block">
|
||
<h3>Significant Places</h3>
|
||
<fieldset class="repeating_locations">
|
||
<div class="">
|
||
<input type="text" name="attr_location" class="location" spellcheck="false"/>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="companion-grid-section">
|
||
<section class="block">
|
||
<h3>Companion Animal</h3>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-name" type="text" id="companion-name" name="attr_companion_name" />
|
||
<label for="companion-name" class="header-field-label">name</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-type" type="text" id="companion-type" name="attr_companion_type" />
|
||
<label for="companion-type" class="header-field-label">type</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="mount-movement-rate" type="text" id="companion-move" name="attr_companion_move" />
|
||
<label for="companion-move" class="field-label header-field-label" title="The Movement Rate (in meters/Round) of the creature.">move rate</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-number-field" type="number" id="companion-hp" name="attr_companion_hp" value="0"/>
|
||
<label for="companion-hp" class="field-label header-field-label">hit points</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-number-field" type="number" id="companion-def" name="attr_companion_def" value="0"/>
|
||
<label for="companion-def" class="field-label header-field-label" title="DEF bonus of the creature. It already factors the creature’s SWI, shield, magical or special bonuses.">defense</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-armortype" type="text" id="companion-armortype" name="attr_companion_armortype" />
|
||
<label for="companion-armortype" class="field-label header-field-label" title="Armor Type of the creature (either natural armor or typical armor worn).">armor type</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-attacktype" type="text" id="companion-attacktype-1st" name="attr_companion_attacktype_1st" />
|
||
<label for="companion-attacktype-1st" class="field-label header-field-label">1st attack type</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="number-field-wide" type="number" id="companion-cmb-1st" name="attr_companion_cmb_1st" value="0"/>
|
||
<label for="companion-cmb-1st" class="field-label header-field-label">1st cmb</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-attacktype" type="text" id="companion-attacktype-2nd" name="attr_companion_attacktype_2nd" />
|
||
<label for="companion-attacktype-2nd" class="field-label header-field-label">2nd attack type</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="number-field-wide" type="number" id="companion-cmb-2nd" name="attr_companion_cmb_2nd" value="0"/>
|
||
<label for="companion-cmb-2nd" class="field-label header-field-label">2nd cmb</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section class="block">
|
||
<h3>Riding Animal</h3>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-name" type="text" id="mount-name" name="attr_mount_name" />
|
||
<label for="mount-name" class="header-field-label">name</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-type" type="text" id="mount-type" name="attr_mount_type" />
|
||
<label for="mount-type" class="header-field-label">type</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="mount-movement-rate" type="text" id="mount-move" name="attr_mount_move" />
|
||
<label for="mount-move" class="field-label header-field-label" title="The Movement Rate (in meters/Round) of the creature.">move rate</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-number-field" type="number" id="mount-hp" name="attr_mount_hp" value="0"/>
|
||
<label for="mount-hp" class="field-label header-field-label">hit points</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-number-field" type="number" id="mount-def" name="attr_mount_def" value="0"/>
|
||
<label for="mount-def" class="field-label header-field-label" title="DEF bonus of the creature. It already factors the creature’s SWI, shield, magical or special bonuses.">defense</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-armortype" type="text" id="mount-armortype" name="attr_mount_armortype" />
|
||
<label for="mount-armortype" class="field-label header-field-label" title="Armor Type of the creature (either natural armor or typical armor worn).">armor type</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="thousand" type="number" id="mount-ride-bonus" name="attr_mount_ride_bonus" value="0"/>
|
||
<label for="mount-ride-bonus" class="field-label header-field-label" title="The ride bonus for this mount.">ride</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tablelike">
|
||
<div class="rowlike">
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-attacktype" type="text" id="mount-attacktype-1st" name="attr_mount_attacktype_1st" />
|
||
<label for="mount-attacktype-1st" class="field-label header-field-label">1st attack type</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="number-field-wide" type="number" id="mount-cmb-1st" name="attr_mount_cmb_1st" value="0"/>
|
||
<label for="mount-cmb-1st" class="field-label header-field-label">1st cmb</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="companion-attacktype" type="text" id="mount-attacktype-2nd" name="attr_mount_attacktype_2nd" />
|
||
<label for="mount-attacktype-2nd" class="field-label header-field-label">2nd attack type</label>
|
||
</div>
|
||
<div class="celllike companion-align labeled-field">
|
||
<input class="number-field-wide" type="number" id="mount-cmb-2nd" name="attr_mount_cmb_2nd" value="0"/>
|
||
<label for="mount-cmb-2nd" class="field-label header-field-label">2nd cmb</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
|
||
<div class="experience-tracker-section">
|
||
<section>
|
||
<h3>Experience Points Tracking</h3>
|
||
<div class="experience-grid-section">
|
||
<div class="block experience-grid-column">
|
||
<span><input type="checkbox" name="attr_experience_tracker1" value="1"/></span>
|
||
<span>You travelled to or explored a location you’ve never seen before.</span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker2" value="1"/></span>
|
||
<span>You faced dangerous foes and/or difficult situations.</span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker3" value="1"/></span>
|
||
<span>You completed a mission or quest, or ended a significant story arc.</span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker4" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker4_description" spellcheck="false" /></span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker5" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker5_description" spellcheck="false" /></span>
|
||
</div>
|
||
<div class="block experience-grid-column">
|
||
<span><input type="checkbox" name="attr_experience_tracker6" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker6_description" spellcheck="false" /></span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker7" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker7_description" spellcheck="false" /></span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker8" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker8_description" spellcheck="false" /></span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker9" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker9_description" spellcheck="false" /></span>
|
||
|
||
<span><input type="checkbox" name="attr_experience_tracker10" value="1"/></span>
|
||
<span><input type="text" class="experience-tracker-description" name="attr_experience_tracker10_description" spellcheck="false" /></span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sheet-settings">
|
||
<h3>Settings</h3>
|
||
<div class="settings-grid-section">
|
||
<div class="whisper-settings">
|
||
<div class="skills-subheader skills-subheader-text">Whisper</div>
|
||
<p>Choose whether you want to share your rolls with other players or not.</p>
|
||
<select name="attr_wtype">
|
||
<option value="">Never Whisper Rolls</option>
|
||
<option value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }">Query Whisper</option>
|
||
<option value="/w gm ">Always Whisper Rolls</option>
|
||
</select>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
<div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</main>
|
||
|
||
|
||
|
||
<script type="text/worker">
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Tabs button worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const buttonlist = ["personal", "combat", "spells", "equipment", "settings"];
|
||
buttonlist.forEach(button => {
|
||
on(`clicked:${button}`, function() {
|
||
setAttrs({
|
||
sheet_tab: button
|
||
});
|
||
});
|
||
});
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Stats worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const stats = ["brn", "swi", "for", "wit", "wsd", "bea"];
|
||
stats.forEach( stat => {
|
||
on("sheet:opened " +
|
||
[`change:stats_${stat}_base_bonus`, `change:stats_${stat}_kin_bonus`, `change:stats_${stat}_spec_bonus`].join(" "), function() {
|
||
getAttrs([`stats_${stat}_base_bonus`, `stats_${stat}_kin_bonus`, `stats_${stat}_spec_bonus`], function(values) {
|
||
|
||
let base_bonus = parseInt(values[`stats_${stat}_base_bonus`],10) || 0;
|
||
let kin_bonus = parseInt(values[`stats_${stat}_kin_bonus`],10) || 0;
|
||
let spec_bonus = parseInt(values[`stats_${stat}_spec_bonus`],10) || 0;
|
||
let total_bonus = base_bonus + kin_bonus + spec_bonus;
|
||
|
||
setAttrs({
|
||
[`stats_${stat}_total_bonus`]: total_bonus,
|
||
});
|
||
switch(stat) {
|
||
case "brn":
|
||
setAttrs({
|
||
skill_armor_statbonus: 0,
|
||
skill_blunt_statbonus: total_bonus,
|
||
skill_blades_statbonus: total_bonus,
|
||
skill_polearms_statbonus: total_bonus,
|
||
skill_brawl_statbonus: total_bonus,
|
||
skill_athletics_statbonus: total_bonus
|
||
});
|
||
break;
|
||
case "swi":
|
||
setAttrs({
|
||
defensive_statbonus: total_bonus,
|
||
skill_ranged_statbonus: total_bonus,
|
||
skill_ride_statbonus: total_bonus,
|
||
skill_acrobatics_statbonus: total_bonus,
|
||
skill_stealth_statbonus: total_bonus
|
||
});
|
||
break;
|
||
case "for":
|
||
setAttrs({
|
||
skill_body_statbonus: total_bonus,
|
||
tsr_statbonus: total_bonus
|
||
});
|
||
break;
|
||
case "wit":
|
||
setAttrs({
|
||
skill_hunting_statbonus: total_bonus,
|
||
skill_lockstraps_statbonus: total_bonus,
|
||
skill_deceive_statbonus: total_bonus,
|
||
skill_arcana_statbonus: total_bonus,
|
||
skill_cultures_statbonus: total_bonus
|
||
});
|
||
break;
|
||
case "wsd":
|
||
setAttrs({
|
||
skill_nature_statbonus: total_bonus,
|
||
skill_wandering_statbonus: total_bonus,
|
||
skill_perception_statbonus: total_bonus,
|
||
skill_healer_statbonus: total_bonus,
|
||
wsr_statbonus: total_bonus
|
||
});
|
||
break;
|
||
case "bea":
|
||
setAttrs({
|
||
skill_charisma_statbonus: total_bonus,
|
||
skill_songstales_statbonus: total_bonus
|
||
});
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
});
|
||
});
|
||
});
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Skills and bonuses
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const primarySkills = ["armor", "blunt", "blades", "ranged", "polearms", "brawl", "athletics", "ride", "hunting", "nature", "wandering", "acrobatics", "stealth", "lockstraps", "perception", "deceive", "arcana", "charisma", "cultures", "healer", "songstales", "body"];
|
||
|
||
const repeatingSkilltypes = ["specialtyskill", "spelllore"];
|
||
|
||
const bonusFields = ["statbonus", "rankbonus", "vocbonus", "kinbonus", "itembonus", "specbonus", "numberofranks"];
|
||
const miscPrimaryFields = ["total_armor_perceptionpenalty"];
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Primary skills worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
primarySkills.forEach( ps => {
|
||
let bonuses = bonusFields.map(bf => {return `skill_${ps}_${bf}`});
|
||
let attrs = bonuses.concat(miscPrimaryFields);
|
||
let triggers = attrs.map(b => {return `change:${b}`});
|
||
|
||
on("sheet:opened " + triggers.join(" "), function() {
|
||
getAttrs(attrs, function(values) {
|
||
|
||
let number_of_ranks = parseInt(values[`skill_${ps}_numberofranks`],10) || 0;
|
||
|
||
let rank_bonus = rankBonusLookup(number_of_ranks);
|
||
let stat_bonus = parseInt(values[`skill_${ps}_statbonus`], 10) || 0;
|
||
let voc_bonus = parseInt(values[`skill_${ps}_vocbonus`], 10) || 0;
|
||
let kin_bonus = parseInt(values[`skill_${ps}_kinbonus`], 10) || 0;
|
||
var item_bonus = parseInt(values[`skill_${ps}_itembonus`], 10) || 0;
|
||
let spec_bonus = parseInt(values[`skill_${ps}_specbonus`], 10) || 0;
|
||
|
||
if (ps == "perception") {
|
||
item_bonus = parseInt(values["total_armor_perceptionpenalty"], 10) || 0;
|
||
}
|
||
|
||
let total_bonus = rank_bonus + stat_bonus + voc_bonus + kin_bonus + item_bonus + spec_bonus;
|
||
|
||
setAttrs({
|
||
[`skill_${ps}_totalbonus`]: total_bonus,
|
||
[`skill_${ps}_rankbonus`]: rank_bonus
|
||
});
|
||
|
||
});
|
||
});
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Save rolls worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const saverolls = ["tsr", "wsr"];
|
||
const saverollBonuses = ["kinbonus", "gainperlevel", "specbonus", "statbonus"]
|
||
|
||
saverolls.forEach( sr => {
|
||
let attrs = saverollBonuses.map(srb => { return `${sr}_${srb}`});
|
||
let triggers = attrs.map(attr => { return `change:${attr}`});
|
||
|
||
on("sheet:opened change:character_level " + triggers.join(" "), function() {
|
||
getAttrs(attrs.concat(["character_level"]), function(values) {
|
||
|
||
let statBonus = parseInt(values[`${sr}_statbonus`]) || 0;
|
||
let kinBonus = parseInt(values[`${sr}_kinbonus`]) || 0;
|
||
let specBonus = parseInt(values[`${sr}_specbonus`]) || 0;
|
||
let characterLevel = parseInt(values["character_level"]) || 0;
|
||
|
||
let levelBonus = saveRollLevelBonus(characterLevel);
|
||
let totalBonus = statBonus + kinBonus + specBonus + levelBonus;
|
||
|
||
setAttrs({
|
||
[`${sr}_totalbonus`]: totalBonus,
|
||
[`${sr}_levelbonus`]: levelBonus
|
||
});
|
||
});
|
||
});
|
||
|
||
});
|
||
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Translate ranks into rank bonus
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
function rankBonusLookup(numberOfRanks) {
|
||
var bonus = 0;
|
||
|
||
if (numberOfRanks <= 10) {
|
||
bonus = numberOfRanks * 5;
|
||
} else if (numberOfRanks <= 20) {
|
||
bonus = 10 * 5 + (numberOfRanks - 10) * 2;
|
||
} else {
|
||
bonus = 10 * 5 + 10 * 2 + (numberOfRanks - 20);
|
||
}
|
||
return bonus;
|
||
}
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Translate ranks into rank bonus
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
function saveRollLevelBonus(characterLevel) {
|
||
var bonus = 0;
|
||
|
||
if (characterLevel <= 10) {
|
||
bonus = characterLevel * 5;
|
||
} else if (characterLevel <= 20) {
|
||
bonus = 10 * 5 + (characterLevel - 10) * 2;
|
||
} else {
|
||
bonus = 10 * 5 + 10 * 2 + (characterLevel - 20);
|
||
}
|
||
return bonus;
|
||
}
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Bruised threshold worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on("sheet:opened change:hit_points change:skill_body_totalbonus", function() {
|
||
getAttrs(["hit_points", "skill_body_totalbonus"], function(values) {
|
||
|
||
let hp = parseInt(values["hit_points"]) || 0;
|
||
let hp_total = parseInt(values["skill_body_totalbonus"]) || 0;
|
||
|
||
let bruised_threshold = Math.floor(hp_total / 2.0)
|
||
var bruised_penalty = 0
|
||
if (hp < bruised_threshold) {
|
||
bruised_penalty = -20
|
||
}
|
||
|
||
setAttrs({
|
||
"bruised_penalty": bruised_penalty,
|
||
"bruised_threshold": bruised_threshold
|
||
});
|
||
});
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Penalties
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const penalty_fields = ["generic_activity_penalty", "bruised_penalty", "total_armor_cmbpenalty", "total_armor_movepenalty", "total_armor_perceptionpenalty",
|
||
"total_injury_penalty", "total_enc_penalty", "total_def_penalty", "condition_dying", "condition_engaged", "condition_frightened", "condition_held", "condition_incapacitated", "condition_prone", "condition_stunned", "condition_surprised", "condition_weary", "skill_armor_totalbonus"];
|
||
const penalty_triggers = penalty_fields.map(c => {return `change:${c}`;});
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Generic penalty worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on("sheet:opened " + penalty_triggers.join(" "), function() {
|
||
getAttrs(penalty_fields, function(values) {
|
||
|
||
var activity = [];
|
||
var activity_explanation = [];
|
||
|
||
var movement = [];
|
||
var movement_explanation = [];
|
||
|
||
var cmb = [];
|
||
var cmb_explanation = [];
|
||
|
||
var def = [];
|
||
|
||
let armor_cmb_penalty = parseInt(values["total_armor_cmbpenalty"]) || 0;
|
||
if (armor_cmb_penalty != 0) {
|
||
cmb.push(armor_cmb_penalty);
|
||
cmb_explanation.push("armor");
|
||
}
|
||
|
||
let armor_move_penalty = parseInt(values["total_armor_movepenalty"]) || 0;
|
||
let armor_move_skill = parseInt(values["skill_armor_totalbonus"]) || 0;
|
||
if (armor_move_penalty != 0) {
|
||
movement.push(armor_move_penalty);
|
||
movement_explanation.push("armor");
|
||
|
||
if (armor_move_skill != 0) {
|
||
movement.push(armor_move_skill);
|
||
movement_explanation.push("skill");
|
||
}
|
||
}
|
||
|
||
let bruised_penalty = parseInt(values["bruised_penalty"]) || 0;
|
||
if (bruised_penalty != 0) {
|
||
activity.push(bruised_penalty);
|
||
activity_explanation.push("bruised");
|
||
}
|
||
|
||
let enc_penalty = parseInt(values["total_enc_penalty"]) || 0;
|
||
if (enc_penalty != 0) {
|
||
activity.push(enc_penalty);
|
||
activity_explanation.push("enc");
|
||
}
|
||
|
||
let generic_activity_penalty = parseInt(values["generic_activity_penalty"]) || 0;
|
||
if (generic_activity_penalty != 0) {
|
||
activity.push(generic_activity_penalty);
|
||
activity_explanation.push("generic");
|
||
}
|
||
|
||
let is_held = parseInt(values["condition_held"]) || 0;
|
||
if (is_held != 0) {
|
||
cmb.push(-30);
|
||
cmb_explanation.push("held");
|
||
def.push(-30);
|
||
}
|
||
|
||
let injure_penalty = parseInt(values["total_injury_penalty"]) || 0;
|
||
if (injure_penalty != 0) {
|
||
activity.push(injure_penalty);
|
||
activity_explanation.push("injuries");
|
||
}
|
||
|
||
let is_prone = parseInt(values["condition_prone"]) || 0;
|
||
if (is_prone != 0) {
|
||
cmb.push(-20);
|
||
cmb_explanation.push("prone");
|
||
}
|
||
|
||
setAttrs({
|
||
"total_activity_penalty": Math.min(0, activity.reduce((partial_sum, a) => partial_sum + a, 0)),
|
||
"total_activity_penalty_explanation": activity_explanation.join(","),
|
||
"total_cmb_penalty": Math.min(0, cmb.reduce((partial_sum, a) => partial_sum + a, 0)),
|
||
"total_cmb_penalty_explanation": cmb_explanation.join(","),
|
||
"total_movement_penalty": Math.min(0, movement.reduce((partial_sum, a) => partial_sum + a, 0)),
|
||
"total_movement_penalty_explanation": movement_explanation.join(","),
|
||
"total_def_penalty": Math.min(0, def.reduce((partial_sum, a) => partial_sum + a, 0)),
|
||
});
|
||
});
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Encumbrance penalty worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on("sheet:opened change:encumbrance_level change:condition_weary", function() {
|
||
getAttrs(["encumbrance_level", "condition_weary"], function(values) {
|
||
|
||
var penalty = 0;
|
||
var speed_factor = 100;
|
||
let el = values["encumbrance_level"];
|
||
switch (el) {
|
||
case 'unencumbered':
|
||
break;
|
||
case 'lightly_encumbered':
|
||
break;
|
||
case 'encumbered':
|
||
speed_factor = 67;
|
||
break;
|
||
case 'heavily_encumbered':
|
||
penalty = -20;
|
||
speed_factor = 50;
|
||
break;
|
||
case 'over_encumbered':
|
||
speed_factor = 25;
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
let is_weary = parseInt(values["condition_weary"]) || 0;
|
||
if (is_weary != 0 && speed_factor > 50) {
|
||
speed_factor = 50;
|
||
}
|
||
|
||
setAttrs({
|
||
"total_enc_penalty": penalty,
|
||
"total_enc_speedfactor": speed_factor
|
||
});
|
||
});
|
||
});
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Armor penalty worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on('sheet:opened change:repeating_armor change:repeating_armor:armor_isactive remove:repeating_armor', function() {
|
||
TAS.repeating('armor')
|
||
.attrs('total_armor_movepenalty', 'total_armor_cmbpenalty', 'total_armor_melee_def_bonus', 'total_armor_missile_def_bonus',
|
||
'total_armor_perceptionpenalty', 'armor_min_swi_constraint')
|
||
.fields('armor_movepenalty', 'armor_cmbpenalty', 'armor_melee_def_bonus', 'armor_missile_def_bonus', 'armor_perceptionpenalty',
|
||
'armor_maxswi', 'armor_isactive')
|
||
.reduce(function(m,r){
|
||
var w = 0
|
||
|
||
/* Consider only active armors. */
|
||
if (r.armor_isactive == 1) {
|
||
m.movepenalty+=(r.F.armor_movepenalty);
|
||
m.cmbpenalty+=(r.F.armor_cmbpenalty);
|
||
m.meleebonus+=(r.F.armor_melee_def_bonus);
|
||
m.missilebonus+=(r.F.armor_missile_def_bonus);
|
||
m.percpenalty+=(r.F.armor_perceptionpenalty);
|
||
if (r.F.armor_maxswi > 0 ) {
|
||
/* Find the most restrictive (i.e., minimum) 'Max SWI to DEF' constraints. */
|
||
m.maxswi = (m.maxswi == 0 || r.F.armor_maxswi < m.maxswi) ? r.F.armor_maxswi : m.maxswi;
|
||
}
|
||
}
|
||
return m;
|
||
},{movepenalty:0,cmbpenalty:0,meleebonus:0,missilebonus:0,percpenalty:0,maxswi:0},function(m,r,a){
|
||
a.D[1].total_armor_movepenalty=m.movepenalty;
|
||
a.D[1].total_armor_cmbpenalty=m.cmbpenalty;
|
||
a.D[1].total_armor_melee_def_bonus=m.meleebonus;
|
||
a.D[1].total_armor_missile_def_bonus=m.missilebonus;
|
||
a.D[1].total_armor_perceptionpenalty=m.percpenalty;
|
||
a.D[1].armor_min_swi_constraint=m.maxswi;
|
||
})
|
||
.execute();
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Movement rate worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on('sheet:opened change:total_enc_speedfactor change:base_movement_rate', function() {
|
||
getAttrs(["total_enc_speedfactor","armor","base_movement_rate"], function(values) {
|
||
|
||
let bmr = parseInt(values["base_movement_rate"]) || 0;
|
||
let factor = parseInt(values["total_enc_speedfactor"]) || 0;
|
||
let effective_movement_rate = parseInt(bmr * factor / 100);
|
||
|
||
setAttrs({
|
||
"effective_movement_rate": effective_movement_rate
|
||
});
|
||
});
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Magic Points_stat worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on("sheet:opened change:spellcasting_stat change:stats_wit_total_bonus change:stats_wsd_total_bonus change:stats_bea_total_bonus", function() {
|
||
getAttrs(["spellcasting_stat", "stats_wit_total_bonus", "stats_wsd_total_bonus", "stats_bea_total_bonus"], function(values) {
|
||
let stat = values["spellcasting_stat"];
|
||
|
||
var stat_bonus = 0;
|
||
switch (stat){
|
||
case 'wsd':
|
||
stat_bonus = parseInt(values["stats_wsd_total_bonus"]) || 0;
|
||
break;
|
||
case 'wit':
|
||
stat_bonus = parseInt(values["stats_wit_total_bonus"]) || 0;
|
||
break;
|
||
default:
|
||
stat_bonus = parseInt(values["stats_bea_total_bonus"]) || 0;
|
||
break;
|
||
};
|
||
let stat_mp = parseInt(stat_bonus / 10) || 0;
|
||
|
||
setAttrs({
|
||
"magicpoints_statgain": stat_mp
|
||
});
|
||
});
|
||
});
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Magic point worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on("sheet:opened change:character_level change:magicpoints_kin change:magicpoints_spec change:magicpoints_statgain change:magicpoints_vocgain", function() {
|
||
getAttrs(["character_level", "magicpoints_statgain", "magicpoints_kin", "magicpoints_spec", "magicpoints_vocgain"], function(values) {
|
||
|
||
let level = parseInt(values["character_level"]) || 0;
|
||
|
||
let kinmp = parseInt(values["magicpoints_kin"]) || 0;
|
||
let specmp = parseInt(values["magicpoints_spec"]) || 0;
|
||
|
||
let statgain = parseInt(values["magicpoints_statgain"]) || 0;
|
||
let vocgain = parseInt(values["magicpoints_vocgain"]) || 0;
|
||
|
||
let total = kinmp + specmp + (statgain * level) + (vocgain * level);
|
||
|
||
setAttrs({
|
||
"magicpoints_total": total,
|
||
"magicpoints_statgain_total": (statgain * level),
|
||
"magicpoints_vocgain_total": (vocgain * level),
|
||
});
|
||
});
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Injury penalty worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on('sheet:opened change:repeating_injury remove:repeating_injury', function() {
|
||
repeatingSum("total_injury_penalty","injury","injury_penalty");
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Defensive bonus worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
on("sheet:opened change:armor_min_swi_constraint change:stats_swi_total_bonus change:effective_swi_bonus change:total_armor_melee_def_bonus change:total_armor_missile_def_bonus bonus change:def_item_bonus change:def_spec_bonus change:total_def_penalty", function() {
|
||
getAttrs(["stats_swi_total_bonus", "armor_min_swi_constraint", "def_item_bonus", "def_spec_bonus", "total_armor_missile_def_bonus", "total_armor_melee_def_bonus", "total_def_penalty"], function(values) {
|
||
|
||
/* Resolve effective_swi_bonus by capping the bonus at minimum 'Max SWI to DEF' collected from active armors.*/
|
||
let max_swi = parseInt(values["armor_min_swi_constraint"]) || 1000;
|
||
let effective_swi_bonus = Math.min(max_swi, parseInt(values["stats_swi_total_bonus"]) || 0);
|
||
|
||
let armor_melee_bonus = parseInt(values["total_armor_melee_def_bonus"]) || 0;
|
||
let armor_missile_bonus = parseInt(values["total_armor_missile_def_bonus"]) || 0;
|
||
let item_bonus = parseInt(values["def_item_bonus"]) || 0;
|
||
let spec_bonus = parseInt(values["def_spec_bonus"]) || 0;
|
||
|
||
let def_penalty = parseInt(values["total_def_penalty"]) || 0;
|
||
|
||
/*
|
||
TAS.log("MAX SWI " + max_swi);
|
||
TAS.log("SWI bonus " + effective_swi_bonus);
|
||
TAS.log("Armor melee bonus " + armor_melee_bonus);
|
||
TAS.log("Armor missile bonus " + armor_missile_bonus);
|
||
TAS.log("Item bonus " + item_bonus);
|
||
TAS.log("Spec bonus " + spec_bonus);
|
||
*/
|
||
|
||
let total_melee_defense = Math.max(0, effective_swi_bonus + armor_melee_bonus + item_bonus + spec_bonus + def_penalty);
|
||
let total_missile_defense = Math.max(0, effective_swi_bonus + armor_missile_bonus + item_bonus + spec_bonus + def_penalty);
|
||
|
||
setAttrs({
|
||
"effective_swi_bonus": effective_swi_bonus,
|
||
"total_def_melee_bonus": total_melee_defense,
|
||
"total_def_missile_bonus": total_missile_defense
|
||
});
|
||
});
|
||
});
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Spell-lore and Specialty-skill stat bonus worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const stat_triggers = stats.map( stat => {
|
||
return `change:stats_${stat}_total_bonus`
|
||
});
|
||
|
||
repeatingSkilltypes.forEach( sk => {
|
||
on("sheet:opened " + [`change:repeating_${sk}`,`change:repeating_${sk}:${sk}_statbonus_selector`].join(" ") + " " + stat_triggers.join(" "), function() {
|
||
getSectionIDs(`repeating_${sk}`, function(idarray) {
|
||
var fieldnames = [];
|
||
for(var i=0; i < idarray.length; i++) {
|
||
fieldnames.push(`repeating_${sk}_${idarray[i]}_${sk}_statbonus_selector`);
|
||
}
|
||
|
||
stats.forEach( stat => {
|
||
fieldnames.push(`stats_${stat}_total_bonus`);
|
||
});
|
||
|
||
getAttrs(fieldnames, function(values) {
|
||
var output = {};
|
||
|
||
for(var i=0; i < idarray.length; i++) {
|
||
let id = idarray[i];
|
||
let stat = values[`repeating_${sk}_${id}_${sk}_statbonus_selector`];
|
||
let stat_bonus = parseInt(values[`stats_${stat}_total_bonus`], 10) || 0;
|
||
|
||
output[`repeating_${sk}_${id}_${sk}_statbonus`] = stat_bonus;
|
||
}
|
||
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
});
|
||
});
|
||
|
||
|
||
/* ---------------------------------------------------------------------------------------------------
|
||
* Spell-lore and Specialty-skill stat bonus worker
|
||
* --------------------------------------------------------------------------------------------------- */
|
||
const miscSecondaryFields = ["total_movement_penalty"];
|
||
|
||
repeatingSkilltypes.forEach( sk => {
|
||
|
||
let bonuses = bonusFields.map(bf => {return `repeating_${sk}_${sk}_${bf}`});
|
||
let attrs = bonusFields.concat(miscSecondaryFields);
|
||
|
||
let triggers = attrs.map(b => {return `change:${b}`});
|
||
triggers.push(`change:repeating_${sk}`);
|
||
|
||
on("sheet:opened " + triggers.join(" "), function(){
|
||
getSectionIDs(`repeating_${sk}`, function(idarray) {
|
||
|
||
var fieldnames = [];
|
||
for(var i=0; i < idarray.length; i++) {
|
||
let id = idarray[i];
|
||
|
||
bonusFields.forEach(bf => {
|
||
let fieldname = `repeating_${sk}_${id}_${sk}_${bf}`;
|
||
|
||
fieldnames.push(fieldname);
|
||
});
|
||
miscSecondaryFields.forEach(msf => {fieldnames.push(msf);});
|
||
}
|
||
|
||
getAttrs(fieldnames, function(values) {
|
||
var output = {};
|
||
|
||
for(var i=0; i < idarray.length; i++) {
|
||
let id = idarray[i];
|
||
let number_of_ranks = parseInt(values[`repeating_${sk}_${id}_${sk}_numberofranks`],10) || 0;
|
||
|
||
let rank_bonus = rankBonusLookup(number_of_ranks);
|
||
let stat_bonus = parseInt(values[`repeating_${sk}_${id}_${sk}_statbonus`], 10) || 0;
|
||
let voc_bonus = parseInt(values[`repeating_${sk}_${id}_${sk}_vocbonus`], 10) || 0;
|
||
let kin_bonus = parseInt(values[`repeating_${sk}_${id}_${sk}_kinbonus`], 10) || 0;
|
||
let spec_bonus = parseInt(values[`repeating_${sk}_${id}_${sk}_specbonus`], 10) || 0;
|
||
let item_bonus = parseInt(values[`repeating_${sk}_${id}_${sk}_itembonus`], 10) || 0;
|
||
|
||
/*
|
||
if (sk = "spelllore") {
|
||
item_bonus = parseInt(values["total_movement_penalty"], 10) || 0;
|
||
}
|
||
*/
|
||
|
||
let total_bonus = rank_bonus + stat_bonus + voc_bonus + kin_bonus + item_bonus + spec_bonus;
|
||
|
||
output[`repeating_${sk}_${id}_${sk}_rankbonus`] = rank_bonus;
|
||
output[`repeating_${sk}_${id}_${sk}_totalbonus`] = total_bonus;
|
||
}
|
||
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
});
|
||
});
|
||
|
||
|
||
/* ===== 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);
|
||
});
|
||
});
|
||
};
|
||
|
||
/* ---- BEGIN: TheAaronSheet.js ---- */
|
||
// Github: https://github.com/shdwjk/TheAaronSheet/blob/master/TheAaronSheet.js
|
||
// By: The Aaron, Arcane Scriptomancer
|
||
// Contact: https://app.roll20.net/users/104025/the-aaron
|
||
|
||
var TAS = TAS || (function(){
|
||
'use strict';
|
||
|
||
var version = '0.3.0',
|
||
lastUpdate = 1613447936,
|
||
|
||
loggingSettings = {
|
||
debug: {
|
||
key: 'debug',
|
||
title: 'DEBUG',
|
||
color: {
|
||
bgLabel: '#7732A2',
|
||
label: '#F2EF40',
|
||
bgText: '#FFFEB7',
|
||
text: '#7732A2'
|
||
}
|
||
},
|
||
error: {
|
||
key: 'error',
|
||
title: 'Error',
|
||
color: {
|
||
bgLabel: '#C11713',
|
||
label: 'white',
|
||
bgText: '#C11713',
|
||
text: 'white'
|
||
}
|
||
},
|
||
warn: {
|
||
key: 'warn',
|
||
title: 'Warning',
|
||
color: {
|
||
bgLabel: '#F29140',
|
||
label: 'white',
|
||
bgText: '#FFD8B7',
|
||
text: 'black'
|
||
}
|
||
},
|
||
info: {
|
||
key: 'info',
|
||
title: 'Info',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#B3B2EB',
|
||
text: 'black'
|
||
}
|
||
},
|
||
notice: {
|
||
key: 'notice',
|
||
title: 'Notice',
|
||
color: {
|
||
bgLabel: '#33C133',
|
||
label: 'white',
|
||
bgText: '#ADF1AD',
|
||
text: 'black'
|
||
}
|
||
},
|
||
log: {
|
||
key: 'log',
|
||
title: 'Log',
|
||
color: {
|
||
bgLabel: '#f2f240',
|
||
label: 'black',
|
||
bgText: '#ffff90',
|
||
text: 'black'
|
||
}
|
||
},
|
||
callstack: {
|
||
key: 'TAS',
|
||
title: 'function',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#B3B2EB',
|
||
text: 'black'
|
||
}
|
||
},
|
||
callstack_async: {
|
||
key: 'TAS',
|
||
title: 'ASYNC CALL',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#413FA9',
|
||
text: 'white'
|
||
}
|
||
},
|
||
TAS: {
|
||
key: 'TAS',
|
||
title: 'TAS',
|
||
color: {
|
||
bgLabel: 'grey',
|
||
label: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)',
|
||
bgText: 'grey',
|
||
text: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)'
|
||
}
|
||
}
|
||
},
|
||
|
||
|
||
config = {
|
||
debugMode: false,
|
||
logging: {
|
||
log: true,
|
||
notice: true,
|
||
info: true,
|
||
warn: true,
|
||
error: true,
|
||
debug: false
|
||
}
|
||
},
|
||
|
||
callstackRegistry = [],
|
||
queuedUpdates = {}, //< Used for delaying saves till the last moment.
|
||
|
||
complexType = function(o){
|
||
switch(typeof o){
|
||
case 'string':
|
||
return 'string';
|
||
case 'boolean':
|
||
return 'boolean';
|
||
case 'number':
|
||
return (_.isNaN(o) ? 'NaN' : (o.toString().match(/\./) ? 'decimal' : 'integer'));
|
||
case 'function':
|
||
return 'function: '+(o.name ? o.name+'()' : '(anonymous)');
|
||
case 'object':
|
||
return (_.isArray(o) ? 'array' : (_.isArguments(o) ? 'arguments' : ( _.isNull(o) ? 'null' : 'object')));
|
||
default:
|
||
return typeof o;
|
||
}
|
||
},
|
||
|
||
dataLogger = function(primaryLogger,secondaryLogger,data){
|
||
_.each(data,function(m){
|
||
var type = complexType(m);
|
||
switch(type){
|
||
case 'string':
|
||
primaryLogger(m);
|
||
break;
|
||
case 'undefined':
|
||
case 'null':
|
||
case 'NaN':
|
||
primaryLogger('['+type+']');
|
||
break;
|
||
case 'number':
|
||
case 'not a number':
|
||
case 'integer':
|
||
case 'decimal':
|
||
case 'boolean':
|
||
primaryLogger('['+type+']: '+m);
|
||
break;
|
||
default:
|
||
primaryLogger('['+type+']:=========================================');
|
||
secondaryLogger(m);
|
||
primaryLogger('=========================================================');
|
||
break;
|
||
}
|
||
});
|
||
},
|
||
|
||
|
||
colorLog = function(options){
|
||
var coloredLoggerFunction,
|
||
key = options.key,
|
||
label = options.title || 'TAS',
|
||
lBGColor = (options.color && options.color.bgLabel) || 'blue',
|
||
lTxtColor = (options.color && options.color.label) || 'white',
|
||
mBGColor = (options.color && options.color.bgText) || 'blue',
|
||
mTxtColor = (options.color && options.color.text) || 'white';
|
||
|
||
coloredLoggerFunction = function(message){
|
||
/* eslint-disable no-console */
|
||
console.log(
|
||
'%c '+label+': %c '+message + ' ',
|
||
'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
|
||
'background-color: '+mBGColor+';color: '+mTxtColor+';'
|
||
);
|
||
/* eslint-enable no-console */
|
||
};
|
||
return function(){
|
||
if('TAS'===key || config.logging[key]){
|
||
/* eslint-disable no-console */
|
||
dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
|
||
/* eslint-enable no-console */
|
||
}
|
||
};
|
||
},
|
||
|
||
logDebug = colorLog(loggingSettings.debug),
|
||
logError = colorLog(loggingSettings.error),
|
||
logWarn = colorLog(loggingSettings.warn),
|
||
logInfo = colorLog(loggingSettings.info),
|
||
logNotice = colorLog(loggingSettings.notice),
|
||
logLog = colorLog(loggingSettings.log),
|
||
log = colorLog(loggingSettings.TAS),
|
||
logCS = colorLog(loggingSettings.callstack),
|
||
logCSA = colorLog(loggingSettings.callstack_async),
|
||
|
||
registerCallstack = function(callstack,label){
|
||
var idx=_.findIndex(callstackRegistry,function(o){
|
||
return (_.difference(o.stack,callstack).length === _.difference(callstack,o.stack).length) &&
|
||
_.difference(o.stack,callstack).length === 0 &&
|
||
o.label === label;
|
||
});
|
||
if(-1 === idx){
|
||
idx=callstackRegistry.length;
|
||
callstackRegistry.push({
|
||
stack: callstack,
|
||
label: label
|
||
});
|
||
}
|
||
return idx;
|
||
},
|
||
|
||
setConfigOption = function(options){
|
||
var newconf =_.defaults(options,config);
|
||
newconf.logging=_.defaults(
|
||
(options && options.logging)||{},
|
||
config.logging
|
||
);
|
||
config=newconf;
|
||
},
|
||
|
||
isDebugMode = function(){
|
||
return config.debugMode;
|
||
},
|
||
|
||
debugMode = function(){
|
||
config.logging.debug=true;
|
||
config.debugMode = true;
|
||
},
|
||
|
||
getCallstack = function(){
|
||
var e = new Error('dummy'),
|
||
stack = _.map(_.rest(e.stack.replace(/^[^(]+?[\n$]/gm, '')
|
||
.replace(/^\s+at\s+/gm, '')
|
||
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
|
||
.split('\n')),function(l){
|
||
return l.replace(/\s+.*$/,'');
|
||
});
|
||
return stack;
|
||
},
|
||
logCallstackSub = function(cs){
|
||
var matches, csa;
|
||
_.find(cs,function(line){
|
||
matches = line.match(/TAS_CALLSTACK_(\d+)/);
|
||
if(matches){
|
||
csa=callstackRegistry[matches[1]];
|
||
logCSA( '===================='+(csa.label ? '> '+csa.label+' <' : '')+'====================');
|
||
logCallstackSub(csa.stack);
|
||
return true;
|
||
}
|
||
logCS(line);
|
||
return false;
|
||
});
|
||
},
|
||
logCallstack = function(){
|
||
var cs;
|
||
if(config.debugMode){
|
||
cs = getCallstack();
|
||
cs.shift();
|
||
log('==============================> CALLSTACK <==============================');
|
||
logCallstackSub(cs);
|
||
log('=========================================================================');
|
||
}
|
||
},
|
||
|
||
|
||
wrapCallback = function (label, callback, context){
|
||
var callstack;
|
||
if('function' === typeof label){
|
||
context=callback;
|
||
callback=label;
|
||
label=undefined;
|
||
}
|
||
if(!config.debugMode){
|
||
return (function(cb,ctx){
|
||
return function(){
|
||
cb.apply(ctx||{},arguments);
|
||
};
|
||
}(callback,context));
|
||
}
|
||
|
||
callstack = getCallstack();
|
||
callstack.shift();
|
||
|
||
return (function(cb,ctx,cs,lbl){
|
||
var ctxref=registerCallstack(cs,lbl);
|
||
|
||
/*jshint -W054 */
|
||
return new Function('cb','ctx','TASlog',
|
||
"return function TAS_CALLSTACK_"+ctxref+"(){"+
|
||
"var start,end;"+
|
||
"TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
|
||
"start=_.now();"+
|
||
"cb.apply(ctx||{},arguments);"+
|
||
"end=_.now();"+
|
||
"TASlog('Exiting: '+(cb.name||'(anonymous function)')+' :: '+(end-start)+'ms elapsed');"+
|
||
"};")(cb,ctx,log);
|
||
/*jshint +W054 */
|
||
}(callback,context,callstack,label));
|
||
},
|
||
|
||
|
||
prepareUpdate = function( attribute, value ){
|
||
queuedUpdates[attribute]=value;
|
||
},
|
||
|
||
applyQueuedUpdates = function() {
|
||
setAttrs(queuedUpdates);
|
||
queuedUpdates = {};
|
||
},
|
||
|
||
namesFromArgs = function(args,base){
|
||
return _.chain(args)
|
||
.reduce(function(memo,attr){
|
||
if('string' === typeof attr) {
|
||
memo.push(attr);
|
||
} else if(_.isArray(args) || _.isArguments(args)){
|
||
memo = namesFromArgs(attr,memo);
|
||
}
|
||
return memo;
|
||
},(_.isArray(base) && base) || [])
|
||
.uniq()
|
||
.value();
|
||
},
|
||
|
||
addId = function(obj,value){
|
||
Object.defineProperty(obj,'id',{
|
||
value: value,
|
||
writable: false,
|
||
enumerable: false
|
||
});
|
||
},
|
||
|
||
addProp = function(obj,prop,value,fullname){
|
||
(function(){
|
||
var pname=(_.contains(['S','F','I','D'],prop) ? '_'+prop : prop),
|
||
full_pname = fullname || prop,
|
||
pvalue=value;
|
||
|
||
_.each(['S','I','F'],function(p){
|
||
if( !_.has(obj,p)){
|
||
Object.defineProperty(obj, p, {
|
||
value: {},
|
||
enumerable: false,
|
||
readonly: true
|
||
});
|
||
}
|
||
});
|
||
if( !_.has(obj,'D')){
|
||
Object.defineProperty(obj, 'D', {
|
||
value: _.reduce(_.range(10),function(m,d){
|
||
Object.defineProperty(m, d, {
|
||
value: {},
|
||
enumerable: true,
|
||
readonly: true
|
||
});
|
||
return m;
|
||
},{}),
|
||
enumerable: false,
|
||
readonly: true
|
||
});
|
||
}
|
||
|
||
|
||
// Raw value
|
||
Object.defineProperty(obj, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
if(v!==pvalue) {
|
||
pvalue=v;
|
||
prepareUpdate(full_pname,v);
|
||
}
|
||
},
|
||
get: function(){
|
||
return pvalue;
|
||
}
|
||
});
|
||
|
||
// string value
|
||
Object.defineProperty(obj.S, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=v.toString();
|
||
if(val !== pvalue) {
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return pvalue.toString();
|
||
}
|
||
});
|
||
|
||
// int value
|
||
Object.defineProperty(obj.I, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=parseInt(v,10) || 0;
|
||
if(val !== pvalue){
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return parseInt(pvalue,10) || 0;
|
||
}
|
||
});
|
||
|
||
// float value
|
||
Object.defineProperty(obj.F, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=parseFloat(v) || 0;
|
||
if(val !== pvalue) {
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return parseFloat(pvalue) || 0;
|
||
}
|
||
});
|
||
_.each(_.range(10),function(d){
|
||
Object.defineProperty(obj.D[d], pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=(parseFloat(v) || 0).toFixed(d);
|
||
if(val !== pvalue){
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return (parseFloat(pvalue) || 0).toFixed(d);
|
||
}
|
||
});
|
||
});
|
||
|
||
}());
|
||
},
|
||
|
||
repeating = function( section ) {
|
||
return (function(s){
|
||
var sectionName = s,
|
||
attrNames = [],
|
||
fieldNames = [],
|
||
operations = [],
|
||
after = [],
|
||
|
||
repAttrs = function TAS_Repeating_Attrs(){
|
||
attrNames = namesFromArgs(arguments,attrNames);
|
||
return this;
|
||
},
|
||
repFields = function TAS_Repeating_Fields(){
|
||
fieldNames = namesFromArgs(arguments,fieldNames);
|
||
return this;
|
||
},
|
||
repReduce = function TAS_Repeating_Reduce(func, initial, final, context) {
|
||
operations.push({
|
||
type: 'reduce',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
memo: (_.isUndefined(initial) && 0) || initial,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repMap = function TAS_Repeating_Map(func, final, context) {
|
||
operations.push({
|
||
type: 'map',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repEach = function TAS_Repeating_Each(func, final, context) {
|
||
operations.push({
|
||
type: 'each',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repTap = function TAS_Repeating_Tap(final, context) {
|
||
operations.push({
|
||
type: 'tap',
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repAfter = function TAS_Repeating_After(callback,context) {
|
||
after.push({
|
||
callback: (callback && _.isFunction(callback) && callback) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repExecute = function TAS_Repeating_Execute(callback,context){
|
||
var rowSet = {},
|
||
attrSet = {},
|
||
fieldIds = [],
|
||
fullFieldNames = [];
|
||
|
||
repAfter(callback,context);
|
||
|
||
// call each operation per row.
|
||
// call each operation's final
|
||
getSectionIDs("repeating_"+sectionName,function(ids){
|
||
fieldIds = ids;
|
||
fullFieldNames = _.reduce(fieldIds,function(memo,id){
|
||
return memo.concat(_.map(fieldNames,function(name){
|
||
return 'repeating_'+sectionName+'_'+id+'_'+name;
|
||
}));
|
||
},[]);
|
||
getAttrs( _.uniq(attrNames.concat(fullFieldNames)), function(values){
|
||
_.each(attrNames,function(aname){
|
||
if(values.hasOwnProperty(aname)){
|
||
addProp(attrSet,aname,values[aname]);
|
||
}
|
||
});
|
||
|
||
rowSet = _.reduce(fieldIds,function(memo,id){
|
||
var r={};
|
||
addId(r,id);
|
||
_.each(fieldNames,function(name){
|
||
var fn = 'repeating_'+sectionName+'_'+id+'_'+name;
|
||
addProp(r,name,values[fn],fn);
|
||
});
|
||
|
||
memo[id]=r;
|
||
|
||
return memo;
|
||
},{});
|
||
|
||
_.each(operations,function(op){
|
||
var res;
|
||
switch(op.type){
|
||
case 'tap':
|
||
_.bind(op.final,op.context,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'each':
|
||
_.each(rowSet,function(r){
|
||
_.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'map':
|
||
res = _.map(rowSet,function(r){
|
||
return _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,res,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'reduce':
|
||
res = op.memo;
|
||
_.each(rowSet,function(r){
|
||
res = _.bind(op.func,op.context,res,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,res,rowSet,attrSet)();
|
||
break;
|
||
}
|
||
});
|
||
|
||
// finalize attrs
|
||
applyQueuedUpdates();
|
||
_.each(after,function(op){
|
||
_.bind(op.callback,op.context)();
|
||
});
|
||
});
|
||
});
|
||
};
|
||
|
||
return {
|
||
attrs: repAttrs,
|
||
attr: repAttrs,
|
||
|
||
column: repFields,
|
||
columns: repFields,
|
||
field: repFields,
|
||
fields: repFields,
|
||
|
||
reduce: repReduce,
|
||
inject: repReduce,
|
||
foldl: repReduce,
|
||
|
||
map: repMap,
|
||
collect: repMap,
|
||
|
||
each: repEach,
|
||
forEach: repEach,
|
||
|
||
tap: repTap,
|
||
'do': repTap,
|
||
|
||
after: repAfter,
|
||
last: repAfter,
|
||
done: repAfter,
|
||
|
||
execute: repExecute,
|
||
go: repExecute,
|
||
run: repExecute
|
||
};
|
||
}(section));
|
||
},
|
||
|
||
|
||
repeatingSimpleSum = function(section, field, destination){
|
||
repeating(section)
|
||
.attr(destination)
|
||
.field(field)
|
||
.reduce(function(m,r){
|
||
TAS.log("field:" + field + " --> " + r.F[field] + "/" + m)
|
||
return m + (r.F[field]);
|
||
},0,function(t,r,a){
|
||
TAS.log("destination:" + destination + " --> " + t)
|
||
a.S[destination]=t;
|
||
})
|
||
.execute();
|
||
};
|
||
|
||
/* eslint-disable no-console */
|
||
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Against the Darkmaster Sheet v'+version+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
|
||
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Last update: '+(new Date(lastUpdate*1000))+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
|
||
/* eslint-enable no-console */
|
||
|
||
|
||
return {
|
||
/* Repeating Sections */
|
||
repeatingSimpleSum: repeatingSimpleSum,
|
||
repeating: repeating,
|
||
|
||
/* Configuration */
|
||
config: setConfigOption,
|
||
|
||
/* Debugging */
|
||
callback: wrapCallback,
|
||
callstack: logCallstack,
|
||
debugMode: debugMode,
|
||
isDebugMode: isDebugMode,
|
||
_fn: wrapCallback,
|
||
|
||
/* Logging */
|
||
debug: logDebug,
|
||
error: logError,
|
||
warn: logWarn,
|
||
info: logInfo,
|
||
notice: logNotice,
|
||
log: logLog
|
||
};
|
||
}());
|
||
|
||
/* ---- END: TheAaronSheet.js ---- */
|
||
|
||
|
||
</script>
|
||
|
||
<div class="hidden">
|
||
|
||
<rolltemplate class="sheet-rolltemplate-openended">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-total celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-label celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{{#rollWasFumble() roll}}
|
||
<table class="sheet-rolltemplate-modifiers">
|
||
<tr>
|
||
<td colspan="2" class="sheet-rolltemplate-modifier-fumble">
|
||
<span>The roll exploded into negative range.</span>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-rolltemplate-modifier-label">
|
||
<span title="Subtract this from the above roll">Additional underflow:</span>
|
||
</td>
|
||
<td>
|
||
{{underflow}}
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
{{/rollWasFumble() roll}}
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-1d100">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-total celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-label celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-saveroll">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results sheet-rolltemplate-tablelike">
|
||
<div class="sheet-rolltemplate-rowlike">
|
||
<div class="sheet-rolltemplate-total sheet-rolltemplate-celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-rowlike">
|
||
<div class="sheet-rolltemplate-label sheet-rolltemplate-celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifiers sheet-rolltemplate-modifier-grid">
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Bonus:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{bonus}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-moveskillroll">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-total celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-label celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{#rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-modifier-fumble celllike">
|
||
<span>Ouch! That's a critical failure!</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{/rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers sheet-rolltemplate-modifier-grid">
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Skill Bonus:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{skill}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Activity Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{activity_penalty}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Movement Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{movement_penalty}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-skillroll">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-total celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-label celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{#rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-modifier-fumble celllike">
|
||
<span>Ouch! That's a critical failure!</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{/rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers sheet-rolltemplate-modifier-grid">
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Skill Bonus:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{skill}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Activity Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{activity_penalty}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-attackroll">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-total celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-label celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{#rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-modifier-fumble celllike">
|
||
<span>Ouch! That's a miss!<br/>... and a possible fumble!</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{/rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers sheet-rolltemplate-modifier-grid">
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Skill Bonus:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{skill}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Activity Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{activity_penalty}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
CMB Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{cmb_penalty}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-spellroll">
|
||
<div class="sheet-rolltemplate-container">
|
||
<div class="sheet-rolltemplate-header">
|
||
<div class="sheet-rolltemplate-character">{{character}}</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-heading">{{type}}</span>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-rolltemplate-subheading">{{subtags}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-rolltemplate-results tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-total celllike">
|
||
{{roll}}
|
||
</div>
|
||
</div>
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-label celllike">
|
||
roll
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{#rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers tablelike">
|
||
<div class="rowlike">
|
||
<div class="sheet-rolltemplate-modifier-fumble celllike">
|
||
<span>Ouch! That's a spell failure!</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{/rollWasFumble() roll}}
|
||
<div class="sheet-rolltemplate-modifiers sheet-rolltemplate-modifier-grid">
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Skill Bonus:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{skill}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Activity Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{activity_penalty}}
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-label">
|
||
Movement Penalty:
|
||
</div>
|
||
<div class="sheet-rolltemplate-modifier-result">
|
||
{{movement_penalty}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
</div>
|
||
|
||
|
||
|
||
|