Files
Natha 3e89105694 Cypher Systems by Roll20, uc-556 (#5147)
Roll template multilingual fix
2019-06-10 18:54:03 -05:00

1975 lines
146 KiB
HTML

<input type="checkbox" name="attr_settings_show" class="hidden settings-show" value="1" checked="checked" />
<div class="settings"> <!-- SETTINGS -->
<input type="checkbox" name="attr_settings_show" class="pseudocheck close" data-i18n-title="show-hide-settings" title="Show / Hide Settings" value="1" checked="checked" /><span></span>
<div class="in-settings">
<div class="colblock left">
<span class="title" data-i18n="sheet-style">Sheet Style:</span>
<label class="labelcheck" title="Cypher System">
<input type="radio" name="attr_sheet_style" value="0" />
<span>Cypher System</span>
</label>
<label class="labelcheck" title="Numenéra">
<input type="radio" name="attr_sheet_style" value="1" />
<span>Numenéra</span>
</label>
<label class="labelcheck" title="The Strange">
<input type="radio" name="attr_sheet_style" value="2" checked="checked"/>
<span>The Strange</span>
</label>
<label class="labelcheck" data-i18n-title="npc" title="NPC">
<input type="radio" name="attr_sheet_style" value="99" />
<span data-i18n="npc">NPC</span>
</label>
<span class="title" data-i18n="misc:">Misc:</span>
<label class="labelcheck" data-i18n-title="simple-font" title="Simple Font">
<input type="checkbox" name="attr_sheet_font_easy" value="font-easy" />
<span data-i18n="simple-font">Simple Font</span>
</label>
<label class="labelcheck" data-i18n-title="limit-subsection-height" title="Limit subsections height">
<input type="checkbox" name="attr_sheet_subsection_height" value="1" />
<span data-i18n="limit-subsection-height">Limit subsections height</span>
</label>
<span class="title" data-i18n="background:">Background:</span>
<label class="labelcheck" data-i18n-title="image" title="Image">
<input type="radio" name="attr_sheet_background" value="0" />
<span data-i18n="solid-color">Solid color</span>
</label>
<label class="labelcheck" data-i18n-title="solid-color" title="Solid color">
<input type="radio" name="attr_sheet_background" value="1" checked="checked"/>
<span data-i18n="image">Image</span>
</label>
</div>
<div class="colblock left">
<span class="title" data-i18n="rolls-type">Rolls type:</span>
<label class="labelcheck" data-i18n-title="action-section-title" title="Roll using the Action section parameters">
<input type="radio" name="attr_sheet_rolls" value="0" />
<span data-i18n="action-section">Action Section</span>
</label>
<label class="labelcheck" data-i18n-title="roll-queries-title" title="Roll using roll queries for parameters">
<input type="radio" name="attr_sheet_rolls" value="1" checked="checked" />
<span data-i18n="roll-queries">Roll Queries</span>
</label>
<span class="title" data-i18n="use:">Use:</span>
<label class="labelcheck" data-i18n-title="use-assets-title" title="Ask for/Use assets in attributes, skills and attacks rolls">
<input type="checkbox" name="attr_sheetuseasset" value="1" />
<span data-i18n="assets">Assets</span>
</label>
<label class="labelcheck" data-i18n-title="use-bonus-title" title="Ask for/Use roll bonus in attributes, skills and attacks rolls">
<input type="checkbox" name="attr_sheetusebonus" value="1" />
<span data-i18n="bonus">Bonus</span>
</label>
<label class="labelcheck" data-i18n-title="use-costs-title" title="Ask for/Use cost in attributes and skills rolls">
<input type="checkbox" name="attr_sheetusecost" value="1" />
<span data-i18n="costs">Costs</span>
</label>
<span class="title" data-i18n="misc:">Misc:</span>
<label class="labelcheck" data-i18n-title="use-api-title" title="Show API buttons in chat roll template. Requires a Pro account, with the Cypher Systems by Roll20 API Companion Script, activated in the current game.">
<input type="checkbox" name="attr_sheetuseapi" value="[[1]]" />
<span data-i18n="use-api">API buttons</span>
</label>
</div>
</div>
<div class="version">
<input type="hidden" name="attr_version" value="0.0" />
<span data-i18n="version">Version</span>
<span name="attr_version"></span>
</div>
</div> <!-- END SETTINGS -->
<div class="sheets"> <!-- SHEETS -->
<input type="checkbox" name="attr_sheet_font_easy" value="font-easy" class="hidden easy-font" />
<input type="checkbox" name="attr_sheet_style_0" value="1" class="hidden stl-cypher" />
<input type="checkbox" name="attr_sheet_style_1" value="1" class="hidden stl-numenera" />
<input type="checkbox" name="attr_sheet_style_2" value="1" class="hidden stl-strange" checked="checked" />
<input type="checkbox" name="attr_sheet_style_99" value="1" class="hidden stl-npc" />
<input type="checkbox" name="attr_sheet_rolls" value="1" class="hidden useaction" checked="checked" />
<input type="checkbox" name="attr_sheetuseapi" value="[[1]]" class="hidden" />
<input type="checkbox" name="attr_sheet_background" value="1" class="hidden imgbg" checked="checked" />
<input type="checkbox" name="attr_showuseasset" value="1" class="hidden useasset" />
<input type="checkbox" name="attr_showusebonus" value="1" class="hidden usebonus" />
<input type="checkbox" name="attr_showusecost" value="1" class="hidden usecost" />
<input type="checkbox" name="attr_sheet_subsection_height" value="1" class="hidden subsection-height" />
<div class="pc"> <!-- PC SHEET -->
<div class="mycol leftcol"> <!-- LEFT COLUMN -->
<div class="ablock identity"> <!-- IDENTITY -->
<label class="title">
<span></span>
<input type="text" name="attr_character_name" spellcheck="false" class="clearbg name" data-i18n-placeholder="name" placeholder="name" title="@{character_name}" />
</label>
<label class="title">
<span data-i18n="is-a">is a</span>
<input type="text" name="attr_descriptor" spellcheck="false" class="clearbg descriptor" data-i18n-placeholder="descriptor" placeholder="descriptor" title="@{descriptor}" />
<input type="text" name="attr_type" spellcheck="false" class="clearbg type" data-i18n-placeholder="type" placeholder="type" title="@{type}" />
</label>
<label class="title">
<span data-i18n="who">who</span>
<input type="text" name="attr_focus" spellcheck="false" class="clearbg name" data-i18n-placeholder="focus" placeholder="focus" title="@{focus}" />
</label>
<label class="title stl-strange-only">
<span data-i18n="on">on</span>
<input type="text" name="attr_recursion" spellcheck="false" class="clearbg name" data-i18n-placeholder="recursion" placeholder="recursion" title="@{recursion}" />
</label>
</div> <!-- END IDENTITY -->
<div class="ablock stats"> <!-- STATS -->
<div class="subblock">
<button type="roll" name="RollMight" class="myrol rollsmall" data-i18n-title="click-to-roll" title="Click to Roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=might}} {{d20roll=[[1d20cs>17cf1 + @{rollqstbonus}]]}} {{name=^{might}}} {{type=^{stat}}} {{attredge=[[@{might_edge}[Edge]]]}} {{difficulty=[[@{rollqstdiff}]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{rollqstcost}]]}} {{effortdmg=[[0]]}} {{targnum=[[@{rollqstdiff}*3[Target]]]}} {{finaldiff=[[@{rollqstdiff}-@{rollqstasset}-@{rollqstrolleff}[Final Difficulty]]]}} {{targnumroll=[[(@{rollqstdiff}-@{rollqstasset}-(@{rollqstrolleff}))*3[Final Target]]]}} {{totalcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+ceil(@{damage-track}[Damage Track]/4))+@{rollqstcost}-@{might_edge}[Edge][Total Cost]]]}} {{effortcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+ceil(@{damage-track}[Damage Track]/4))[Effort Cost]]]}} {{bonusdmg=[[0]]}}"><span class="title" data-i18n="might">might</span></button>
<div class="inblock might center">
<div class="colblock">
<input type="number" name="attr_might" min="0" value="11" class="nospin notable" title="@{might}" />
<span class="subtitle bold" data-i18n="current">current</span>
</div>
<div class="line stretch subborder top">
<div class="colblock">
<span class="subtitle bold" data-i18n="pool">pool</span>
<input type="number" name="attr_might_max" min="0" value="11" class="nospin" title="@{might_max}" />
</div>
<div class="subborder left"></div>
<div class="colblock">
<span class="subtitle bold" data-i18n="edge">edge</span>
<input type="number" name="attr_might_edge" value="1" min="-6" max="6" class="nospin" title="@{might_edge}" />
</div>
</div>
</div>
</div>
<div class="subblock">
<button type="roll" name="RollSpeed" class="myrol rollsmall" data-i18n-title="click-to-roll" title="Click to Roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=speed}} {{d20roll=[[1d20cs>17cf1 + @{rollqstbonus}]]}} {{name=^{speed}}} {{type=^{stat}}} {{attredge=[[@{speed_edge}[Edge]]]}} {{difficulty=[[@{rollqstdiff}]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{rollqstcost}]]}} {{effortdmg=[[0]]}} {{targnum=[[@{rollqstdiff}*3[Target]]]}} {{finaldiff=[[@{rollqstdiff}-@{rollqstasset}-@{rollqstrolleff}[Final Difficulty]]]}} {{targnumroll=[[(@{rollqstdiff}-@{rollqstasset}-(@{rollqstrolleff}))*3[Final Target]]]}} {{totalcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+@{armorspeedcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4))-@{speed_edge}[Edge][Total Cost]]]}} {{effortcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+@{armorspeedcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4))[Effort Cost]]]}} {{bonusdmg=[[0]]}}"><span class="title" data-i18n="speed">speed</span></button>
<div class="inblock speed center">
<div class="colblock">
<input type="number" name="attr_speed" min="0" value="10" class="nospin notable" title="@{speed}" />
<span class="subtitle bold" data-i18n="current">current</span>
</div>
<div class="line stretch subborder top">
<div class="colblock">
<span class="subtitle bold" data-i18n="pool">pool</span>
<input type="number" name="attr_speed_max" min="0" value="10" class="nospin" title="@{speed_max}" />
</div>
<div class="subborder left"></div>
<div class="colblock">
<span class="subtitle bold" data-i18n="edge">edge</span>
<input type="number" name="attr_speed_edge" value="1" min="-6" max="6" class="nospin" title="@{speed_edge}" />
</div>
</div>
</div>
</div>
<div class="subblock">
<button type="roll" name="RollIntellect" class="myrol rollsmall" data-i18n-title="click-to-roll" title="Click to Roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=intellect}} {{d20roll=[[1d20cs>17cf1 + @{rollqstbonus}]]}} {{name=^{intellect}}} {{type=^{stat}}} {{attredge=[[@{intellect_edge}[Edge]]]}} {{difficulty=[[@{rollqstdiff}]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{rollqstcost}]]}} {{effortdmg=[[0]]}} {{targnum=[[@{rollqstdiff}*3[Target]]]}} {{finaldiff=[[@{rollqstdiff}-@{rollqstasset}-@{rollqstrolleff}[Final Difficulty]]]}} {{targnumroll=[[(@{rollqstdiff}-@{rollqstasset}-(@{rollqstrolleff}))*3[Final Target]]]}} {{totalcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+ceil(@{damage-track}[Damage Track]/4))+@{rollqstcost}-@{intellect_edge}[Edge][Total Cost]]]}} {{effortcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+ceil(@{damage-track}[Damage Track]/4))[Effort Cost]]]}} {{bonusdmg=[[0]]}}"><span class="title" data-i18n="intellect">intellect</span></button>
<div class="inblock intellect center">
<div class="colblock">
<input type="number" name="attr_intellect" min="0" value="7" class="nospin notable" title="@{intellect}" />
<span class="subtitle bold" data-i18n="current">current</span>
</div>
<div class="line stretch subborder top">
<div class="colblock">
<span class="subtitle bold" data-i18n="pool">pool</span>
<input type="number" name="attr_intellect_max" min="0" value="7" class="nospin" title="@{intellect_max}" />
</div>
<div class="subborder left"></div>
<div class="colblock">
<span class="subtitle bold" data-i18n="edge">edge</span>
<input type="number" name="attr_intellect_edge" value="0" min="-6" max="6" class="nospin" title="@{intellect_edge}" />
</div>
</div>
</div>
</div>
</div> <!-- END STATS -->
<div class="ablock skills"> <!-- SKILLS & INITIATIVE -->
<input type="checkbox" name="attr_expand_skills" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="skills">skills</span>
<div class="inblock">
<input type="checkbox" class="hidden hide" name="attr_initchkdesc" value="1" />
<div class="line"> <!-- INITIATIVE -->
<button type="roll" name="rollInitiative" class="myrol roll" data-i18n-title="click-to-roll" title="Click to roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=@{initstat}}} {{statname=^{@{initstat}}}} {{d20roll=[[1d20cs>17cf1 + @{rollqstbonus} &{tracker}]]}} {{name=@{initname}}} {{type=^{skill}}} {{attredge=[[@{initedge}[Edge]]]}} {{difficulty=[[@{rollqstdiff}]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{rollqstcost}]]}} {{effortdmg=[[0]]}} {{targnum=[[@{rollqstdiff}*3[Target]]]}} {{finaldiff=[[@{rollqstdiff}-(1*@{rollqstasset})-(1*@{rollqstrolleff})-(1*@{initlvl})[Final Difficulty]]]}} {{targnumroll=[[(3*@{rollqstdiff})-(3*@{rollqstasset})-(3*@{rollqstrolleff})-(3*@{initlvl})[Final Target]]]}} {{totalcost=[[(ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+@{initarmorcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4)))+@{rollqstcost}-@{initedge}[Edge][Total Cost]]]}} {{effortcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+@{initarmorcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4))[Effort Cost]]]}} {{bonusdmg=[[0]]}} {{skilled=[[@{initlvl}]]}}"><span class="subtitle"></span></button>
<button type="roll" name="showInitiative" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{initname}}} {{stat=@{initstat}}} {{statname=^{@{initstat}}}} {{type=^{skill}}} {{level=[[@{initlvl}]]}} {{description=&nbsp;@{initdesc}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_initname" value="Initiative" spellcheck="false" class="lightborder grow" title="@{initname}" data-i18n-placeholder="skill" placeholder="Skill" readonly />
<input type="hidden" name="attr_inittype" value="- • -" />
<span name="attr_inittype" class="lbl" title="@{inittype}"></span>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_initchkdesc" value="1" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="inlcontent" data-i18n-title="skill-stat" title="Stat used for this skill">
<span class="lbl" data-i18n="stat">Stat</span>
<select name="attr_initstat" style="text-transform: capitalize;" title="@{initstat}">
<option value="might" data-i18n="might">might</option>
<option value="speed" data-i18n="speed" selected="selected">speed</option>
<option value="intellect" data-i18n="intellect">intellect</option>
</select>
<input type="hidden" name="attr_initedge" value="@{speed_edge}" />
<input type="hidden" name="attr_initarmorcost" value="@{armorspeedcost}" />
</label>
<label class="inlcontent" data-i18n-title="skill-lvl" title="Level of the skill">
<span class="lbl" data-i18n="level">Level</span>
<select name="attr_initlvl" title="@{initlvl}">
<option value="-1" data-i18n="inability">Inability</option>
<option value="0" data-i18n="untrained" selected="selected">Untrained</option>
<option value="1" data-i18n="trained">Trained</option>
<option value="2" data-i18n="specialized">Specialized</option>
</select>
</label>
<div class="autoex" title="@{initdesc}">
<span name="attr_initdesc"></span>
<textarea name="attr_initdesc" spellcheck="false" data-i18n-placeholder="notes" placeholder="Notes"></textarea>
</div>
</div> <!-- END INITIATIVE -->
<fieldset class="repeating_skills"> <!-- SKILLS -->
<input type="checkbox" class="hidden hide" name="attr_skillchkdesc" value="1" checked="checked" />
<div class="line">
<button type="roll" name="rollskill" class="myrol roll" data-i18n-title="click-to-roll" title="Click to roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=@{skillstat}}} {{statname=^{@{skillstat}}}} {{d20roll=[[1d20cs>17cf1 + @{rollqstbonus}]]}} {{name=@{skillname}}} {{type=^{skill}}} {{attredge=[[@{skilledge}[Edge]]]}} {{difficulty=[[@{rollqstdiff}]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{rollqstcost}]]}} {{effortdmg=[[0]]}} {{targnum=[[@{rollqstdiff}*3[Target]]]}} {{finaldiff=[[@{rollqstdiff}-(1*@{rollqstasset})-(1*@{rollqstrolleff})-(1*@{skilllvl})[Final Difficulty]]]}} {{targnumroll=[[(3*@{rollqstdiff})-(3*@{rollqstasset})-(3*@{rollqstrolleff})-(3*@{skilllvl})[Final Target]]]}} {{totalcost=[[(ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+@{skillarmorcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4)))+@{rollqstcost}-@{skilledge}[Edge][Total Cost]]]}} {{effortcost=[[ceil(@{rollqstrolleff}/6)+@{rollqstrolleff}*(2+@{skillarmorcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4))[Effort Cost]]]}} {{bonusdmg=[[0]]}} {{skilled=[[@{skilllvl}]]}}"><span class="subtitle"></span></button>
<button type="roll" name="showskill" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{skillname}}} {{stat=@{skillstat}}} {{statname=^{@{skillstat}}}} {{type=^{skill}}} {{level=[[@{skilllvl}]]}} {{description=&nbsp;@{skilldesc}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_skillname" spellcheck="false" class="lightborder grow" title="@{repeating_skills_$ID_skillname}" data-i18n-placeholder="skill" placeholder="Skill" />
<input type="hidden" name="attr_skilltype" value="- • -" />
<span name="attr_skilltype" class="lbl" title="@{repeating_skills_$ID_skilltype}"></span>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_skillchkdesc" value="1" checked="checked" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="inlcontent" data-i18n-title="skill-stat" title="Stat used for this skill">
<span class="lbl" data-i18n="stat">Stat</span>
<select name="attr_skillstat" style="text-transform: capitalize;" title="@{repeating_skills_$ID_skillstat}">
<option value="might" data-i18n="might">might</option>
<option value="speed" data-i18n="speed">speed</option>
<option value="intellect" data-i18n="intellect" selected="selected">intellect</option>
</select>
<input type="hidden" name="attr_skilledge" value="@{might_edge}" />
<input type="hidden" name="attr_skillarmorcost" value="0" />
</label>
<label class="inlcontent" data-i18n-title="skill-lvl" title="Level of the skill">
<span class="lbl" data-i18n="level">Level</span>
<select name="attr_skilllvl" title="@{repeating_skills_$ID_skilllvl}">
<option value="-1" data-i18n="inability">Inability</option>
<option value="0" data-i18n="untrained">Untrained</option>
<option value="1" data-i18n="trained" selected="selected">Trained</option>
<option value="2" data-i18n="specialized">Specialized</option>
</select>
</label>
<div class="autoex" title="@{repeating_skills_$ID_skilldesc}">
<span name="attr_skilldesc"></span>
<textarea name="attr_skilldesc" spellcheck="false" data-i18n-title="skill-description" title="Description of the skill" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset> <!-- END SKILLS -->
</div>
</div>
</div> <!-- END SKILLS & INITIATIVE -->
<div class="ablock abilities"> <!-- SPECIAL ABILITIES -->
<input type="checkbox" name="attr_expand_abilities" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="special-abilities">special abilities</span>
<div class="inblock">
<fieldset class="repeating_abilities">
<input type="checkbox" class="hidden hide" name="attr_abilitychkdesc" value="1" checked="checked" />
<div class="line">
<button type="roll" name="showability" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{abilityname}}} {{type=^{special-ability}}} {{statname=^{@{abilitystat}}}} {{description=**^{use}**: ^{@{abilityuse}} **^{cost}**: @{abilitycost}\n&nbsp;@{abilitydesc}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_abilityname" spellcheck="false" class="lightborder grow" title="@{repeating_abilities_$ID_abilityname}" data-i18n-placeholder="ability" placeholder="Ability" />
<input type="hidden" name="attr_abtype" value="-" />
<span name="attr_abtype" class="lbl" title="@{repeating_abilities_$ID_abtype}"></span>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_abilitychkdesc" value="1" checked="checked" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="inlcontent" data-i18n-title="ability-use-condition" title="Conditions of use of this ability: enabler, action, once a day etc.">
<span class="lbl" data-i18n="use">Use</span>
<select name="attr_abilityuse" title="@{repeating_abilities_$ID_abilityuse}">
<option value="Action" data-i18n="Action" selected="selected">Action</option>
<option value="Enabler" data-i18n="Enabler">Enabler</option>
<option value="Other" data-i18n="Other">Other</option>
</select>
</label>
<label class="inlcontent" data-i18n-title="cost" title="cost">
<span class="lbl" data-i18n="cost">Cost</span>
<input type="number" name="attr_abilitycost" min="0" title="Damage" value="0" class="nospin" title="@{repeating_abilities_$ID_abilitycost}" />
</label>
<label class="inlcontent" data-i18n-title="ability-stat" title="Stat used for this ability">
<span class="lbl" data-i18n="stat">Stat</span>
<select name="attr_abilitystat" style="text-transform: capitalize;" title="@{repeating_abilities_$ID_abilitystat}">
<option value="null" data-i18n="none" selected="selected">None</option>
<option value="might" data-i18n="might">might</option>
<option value="speed" data-i18n="speed">speed</option>
<option value="intellect" data-i18n="intellect">intellect</option>
</select>
</label>
<div class="autoex" title="@{repeating_abilities_$ID_abilitydesc}">
<span name="attr_abilitydesc"></span>
<textarea name="attr_abilitydesc" spellcheck="false" data-i18n-title="description" title="Description" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset>
<div class="line left topmarg1">
<span class="subtitle bold" data-i18n="misc:">misc:</span>
</div>
<div class="autoex">
<span name="attr_abilities_misc"></span>
<textarea name="attr_abilities_misc" spellcheck="false" data-i18n-placeholder="misc" placeholder="misc" title="@{abilities_misc}"></textarea>
</div>
</div>
</div>
</div> <!-- END SPECIAL ABILITIES -->
<div class="ablock"> <!-- BACKGROUND -->
<input type="checkbox" name="attr_expand_background" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<button type="roll" name="ShowBackground" class="myrol" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=^{background}}} {{description=&nbsp;@{background}}}"><span class="title dotted" data-i18n="background">background</span></button>
<div class="inblock autoex">
<span name="attr_background"></span>
<textarea name="attr_background" spellcheck="false" data-i18n-placeholder="background" placeholder="background" title="@{background}"></textarea>
</div>
</div>
</div> <!-- END BACKGROUND -->
</div> <!-- END LEFT COLUMN -->
<div class="mycol midcol"> <!-- MIDDLE COLUMN -->
<div class="ablock logo"> <!-- LOGO -->
<input type="checkbox" name="attr_settings_show" class="pseudocheck showsettings" data-i18n-title="show-hide-settings" title="Show / Hide Settings" value="1" checked="checked" /><span></span>
<input type="checkbox" name="attr_expand_all" value="1" class="pseudocheck expand" data-i18n-title="click-expand-all" title="Click to expand or reduce all sections" /><span></span>
</div> <!-- END LOGO -->
<div class="ablock"> <!-- ACTIONS and TRACKS -->
<input type="checkbox" name="attr_expand_actiondamage" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="damage-track">damage track</span>
<div class="inblock small"> <!-- DAMAGE TRACK -->
<div class="line wrap">
<label class="labelcheck" title="@{damage-track}">
<input type="radio" name="attr_damage-track" value="0" checked="checked" />
<span data-i18n="hale">hale</span>
</label>
<label class="labelcheck" title="@{damage-track}">
<input type="radio" name="attr_damage-track" value="1" />
<span data-i18n="impaired">impaired</span>
</label>
<label class="labelcheck" title="@{damage-track}">
<input type="radio" name="attr_damage-track" value="2" />
<span data-i18n="debilitated">debilitated</span>
</label>
<label class="labelcheck" title="@{damage-track}">
<input type="radio" name="attr_damage-track" value="3" />
<span data-i18n="dead">dead</span>
</label>
</div>
<div class="line wrap action">
<label class="inlcontent" data-i18n-title="special-damage-title" title="Special damage that moved the PC down the damage track">
<span class="subtitle" data-i18n="special-damage">special damage</span>
<input type="number" name="attr_specialdamage" value="0" min="0" max="3" class="lightborder" title="@{specialdamage}" />
</label>
<button type="action" class="myrol rest" name="act_rest" data-i18n-title="rest-title" title="Complete rest of the character (will reset Damage Track, Recovery rolls and current Stats)"><span class="subtitle" data-i18n="rest">rest</span></button>
</div>
</div> <!-- END DAMAGE TRACK -->
<div class="useaction topmarg1"> <!-- ACTION -->
<span class="title dotted" data-i18n="actions">actions</span>
<div class="inblock small">
<div class="line wrap action">
<label class="inlcontent" data-i18n-title="task-difficulty" title="Task difficulty">
<span class="subtitle" data-i18n="difficulty">Difficulty</span>
<SELECT name="attr_rollvardiff" class="lightborder" title="@{rollvardiff}">
<OPTION value="0" SELECTED data-i18n="0-none-unknown">0 - None/Unknown</OPTION>
<OPTION value="1" data-i18n="1-simple">1 - Simple</OPTION>
<OPTION value="2" data-i18n="2-standard">2 - Standard</OPTION>
<OPTION value="3" data-i18n="3-demanding">3 - Demanding</OPTION>
<OPTION value="4" data-i18n="4-difficult">4 - Difficult</OPTION>
<OPTION value="5" data-i18n="5-challenging">5 - Challenging</OPTION>
<OPTION value="6" data-i18n="6-intimidating">6 - Intimidating</OPTION>
<OPTION value="7" data-i18n="7-formidable">7 - Formidable</OPTION>
<OPTION value="8" data-i18n="8-heroic">8 - Heroic</OPTION>
<OPTION value="9" data-i18n="9-immortal">9 - Immortal</OPTION>
<OPTION value="10" data-i18n="10-impossible">10 - Impossible</OPTION>
</SELECT>
</label>
<label class="" data-i18n-title="effort-lower-diff" title="Effort to lower DIFFICULTY">
<span class="subtitle" data-i18n="roll-eff">ROLL EFF.</span>
<SELECT name="attr_rollvarrolleff" class="lightborder" title="@{rollvarrolleff}">
<OPTION value="0" SELECTED>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
</SELECT>
</label>
<label class="" data-i18n-title="effort-increase-damage" title="Effort to increase DAMAGE">
<span class="subtitle" data-i18n="dmg-eff">DMG EFF.</span>
<SELECT name="attr_rollvarrolldmg" class="lightborder" title="@{rollvarrolldmg}">
<OPTION value="0" SELECTED>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
</SELECT>
</label>
<label class="useasset" data-i18n-title="asset-title" title="Asset(s) : position, equipment etc. (0, 1 or 2 maximum)">
<span class="subtitle" data-i18n="asset">Asset</span>
<SELECT name="attr_rollvarasset" class="lightborder" title="@{rollvarasset}">
<OPTION value="0" SELECTED>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
</SELECT>
</label>
<label class="usebonus" data-i18n-title="bonus-title" title="Penalty or Bonus to the ROLL">
<span class="subtitle" data-i18n="bonus">bonus</span>
<SELECT name="attr_rollvarbonus" class="lightborder" title="@{rollvarbonus}">
<OPTION value="-2">-2</OPTION>
<OPTION value="-1">-1</OPTION>
<OPTION value="0" SELECTED>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
</SELECT>
</label>
<label class="usecost" data-i18n-title="cost-title" title="Extra Stat Pool cost from a Power or Ability">
<span class="subtitle" data-i18n="cost">cost</span>
<SELECT name="attr_rollvarcost" class="lightborder" title="@{rollvarcost}">
<OPTION value="0" SELECTED>0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
<OPTION value="11">11</OPTION>
<OPTION value="12">12</OPTION>
</SELECT>
</label>
</div>
<div class="line action">
<span class="help" data-i18n="action-roll-help">Roll with Stat, Skill or Attack button</span>
<button type="action" class="myrol reset" name="act_reset_action" data-i18n-title="reset-action-title" title="Reset Action parameters"><span class="subtitle" data-i18n="reset">Reset</span></button>
</div>
</div>
</div> <!-- END ACTION -->
</div>
</div> <!-- END ACTIONS and TRACKS -->
<div class="ablock attacks"> <!-- ATTACKS -->
<input type="checkbox" name="attr_expand_attacks" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="attacks">attacks</span>
<div class="inblock">
<fieldset class="repeating_atks">
<input type="checkbox" class="hidden hide" name="attr_atkchkdesc" value="1" checked="checked" />
<div class="line">
<button type="roll" name="rollatk" class="myrol roll" data-i18n-title="click-to-roll" title="Click to roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=@{atkstat}}} {{statname=^{@{atkstat}}}} {{d20roll=[[1d20cs>17cf1 + @{rollqstbonus}]]}} {{name=@{atkname}}} {{type=^{attack}}} {{attredge=[[@{atkedge}[Edge]]]}} {{difficulty=[[@{rollqstdiff}]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{atkcost}[Attack cost]+@{rollqstcost}]]}} {{effortdmg=[[@{rollqstrolldmg}]]}} {{targnum=[[@{rollqstdiff}*3[Target]]]}} {{finaldiff=[[@{rollqstdiff}-(1*@{rollqstasset})-(1*@{rollqstrolleff})-(1*@{atklvl})-(1*@{atkmod})[Final Difficulty]]]}} {{targnumroll=[[(3*@{rollqstdiff})-(3*@{rollqstasset})-(3*@{rollqstrolleff})-(3*@{atklvl})-(3*@{atkmod})[Final Target]]]}} {{totalcost=[[(ceil((@{rollqstrolleff}+@{rollqstrolldmg})/6)+(@{rollqstrolleff}+@{rollqstrolldmg})*(2+@{atkarmorcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4)))+@{atkcost}+@{rollqstcost}-@{atkedge}[Edge][Total Cost]]]}} {{effortcost=[[ceil((@{rollqstrolleff}+@{rollqstrolldmg})/6)+(@{rollqstrolleff}+@{rollqstrolldmg})*(2+@{atkarmorcost}[Armor Cost]+ceil(@{damage-track}[Damage Track]/4))[Effort Cost]]]}} {{bonusdmg=[[@{atkdmg}[Attack Damage]+(@{rollqstrolldmg}*3)]]}} {{skilled=[[@{atklvl}]]}} {{atkmod=[[@{atkmod}]]}}"><span class="subtitle"></span></button>
<button type="roll" name="showatk" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{atkname}}} {{stat=@{atkstat}}} {{statname=^{@{atkstat}}}} {{type=^{attack}}} {{level=[[@{atklvl}]]}} {{description=**^{mod}:**@{atkmod} **^{damage}:**@{atkdmg} **^{cost}:**@{atkcost}\n&nbsp;@{atkdesc}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_atkname" spellcheck="false" class="lightborder grow" title="@{repeating_atks_$ID_atkname}" data-i18n-placeholder="attack" placeholder="Attack" />
<input type="hidden" name="attr_atktype" value="- • -" />
<span name="attr_atktype" class="lbl" title="@{repeating_atks_$ID_atktype}"></span>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_atkchkdesc" value="1" checked="checked" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="inlcontent" data-i18n-title="atk-stat" title="Stat used for this attack">
<span class="lbl" data-i18n="stat">Stat</span>
<select name="attr_atkstat" style="text-transform: capitalize;" title="@{repeating_atks_$ID_atkstat}">
<option value="might" data-i18n="might" selected="selected">might</option>
<option value="speed" data-i18n="speed">speed</option>
<option value="intellect" data-i18n="intellect">intellect</option>
</select>
<input type="hidden" name="attr_atkedge" value="@{might_edge}" />
<input type="hidden" name="attr_atkarmorcost" value="0" />
</label>
<label class="inlcontent" data-i18n-title="mod-title" title="Reduction of the difficulty of the attack roll">
<span class="lbl" data-i18n="mod">Mod</span>
<input type="number" name="attr_atkmod" min="0" value="0" class="nospin" title="@{repeating_atks_$ID_atkmod}" />
</label>
<label class="inlcontent" data-i18n-title="damage" title="Damage">
<span class="lbl" data-i18n="damage">Damage</span>
<input type="number" name="attr_atkdmg" min="0" value="0" class="nospin" title="@{repeating_atks_$ID_atkdmg}" />
</label>
<label class="inlcontent" data-i18n-title="skilled" title="Skilled">
<span class="lbl" data-i18n="skilled">Skilled</span>
<select name="attr_atklvl" title="@{repeating_atks_$ID_atklvl}">
<option value="-1" data-i18n="inability">Inability</option>
<option value="0" data-i18n="untrained" selected="selected">Untrained</option>
<option value="1" data-i18n="trained">Trained</option>
<option value="2" data-i18n="specialized">Specialized</option>
</select>
</label>
<label class="inlcontent" data-i18n-title="cost" title="cost">
<span class="lbl" data-i18n="cost">Cost</span>
<input type="number" name="attr_atkcost" min="0" title="Damage" value="0" class="nospin" title="@{repeating_atks_$ID_atkcost}" />
</label>
<div class="autoex" title="@{repeating_atks_$ID_atkdesc}">
<span name="attr_atkdesc"></span>
<textarea name="attr_atkdesc" spellcheck="false" data-i18n-title="skill-description" title="Description of the skill" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset>
</div>
</div>
</div> <!-- END ATTACKS -->
<div class="ablock weapons"> <!-- WEAPONS -->
<input type="checkbox" name="attr_expand_weapons" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="weapons">weapons</span>
<div class="inblock">
<fieldset class="repeating_attacks">
<input type="checkbox" class="hidden hide" name="attr_weapchkdesc" value="1" checked="checked" />
<div class="line">
<button type="roll" name="showweapon" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{atkname}}} {{type=^{weapon}}} {{description=**^{mod}:**@{atkmod} **^{damage}:**@{atkdmg}\n&nbsp;@{atkdesc}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_atkname" spellcheck="false" class="lightborder grow" title="@{repeating_attacks_$ID_atkname}" data-i18n-placeholder="weapon" placeholder="Weapon" />
<input type="hidden" name="attr_weapontype" value="0 • 0" />
<span name="attr_weapontype" class="lbl" title="@{repeating_atks_$ID_weapontype}"></span>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_weapchkdesc" value="1" checked="checked" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="inlcontent" data-i18n-title="mod-title" title="Reduction of the difficulty of the attack roll">
<span class="lbl" data-i18n="mod">Mod</span>
<input type="number" name="attr_atkmod" min="0" value="0" class="nospin" title="@{repeating_attacks_$ID_atkmod}" />
</label>
<label class="inlcontent" data-i18n-title="damage" title="Damage">
<span class="lbl" data-i18n="damage">Damage</span>
<input type="number" name="attr_atkdmg" min="0" value="0" class="nospin" title="@{repeating_attacks_$ID_atkdmg}" />
</label>
<div class="autoex" data-i18n-title="description" title="Description">
<span name="attr_atkdesc"></span>
<textarea name="attr_atkdesc" spellcheck="false" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset>
</div>
</div>
</div> <!-- END WEAPONS -->
<div class="ablock advancement"> <!-- ADVANCEMENT -->
<input type="checkbox" name="attr_expand_advancement" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="advancement">advancement</span>
<div class="inblock">
<div class="colblock">
<span class="subtitle bold" data-i18n="tier-1">Tier 1</span>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers1-1" spellcheck="false" data-i18n-placeholder="tier-1-adv-1" placeholder="Tier 1 Adv. #1" />
<input type="text" class="medium lightborder" name="attr_adv-tiers1-2" spellcheck="false" data-i18n-placeholder="tier-1-adv-2" placeholder="Tier 1 Adv. #2" />
</div>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers1-3" spellcheck="false" data-i18n-placeholder="tier-1-adv-3" placeholder="Tier 1 Adv. #3" />
<input type="text" class="medium lightborder" name="attr_adv-tiers1-4" spellcheck="false" data-i18n-placeholder="tier-1-adv-4" placeholder="Tier 1 Adv. #4" />
</div>
<span class="subtitle bold" data-i18n="tier-2">Tier 2</span>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers2-1" spellcheck="false" data-i18n-placeholder="tier-2-adv-1" placeholder="Tier 2 Adv. #1" />
<input type="text" class="medium lightborder" name="attr_adv-tiers2-2" spellcheck="false" data-i18n-placeholder="tier-2-adv-2" placeholder="Tier 2 Adv. #2" />
</div>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers2-3" spellcheck="false" data-i18n-placeholder="tier-2-adv-3" placeholder="Tier 2 Adv. #3" />
<input type="text" class="medium lightborder" name="attr_adv-tiers2-4" spellcheck="false" data-i18n-placeholder="tier-2-adv-4" placeholder="Tier 2 Adv. #4" />
</div>
<span class="subtitle bold" data-i18n="tier-3">Tier 3</span>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers3-1" spellcheck="false" data-i18n-placeholder="tier-3-adv-1" placeholder="Tier 3 Adv. #1" />
<input type="text" class="medium lightborder" name="attr_adv-tiers3-2" spellcheck="false" data-i18n-placeholder="tier-3-adv-2" placeholder="Tier 3 Adv. #2" />
</div>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers3-3" spellcheck="false" data-i18n-placeholder="tier-3-adv-3" placeholder="Tier 3 Adv. #3" />
<input type="text" class="medium lightborder" name="attr_adv-tiers3-4" spellcheck="false" data-i18n-placeholder="tier-3-adv-4" placeholder="Tier 3 Adv. #4" />
</div>
<span class="subtitle bold" data-i18n="tier-4">Tier 4</span>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers4-1" spellcheck="false" data-i18n-placeholder="tier-4-adv-1" placeholder="Tier 4 Adv. #1" />
<input type="text" class="medium lightborder" name="attr_adv-tiers4-2" spellcheck="false" data-i18n-placeholder="tier-4-adv-2" placeholder="Tier 4 Adv. #2" />
</div>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers4-3" spellcheck="false" data-i18n-placeholder="tier-4-adv-3" placeholder="Tier 4 Adv. #3" />
<input type="text" class="medium lightborder" name="attr_adv-tiers4-4" spellcheck="false" data-i18n-placeholder="tier-4-adv-4" placeholder="Tier 4 Adv. #4" />
</div>
<span class="subtitle bold" data-i18n="tier-5">Tier 5</span>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers5-1" spellcheck="false" data-i18n-placeholder="tier-5-adv-1" placeholder="Tier 5 Adv. #1" />
<input type="text" class="medium lightborder" name="attr_adv-tiers5-2" spellcheck="false" data-i18n-placeholder="tier-5-adv-2" placeholder="Tier 5 Adv. #2" />
</div>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers5-3" spellcheck="false" data-i18n-placeholder="tier-5-adv-3" placeholder="Tier 5 Adv. #3" />
<input type="text" class="medium lightborder" name="attr_adv-tiers5-4" spellcheck="false" data-i18n-placeholder="tier-5-adv-4" placeholder="Tier 5 Adv. #4" />
</div>
<span class="subtitle bold" data-i18n="tier-6">Tier 6</span>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers6-1" spellcheck="false" data-i18n-placeholder="tier-6-adv-1" placeholder="Tier 6 Adv. #1" />
<input type="text" class="medium lightborder" name="attr_adv-tiers6-2" spellcheck="false" data-i18n-placeholder="tier-6-adv-2" placeholder="Tier 6 Adv. #2" />
</div>
<div class="line">
<input type="text" class="medium lightborder" name="attr_adv-tiers6-3" spellcheck="false" data-i18n-placeholder="tier-6-adv-3" placeholder="Tier 6 Adv. #3" />
<input type="text" class="medium lightborder" name="attr_adv-tiers6-4" spellcheck="false" data-i18n-placeholder="tier-6-adv-4" placeholder="Tier 6 Adv. #4" />
</div>
</div>
</div>
</div>
</div> <!-- END ADVANCEMENT -->
</div> <!-- END MIDDLE COLUMN -->
<div class="mycol rightcol"> <!-- RIGHT COLUMN -->
<div class="ablock tierseffortxp"> <!-- TIERS EFFORT XP -->
<div class="title">
<div class="circle one">
<input type="number" name="attr_tier" min="1" value="1" class="nospin" title="@{tier}" />
</div>
<span data-i18n="tier">tier</span>
</div>
<div class="title">
<div class="circle one">
<input type="number" name="attr_effort" min="1" value="1" class="nospin" title="@{effort}" />
</div>
<span data-i18n="effort">effort</span>
</div>
<div class="title">
<div class="circle one">
<input type="number" name="attr_xp" min="0" value="0" class="nospin" title="@{xp}" />
</div>
<span data-i18n="xp">xp</span>
</div>
</div> <!-- END TIERS EFFORT XP -->
<div class="ablock recovery"> <!-- RECOVERY -->
<div class="subblock wide">
<button type="roll" class="myrol rollsmall" name="RollRecovery" data-i18n-title="recovery-roll" title="Recovery Roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=^{recovery-roll}}} {{recovery=1d6+@{recoverybonus}}} {{recoverpoints=[[1d6+@{recoverybonus}]]}} {{recovaction=[[@{recovery-rolls}]]}}"><span class="title" data-i18n="recovery">recovery</span></button>
<div class="inblock">
<div class="line">
<div class="circle green">
<input type="number" name="attr_recoverybonus" min="1" value="1" class="nospin" title="@{recoverybonus}" />
<div class="floatlow">
<span class="subtitle bold whiteshadow">1D6+</span>
</div>
</div>
</div>
<div class="line wrap">
<label class="labelcheck" title="@{recovery-rolls}">
<input type="radio" name="attr_recovery-rolls" value="0" checked="checked" />
<span data-i18n="1-action">1 action</span>
</label>
<label class="labelcheck" title="@{recovery-rolls}">
<input type="radio" name="attr_recovery-rolls" value="1" />
<span data-i18n="10-mins">10 mins</span>
</label>
<label class="labelcheck" title="@{recovery-rolls}">
<input type="radio" name="attr_recovery-rolls" value="2" />
<span data-i18n="1-hour">1 hour</span>
</label>
<label class="labelcheck" title="@{recovery-rolls}">
<input type="radio" name="attr_recovery-rolls" value="3" />
<span data-i18n="10-hours">10 hours</span>
</label>
</div>
</div>
</div>
</div> <!-- END RECOVERY -->
<div class="ablock cyphers"> <!-- CYPHERS -->
<div class="floattopleft">
<div class="circle small orange">
<input type="number" name="attr_cypher-limit" min="0" value="2" class="nospin" title="@{cypher-limit}" />
</div>
<div class="floatlow">
<span class="subtitle bold whiteshadow" data-i18n="limit">limit</span>
</div>
</div>
<input type="checkbox" name="attr_expand_cyphers" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="cyphers">cyphers</span>
<div class="inblock toppad">
<fieldset class="repeating_cypher-list">
<input type="checkbox" class="hidden hide" name="attr_cypher-chkdesc" value="1" checked="checked" />
<div class="line">
<button type="roll" name="showCypher" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{cypher-name}}} {{type=^{cypher}}} {{description=**^{level}**: @{cypher-level} ([[@{cypher-level}]])\n&nbsp;@{cypher-description}}}{{used=[[@{cypher-used}]]}}"><span class="subtitle"></span></button>
<input type="checkbox" class="hidden used" name="attr_cypher-used" value="1" />
<input type="text" name="attr_cypher-name" spellcheck="false" class="lightborder grow used" data-i18n-title="cypher-name" title="Name of the Cypher" data-i18n-placeholder="cypher" placeholder="Cypher" />
<label class="inlcontent" data-i18n-title="cypher-level" title="Level of the Cypher">
<span class="lbl" data-i18n="level">Level</span>
<input type="text" name="attr_cypher-level" spellcheck="false" class="xsmall lightborder center" value="1" />
</label>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_cypher-chkdesc" value="1" checked="checked" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="sheet-labelcheck" title="@{cypher-used}">
<input type="checkbox" name="attr_cypher-used" value="1">
<span data-i18n="used">used</span>
</label>
<div class="autoex">
<span name="attr_cypher-description"></span>
<textarea name="attr_cypher-description" spellcheck="false" data-i18n-title="cypher-description" title="Description of the Cypher" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset>
<div class="line left topmarg1">
<span class="subtitle bold" data-i18n="misc:">misc:</span>
</div>
<div class="autoex">
<span name="attr_cyphers_misc"></span>
<textarea name="attr_cyphers_misc" spellcheck="false" data-i18n-placeholder="misc" placeholder="misc" title="@{cyphers_misc}"></textarea>
</div>
</div>
</div>
</div> <!-- END CYPHERS -->
<div class="ablock"> <!-- EQUIPMENT -->
<div class="floattopleft">
<div class="circle small orange">
<input type="number" name="attr_armor" min="0" value="0" class="nospin" title="@{armor}" />
</div>
<div class="floatlow">
<span class="subtitle bold whiteshadow" data-i18n="armor">armor</span>
</div>
</div>
<input type="checkbox" name="attr_expand_equipment" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="equipment">equipment</span>
<div class="inblock toppad">
<div class="line wrap">
<label class="inlcontent">
<span class="subtitle" data-i18n="armor-speed-cost">armor speed cost</span>
<input type="number" name="attr_armorspeedcost" value="0" min="0" max="3" class="nospin lightborder" data-i18n-title="armor-speed-cost-title" title="Additional Speed Effort Cost due to Armor" />
</label>
<label class="inlcontent" data-i18n-title="money" title="money">
<span class="subtitle" data-i18n="money">money</span>
<input type="text" name="attr_shins" value="0" class="small lightborder" style="text-align: right;" spellcheck="false" />
</label>
</div>
<div class="line left topmarg1">
<span class="subtitle bold" data-i18n="items:">items:</span>
</div>
<fieldset class="repeating_equipment-list"> <!-- ITEMS -->
<div class="line">
<button type="roll" name="showitem" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=^{item}}} {{type=^{equipment}}} {{description=&nbsp;@{equipment-name}\n**^{quantity-short}**: @{equipment-qty}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_equipment-name" spellcheck="false" class="lightborder grow" data-i18n-placeholder="item" placeholder="Item" />
<label class="inlcontent" data-i18n-title="quantity" title="Quantity">
<span class="lbl" data-i18n="quantity-short">Qty</span>
<input type="number" name="attr_equipment-qty" spellcheck="false" class="lightborder" min="0" value="1" />
</label>
</div>
</fieldset> <!-- END ITEMS -->
<div class="line left topmarg1">
<span class="subtitle bold" data-i18n="misc:">misc:</span>
</div>
<div class="autoex">
<span name="attr_possessions"></span>
<textarea name="attr_possessions" spellcheck="false" data-i18n-placeholder="misc" placeholder="misc" title="@{possessions}"></textarea>
</div>
</div>
</div>
</div> <!-- END EQUIPMENT -->
<div class="ablock"> <!-- ARTIFACTS -->
<input type="checkbox" name="attr_expand_artifacts" value="1" class="pseudocheck expand" data-i18n-title="click-expand" title="Click to expand or reduce this section" /><span></span>
<div class="subblock wide">
<span class="title dotted" data-i18n="artifacts">artifacts</span>
<div class="inblock">
<fieldset class="repeating_artifact-list">
<input type="checkbox" class="hidden hide" name="attr_artifactchkdesc" value="1" checked="checked" />
<div class="line">
<button type="roll" name="rollArtifactDepletion" class="myrol depletion" data-i18n-title="depletion-roll" title="Depletion roll" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{artifact-name}}} {{type=^{artifact}}} {{depletionroll=[[@{artdepdice}cf<@{artdepthreshold}]]}} {{thresholddesc=@{artdepthreshold} ^{depletion-in} @{artdepdice}}} {{threshold=[[@{artdepthreshold}]]}}"><span class="subtitle"></span></button>
<button type="roll" name="showArtifact" class="myrol show" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=@{artifact-name}}} {{type=^{artifact}}} {{description=**^{level}**: @{artifact-level} ([[@{artifact-level}]])\n**^{depletion}**: @{artdepthreshold} ^{depletion-in} @{artdepdice}\n&nbsp;@{artifact-description}}}"><span class="subtitle"></span></button>
<input type="text" name="attr_artifact-name" spellcheck="false" class="lightborder grow" data-i18n-title="artifact-name" title="Name of the Artifact" data-i18n-placeholder="artifact" placeholder="Artifact" />
<label class="inlcontent" data-i18n-title="artifact-level" title="Level of the Artifact">
<span class="lbl" data-i18n="level">Level</span>
<input type="text" name="attr_artifact-level" spellcheck="false" class="xsmall lightborder center" value="1" />
</label>
<label class="inlcontent pictocheck hide" data-i18n-title="show-hide-details" title="Show/hide details">
<input type="checkbox" name="attr_artifactchkdesc" value="1" checked="checked" />
<span></span>
</label>
</div>
<div class="line hide">
<label class="inlcontent" data-i18n-title="depletion-rate-title" title="Rate of power depletion (ex: 1 in 1d20)">
<span class="lbl" data-i18n="depletion">Depletion</span>
<input type="number" name="attr_artdepthreshold" value="1" min="0" max="99" class="nospin" />
</label>
<label class="inlcontent">
<span class="lbl" data-i18n="depletion-in">in</span>
<select name="attr_artdepdice">
<option value="100" data-i18n="depletion-never">— (never)</option>
<option value="0" data-i18n="depletion-automatic">Automatic</option>
<option value="1d6">1d6</option>
<option value="1d10">1d10</option>
<option value="1d20" SELECTED="SELECTED">1d20</option>
<option value="1d100">1d100</option>
</select>
</label>
<div class="autoex ">
<span name="attr_artifact-description"></span>
<textarea name="attr_artifact-description" spellcheck="false" data-i18n-title="artifact-description" title="Description of the Artifact" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset>
<div class="line left topmarg1">
<span class="subtitle bold" data-i18n="misc:">misc:</span>
</div>
<div class="autoex">
<span name="attr_artifacts_misc"></span>
<textarea name="attr_artifacts_misc" spellcheck="false" data-i18n-placeholder="misc" placeholder="misc" title="@{artifacts_misc}"></textarea>
</div>
</div>
</div>
</div> <!-- END ARTIFACTS -->
</div> <!-- END RIGHT COLUMN -->
</div> <!-- END PC SHEET -->
<div class="npc"> <!-- NPC SHEET -->
<div class="2colrow">
<div class="col"> <!-- BEGIN Column 1 -->
<div class="line">
<label>
<span class="lab" data-i18n="name">Name</span>
<input type="text" name="attr_character_name" spellcheck="false" class="grow" />
</label>
<label data-i18n-title="level" title="Level">
<span class="lab" data-i18n="level">Level</span>
<input type="number" name="attr_level" value="1" />
(<span name="attr_npcbasetn"></span>)
</label>
</div>
<div class="line">
<label data-i18n-title="health" title="Health">
<span class="lab" data-i18n="health">Health</span>
<input type="number" name="attr_health" data-i18n-title="current-value" title="Current value" value="0" />
/
<input type="number" name="attr_health_max" data-i18n-title="maximum-value" title="Maximum value" value="0" />
</label>
<label data-i18n-title="armor" title="Armor">
<span class="lab" data-i18n="armor">Armor</span>
<input type="number" name="attr_armor" value="0" />
</label>
</div>
<div class="line">
<label data-i18n-title="damage" title="Damage">
<span class="lab" data-i18n="damage">Damage</span>
<input type="number" name="attr_damage" value="0" />
</label>
<label data-i18n-title="movement" title="Movement">
<span class="lab" data-i18n="movement">Movement</span>
<input type="text" name="attr_npcmovement" value="" spellcheck="false" class="grow" data-i18n-placeholder="short" placeholder="short" />
</label>
</div>
<span class="lab" data-i18n="gm-intrusion">GM Intrusion</span>
<div class="line autoex">
<span name="attr_npcgmi"></span>
<textarea name="attr_npcgmi" spellcheck="false" data-i18n-title="gm-intrusion" title="GM Intrusion"></textarea>
</div>
<span class="lab" data-i18n="modifications">Modifications</span>
<div>
<fieldset class="repeating_npcMods">
<div class="line">
<input type="text" name="attr_npcmods-name" value="" spellcheck="false" class="grow" data-i18n-placeholder="mod" placeholder="Mod" />
<label data-i18n-title="modification-level" title="Modification level">
<span data-i18n="as-level">as level</span>
<input type="number" name="attr_npcmods-level" value="0" />
</label>
</div>
</fieldset>
</div>
<div class="line"></div>
<span class="lab" data-i18n="combat">Combat</span>
<div class="line autoex">
<span name="attr_npccombat"></span>
<textarea name="attr_npccombat" spellcheck="false" data-i18n-title="combat" title="Combat"></textarea>
</div>
</div> <!-- END Column 1-->
<div class="col"> <!-- BEGIN Column 2 -->
<input type="checkbox" name="attr_settings_show" class="pseudocheck showsettings" data-i18n-title="show-hide-settings" title="Show / Hide Settings" value="1" checked="checked" /><span></span>
<span class="lab" data-i18n="motive">Motive</span>
<div class="line autoex">
<span name="attr_npcmotive"></span>
<textarea name="attr_npcmotive" spellcheck="false" data-i18n-title="motive" title="Motive"></textarea>
</div>
<span class="lab" data-i18n="environment">Environment</span>
<div class="line autoex">
<span name="attr_npcenvironment"></span>
<textarea name="attr_npcenvironment" spellcheck="false" data-i18n-title="environment" title="Environment"></textarea>
</div>
<span class="lab" data-i18n="interaction">Interaction</span>
<div class="line autoex">
<span name="attr_npcinteraction"></span>
<textarea name="attr_npcinteraction" spellcheck="false" data-i18n-title="interaction" title="Interaction"></textarea>
</div>
<span class="lab" data-i18n="use">Use</span>
<div class="line autoex">
<span name="attr_npcuse"></span>
<textarea name="attr_npcuse" spellcheck="false" data-i18n-title="use" title="Use"></textarea>
</div>
<span class="lab" data-i18n="loot">Loot</span>
<div class="line autoex">
<span name="attr_npcloot"></span>
<textarea name="attr_npcloot" spellcheck="false" data-i18n-title="loot" title="Loot"></textarea>
</div>
<span class="lab" data-i18n="description">Description</span>
<div class="line autoex">
<span name="attr_npcdescription"></span>
<textarea name="attr_npcdescription" spellcheck="false" data-i18n-title="description" title="Description"></textarea>
</div>
</div> <!-- END Column 2-->
</div>
</div> <!-- END NPC SHEET -->
</div> <!-- END SHEETS -->
<div class="copyright">
&copy;2019 Monte Cook Games, LLC. Cypher System, Numenera and The Strange are trademarks of Monte Cook Games, LLC, in the U.S.A. and other countries.
</div>
<div style="display: none;"> <!-- HIDDEN Rolls and Calculations -->
<!-- Using questions -->
<input type="hidden" name="attr_rollqstdiff" value="@{rollvardiff}[Difficulty]" />
<input type="hidden" name="attr_rollqstrolleff" value="@{rollvarrolleff}[Roll Effort]" />
<input type="hidden" name="attr_rollqstrolldmg" value="@{rollvarrolldmg}[Damage Effort]" />
<input type="hidden" name="attr_rollqstasset" value="@{rollvarasset}[Asset]" />
<input type="hidden" name="attr_rollqstbonus" value="@{rollvarbonus}[Bonus]" />
<input type="hidden" name="attr_rollqstcost" value="@{rollvarcost}[Misc Cost]" />
<!-- Game settings -->
<input type="hidden" name="attr_gnlsettings_sheet_style" value="2" />
<input type="hidden" name="attr_gnlsettings_sheet_rolls" value="1" />
<input type="hidden" name="attr_gnlsettings_sheetuseasset" value="0" />
<input type="hidden" name="attr_gnlsettings_sheetusebonus" value="0" />
<input type="hidden" name="attr_gnlsettings_sheetusecost" value="0" />
<input type="hidden" name="attr_gnlsettings_sheetuseapi" value="0" />
<!-- Misc -->
<input type="hidden" name="attr_converted_from" value="none" />
</div> <!-- END HIDDEN Rolls and Calculations -->
<!-- ROLL TEMPLATES -->
<rolltemplate class="sheet-rolltemplate-cyphsys">
<div class="rtemplate{{sheetstyle}} {{fontstyle}}">
<span class="charname">
[{{charname}}](http://journal.roll20.net/character/{{charid}})
</span>
{{#dmgtrack}}
{{#rollTotal() dmgtrack 1}}
<span class="failure" data-i18n="impaired">impaired</span>
{{/rollTotal() dmgtrack 1}}
{{#rollTotal() dmgtrack 2}}
<span class="failure" data-i18n="debilitated">debilitated</span>
{{/rollTotal() dmgtrack 2}}
{{#rollTotal() dmgtrack 3}}
<span class="failure" data-i18n="dead">dead</span>
{{/rollTotal() dmgtrack 3}}
{{/dmgtrack}}
<div class="ablock">
<div class="line padleft">
<span class="title">{{name}}</span>
</div>
<div class="line">
{{#type}}<span class="undertitle">{{type}}</span>{{/type}}
{{#statname}}<span class="undertitle">{{statname}}</span>{{/statname}}
</div>
{{#d20roll}} <!-- D20 roll -->
{{#rollGreater() difficulty 0}} <!-- Difficulty set: success of failure -->
<div class="inblock">
{{#^rollLess() d20roll targnumroll}}
<div class="line">
<span class="subtitle success" data-i18n="success!">Success!</span>
</div>
{{/^rollLess() d20roll targnumroll}}
{{#rollLess() d20roll targnumroll}}
<div class="line">
<span class="subtitle failure" data-i18n="failure">Failure</span>
</div>
{{/rollLess() d20roll targnumroll}}
</div>
{{/rollGreater() difficulty 0}} <!-- END Difficulty set: success of failure -->
{{#rollGreater() difficulty 0}} <!-- Difficulty SET (detailed) -->
<div class="inblock">
<div class="line">
<span>
<span class="subtitle" data-i18n="difficulty">Difficulty</span>
<span class="pseudoroll">{{difficulty}}</span>
</span>
<span>
(<span data-i18n-title="target-number" title="Target Number" data-i18n="target-number-short">TN</span>
<span class="pseudoroll">{{targnum}}</span>)
</span>
</div>
{{#skilled}}
<div class="line left padleft">
{{#rollTotal() skilled -1}}
<span data-i18n="inability">Inability</span>
<span class="pseudoroll">+ 1</span>
{{/rollTotal() skilled -1}}
{{#rollTotal() skilled 1}}
<span data-i18n="trained">Trained</span>
<span class="pseudoroll">- 1</span>
{{/rollTotal() skilled 1}}
{{#rollTotal() skilled 2}}
<span data-i18n="specialized">Specialized</span>
<span class="pseudoroll">- 2</span>
{{/rollTotal() skilled 2}}
</div>
{{/skilled}}
{{#rollGreater() assets 0}}
<div class="line left padleft">
<span data-i18n="assets">Assets</span>
<span class="pseudoroll">- {{assets}}</span>
</div>
{{/rollGreater() assets 0}}
{{#atkmod}}
{{#rollGreater() atkmod 0}}
<div class="line left padleft">
<span data-i18n="mod">Mod</span>
<span class="pseudoroll">- {{atkmod}}</span>
</div>
{{/rollGreater() atkmod 0}}
{{/atkmod}}
{{#rollGreater() effortroll 0}}
<div class="line left padleft">
<span data-i18n="effort">Effort</span>
<span class="pseudoroll">- {{effortroll}}</span>
</div>
{{/rollGreater() effortroll 0}}
{{#^rollTotal() targnumroll targnum}}
<div class="line">
<span>
<span class="subtitle"><span data-i18n="final">Final</span> =</span>
<span class="pseudoroll">{{finaldiff}}</span>
</span>
<span>
(<span data-i18n-title="target-number" title="Target Number" data-i18n="target-number-short">TN</span>
<span class="pseudoroll">{{targnumroll}}</span>)
</span>
</div>
{{/^rollTotal() targnumroll targnum}}
</div>
{{/rollGreater() difficulty 0}} <!-- END Difficulty SET (detailed) -->
<div class="inblock">
<div class="line"> <!-- ACTUAL ROLL -->
<span>
<span class="subtitle" data-i18n="roll:">Roll:</span>
{{d20roll}}
</span>
<span><span data-i18n="beats-difficulty">Beats difficulty</span>
{{#rollLess() d20roll 3}}
<span class="pseudoroll">0</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">0</span>)</span>
{{/rollLess() d20roll 3}}
{{#rollBetween() d20roll 3 5}}
<span class="pseudoroll">1</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">3</span>)</span>
{{/rollBetween() d20roll 3 5}}
{{#rollBetween() d20roll 6 8}}
<span class="pseudoroll">2</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">6</span>)</span>
{{/rollBetween() d20roll 6 8}}
{{#rollBetween() d20roll 9 11}}
<span class="pseudoroll">3</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">9</span>)</span>
{{/rollBetween() d20roll 9 11}}
{{#rollBetween() d20roll 12 14}}
<span class="pseudoroll">4</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">12</span>)</span>
{{/rollBetween() d20roll 12 14}}
{{#rollBetween() d20roll 15 17}}
<span class="pseudoroll">5</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">15</span>)</span>
{{/rollBetween() d20roll 15 17}}
{{#rollBetween() d20roll 18 20}}
<span class="pseudoroll">6</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">18</span>)</span>
{{/rollBetween() d20roll 18 20}}
</div> <!-- END ACTUAL ROLL -->
{{#rollTotal() difficulty 0}} <!-- No difficulty set -->
{{#skilled}}
<div class="line left padleft">
{{#rollTotal() skilled -1}}
<span data-i18n="inability">Inability</span>
<span class="pseudoroll">+ 1</span>
{{/rollTotal() skilled -1}}
{{#rollTotal() skilled 1}}
<span data-i18n="trained">Trained</span>
<span class="pseudoroll">- 1</span>
{{/rollTotal() skilled 1}}
{{#rollTotal() skilled 2}}
<span data-i18n="specialized">Specialized</span>
<span class="pseudoroll">- 2</span>
{{/rollTotal() skilled 2}}
</div>
{{/skilled}}
{{#rollGreater() assets 0}}
<div class="line left padleft">
<span data-i18n="assets">Assets</span>
<span class="pseudoroll">- {{assets}}</span>
</div>
{{/rollGreater() assets 0}}
{{#atkmod}}
{{#rollGreater() atkmod 0}}
<div class="line left padleft">
<span data-i18n="mod">Mod</span>
<span class="pseudoroll">- {{atkmod}}</span>
</div>
{{/rollGreater() atkmod 0}}
{{/atkmod}}
{{#rollGreater() effortroll 0}}
<div class="line left padleft">
<span data-i18n="effort">Effort</span>
<span class="pseudoroll">- {{effortroll}}</span>
</div>
{{/rollGreater() effortroll 0}}
{{#rollLess() finaldiff 0}}
<div class="line">
<span class="subtitle">= <span data-i18n="difficulty">Difficulty</span></span>
<span class="pseudoroll success">{{finaldiff}}</span>
<span data-i18n="steps">Steps</span>
</div>
{{/rollLess() finaldiff 0}}
{{#rollGreater() finaldiff 0}}
<div class="line">
<span class="subtitle">= <span data-i18n="difficulty">Difficulty</span></span>
<span class="pseudoroll failure">+ {{finaldiff}}</span>
<span data-i18n="steps">Steps</span>
</div>
{{/rollGreater() finaldiff 0}}
{{/rollTotal() difficulty 0}} <!-- END No difficulty set -->
</div>
{{#rollWasCrit() d20roll}} <!-- CRIT -->
{{#rollLess() dmgtrack 2}}
<div class="inblock">
<div class="line">
<span class="subtitle success" data-i18n="special:">Special:</span>
{{#rollLess() dmgtrack 1}}
{{#rollTotal() d20roll 17}}<span data-i18n="plus-one-damage">+1 damage</span>{{/rollTotal() d20roll 17}}
{{#rollTotal() d20roll 18}}<span data-i18n="plus-two-damage">+2 damage</span>{{/rollTotal() d20roll 18}}
{{#rollTotal() d20roll 19}}<span data-i18n="minor-effect">Minor effect</span>&nbsp;<span data-i18n="or">or</span>&nbsp;<span data-i18n="plus-three-damage">+3 damage</span>{{/rollTotal() d20roll 19}}
{{#rollGreater() d20roll 19}}<span data-i18n="major-effect">Major effect</span>&nbsp;<span data-i18n="or">or</span>&nbsp;<span data-i18n="plus-four-damage">+4 damage</span>{{/rollGreater() d20roll 19}}
{{/rollLess() dmgtrack 1}}
{{#rollTotal() dmgtrack 1}}<span data-i18n="plus-one-damage">+1 damage</span>{{/rollTotal() dmgtrack 1}}
</div>
</div>
{{/rollLess() dmgtrack 2}}
{{/rollWasCrit() d20roll}} <!-- CRIT -->
{{#rollWasFumble() d20roll}} <!-- GM Intrusion -->
<div class="inblock">
<div class="line">
<span class="subtitle failure" data-i18n="gm-intrusion">GM Intrusion</span>
</div>
</div>
{{/rollWasFumble() d20roll}} <!-- END GM Intrusion -->
{{/d20roll}} <!-- END D20 roll -->
{{#rollGreater() bonusdmg 0}} <!-- DAMAGE -->
<div class="inblock">
<div class="line">
<span>
<span class="subtitle" data-i18n="damage">Damage</span>
<span class="pseudoroll">{{bonusdmg}}</span>
</span>
<span>
({{effortdmg}} <span data-i18n="effort">effort</span>)
</span>
</div>
</div>
{{/rollGreater() bonusdmg 0}} <!-- END DAMAGE -->
{{#rollGreater() totalcost 0}} <!-- COST -->
<div class="inblock">
<div class="line">
<span class="subtitle" data-i18n="cost">Cost</span>
<span>{{effortcost}}+{{statexpense}}-{{attredge}}=</span>
<span class="subtitle">{{totalcost}}</span>
</div>
{{#rollTotal() useapi 1}}
<div class="line">
[<span data-i18n="apply-cost-api">Apply cost (API)</span>](!cypher-modstat {{charid}}|{{stat}}|{{totalcost}})
</div>
{{/rollTotal() useapi 1}}
</div>
{{/rollGreater() totalcost 0}} <!-- END COST -->
{{#recoverpoints}} <!-- RECOVERY -->
<div class="inblock">
<div class="line">
<span class="subtitle">{{recovery}}</span>
<span>{{recoverpoints}} <span data-i18n="points">Points</span></span>
</div>
</div>
<div class="inblock">
<div class="line">
<span class="subtitle" data-i18n="rest">rest</span>
{{#rollTotal() recovaction 0}}
<span data-i18n="1-action">1 action</span>
{{/rollTotal() recovaction 0}}
{{#rollTotal() recovaction 1}}
<span data-i18n="10-mins">10 mins</span>
{{/rollTotal() recovaction 1}}
{{#rollTotal() recovaction 2}}
<span data-i18n="1-hour">1 hour</span>
{{/rollTotal() recovaction 2}}
{{#rollTotal() recovaction 3}}
<span data-i18n="10-hours">10 hours</span>
{{/rollTotal() recovaction 3}}
</div>
<div class="line">
<span class="subtitle" data-i18n="next">next</span>
{{#rollTotal() recovaction 0}}
{{#^rollTotal() useapi 1}}
<span data-i18n="10-mins">10 mins</span>
{{/^rollTotal() useapi 1}}
{{#rollTotal() useapi 1}}
[<span data-i18n="10-mins">10 mins</span>](!cypher-modstat {{charid}}|recovery-rolls|1)
{{/rollTotal() useapi 1}}
{{/rollTotal() recovaction 0}}
{{#rollTotal() recovaction 1}}
{{#^rollTotal() useapi 1}}
<span data-i18n="1-hour">1 hour</span>
{{/^rollTotal() useapi 1}}
{{#rollTotal() useapi 1}}
[<span data-i18n="1-hour">1 hour</span>](!cypher-modstat {{charid}}|recovery-rolls|2)
{{/rollTotal() useapi 1}}
{{/rollTotal() recovaction 1}}
{{#rollTotal() recovaction 2}}
{{#^rollTotal() useapi 1}}
<span data-i18n="10-hours">10 hours</span>
{{/^rollTotal() useapi 1}}
{{#rollTotal() useapi 1}}
[<span data-i18n="10-hours">10 hours</span>](!cypher-modstat {{charid}}|recovery-rolls|3)
{{/rollTotal() useapi 1}}
{{/rollTotal() recovaction 2}}
{{#rollTotal() recovaction 3}}
{{#^rollTotal() useapi 1}}
<span data-i18n="1-action">1 action</span>
{{/^rollTotal() useapi 1}}
{{#rollTotal() useapi 1}}
[<span data-i18n="1-action">1 action</span>](!cypher-modstat {{charid}}|recovery-rolls|0)
{{/rollTotal() useapi 1}}
{{/rollTotal() recovaction 3}}
</div>
</div>
{{/recoverpoints}} <!-- END RECOVERY -->
{{#depletionroll}} <!-- ARTIFACT DEPLETION -->
<div class="inblock">
<div class="line">
<span class="subtitle" data-i18n="depletion-roll">Depletion roll</span>
<span>{{thresholddesc}}</span>
</div>
</div>
<div class="inblock">
<div class="line">
<span>
<span class="subtitle" data-i18n="roll:">Roll:</span>
<span class="pseudoroll">{{depletionroll}}</span>
</span>
{{#rollGreater() depletionroll threshold}}
<span class="subtitle success" data-i18n="not-depleted">Not depleted</span>
{{/rollGreater() depletionroll threshold}}
{{#rollTotal() depletionroll threshold}}
<span class="subtitle failure" data-i18n="last-use!">Last use!</span>
{{/rollTotal() depletionroll threshold}}
{{#rollLess() depletionroll threshold}}
<span class="subtitle failure" data-i18n="last-use!">Last use!</span>
{{/rollLess() depletionroll threshold}}
</div>
</div>
{{/depletionroll}} <!-- END ARTIFACT DEPLETION -->
{{#description}} <!-- DESCRIPTION -->
<div class="inblock description">
{{#level}}
<div>
<span style="font-weight: bold;" data-i18n="level">Level</span>
{{#rollTotal() level -1}}
<span data-i18n="inability">Inability</span>
{{/rollTotal() level -1}}
{{#rollTotal() level 0}}
<span data-i18n="untrained">Untrained</span>
{{/rollTotal() level 0}}
{{#rollTotal() level 1}}
<span data-i18n="trained">Trained</span>
{{/rollTotal() level 1}}
{{#rollTotal() level 2}}
<span data-i18n="specialized">Specialized</span>
{{/rollTotal() level 2}}
</div>
{{/level}}
{{description}}
</div>
{{/description}} <!-- END DESCRIPTION -->
{{#used}}
{{#rollTotal() used 1}}
<div class="inblock description" style="text-align: center;">
<span class="notable" data-i18n="used">Used</span>
</div>
{{/rollTotal() used 1}}
{{/used}}
</div>
</div>
</rolltemplate>
<!-- END ROLL TEMPLATES -->
<script type="text/worker">
// === Opening, version and translation
on("sheet:opened", () => {
versioning();
});
// Version handling
const versioning = function() {
let version = 2.1;
getAttrs(["version"], (v) => {
let vrs = (parseFloat(v["version"]) || 0.0);
if (vrs == version) {
console.log("Cypher Systems by Roll20 v" + vrs);
update_chartype();
} else if (vrs == 0.0) {
// Conversion from older sheets needed?
check_for_conversion(() => {
getAttrs(["converted_from","gnlsettings_sheet_style","gnlsettings_sheet_rolls","gnlsettings_sheetuseasset","gnlsettings_sheetusebonus","gnlsettings_sheetusecost","gnlsettings_sheetuseapi"], (v) => {
let update = {};
update["version"] = "2.0";
update["sheetuseapi"] = (v["gnlsettings_sheetuseapi"] || "0");
if((v["converted_from"] || "none") == "none") {
update["sheet_style"] = (v["gnlsettings_sheet_style"] || "2");
update[`sheet_style_0`] = 0;
update[`sheet_style_1`] = 0;
update[`sheet_style_2`] = 0;
update[`sheet_style_99`] = 0;
update[`sheet_style_${(v["gnlsettings_sheet_style"] || "2")}`] = 1;
}
if(["Numenéra","The Strange by Roll20","none"].includes((v["converted_from"] || "none"))) {
update["sheet_rolls"] = (v["gnlsettings_sheet_rolls"] || "1");
update["sheetuseasset"] = (v["gnlsettings_sheetuseasset"] || "0");
update["showuseasset"] = (v["gnlsettings_sheetuseasset"] || "0");
update["sheetusebonus"] = (v["gnlsettings_sheetusebonus"] || "0");
update["showusebonus"] = (v["gnlsettings_sheetusebonus"] || "0");
update["sheetusecost"] = (v["gnlsettings_sheetusecost"] || "0");
update["showusecost"] = (v["gnlsettings_sheetusecost"] || "0");
}
setAttrs(update, {silent: true}, () => {
versioning();
});
});
});
} else {
setAttrs({"version": version}, {silent: true}, () => {
versioning();
});
}
});
};
const check_for_conversion = function(doneupdating) {
console.log("Cypher Systems by Roll20: Checking for conversion");
getAttrs(["mightpool","cyphers","cyper","mightedge","speededge","intellectedge","npcbasediff"], (v) => {
if((typeof v["mightpool"] !== "undefined") && (typeof v["cyphers"] !== "undefined")) {
// Convert from Numenéra
convert_from_numenera(doneupdating);
} else if((typeof v["mightpool"] !== "undefined") && (typeof v["cyper"] !== "undefined")) {
// Convert from The Strange
convert_from_thestrange(doneupdating);
} else if(
(typeof v["mightedge"] !== "undefined")
|| (typeof v["speededge"] !== "undefined")
|| (typeof v["intellectedge"] !== "undefined")
|| (typeof v["npcbasediff"] !== "undefined")
) {
// convert from Community Cypher System Sheet
convert_from_cypher(doneupdating);
} else { // Can't find the right sheet... or just a blank new sheet
doneupdating();
}
});
};
const convert_from_cypher = function(doneupdating) {
// convert from Community Cypher System Sheet
console.log("Cypher Systems by Roll20: converting from community Cypher System sheet...");
let fields = ["sheetstyle","level","sheetRolls","initvarskill"];
// WIP
statids = {};
getSectionIDs("repeating_abilities", (abids) => {
getSectionIDs("repeating_attacks", (weapids) => {
getSectionIDs("repeating_attackmight", (mightatkids) => {
statids["mightatkids"] = mightatkids;
getSectionIDs("repeating_attackspeed", (speedatkids) => {
statids["speedatkids"] = speedatkids;
getSectionIDs("repeating_attackintel", (intelatkids) => {
statids["intelatkids"] = intelatkids;
getSectionIDs("repeating_skillmight", (mightskillids) => {
statids["mightskillids"] = mightskillids;
getSectionIDs("repeating_skillspeed", (speedskillids) => {
statids["speedskillids"] = speedskillids;
getSectionIDs("repeating_skillintel", (intelskillids) => {
statids["intelskillids"] = intelskillids;
getSectionIDs("repeating_cypher-list", (cyphids) => {
getSectionIDs("repeating_artifact-list", (artids) => {
// Gathering attributes
// Abilities
fields.push(...abids.map((id) => `repeating_abilities_${id}_abilityuse`));
// Weapons
fields.push(...weapids.map((id) => `repeating_attacks_${id}_atkmod`));
fields.push(...weapids.map((id) => `repeating_attacks_${id}_atkdmg`));
_.each(["might","speed","intel"], (stat) => {
// attacks
if(statids[`${stat}atkids`].length) {
statids[`${stat}atkids`].map((id) => {
fields.push(
`repeating_attack${stat}_${id}_atk${stat}name`
,`repeating_attack${stat}_${id}_atk${stat}cost`
,`repeating_attack${stat}_${id}_atk${stat}dmg`
,`repeating_attack${stat}_${id}_atk${stat}lvl`
,`repeating_attack${stat}_${id}_atk${stat}mod`
);
});
}
// skills
if(statids[`${stat}skillids`].length) {
statids[`${stat}skillids`].map((id) => {
fields.push(
`repeating_skill${stat}_${id}_skill${stat}name`
,`repeating_skill${stat}_${id}_skill${stat}lvl`
);
});
}
});
getAttrs(fields, (v) => {
let update = {};
// Sheet style
update["sheet_style"] = (v["sheetstyle"] || "0");
update[`sheet_style_0`] = 0;
update[`sheet_style_1`] = 0;
update[`sheet_style_2`] = 0;
update[`sheet_style_99`] = 0;
update[`sheet_style_${(v["sheetstyle"] || "0")}`] = 1;
if(update["sheet_style"] == "99") { // NPC
update["npcbasetn"] = (parseInt(v["level"]) || 0)*3;
update["settings_show"] = 0;
} else { // PC
update["sheet_rolls"] = (typeof v["sheetrolls"] === "undefined") ? "1" : "0";
_.each(["speed","might","intel"], (stat) => {
let fstat;
fstat = (stat == "intel") ? "intellect" : stat;
// Initiative
update["initlvl"] = (v["initlvl"] || 0);
// Skills
_.each(statids[`${stat}skillids`], (id) => {
let newid = generateRowID();
update[`repeating_skills_${newid}_skillname`] = (v[`repeating_skill${stat}_${id}_skill${stat}name`] || "");
update[`repeating_skills_${newid}_skilllvl`] = (v[`repeating_skill${stat}_${id}_skill${stat}lvl`] || "0");
update[`repeating_skills_${newid}_skillstat`] = fstat;
update[`repeating_skills_${newid}_skillchkdesc`] = 0;
update[`repeating_skills_${newid}_skilledge`] = `@{${fstat}_edge}`;
update[`repeating_skills_${newid}_skilltype`] = `${(getTranslationByKey(fstat + "-abbreviation") || "-").toUpperCase()} • `;
if(update[`repeating_skills_${newid}_skilllvl`] == "2") { // Specialized
update[`repeating_skills_${newid}_skilltype`] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
} else if(update[`repeating_skills_${newid}_skilllvl`] == "1") { // Trained
update[`repeating_skills_${newid}_skilltype`] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
} else { // Untrained
update[`repeating_skills_${newid}_skilltype`] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
}
});
// Attacks
_.each(statids[`${stat}atkids`], (id) => {
let newid = generateRowID();
update[`repeating_atks_${newid}_atkname`] = (v[`repeating_attack${stat}_${id}_atk${stat}name`] || "");
update[`repeating_atks_${newid}_atklvl`] = (v[`repeating_attack${stat}_${id}_atk${stat}lvl`] || "0");
update[`repeating_atks_${newid}_atkcost`] = (v[`repeating_attack${stat}_${id}_atk${stat}cost`] || "0");
update[`repeating_atks_${newid}_atkdmg`] = (v[`repeating_attack${stat}_${id}_atk${stat}dmg`] || "0");
update[`repeating_atks_${newid}_atkmod`] = (v[`repeating_attack${stat}_${id}_atk${stat}mod`] || "0");
update[`repeating_atks_${newid}_atkarmorcost`] = (stat == "speed") ? "@{armorspeedcost}" : "0";
update[`repeating_atks_${newid}_atkstat`] = fstat;
update[`repeating_atks_${newid}_atkchkdesc`] = 0;
update[`repeating_atks_${newid}_atkedge`] = `@{${fstat}_edge}`;
update[`repeating_atks_${newid}_atktype`] = `${(getTranslationByKey(fstat + "-abbreviation") || "-").toUpperCase()} • `;
if(update[`repeating_atks_${newid}_atklvl`] == "2") { // Specialized
update[`repeating_atks_${newid}_atktype`] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
} else if(update[`repeating_atks_${newid}_atklvl`] == "1") { // Trained
update[`repeating_atks_${newid}_atktype`] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
} else { // Untrained
update[`repeating_atks_${newid}_atktype`] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
}
});
});
// Weapons
_.each(weapids, (id) => {
update[`repeating_attacks_${id}_weapontype`] = (v[`repeating_attacks_${id}_atkmod`] || "0") + " • " + (v[`repeating_attacks_${id}_atkdmg`] || "0");
update[`repeating_attacks_${id}_weapchkdesc`] = 0;
});
// Special abilities
_.each(abids, (id) => {
update[`repeating_abilities_${id}_abtype`] = (getTranslationByKey(v[`repeating_abilities_${id}_abilityuse`] + "-abbreviation") || "-").toUpperCase();
update[`repeating_abilities_${id}_abilitychkdesc`] = 0;
});
// Cyphers
_.each(cyphids, (id) => {
update[`repeating_cypher-list_${id}_cypher-chkdesc`] = 0;
});
// Artifacts
_.each(artids, (id) => {
update[`repeating_artifact-list_${id}_artifactchkdesc`] = 0;
});
}
update["converted_from"] = "Community Cypher System";
setAttrs(update, {silent: true}, () => {
doneupdating();
});
});
});
});
});
});
});
});
});
});
});
});
};
const convert_from_numenera = function(doneupdating) {
// convert from Numenera
console.log("Cypher Systems by Roll20: converting from Numenéra sheet...");
let fields = ["10hours","10minutes","1action","1hour","cyphers","disabled","impaired","intellectpool","intellectpoolmax","mightpool","mightpoolmax","speedpool","speedpoolmax","artifactsandoddities"];
getSectionIDs("repeating_abilities", (abids) => {
getSectionIDs("repeating_attacks", (atkids) => {
getSectionIDs("repeating_skills", (skillids) => {
fields.push(...abids.map((id) => `repeating_abilities_${id}_abilityuse`));
fields.push(...atkids.map((id) => `repeating_attacks_${id}_attack-rep`));
fields.push(...atkids.map((id) => `repeating_attacks_${id}_attack-mod-rep`));
fields.push(...atkids.map((id) => `repeating_attacks_${id}_damage-mod-rep`));
fields.push(...skillids.map((id) => `repeating_skills_${id}_skill-name`));
fields.push(...skillids.map((id) => `repeating_skills_${id}_specialized-skill`));
getAttrs(fields, (v) => {
let update = {};
// Stats
update["might"] = parseInt((v["mightpool"] || "").replace(/[^\d]/,'','gi') || 0);
update["might_max"] = parseInt((v["mightpoolmax"] || "").replace(/[^\d]/,'','gi') || 0);
update["speed"] = parseInt((v["speedpool"] || "").replace(/[^\d]/,'','gi') || 0);
update["speed_max"] = parseInt((v["speedpoolmax"] || "").replace(/[^\d]/,'','gi') || 0);
update["intellect"] = parseInt((v["intellectpool"] || "").replace(/[^\d]/,'','gi') || 0);
update["intellect_max"] = parseInt((v["intellectpoolmax"] || "").replace(/[^\d]/,'','gi') || 0);
// Abilities
_.each(abids, (id) => {
if( (v[`repeating_abilities_${id}_abilityuse`] || "").length) {
if(v[`repeating_abilities_${id}_abilityuse`].toLowerCase().trim().includes('action')) {
update[`repeating_abilities_${id}_abilityuse`] = 'Action';
} else if(v[`repeating_abilities_${id}_abilityuse`].toLowerCase().trim().includes('enabler')) {
update[`repeating_abilities_${id}_abilityuse`] = 'Enabler';
} else {
update[`repeating_abilities_${id}_abilityuse`] = 'Other';
}
} else {
update[`repeating_abilities_${id}_abilityuse`] = 'Other';
}
update[`repeating_abilities_${id}_abtype`] = (getTranslationByKey(update[`repeating_abilities_${id}_abilityuse`] + "-abbreviation") || "-").toUpperCase();
update[`repeating_abilities_${id}_abilitychkdesc`] = 0;
});
// skills
_.each(skillids, (id) => {
update[`repeating_skills_${id}_skillname`] = (v[`repeating_skills_${id}_skill-name`] || "");
update[`repeating_skills_${id}_skilltype`] = `${(getTranslationByKey("intellect-abbreviation") || "-").toUpperCase()} • `;
if((v[`repeating_skills_${id}_specialized-skill`] || "0") == "on") { // Specialized
update[`repeating_skills_${id}_skilllvl`] = 2;
update[`repeating_skills_${id}_skilltype`] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
} else if((v[`repeating_skills_${id}_trained-skill`] || "0") == "on") { // Trained
update[`repeating_skills_${id}_skilllvl`] = 1;
update[`repeating_skills_${id}_skilltype`] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
} else { // Untrained
update[`repeating_skills_${id}_skilllvl`] = 0;
update[`repeating_skills_${id}_skilltype`] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
}
update[`repeating_skills_${id}_skillchkdesc`] = 0;
});
// Attacks / Weapons
_.each(atkids, (id) => {
update[`repeating_attacks_${id}_atkname`] = (v[`repeating_attacks_${id}_attack-rep`] || "");
update[`repeating_attacks_${id}_atkmod`] = (v[`repeating_attacks_${id}_attack-mod-rep`] || "0");
update[`repeating_attacks_${id}_atkdmg`] = (v[`repeating_attacks_${id}_damage-mod-rep`] || "0");
update[`repeating_attacks_${id}_weapontype`] = `${update[`repeating_attacks_${id}_atkmod`]} • ${update[`repeating_attacks_${id}_atkdmg`]}`;
update[`repeating_attacks_${id}_weapchkdesc`] = 0;
let idbis = generateRowID();
update[`repeating_atks_${idbis}_atkname`] = (v[`repeating_attacks_${id}_attack-rep`] || "");
update[`repeating_atks_${idbis}_atkmod`] = (v[`repeating_attacks_${id}_attack-mod-rep`] || "0");
update[`repeating_atks_${idbis}_atkdmg`] = (v[`repeating_attacks_${id}_damage-mod-rep`] || "0");
update[`repeating_atks_${idbis}_atkchkdesc`] = 0;
update[`repeating_atks_${idbis}_atktype`] = `${(getTranslationByKey("might-abbreviation") || "-").toUpperCase()} • ${update[`repeating_atks_${idbis}_atkdmg`]}`;
});
// Damage Track
if( (v["disabled"] || "0") == "on") {
update["damage-track"] = 2;
} else if((v["impaired"] || "0") == "on") {
update["damage-track"] = 1;
}
// Recovery
if((v["10hours"] || "0") == "on") {
update["recovery-rolls"] = 3;
} else if((v["1hour"] || "0") == "on") {
update["recovery-rolls"] = 2;
} else if((v["10minutes"] || "0") == "on") {
update["recovery-rolls"] = 1;
} else if((v["1action"] || "0") == "on") {
update["recovery-rolls"] = 0;
}
// Misc
update["cyphers_misc"] = (v["cyphers"] || "");
update["armorspeedcost"] = (v["armor-speed-reduction"] || "0").replace(/[^\d]*/,'','gi');
update["artifacts_misc"] = (v["artifactsandoddities"] || "");
// End
update["sheet_style_0"] = "0";
update["sheet_style_1"] = "1";
update["sheet_style_2"] = "0";
update["sheet_style_99"] = "0";
update["sheet_style"] = "1";
update["converted_from"] = "Numenéra";
setAttrs(update, {silent: true}, () => {
doneupdating();
});
});
});
});
});
};
const convert_from_thestrange = function(doneupdating) {
// convert from The Strange
console.log("Cypher Systems by Roll20: converting from The Strange by Roll20 sheet...");
let fields = ["attack1","attack2","attack3","attack4","attack5","attack6","attack7","attack8","attack9","attackdmg1","attackdmg2","attackdmg3","attackdmg4","attackdmg5","attackdmg6","attackdmg7","attackdmg8","attackdmg9","checkboxs1","checkboxs10","checkboxs11","checkboxs12","checkboxs13","checkboxs14","checkboxs15","checkboxs16","checkboxs17","checkboxs18","checkboxs19","checkboxs2","checkboxs20","checkboxs21","checkboxs3","checkboxs4","checkboxs5","checkboxs6","checkboxs7","checkboxs8","checkboxs9","checkboxt1","checkboxt10","checkboxt11","checkboxt12","checkboxt13","checkboxt14","checkboxt15","checkboxt16","checkboxt17","checkboxt18","checkboxt19","checkboxt2","checkboxt20","checkboxt21","checkboxt3","checkboxt4","checkboxt5","checkboxt6","checkboxt7","checkboxt8","checkboxt9","cyper","debilitated","equipment","extra_effort","impared","increase_capabilities","intellectpool","intellectpoolmax","mightpool","mightpoolmax","move_twoards_perfection","other","recovery_10hr","recovery_10min","recovery_1action","recovery_1hr","skill_training","skill1","skill10","skill11","skill12","skill13","skill14","skill15","skill16","skill17","skill18","skill19","skill2","skill20","skill21","skill3","skill4","skill5","skill6","skill7","skill8","skill9","special_abilities","speedpool","speedpoolmax"];
getAttrs(fields, (v) => {
let update = {}, id, i=0;
// WIP
// Stats
update["might"] = parseInt((v["mightpool"] || "").replace(/[^\d]/,'','gi') || 0);
update["might_max"] = parseInt((v["mightpoolmax"] || "").replace(/[^\d]/,'','gi') || 0);
update["speed"] = parseInt((v["speedpool"] || "").replace(/[^\d]/,'','gi') || 0);
update["speed_max"] = parseInt((v["speedpoolmax"] || "").replace(/[^\d]/,'','gi') || 0);
update["intellect"] = parseInt((v["intellectpool"] || "").replace(/[^\d]/,'','gi') || 0);
update["intellect_max"] = parseInt((v["intellectpoolmax"] || "").replace(/[^\d]/,'','gi') || 0);
// Skills
for(i=1; i < 10; i++) {
if( (v[`skill${i}`] || "").length ) {
if(v[`skill${i}`].toLowerCase().trim() == "initiative" ) {
if([1,4,7,10,13,16,19].includes(i)) {
update["initstat"] = "might";
} else if([2,5,8,11,14,17,20].includes(i)) {
update["initstat"] = "speed";
} else {
update["initstat"] = "intellect";
}
update["inittype"] = `${(getTranslationByKey(update["initstat"] + "-abbreviation") || "-").toUpperCase()} • `;
if((v[`checkboxs${i}`] || "0") == "on") { // Specialized
update["initlvl"] = 2;
update["inittype"] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
} else if((v[`checkboxt${i}`] || "0") == "on") { // Trained
update["initlvl"] = 1;
update["inittype"] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
} else { // Untrained
update["initlvl"] = 0;
update["inittype"] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
}
update["initchkdesc"] = 0;
} else {
id = generateRowID();
update[`repeating_skills_${id}_skillname`] = v[`skill${i}`];
if([1,4,7,10,13,16,19].includes(i)) {
update[`repeating_skills_${id}_skillstat`] = "might";
} else if([2,5,8,11,14,17,20].includes(i)) {
update[`repeating_skills_${id}_skillstat`] = "speed";
} else {
update[`repeating_skills_${id}_skillstat`] = "intellect";
}
update[`repeating_skills_${id}_skilledge`] = update[`repeating_skills_${id}_skillstat`] + "_edge";
update[`repeating_skills_${id}_skilltype`] = `${(getTranslationByKey(update[`repeating_skills_${id}_skillstat`] + "-abbreviation") || "-").toUpperCase()} • `;
if((v[`checkboxs${i}`] || "0") == "on") { // Specialized
update[`repeating_skills_${id}_skilllvl`] = 2;
update[`repeating_skills_${id}_skilltype`] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
} else if((v[`checkboxt${i}`] || "0") == "on") { // Trained
update[`repeating_skills_${id}_skilllvl`] = 1;
update[`repeating_skills_${id}_skilltype`] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
} else { // Untrained
update[`repeating_skills_${id}_skilllvl`] = 0;
update[`repeating_skills_${id}_skilltype`] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
}
update[`repeating_skills_${id}_skillchkdesc`] = 0;
}
}
}
// Attacks / Weapons
for(i=1; i < 10; i++) {
if( (v[`attack${i}`] || "").length ) {
id = generateRowID();
update[`repeating_attacks_${id}_atkname`] = v[`attack${i}`];
update[`repeating_attacks_${id}_atkdmg`] = (parseInt(v[`attackdmg${i}`]) || 0);
update[`repeating_attacks_${id}_weapchkdesc`] = 0;
update[`repeating_attacks_${id}_weapontype`] = `0 • ${update[`repeating_attacks_${id}_atkdmg`]}`;
id = generateRowID();
update[`repeating_atks_${id}_atkname`] = v[`attack${i}`];
update[`repeating_atks_${id}_atkdmg`] = (parseInt(v[`attackdmg${i}`]) || 0);
update[`repeating_atks_${id}_atkchkdesc`] = 0;
update[`repeating_atks_${id}_atktype`] = `${(getTranslationByKey("might-abbreviation") || "-").toUpperCase()} • ${update[`repeating_atks_${id}_atkdmg`]}`;
}
}
// Damage Track
if( (v["debilitated"] || "0") == "on") {
update["damage-track"] = 2;
} else if((v["impared"] || "0") == "on") {
update["damage-track"] = 1;
}
// Recovery
if((v["recovery_10hr"] || "0") == "on") {
update["recovery-rolls"] = 3;
} else if((v["recovery_1hr"] || "0") == "on") {
update["recovery-rolls"] = 2;
} else if((v["recovery_10min"] || "0") == "on") {
update["recovery-rolls"] = 1;
} else if((v["recovery_1action"] || "0") == "on") {
update["recovery-rolls"] = 0;
}
// Misc
update["possessions"] = (v["equipment"] || "");
update["cyphers_misc"] = (v["cyper"] || "");
update["abilities_misc"] = (v["special_abilities"] || "");
// End
update["sheet_style_0"] = 0;
update["sheet_style_1"] = 0;
update["sheet_style_2"] = 1;
update["sheet_style_99"] = 0;
update["sheet_style"] = 2;
update["converted_from"] = "The Strange by Roll20";
setAttrs(update, {silent: true}, () => {
doneupdating();
});
});
};
// === Settings
const update_chartype = function() {
getAttrs(["sheet_style","initname","level","npcbasetn"], (v) => {
if((parseInt(v["sheet_style"]) || 2) == 99) { // NPC
if( ((parseInt(v.level) || 1)*3) != (parseInt(v.npcbasetn) || 0) ) {
setAttrs({"npcbasetn":((parseInt(v.level) || 1)*3)}, {silent: true});
}
} else { // PC
if(v.initname != getTranslationByKey("initiative")) {
setAttrs({"initname":getTranslationByKey("initiative")}, {silent: false}, () => {
update_rolls();
});
} else {
update_rolls();
}
}
});
};
on("change:sheet_style", (e) => {
if('newValue' in e) {
let update = {};
update[`sheet_style_0`] = 0;
update[`sheet_style_1`] = 0;
update[`sheet_style_2`] = 0;
update[`sheet_style_99`] = 0;
update[`sheet_style_${e.newValue}`] = 1;
setAttrs(update, {silent: true}, () => {
update_chartype();
});
}
});
on("change:sheet_rolls change:sheetuseasset change:sheetusebonus change:sheetusecost", () => {
update_rolls();
});
const update_rolls = function() {
// Way of rolling: with action section or questions, with assets, bonus and costs or not
getAttrs(["sheet_rolls","sheetuseasset","sheetusebonus","sheetusecost"], (v) => {
let update = {};
update["rollqstasset"] = 0;
update["rollqstbonus"] = 0;
update["rollqstcost"] = 0;
if((v["sheet_rolls"] || "0") == "1") { // Use roll queries
update["rollqstdiff"] = `?{${getTranslationByKey("difficulty")}|0 - ${getTranslationByKey("none-unknown")},0|1 - ${getTranslationByKey("simple")},1|2 - ${getTranslationByKey("standard")},2|3 - ${getTranslationByKey("demanding")},3|4 - ${getTranslationByKey("difficult")},4|5 - ${getTranslationByKey("challenging")},5|6 - ${getTranslationByKey("intimidating")},6|7 - ${getTranslationByKey("formidable")},7|8 - ${getTranslationByKey("heroic")},8|9 - ${getTranslationByKey("immortal")},9|10 - ${getTranslationByKey("impossible")},10}[${getTranslationByKey("difficulty")}]`;
update["rollqstrolleff"] = `?{${getTranslationByKey("effort-to-roll")}|0|1|2|3|4|5|6}[${getTranslationByKey("roll-effort")}]`;
update["rollqstrolldmg"] = `?{${getTranslationByKey("effort-to-damage")}|0|1|2|3|4|5|6}[${getTranslationByKey("dmg-effort")}]`;
if((v["sheetuseasset"] || "0") == "1") { // Use assets
update["rollqstasset"] = `?{${getTranslationByKey('asset')}|0|1|2}[${getTranslationByKey("asset")}]`;
}
if((v["sheetusebonus"] || "0") == "1") { // Use bonus
update["rollqstbonus"] = `?{${getTranslationByKey('bonus')}|0|1|2|-1|-2}[${getTranslationByKey("bonus")}]`;
}
if((v["sheetusecost"] || "0") == "1") { // Use cost
update["rollqstcost"] = `?{${getTranslationByKey('cost')}|0}[${getTranslationByKey("cost")}]`;
}
} else { // Use action section
update["rollqstdiff"] = `@{rollvardiff}[${getTranslationByKey("difficulty")}]`;
update["rollqstrolleff"] = `@{rollvarrolleff}[${getTranslationByKey("roll-effort")}]`;
update["rollqstrolldmg"] = `@{rollvarrolldmg}[${getTranslationByKey("dmg-effort")}]`;
update["rollqstasset"] = `@{rollvarasset}[${getTranslationByKey("asset")}]`;
update["rollqstbonus"] = `@{rollvarbonus}[${getTranslationByKey("bonus")}]`;
update["rollqstcost"] = `@{rollvarcost}[${getTranslationByKey("cost")}]`;
// Show assets
update["showuseasset"] = (v["sheetuseasset"] || "0");
// Show bonus
update["showusebonus"] = (v["sheetusebonus"] || "0");
// Show cost
update["showusecost"] = (v["sheetusecost"] || "0");
}
setAttrs(update, {silent: true});
});
};
// Sections
on("change:expand_all", (e) => {
let update = {}, val = (e["newValue"] || "0");
update["expand_actiondamage"] = val;
update["expand_attacks"] = val;
update["expand_weapons"] = val;
update["expand_advancement"] = val;
update["expand_cyphers"] = val;
update["expand_equipment"] = val;
update["expand_artifacts"] = val;
update["expand_skills"] = val;
update["expand_abilities"] = val;
update["expand_background"] = val;
setAttrs(update, {silent: true});
});
// Damage track
on("change:might change:speed change:intellect change:specialdamage", (e) => {
getAttrs(["might","speed","intellect","specialdamage"], (v) => {
setAttrs({"damage-track": Math.min(3,
(
(((parseInt(v.might) || 0) <= 0) ? 1 : 0)
+ (((parseInt(v.speed) || 0) <= 0) ? 1 : 0)
+ (((parseInt(v.intellect) || 0) <= 0) ? 1 : 0)
+ (parseInt(v.specialdamage) || 0)
)
)
},{silent: true}
);
});
});
// Actions
on("clicked:rest", () => {
getAttrs(["might_max","speed_max","intellect_max"], (v) => {
let update = {};
update["damage-track"] = 0;
update["specialdamage"] = 0;
update["recovery-rolls"] = 0;
update["might"] = v.might_max;
update["speed"] = v.speed_max;
update["intellect"] = v.intellect_max;
setAttrs(update, {silent: true});
});
});
on("clicked:reset_action", () => {
let update = {};
update["rollvardiff"] = 0;
update["rollvarrolleff"] = 0;
update["rollvarrolldmg"] = 0;
update["rollvarasset"] = 0;
update["rollvarbonus"] = 0;
update["rollvarcost"] = 0;
setAttrs(update, {silent: true});
});
// Skills
on("change:repeating_skills:skillname change:repeating_skills:skillstat change:repeating_skills:skilllvl", (e) => {
getAttrs(["repeating_skills_skillstat","repeating_skills_skilllvl"], (v) => {
let update = {};
update["repeating_skills_skilledge"] = `@{${v.repeating_skills_skillstat}_edge}`;
if(v.repeating_skills_skillstat == "speed") {
update["repeating_skills_skillarmorcost"] = "@{armorspeedcost}";
} else {
update["repeating_skills_skillarmorcost"] = 0;
}
update["repeating_skills_skilltype"] = `${(getTranslationByKey(v.repeating_skills_skillstat + "-abbreviation") || "-").toUpperCase()} • `;
switch ((v["repeating_skills_skilllvl"] || "")) {
case '-1':
update["repeating_skills_skilltype"] += (getTranslationByKey("inability-abbreviation") || "-").toUpperCase();
break;
case '0':
update["repeating_skills_skilltype"] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
break;
case '1':
update["repeating_skills_skilltype"] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
break;
case '2':
update["repeating_skills_skilltype"] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
break;
default:
update["repeating_skills_skilltype"] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
}
setAttrs(update, {silent: true});
});
});
// Initiative
on("change:initname change:initstat change:initlvl", (e) => {
getAttrs(["initstat","initlvl"], (v) => {
let update = {};
update["initedge"] = `@{${v.initstat}_edge}`;
update["inittype"] = `${(getTranslationByKey(v.initstat + "-abbreviation") || "-").toUpperCase()} • `;
if(v.initstat == "speed") {
update["initarmorcost"] = "@{armorspeedcost}";
} else {
update["initarmorcost"] = 0;
}
switch ((v["initlvl"] || "")) {
case '-1':
update["inittype"] += (getTranslationByKey("inability-abbreviation") || "-").toUpperCase();
break;
case '0':
update["inittype"] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
break;
case '1':
update["inittype"] += (getTranslationByKey("trained-abbreviation") || "-").toUpperCase();
break;
case '2':
update["inittype"] += (getTranslationByKey("specialized-abbreviation") || "-").toUpperCase();
break;
default:
update["inittype"] += (getTranslationByKey("untrained-abbreviation") || "-").toUpperCase();
}
setAttrs(update, {silent: true});
});
});
// Special abilities
on("change:repeating_abilities:abilityname change:repeating_abilities:abilityuse", (e) => {
getAttrs(["repeating_abilities_abilityuse"], (v) => {
let update = {};
update["repeating_abilities_abtype"] = (getTranslationByKey(v["repeating_abilities_abilityuse"] + "-abbreviation") || "-").toUpperCase();
setAttrs(update, {silent: true});
});
});
// Attacks
on("change:repeating_atks:atkname change:repeating_atks:atkstat change:repeating_atks:atklvl change:repeating_atks:atkmod change:repeating_atks:atkdmg", (e) => {
getAttrs(["repeating_atks_atkstat","repeating_atks_atkmod","repeating_atks_atkdmg","repeating_atks_atklvl","sheet_rolls"], (v) => {
let update = {};
update["repeating_atks_atkedge"] = `@{${v.repeating_atks_atkstat}_edge}`;
if(v.repeating_atks_atkstat == "speed") {
update["repeating_atks_atkarmorcost"] = "@{armorspeedcost}";
} else {
update["repeating_atks_atkarmorcost"] = 0;
}
update["repeating_atks_atktype"] = `${(getTranslationByKey(v.repeating_atks_atkstat + "-abbreviation") || "-").toUpperCase()} • `;
update["repeating_atks_atktype"] += (v.repeating_atks_atkdmg || "0");
setAttrs(update, {silent: true});
});
});
// Weapons
on("change:repeating_attacks:atkname change:repeating_attacks:atkmod change:repeating_attacks:atkdmg", (e) => {
getAttrs(["repeating_attacks_atkmod","repeating_attacks_atkdmg"], (v) => {
setAttrs({"repeating_attacks_weapontype": v.repeating_attacks_atkmod + " • " + v.repeating_attacks_atkdmg}, {silent: true});
});
});
// NPC
on("change:level", (e) => {
if('newValue' in e) {
setAttrs({"npcbasetn":((parseInt(e.newValue) || 1)*3)}, {silent: true});
}
});
</script>