Files
roll20-character-sheets/Cypher Systems Official/cypher_systems_by_roll20.html
T

1863 lines
137 KiB
HTML

<input name="attr_version" type="hidden" value="2.2"/>
<input class="hidden settings-show" checked="checked" name="attr_settings_show" type="checkbox" value="1"/>
<div class="settings">
<input class="pseudocheck close" checked="checked" data-i18n-title="show-hide-settings" name="attr_settings_show" title="Show / Hide Settings" type="checkbox" value="1"/><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 name="attr_sheet_style" type="radio" value="0"/><span>Cypher System</span>
</label>
<label class="labelcheck" title="Numenéra">
<input name="attr_sheet_style" type="radio" value="1"/><span>Numenéra</span>
</label>
<label class="labelcheck" title="The Strange">
<input checked="checked" name="attr_sheet_style" type="radio" value="2"/><span>The Strange</span>
</label>
<label class="labelcheck" data-i18n-title="npc" title="NPC">
<input name="attr_sheet_style" type="radio" 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 name="attr_sheet_font_easy" type="checkbox" value="font-easy"/><span data-i18n="simple-font">Simple Font</span>
</label>
<label class="labelcheck" data-i18n-title="limit-subsection-height" title="Simple Font">
<input name="attr_sheet_subsection_height" type="checkbox" value="1"/><span data-i18n="limit-subsection-height">Simple Font</span>
</label><span class="title" data-i18n="background:">Background:</span>
<label class="labelcheck" data-i18n-title="solid-color" title="Solid color">
<input name="attr_sheet_background" type="radio" value="0"/><span data-i18n="solid-color">Solid color</span>
</label>
<label class="labelcheck" data-i18n-title="image" title="Image">
<input checked="checked" name="attr_sheet_background" type="radio" value="1"/><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 name="attr_sheet_rolls" type="radio" 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 checked="checked" name="attr_sheet_rolls" type="radio" value="1"/><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 name="attr_sheetuseasset" type="checkbox" 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 name="attr_sheetusebonus" type="checkbox" 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 name="attr_sheetusecost" type="checkbox" value="1"/><span data-i18n="costs">Costs</span>
</label><span class="title" data-i18n="initiative:">Initiative:</span>
<label class="labelcheck" data-i18n-title="Beats Difficulty (d20 to tracker)" title="Beats Difficulty (d20 to tracker)">
<input checked="checked" name="attr_sheet_roll_initiative" type="radio" value="0"/><span data-i18n="Beats Difficulty (d20 to tracker)">Beats Difficulty (d20 to tracker)</span>
</label>
<label class="labelcheck" data-i18n-title="d20+training, effort &amp; bonuses to tracker" title="d20+training, effort &amp; bonuses to tracker">
<input name="attr_sheet_roll_initiative" type="radio" value="1"/><span data-i18n="d20+training, effort &amp; bonuses to tracker">d20+training, effort & bonuses to tracker</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 name="attr_sheetuseapi" type="checkbox" value="[[1]]"/><span data-i18n="use-api">API buttons</span>
</label>
</div>
</div>
<div class="version"><span data-i18n="version">Version</span>&nbsp;<span name="attr_version"></span></div>
</div>
<div class="sheets">
<input class="hidden easy-font" name="attr_sheet_font_easy" type="checkbox" value="font-easy"/>
<input class="hidden stl-cypher" name="attr_sheet_style_0" type="checkbox" value="1"/>
<input class="hidden stl-numenera" name="attr_sheet_style_1" type="checkbox" value="1"/>
<input class="hidden stl-strange" checked="checked" name="attr_sheet_style_2" type="checkbox" value="1"/>
<input class="hidden stl-npc" name="attr_sheet_style_99" type="checkbox" value="1"/>
<input class="hidden useaction" checked="checked" name="attr_sheet_rolls" type="checkbox" value="1"/>
<input class="hidden" name="attr_sheetuseapi" type="checkbox" value="[[1]]"/>
<input class="hidden imgbg" checked="checked" name="attr_sheet_background" type="checkbox" value="1"/>
<input class="hidden useasset" name="attr_showuseasset" type="checkbox" value="1"/>
<input class="hidden usebonus" name="attr_showusebonus" type="checkbox" value="1"/>
<input class="hidden usecost" name="attr_showusecost" type="checkbox" value="1"/>
<input class="hidden subsection-height" name="attr_sheet_subsection_height" type="checkbox" value="1"/>
<!-- PC SHEET-->
<div class="pc">
<!--left column-->
<div class="mycol leftcol">
<!-- IDENTITY-->
<div class="ablock identity">
<label class="title"><span></span>
<input class="clearbg name" type="text" name="attr_character_name" spellcheck="false" data-i18n-placeholder="name" placeholder="name" title="@{character_name}"/>
</label>
<label class="title"><span data-i18n="is-a">is a</span>
<input class="clearbg descriptor" type="text" name="attr_descriptor" spellcheck="false" data-i18n-placeholder="descriptor" placeholder="descriptor" title="@{descriptor}"/>
<input class="clearbg type" type="text" name="attr_type" spellcheck="false" data-i18n-placeholder="type" placeholder="type" title="@{type}"/>
</label>
<label class="title"><span data-i18n="who">who</span>
<input class="clearbg name" type="text" name="attr_focus" spellcheck="false" data-i18n-placeholder="focus" placeholder="focus" title="@{focus}"/>
</label>
</div>
<!-- PC STATS-->
<div class="ablock stats">
<!-- Might-->
<div class="subblock">
<button class="myrol rollsmall" type="roll" name="RollMight" data-i18n-title="click-to-roll" title="Click to Roll" value="&amp;{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=might}} {{d20roll=[[1d20cs&gt;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 class="nospin notable" type="number" name="attr_might" min="0" value="11" 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 class="nospin" type="number" name="attr_might_max" min="0" value="11" title="@{might_max}"/>
</div>
<div class="subborder left"></div>
<div class="colblock"><span class="subtitle bold" data-i18n="edge">edge</span>
<input class="nospin" type="number" name="attr_might_edge" value="1" min="-6" max="6" title="@{might_edge}"/>
</div>
</div>
</div>
</div>
<!-- Speed-->
<div class="subblock">
<button class="myrol rollsmall" type="roll" name="RollSpeed" data-i18n-title="click-to-roll" title="Click to Roll" value="&amp;{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=speed}} {{d20roll=[[1d20cs&gt;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))+@{rollqstcost}-@{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 class="nospin notable" type="number" name="attr_speed" min="0" value="10" 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 class="nospin" type="number" name="attr_speed_max" min="0" value="11" title="@{speed_max}"/>
</div>
<div class="subborder left"></div>
<div class="colblock"><span class="subtitle bold" data-i18n="edge">edge</span>
<input class="nospin" type="number" name="attr_speed_edge" value="1" min="-6" max="6" title="@{speed_edge}"/>
</div>
</div>
</div>
</div>
<!-- Intellect-->
<div class="subblock">
<button class="myrol rollsmall" type="roll" name="RollIntellect" data-i18n-title="click-to-roll" title="Click to Roll" value="&amp;{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{stat=intellect}} {{d20roll=[[1d20cs&gt;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 speed center">
<div class="colblock">
<input class="nospin notable" type="number" name="attr_intellect" min="0" value="10" 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 class="nospin" type="number" name="attr_intellect_max" min="0" value="11" title="@{intellect_max}"/>
</div>
<div class="subborder left"></div>
<div class="colblock"><span class="subtitle bold" data-i18n="edge">edge</span>
<input class="nospin" type="number" name="attr_intellect_edge" value="1" min="-6" max="6" title="@{intellect_edge}"/>
</div>
</div>
</div>
</div>
</div>
<!-- SKILLS & INITIATIVE-->
<div class="ablock skills">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_skills" value="1" 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 class="hidden hide" type="checkbox" name="attr_initchkdesc" value="1"/>
<!-- Initiative-->
<div class="line">
<input type="hidden" name="attr_roll_initiative" value="&amp;{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&gt;17cf1 + @{rollqstbonus} &amp;{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}]]}}"/>
<button class="myrol roll" type="roll" name="rollInitiative" data-i18n-title="click-to-roll" title="Click to roll" value="@{roll_initiative}"><span class="subtitle"></span></button>
<button class="myrol show" type="roll" name="showInitiative" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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=&amp;nbsp;@{initdesc}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_initname" value="Initiative" spellcheck="false" title="@{initname}" data-i18n-placeholder="skill" placeholder="Skill" readonly="readonly"/>
<input type="hidden" name="attr_inittype" value="- • -"/><span class="lbl" name="attr_inittype" 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>
<!-- skills-->
<fieldset class="repeating_skills">
<input class="hidden hide" type="checkbox" name="attr_skillchkdesc" value="1" checked="checked"/>
<div class="line">
<button class="myrol roll" type="roll" name="rollskill" data-i18n-title="click-to-roll" title="Click to roll" value="&amp;{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&gt;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 class="myrol show" type="roll" name="showskill" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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=&amp;nbsp;@{skilldesc}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_skillname" spellcheck="false" title="@{repeating_skills_$ID_skillname}" data-i18n-placeholder="skill" placeholder="Skill"/>
<input type="hidden" name="attr_skilltype" value="- • -"/><span class="lbl" name="attr_skilltype" 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"/><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="@{intellect_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" 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="@{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>
</div>
</div>
</div>
<!-- SPECIAL ABILITIES-->
<div class="ablock abilities">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_abilities" value="1" 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 class="hidden hide" type="checkbox" name="attr_abilitychkdesc" value="1" checked="checked"/>
<div class="line">
<button class="myrol show" type="roll" name="showability" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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}
&amp;nbsp;@{abilitydesc}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_abilityname" spellcheck="false" title="@{repeating_abilities_$ID_abilityname}" data-i18n-placeholder="ability" placeholder="Ability"/>
<input type="hidden" name="attr_abtype" value="-"/><span class="lbl" name="attr_abtype" 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 class="nospin" type="number" name="attr_abilitycost" min="0" value="0" 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>
<!-- BACKGROUND-->
<div class="ablock">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_background" value="1" data-i18n-title="click-expand" title="Click to expand or reduce this section"/><span></span>
<div class="subblock wide">
<button class="myrol" type="roll" name="ShowBackground" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{template:cyphsys} {{sheetstyle=@{sheet_style}}} {{fontstyle=@{sheet_font_easy}}} {{charname=@{character_name}}} {{charid=@{character_id}}} {{dmgtrack=[[@{damage-track}]]}} {{useapi=[[@{sheetuseapi}]]}} {{name=^{background}}} {{description=&amp;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>
</div>
<div class="mycol midcol">
<!-- Logo-->
<div class="ablock logo">
<input class="pseudocheck showsettings" type="checkbox" name="attr_settings_show" data-i18n-title="show-hide-settings" title="Show / Hide Settings" value="1" checked="checked"/><span></span>
<input class="pseudocheck expand" type="checkbox" name="attr_expand_all" value="1" data-i18n-title="click-expand-all" title="Click to expand or reduce all sections"/><span></span>
</div>
<!-- ACTIONS and TRACKS-->
<div class="ablock">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_actiondamage" value="1" data-i18n-title="click-expand" title="Click to expand or reduce this section"/><span></span>
<div class="sublock wide"><span class="title dotted" data-i18n="damage-track">damage track</span>
<!--DAMAGE TRACK-->
<div class="inblock small">
<div class="line wrap">
<label class="labelcheck" title="@{damage-track}">
<input checked="checked" type="radio" name="attr_damage-track" value="0"/><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 class="lightborder" type="number" name="attr_specialdamage" value="0" min="0" max="3" title="@{specialdamage}"/>
</label>
<button class="myrol rest" type="action" 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>
<!-- ACTION-->
<div class="useaction topmarg1"><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 class="lightborder" name="attr_rollvardiff" title="@{rollvardiff}">
<option value="0" SELECTED="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 data-i18n-title="effort-lower-diff" title="Effort to lower DIFFICULTY"><span class="subtitle" data-i18n="roll-eff">ROLL EFF.</span>
<select class="lightborder" name="attr_rollvarrolleff" title="@{rollvarrolleff}">
<option value="0" SELECTED="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 data-i18n-title="effort-increase-damage" title="Effort to increase DAMAGE"><span class="subtitle" data-i18n="dmg-eff">DMG EFF.</span>
<select class="lightborder" name="attr_rollvarrolldmg" title="@{rollvarrolldmg}">
<option value="0" SELECTED="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 class="lightborder" name="attr_rollvarasset" title="@{rollvarasset}">
<option value="0" SELECTED="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 class="lightborder" name="attr_rollvarbonus" title="@{rollvarbonus}">
<option value="-2">-2</option>
<option value="-1">-1</option>
<option value="0" SELECTED="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 class="lightborder" name="attr_rollvarcost" title="@{rollvarcost}">
<option value="0" SELECTED="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 class="myrol reset" type="action" 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>
</div>
</div>
<!-- ATTACKS-->
<div class="ablock">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_attacks" value="1" 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 class="hidden hide" type="checkbox" name="attr_atkchkdesc" value="1" checked="checked"/>
<div class="line">
<button class="myrol roll" type="roll" name="rollatk" data-i18n-title="click-to-roll" title="Click to roll" value="&amp;{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&gt;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 class="myrol show" type="roll" name="showatk" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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=**^{distance}: **@{distance}
**^{mod}:**@{atkmod} **^{damage}:**@{atkdmg} **^{cost}:**@{atkcost}
&amp;nbsp;@{atkdesc}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_atkname" spellcheck="false" title="@{repeating_atks_$ID_atkname}" data-i18n-placeholder="attack" placeholder="Attack"/>
<input type="hidden" name="attr_atktype" value="- • -"/><span class="lbl" name="attr_atktype" 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 class="nospin" type="number" name="attr_atkmod" min="0" value="0" title="@{repeating_atks_$ID_atkmod}"/>
</label>
<label class="inlcontent" data-i18n-title="damage" title="damage"><span class="lbl" data-i18n="damage">damage</span>
<input class="nospin" type="number" name="attr_atkdmg" min="0" value="0" 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 class="nospin" type="number" name="attr_atkcost" min="0" value="0" title="@{repeating_atks_$ID_atkcost}"/>
</label>
<label class="inlcontent" data-i18n-title="distance" title="distance"><span class="lbl" data-i18n="distance">distance</span>
<select name="attr_distance" title="@{repeating_atks_$ID_distance}">
<option value="Immediate" data-i18n="immediate" selected="selected">Immediate</option>
<option value="Short" data-i18n="short">Short</option>
<option value="Long" data-i18n="long">Long</option>
<option value="Very Long" data-i18n="very-long">Very Long</option>
</select>
</label>
<div class="autoex" title="@{repeating_atks_$ID_atkdesc}"><span name="attr_atkdesc"></span>
<textarea name="attr_atkdesc" spellcheck="false" data-i18n-title="Attack description" title="Attack description" data-i18n-placeholder="description" placeholder="Description"></textarea>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<!-- WEAPONS-->
<div class="ablock weapons">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_weapons" value="1" 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 class="hidden hide" type="checkbox" name="attr_weapchkdesc" value="1" checked="checked"/>
<div class="line">
<button class="myrol show" type="roll" name="showweapon" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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}
&amp;nbsp;@{atkdesc}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_atkname" spellcheck="false" title="@{repeating_attacks_$ID_atkname}" data-i18n-placeholder="weapon" placeholder="Weapon"/>
<input type="hidden" name="attr_weapontype" value="0 • 0"/><span class="lbl" name="attr_weapontype" 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 class="nospin" type="number" name="attr_atkmod" min="0" value="0" title="@{repeating_attacks_$ID_atkmod}"/>
</label>
<label class="inlcontent" data-i18n-title="damage" title="damage"><span class="lbl" data-i18n="damage">damage</span>
<input class="nospin" type="number" name="attr_atkdmg" min="0" value="0" title="@{repeating_attacks_$ID_atkdmg}"/>
</label>
<label class="inlcontent" data-i18n-title="ammunition" title="ammunition"><span class="lbl" data-i18n="ammunition">ammunition</span>
<input type="number" name="attr_ammunition" min="0" value="0" title="@{repeating_attacks_$ID_ammunition}"/>
<input class="grow" type="text" name="attr_ammotype" spellcheck="false" title="@{repeating_attacks_$ID_ammotype}" data-i18n-placeholder="ammotype" placeholder="Ammunition Type"/>
</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>
<!-- ADVANCEMENT-->
<div class="ablock advancement">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_advancement" value="1" 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 class="medium lightborder" type="text" name="attr_adv-tiers1-1" spellcheck="false" data-i18n-placeholder="tier-1-adv-1" placeholder="Tier 1 Adv. #1"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers1-2" spellcheck="false" data-i18n-placeholder="tier-1-adv-2" placeholder="Tier 1 Adv. #2"/>
</div>
<div class="line">
<input class="medium lightborder" type="text" name="attr_adv-tiers1-3" spellcheck="false" data-i18n-placeholder="tier-1-adv-3" placeholder="Tier 1 Adv. #3"/>
<input class="medium lightborder" type="text" 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 class="medium lightborder" type="text" name="attr_adv-tiers2-1" spellcheck="false" data-i18n-placeholder="tier-2-adv-1" placeholder="Tier 2 Adv. #1"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers2-2" spellcheck="false" data-i18n-placeholder="tier-2-adv-2" placeholder="Tier 2 Adv. #2"/>
</div>
<div class="line">
<input class="medium lightborder" type="text" name="attr_adv-tiers2-3" spellcheck="false" data-i18n-placeholder="tier-2-adv-3" placeholder="Tier 2 Adv. #3"/>
<input class="medium lightborder" type="text" 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 class="medium lightborder" type="text" name="attr_adv-tiers3-1" spellcheck="false" data-i18n-placeholder="tier-3-adv-1" placeholder="Tier 3 Adv. #1"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers3-2" spellcheck="false" data-i18n-placeholder="tier-3-adv-2" placeholder="Tier 3 Adv. #2"/>
</div>
<div class="line">
<input class="medium lightborder" type="text" name="attr_adv-tiers3-3" spellcheck="false" data-i18n-placeholder="tier-3-adv-3" placeholder="Tier 3 Adv. #3"/>
<input class="medium lightborder" type="text" 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 class="medium lightborder" type="text" name="attr_adv-tiers4-1" spellcheck="false" data-i18n-placeholder="tier-4-adv-1" placeholder="Tier 4 Adv. #1"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers4-2" spellcheck="false" data-i18n-placeholder="tier-4-adv-2" placeholder="Tier 4 Adv. #2"/>
</div>
<div class="line">
<input class="medium lightborder" type="text" name="attr_adv-tiers4-3" spellcheck="false" data-i18n-placeholder="tier-4-adv-3" placeholder="Tier 4 Adv. #3"/>
<input class="medium lightborder" type="text" 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 class="medium lightborder" type="text" name="attr_adv-tiers5-1" spellcheck="false" data-i18n-placeholder="tier-5-adv-1" placeholder="Tier 5 Adv. #1"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers5-2" spellcheck="false" data-i18n-placeholder="tier-5-adv-2" placeholder="Tier 5 Adv. #2"/>
</div>
<div class="line">
<input class="medium lightborder" type="text" name="attr_adv-tiers5-3" spellcheck="false" data-i18n-placeholder="tier-5-adv-3" placeholder="Tier 5 Adv. #3"/>
<input class="medium lightborder" type="text" 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 class="medium lightborder" type="text" name="attr_adv-tiers6-1" spellcheck="false" data-i18n-placeholder="tier-6-adv-1" placeholder="Tier 6 Adv. #1"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers6-2" spellcheck="false" data-i18n-placeholder="tier-6-adv-2" placeholder="Tier 6 Adv. #2"/>
</div>
<div class="line">
<input class="medium lightborder" type="text" name="attr_adv-tiers6-3" spellcheck="false" data-i18n-placeholder="tier-6-adv-3" placeholder="Tier 6 Adv. #3"/>
<input class="medium lightborder" type="text" name="attr_adv-tiers6-4" spellcheck="false" data-i18n-placeholder="tier-6-adv-4" placeholder="Tier 6 Adv. #4"/>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mycol rightcol">
<!-- TIERS EFFORT XP-->
<div class="ablock tierseffortxp">
<div class="title">
<div class="circle one">
<input class="nospin" type="number" name="attr_tier" min="1" value="1" title="@{tier}"/>
</div><span data-i18n="tier">tier</span>
</div>
<div class="title">
<div class="circle one">
<input class="nospin" type="number" name="attr_effort" min="1" value="1" title="@{effort}"/>
</div><span data-i18n="effort">effort</span>
</div>
<div class="title">
<div class="circle one">
<input class="nospin" type="number" name="attr_xp" min="0" value="0" title="@{xp}"/>
</div><span data-i18n="xp">xp</span>
</div>
</div>
<!-- RECOVERY-->
<div class="ablock recovery">
<div class="subblock wide">
<button class="myrol rollsmall" type="roll" name="RollRecovery" data-i18n-title="recovery-roll" title="Recovery Roll" value="&amp;{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 class="nospin" type="number" name="attr_recoverybonus" min="1" value="1" 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>
<!-- CYPHERS-->
<div class="ablock cyphers">
<div class="floattopleft">
<div class="circle small orange">
<input class="nospin" type="number" name="attr_cypher-limit" min="0" value="2" title="@{cypher-limit}"/>
</div>
<div class="floatlow"><span class="subtitle bold whiteshadow" data-i18n="limit">limit</span></div>
</div>
<input class="pseudocheck expand" type="checkbox" name="attr_expand_cyphers" value="1" 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 class="hidden hide" type="checkbox" name="attr_cypher-chkdesc" value="1" checked="checked"/>
<div class="line">
<button class="myrol show" type="roll" name="showCypher" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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}]])
&amp;nbsp;@{cypher-description}}}{{used=[[@{cypher-used}]]}}"><span class="subtitle"></span></button>
<input class="hidden used" type="checkbox" name="attr_cypher-used" value="1"/>
<input class="lightborder grow used" type="text" name="attr_cypher-name" spellcheck="false" 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 class="xsmall lightborder center" type="text" name="attr_cypher-level" spellcheck="false" 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="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>
<!-- EQUIPMENT-->
<div class="ablock">
<div class="floattopleft">
<div class="circle small orange">
<input class="nospin" type="number" name="attr_armor" min="0" value="0" title="@{armor}"/>
</div>
<div class="floatlow"><span class="subtitle bold whiteshadow" data-i18n="armor">armor</span></div>
</div>
<input class="pseudocheck expand" type="checkbox" name="attr_expand_equipment" value="1" 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 class="nospin lightborder" type="number" name="attr_armorspeedcost" value="0" min="0" max="3" 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 class="small lightborder" type="text" name="attr_shins" value="0" style="text-align: right;" spellcheck="false"/>
</label>
</div>
<div class="line left topmarg1"><span class="subtitle bold" data-i18n="items:">items:</span></div>
<!--ITEMS-->
<fieldset class="repeating_equipment-list">
<div class="line">
<button class="myrol show" type="roll" name="showitem" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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=&amp;nbsp;@{equipment-name}
**^{quantity-short}**: @{equipment-qty}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_equipment-name" spellcheck="false" 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 class="lightborder" type="number" name="attr_equipment-qty" spellcheck="false" min="0" value="1"/>
</label>
</div>
</fieldset>
<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>
<!-- ARTIFACTS-->
<div class="ablock">
<input class="pseudocheck expand" type="checkbox" name="attr_expand_artifacts" value="1" 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 class="hidden hide" type="checkbox" name="attr_artifactchkdesc" value="1" checked="checked"/>
<div class="line">
<button class="myrol depletion" type="roll" name="rollArtifactDepletion" data-i18n-title="depletion-roll" title="Depletion roll" value="&amp;{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&lt;@{artdepthreshold}]]}} {{thresholddesc=@{artdepthreshold} ^{depletion-in} @{artdepdice}}} {{threshold=[[@{artdepthreshold}]]}}"><span class="subtitle"></span></button>
<button class="myrol show" type="roll" name="showArtifact" data-i18n-title="click-to-show" title="Click to Show content in chat" value="&amp;{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}]])
**^{depletion}**: @{artdepthreshold} ^{depletion-in} @{artdepdice}
&amp;nbsp;@{artifact-description}}}"><span class="subtitle"></span></button>
<input class="lightborder grow" type="text" name="attr_artifact-name" spellcheck="false" 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 class="xsmall lightborder center" type="text" name="attr_artifact-level" spellcheck="false" 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 class="nospin" type="number" name="attr_artdepthreshold" value="1" min="0" max="99"/>
</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>
</div>
</div>
<!-- NPC SHEET-->
<!-- NPC SHEET-->
<div class="npc">
<div class="2colrow">
<!-- Column 1-->
<div class="col">
<div class="line">
<label><span class="lab" data-i18n="name">Name</span>
<input class="grow" name="attr_character_name" spellcheck="false" type="text"/>
</label>
<label data-i18n-title="level" title="Level"><span class="lab" data-i18n="level">Level</span>
<input type="number" name="attr_level" value="1"/>&nbsp;(<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"/>&nbsp;/&nbsp;
<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>&nbsp;
<label data-i18n-title="movement" title="Movement"><span class="lab" data-i18n="movement">Movement</span>
<input class="grow" data-i18n-placeholder="short" name="attr_npcmovement" placeholder="short" spellcheck="false" type="text"/>
</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 class="grow" type="text" name="attr_npcmods-name" value="" spellcheck="false" 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>
<!-- Column 2-->
<div class="col">
<input class="pseudocheck showsettings" checked="checked" data-i18n-title="show-hide-settings" name="attr_settings_show" title="Show / Hide Settings" type="checkbox" value="1"/><span></span><span class="lab" data-i18n="motive">Motive</span>
<div class="line autoex"><span name="attr_npcmotive"></span>
<textarea data-i18n-title="motive" name="attr_npcmotive" spellcheck="false" title="Motive"></textarea>
</div><span class="lab" data-i18n="environment">Environment</span>
<div class="line autoex"><span name="attr_npcenvironment"></span>
<textarea data-i18n-title="environment" name="attr_npcenvironment" spellcheck="false" title="environment"></textarea>
</div><span class="lab" data-i18n="interaction">interaction</span>
<div class="line autoex"><span name="attr_npcinteraction"></span>
<textarea data-i18n-title="interaction" name="attr_npcinteraction" spellcheck="false" title="interaction"></textarea>
</div><span class="lab" data-i18n="use">use</span>
<div class="line autoex"><span name="attr_npcuse"></span>
<textarea data-i18n-title="use" name="attr_npcuse" spellcheck="false" title="use"></textarea>
</div><span class="lab" data-i18n="loot">loot</span>
<div class="line autoex"><span name="attr_npcloot"></span>
<textarea data-i18n-title="loot" name="attr_npcloot" spellcheck="false" title="loot"></textarea>
</div><span class="lab" data-i18n="description">description</span>
<div class="line autoex"><span name="attr_npcdescription"></span>
<textarea data-i18n-title="description" name="attr_npcdescription" spellcheck="false" title="description"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="copyright">&copy;2019-2021 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.&nbsp;v<span name="attr_version"></span></div>
<!-- HIDDEN Rolls and Calculations-->
<!-- Using questions-->
<input name="attr_rollqstdiff" type="hidden" value="@{rollvardiff}[Difficulty]"/>
<input name="attr_rollqstrolleff" type="hidden" value="@{rollvarrolleff}[Roll Effort]"/>
<input name="attr_rollqstrolldmg" type="hidden" value="@{rollvarrolldmg}[Damage Effort]"/>
<input name="attr_rollqstasset" type="hidden" value="@{rollvarasset}[Asset]"/>
<input name="attr_rollqstbonus" type="hidden" value="@{rollvarbonus}[Bonus]"/>
<input name="attr_rollqstcost" type="hidden" value="@{rollvarcost}[Misc Cost]"/>
<!-- Game settings-->
<input name="attr_gnlsettings_sheet_style" type="hidden" value="2"/>
<input name="attr_gnlsettings_sheet_rolls" type="hidden" value="1"/>
<input name="attr_gnlsettings_sheetuseasset" type="hidden" value="0"/>
<input name="attr_gnlsettings_sheetusebonus" type="hidden" value="0"/>
<input name="attr_gnlsettings_sheetusecost" type="hidden" value="0"/>
<input name="attr_gnlsettings_sheetuseapi" type="hidden" value="0"/>
<!-- Misc-->
<input name="attr_converted_from" type="hidden" value="none"/><!-- 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>
<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}}
{{#rollBetween() d20roll 21 23}}
<span class="pseudoroll">7</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">21</span>)</span>
{{/rollBetween() d20roll 21 23}}
{{#rollBetween() d20roll 24 26}}
<span class="pseudoroll">8</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">24</span>)</span>
{{/rollBetween() d20roll 24 26}}
{{#rollBetween() d20roll 27 29}}
<span class="pseudoroll">9</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">27</span>)</span>
{{/rollBetween() d20roll 27 29}}
{{#rollBetween() d20roll 30 32}}
<span class="pseudoroll">10</span></span> <span>(<span data-i18n="target-number-short">TN</span> <span class="pseudoroll">30</span>)</span>
{{/rollBetween() d20roll 30 32}}
</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 -->
<!-- SHEET WORKERS-->
<script type="text/worker">
// === Opening, version and translation
on("sheet:opened", () => {
versioning();
});
// Version handling
const versioning = function() {
let version = 2.2;
getAttrs(["version","character_name"], (version_value) => {
const vrs = parseFloat(version_value.version || "0.0");
if (vrs == version) {
console.log(`%c Cypher Systems by Roll20 v${vrs} - Opening character "${version_value.character_name}"`, "color:purple;font-size:14px;");
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"], (values) => {
let update = {};
update.version = "2.0";
update.sheetuseapi = (values.gnlsettings_sheetuseapi || "0");
if((values.converted_from || "none") == "none") {
update.sheet_style = (values.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_${(values.gnlsettings_sheet_style || "2")}`] = 1;
}
if(["Numenéra","The Strange by Roll20","none"].includes((values.converted_from || "none"))) {
update.sheet_rolls = (values.gnlsettings_sheet_rolls || "1");
update.sheetuseasset = (values.gnlsettings_sheetuseasset || "0");
update.showuseasset = (values.gnlsettings_sheetuseasset || "0");
update.sheetusebonus = (values.gnlsettings_sheetusebonus || "0");
update.showusebonus = (values.gnlsettings_sheetusebonus || "0");
update.sheetusecost = (values.gnlsettings_sheetusecost || "0");
update.showusecost = (values.gnlsettings_sheetusecost || "0");
}
setAttrs(update, {silent: true}, () => {
versioning();
});
});
});
} else {
setAttrs({"version": version}, {silent: true}, () => {
versioning();
});
}
});
};
const check_for_conversion = function(doneupdating) {
console.log("%c Cypher Systems by Roll20: Checking for conversion", "color:purple;font-size:14px;");
getAttrs(["mightpool","cyphers","cyper","mightedge","speededge","intellectedge","npcbasediff"], (values) => {
if((typeof values.mightpool !== "undefined") && (typeof values.cyphers !== "undefined")) {
// Convert from Numenéra
convert_from_numenera(doneupdating);
} else if((typeof values.mightpool !== "undefined") && (typeof values.cyper !== "undefined")) {
// Convert from The Strange
convert_from_thestrange(doneupdating);
} else if(
(typeof values.mightedge !== "undefined")
|| (typeof values.speededge !== "undefined")
|| (typeof values.intellectedge !== "undefined")
|| (typeof values.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("%c Cypher Systems by Roll20: converting from community Cypher System sheet...", "color:purple;font-size:14px;");
let fields = ["sheetstyle","level","sheetRolls","initvarskill"];
statids = {};
// Get all repeating sections skills
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, (values) => {
let update = {};
// Sheet style
update.sheet_style = (values.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_${(values.sheetstyle || "0")}`] = 1;
if(update.sheet_style == "99") { // NPC
update.npcbasetn = (parseInt(values.level) || 0)*3;
update.settings_show = 0;
} else { // PC
update.sheet_rolls = (typeof values.sheetrolls === "undefined") ? "1" : "0";
_.each(["speed","might","intel"], (stat) => {
let fstat;
fstat = (stat == "intel") ? "intellect" : stat;
// Initiative
update.initlvl = (values.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("%c Cypher Systems by Roll20: converting from Numenéra sheet...", "color:purple;font-size:14px;");
let fields = ["10hours","10minutes","1action","1hour","cyphers","disabled","impaired","intellectpool","intellectpoolmax","mightpool","mightpoolmax","speedpool","speedpoolmax","artifactsandoddities"];
// Get all repeating sections skills
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, (values) => {
let update = {};
// Stats
update.might = parseInt((values.mightpool || "").replace(/[^\d]/,'','gi') || 0);
update.might_max = parseInt((values.mightpoolmax || "").replace(/[^\d]/,'','gi') || 0);
update.speed = parseInt((values.speedpool || "").replace(/[^\d]/,'','gi') || 0);
update.speed_max = parseInt((values.speedpoolmax || "").replace(/[^\d]/,'','gi') || 0);
update.intellect = parseInt((values.intellectpool || "").replace(/[^\d]/,'','gi') || 0);
update.intellect_max = parseInt((values.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( (values.disabled || "0") == "on") {
update["damage-track"] = 2;
} else if((values.impaired || "0") == "on") {
update["damage-track"] = 1;
}
// Recovery
if((values["10hours"] || "0") == "on") {
update["recovery-rolls"] = 3;
} else if((values["1hour"] || "0") == "on") {
update["recovery-rolls"] = 2;
} else if((values["10minutes"] || "0") == "on") {
update["recovery-rolls"] = 1;
} else if((values["1action"] || "0") == "on") {
update["recovery-rolls"] = 0;
}
// Misc
update.cyphers_misc = (values.cyphers || "");
update.armorspeedcost = (values.armor-speed-reduction || "0").replace(/[^\d]*/,'','gi');
update.artifacts_misc = (values.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("%c Cypher Systems by Roll20: converting from The Strange by Roll20 sheet...", "color:purple;font-size:14px;");
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, (values) => {
let update = {}, id, i=0;
// WIP
// Stats
update.might = parseInt((values.mightpool || "").replace(/[^\d]/,'','gi') || 0);
update.might_max = parseInt((values.mightpoolmax || "").replace(/[^\d]/,'','gi') || 0);
update.speed = parseInt((values.speedpool || "").replace(/[^\d]/,'','gi') || 0);
update.speed_max = parseInt((values.speedpoolmax || "").replace(/[^\d]/,'','gi') || 0);
update.intellect = parseInt((values.intellectpool || "").replace(/[^\d]/,'','gi') || 0);
update.intellect_max = parseInt((values.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( (values.debilitated || "0") == "on") {
update["damage-track"] = 2;
} else if((values.impared || "0") == "on") {
update["damage-track"] = 1;
}
// Recovery
if((values.recovery_10hr || "0") == "on") {
update["recovery-rolls"] = 3;
} else if((values.recovery_1hr || "0") == "on") {
update["recovery-rolls"] = 2;
} else if((values.recovery_10min || "0") == "on") {
update["recovery-rolls"] = 1;
} else if((values.recovery_1action || "0") == "on") {
update["recovery-rolls"] = 0;
}
// Misc
update.possessions = (values.equipment || "");
update.cyphers_misc = (values.cyper || "");
update.abilities_misc = (values.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","character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - Updating CharType for "${values.character_name}"`, "color:purple;font-size:14px;");
if((parseInt(values.sheet_style) || 2) == 99) { // NPC
if( ((parseInt(values.level) || 1)*3) != (parseInt(values.npcbasetn) || 0) ) {
setAttrs({"npcbasetn":((parseInt(values.level) || 1)*3)}, {silent: true});
}
} else { // PC
if(values.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","character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - Updating Rolls for "${values.character_name}"`, "color:purple;font-size:14px;");
let update = {};
update.rollqstasset = 0;
update.rollqstbonus = 0;
update.rollqstcost = 0;
if((values.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((values.sheetuseasset || "0") == "1") { // Use assets
update.rollqstasset = `?{${getTranslationByKey('asset')}|0|1|2}[${getTranslationByKey("asset")}]`;
}
if((values.sheetusebonus || "0") == "1") { // Use bonus
update.rollqstbonus = `?{${getTranslationByKey('bonus')}|0|1|2|-1|-2}[${getTranslationByKey("bonus")}]`;
}
if((values.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 = (values.sheetuseasset || "0");
// Show bonus
update.showusebonus = (values.sheetusebonus || "0");
// Show cost
update.showusecost = (values.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", "character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - Updating Damage Track for "${values.character_name}"`, "color:purple;font-size:14px;");
setAttrs({"damage-track": Math.min(3,
(
(((parseInt(values.might) || 0) <= 0) ? 1 : 0)
+ (((parseInt(values.speed) || 0) <= 0) ? 1 : 0)
+ (((parseInt(values.intellect) || 0) <= 0) ? 1 : 0)
+ (parseInt(values.specialdamage) || 0)
)
)
},{silent: true}
);
});
});
// Actions
on("clicked:rest", () => {
getAttrs(["might_max","speed_max","intellect_max","character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - "${values.character_name}" is resting`, "color:purple;font-size:14px;");
let update = {};
update["damage-track"] = 0;
update.specialdamage = 0;
update["recovery-rolls"] = 0;
update.might = values.might_max;
update.speed = values.speed_max;
update.intellect = values.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", "repeating_skills_skillname", "character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - "${values.character_name}" updates Skill "${values.repeating_skills_skillname}"`, "color:purple;font-size:14px;");
let update = {};
update.repeating_skills_skilledge = `@{${values.repeating_skills_skillstat}_edge}`;
if(values.repeating_skills_skillstat == "speed") {
update.repeating_skills_skillarmorcost = "@{armorspeedcost}";
} else {
update.repeating_skills_skillarmorcost = 0;
}
update.repeating_skills_skilltype = `${(getTranslationByKey(values.repeating_skills_skillstat + "-abbreviation") || "-").toUpperCase()} • `;
switch ((values.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 change:sheet_roll_initiative", (e) => {
getAttrs(["initstat", "initlvl", "character_name", "sheet_roll_initiative"], (values) => {
console.log(`%c Cypher Systems by Roll20 - "${values.character_name}" updates Initiative`, "color:purple;font-size:14px;");
let update = {};
update.initedge = `@{${values.initstat}_edge}`;
update.inittype = `${(getTranslationByKey(values.initstat + "-abbreviation") || "-").toUpperCase()} • `;
if(values.initstat == "speed") {
update.initarmorcost = "@{armorspeedcost}";
} else {
update.initarmorcost = 0;
}
switch ((values.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();
}
// Roll initiative options
if(values.sheet_roll_initiative == "1") {
// D20 + training (to tracker)
update.roll_initiative = "&{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}[bonus] + ((@{initlvl}[Training] + @{rollqstrolleff} + @{rollqstasset})*3) &{tracker}]]}} {{name=@{initname}}} {{type=^{skill}}} {{attredge=[[@{initedge}[Edge]]]}} {{effortroll=[[@{rollqstrolleff}]]}} {{assets=[[@{rollqstasset}]]}} {{bonustoroll=[[@{rollqstbonus}]]}} {{statexpense=[[@{rollqstcost}]]}} {{effortdmg=[[0]]}} {{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]]}}";
} else {
// Beats Difficulty (no tracker)
update.roll_initiative = "&{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}]]}}";
}
setAttrs(update, {silent: true});
});
});
// Special abilities
on("change:repeating_abilities:abilityname change:repeating_abilities:abilityuse", (e) => {
getAttrs(["repeating_abilities_abilityuse", "repeating_abilities_abilityname", "character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - "${values.character_name}" updates Special Ability "${values.repeating_abilities_abilityname}"`, "color:purple;font-size:14px;");
let update = {};
update.repeating_abilities_abtype = (getTranslationByKey(values.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", "repeating_atks_atkname", "sheet_rolls", "character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - "${values.character_name}" updates Attack "${values.repeating_atks_atkname}"`, "color:purple;font-size:14px;");
let update = {};
update.repeating_atks_atkedge = `@{${values.repeating_atks_atkstat}_edge}`;
if(values.repeating_atks_atkstat == "speed") {
update.repeating_atks_atkarmorcost = "@{armorspeedcost}";
} else {
update.repeating_atks_atkarmorcost = 0;
}
update.repeating_atks_atktype = `${(getTranslationByKey(values.repeating_atks_atkstat + "-abbreviation") || "-").toUpperCase()} • `;
update.repeating_atks_atktype += (values.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", "repeating_attacks_atkname", "character_name"], (values) => {
console.log(`%c Cypher Systems by Roll20 - "${values.character_name}" updates Weapon "${values.repeating_attacks_atkname}"`, "color:purple;font-size:14px;");
setAttrs({"repeating_attacks_weapontype": values.repeating_attacks_atkmod + " • " + values.repeating_attacks_atkdmg}, {silent: true});
});
});
// NPC
on("change:level", (e) => {
if('newValue' in e) {
setAttrs({"npcbasetn":((parseInt(e.newValue) || 1)*3)}, {silent: true});
}
});
//# sourceURL=CypherSystemByRoll20.js
</script>