1419 lines
52 KiB
HTML
1419 lines
52 KiB
HTML
<div class="main-container">
|
||
|
||
<!-- Tab navigation -->
|
||
<div class="tab-panel">
|
||
|
||
<input type="radio" name="attr_tabs_radio" value="profile" checked="true" />
|
||
<div>U</div>
|
||
<input type="radio" name="attr_tabs_radio" value="configuration" />
|
||
<div>y</div>
|
||
<input type="radio" name="attr_tabs_radio" value="help" />
|
||
<div>?</div>
|
||
|
||
</div>
|
||
<input type='hidden' class="tabcontrol" name='attr_selected_tab' value='profile' />
|
||
|
||
<!-- Profile Tab -->
|
||
<div class="profiletab">
|
||
|
||
<!-- Middle -->
|
||
<div class="middle">
|
||
|
||
<!-- Middle column 1-->
|
||
<div class="middle-column">
|
||
|
||
<!-- Name and Age -->
|
||
<div class="header-row box-margin">
|
||
|
||
<div class="header-box header-name">
|
||
<div class="header-outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="name">Name</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="header-outer-box grow">
|
||
|
||
<div class="inner-box flex-row">
|
||
|
||
<input name="attr_character_name" type="text" title="@{character_name}" />
|
||
|
||
<div class="negative-corner top-right-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="header-box">
|
||
<div class="header-outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="age">Age</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="header-outer-box">
|
||
|
||
<div class="inner-box flex-row">
|
||
|
||
<input name="attr_age" type="number" title="@{age}" />
|
||
|
||
<div class="negative-corner top-right-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Characteristics -->
|
||
<div class="characteristics box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="characteristics">Characteristics</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="inner-box">
|
||
|
||
<div class="content-box">
|
||
|
||
<fieldset class="repeating_characteristics">
|
||
|
||
<div class="repeatable-item">
|
||
<div class="repeatable-row">
|
||
<input name="attr_characteristic" type="text" data-i18n-placeholder="characteristic"
|
||
placeholder="Characteristic" />
|
||
</div>
|
||
</div>
|
||
|
||
</fieldset>
|
||
|
||
</div>
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- History -->
|
||
<div class="history box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="history">History</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="inner-box">
|
||
|
||
<div class="content-box">
|
||
|
||
<textarea name="attr_history" title="@{history}"></textarea>
|
||
</div>
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="defence-energy">
|
||
|
||
<!-- Defence -->
|
||
<div class="defence box-margin">
|
||
|
||
<div class="defence-outer-box">
|
||
|
||
<div class="black-box defence-inner-box">
|
||
<span class="label primary-font" data-i18n="defence">Defence</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="defence-outer-box grow">
|
||
|
||
<div class="defence-inner-box">
|
||
|
||
<div class="defence-content">
|
||
|
||
<div class="defence-label">
|
||
<span class="secondary-label secondary-font" data-i18n="passive">Passive</span>
|
||
</div>
|
||
|
||
<div class="defence-box">
|
||
<span class="shield-label secondary-font" data-i18n="equipped">Equipped</span>
|
||
<input type="text" readonly="true" name="attr_equip_total_passive_defence"
|
||
value="@{equip_total_passive_defence}" />
|
||
|
||
<div></div>
|
||
<span class="defence-symbol secondary-font">+</span>
|
||
|
||
<span class="shield-label secondary-font" data-i18n="mod">Mod</span>
|
||
<input type="text" name="attr_passive_defence_mod" title="@{passive_defence_mod}" value="0" />
|
||
|
||
|
||
<div></div>
|
||
<span class="defence-symbol secondary-font">=</span>
|
||
|
||
<div class="passive-defence defence-shield defence-row-span">
|
||
<input type="text" readonly="true" name="attr_passive_defence" title="@{passive_defence}"
|
||
value="0" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="defence-label margin-top">
|
||
<span class="secondary-label secondary-font" data-i18n="active">Active</span>
|
||
</div>
|
||
|
||
<div class="defence-box">
|
||
<span class="shield-label secondary-font" data-i18n="passive">Passive</span>
|
||
<input type="text" disabled="true" name="attr_passive_defence" title="@{passive_defence}"
|
||
value="@{passive_defence_mod} + @{equip_total_passive_defence}" />
|
||
|
||
<div></div>
|
||
<span class="defence-symbol secondary-font">+</span>
|
||
|
||
<span class="shield-label secondary-font" data-i18n="equipped">Equipped</span>
|
||
<input type="text" readonly="true" name="attr_equip_total_active_defence"
|
||
title="@{equip_total_active_defence}" />
|
||
|
||
<div></div>
|
||
<span class="defence-symbol secondary-font">+</span>
|
||
|
||
<span class="shield-label secondary-font" data-i18n="mod">Mod</span>
|
||
<input type="text" name="attr_active_defence_mod" title="@{active_defence_mod}" value="0" />
|
||
|
||
<div></div>
|
||
<span class="defence-symbol secondary-font">=</span>
|
||
|
||
<div class="active-defence defence-shield defence-row-span">
|
||
<input type="text" readonly="true" name="attr_active_defence" title="@{active_defence}"
|
||
value="@{passive_defence} + @{active_defence_mod} + @{equip_total_active_defence}" />
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Energy -->
|
||
<div class="energy box-margin">
|
||
|
||
<div class="defence-outer-box">
|
||
|
||
<div class="black-box defence-inner-box">
|
||
<span class="label primary-font" data-i18n="energy">Energy</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="defence-outer-box grow">
|
||
|
||
<div class="defence-inner-box">
|
||
|
||
<div class="content-box energy-content">
|
||
|
||
<span class="shield-label secondary-font" data-i18n="max">Max</span>
|
||
<div class="energy-shield">
|
||
<input type="text" name="attr_energy" readonly="true" title="@{energy}" value="0" />
|
||
<div class="horizontal-div"></div>
|
||
<input type="text" name="attr_current_energy" title="@{current_energy}" value="0" />
|
||
</div>
|
||
<span class="shield-label secondary-font" data-i18n="current">Current</span>
|
||
|
||
</div>
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Skills -->
|
||
<div class="skills box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
|
||
<div class="skills-grid">
|
||
<div class="skills-label-box">
|
||
<span class="label primary-font" data-i18n="skills">Skills</span>
|
||
</div>
|
||
|
||
<div class="skills-header-column">
|
||
<span class="smaller-label primary-font" data-i18n="level1">Level 1</span>
|
||
<span class="italic-label primary-font" data-i18n="apprentice">Apprentice</span>
|
||
</div>
|
||
|
||
<div class="skills-header-column">
|
||
<span class="smaller-label primary-font" data-i18n="level2">Level 2</span>
|
||
<span class="italic-label primary-font" data-i18n="practitioner">Practitioner</span>
|
||
</div>
|
||
|
||
<div class="skills-header-column">
|
||
<span class="smaller-label primary-font" data-i18n="level3">Level 3</span>
|
||
<span class="italic-label primary-font" data-i18n="master">Master</span>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="skills-box-middle content-box skills-background">
|
||
|
||
<div class="skills-grid box-margin">
|
||
|
||
|
||
|
||
<div class="skill-points">
|
||
|
||
<div class="skill-points-box skill-general-mod">
|
||
<div class="skill-points-label">
|
||
<span class="secondary-label secondary-font" data-i18n="all_tests_modifier">All tests
|
||
modifier</span>
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="skills-inner-box flex-row">
|
||
|
||
<input name="attr_all_mod" type="number" value="0" title="@{all_mod}" />
|
||
|
||
<div class="skills-negative-corner top-right-corner"></div>
|
||
<div class="skills-negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="skill-points-box">
|
||
<div class="skill-points-label">
|
||
<span class="secondary-label secondary-font" data-i18n="points_to_spend">Points to spend</span>
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="skills-inner-box flex-row">
|
||
|
||
<input name="attr_points_to_spend" type="number" title="@{points_to_spend}" value="20" />
|
||
|
||
<div class="skills-negative-corner top-right-corner"></div>
|
||
<div class="skills-negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="skills-header-column">
|
||
<span class="skill-bonus-label secondary-font" data-i18n="cost1">Cost 1</span>
|
||
<span class="skill-bonus-label secondary-font skills-bonus-border" data-i18n="bonus3">Bonus
|
||
+3</span>
|
||
</div>
|
||
|
||
<div class="skills-header-column">
|
||
<span class="skill-bonus-label secondary-font" data-i18n="cost3">Cost 3</span>
|
||
<span class="skill-bonus-label secondary-font skills-bonus-border" data-i18n="bonus6">Bonus
|
||
+6</span>
|
||
</div>
|
||
|
||
<div class="skills-header-column">
|
||
<span class="skill-bonus-label secondary-font" data-i18n="cost7">Cost 7</span>
|
||
<span class="skill-bonus-label secondary-font skills-bonus-border" data-i18n="bonus9">Bonus
|
||
+9</span>
|
||
</div>
|
||
</div>
|
||
|
||
<fieldset class="repeating_skills">
|
||
|
||
<div class="repeatable-item">
|
||
<div class="skills-grid">
|
||
|
||
<div class="shadow-bottom-left">
|
||
<div class="outer-box skill-name-box">
|
||
|
||
<div class="skills-inner-box flex-row">
|
||
<button type="roll" class="roll-button" name="roll_skill_check" title="@{skill_check}"
|
||
value="&{template:main} {{charname=@{character_name}}} {{check=@{skill_name}}} {{target=[[?{@{difficulty} | @{easy}, 12 | @{intermediate}, 15 | @{difficult}, 18 | @{legendary}, 21 }]]}} {{result=[[ [[3d6cs>2cf<5]] + [[(@{skill_level}-@{endurance_penalty})*3]] + [[?{@{mod}|0} + @{all_mod} + @{skill_mod}]] ]]}} {{dice=$[[1]]}} {{skill_bonus=$[[2]]}} {{mod=$[[3]]}}"></button>
|
||
<input name="attr_skill_name" type="text" title="@{skill_name}" />
|
||
|
||
<div class="skills-negative-corner top-right-corner"></div>
|
||
<div class="skills-negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<input class="hidden-zero-input hidden-input" type="radio" name="attr_skill_level" checked="true"
|
||
value="0" />
|
||
<div class="circle-box">
|
||
<input class="hidden-input" type="radio" name="attr_skill_level" value="1" title="@{skill_level}" />
|
||
<input class="control-input" value="off" type="hidden" name="attr_skill_level_control1" />
|
||
<span></span>
|
||
</div>
|
||
|
||
<div class="circle-box">
|
||
<input class="hidden-input" type="radio" name="attr_skill_level" value="2" title="@{skill_level}" />
|
||
<input class="control-input" value="off" type="hidden" name="attr_skill_level_control2" />
|
||
<span></span>
|
||
</div>
|
||
|
||
<div class="circle-box skill-circle-size">
|
||
<input class="hidden-input" type="radio" name="attr_skill_level" value="3" title="@{skill_level}" />
|
||
<input class="control-input" value="off" type="hidden" name="attr_skill_level_control3" />
|
||
<span></span>
|
||
</div>
|
||
|
||
<div class="showhidebutton">
|
||
<input type="checkbox" name="attr_showhide_checkbox" value="1" />
|
||
<span></span>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Hidden checkbox that controls show/hide section. See Sheet Workers-->
|
||
<input class="toggle-checkbox" type="checkbox" name="attr_showhide_checkbox_invisible" value="1" />
|
||
|
||
<div class="showhide">
|
||
|
||
<div class="skill-hidden">
|
||
|
||
<span class="smaller-label secondary-font" data-i18n="mod">Mod</span>
|
||
<input type="number" name="attr_skill_mod" title="@{skill_mod}" value="0" />
|
||
|
||
<span class="smaller-label secondary-font" data-i18n="energy">Energy</span>
|
||
<input type="checkbox" name="attr_skill_energy" title="@{skill_energy}" />
|
||
|
||
</div>
|
||
|
||
<textarea name="attr_skill_description" data-i18n-placeholder="description"
|
||
placeholder="Description"></textarea>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</fieldset>
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
<div class="skills-box-bottom">
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Middle column 2 -->
|
||
<div class="middle-column">
|
||
<div class="logo">
|
||
<img
|
||
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/TheElephantAndMacawBanner/assets/logo-english.png">
|
||
</div>
|
||
|
||
<!-- Initiative and Untrained Skill -->
|
||
<div class="initiative box-margin">
|
||
|
||
<div class="initiative-box">
|
||
<button type="roll" class="roll-button" name="roll_initiative" title="@{initiative}"
|
||
value="&{template:main} {{charname=@{character_name}}} {{check=@{initiative_label}}} {{initiative=[[3d6cs>7cf<0 &{tracker}]]}}"></button>
|
||
<span class="secondary-label secondary-font" data-i18n="initiative">Initiative</span>
|
||
</div>
|
||
|
||
<div class="initiative-box">
|
||
<button type="roll" class="roll-button" name="roll_untrained_skill" title="@{untrained_skill}"
|
||
value="&{template:main} {{charname=@{character_name}}} {{check=@{untrained_skill_label}}} {{target=[[?{@{difficulty} | @{easy}, 12 | @{intermediate}, 15}]]}} {{result=[[ [[3d6cs>2cf<5]] + [[0]] + [[?{@{mod}|0} + @{all_mod}]] ]]}} {{dice=$[[1]]}} {{skill_bonus=$[[2]]}} {{mod=$[[3]]}}"></button>
|
||
<span class="secondary-label secondary-font" data-i18n="untrained_skill">Untrained skill</span>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Physical Condition -->
|
||
<div class="physical-condition box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="physical_condition">Physical condition</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="box-middle content-box physical-condition-content">
|
||
<div class="endurance-box">
|
||
<div class="shadow-bottom-left">
|
||
<div class="outer-box skill-name-box">
|
||
|
||
<div class="skills-inner-box physical-condition-label">
|
||
<span class="secondary-label secondary-font" data-i18n="endurance">Endurance</span>
|
||
<div class="negative-corner-thinner top-right-corner"></div>
|
||
<div class="negative-corner-thinner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="endurance-container">
|
||
|
||
<span class="shield-label secondary-font" data-i18n="max">Max</span>
|
||
<div class="endurance-shield">
|
||
<input name="attr_max_endurance" type="text" title="@{max_endurance}" value="10" />
|
||
<div class="horizontal-div"></div>
|
||
<input name="attr_current_endurance" type="text" title="@{current_endurance}" value="10" />
|
||
</div>
|
||
<span class="shield-label secondary-font" data-i18n="current">Current</span>
|
||
|
||
<input type="hidden" name="attr_endurance_penalty" value="0" />
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="critical-damage">
|
||
<div class="shadow-bottom-left">
|
||
<div class="outer-box skill-name-box">
|
||
|
||
<div class="skills-inner-box physical-condition-label">
|
||
<span class="secondary-label secondary-font" data-i18n="critical_damage">Critical damage</span>
|
||
<div class="negative-corner-thinner top-right-corner"></div>
|
||
<div class="negative-corner-thinner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<input class="radio-zero" name="attr_critical_damage" type="radio" value="0" checked="true"
|
||
title="@{critical_damage}" /><span></span>
|
||
<input class="critical-radio" name="attr_critical_damage" type="radio" value="1"
|
||
title="@{critical_damage}" /><span></span>
|
||
<input class="critical-radio" name="attr_critical_damage" type="radio" value="2"
|
||
title="@{critical_damage}" /><span></span>
|
||
<input class="critical-radio" name="attr_critical_damage" type="radio" value="3"
|
||
title="@{critical_damage}" /><span></span>
|
||
<input class="critical-radio" name="attr_critical_damage" type="radio" value="4"
|
||
title="@{critical_damage}" /><span></span>
|
||
<input class="critical-radio" name="attr_critical_damage" type="radio" value="5"
|
||
title="@{critical_damage}" /><span></span>
|
||
</div>
|
||
|
||
<span class="italic-label primary-font" data-i18n="notes">Notes</span>
|
||
<textarea name="attr_notes" title="@{notes}"></textarea>
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
<div class="box-bottom">
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Gear -->
|
||
<div class="gear box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="money_and_gear">Money & gear</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="box-middle content-box">
|
||
|
||
<fieldset class="repeating_gear">
|
||
|
||
<div class="repeatable-item">
|
||
<div class="repeatable-row">
|
||
<input name="attr_gear_name" type="text" title="@{gear_name}" />
|
||
|
||
<div class="showhidebutton">
|
||
<input type="checkbox" name="attr_showhide_checkbox" value="1" />
|
||
<span></span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Hidden checkbox that controls show/hide section. See Sheet Workers-->
|
||
<input class="toggle-checkbox" type="checkbox" name="attr_showhide_checkbox_invisible" value="1" />
|
||
|
||
<div class="showhide">
|
||
|
||
<div class="gear-hidden">
|
||
|
||
<span class="hidden-section-label secondary-font" data-i18n="cost">Cost</span>
|
||
<input type="number" name="attr_gear_cost" title="@{gear_cost}" value="0" />
|
||
|
||
</div>
|
||
|
||
<textarea name="attr_gear_description" data-i18n-placeholder="description" placeholder="Description"
|
||
title="@{gear_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
</fieldset>
|
||
|
||
<div class="money">
|
||
<div class="shadow-bottom-left">
|
||
<div class="outer-box skill-name-box">
|
||
|
||
<div class="skills-inner-box physical-condition-label">
|
||
<span class="secondary-label secondary-font" data-i18n="money">Money</span>
|
||
<div class="negative-corner-thinner top-right-corner"></div>
|
||
<div class="negative-corner-thinner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<input name="attr_money" type="text" title="@{money}" value="1000" />
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
<div class="box-bottom">
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Weapons and armors -->
|
||
<div class="equip box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="weapons_and_armors">Weapons & armors</span>
|
||
<div class="damage-label">
|
||
<span class="secondary-label secondary-font" data-i18n="damage">Damage</span>
|
||
</div>
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="box-middle content-box">
|
||
|
||
<fieldset class="repeating_equip">
|
||
|
||
<div class="repeatable-item">
|
||
<div class="repeatable-row">
|
||
|
||
<input class="equipped" name="attr_equip_equipped" type="checkbox" title="@{equip_equipped}" />
|
||
|
||
<input name="attr_equip_name" type="text" title="@{equip_name}" />
|
||
|
||
<div class="equip-damage-box">
|
||
<input type="number" name="attr_equip_damage" title="@{equip_damage}" value="0" />
|
||
</div>
|
||
|
||
<div class="showhidebutton">
|
||
<input type="checkbox" name="attr_showhide_checkbox" value="1" />
|
||
<span></span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Hidden checkbox that controls show/hide section. See Sheet Workers-->
|
||
<input class="toggle-checkbox" type="checkbox" name="attr_showhide_checkbox_invisible" value="1" />
|
||
|
||
<div class="showhide">
|
||
|
||
<div class="equip-hidden">
|
||
|
||
<span class="hidden-section-label secondary-font" data-i18n="passive_defence_bonus">Passive
|
||
defence bonus</span>
|
||
<span class="hidden-section-label secondary-font" data-i18n="active_defence_bonus">Active
|
||
defence bonus</span>
|
||
|
||
<input type="number" name="attr_equip_passive_defence_bonus" title="@{equip_passive_defence_bonus}"
|
||
value="0" />
|
||
<input type="number" name="attr_equip_active_defence_bonus" title="@{equip_active_defence_bonus}"
|
||
value="0" />
|
||
|
||
<span class="hidden-section-label secondary-font" data-i18n="reach">Reach</span>
|
||
<span class="hidden-section-label secondary-font" data-i18n="cost">Cost</span>
|
||
|
||
<input type="text" name="attr_equip_reach" title="@{equip_reach}" />
|
||
<input type="number" name="attr_equip_cost" title="@{equip_cost}" value="0" />
|
||
|
||
</div>
|
||
|
||
<textarea name="attr_equip_description" data-i18n-placeholder="description" placeholder="Description"
|
||
title="@{equip_description}"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
</fieldset>
|
||
|
||
<div class="equip-totals">
|
||
|
||
<div class="shadow-bottom-left">
|
||
<div class="outer-box skill-name-box">
|
||
|
||
<div class="skills-inner-box physical-condition-label">
|
||
<span class="secondary-label secondary-font" data-i18n-title="equip-totals-explain"
|
||
title="Only equipments with the checkbox marked will count for the defence bonuses."
|
||
data-i18n="defence-totals">Defence totals</span>
|
||
<div class="negative-corner-thinner top-right-corner"></div>
|
||
<div class="negative-corner-thinner bottom-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="equip-totals-grid">
|
||
<span class="hidden-section-label secondary-font" data-i18n-title="equip-totals-explain"
|
||
title="Only equipments with the checkbox marked will count for the defence bonuses."
|
||
data-i18n="passive">Passive</span>
|
||
<span class="hidden-section-label secondary-font" data-i18n-title="equip-totals-explain"
|
||
title="Only equipments with the checkbox marked will count for the defence bonuses."
|
||
data-i18n="active">Active</span>
|
||
<input type="text" readonly="true" name="attr_equip_total_passive_defence"
|
||
title="{@equip_total_passive_defence}" value="0" />
|
||
<input type="text" readonly="true" name="attr_equip_total_active_defence"
|
||
title="{@equip_total_active_defence}" value="0" />
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
<div class="box-bottom">
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Config tab-->
|
||
<div class='configurationtab'>
|
||
|
||
<div class="box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="settings">Settings</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="box-middle content-box">
|
||
|
||
<div class="settings-grid">
|
||
<span class="secondary-label secondary-font" data-i18n="max_defence_value">Max defence value</span>
|
||
<input type="number" name="attr_max_defence_value" value="5" title="@{max_defence_value}">
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
<div class="box-bottom">
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Help Tab -->
|
||
<div class='helptab'>
|
||
<div class="box-margin">
|
||
|
||
<div class="outer-box">
|
||
|
||
<div class="black-box inner-box">
|
||
<span class="label primary-font" data-i18n="help">Help</span>
|
||
|
||
<div class="negative-corner top-left-corner"></div>
|
||
<div class="negative-corner top-right-corner"></div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="box-middle secondary-font help-content">
|
||
|
||
<p class="secondary-font help-title" data-i18n="help-title">How to use The Elephant and Macaw Banner RPG Roll20 Character Sheet</p>
|
||
<p class="secondary-font help-default" data-i18n="help-introduction">Thanks for playing The Elephant and Macaw Banner RPG! Please read this guide to
|
||
understand how all the fields work on our Roll20 character sheet.</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="name">Name</span>,
|
||
<span class="secondary-font help-bold" data-i18n="characteristics">Characteristics</span>,
|
||
<span class="secondary-font help-bold" data-i18n="history">History</span> -
|
||
<span class="secondary-font help-default" data-i18n="names_chars_his_instructions">These fields should be filled in
|
||
manually.</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="defence">Defence</span> -
|
||
<span class="secondary-font help-default" data-i18n="defence_instructions">The Active and Passive Defense values are
|
||
calculated automatically, depending on what you have equipped in the Weapons & armors field (see below). If
|
||
you need to add in other modifiers, use the “Mod” boxes. The max defense value is 5, but in exceptional
|
||
circumstances, this value can be modified in the sheet´s configuration menu by clicking the settings button
|
||
at the top of the sheet.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="energy">Energy</span> -
|
||
<span class="secondary-font help-default" data-i18n="energy_instructions">The max energy is calculated automatically by
|
||
selecting the “Energy” box related to the character´s primary power skill in the Skills field (see below).
|
||
At the current time, we can´t calculate the energy spent automatically, so the current energy must be
|
||
changed manually each time a power is used or energy is recovered.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="skills">Skills</span> -
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions1">A new character begins with 20 points to
|
||
distribute among skills, which can be distributed according to the suggested initial configuration in the
|
||
rules or in any other way. Any time new learning points are earned, they can be added manually to the
|
||
“Points to spend” field and spent on skills. For example, if the player has 1 point to spend and earns 2
|
||
more learning points, simply change the value in “Points to spend” to 3.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions2">The “All tests modifier” field is used to apply a
|
||
modifier to every skill test. This is useful for cases such as when the character receives a Blessing
|
||
(applying a positive value in the field) or a disease (applying a negative value).
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions3">The dropdown button on each skill serves three
|
||
purposes:
|
||
</span>
|
||
|
||
<ol>
|
||
<li>
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions4">Using the Mod field to add a modifier specific
|
||
to that skill. For example, if the player is using a weapon that gives +2 to the <b>Impact weapons</b> skill,
|
||
that bonus should be put into the Mod field. The skill´s level bonus is added automatically to tests and
|
||
should not be applied to the Mod field.
|
||
</span>
|
||
</li>
|
||
<li>
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions5">If the skill is one of the three base power
|
||
skills, <b>Faith</b>, <b>Breath</b> or <b>Ifá</b> (or something equivalent in the expanded rules), the “Energy” box should be
|
||
selected.
|
||
</span>
|
||
</li>
|
||
<li>
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions6">A description can be added in the description
|
||
box, if desired.
|
||
</span>
|
||
</li>
|
||
</ol>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="skills_instructions7">If you need to <i>delete</i> a skill, click on the padlock icon at the bottom of the Skills field, then choose the skill for removal.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="rolling_skill_tests">Rolling skill tests:</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions1">Clicking the die icon next to each skill will apply a test. The player will be asked to choose the feat level (easy, intermediate, difficult, legendary) and a final modifier value, which can be used to apply effects like subtracting the target´s defense on an attack.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions2">The result will be shown in the chat window as the sum of three values:
|
||
</span>
|
||
</p>
|
||
|
||
<p class="help-roll">
|
||
<span class="secondary-font" data-i18n="rolling_skills_formula">The 3d6 roll + the skill´s level bonus + other modifiers
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions3">Other modifiers include:
|
||
</span>
|
||
|
||
<ol>
|
||
<li>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions4">modifier chosen when rolling,
|
||
</span>
|
||
</li>
|
||
<li>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions5">the “Modify all skills” value and
|
||
</span>
|
||
</li>
|
||
<li>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions6">the Mod value set for the individual skill.
|
||
</span>
|
||
</li>
|
||
</ol>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="rolling_skills_instructions7">For example: A character receives a <i>Bless +2</i> during a battle, so the player should put 2 in the All tests modifier field. The character is using an excepcional rapier that gives +1 to <b>Fencing</b>, which should be represented as 1 in the skill´s Mod field. The player decides to make a normal melee attack (easy feat) on a creature with an Active Defense of 4. So after clicking the die beside <b>Fencing</b> for the test, the player should choose an easy feat and place -4 in the Mod field to subtract the creature´s defense. In the chat window, the “Mods” applied to the test should appear as -1, representing -4 + 2 + 1 for the three modifiers.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="initiative">Initiative</span> -
|
||
<span class="secondary-font help-default" data-i18n="initiative_instructions">Can be used for an initiative check.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="untrained_skill">Untrained skill</span> -
|
||
<span class="secondary-font help-default" data-i18n="untrained_skill_instructions">Can be used for level 0 tests against easy or intermediate feats, as explained in the rulebook.
|
||
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="physical-condition">Physical Condition</span> -
|
||
<span class="secondary-font help-default" data-i18n="physical-condition_instructions">Endurance, Critical damage and Notes must be filled in manually.
|
||
|
||
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="money_and_gear">Money & Gear</span> -
|
||
<span class="secondary-font help-default" data-i18n="money_and_gear_instructions">These fields should be applied manually and do not affect anything else on the sheet.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-bold" data-i18n="weapons_and_armors">Weapons & Armors</span> -
|
||
<span class="secondary-font help-default" data-i18n="weapons_and_armors_instructions1">It is important to fill in any Active or Passive Defense bonuses related to each piece of equipment. For example, a character with a rapier and level 2 in <b>Fencing</b> should fill in 2 in the Active defense bonus field for that item. The player must also be careful to always select <i>only</i> the current weapon in use. Otherwise, the defense bonus will be calculated incorrectly.
|
||
</span>
|
||
</p>
|
||
|
||
<p>
|
||
<span class="secondary-font help-default" data-i18n="weapons_and_armors_instructions2">The damage fields and description are for reference only.
|
||
</span>
|
||
</p>
|
||
|
||
<p class="help-credits help-margin-top">
|
||
<span class="secondary-font help-default" data-i18n="credits">Credits:
|
||
</span>
|
||
</p>
|
||
|
||
<p class="help-credits">
|
||
<span class="secondary-font help-default" data-i18n="credits_text">Character Sheet by Christopher Kastensmidt and Filipe Borin
|
||
Roll20 implementation by Daniel Tschiedel
|
||
</span>
|
||
</p>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="outer-box">
|
||
<div class="box-bottom">
|
||
|
||
<div class="negative-corner bottom-left-corner"></div>
|
||
<div class="negative-corner bottom-right-corner"></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Footer -->
|
||
<div class="footer primary-font">
|
||
<span data-i18n="copyright">This is a character sheet for The Elephant and Macaw Banner RPG, (c) 2017 Christopher
|
||
Kastensmidt. All rights reserved.</span>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- end of sheet -->
|
||
|
||
<!-- Roll Templates -->
|
||
<rolltemplate class="sheet-rolltemplate-main">
|
||
<div class="template-container">
|
||
<div class="template-header template-label">
|
||
<span class="template-label">{{charname}}</span>
|
||
</div>
|
||
|
||
{{#check}}
|
||
<div class="template-check template-separator">
|
||
<span class="template-label" data-i18n="check">Check</span>
|
||
<span class="template-value">{{check}}</span>
|
||
</div>
|
||
{{/check}}
|
||
|
||
{{#result}}
|
||
|
||
<div class="template-roll template-separator">
|
||
<div class="template-difficulty">
|
||
<span class="template-label" data-i18n="difficulty">Difficulty</span>
|
||
<span class="template-value">{{target}}</span>
|
||
</div>
|
||
|
||
<div class="template-difficulty">
|
||
<span class="template-value" data-i18n="skill-bonus">Skill bonus</span>
|
||
<span class="template-value">{{skill_bonus}}</span>
|
||
</div>
|
||
|
||
<div class="template-difficulty">
|
||
<span class="template-value" data-i18n="mods">Mods</span>
|
||
<span class="template-value">{{mod}}</span>
|
||
</div>
|
||
|
||
<span class="template-value">{{dice}} + {{skill_bonus}} + {{mod}} = {{result}}</span>
|
||
|
||
</div>
|
||
|
||
<div class="template-result">
|
||
<span class="template-label" data-i18n="result">Result</span>
|
||
{{#^rollLess() result target}}
|
||
<span class="template-value template-success" data-i18n="success">Success</span>
|
||
{{/^rollLess() result target}}
|
||
|
||
{{#rollLess() result target}}
|
||
<span class="template-value template-fail" data-i18n="failure">Failure</span>
|
||
{{/rollLess() result target}}
|
||
|
||
{{#rollTotal() dice 3}}
|
||
<span class="template-value template-fail" data-i18n="epic_failure">Epic failure!</span>
|
||
{{/rollTotal() dice 3}}
|
||
|
||
{{#rollTotal() dice 18}}
|
||
<span class="template-value template-success" data-i18n="epic_success">Epic success!</span>
|
||
{{/rollTotal() dice 18}}
|
||
</div>
|
||
|
||
{{/result}}
|
||
|
||
{{#initiative}}
|
||
<div class="template-result">
|
||
<span class="template-value">{{initiative}}</span>
|
||
</div>
|
||
{{/initiative}}
|
||
|
||
</div>
|
||
|
||
</rolltemplate>
|
||
|
||
<!-- Strings translations for Roll Queries-->
|
||
<div style="display: none;">
|
||
<span data-i18n="mod">Mod</span>
|
||
<span data-i18n="easy">Easy</span>
|
||
<span data-i18n="intermediate">Intermediate</span>
|
||
<span data-i18n="difficult">Difficult</span>
|
||
<span data-i18n="legendary">Legendary</span>
|
||
|
||
</div>
|
||
|
||
<!--Sheet Workers -->
|
||
<script type="text/worker">
|
||
|
||
/*Tabs Control */
|
||
on('change:tabs_radio', function(eventInfo) {
|
||
setAttrs({
|
||
selected_tab: eventInfo.newValue
|
||
});
|
||
});
|
||
|
||
/*Controls skill level circles */
|
||
on("change:repeating_skills:skill_level", function(eventInfo) {
|
||
let source = eventInfo.sourceAttribute;
|
||
const levelValue = parseInt(eventInfo.newValue)||0;
|
||
let changeAttributes = new Object();
|
||
|
||
for (let i = 1; i <= 3; i++) {
|
||
let targetId = source + '_control' + i;
|
||
let controlValue = 'off';
|
||
|
||
if (i <= levelValue) {
|
||
controlValue = 'on';
|
||
}
|
||
|
||
changeAttributes[targetId] = controlValue;
|
||
}
|
||
|
||
setAttrs(changeAttributes);
|
||
|
||
});
|
||
|
||
/* calculates energy value from the skill level */
|
||
function getEnergyValue(skillLevel) {
|
||
|
||
switch(skillLevel) {
|
||
case '1':
|
||
return 5;
|
||
case '2':
|
||
return 10;
|
||
case '3':
|
||
return 20;
|
||
default:
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
//Repeating Sum [https://wiki.roll20.net/RepeatingSum]
|
||
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);
|
||
});
|
||
});
|
||
};
|
||
|
||
/* calculating total weapons and armors defence bonus */
|
||
on('sheet:opened change:repeating_equip remove:repeating_equip', function() {
|
||
repeatingSum("equip_total_active_defence", "equip", ["equip_active_defence_bonus", "equip_equipped"]);
|
||
repeatingSum("equip_total_passive_defence", "equip", ["equip_passive_defence_bonus", "equip_equipped"]);
|
||
});
|
||
|
||
function getSkillCost(skillLevel) {
|
||
let skillCost = 0;
|
||
switch(skillLevel) {
|
||
case 1:
|
||
skillCost = 1;
|
||
break;
|
||
case 2:
|
||
skillCost = 3;
|
||
break;
|
||
case 3:
|
||
skillCost = 7;
|
||
break;
|
||
}
|
||
|
||
return skillCost;
|
||
}
|
||
|
||
function updatePointsToSpend(plusPoints) {
|
||
|
||
getAttrs(['points_to_spend'], values => {
|
||
const points = parseInt(values.points_to_spend)||0;
|
||
let currentPoints = points + plusPoints;
|
||
|
||
setAttrs({
|
||
points_to_spend: currentPoints
|
||
});
|
||
});
|
||
}
|
||
|
||
/* Controlling points to spend when the skill is removed */
|
||
on('remove:repeating_skills', function(eventInfo) {
|
||
const skillLevel = parseInt(eventInfo.removedInfo[`${eventInfo.sourceAttribute}_skill_level`])||0;
|
||
|
||
/*adding the skill cost to the points to spend when the skill is removed */
|
||
updatePointsToSpend(getSkillCost(skillLevel));
|
||
|
||
});
|
||
|
||
/* Controlling points to spend when the skill level is changed */
|
||
on('change:repeating_skills:skill_level', function(eventInfo) {
|
||
const newValue = parseInt(eventInfo.newValue)||0;
|
||
const oldValue = parseInt(eventInfo.previousValue)||0;
|
||
const oldCost = getSkillCost(oldValue);
|
||
const newCost = getSkillCost(newValue);
|
||
|
||
let difference = oldCost - newCost;
|
||
|
||
/* When the repeating item is new, the oldValue will be equal to the newValue
|
||
In this case, we have to consider the cost in total */
|
||
if (difference == 0) {
|
||
difference = (-1)*newCost;
|
||
}
|
||
|
||
updatePointsToSpend(difference);
|
||
|
||
});
|
||
|
||
/* Turning off all other skills energy checkbox when the player checks a box */
|
||
on("change:repeating_skills:skill_energy", function(eventInfo) {
|
||
|
||
if (eventInfo.newValue == 'off') {
|
||
return;
|
||
}
|
||
|
||
const id = eventInfo.sourceAttribute.split('_')[2];
|
||
|
||
getSectionIDs("skills", function(idarray) {
|
||
let attrs = new Object();
|
||
|
||
for(var i=0; i < idarray.length; i++) {
|
||
|
||
if (idarray[i] != id) {
|
||
let field = 'repeating_skills_' + idarray[i] + '_skill_energy';
|
||
attrs[field] = 'off';
|
||
}
|
||
}
|
||
|
||
setAttrs(attrs);
|
||
});
|
||
});
|
||
|
||
/* Recalculates energy when skill is removed */
|
||
on("remove:repeating_skills", function(eventInfo) {
|
||
|
||
const skillLevel = eventInfo.removedInfo[eventInfo.sourceAttribute + '_skill_level'];
|
||
const energyCheck = eventInfo.removedInfo[eventInfo.sourceAttribute + '_skill_energy'];
|
||
const energyValue = 0;
|
||
|
||
/* if energy was checked, then Energy must return to zero */
|
||
if (energyCheck == 'on') {
|
||
setAttrs({
|
||
energy: energyValue
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
/* Calculates energy based on power skill */
|
||
on("change:repeating_skills:skill_energy change:repeating_skills:skill_level", function(eventInfo) {
|
||
|
||
const source = eventInfo.sourceAttribute;
|
||
|
||
if (eventInfo.sourceType == 'sheetworker') {
|
||
return;
|
||
}
|
||
|
||
getAttrs(["repeating_skills_skill_level", "repeating_skills_skill_energy"], function(values) {
|
||
const skillLevel = values.repeating_skills_skill_level;
|
||
const energyCheck = values.repeating_skills_skill_energy;
|
||
let energyValue = 0;
|
||
|
||
/* if the change was on the skill level, but the energy check is off, then do nothing */
|
||
if (source.search('skill_level') >= 0 && energyCheck == 'off') {
|
||
return;
|
||
}
|
||
|
||
if (energyCheck == 'on') {
|
||
energyValue = getEnergyValue(skillLevel);
|
||
}
|
||
|
||
setAttrs({
|
||
energy: energyValue
|
||
});
|
||
});
|
||
});
|
||
|
||
const defenceFactors = ["equip_total_passive_defence",
|
||
"equip_total_active_defence",
|
||
"passive_defence_mod",
|
||
"active_defence_mod",
|
||
"max_defence_value"];
|
||
|
||
/* controls defence values calculation */
|
||
defenceFactors.forEach(attr => {
|
||
on(`sheet:opened change:${attr}`, function(eventInfo) {
|
||
|
||
getAttrs([...defenceFactors], values => {
|
||
|
||
/* Parsing values */
|
||
Object.keys(values).map(function(key, index) {
|
||
values[key] = parseInt(values[key])||0;
|
||
});
|
||
|
||
const maxDefence = values.max_defence_value;
|
||
let passiveDefence = 0;
|
||
let activeDefence = 0;
|
||
|
||
passiveDefence = values.equip_total_passive_defence + values.passive_defence_mod;
|
||
activeDefence = passiveDefence + values.equip_total_active_defence + values.active_defence_mod;
|
||
|
||
if (passiveDefence > maxDefence) {
|
||
passiveDefence = maxDefence;
|
||
}
|
||
|
||
if (activeDefence > maxDefence) {
|
||
activeDefence = maxDefence;
|
||
}
|
||
|
||
setAttrs({
|
||
passive_defence: passiveDefence,
|
||
active_defence: activeDefence
|
||
});
|
||
|
||
});
|
||
});
|
||
});
|
||
|
||
/*Controls max endurance and max damage*/
|
||
on("change:max_endurance change:damage", function(eventInfo) {
|
||
const maxValue = 15;
|
||
let oldValue = parseInt(eventInfo.previousValue)||0;
|
||
let newValue = parseInt(eventInfo.newValue)||0;
|
||
let attribute = eventInfo.sourceAttribute;
|
||
let changedAttributes = new Object();
|
||
|
||
changedAttributes[attribute] = maxValue;
|
||
|
||
if (newValue > maxValue) {
|
||
|
||
changedAttributes[attribute] = maxValue;
|
||
setAttrs(changedAttributes);
|
||
}
|
||
});
|
||
|
||
/*Controls endurance penalty to skill rolls*/
|
||
on("change:current_endurance", function(eventInfo) {
|
||
const currentValue = parseInt(eventInfo.newValue)||0;
|
||
let endurancePenalty = 0;
|
||
|
||
if (currentValue <= 3) {
|
||
endurancePenalty = 1;
|
||
}
|
||
|
||
setAttrs({
|
||
endurance_penalty: endurancePenalty
|
||
});
|
||
|
||
});
|
||
|
||
/*Controls show hide checkbox button from repeating sections*/
|
||
on("change:repeating_skills:showhide_checkbox " +
|
||
"change:repeating_gear:showhide_checkbox " +
|
||
"change:config_showhide_checkbox " +
|
||
"change:repeating_equip:showhide_checkbox" , function(eventInfo) {
|
||
|
||
let source = eventInfo.sourceAttribute;
|
||
let changeAttributes = new Object();
|
||
let targetId = source + '_invisible';
|
||
|
||
changeAttributes[targetId] = eventInfo.newValue;
|
||
|
||
setAttrs(changeAttributes);
|
||
});
|
||
|
||
/*config Roll Queries translations */
|
||
on("sheet:opened", function(eventInfo){
|
||
|
||
setAttrs({
|
||
mod: getTranslationByKey("mod"),
|
||
difficulty: getTranslationByKey("difficulty"),
|
||
initiative_label: getTranslationByKey("initiative"),
|
||
untrained_skill_label: getTranslationByKey("untrained_skill"),
|
||
easy: getTranslationByKey("easy"),
|
||
intermediate: getTranslationByKey("intermediate"),
|
||
difficult: getTranslationByKey("difficult"),
|
||
legendary: getTranslationByKey("legendary")
|
||
|
||
});
|
||
|
||
});
|
||
|
||
/*controls roll buttons when char has a condition checked*/
|
||
on("change:wounded change:shaken change:ashamed", function(eventInfo) {
|
||
const disadvantage = "disadvantage";
|
||
const normal = "normal";
|
||
const sourceAttribute = eventInfo.sourceAttribute;
|
||
const newValue = eventInfo.newValue;
|
||
let changedAttributes = new Object();
|
||
let controlToUpdate = sourceAttribute + "control";
|
||
|
||
changedAttributes[controlToUpdate] = normal;
|
||
|
||
switch(newValue) {
|
||
case "on":
|
||
changedAttributes[controlToUpdate] = disadvantage;
|
||
break;
|
||
default:
|
||
changedAttributes[controlToUpdate] = normal;
|
||
}
|
||
|
||
setAttrs(changedAttributes);
|
||
|
||
});
|
||
|
||
</script> |