mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 11:42:29 +00:00
1622 lines
74 KiB
HTML
1622 lines
74 KiB
HTML
<div>
|
||
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="main" />
|
||
<input type="hidden" name="attr_true" value="1" />
|
||
<input type="hidden" name="attr_false" value="0" />
|
||
<input type="hidden" name="attr_maxLuck" value="3" />
|
||
<input type="hidden" name="attr_maxAp" value="5" />
|
||
<input type="hidden" name="attr_maxPoise" value="5" />
|
||
<input type="hidden" name="attr_maxHp" value="10" />
|
||
<input type="hidden" name="attr_force_challenge_action" value="" />
|
||
<input type="hidden" name="attr_body_challenge_action" value="" />
|
||
<input type="hidden" name="attr_speed_challenge_action" value="" />
|
||
<input type="hidden" name="attr_intelligence_challenge_action" value="" />
|
||
<input type="hidden" name="attr_feel_challenge_action" value="" />
|
||
<input type="hidden" name="attr_experience_challenge_action" value="" />
|
||
<input type="hidden" name="attr_impression_challenge_action" value="" />
|
||
<input type="hidden" name="attr_challenge_action" value="" />
|
||
<input type="hidden" name="attr_draw_action" value="" />
|
||
<input type="hidden" name="attr_dash_action" value="" />
|
||
<input type="hidden" name="attr_move_action" value="" />
|
||
<input type="hidden" name="attr_sprint_action" value="" />
|
||
<input type="hidden" name="attr_font_picker" value="" />
|
||
<input type="hidden" name="collapsedFields" value="" />
|
||
|
||
<div class="sheet-tabs-wrapper">
|
||
<button type="action" data-i18n="main-page" class="sheet-button0" name="act_main">Main Page</button>
|
||
<button type="action" data-i18n="details-page" class="sheet-button1" name="act_details">Details</button>
|
||
</div>
|
||
|
||
<div class="font-picker">
|
||
<span>
|
||
<span data-i18n="font" class="input_label">
|
||
Font:
|
||
</span>
|
||
<select name="attr_font_picker">
|
||
<option value="0" selected="selected">Serif</option>
|
||
<option value="1">Sans</option>
|
||
</select>
|
||
</span>
|
||
</div>
|
||
|
||
<div class="sheet-main wide-grid">
|
||
<div class="sheet-grid-section">
|
||
<div class="title-wrapper">
|
||
<span class="title">Talebones</span>
|
||
<div class="outer_box">
|
||
<span class="subtitle">Dark Fantasy Roleplaying</span>
|
||
</div>
|
||
</div>
|
||
<div class="outer_box character-details sub-grid wide-grid">
|
||
<div class="top-left">
|
||
<span class="input_label" data-i18n="character-name">Character Name:</span>
|
||
<input type="text" name="attr_character_name" id="character_name" spellcheck="false"/>
|
||
</div>
|
||
<div class="top-right">
|
||
<span class="input_label" data-i18n="pronouns">Pronouns:</span>
|
||
<input type="text" name="attr_chr_pronouns" id="character_pronouns" spellcheck="false"/>
|
||
</div>
|
||
<div class="bottom-left">
|
||
<span class="input_label" data-i18n="species">Species:</span>
|
||
<input type="text" name="attr_chr_species" id="character_species" spellcheck="false"/>
|
||
</div>
|
||
<div class="bottom-middle">
|
||
<span class="input_label" data-i18n="profession">Profession:</span>
|
||
<input type="text" name="attr_chr_profession" id="character_profession" spellcheck="false"/>
|
||
</div>
|
||
<div class="bottom-right">
|
||
<span class="input_label" data-i18n="player-name">Player Name:</span>
|
||
<input type="text" name="attr_chr_player" id="character_player" spellcheck="false"/>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Charge/Signature Move -->
|
||
<div class="outer_box sub-grid charge-wrapper">
|
||
<span class="section_title wide-grid" data-i18n="signature-move">Signature Move</span>
|
||
<span class="sheet-attr input_label" data-i18n="charge">Charge</span>
|
||
<div>
|
||
<input type="hidden" name="attr_Charge" value="0" />
|
||
<input type="hidden" class="maxCharge" name="attr_maxChar" value="4" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Charge" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Charge" value="2" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Charge" value="3" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Charge" value="4" /><span></span>
|
||
</div>
|
||
<div class="box wide-grid sub-grid">
|
||
<span class="input_label"></span>
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span>
|
||
<div>
|
||
<button type="roll" name="signature_move_action" value="@{signature_move_action}"></button>
|
||
<button type="action" name="act_signature-move-action" class="hidden"></button>
|
||
<input type="hidden" name="signature_move_action" value="">
|
||
</div>
|
||
<div>
|
||
<a class="button" id="signature-move" href="#popup1"><input type="text" class="text-box" name="attr_signature-move-name" spellcheck="false" readonly /></a>
|
||
</div>
|
||
<div>
|
||
<a class="button" id="signature-move" href="#popup1"><input type="number" id="signature-move-ap" name="attr_signature-move-ap" value="3" readonly /></a>
|
||
</div>
|
||
</div>
|
||
<div id="popup1" class="overlay">
|
||
<div class="popup">
|
||
<a class="close" href="#">×</a>
|
||
<div class="content">
|
||
<span class="section_title wide-grid" data-i18n="signature-move">Signature Move</span>
|
||
<span class="input_label wide-grid" data-i18n="name">Name</span>
|
||
<input type="text" class="wide-grid" name="attr_signature-move-name" spellcheck="false"/>
|
||
<span class="input_label wide-grid" data-i18n="action-points-abbreviation">AP</span>
|
||
<input type="number" class="wide-grid" name="attr_signature-move-ap"/>
|
||
<span class="input_label wide-grid" data-i18n="description">Description</span>
|
||
<textarea class="wide-grid" name="attr_signature-move-desc" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Luck/AP/Poise/HP -->
|
||
<div class="outer_box sub-grid stats-wrapper">
|
||
<div class="stat-wrapper">
|
||
<div>
|
||
<span class="input_label" data-i18n="luck">Luck</span>
|
||
<input class="stat-current-value" type="number" id="luck" name="attr_Luck" min="0" value="3">
|
||
</div>
|
||
<div>
|
||
<span class="input_label" data-i18n="max">max</span>
|
||
<span class="stat-max-value" name="attr_maxLuck"></span>
|
||
<button type="action" class="stat_dec" name="act_dec-Luck">-</button>
|
||
<button type="action" class="stat_inc" name="act_inc-Luck">+</button>
|
||
</div>
|
||
</div>
|
||
<div class="stat-wrapper">
|
||
<div>
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span>
|
||
<input class="stat-current-value" type="number" id="ap" name="attr_Ap" min="0" value="10">
|
||
</div>
|
||
<div>
|
||
<span class="input_label" data-i18n="max">max</span>
|
||
<span class="stat-max-value" name="attr_maxAp"></span>
|
||
<button type="action" class="stat_dec" name="act_dec-Ap">-</button>
|
||
<button type="action" class="stat_inc" name="act_inc-Ap">+</button>
|
||
</div>
|
||
</div>
|
||
<div class="stat-wrapper">
|
||
<div>
|
||
<span class="input_label" data-i18n="poise">Poise</span>
|
||
<input class="stat-current-value" type="number" id="poise" name="attr_Poise" min="0" value="3">
|
||
</div>
|
||
<div>
|
||
<span class="input_label" data-i18n="max">max</span>
|
||
<span class="stat-max-value" name="attr_maxPoise"></span>
|
||
</div>
|
||
</div>
|
||
<div class="stat-wrapper">
|
||
<div>
|
||
<span class="input_label" data-i18n="hit-points-abbreviation">HP</span>
|
||
<input class="stat-current-value" type="number" id="hp" name="attr_Hp" min="0" value="20">
|
||
</div>
|
||
<div>
|
||
<span class="input_label" data-i18n="max">max</span>
|
||
<span class="stat-max-value" name="attr_maxHp"></span>
|
||
<button type="action" class="stat_dec" name="act_dec-Hp">-</button>
|
||
<button type="action" class="stat_inc" name="act_inc-Hp">+</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- STATUS EFFECTS -->
|
||
<div class="outer_box sub-grid status-effect-wrapper">
|
||
<span class="section_title wide-grid" data-i18n="status-effects"> Status Effects </span>
|
||
<div class="effect-wrapper">
|
||
<span class="sheet-attr input_label" data-i18n="tripped">Tripped</span>
|
||
<div>
|
||
<input type="hidden" name="attr_Tripped" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Tripped" value="1" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="effect-wrapper">
|
||
<span class="sheet-attr input_label" data-i18n="staggered">Staggered</span>
|
||
<div>
|
||
<input type="hidden" name="attr_Staggered" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Staggered" value="1" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="effect-wrapper">
|
||
<span class="sheet-attr input_label" data-i18n="downed">Downed</span>
|
||
<div>
|
||
<input type="hidden" name="attr_Downed" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Downed" value="1" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="effect-wrapper">
|
||
<span class="sheet-attr input_label" data-i18n="weirded">Weirded</span>
|
||
<div>
|
||
<input type="hidden" name="attr_Weirded" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Weirded" value="1" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="effect-wrapper wide-grid">
|
||
<span class="sheet-attr input_label" data-i18n="off-balance">Off-Balance</span>
|
||
<div>
|
||
<input type="hidden" name="attr_Off-Balance" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Off-Balance" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Off-Balance" value="2" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Off-Balance" value="3" /><span></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ATTRIBUTE FIELDS -->
|
||
<div class="outer_box sub-grid attributes-wrapper">
|
||
<span class="section_title" data-i18n="base-attributes">Base Attributes </span>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="force_challenge_action" value="@{force_challenge_action}"></button>
|
||
<button type="action" name="act_force-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="force_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="force">Force</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Force" value="1" />
|
||
<input type="hidden" class="maxForce" name="attr_maxFor" value="5" />
|
||
<input type="hidden" class="maxforcheck" name="attr_max_force_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Force" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Force" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Force" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Force" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Force" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Force" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="body_challenge_action" value="@{body_challenge_action}"></button>
|
||
<button type="action" name="act_body-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="body_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="body">Body</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Body" value="1" />
|
||
<input type="hidden" class="maxBody" name="attr_maxBod" value="5" />
|
||
<input type="hidden" class="maxbodcheck" name="attr_max_body_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Body" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Body" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Body" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Body" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Body" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Body" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="speed_challenge_action" value="@{speed_challenge_action}"></button>
|
||
<button type="action" name="act_speed-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="speed_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="speed">Speed</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Speed" value="1" />
|
||
<input type="hidden" class="maxSpeed" name="attr_maxSpe" value="5" />
|
||
<input type="hidden" class="maxspecheck" name="attr_max_speed_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Speed" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Speed" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Speed" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Speed" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Speed" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Speed" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="intelligence_challenge_action" value="@{intelligence_challenge_action}"></button>
|
||
<button type="action" name="act_intelligence-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="intelligence_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="intelligence">Intelligence</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Intelligence" value="1" />
|
||
<input type="hidden" class="maxIntelligence" name="attr_maxInt" value="5" />
|
||
<input type="hidden" class="maxintcheck" name="attr_max_intelligence_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Intelligence" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Intelligence" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Intelligence" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Intelligence" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Intelligence" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Intelligence" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="feel_challenge_action" value="@{feel_challenge_action}"></button>
|
||
<button type="action" name="act_feel-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="feel_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="feel">Feel</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Feel" value="1" />
|
||
<input type="hidden" class="maxFeel" name="attr_maxFee" value="5" />
|
||
<input type="hidden" class="maxfeecheck" name="attr_max_feel_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Feel" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Feel" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Feel" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Feel" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Feel" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Feel" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="experience_challenge_action" value="@{experience_challenge_action}"></button>
|
||
<button type="action" name="act_experience-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="experience_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="experience">Experience</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Experience" value="1" />
|
||
<input type="hidden" class="maxExperience" name="attr_maxExp" value="5" />
|
||
<input type="hidden" class="maxexpcheck" name="attr_max_experience_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Experience" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Experience" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Experience" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Experience" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Experience" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Experience" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div>
|
||
<button type="roll" name="impression_challenge_action" value="@{impression_challenge_action}"></button>
|
||
<button type="action" name="act_impression-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="impression_challenge_action" value="">
|
||
</div>
|
||
<div>
|
||
<span class="sheet-attr input_label" data-i18n="impression">Impression</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<input type="hidden" name="attr_Impression" value="1" />
|
||
<input type="hidden" class="maxImpression" name="attr_maxImp" value="5" />
|
||
<input type="hidden" class="maximpcheck" name="attr_max_impression_extended" value="0"/>
|
||
<input type="radio" class="sheet-normal" name="attr_Impression" value="1" /><span></span><input type="radio" class="sheet-normal" name="attr_Impression" value="2" /><span></span><input type="radio" class="sheet-normal" name="attr_Impression" value="3" /><span></span><input type="radio" class="sheet-normal" name="attr_Impression" value="4" /><span></span><input type="radio" class="sheet-normal" name="attr_Impression" value="5" /><span></span><input type="radio" class="sheet-normal extendedBubble" name="attr_Impression" value="6" /><span class="extendedValue"></span>
|
||
</div>
|
||
</div>
|
||
<div class="attribute-wrapper">
|
||
<div class="wide-grid">
|
||
<span class="sheet-attr" data-i18n="button-label-to-change-maximum">Inc./Dec. max Base Attr.</span>
|
||
</div>
|
||
<div class="attribute_points">
|
||
<button type="action" class="stat_dec" name="act_dec-ba">-</button>
|
||
<button type="action" class="stat_inc" name="act_inc-ba">+</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- TALENTS -->
|
||
<div class="outer_box sub-grid talents-wrapper">
|
||
<span class="section_title" data-i18n="talents"> Talents </span><div class="talent-wrapper">
|
||
<span class="sheet-attr input_label" data-i18n="skilled">Skilled</span>
|
||
<div></div>
|
||
<span class="sheet-attr input_label" data-i18n="pool-points">Pool Points</span>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Awareness-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Awareness-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="awareness">Awareness</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Awareness-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Awareness-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Awareness-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Breach-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Breach-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="breach">Breach</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Breach-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Breach-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Breach-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Convince-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Convince-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="convince">Convince</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Convince-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Convince-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Convince-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Fitness-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Fitness-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="fitness">Fitness</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Fitness-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Fitness-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Fitness-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Knowledge-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Knowledge-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="knowledge">Knowledge</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Knowledge-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Knowledge-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Knowledge-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Marrow-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Marrow-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="marrow">Marrow</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Marrow-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Marrow-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Marrow-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Medicine-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Medicine-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="medicine">Medicine</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Medicine-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Medicine-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Medicine-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
<div class="talent-wrapper">
|
||
<div class="skilled_point">
|
||
<input type="hidden" name="attr_Tactics-Skilled" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Tactics-Skilled" value="1" /><span></span>
|
||
</div>
|
||
<span class="sheet-attr input_label" data-i18n="tactics">Tactics</span>
|
||
<div class="pool_points">
|
||
<input type="hidden" name="attr_Tactics-Pool" value="0" />
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Tactics-Pool" value="1" /><span></span><input type="checkbox" class="sheet-normal bubbles" name="attr_Tactics-Pool" value="2" /><span></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- PLOT POINTS -->
|
||
<div class="outer_box sub-grid plot-points-wrapper">
|
||
<span class="sheet-attr section_title" data-i18n="plot-points">Plot Points</span>
|
||
<input type="hidden" name="attr_Plot-Points" value="0" />
|
||
<div>
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Plot-Points" value="1" /><span class="pp_visual"></span>
|
||
</div>
|
||
<div>
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Plot-Points" value="2" /><span class="pp_visual"></span>
|
||
</div>
|
||
<div>
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Plot-Points" value="3" /><span class="pp_visual"></span>
|
||
</div>
|
||
<div>
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Plot-Points" value="4" /><span class="pp_visual"></span>
|
||
</div>
|
||
<div>
|
||
<input type="checkbox" class="sheet-normal bubbles" name="attr_Plot-Points" value="5" /><span class="pp_visual"></span>
|
||
</div>
|
||
<span class="input_label" data-i18n="level">Level</span>
|
||
<input class="stat-max-value" type="number" id="level" name="attr_Level" value="1">
|
||
</div>
|
||
|
||
<!-- ACTIONS -->
|
||
<div class="outer_box sub-grid actions-wrapper">
|
||
<span class="wide-grid sheet-attr section_title" data-i18n="base-actions">Base Actions</span>
|
||
<!-- Challenge -->
|
||
<div class="action-wrapper">
|
||
<!-- The visible and draggable button for the macro bar -->
|
||
<button type="roll" name="roll_challenge" value="@{challenge_action}" data-i18n="challenge">Challenge</button>
|
||
<!-- The invisible button allowing the use of custom roll parsing -->
|
||
<button type="action" name="act_challenge-action" class="hidden"></button>
|
||
<!-- The invisible field for the attribute which contains the ability call -->
|
||
<input type="hidden" name="attr_challenge_action" value="">
|
||
</div>
|
||
<!-- REST -->
|
||
<div class="action-wrapper">
|
||
<button type="roll" name="roll_rest" value="@{rest_action}" data-i18n="rest">Rest</button>
|
||
<button type="action" name="act_rest-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_rest_action" value="">
|
||
</div>
|
||
<!-- DRAW -->
|
||
<div class="action-wrapper">
|
||
<button type="roll" name="roll_draw" value="@{draw_action}" data-i18n="draw">Draw</button>
|
||
<button type="action" name="act_draw-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_draw_action" value="">
|
||
</div>
|
||
<!-- HELP -->
|
||
<div class="action-wrapper">
|
||
<button type="roll" name="roll_help" value="@{help_action}" data-i18n="help">Help</button>
|
||
<button type="action" name="act_help-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_help_action" value="">
|
||
</div>
|
||
<!-- DASH -->
|
||
<div class="action-wrapper">
|
||
<button type="roll" name="roll_dash" value="@{dash_action}" data-i18n="dash">Dash</button>
|
||
<button type="action" name="act_dash-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_dash_action" value="">
|
||
</div>
|
||
<!-- MOVE -->
|
||
<div class="action-wrapper">
|
||
<button type="roll" name="roll_move" value="@{move_action}" data-i18n="move">Move</button>
|
||
<button type="action" name="act_move-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_move_action" value="">
|
||
</div>
|
||
<!-- SPRINT -->
|
||
<div class="action-wrapper">
|
||
<button type="roll" name="roll_sprint" value="@{sprint_action}" data-i18n="sprint">Sprint</button>
|
||
<button type="action" name="act_sprint-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_sprint_action" value="">
|
||
</div>
|
||
</div>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-challenge">
|
||
<div class="sheet-template-container">
|
||
<h2>{{title}}</h2>
|
||
<div class="sheet-results">
|
||
<p>{{ba}}</p>
|
||
<p>{{diff}}({{difficulty}})</p>
|
||
<p>{{ta}} ({{sk}}, {{pl}})</p>
|
||
<p>{{computed::roll1}}</p>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-action">
|
||
<div class="sheet-template-container">
|
||
<h2>{{name}}</h2>
|
||
<div class="sheet-results">
|
||
<p>{{desc}}</p>
|
||
<p>{{cost}}</p>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-signature-move">
|
||
<div class="sheet-template-container">
|
||
<h2>{{name}}</h2>
|
||
<div class="sheet-results">
|
||
<p>{{desc1}}</p>
|
||
<p>{{desc2}}</p>
|
||
<p>{{cost}}</p>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-rest">
|
||
<div class="sheet-template-container">
|
||
<h2>{{talebound}}</h2>
|
||
<div class="sheet-results">
|
||
<p>{{character_name}}</p>
|
||
<p>{{currHp}}</p>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<!-- ABILITIES -->
|
||
<div class="outer_box sub-grid abilities-wrapper">
|
||
<span class="section_title" data-i18n="abilities">Abilities</span>
|
||
<fieldset class="repeating_abilities" id="abilities">
|
||
<div class="ability-wrapper">
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<input type="text" name="attr_ability-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false" readonly />
|
||
<span class="input_label" data-i18n="description">Description</span>
|
||
<input type="text" name="attr_ability-desc" data-i18n-placeholder="description-abbreviation" placeholder="Desc" spellcheck="false" readonly />
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
|
||
<div class="outer_box sub-grid cum-talents-wrapper">
|
||
<!-- WAYS OF ENTRY -->
|
||
<div class="ways-of-entry-wrapper top">
|
||
<span class="section_title" data-i18n="ways-of-entry">Ways of Entry</span>
|
||
<fieldset class="repeating_ways-of-entry" id="ways-of-entry">
|
||
<input type="text" name="attr_way-of-entry" spellcheck="false">
|
||
</fieldset>
|
||
</div>
|
||
|
||
<!-- FIELDS OF ACADEMIC KNOWLEDGE -->
|
||
<div class="fields-of-study-wrapper bottom">
|
||
<span class="section_title" data-i18n="fields-of-academic-study">Fields of Academic Study</span>
|
||
<fieldset class="repeating_fields-of-study" id="fields-of-study">
|
||
<input type="text" name="attr_field-of-study" spellcheck="false">
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- WEAPON TALENTS -->
|
||
<div class="outer_box sub-grid weapon-talents-wrapper">
|
||
<span class="top section_title" data-i18n="weapon-talents">Weapon Talents</span>
|
||
<div>
|
||
<div class="weapon-talent-wrapper">
|
||
<span class="input_label"></span>
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span>
|
||
<span class="input_label" data-i18n="pool">Pool</span>
|
||
<span class="input_label" data-i18n="base-attributes-abbreviation">B.Attr.</span>
|
||
<span class="input_label" data-i18n="properties">Properties</span>
|
||
</div>
|
||
<fieldset class="repeating_weapon-talents" id="weapon-talents">
|
||
<div class="weapon-talent-wrapper">
|
||
<div>
|
||
<button type="roll" name="roll_weapon_challenge" value="@{weapon-challenge-action-attr}"></button>
|
||
<button type="action" name="act_weapon-challenge-action" class="hidden"></button>
|
||
<input type="hidden" name="attr_weapon-challenge-action-attr" value="">
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weapon-talent-name" id="weapon-talent-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false">
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_weapon-talent-ap" id="weapon-talent-ap" data-i18n-placeholder="action-points-abbreviation" placeholder="AP" spellcheck="false" readonly>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_weapon-talent-pool" id="weapon-talent-pool" data-i18n-placeholder="pool" placeholder="Pool" readonly>
|
||
</div>
|
||
<div>
|
||
<select class="ba_input" name="attr_weapon-talent-attr" id="weapon-talent-attr">
|
||
<option value="0" selected="selected">Force</option>
|
||
<option value="1">Body</option>
|
||
<option value="2">Speed</option>
|
||
<option value="3">Intelligence</option>
|
||
<option value="4">Feel</option>
|
||
<option value="5">Experience</option>
|
||
<option value="6">Impression</option>
|
||
</select>
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weapon-talent-properties" id="weapon-talent-properties" data-i18n-placeholder="properties" placeholder="Properties" spellcheck="false" readonly>
|
||
</div>
|
||
<div class="sheet-condensed-masteries">
|
||
<input type="hidden" class="sheet-condensed-masteries-toggle" name="attr_weapon-talent-Has-Mastery" value="0">
|
||
<div class="filtered weapon-mastery-wrapper mastery-1">
|
||
<input type="hidden" class="sheet-filtered-mastery-toggle" name="attr_weapon-mastery-Is-Active" value="0">
|
||
<span class="input_label" data-i18n="mastery-name">Mastery Name</span>
|
||
<span class="input_label" data-i18n="description">Description</span>
|
||
<div>
|
||
<input type="text" name="attr_weapon-mastery-1-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false" readonly>
|
||
</div>
|
||
<textarea name="attr_weapon-mastery-1-desc" data-i18n-placeholder="description" placeholder="Description" rows="2" cols="5" spellcheck="false" readonly></textarea>
|
||
</div>
|
||
<div class="filtered weapon-mastery-wrapper mastery-2">
|
||
<input type="hidden" class="sheet-filtered-mastery-toggle" name="attr_weapon-mastery-Is-Active" value="0">
|
||
<span class="input_label" data-i18n="mastery-name">Mastery Name</span>
|
||
<span class="input_label" data-i18n="description">Description</span>
|
||
<div>
|
||
<input type="text" name="attr_weapon-mastery-2-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false" readonly>
|
||
</div>
|
||
<textarea name="attr_weapon-mastery-2-desc" data-i18n-placeholder="description" placeholder="Description" rows="2" cols="5" spellcheck="false" readonly></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- BASE REACTIONS -->
|
||
<div class="outer_box sub-grid reactions-wrapper">
|
||
<span class="sheet-attr wide-grid section_title" data-i18n="reactions-and-incantations">Reactions & Incantations</span>
|
||
<div class="wide-grid">
|
||
<fieldset class="repeating_reactions" id="reactions">
|
||
<div class="sheet-condensed-reactions sub-grid">
|
||
<input type="hidden" class="sheet-condensed-reactions-toggle" name="attr_reaction-Is-Active" value="0">
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<input type="text" name="attr_reaction-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false" readonly>
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span>
|
||
<input type="number" name="attr_reaction-ap" data-i18n-placeholder="action-points-abbreviation" placeholder="AP" readonly>
|
||
<span class="input_label" data-i18n="trigger">Trigger</span>
|
||
<input type="text" class="wide-grid" name="attr_reaction-trigger" data-i18n-placeholder="trigger" placeholder="Trigger" spellcheck="false" readonly>
|
||
<input type="hidden" name="attr_reaction-Is-Incantation">
|
||
<span class="input_label hidden_reaction_ba" data-i18n="base-attr">Base Attr.</span>
|
||
<input type="text" class="wide-grid hidden_reaction_ba" name="attr_reaction-ba-clear" spellcheck="false" readonly>
|
||
<span class="input_label" data-i18n="type">Type</span>
|
||
<input type="text" class="wide-grid" name="attr_reaction-type-clear" spellcheck="false" readonly>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
<!-- REACTIONS AND INCANTATIONS -->
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sheet-details wide-grid">
|
||
<div class="sheet-grid-section">
|
||
<!-- CHARACTER -->
|
||
<div class="outer_box top_left character-info-wrapper">
|
||
<span class="section_title" data-i18n="character-info">Character Info</span>
|
||
<div>
|
||
<textarea class="textbox" name="attr_ability-desc" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- TALEBOUND EPITHETS -->
|
||
<div class="outer_box top_right epithets-wrapper">
|
||
<span class="section_title" data-i18n="talebound-epithets">Talebound Epithets</span>
|
||
<div class="epithet-wrapper">
|
||
<span class="input_label" data-i18n="active">Active</span>
|
||
<span class="input_label" data-i18n="epithet">Epithet</span>
|
||
</div>
|
||
<fieldset class="repeating_epithets" id="epithets">
|
||
<div class="epithet-wrapper">
|
||
<div class="input">
|
||
<input type="checkbox" class="sheet-normal" name="attr_epithet-Is-active" value="1" /><span></span>
|
||
</div>
|
||
<input type="text" name="attr_epithet-name" id="epithet-name" data-i18n-placeholder="talebound-epithet" placeholder="Talebound Epithet" spellcheck="false">
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
|
||
<!-- INVENTORY -->
|
||
<div class="outer_box bottom_left inventory-wrapper">
|
||
<span class="section_title" data-i18n="inventory">Inventory</span>
|
||
<div class="item-wrapper">
|
||
<span class="input_label" data-i18n="heavy">Heavy</span>
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<span class="input_label" data-i18n="ideas">Ideas</span>
|
||
</div>
|
||
<fieldset class="repeating_inventory" id="inventory">
|
||
<div class="item-wrapper">
|
||
<div class="input">
|
||
<input type="checkbox" class="sheet-normal" name="attr_inventory-Is-Heavy" value="1" /><span></span>
|
||
</div>
|
||
<input type="text" name="attr_inventory-name" data-i18n-placeholder="item" placeholder="Item" spellcheck="false">
|
||
<input type="number" name="attr_inventory-ideas" data-i18n-placeholder="ideas" placeholder="Ideas">
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
|
||
<div class="bottom_right">
|
||
<!-- ABILITIES -->
|
||
<div class="outer_box abilities-wrapper">
|
||
<span class="section_title" data-i18n="abilities">Abilities</span>
|
||
<fieldset class="repeating_abilities" id="abilities">
|
||
<div class="ability-wrapper">
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<input type="text" class="name_textfield" name="attr_ability-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false">
|
||
<span class="input_label" data-i18n="description">Description</span>
|
||
<textarea class="textbox" name="attr_ability-desc" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
|
||
<!-- SIGNATURE MOVE -->
|
||
<div class="outer_box signature-move-wrapper">
|
||
<span class="wide-grid section_title" data-i18n="signature-move"> Signature Move </span>
|
||
<div class="bottom_left">
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<input type="text" class="name_textfield" name="attr_signature-move-name" spellcheck="false"/>
|
||
</div>
|
||
<div class="bottom_right">
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span><br/>
|
||
<input type="number" class="ap_cost_input" name="attr_signature-move-ap"/>
|
||
</div>
|
||
<div class="wide-grid">
|
||
<span class="input_label" data-i18n="description">Description</span>
|
||
<textarea class="textbox" name="attr_signature-move-desc" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- WEAPON TALENTS -->
|
||
<div class="outer_box weapon-talents-wrapper">
|
||
<span class="section_title" data-i18n="weapon-talents">Weapon Talents</span>
|
||
<div>
|
||
<div class="weapon-talent-wrapper">
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span>
|
||
<span class="input_label" data-i18n="pool">Pool</span>
|
||
<span class="input_label" data-i18n="base-attributes-abbreviation">B.Attr.</span>
|
||
<span class="input_label" data-i18n="properties">Properties</span>
|
||
<span class="input_label" data-i18n="mastery">Mastery</span>
|
||
</div>
|
||
<fieldset class="repeating_weapon-talents" id="weapon-talents">
|
||
<div class="weapon-talent-wrapper">
|
||
<div>
|
||
<input type="text" class="name_textfield" name="attr_weapon-talent-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false">
|
||
</div>
|
||
<div>
|
||
<input type="number" class="ap_cost_input" name="attr_weapon-talent-ap" data-i18n-placeholder="action-points-abbreviation" placeholder="AP">
|
||
</div>
|
||
<div>
|
||
<input type="number" class="pool_input" name="attr_weapon-talent-pool" data-i18n-placeholder="pool" placeholder="Pool">
|
||
</div>
|
||
<div>
|
||
<select class="ba_input" name="attr_weapon-talent-attr">
|
||
<option value="0" selected="selected" data-i18n="force">Force</option>
|
||
<option value="1" data-i18n="body">Body</option>
|
||
<option value="2" data-i18n="speed">Speed</option>
|
||
<option value="3" data-i18n="intelligence">Intelligence</option>
|
||
<option value="4" data-i18n="feel">Feel</option>
|
||
<option value="5" data-i18n="experience">Experience</option>
|
||
<option value="6" data-i18n="impression">Impression</option>
|
||
</select>
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weapon-talent-properties" data-i18n-placeholder="properties" placeholder="Properties" spellcheck="false">
|
||
</div>
|
||
<div>
|
||
<input type="checkbox" class="sheet-normal visibility-toggle" name="attr_weapon-talent-Has-Mastery" value="1" /><span></span>
|
||
</div>
|
||
<div class="weapon-masteries-wrapper">
|
||
<div class="weapon-mastery-wrapper">
|
||
<span class="input_label" data-i18n="active">Active</span>
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<div class="input">
|
||
<input type="checkbox" class="sheet-normal" name="attr_weapon-mastery-Is-Active" value="1" /><span></span>
|
||
</div>
|
||
<input type="text" class="name_textfield" name="attr_weapon-mastery-1-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false">
|
||
<span class="input_label wide-grid" data-i18n="description">Description</span>
|
||
<textarea class="textbox wide-grid" name="attr_weapon-mastery-1-desc" data-i18n-placeholder="description" placeholder="Description" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
<div class="weapon-mastery-wrapper">
|
||
<span class="input_label" data-i18n="active">Active</span>
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
<div class="input">
|
||
<input type="checkbox" class="sheet-normal" name="attr_weapon-mastery-Is-Active" value="2" /><span></span>
|
||
</div>
|
||
<input type="text" class="name_textfield" name="attr_weapon-mastery-2-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false">
|
||
<span class="input_label wide-grid" data-i18n="description">Description</span>
|
||
<textarea class="textbox wide-grid" name="attr_weapon-mastery-2-desc" data-i18n-placeholder="description" placeholder="Description" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- REACTIONS -->
|
||
<div class="outer_box reactions-wrapper">
|
||
<span class="section_title" data-i18n="reactions-and-incantations">Reactions & Incantations</span>
|
||
<fieldset class="repeating_reactions" id="reactions">
|
||
<div class="sheet-reaction-wrapper">
|
||
<div class="top_left sub-grid">
|
||
<div class="top_left">
|
||
<span class="input_label" data-i18n="active">Active</span>
|
||
</div>
|
||
<div class="bottom_left">
|
||
<input type="checkbox" class="sheet-normal" name="attr_reaction-Is-Active" value="1" /><span></span>
|
||
</div>
|
||
<div class="top_right">
|
||
<span class="input_label" data-i18n="name">Name</span>
|
||
</div>
|
||
<div class="bottom_right">
|
||
<input type="text" class="name_textfield" name="attr_reaction-name" data-i18n-placeholder="name" placeholder="Name" spellcheck="false">
|
||
</div>
|
||
</div>
|
||
<div class="top_right sub-grid">
|
||
<div class="top_left">
|
||
<span class="input_label" data-i18n="action-points-abbreviation">AP</span>
|
||
</div>
|
||
<div class="bottom_left">
|
||
<input type="number" class="ap_cost_input" name="attr_reaction-ap" data-i18n-placeholder="action-points-abbreviation" placeholder="AP">
|
||
</div>
|
||
</div>
|
||
<div class="sub-grid">
|
||
<div class="top_left">
|
||
<span class="input_label" data-i18n="incantation">Incantation</span>
|
||
</div>
|
||
<div class="bottom_left">
|
||
<input type="checkbox" class="sheet-normal visibility-toggle" name="attr_reaction-Is-Incantation" value="1" /><span></span>
|
||
</div>
|
||
<div class="top_right">
|
||
<span class="input_label hidden_reaction_ba" data-i18n="base-attribute">Base Attribute</span>
|
||
</div>
|
||
<div class="bottom_right">
|
||
<select class="ba_input hidden_reaction_ba" name="attr_reaction-ba">
|
||
<option value="0" selected="selected" data-i18n="force">Force</option>
|
||
<option value="1" data-i18n="body">Body</option>
|
||
<option value="2" data-i18n="speed">Speed</option>
|
||
<option value="3" data-i18n="intelligence">Intelligence</option>
|
||
<option value="4" data-i18n="feel">Feel</option>
|
||
<option value="5" data-i18n="experience">Experience</option>
|
||
<option value="6" data-i18n="impression">Impression</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="wide-grid">
|
||
<span class="input_label" data-i18n="trigger">Trigger</span>
|
||
</div>
|
||
<div class="wide-grid">
|
||
<input type="text" name="attr_reaction-trigger" data-i18n-placeholder="trigger" placeholder="Trigger" spellcheck="false">
|
||
</div>
|
||
<div class="wide-grid">
|
||
<span class="input_label" data-i18n="type">Type</span>
|
||
</div>
|
||
<div class="wide-grid">
|
||
<select name="attr_reaction-type">
|
||
<option value="0" selected="selected" data-i18n="action">Action</option>
|
||
<option value="1" data-i18n="reactive">Reactive</option>
|
||
<option value="2" data-i18n="preventive">Preventive</option>
|
||
<option value="3" data-i18n="supportive">Supportive</option>
|
||
</select>
|
||
</div>
|
||
<div class="wide-grid">
|
||
<span class="input_label" data-i18n="description">Description</span>
|
||
</div>
|
||
<div class="wide-grid">
|
||
<textarea class="wide-grid textbox" name="attr_reaction-desc" data-i18n-placeholder="description" placeholder="Description" rows="2" cols="5" spellcheck="false"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
|
||
<!-- INCANTATIONS -->
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/worker">
|
||
const baseAttributes = [getTranslationByKey("force"),getTranslationByKey("body"),getTranslationByKey("speed"),getTranslationByKey("intelligence"),getTranslationByKey("feel"),getTranslationByKey("experience"),getTranslationByKey("impression")];
|
||
const talents = [getTranslationByKey("awareness"),getTranslationByKey("breach"),getTranslationByKey("convince"),getTranslationByKey("fitness"),getTranslationByKey("knowledge"),getTranslationByKey("marrow"),getTranslationByKey("medicine"),getTranslationByKey("tactics")];
|
||
const actionTypes = [getTranslationByKey("action"),getTranslationByKey("reactive"),getTranslationByKey("preventive"),getTranslationByKey("supportive")];
|
||
|
||
const buttonlist = ["main", "details"];
|
||
buttonlist.forEach(button => {
|
||
on(`clicked:${button}`, function() {
|
||
setAttrs({
|
||
sheetTab: button
|
||
});
|
||
});
|
||
});
|
||
|
||
on("sheet:opened", function () {
|
||
getAttrs(["Force","Body","Speed","Intelligence","Feel","Experience","Impression"], function(values) {
|
||
const output = {};
|
||
output['Force'] = (parseInt(values.Force) || 0);
|
||
output['Body'] = (parseInt(values.Body) || 0);
|
||
output['Speed'] = (parseInt(values.Speed) || 0);
|
||
output['Intelligence'] = (parseInt(values.Intelligence) || 0);
|
||
output['Feel'] = (parseInt(values.Feel) || 0);
|
||
output['Experience'] = (parseInt(values.Experience) || 0);
|
||
output['Impression'] = (parseInt(values.Impression) || 0);
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
|
||
on("change:Luck sheet:opened", function () {
|
||
getAttrs(["Luck", "maxLuck"], function(values) {
|
||
const output = {};
|
||
const luck = parseInt(values.Luck) || 0;
|
||
const maxluck = parseInt(values.maxLuck) || 0;
|
||
output['Luck'] = (luck > maxluck) ? maxluck : luck;
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
|
||
on("change:Hp sheet:opened", function () {
|
||
getAttrs(["Hp", "maxHp"], function(values) {
|
||
const output = {};
|
||
const hp = parseInt(values.Hp) || 0;
|
||
const maxhp = parseInt(values.maxHp) || 0;
|
||
output['Hp'] = (hp > maxhp) ? maxhp: hp;
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
|
||
on("change:maxFor change:maxBod change:maxSpe change:maxInt change:maxFee change:maxExp change:maxImp sheet:opened", function () {
|
||
getAttrs(["maxFor","maxBod","maxSpe","maxInt","maxFee","maxExp","maxImp"], function(values) {
|
||
const output = {};
|
||
const maxFor = parseInt(values.maxFor) || 0;
|
||
const maxBod = parseInt(values.maxBod) || 0;
|
||
const maxSpe = parseInt(values.maxSpe) || 0;
|
||
const maxInt = parseInt(values.maxInt) || 0;
|
||
const maxFee = parseInt(values.maxFee) || 0;
|
||
const maxExp = parseInt(values.maxExp) || 0;
|
||
const maxImp = parseInt(values.maxImp) || 0;
|
||
output['max_force_extended'] = (maxFor > 5) ? 1 : 0;
|
||
output['max_body_extended'] = (maxBod > 5) ? 1 : 0;
|
||
output['max_speed_extended'] = (maxSpe > 5) ? 1 : 0;
|
||
output['max_intelligence_extended'] = (maxInt > 5) ? 1 : 0;
|
||
output['max_feel_extended'] = (maxFee > 5) ? 1 : 0;
|
||
output['max_experience_extended'] = (maxExp > 5) ? 1 : 0;
|
||
output['max_impression_extended'] = (maxImp > 5) ? 1 : 0;
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
|
||
on("sheet:opened change:character_name", function(eventInfo) {
|
||
getAttrs(["character_name", "force_challenge_action", "body_challenge_action", "speed_challenge_action", "intelligence_challenge_action", "feel_challenge_action", "experience_challenge_action", "impression_challenge_action", "draw_action", "help_action", "dash_action", "move_action", "sprint_action", "repeating_weapon-talents_weapon_challenge_action"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["force_challenge_action"] = "%{" + v["character_name"] + "|force-challenge-action}";
|
||
attrsToChange["body_challenge_action"] = "%{" + v["character_name"] + "|body-challenge-action}";
|
||
attrsToChange["speed_challenge_action"] = "%{" + v["character_name"] + "|speed-challenge-action}";
|
||
attrsToChange["intelligence_challenge_action"] = "%{" + v["character_name"] + "|intelligence-challenge-action}";
|
||
attrsToChange["feel_challenge_action"] = "%{" + v["character_name"] + "|feel-challenge-action}";
|
||
attrsToChange["experience_challenge_action"] = "%{" + v["character_name"] + "|experience-challenge-action}";
|
||
attrsToChange["impression_challenge_action"] = "%{" + v["character_name"] + "|impression-challenge-action}";
|
||
attrsToChange["challenge_action"] = "%{" + v["character_name"] + "|challenge-action}";
|
||
attrsToChange["rest_action"] = "%{" + v["character_name"] + "|rest-action}";
|
||
attrsToChange["draw_action"] = "%{" + v["character_name"] + "|draw-action}";
|
||
attrsToChange["help_action"] = "%{" + v["character_name"] + "|help-action}";
|
||
attrsToChange["dash_action"] = "%{" + v["character_name"] + "|dash-action}";
|
||
attrsToChange["move_action"] = "%{" + v["character_name"] + "|move-action}";
|
||
attrsToChange["sprint_action"] = "%{" + v["character_name"] + "|sprint-action}";
|
||
attrsToChange["signature_move_action"] = "%{" + v["character_name"] + "|signature-move-action}";
|
||
getSectionIDs("repeating_weapon-talents", function(rep_ids) {
|
||
for (const id of rep_ids){
|
||
console.log("repeating_weapon-talents_" + id + "_weapon-challenge-action-attr");
|
||
console.log("%{" + v["character_name"] + "|repeating_weapon-talents_" + id + "_weapon-challenge-action}");
|
||
attrsToChange["repeating_weapon-talents_" + id + "_weapon-challenge-action-attr"] = "%{" + v["character_name"] + "|repeating_weapon-talents_" + id +"_weapon-challenge-action}";
|
||
}
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
});
|
||
|
||
on('change:repeating_reactions', function(eventInfo) {
|
||
getAttrs(["repeating_reactions_reaction-ba","repeating_reactions_reaction-type"], function(values) {
|
||
var attrsToChange = {};
|
||
attrsToChange["repeating_reactions_reaction-ba-clear"] = baseAttributes[parseInt(values["repeating_reactions_reaction-ba"]) || 0];
|
||
attrsToChange["repeating_reactions_reaction-type-clear"] = actionTypes[parseInt(values["repeating_reactions_reaction-type"]) || 0];
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:dec-Luck', (info) => {
|
||
getAttrs(["maxLuck"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["maxLuck"] = (parseInt(v.maxLuck) || 0) -1;
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:inc-Luck', (info) => {
|
||
getAttrs(["maxLuck"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["maxLuck"] = (parseInt(v.maxLuck) || 0) + 1;
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:dec-Ap', (info) => {
|
||
getAttrs(["maxAp"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["maxAp"] = (parseInt(v.maxAp) || 0) -1;
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:inc-Ap', (info) => {
|
||
getAttrs(["maxAp"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["maxAp"] = (parseInt(v.maxAp) || 0) + 1;
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:dec-Hp', (info) => {
|
||
getAttrs(["dHp"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["dHp"] = (parseInt(v.dHp) || 0) -20;
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:inc-Hp', (info) => {
|
||
getAttrs(["dHp"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["dHp"] = (parseInt(v.dHp) || 0) + 20;
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('sheet:opened change:Body change:Speed change:Tactics-Pool', (info) => {
|
||
getAttrs(["Body","Speed", "Tactics-Pool"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["maxPoise"] = (parseInt(v.Body) || 0) + (parseInt(v.Speed) || 0) + (parseInt(v["Tactics-Pool"]) || 0);
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('sheet:opened change:Body change:dHp', (info) => {
|
||
getAttrs(["Body","dHp"], function(v) {
|
||
var attrsToChange = {};
|
||
attrsToChange["maxHp"] = (parseInt(v.Body) || 0) * 20 + (parseInt(v.dHp) || 0);
|
||
setAttrs(attrsToChange);
|
||
});
|
||
});
|
||
|
||
on('clicked:challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession"]);
|
||
});
|
||
|
||
on('clicked:force-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Force"]);
|
||
});
|
||
|
||
on('clicked:body-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Body"]);
|
||
});
|
||
|
||
on('clicked:speed-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Speed"]);
|
||
});
|
||
|
||
on('clicked:intelligence-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Intelligence"]);
|
||
});
|
||
|
||
on('clicked:feel-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Feel"]);
|
||
});
|
||
|
||
on('clicked:experience-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Experience"]);
|
||
});
|
||
|
||
on('clicked:impression-challenge-action', (info) => {
|
||
triggerChallenge(["Ap","character_name","chr_profession","Impression"]);
|
||
});
|
||
|
||
on('clicked:repeating_weapon-talents:weapon-challenge-action', (info) => {
|
||
getAttrs(["character_name", "repeating_weapon-talents_weapon-talent-attr", "repeating_weapon-talents_weapon-talent-name"], function(v) {
|
||
var attribute = baseAttributes[v["repeating_weapon-talents_weapon-talent-attr"]];
|
||
var name = v["repeating_weapon-talents_weapon-talent-name"];
|
||
triggerChallenge(["Ap","character_name","chr_profession",attribute,name]);
|
||
});
|
||
});
|
||
|
||
function triggerChallenge(attributeArray){
|
||
console.log(attributeArray);
|
||
getSectionIDs("weapon-talents", function(rep_ids) {
|
||
const weapon_talents = [];
|
||
for (const id of rep_ids){
|
||
weapon_talents.push("repeating_weapon-talents_" + id + "_weapon-talent-name");
|
||
}
|
||
getAttrs(attributeArray.concat(weapon_talents), function(queryValues) {
|
||
console.log(queryValues);
|
||
/* Create Weapon Talent List*/
|
||
weapon_talent_names = [];
|
||
for (const weapon_talent_id of weapon_talents){
|
||
var weapon_talent = {name: queryValues[weapon_talent_id], id: weapon_talent_id.slice(25,45)};
|
||
weapon_talent_names.push(weapon_talent);
|
||
}
|
||
console.log(weapon_talent_names);
|
||
const queries = createRollQueries(queryValues,weapon_talent_names);
|
||
console.log(attributeArray);
|
||
// Check if there is a set Attribute
|
||
if(attributeArray.some(r => baseAttributes.includes(r))){
|
||
queries[0] = "" + baseAttributes.indexOf(attributeArray[3]) + "";
|
||
}
|
||
// Check if there is a set Talent
|
||
if(attributeArray.some(r => weapon_talent_names.some(wt => wt.name === r))){
|
||
console.log("Name of Weapon Talent: " + attributeArray[1]);
|
||
console.log("Id of Weapon Talent: " + ((weapon_talent_names.findIndex(wt => wt.name === attributeArray[4])+1)*10));
|
||
queries[2] = "" + ((weapon_talent_names.findIndex(wt => wt.name === attributeArray[4])+1)*10) + "";
|
||
}
|
||
console.log(queries);
|
||
resolveChallenge(queries,queryValues)
|
||
});
|
||
});
|
||
}
|
||
|
||
function createRollQueries(values,weapon_talent_names){
|
||
var ba_string = "";
|
||
for(const id in baseAttributes){
|
||
ba_string += baseAttributes[id] +"," + id + "|";
|
||
}
|
||
ba_string = ba_string.slice(0,ba_string.length -1);
|
||
|
||
var queryBa = "?{" + getTranslationByKey("base-attribute-question") + "|" +
|
||
ba_string + "}";
|
||
|
||
var queryDiff = "?{" + getTranslationByKey("difficulty-question") + "|+0}";
|
||
|
||
var talent_string = "";
|
||
for(const id in talents){
|
||
console.log(id);
|
||
talent_string += talents[id] +"," + id + "|";
|
||
}
|
||
|
||
var weapon_talent_string = "";
|
||
console.log("Weapon Talent Names");
|
||
console.log(weapon_talent_names);
|
||
for(const weapon_talent of weapon_talent_names){
|
||
console.log(weapon_talent.name);
|
||
weapon_talent_string += weapon_talent.name +"," + (weapon_talent_names.indexOf(weapon_talent)+1) + "0|";
|
||
}
|
||
weapon_talent_string = weapon_talent_string.slice(0,weapon_talent_string.length -1);
|
||
|
||
var queryTa = "?{" + getTranslationByKey("skilled-question") + "|" +
|
||
getTranslationByKey("none") + ",-2|" +
|
||
getTranslationByKey("profession-detailed").replace("{}",values.chr_profession) + ",-1|" +
|
||
talent_string +
|
||
weapon_talent_string + "}";
|
||
return [queryBa,queryDiff,queryTa];
|
||
}
|
||
|
||
function resolveChallenge(queries,queryValues){
|
||
startRoll("!{template:challenge} {{ba=[[" + queries[0] + "]]}} {{diff=[[" + queries[1] + "]]}} {{ta=[[" + queries[2] + "]]}}", (results) => {
|
||
console.log(results);
|
||
/* Construct the getters for the final roll */
|
||
var baPoolDice = baseAttributes[results.results.ba.expression];
|
||
var difficulty = results.results.diff.expression;
|
||
var talent = results.results.ta.expression;
|
||
var talent_name = "";
|
||
var talent_skilled = "";
|
||
var talent_pool = "";
|
||
if(talent >= 0 && talent < 10){
|
||
talent_name = talents[talent];
|
||
talent_skilled = talents[talent] + "-Skilled";
|
||
talent_pool = talents[talent] + "-Pool";
|
||
}else if(talent == -1){
|
||
talent_name = "Profession";
|
||
talent_skilled = "true";
|
||
talent_pool = "false";
|
||
}else if(talent >= 10){
|
||
talent_name = weapon_talent_names[(talent-10)/10].name;
|
||
talent_skilled = "true";
|
||
talent_pool = "repeating_weapon-talents_" + weapon_talent_names[(talent-10)/10].id + "_weapon-talent-pool";
|
||
}else{
|
||
talent_skilled = "false";
|
||
talent_pool = "false";
|
||
}
|
||
console.log("Hier");
|
||
|
||
|
||
var maxBa = "";
|
||
console.log("Chosen BA-ID: " + results.results.ba.expression);
|
||
switch(results.results.ba.expression) {
|
||
case "0":
|
||
maxBa = "maxFor";
|
||
console.log(maxBa);
|
||
break;
|
||
case "1":
|
||
maxBa = "maxBod";
|
||
console.log(maxBa);
|
||
break;
|
||
case "2":
|
||
maxBa = "maxSpe";
|
||
console.log(maxBa);
|
||
break;
|
||
case "3":
|
||
maxBa = "maxInt";
|
||
console.log(maxBa);
|
||
break;
|
||
case "4":
|
||
maxBa = "maxFee";
|
||
console.log(maxBa);
|
||
break;
|
||
case "5":
|
||
maxBa = "maxExp";
|
||
console.log(maxBa);
|
||
break;
|
||
case "6":
|
||
maxBa = "maxImp";
|
||
console.log(maxBa);
|
||
break;
|
||
}
|
||
|
||
const attrs = [baPoolDice,talent_skilled,talent_pool,maxBa];
|
||
console.log(attrs);
|
||
getAttrs(attrs, function(values) {
|
||
console.log(values);
|
||
const diff = "13-" + (parseInt(values[talent_skilled] || 0) * 5) + "[Skilled] " + difficulty;
|
||
console.log("Ba ("+maxBa+"): "+values[maxBa]+" is < than "+parseInt(values[baPoolDice] || 0));
|
||
const baPool = (values[maxBa] < parseInt(values[baPoolDice] || 0)) ? values[maxBa] : parseInt(values[baPoolDice] || 0);
|
||
console.log(values[talent_pool]);
|
||
const pool = baPool + parseInt(values[talent_pool] || 0);
|
||
console.log("{{roll1=[[" + pool +"d20]]}}");
|
||
|
||
const titleText = getTranslationByKey("rq-challenge-title").replace("{}",baseAttributes[results.results.ba.expression]);
|
||
const baText = getTranslationByKey("rq-challenge-ba").replace("{}",baseAttributes[results.results.ba.expression]);
|
||
const char_nameText = queryValues.character_name;
|
||
const diffText = getTranslationByKey("rq-challenge-diff").replace("{}",diff);
|
||
const difficultyText = difficulty;
|
||
const taText = getTranslationByKey("rq-challenge-ta").replace("{}",talent_name);
|
||
const skText = (values[talent_skilled] == 1? "Skilled" : "Unskilled");
|
||
const plText = getTranslationByKey("rq-challenge-pl").replace("{}",values[talent_pool]);
|
||
const roll1Text = getTranslationByKey("rq-challenge-roll1").replace("{}",pool);
|
||
startRoll("&{template:challenge} {{title=" + titleText + "}} {{ba=" + baText + "}} {{char_name=" + char_nameText + "}} {{diff= " + diffText + "}} {{difficulty=" + difficultyText + "}} {{ta=" + taText + "}} {{sk=" + skText + "}} {{pl=" + plText + "}} {{roll1=" + roll1Text + "}}", (results) => {
|
||
console.log("Final Roll:");
|
||
console.log(results.results.diff.result,results.results.roll1.dice);
|
||
const computed = rollChallenge(results.results.diff.result,results.results.roll1.dice);
|
||
console.log(computed);
|
||
finishRoll(
|
||
results.rollId,
|
||
{
|
||
roll1: computed
|
||
}
|
||
);
|
||
});
|
||
});
|
||
});
|
||
}
|
||
|
||
function rollChallenge(diff,rolls){
|
||
let result = 0;
|
||
for (let i = 0; i < rolls.length; i++) {
|
||
if(rolls[i] >= diff){
|
||
result++;
|
||
if(rolls[i] == 20){
|
||
result++;
|
||
}
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
on('clicked:rest-action', (info) => {
|
||
getAttrs(["character_name","Luck","maxLuck","Hp","maxHp","dHp"], function(values) {
|
||
const name = values.character_name;
|
||
var Luck = parseInt(values.Luck) || 0;
|
||
const maxLuck = parseInt(values.maxLuck) || 0;
|
||
var Hp = parseInt(values.Hp) || 0;
|
||
const maxHp = parseInt(values.maxHp) || 0;
|
||
const dHp = parseInt(values.dHp) || 0;
|
||
startRoll("!{template:action} {{talebound=[[?{Is the Rest Talebound? | No,0|Yes,1}]]}}", (results) => {
|
||
var talebound = "";
|
||
if(results.results.talebound.expression == 1){
|
||
talebound = "Talebound ";
|
||
Luck += 1;
|
||
Luck = (Luck > maxLuck) ? maxLuck : Luck;
|
||
Hp = maxHp + dHp;
|
||
}else{
|
||
Luck += 1;
|
||
Luck = (Luck > maxLuck) ? maxLuck : Luck;
|
||
Hp = (Hp > ((maxHp+dHp)/2)) ? Hp : ((maxHp+dHp)/2);
|
||
}
|
||
|
||
var attrsToChange = {};
|
||
attrsToChange["Luck"] = Luck;
|
||
attrsToChange["Hp"] = Hp;
|
||
setAttrs(attrsToChange);
|
||
const taleboundText = getTranslationByKey("rq-rest-title").replace("{}",talebound);
|
||
const character_nameText = getTranslationByKey("rq-rest-content").replace("{}",values.character_name);
|
||
const hpText = getTranslationByKey("rq-rest-info").replace("{}",Hp);
|
||
startRoll("&{template:rest} {{talebound=" + taleboundText + "}} {{character_name=" + character_nameText + "}} {{currHp=" + hpText + "}}", (results) => {
|
||
finishRoll(
|
||
results.rollId
|
||
);
|
||
});
|
||
});
|
||
});
|
||
});
|
||
|
||
on('clicked:draw-action', (info) => {
|
||
getAttrs(["Ap","character_name"], function(values) {
|
||
const name = "Draw";
|
||
const succesfulDesc = getTranslationByKey("action-draw-succesful").replace("{}",values.character_name);
|
||
const failedDesc = getTranslationByKey("action-draw-failed").replace("{}",values.character_name);
|
||
const apCost = 1;
|
||
const currAp = (parseInt(values["Ap"]) || 0);
|
||
performAction(name,succesfulDesc,failedDesc,apCost,currAp);
|
||
});
|
||
});
|
||
|
||
on('clicked:help-action', (info) => {
|
||
console.log("Help");
|
||
getAttrs(["Ap","character_name"], function(values) {
|
||
const name = "Help";
|
||
const succesfulDesc = getTranslationByKey("action-help-succesful").replace("{}",values.character_name);
|
||
const failedDesc = getTranslationByKey("action-help-failed").replace("{}",values.character_name);
|
||
const apCost = 4;
|
||
const currAp = (parseInt(values["Ap"]) || 0);
|
||
performAction(name,succesfulDesc,failedDesc,apCost,currAp);
|
||
});
|
||
});
|
||
|
||
on('clicked:dash-action', (info) => {
|
||
console.log("Dash");
|
||
getAttrs(["Ap","character_name", "Speed"], function(values) {
|
||
const name = "Dash";
|
||
const succesfulDesc = getTranslationByKey("action-dash-succesful").replace("{}",values.character_name).replace("{0}",values.Speed);
|
||
const failedDesc = getTranslationByKey("action-dash-failed").replace("{}",values.character_name);
|
||
const apCost = 2;
|
||
const currAp = (parseInt(values["Ap"]) || 0);
|
||
performAction(name,succesfulDesc,failedDesc,apCost,currAp);
|
||
});
|
||
});
|
||
|
||
on('clicked:move-action', (info) => {
|
||
console.log("Move");
|
||
getAttrs(["Ap","character_name", "Speed"], function(values) {
|
||
const name = "Move";
|
||
const succesfulDesc = getTranslationByKey("action-move-succesful").replace("{}",values.character_name).replace("{0}",values.Speed * 2);
|
||
const failedDesc = getTranslationByKey("action-move-failed").replace("{}",values.character_name);
|
||
const apCost = 6;
|
||
const currAp = (parseInt(values["Ap"]) || 0);
|
||
performAction(name,succesfulDesc,failedDesc,apCost,currAp);
|
||
});
|
||
});
|
||
|
||
on('clicked:sprint-action', (info) => {
|
||
console.log("Sprint");
|
||
getAttrs(["Ap","character_name", "Speed"], function(values) {
|
||
const name = "Sprint";
|
||
const succesfulDesc = getTranslationByKey("action-sprint-succesful").replace("{}",values.character_name).replace("{0}",values.Speed * 3);
|
||
const failedDesc = getTranslationByKey("action-sprint-failed").replace("{}",values.character_name);
|
||
const apCost = 5;
|
||
const currAp = (parseInt(values["Ap"]) || 0);
|
||
performAction(name,succesfulDesc,failedDesc,apCost,currAp);
|
||
});
|
||
});
|
||
|
||
on('clicked:signature-move-action', (info) => {
|
||
console.log("Signature Move");
|
||
getAttrs(["Ap","character_name", "signature-move-name", "signature-move-ap", "signature-move-desc", "Charge"], function(values) {
|
||
const name = values["signature-move-name"];
|
||
const desc = values["signature-move-desc"];
|
||
const succesfulDesc = values.character_name + " performs the Signature Move " + name + ".";
|
||
const failedDesc = values.character_name + " wasn't able to perform the Signature Move " + name + ".";
|
||
const apCost = (parseInt(values["signature-move-ap"]) || 0);
|
||
const currAp = (parseInt(values["Ap"]) || 0);
|
||
const chargeCost = 3;
|
||
const currCharge = (parseInt(values["Charge"]) || 0);
|
||
performSignatureMove(name,desc,succesfulDesc,failedDesc,apCost,currAp,chargeCost,currCharge);
|
||
});
|
||
});
|
||
|
||
function performAction(name,succesfulDesc,failedDesc,cost,ap){
|
||
var apIsSpent = false;
|
||
|
||
var newAp = ap - cost;
|
||
|
||
if(newAp < 0){
|
||
newAp = ap;
|
||
apIsSpent = true;
|
||
}
|
||
|
||
var attrsToChange = {};
|
||
attrsToChange["Ap"] = newAp;
|
||
|
||
setAttrs(attrsToChange);
|
||
|
||
var nameText = getTranslationByKey("rq-action-title").replace("{}",name);
|
||
var descText = succesfulDesc;
|
||
var costText = getTranslationByKey("rq-action-cost").replace("{}",cost);
|
||
if(apIsSpent){
|
||
nameText = getTranslationByKey("rq-action-title-failed").replace("{}",name);
|
||
descText = failedDesc;
|
||
costText = getTranslationByKey("rq-action-cost-failed").replace("{}",cost);
|
||
}
|
||
|
||
startRoll("&{template:action} {{name=" + nameText + "}} {{desc=" + descText + "}} {{cost=" + costText + "}}", (results) => {
|
||
console.log(results);
|
||
finishRoll(
|
||
results.rollId
|
||
);
|
||
});
|
||
}
|
||
|
||
function performSignatureMove(name,desc,succesfulDesc,failedDesc,cost,ap, chargeCost, charge){
|
||
var apIsSpent = false;
|
||
|
||
var newAp = ap - cost;
|
||
|
||
var attrsToChange = {};
|
||
|
||
var chargeIsSpent = false;
|
||
|
||
var newCharge = charge - chargeCost;
|
||
|
||
if(newAp < 0 || newCharge < 0){
|
||
apIsSpent = newAp < 0;
|
||
chargeIsSpent = newCharge < 0;
|
||
newAp = ap;
|
||
newCharge = charge;
|
||
}
|
||
|
||
var attrsToChange = {};
|
||
attrsToChange["Ap"] = newAp;
|
||
attrsToChange["Charge"] = newCharge;
|
||
|
||
setAttrs(attrsToChange);
|
||
|
||
var nameText = getTranslationByKey("rq-signature-move-title").replace("{}",name);
|
||
var desc1Text = succesfulDesc;
|
||
var desc2Text = getTranslationByKey("rq-signature-move-desc").replace("{}",desc);
|
||
var costText = getTranslationByKey("rq-signature-move-cost").replace("{}",cost);
|
||
|
||
if(apIsSpent){
|
||
nameText = getTranslationByKey("rq-signature-move-title-failed").replace("{}",name);
|
||
desc1Text = failedDesc;
|
||
costText = getTranslationByKey("rq-signature-move-cost-failed-ap").replace("{}",cost);
|
||
|
||
}else if(chargeIsSpent){
|
||
nameText = getTranslationByKey("rq-signature-move-title-failed").replace("{}",name);
|
||
desc1Text = failedDesc;
|
||
costText = getTranslationByKey("rq-signature-move-cost-failed-charge").replace("{}",cost);
|
||
}
|
||
|
||
startRoll("&{template:signature-move} {{name=" + nameText + "}} {{desc1=" + desc1Text + "}} {{desc2=" + desc2Text + "}} {{cost=" + costText + "}}", (results) => {
|
||
console.log(results);
|
||
finishRoll(
|
||
results.rollId
|
||
);
|
||
});
|
||
}
|
||
|
||
on('clicked:dec-ba', (info) => {
|
||
console.log("Change Base Attribute Maximum");
|
||
getAttrs(["max_force_extended","max_body_extended","max_speed_extended","max_intelligence_extended","max_feel_extended","max_experience_extended","max_impression_extended"], function(values) {
|
||
const force = (values["max_force_extended"] == 1) ? true : false;
|
||
console.log("force " + force);
|
||
const body = (values["max_body_extended"] == 1) ? true : false;
|
||
console.log("body " + body);
|
||
const speed = (values["max_speed_extended"] == 1) ? true : false;
|
||
console.log("speed " + speed);
|
||
const intelligence = (values["max_intelligence_extended"] == 1) ? true : false;
|
||
console.log("intelligence " + intelligence);
|
||
const feel = (values["max_feel_extended"] == 1) ? true : false;
|
||
console.log("feel " + feel);
|
||
const experience = (values["max_experience_extended"] == 1) ? true : false;
|
||
console.log("experience " + experience);
|
||
const impression = (values["max_impression_extended"] == 1) ? true : false;
|
||
console.log("impression " + impression);
|
||
|
||
var questionString = "?{" + getTranslationByKey("rq-dec-ba-max");
|
||
questionString += force ? "|"+baseAttributes[0]+",0" : "";
|
||
questionString += body ? "|"+baseAttributes[1]+",1" : "";
|
||
questionString += speed ? "|"+baseAttributes[2]+",2" : "";
|
||
questionString += intelligence ? "|"+baseAttributes[3]+",3" : "";
|
||
questionString += feel ? "|"+baseAttributes[4]+",4" : "";
|
||
questionString += experience ? "|"+baseAttributes[5]+",5" : "";
|
||
questionString += impression ? "|"+baseAttributes[6]+",6" : "";
|
||
|
||
if(questionString === "?{" + getTranslationByKey("rq-dec-ba-max")){
|
||
questionString += "|" + getTranslationByKey("rq-dec-ba-max-failed") + ",-2|" + getTranslationByKey("none") + ",-1}";
|
||
}else{
|
||
questionString += "|" + getTranslationByKey("none") + ",-1}";
|
||
}
|
||
|
||
console.log(questionString);
|
||
|
||
startRoll("!{template:default} {{stat=[[" + questionString + "]]}}", (results) => {
|
||
console.log(results.results.stat.result);
|
||
const ba = results.results.stat.result;
|
||
var attrsToChange = {};
|
||
|
||
switch(ba) {
|
||
case 0:
|
||
attrsToChange["maxFor"] = 5;
|
||
break;
|
||
case 1:
|
||
attrsToChange["maxBod"] = 5;
|
||
break;
|
||
case 2:
|
||
attrsToChange["maxSpe"] = 5;
|
||
break;
|
||
case 3:
|
||
attrsToChange["maxInt"] = 5;
|
||
break;
|
||
case 4:
|
||
attrsToChange["maxFee"] = 5;
|
||
break;
|
||
case 5:
|
||
attrsToChange["maxExp"] = 5;
|
||
break;
|
||
case 6:
|
||
attrsToChange["maxImp"] = 5;
|
||
break;
|
||
default:
|
||
// code block
|
||
}
|
||
|
||
setAttrs(attrsToChange);
|
||
finishRoll(
|
||
results.rollId
|
||
);
|
||
});
|
||
});
|
||
});
|
||
|
||
on('clicked:inc-ba', (info) => {
|
||
console.log("Change Base Attribute Maximum");
|
||
getAttrs(["max_force_extended","max_body_extended","max_speed_extended","max_intelligence_extended","max_feel_extended","max_experience_extended","max_impression_extended"], function(values) {
|
||
const force = (values["max_force_extended"] == 0) ? true : false;
|
||
console.log("force " + force);
|
||
const body = (values["max_body_extended"] == 0) ? true : false;
|
||
console.log("body " + body);
|
||
const speed = (values["max_speed_extended"] == 0) ? true : false;
|
||
console.log("speed " + speed);
|
||
const intelligence = (values["max_intelligence_extended"] == 0) ? true : false;
|
||
console.log("intelligence " + intelligence);
|
||
const feel = (values["max_feel_extended"] == 0) ? true : false;
|
||
console.log("feel " + feel);
|
||
const experience = (values["max_experience_extended"] == 0) ? true : false;
|
||
console.log("experience " + experience);
|
||
const impression = (values["max_impression_extended"] == 0) ? true : false;
|
||
console.log("impression " + impression);
|
||
|
||
var questionString = "?{" + getTranslationByKey("rq-inc-ba-max");
|
||
questionString += force ? "|"+baseAttributes[0]+",0" : "";
|
||
questionString += body ? "|"+baseAttributes[1]+",1" : "";
|
||
questionString += speed ? "|"+baseAttributes[2]+",2" : "";
|
||
questionString += intelligence ? "|"+baseAttributes[3]+",3" : "";
|
||
questionString += feel ? "|"+baseAttributes[4]+",4" : "";
|
||
questionString += experience ? "|"+baseAttributes[5]+",5" : "";
|
||
questionString += impression ? "|"+baseAttributes[6]+",6" : "";
|
||
|
||
if(questionString === "?{" + getTranslationByKey("rq-inc-ba-max")){
|
||
questionString += "|" + getTranslationByKey("rq-inc-ba-max") + ",-2|" + getTranslationByKey("none") + ",-1}";
|
||
}else{
|
||
questionString += "|" + getTranslationByKey("none") + ",-1}";
|
||
}
|
||
|
||
console.log(questionString);
|
||
|
||
startRoll("!{template:default} {{stat=[[" + questionString + "]]}}", (results) => {
|
||
console.log(results.results.stat.result);
|
||
const ba = results.results.stat.result;
|
||
var attrsToChange = {};
|
||
|
||
switch(ba) {
|
||
case 0:
|
||
attrsToChange["maxFor"] = 6;
|
||
break;
|
||
case 1:
|
||
attrsToChange["maxBod"] = 6;
|
||
break;
|
||
case 2:
|
||
attrsToChange["maxSpe"] = 6;
|
||
break;
|
||
case 3:
|
||
attrsToChange["maxInt"] = 6;
|
||
break;
|
||
case 4:
|
||
attrsToChange["maxFee"] = 6;
|
||
break;
|
||
case 5:
|
||
attrsToChange["maxExp"] = 6;
|
||
break;
|
||
case 6:
|
||
attrsToChange["maxImp"] = 6;
|
||
break;
|
||
default:
|
||
// code block
|
||
}
|
||
|
||
setAttrs(attrsToChange);
|
||
finishRoll(
|
||
results.rollId
|
||
);
|
||
});
|
||
});
|
||
});
|
||
</script> |