Files
roll20-character-sheets-tester/TheElephantAndMacawBanner/the_elephant_and_macaw_banner.html
T

1419 lines
52 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>