Files
roll20-character-sheets-tester/Pathfinder Second Edition by Roll20/pathfinder2.html
T
2020-03-03 10:29:36 -06:00

7524 lines
568 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- This is the current version of the sheet code-->
<input name="attr_version" type="hidden" value="3.09"/>
<input class="build_message" name="attr_build_message" type="hidden" value=""/>
<div class="build_message">
<div class="build_text"><span name="attr_build_message"></span></div>
</div>
<!-- PRIMARY SHEET DISPLAY-->
<input class="toggles" name="attr_toggles" type="hidden" value="color:default,innate,focus,cantrips,normalspells,"/>
<div class="backdrop">
<div class="container">
<input class="type" name="attr_sheet_type" type="hidden" value="character"/>
<input class="toggles" name="attr_toggles" type="hidden" value="color:default,innate,focus,cantrips,normalspells,"/><div class="pc-info">
<!-- Pathfinder Character Sheet -->
<div class="column">
<img alt="Pathfinder second edition logo" src="https://s3.amazonaws.com/files.d20.io/images/81978424/gPz-jgjL0kKUDQEXUWvgmQ/med.png?1558470838" />
<h1 data-i18n="character_sheet">character sheet</h1>
<div class="character-prof">
<h2 data-i18n="proficiency">proficiency</h2>
<span data-i18n="untrained_0">untrained +0</span>
<span data-i18n="trained_2_level">trained 2+level</span>
<span data-i18n="expert_4_level">expert 4+level</span>
<span data-i18n="master_6_level">master 6+level</span>
<span data-i18n="legendary_8_level">legendary 8+level</span>
</div>
<div class="character-action">
<ul>
<li>
<img alt='single action' src='https://s3.amazonaws.com/files.d20.io/images/86669372/Pcb4lIrqUua7EyhBvSJzDw/med.png' />
<span data-i18n="single_action">single action</span>
</li>
<li>
<img alt='two action' src='https://s3.amazonaws.com/files.d20.io/images/86669374/AmE-4W6wYgfp4NUH0BqteA/med.png'/>
<span data-i18n="two-action">two-action</span>
</li>
<li>
<img alt='three action' src='https://s3.amazonaws.com/files.d20.io/images/86669373/Dt8Pyerm-x0Zz8cfyaikvA/med.png' />
<span data-i18n="three-action">three-action</span>
</li>
<li>
<img alt='free action' src='https://s3.amazonaws.com/files.d20.io/images/86669371/Okaql7KOw8yQ0Hxi5xixIw/med.png' />
<span data-i18n="free_action">free action</span>
</li>
<li>
<img alt='reaaction' src='https://s3.amazonaws.com/files.d20.io/images/86669375/JsOMH8MaMX_8pT0ZYFeSQg/med.png'>
<span data-i18n="reaction">reaction</span>
</li>
</ul>
</div>
</div>
<div class="column">
<div class="character-info">
<label data-i18n-title="character_name" title="character name">
<span data-i18n="character_name">character name</span>
<input data-i18n-placeholder="character_name" name="attr_character_name" placeholder="character name" spellcheck="false" title="@{character_name}" type="text" value="" />
</label>
<label data-i18n-title="ancestry_heritage" title="ancestry and heritage">
<span data-i18n="ancestry_heritage">ancestry and heritage</span>
<input data-i18n-placeholder="ancestry_heritage" name="attr_ancestry_heritage" placeholder="ancestry and heritage" spellcheck="false" title="@{ancestry_heritage}" type="text" value="" />
</label>
<label data-i18n-title="player_name" title="player name">
<span data-i18n="player_name">player name</span>
<input data-i18n-placeholder="player_name" name="attr_player_name" placeholder="player name" spellcheck="false" title="@{player_name}" type="text" value="" />
</label>
<label data-i18n-title="experience_points_xp" title="experienced points">
<span data-i18n="experience_points_xp">experienced points (xp)</span>
<input data-i18n-placeholder="xp" name="attr_xp" placeholder="xp" spellcheck="false" title="@{xp}" type="text" value="" />
</label>
<label data-i18n-title="class" title="class">
<span data-i18n="class">class</span>
<input data-i18n-placeholder="class" name="attr_class" placeholder="class" spellcheck="false" title="@{class}" type="text" value="" />
</label>
<label data-i18n-title="background" title="background">
<span data-i18n="background">background</span>
<input data-i18n-placeholder="background" name="attr_background" placeholder="background" spellcheck="false" title="@{background}" type="text" value="" />
</label>
<label data-i18n-title="size" title="size">
<span data-i18n="size">size</span>
<input data-i18n-placeholder="size" name="attr_size" placeholder="size" spellcheck="false" title="@{size}" type="text" value="" />
</label>
<label data-i18n-title="alignment" title="alignment">
<span data-i18n="alignment">alignment</span>
<input data-i18n-placeholder="alignment" name="attr_alignment" placeholder="alignment" spellcheck="false" title="@{alignment}" type="text" value="" />
</label>
<label data-i18n-title="deity" title="deity">
<span data-i18n="deity">deity</span>
<input data-i18n-placeholder="deity" name="attr_deity" placeholder="deity" spellcheck="false" title="@{deity}" type="text" value="" />
</label>
</div>
</div>
<div class="column">
<label data-i18n-title="level" title="level">
<span data-i18n="level">level</span>
<input data-i18n-placeholder="1" name="attr_level" placeholder="level" spellcheck="false" title="@{level}" type="text" value="1" />
</label>
<label data-i18n-title="hero_points" title="hero points">
<span data-i18n="hero_points">hero points</span>
<input data-i18n-placeholder="0" name="attr_hero_points" placeholder="hero points" spellcheck="false" title="@{hero_points}" type="text" value="" />
</label>
</div>
</div><!--- end CHARACTER INFO at the top --->
<div class="tabs">
<label class="whisper-toggle" data-i18n-title="whisper_rolls_to_gm" title="whisper rolls to gm">
<input name="attr_whispertype" type="checkbox" value="/w gm"/><span class="pictos">q</span>
</label>
<label data-i18n-title="character" title="character">
<input name="attr_sheet_type" type="radio" value="character"/><span data-i18n="character"></span>
</label>
<label data-i18n-title="details" title="details">
<input name="attr_sheet_type" type="radio" value="details"/><span data-i18n="details"></span>
</label>
<label data-i18n-title="feats" title="feats">
<input name="attr_sheet_type" type="radio" value="feats"/><span data-i18n="feats"></span>
</label>
<label data-i18n-title="inventory" title="inventory">
<input name="attr_sheet_type" type="radio" value="inventory"/><span data-i18n="inventory"></span>
</label>
<label data-i18n-title="spells" title="spells">
<input name="attr_sheet_type" type="radio" value="spells"/><span data-i18n="spells"></span>
</label>
<label data-i18n-title="options" title="options">
<input name="attr_sheet_type" type="radio" value="options"/><span data-i18n="options"></span>
</label>
</div>
<!-- NPC SHEET--><div class="npc compendium-drop-target monsters">
<input type="hidden" name="attr_npcdrop_name" accept="Name" />
<input type="hidden" name="attr_npcdrop_uniq" accept="uniqueName" />
<input type="hidden" name="attr_npcdrop_category" accept="Category" />
<input type="hidden" name="attr_npcdrop_data" accept="data" />
<input type="hidden" name="attr_npc_fromcompendium" class="fromcompendium" value="" />
<button class="pictos npc-settings-button settings-button" name="act_toggle_npcsettings" type="action">y</button>
<input class="toggles" name="attr_toggles" type="hidden" value="" />
<div class="npc-settings settings">
<div class="npc-info npc-block">
<label data-i18n-title="character_name" title="character name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="character_name" name="attr_character_name" placeholder="character name" spellcheck="false" title="@{character_name}" type="text" value="" />
</label>
<label data-i18n-title="type" title="type">
<span data-i18n="type">type</span>
<input data-i18n-placeholder="creature" name="attr_npc_type" placeholder="creature" spellcheck="false" title="@{npc_type}" type="text" value="" />
</label>
<label data-i18n-title="level" title="level">
<span data-i18n="level">level</span>
<input class="number" data-i18n-placeholder="4" name="attr_level" placeholder="4" spellcheck="false" title="@{level}" type="text" value="" />
</label>
<label data-i18n-title="alignment" title="alignment">
<span data-i18n="alignment">alignment</span>
<input data-i18n-placeholder="alignment" name="attr_alignment" placeholder="alignment" spellcheck="false" title="@{alignment}" type="text" value="" />
</label>
<label data-i18n-title="size" title="size">
<span data-i18n="size">size</span>
<input data-i18n-placeholder="size" name="attr_size" placeholder="size" spellcheck="false" title="@{size}" type="text" value="" />
</label>
<label data-i18n-title="traits" title="traits">
<span data-i18n="traits">traits</span>
<input data-i18n-placeholder="npc_placeholder_traits" name="attr_traits" placeholder="rare, aquatic, humanoid" spellcheck="false" title="@{traits}" type="text" value="" />
</label>
</div><!-- npc-info -->
<div class="npc-perception npc-block">
<label data-i18n-title="perception" title="perception">
<span data-i18n="perception">perception</span>
<input class="number" data-i18n-placeholder="+11" name="attr_perception" placeholder="+11" spellcheck="false" title="@{perception}" type="text" value="" />
</label>
<label data-i18n-title="senses" title="senses">
<span data-i18n="senses">senses</span>
<input data-i18n-placeholder="darkvision" name="attr_senses" placeholder="darkvision" spellcheck="false" title="@{senses}" type="text" value="" />
</label>
<label data-i18n-title="languages" title="languages">
<span data-i18n="languages">languages</span>
<input data-i18n-placeholder="npc_placeholder_languages" name="attr_languages" placeholder="aquan, common, dwarven" spellcheck="false" title="@{languages}" type="text" value="" />
</label>
</div><!-- npc-perception -->
<h1 data-i18n="skills">skills</h1>
<div class="npc-skills npc-block">
<div class="npc-skill-grid">
<label class="acrobatics ability" data-i18n-title="acrobatics" title="acrobatics">
<span data-i18n="acrobatics">acrobatics</span>
<input class="number" data-i18n-placeholder="0" name="attr_acrobatics" placeholder="0" spellcheck="false" title="@{acrobatics}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_acrobatics_notes" spellcheck="false" title="@{acrobatics_notes}" type="text" value="" />
</label>
<label class="arcana ability" data-i18n-title="arcana" title="arcana">
<span data-i18n="arcana">arcana</span>
<input class="number" data-i18n-placeholder="0" name="attr_arcana" placeholder="0" spellcheck="false" title="@{arcana}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_arcana_notes" spellcheck="false" title="@{arcana_notes}" type="text" value="" />
</label>
<label class="athletics ability" data-i18n-title="athletics" title="athletics">
<span data-i18n="athletics">athletics</span>
<input class="number" data-i18n-placeholder="0" name="attr_athletics" placeholder="0" spellcheck="false" title="@{athletics}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_athletics_notes" spellcheck="false" title="@{athletics_notes}" type="text" value="" />
</label>
<label class="crafting ability" data-i18n-title="crafting" title="crafting">
<span data-i18n="crafting">crafting</span>
<input class="number" data-i18n-placeholder="0" name="attr_crafting" placeholder="0" spellcheck="false" title="@{crafting}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_crafting_notes" spellcheck="false" title="@{crafting_notes}" type="text" value="" />
</label>
<label class="deception ability" data-i18n-title="deception" title="deception">
<span data-i18n="deception">deception</span>
<input class="number" data-i18n-placeholder="0" name="attr_deception" placeholder="0" spellcheck="false" title="@{deception}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_deception_notes" spellcheck="false" title="@{deception_notes}" type="text" value="" />
</label>
<label class="diplomacy ability" data-i18n-title="diplomacy" title="diplomacy">
<span data-i18n="diplomacy">diplomacy</span>
<input class="number" data-i18n-placeholder="0" name="attr_diplomacy" placeholder="0" spellcheck="false" title="@{diplomacy}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_diplomacy_notes" spellcheck="false" title="@{diplomacy_notes}" type="text" value="" />
</label>
<label class="intimidation ability" data-i18n-title="intimidation" title="intimidation">
<span data-i18n="intimidation">intimidation</span>
<input class="number" data-i18n-placeholder="0" name="attr_intimidation" placeholder="0" spellcheck="false" title="@{intimidation}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_intimidation_notes" spellcheck="false" title="@{intimidation_notes}" type="text" value="" />
</label>
<label class="medicine ability" data-i18n-title="medicine" title="medicine">
<span data-i18n="medicine">medicine</span>
<input class="number" data-i18n-placeholder="0" name="attr_medicine" placeholder="0" spellcheck="false" title="@{medicine}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_medicine_notes" spellcheck="false" title="@{medicine_notes}" type="text" value="" />
</label>
<label class="nature ability" data-i18n-title="nature" title="nature">
<span data-i18n="nature">nature</span>
<input class="number" data-i18n-placeholder="0" name="attr_nature" placeholder="0" spellcheck="false" title="@{nature}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_nature_notes" spellcheck="false" title="@{nature_notes}" type="text" value="" />
</label>
<label class="occultism ability" data-i18n-title="occultism" title="occultism">
<span data-i18n="occultism">occultism</span>
<input class="number" data-i18n-placeholder="0" name="attr_occultism" placeholder="0" spellcheck="false" title="@{occultism}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_occultism_notes" spellcheck="false" title="@{occultism_notes}" type="text" value="" />
</label>
<label class="performance ability" data-i18n-title="performance" title="performance">
<span data-i18n="performance">performance</span>
<input class="number" data-i18n-placeholder="0" name="attr_performance" placeholder="0" spellcheck="false" title="@{performance}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_performance_notes" spellcheck="false" title="@{performance_notes}" type="text" value="" />
</label>
<label class="religion ability" data-i18n-title="religion" title="religion">
<span data-i18n="religion">religion</span>
<input class="number" data-i18n-placeholder="0" name="attr_religion" placeholder="0" spellcheck="false" title="@{religion}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_religion_notes" spellcheck="false" title="@{religion_notes}" type="text" value="" />
</label>
<label class="society ability" data-i18n-title="society" title="society">
<span data-i18n="society">society</span>
<input class="number" data-i18n-placeholder="0" name="attr_society" placeholder="0" spellcheck="false" title="@{society}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_society_notes" spellcheck="false" title="@{society_notes}" type="text" value="" />
</label>
<label class="stealth ability" data-i18n-title="stealth" title="stealth">
<span data-i18n="stealth">stealth</span>
<input class="number" data-i18n-placeholder="0" name="attr_stealth" placeholder="0" spellcheck="false" title="@{stealth}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_stealth_notes" spellcheck="false" title="@{stealth_notes}" type="text" value="" />
</label>
<label class="survival ability" data-i18n-title="survival" title="survival">
<span data-i18n="survival">survival</span>
<input class="number" data-i18n-placeholder="0" name="attr_survival" placeholder="0" spellcheck="false" title="@{survival}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_survival_notes" spellcheck="false" title="@{survival_notes}" type="text" value="" />
</label>
<label class="thievery ability" data-i18n-title="thievery" title="thievery">
<span data-i18n="thievery">thievery</span>
<input class="number" data-i18n-placeholder="0" name="attr_thievery" placeholder="0" spellcheck="false" title="@{thievery}" type="text" value="" />
<span class="notes" data-i18n="notes">notes</span>
<input name="attr_thievery_notes" spellcheck="false" title="@{thievery_notes}" type="text" value="" />
</label>
</div><!-- npc-skill-grid -->
<h2 data-i18n="lore">lore</h2>
<fieldset class="repeating_lore">
<div class="npc-repeating-lore">
<label title="lore name">
<input data-i18n-placeholder="subcategory" name="attr_lore_name" placeholder="subcategory" spellcheck="false" title="@{lore_name}" type="text" value="Lore" />
<input data-i18n-placeholder="0" name="attr_lore" placeholder="0" spellcheck="false" title="@{lore}" type="text" value="" />
<span class="notes" data-i18n="notes">Notes</span>
<input name="attr_lore_notes" spellcheck="false" title="@{lore_notes}" type="text" value="" />
</label>
</div>
</fieldset><!--end lore-->
</div><!-- npc-skills -->
<h1 data-i18n="ability_modifiers">ability modifiers</h1>
<div class="npc-abilities npc-block">
<label data-i18n-title="strength_modifier" title="strength modifier">
<span data-i18n="str">str</span>
<input class="number" data-i18n-placeholder="0" name="attr_strength_modifier" placeholder="0" spellcheck="false" title="@{strength_modifier}" type="text" value="" />
</label>
<label data-i18n-title="dexterity_modifier" title="dexterity modifier">
<span data-i18n="dex">dex</span>
<input class="number" data-i18n-placeholder="0" name="attr_dexterity_modifier" placeholder="0" spellcheck="false" title="@{dexterity_modifier}" type="text" value="" />
</label>
<label data-i18n-title="constitution_modifier" title="constitution modifier">
<span data-i18n="con">con</span>
<input class="number" data-i18n-placeholder="0" name="attr_constitution_modifier" placeholder="0" spellcheck="false" title="@{constitution_modifier}" type="text" value="" />
</label>
<label data-i18n-title="intelligence_modifier" title="intelligence modifier">
<span data-i18n="int">int</span>
<input class="number" data-i18n-placeholder="0" name="attr_intelligence_modifier" placeholder="0" spellcheck="false" title="@{intelligence_modifier}" type="text" value="" />
</label>
<label data-i18n-title="wisdom_modifier" title="wisdom modifier">
<span data-i18n="wis">wis</span>
<input class="number" data-i18n-placeholder="0" name="attr_wisdom_modifier" placeholder="0" spellcheck="false" title="@{wisdom_modifier}" type="text" value="" />
</label>
<label data-i18n-title="charisma_modifier" title="charisma modifier">
<span data-i18n="cha">cha</span>
<input class="number" data-i18n-placeholder="0" name="attr_charisma_modifier" placeholder="0" spellcheck="false" title="@{charisma_modifier}" type="text" value="" />
</label>
</div><!-- npc-abilites -->
<h1 data-i18n="defense">Defense</h1>
<div class="npc-defense-grid">
<div class="npc-armor-class">
<label data-i18n-title="armor_class" title="armor class">
<span data-i18n="armor_class">ac</span>
<input class="number" data-i18n-placeholder="21" name="attr_armor_class" placeholder="21" spellcheck="false" title="@{armor_class}" type="text" value="" />
</label>
<label title="armor class notes">
<span class="notes" data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_armor_class_notes" placeholder="notes" spellcheck="false" title="@{armor_class_notes}"></textarea>
</label>
</div><!-- npc-armor-class -->
<div class="npc-saves">
<label data-i18n-title="fortitude" title="fortitude">
<span data-i18n="fortitude">fort</span>
<input class="number" data-i18n-placeholder="+13" name="attr_saving_throws_fortitude" placeholder="+13" spellcheck="false" title="@{saving_throws_fortitude}" type="text" value="" />
</label>
<label data-i18n-title="reflex" title="reflex">
<span data-i18n="reflex">ref</span>
<input class="number" data-i18n-placeholder="+13" name="attr_saving_throws_reflex" placeholder="+13" spellcheck="false" title="@{saving_throws_reflex}" type="text" value="" />
</label>
<label data-i18n-title="will" title="will">
<span data-i18n="will">will</span>
<input class="number" data-i18n-placeholder="+7" name="attr_saving_throws_will" placeholder="+7" spellcheck="false" title="@{saving_throws_will" type="text" value="" />
</label>
<label class="notes" title="saving throws notes">
<span class="notes" data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="npc_placeholder_saves" name="attr_saving_throws_notes" placeholder="+2 to all saves vs. magic" spellcheck="false" title="@{saving_throws_notes}"></textarea>
</label>
</div><!-- npc-saves -->
<div class="npc-hit-points">
<label data-i18n-title="maximum_hit_points" title="maximum hit points">
<span data-i18n="hit_points">hp</span>
<input class="number" data-i18n-placeholder="60" name="attr_hit_points_max" placeholder="60" spellcheck="false" title="@{hit_points_max}" type="text" value="" />
</label>
<label data-i18n-title="hit_points_notes" title="hit points notes">
<span class="notes" data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_hit_points_notes" placeholder="notes" spellcheck="false" title="@{hit_points_notes}"></textarea>
</label>
</div><!-- npc-hit-points -->
<div class="npc-immunities">
<label data-i18n-title="immunities" title="immunities">
<span data-i18n="immunities">immunities</span>
<input data-i18n-placeholder="npc_placeholder_immunity" name="attr_immunities" placeholder="disease, emotion, poison" spellcheck="false" title="@{immunities}" type="text" value="" />
</label>
<label data-i18n-title="weaknesses" title="weaknesses">
<span data-i18n="weaknesses">weaknesses</span>
<input data-i18n-placeholder="fire" name="attr_weaknesses" placeholder="fire" spellcheck="false" title="@{weaknesses}" type="text" value="" />
</label>
<label data-i18n-title="resistances" title="resistances">
<span data-i18n="resistances">resistances</span>
<input data-i18n-placeholder="npc_placeholder_resist" name="attr_resistances" placeholder="electricity 3" spellcheck="false" title="@{resistances}" type="text" value="" />
</label>
</div><!-- npc-immunities -->
<div class="npc-offense">
<label class="npc-speed" data-i18n-title="speed" title="speed">
<span data-i18n="speed">speed</span>
<input data-i18n-placeholder="60" name="attr_speed" placeholder="60" spellcheck="false" title="@{speed}" type="text" value="" />
<span data-i18n="feet">feet</span>
</label>
<label data-i18n-title="movement_notes" title="movement types and notes">
<span data-i18n="movement_notes">movement types & notes</span>
<input data-i18n-placeholder="npc_placeholder_speed_notes" name="attr_speed_notes" placeholder="swim 80 feet" spellcheck="false" title="@{speed_notes}" type="text" value="" />
</label>
</div><!-- npc-offense -->
</div><!-- npc-defense-grid -->
<h1 data-i18n="options">Options</h1>
<div class="npc-general-options npc-block">
<div class="npc-row">
<label data-i18n-title="roll_show_notes" title="Show Notes in Rolls">
<input name="attr_roll_show_notes" title="@{roll_show_notes}" type="checkbox" value="[[1]]" />
<span data-i18n="roll_show_notes">Show Notes in Rolls</span>
</label>
<label data-i18n-title="Limit height of Notes and Description in roll template" title="Limit height of Notes and Description in roll template">
<input name="attr_roll_limit_height" title="@{roll_limit_height}" type="checkbox" value="limit-height"/><span data-i18n="Limit height of Notes and Description in roll template">Limit height of Notes and Description in roll template</span>
</label>
</div>
<div class="npc-row">
<label data-i18n-title="whisper_rolls_to_gm" title="whisper rolls to gm">
<span data-i18n="whisper_rolls_to_gm">whisper rolls to gm</span>
<select class="simple" name="attr_whispertype">
<option data-i18n="never_whisper_roll" value="">Never Whisper Rolls</option>
<option data-i18n="query_whisper_roll" value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }">Query Whisper</option>
<option data-i18n="always_whisper_roll" value="/w gm ">Always Whisper Rolls</option>
</select>
</label>
<label data-i18n-title="roll_option_critical_damage" title="roll critical damage options">
<span data-i18n="roll_option_critical_damage">ROLL CRITICAL DAMAGE OPTIONS</span>
<select class="simple" name="attr_roll_option_critical_damage" data-i18n-title="roll_option_critical_damage" title="roll critical damage options">
<option data-i18n="roll_option_critical_damage_none" value="none">Don't roll critical damage</option>
<option data-i18n="roll_option_critical_damage_button" value="button">Show a chat button to roll critical damage</option>
<option data-i18n="roll_option_critical_damage_auto" selected="selected" value="auto">Auto roll critical damage</option>
</select>
</label>
</div>
<div class="npc-row">
<input class="toggles" name="attr_toggles" type="hidden" value="" />
<button data-i18n="spellcaster" name="act_toggle_npcspellcaster" type="action">spellcaster</button>
<button data-i18n="character" name="act_toggle_character" type="action" >character</button>
</div>
</div><!-- npc-general-options -->
</div><!-- npc-settings -->
<div class="npc-display">
<div class="npc-title">
<span class="npc-name" name="attr_character_name"></span>
<span name="attr_level"></span>
<span name="attr_npc_type"></span>
</div>
<div class="npc-row npc-traits-row">
<span class="npc-trait npc-alignment-trait uppercase" name="attr_alignment"></span>
<span class="npc-trait npc-size-trait uppercase" name="attr_size"></span>
<span class="npc-trait uppercase" name="attr_traits"></span>
</div>
<div class="npc-row">
<button class="npc-roll" name="roll_PERCEPTION" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{perception}}} {{roll01=[[1d20cs20cf1 + (@{perception})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=perception}}">
<span class="npc-row-title" data-i18n="perception">perception</span>
<span name="attr_perception"></span>
</button>;
<span name="attr_senses"></span>
</div>
<div class="npc-row">
<button class="npc-roll" name="roll_INITIATIVE" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{initiative}}} {{subheader=^{@{initiative_skill}}}} {{roll01=[[1d20cs20cf1 + (@{initiative}) + (@{query_roll_bonus})[@{text_bonus}] &{tracker}]]}} {{roll01_type=initiative}}">
<span class="npc-row-title" data-i18n="initiative">initiative</span>
</button>
<input type="hidden" name="attr_initiative" value="@{perception}[perception]" />
<select name="attr_initiative_skill" title="@{initiative_skill" class="simple">
<option data-i18n="perception" selected="selected" value="perception">perception</option>
<option data-i18n="stealth" value="stealth">stealth</option>
<option data-i18n="deception" value="deception">deception</option>
<option data-i18n="diplomacy" value="diplomacy">diplomacy</option>
<option data-i18n="acrobatics" value="acrobatics">acrobatics</option>
<option data-i18n="arcana" value="arcana">arcana</option>
<option data-i18n="athletics" value="athletics">athletics</option>
<option data-i18n="crafting" value="crafting">crafting</option>
<option data-i18n="intimidation" value="intimidation">intimidation</option>
<option data-i18n="medicine" value="medicine">medicine</option>
<option data-i18n="nature" value="nature">nature</option>
<option data-i18n="occultism" value="occultism">occultism</option>
<option data-i18n="performance" value="performance">performance</option>
<option data-i18n="religion" value="religion">religion</option>
<option data-i18n="society" value="society">society</option>
<option data-i18n="survival" value="survival">survival</option>
<option data-i18n="thievery"value="thievery">thievery</option>
</select>
</div>
<!-- Temporary fix to hide empty section -->
<input name="attr_languages" type="hidden" value="" />
<div class="npc-row">
<span class="npc-row-title" data-i18n="languages">languages</span>
<span name="attr_languages"></span>
</div>
<div class="npc-row npc-skills-list">
<span class="npc-row-title" data-i18n="skills">skills</span>
<span>
<input class="npc-skill-toggle" name="attr_acrobatics" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_acrobatics_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_ACROBATICS" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{acrobatics}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{acrobatics})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{acrobatics_notes}}}">
<span class="tcase" data-i18n="acrobatics">acrobatics</span>
<span name="attr_acrobatics"></span>
<span class="npc-parenthesized-field" name="attr_acrobatics_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_arcana" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_arcana_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_ARCANA" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{arcana}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{arcana})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{arcana}}}">
<span class="tcase" data-i18n="arcana">arcana</span>
<span name="attr_arcana"></span>
<span class="npc-parenthesized-field" name="attr_arcana_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_athletics" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_athletics_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_ATHLETICS" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{athletics}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{athletics})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{athletics_notes}}}">
<span class="tcase" data-i18n="athletics">athletics</span>
<span name="attr_athletics"></span>
<span class="npc-parenthesized-field" name="attr_athletics_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_crafting" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_crafting_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_CRAFTING" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{crafting}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{crafting})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{crafting_notes}}}">
<span class="tcase" data-i18n="crafting">crafting</span>
<span name="attr_crafting"></span>
<span class="npc-parenthesized-field" name="attr_crafting_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_deception" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_deception_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_DECEPTION" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{deception}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{deception})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{deception_notes}}}">
<span class="tcase" data-i18n="deception">deception</span>
<span name="attr_deception"></span>
<span class="npc-parenthesized-field" name="attr_deception_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_diplomacy" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_diplomacy_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_DIPLOMACY" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{diplomacy}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{diplomacy})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{diplomacy_notes}}}">
<span class="tcase" data-i18n="diplomacy">diplomacy</span>
<span name="attr_diplomacy"></span>
<span class="npc-parenthesized-field" name="attr_diplomacy_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_intimidation" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_intimidation_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_INTIMIDATION" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{intimidation}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{intimidation})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{intimidation_notes}}}">
<span class="tcase" data-i18n="intimidation">intimidation</span>
<span name="attr_intimidation"></span>
<span class="npc-parenthesized-field" name="attr_intimidation_notes"></span>
</button>
</span>
<fieldset class="repeating_lore">
<button class="npc-roll" name="roll_LORE" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{lore_name}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{lore})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{lore_notes}}}">
<span class="tcase" name="attr_lore_name"></span>
<span name="attr_lore"></span>
<span class="npc-parenthesized-field" name="attr_lore_notes"></span>
</button>
<div class="settings">
<input name="attr_lore_name" spellcheck="false" title="@{lore_name}" type="text" value="" />
<input name="attr_lore" spellcheck="false" title="@{lore}" type="text" value="" />
<input name="attr_lore_notes" spellcheck="false" title="@{lore_notes}" type="text" value="" />
</div>
</fieldset><!--end lore-->
<span>
<input class="npc-skill-toggle" name="attr_medicine" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_medicine_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_MEDICINE" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{medicine}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{medicine})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{medicine_notes}}}">
<span class="tcase" data-i18n="medicine">medicine</span>
<span name="attr_medicine"></span>
<span class="npc-parenthesized-field" name="attr_medicine_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_nature" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_nature_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_NATURE" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{nature}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{nature})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{nature_notes}}}">
<span class="tcase" data-i18n="nature">nature</span>
<span name="attr_nature"></span>
<span class="npc-parenthesized-field" name="attr_nature_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_occultism" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_occultism_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_OCCULTISM" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{occultism}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{occultism})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{occultism_notes}}}">
<span class="tcase" data-i18n="occultism">occultism</span>
<span name="attr_occultism"></span>
<span class="npc-parenthesized-field" name="attr_occultism_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_performance" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_performance_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_PERFORMANCE" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{performance}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{performance})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{performance_notes}}}">
<span class="tcase" data-i18n="performance">performance</span>
<span name="attr_performance"></span>
<span class="npc-parenthesized-field" name="attr_performance_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_religion" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_religion_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_RELIGION" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{religion}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{religion})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{religion_notes}}}">
<span class="tcase" data-i18n="religion">religion</span>
<span name="attr_religion"></span>
<span class="npc-parenthesized-field" name="attr_religion_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_society" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_society_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_SOCIETY" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{society}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{society})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{society_notes}}}">
<span class="tcase" data-i18n="society">society</span>
<span name="attr_society"></span>
<span class="npc-parenthesized-field" name="attr_society_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_stealth" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_stealth_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_STEALTH" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{stealth}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{stealth})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{stealth_notes}}}">
<span class="tcase" data-i18n="stealth">stealth</span>
<span name="attr_stealth"></span>
<span class="npc-parenthesized-field" name="attr_stealth_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_survival" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_survival_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_SURVIVAL" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{survival}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{survival})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{survival_notes}}}">
<span class="tcase" data-i18n="survival">survival</span>
<span name="attr_survival"></span>
<span class="npc-parenthesized-field" name="attr_survival_notes"></span>
</button>
</span>
<span>
<input class="npc-skill-toggle" name="attr_thievery" type="hidden" value="" />
<input class="npc-skill-notes-toggle" name="attr_thievery_notes" type="hidden" value="" />
<button class="npc-roll" name="roll_THIEVERY" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{thievery}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + (@{thievery})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{thievery_notes}}}">
<span class="tcase" data-i18n="thievery">thievery</span>
<span name="attr_thievery"></span>
<span class="npc-parenthesized-field" name="attr_thievery_notes"></span>
</button>
</span>
</div><!-- npc-skills-list -->
<div class="npc-row">
<button class="npc-roll" name="roll_STR" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{strength}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{strength_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}}">
<span class="npc-row-title" data-i18n="str">str</span>
<span name="attr_strength_modifier"></span>
</button>,
<button class="npc-roll" name="roll_DEX" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{dexterity}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{dexterity_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}}">
<span class="npc-row-title" data-i18n="dex">dex</span>
<span name="attr_dexterity_modifier"></span>
</button>,
<button class="npc-roll" name="roll_CON" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{constitution}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{constitution_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}}">
<span class="npc-row-title" data-i18n="con">con</span>
<span name="attr_constitution_modifier"></span>
</button>,
<button class="npc-roll" name="roll_INT" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{intelligence}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{intelligence_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}}">
<span class="npc-row-title" data-i18n="int">int</span>
<span name="attr_intelligence_modifier"></span>
</button>,
<button class="npc-roll" name="roll_WIS" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{wisdom}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{wisdom_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}}">
<span class="npc-row-title" data-i18n="wis">wis</span>
<span name="attr_wisdom_modifier"></span>
</button>,
<button class="npc-roll" name="roll_CHA" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{charisma}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{charisma_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}}">
<span class="npc-row-title" data-i18n="cha">cha</span>
<span name="attr_charisma_modifier"></span>
</button>
</div>
<div class="npc-row">
<span class="npc-row-title" data-i18n="items">items</span>
<div class="npc-items repeating">
<fieldset class="repeating_items-worn">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="npc-repeating-item">
<div>
<button class="npc-roll" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{worn_item}}} {{subheader=^{item}}} {{desc=@{description}}}">
<span class="npc-row-title" name="attr_worn_item"></span>
</button>
<span name="attr_description"></span>
</div>
<button class="pictos settings-button" name="act_settings" type="action">y</button>
</div>
<div class="settings">
<label data-i18n-title="item_name" title="item name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="npc_placeholder_worn_item" name="attr_worn_item" placeholder="+1 shortsword" spellcheck="false" title="@{worn_item}" type="text" value="" />
</label>
<label data-i18n-title="action_description" title="action description">
<span data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<!-- Interaction Abilities (no PC equivalent) -->
<div class="npc-row">
<span class="npc-row-title" data-i18n="interaction_abilities">Interaction Abilities</span>
<div class="npc-interaction-abilities repeating">
<fieldset class="repeating_interaction-abilities">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="npc-repeating-item">
<div>
<button class="npc-roll" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{interaction_ability}}} {{info01_name=^{traits}}} {{info01=@{traits}}} {{desc=@{description}}}">
<span class="npc-row-title" name="attr_name"></span>
</button>
<span class="npc-parenthesized-field" name="attr_traits"></span>
<span name="attr_description"></span>
</div>
<button class="pictos settings-button" name="act_settings" type="action">y</button>
</div>
<div class="settings">
<label data-i18n-title="action_name" title="action name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_name" placeholder="name" spellcheck="false" title="@{name}" type="text" value="" />
</label>
<label data-i18n-title="action_traits" title="action traits">
<span data-i18n="traits">traits</span>
<input data-i18n-placeholder="traits" name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text" value="" />
</label>
<label data-i18n-title="action_description" title="action description">
<span data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<hr>
<div class="npc-row">
<span class="npc-row-title uppercase" data-i18n="ac">ac</span>
<span name="attr_armor_class"></span>;
<span name="attr_armor_class_notes"></span>
<button class="npc-roll" name="roll_FORT" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{fortitude}}} {{subheader=^{saving_throw}}} {{roll01=[[1d20cs20cf1 + (@{saving_throws_fortitude})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=saving-throw}} {{notes_show=@{roll_show_notes}}} {{notes=@{saving_throws_notes}}}">
<span class="npc-row-title" data-i18n="fort">fort</span>
<span name="attr_saving_throws_fortitude"></span>
</button>,
<button class="npc-roll" name="roll_REF" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{reflex}}} {{subheader=^{saving_throw}}} {{roll01=[[1d20cs20cf1 + (@{saving_throws_reflex})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=saving-throw}} {{notes_show=@{roll_show_notes}}} {{notes=@{saving_throws_notes}}}">
<span class="npc-row-title" data-i18n="ref">ref</span>
<span name="attr_saving_throws_reflex"></span>
</button>,
<button class="npc-roll" name="roll_WILL" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{will}}} {{subheader=^{saving_throw}}} {{roll01=[[1d20cs20cf1 + (@{saving_throws_will})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=saving-throw}} {{notes_show=@{roll_show_notes}}} {{notes=@{saving_throws_notes}}}">
<span class="npc-row-title" data-i18n="will">will</span>
<span name="attr_saving_throws_will"></span>
</button>;
<span name="attr_saving_throws_notes"></span>
</div>
<div class="npc-row">
<span class="npc-row-title uppercase" data-i18n="hp">hp</span>
<span name="attr_hit_points_max"></span>;
<span name="attr_hit_points_notes"></span>
<span class="npc-row-title" data-i18n="current">current</span>
<input data-i18n-placeholder="0" name="attr_hit_points" placeholder="0" spellcheck="false" title="@{hit_points}" type="number" value="" />
</div>
<!-- Temporary fix to hide empty section -->
<input name="attr_immunities" type="hidden" value="" />
<div class="npc-row">
<span class="npc-row-title" data-i18n="immunities">immunities</span>
<span name="attr_immunities"></span>
</div>
<!-- Temporary fix to hide empty section -->
<input name="attr_weaknesses" type="hidden" value="" />
<div class="npc-row">
<span class="npc-row-title" data-i18n="weaknesses">weaknesses</span>
<span name="attr_weaknesses"></span>
</div>
<!-- Temporary fix to hide empty section -->
<input name="attr_resistances" type="hidden" value="" />
<div class="npc-row">
<span class="npc-row-title" data-i18n="resistances">resistances</span>
<span name="attr_resistances"></span>
</div>
<!-- automatic and reactive abilities (equivalent of PC's "free actions and reactions") -->
<div class="npc-row">
<span class="npc-row-title" data-i18n="auto_and_reactive_abilities">automatic and reactive abilites</span>
<div class="npc-free-actions-reactions repeating">
<fieldset class="repeating_free-actions-reactions">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<input name="attr_action_type" type="hidden" value="" />
<div class="npc-repeating-item">
<div>
<button class="npc-roll" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{auto_and_reactive_abilities}}} {{info01_name=^{action_type}}} {{info01=@{action_type}}} {{info02_name=^{source}}} {{info02=@{source}}} {{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{trigger}:}} {{info04=@{trigger}}} {{desc=@{description}}}">
<span class="npc-row-title" name="attr_name"></span>
</button>
<span class="actiontype"><span name="attr_action_type"></span></span>
<span class="npc-parenthesized-field" name="attr_traits"></span>
<span>
<input class="npc-title-toggle" name="attr_trigger" type="hidden" value="" />
<span class="npc-row-title npc-toggling-title" data-i18n="trigger">trigger</span>
<span name="attr_trigger"></span>
</span>
<span name="attr_description"></span>
<span>
<input class="npc-title-toggle" name="attr_source" type="hidden" value="" />
<span class="npc-row-title npc-toggling-title" data-i18n="source">source</span>
<span name="attr_source"></span>
</span>
</div>
<button class="pictos settings-button" name="act_settings" type="action">y</button>
</div>
<div class="settings">
<div>
<label data-i18n-title="action_name" title="action name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_name" placeholder="name" title="@{name}" type="text" value="" />
</label>
<div class="actiontype" >
<label data-i18n-title="free_actions" title="free actions">
<input class="checkbox" name="attr_free_action" title="@{free_action}" type="checkbox" value="free action" />
<i class="free-action blue"></i>
<span data-i18n="free_action">free_action</span>
</label>
<label data-i18n-title="reaction" title="reactions">
<input name="attr_reaction" title="@{reaction}" type="checkbox" value="reaction" />
<i class="reaction blue"></i>
<span data-i18n="reaction">reaction</span>
</label>
</div>
<label data-i18n-title="action_traits" title="action traits">
<span data-i18n="traits">traits</span>
<input data-i18n-placeholder="traits" name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text" value="" />
</label>
<label data-i18n-title="action_source" title="action source">
<span data-i18n="source">source</span>
<input data-i18n-placeholder="source" name="attr_source" placeholder="source" spellcheck="false" title="@{source}" type="text" value="" />
</label>
</div>
<div>
<label data-i18n-title="action_trigger" title="action trigger">
<span data-i18n="trigger">trigger</span>
<input data-i18n-placeholder="trigger" name="attr_trigger" placeholder="trigger" spellcheck="false" title="@{trigger}" type="text" value="" />
</div>
<label data-i18n-title="action_description" title="action description">
<span data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<hr>
<div class="npc-row">
<span class="npc-row-title" data-i18n="speed">speed</span>
<span name="attr_speed"></span> feet;
<span name="attr_speed_notes"></span>
</div>
<!-- NPC Attacks - Melee -->
<div class="npc-row">
<span class="npc-row-title" data-i18n="melee_strikes">melee strikes</span>
<div class="npc-melee-strikes repeating">
<fieldset class="repeating_melee-strikes">
<input name="attr_damage_display_npc" type="hidden" value="@{weapon_strike_damage} @{weapon_strike_damage_type}" />
<input name="attr_weapon_roll_npc" type="hidden" value="{{roll01_name=^{attack}}} {{roll01=[[1d20cs20cf1 + (@{weapon_strike}[@{text_modifier}]) + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=attack}} {{roll01_critical=1}}" />
<input name="attr_damage_roll_npc" type="hidden" value="{{roll02_name=^{damage}}} {{roll02=[[@{weapon_strike_damage} + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{weapon_strike_damage_type}}}" />
<input name="attr_damage_critical_roll_npc" type="hidden" value="{{roll03_name=^{critical_damage}}} {{roll03=[[(@{weapon_strike_damage} + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}}" />
<input name="attr_damage_additional_roll_npc" type="hidden" value="{{roll04_name=^{damage_additional}}} {{roll04=@{weapon_strike_damage_additional}}} {{roll04_type=damage}}" />
<!-- Optional Critical Damage handling -->
<button name="roll_CRITICAL_DAMAGE_NPC" style="display: none;" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_critical_roll_npc}"></button>
<input name="attr_roll_critical_damage_button_npc" type="hidden" value="{{roll03misc=[^{roll} ^{critical_damage}](~repeating_melee-strikes_CRITICAL_DAMAGE_NPC) }}" />
<input name="attr_roll_critical_damage_npc" type="hidden" value="@{damage_critical_roll_npc}" />
<!-- Show & hide hidden areas -->
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="npc-repeating-item">
<div>
<button name="roll_ATTACK-DAMAGE-NPC" class="npc-roll" title="npc melee weapon name display & attack and damage roll" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{weapon_roll_npc} @{damage_roll_npc} @{roll_critical_damage_npc} @{damage_additional_roll_npc}">
<span name="attr_weapon"></span>
</button>
<button name="roll_ATTACK-NPC" class="npc-roll" title="npc melee weapon attack display & attack only roll" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{weapon_roll_npc}">
<span name="attr_weapon_strike"></span>
</button>
<span class="npc-parenthesized-field" name="attr_weapon_traits"></span>
<span class="npc-row-title" data-i18n="damage">damage</span>
<button name="roll_DAMAGE-NPC" class="npc-roll" title="npc melee weapon damage display & damage only roll" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_roll_npc} @{roll_critical_damage_npc} @{damage_additional_roll_npc}">
<span name="attr_weapon_strike_damage"></span>&nbsp;
<span name="attr_weapon_strike_damage_type"></span>
<span class="npc-dot-field" name="attr_weapon_strike_damage_additional"></span>
</button>
<span name="attr_weapon_notes"></span>
</div>
<button class="pictos settings-button" name="act_settings" type="action">y</button>
</div>
<div class="settings">
<label data-i18n-title="melee_attack_name" title="melee attack name">
<span data-i18n="attack">attack</span>
<input data-i18n-placeholder="claw" name="attr_weapon" placeholder="claw" spellcheck="false" title="@{weapon}" type="text" value="" />
</label>
<label data-i18n-title="melee_attack_modifier" title="melee attack modifier">
<span data-i18n="modifier">modifier</span>
<input data-i18n-placeholder="+4" name="attr_weapon_strike" placeholder="+4" spellcheck="false" title="@{weapon_strike}" type="text" value="" />
</label>
<label data-i18n-title="melee_attack_traits" title="melee attack traits">
<span data-i18n="traits">traits</span>
<input data-i18n-placeholder="traits" name="attr_weapon_traits" placeholder="traits" spellcheck="false" title="@{weapon_traits}" type="text" value="" />
</label>
<label data-i18n-title="melee_attack_damage" title="melee attack damage">
<span data-i18n="damage">damage</span>
<input data-i18n-placeholder="1d6" name="attr_weapon_strike_damage" placeholder="1d6" spellcheck="false" title="@{weapon_strike_damage}" type="text" value="1d6" />
</label>
<label data-i18n-title="melee_attack_damage_type" title="melee attack damage type">
<span data-i18n="damage-type">damage type</span>
<input data-i18n-placeholder="slashing" name="attr_weapon_strike_damage_type" placeholder="slashing" spellcheck="false" title="@{weapon_strike_damage_type}" type="text" value="" />
</label>
<label data-i18n-title="melee_attack_damage_additional" title="melee attack additional damage">
<span data-i18n="damage_additional">additional damage</span>
<input data-i18n-placeholder="damage_additional_placeholder" name="attr_weapon_strike_damage_additional" placeholder="[[1d6]] acid, [[1d6]] chaotic, and [[1d6]] evil, and [[2d6]] slashing vs. plants" spellcheck="false" title="@{weapon_strike_damage_additional}" type="text" value="" />
</label>
<label data-i18n-title="melee_attack_notes" data-i18n-title="name" title="melee attack notes">
<span data-i18n="notes">notes</span>
<input data-i18n-placeholder="other_effects" name="attr_weapon_notes" placeholder="other effects" spellcheck="false" title="@{weapon_notes}" type="text" value="" />
</label>
</div>
</fieldset>
</div>
</div>
<!-- NPC Attacks - Ranged -->
<div class="npc-row">
<span class="npc-row-title" data-i18n="ranged_strikes">ranged strikes</span>
<div class="npc-ranged-strikes repeating">
<fieldset class="repeating_ranged-strikes">
<input name="attr_damage_display_npc" type="hidden" value="@{weapon_strike_damage} @{weapon_strike_damage_type}" />
<input name="attr_weapon_roll_npc" type="hidden" value="{{roll01_name=^{attack}}} {{roll01=[[1d20cs20cf1 + (@{weapon_strike}[@{text_modifier}]) + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=attack}} {{roll01_critical=1}}" />
<input name="attr_damage_roll_npc" type="hidden" value="{{roll02_name=^{damage}}} {{roll02=[[@{weapon_strike_damage} + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{weapon_strike_damage_type}}}" />
<input name="attr_damage_critical_roll_npc" type="hidden" value="{{roll03_name=^{critical_damage}}} {{roll03=[[(@{weapon_strike_damage} + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}}" />
<input name="attr_damage_additional_roll_npc" type="hidden" value="{{roll04_name=^{damage_additional}}} {{roll04=@{weapon_strike_damage_additional}}} {{roll04_type=damage}}" />
<!-- Optional Critical Damage handling -->
<button name="roll_CRITICAL_DAMAGE_NPC" style="display: none;" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_critical_roll_npc}"></button>
<input name="attr_roll_critical_damage_button_npc" type="hidden" value="{{roll03misc=[^{roll} ^{critical_damage}](~repeating_ranged-strikes_CRITICAL_DAMAGE_NPC) }}" />
<input name="attr_roll_critical_damage_npc" type="hidden" value="@{damage_critical_roll_npc}" />
<!-- Show & hide hidden areas -->
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="npc-repeating-item">
<div>
<button class="npc-roll" name="roll_ATTACK-DAMAGE-NPC" title="npc range weapon name display & attack and damage roll" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} {{info01_name=^{range}}} {{info01=@{weapon_range}}} @{weapon_roll_npc} @{damage_roll_npc} @{roll_critical_damage_npc} @{damage_additional_roll_npc}">
<span name="attr_weapon"></span>
</button>
<button class="npc-roll" name="roll_ATTACK-NPC" title="npc range weapon attack display & attack only roll" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} {{info01_name=^{range}}} {{info01=@{weapon_range}}} @{weapon_roll_npc}">
<span name="attr_weapon_strike"></span>
</button>
<span class="npc-parenthesized-field" name="attr_weapon_traits"></span>
<span class="npc-row-title" data-i18n="damage">damage</span>
<button class="npc-roll" name="roll_DAMAGE-NPC" type="roll" title="npc range weapon damage display & damage only roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_roll_npc} @{roll_critical_damage_npc} @{damage_additional_roll_npc}">
<span name="attr_weapon_strike_damage"></span>&nbsp;
<span name="attr_weapon_strike_damage_type"></span>
<span class="npc-dot-field" name="attr_weapon_strike_damage_additional"></span>
</button>
<span name="attr_weapon_range"></span>
<span name="attr_weapon_notes"></span>
</div>
<button class="pictos settings-button" name="act_settings" type="action">y</button>
</div>
<div class="settings">
<label data-i18n-title="range_attack_name" title="range attack name">
<span data-i18n="attack">attack</span>
<input data-i18n-placeholder="bow" name="attr_weapon" spellcheck="false" title="@{weapon}" type="text" value="" />
</label>
<label data-i18n-title="range_attack_modifier" title="range attack modifier">
<span data-i18n="modifier">modifier</span>
<input data-i18n-placeholder="+4" name="attr_weapon_strike" placeholder="+4" spellcheck="false" title="@{weapon_strike}" type="text" value="" />
</label>
<label data-i18n-title="range_attack_traits" title="range attack traits">
<span data-i18n="traits">traits</span>
<input data-i18n-placeholder="traits" name="attr_weapon_traits" placeholder="traits" spellcheck="false" title="@{weapon_traits}" type="text" value="" />
</label>
<label data-i18n-title="range_attack_damage" title="range attack damage">
<span data-i18n="damage">damage</span>
<input data-i18n-placeholder="1d6" name="attr_weapon_strike_damage" placeholder="1d6" spellcheck="false" title="@{weapon_strike_damage}" type="text" value="1d6" />
</label>
<label data-i18n-title="range_attack_damage_type" title="range attack damage type">
<span data-i18n="damage-type">damage type</span>
<input data-i18n-placeholder="piercing" name="attr_weapon_strike_damage_type" placeholder="piercing" spellcheck="false" title="@{weapon_strike_damage_type}" type="text" value="" />
</label>
<label data-i18n-title="range_attack_damage_additional" title="range attack additional damage">
<span data-i18n="damage_additional">additional damage</span>
<input data-i18n-placeholder="damage_additional_placeholder" name="attr_weapon_strike_damage_additional" placeholder="[[1d6]] acid, [[1d6]] chaotic, and [[1d6]] evil, and [[2d6]] slashing vs. plants" spellcheck="false" title="@{weapon_strike_damage_additional}" type="text" value="" />
</label>
<label data-i18n-title="range_weapon_range" title="range weapon range">
<span data-i18n="range">range</span>
<input data-i18n-placeholder="100ft" name="attr_weapon_range" placeholder="100 ft." spellcheck="false" title="@{weapon_range}" type="text" value="" />
</label>
<label data-i18n-title="range_attack_notes" title="range attack notes">
<span data-i18n="notes">notes</span>
<input data-i18n-placeholder="other_effects" name="attr_weapon_notes" placeholder="other effects" spellcheck="false" title="@{weapon_notes}" type="text" value="" />
</label>
</div>
</fieldset>
</div>
</div>
<!-- Offensive or Proactive Abilities (equivalent of PC's "actions and activities") -->
<div class="npc-row">
<span class="npc-row-title" data-i18n="offensive_or_proactive_abilities">offensive or proactive abilities</span>
<div class="npc-actions-and-activies repeating">
<fieldset class="repeating_actions-activities">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="npc-repeating-item">
<div>
<button class="npc-roll" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{offensive_or_proactive_abilities}}} {{info01_name=^{action_type}}} {{info01=@{actions}}} {{info02_name=^{source}}} {{info02=@{source}}} {{info03_name=^{traits}}} {{info03=@{traits}}} {{desc=@{description}}}">
<span class="npc-row-title" name="attr_name"></span>
</button>
<span class="npc-parenthesized-field" name="attr_traits"></span>
<span name="attr_description"></span>
<span>
<input class="npc-title-toggle" name="attr_actions" type="hidden" value="" />
<span class="npc-row-title npc-toggling-title" data-i18n="actions">actions</span>
<span name="attr_actions"></span>
</span>
<span>
<input class="npc-title-toggle" name="attr_source" type="hidden" value="" />
<span class="npc-row-title npc-toggling-title" data-i18n="source">source</span>
<span name="attr_source"></span>
</span>
</div>
<button class="pictos settings-button" name="act_settings" type="action">y</button>
</div>
<div class="settings">
<label data-i18n-title="action_name" title="action name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_name" placeholder="name" spellcheck="false" title="@{name}" type="text" value="" />
</label>
<label data-i18n-title="actions" title="actions">
<span data-i18n="actions">actions</span>
<input data-i18n-placeholder="actions" name="attr_actions" placeholder="actions" spellcheck="false" title="@{actions}" type="text" value="" class="actions" />
</label>
<label data-i18n-title="action_traits" title="action traits">
<span data-i18n="traits">traits</span>
<input data-i18n-placeholder="traits" name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text" value="" />
</label>
<label data-i18n-title="action_source" title="action source">
<span data-i18n="source">source</span>
<input data-i18n-placeholder="source" name="attr_source" placeholder="source" spellcheck="false" title="@{source}" type="text" value="" />
</label>
<label data-i18n-title="action_description" title="action description">
<span data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label>
</div>
</fieldset>
</div>
</div>
</div><!-- npc-display -->
</div><!-- npc end -->
<!-- PC SHEET-->
<div class="character">
<div class="column"><!--- ABILITY SCORES & CLASS DC column --->
<h1 data-i18n='ability_scores'>ability scores</h1>
<div class='ability-scores background-color'>
<div class='display strength-row'>
<button class='pictos settings-button' data-i18n-title='strength_settings' name='act_toggle_strength' title='strength settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_strength_modifier' title='@{strength_modifier}'></span>
</div>
<div class='ability-modifier'>
<button data-i18n='str' name='roll_STR' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{strength}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{strength_modifier})[@{text_ability_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}} {{notes_show=@{roll_show_notes}}} {{notes=@{strength_notes}}}'>str</button>
<span data-i18n='modifier'>modifier</span>
</div>
<div class='ability-score'>
<span data-i18n='strength'>strength</span><br />
<span data-i18n='score'>score</span>
</div>
<div class='circle'>
<span name='attr_strength' title='@{strength}'></span>
</div>
</div>
<div class='settings strength-settings'>
<label class='sublabel' data-i18n-title='strenght_score' title='strength score'>
<span class='sublabel darkred' data-i18n='score-base'>score base</span>
<input data-i18n-placeholder='0' name='attr_strength_score' placeholder='0' spellcheck='false' title='@{strength_score}' type='text' value='10' />
</label>
<label class='sublabel' data-i18n-title='strenght_modifier_temporary' title='strength modifier temporary'>
<span class='sublabel darkred' data-i18n='mod-temp'>mod temp</span>
<input data-i18n-placeholder='0' name='attr_strength_modifier_temporary' placeholder='0' spellcheck='false' title='@{strength_modifier_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='strength_score_temporary' title='strength score temporary'>
<span class='sublabel darkred' data-i18n='score-temp'>score temp</span>
<input data-i18n-placeholder='0' name='attr_strength_score_temporary' placeholder='0' spellcheck='false' title='@{strength_score_temporary}' type='text' value='0' />
</label>
<label class='notes' data-i18n-title='strenght_notes' title='strenght notes'>
<span data-i18n='notes'>notes</span>
<textarea class='notes' data-i18n-placeholder='notes' name='attr_strength_notes' placeholder='notes' spellcheck='false' title='@{strength_notes}' value=''></textarea>
</label>
</div>
<div class='display dexterity-row'>
<button class='pictos settings-button' data-i18n-title='dexterity_settings' name='act_toggle_dexterity' title='dexterity settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_dexterity_modifier' title='@{dexterity_modifier}'></span>
</div>
<div class='ability-modifier'>
<button data-i18n='dex' name='roll_DEX' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{dexterity}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{dexterity_modifier})[@{text_ability_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}} {{notes_show=@{roll_show_notes}}} {{notes=@{dexterity_notes}}}'>dex</button>
<span data-i18n='modifier'>modifier</span>
</div>
<div class='ability-score'>
<span data-i18n='dexterity'>dexterity</span><br />
<span data-i18n='score'>score</span>
</div>
<div class='circle'>
<span name='attr_dexterity' title='@{dexterity}'></span>
</div>
</div>
<div class='settings dexterity-settings'>
<label class='sublabel' data-i18n-title='dexterity_score' title='dexterity score'>
<span class='sublabel darkred' data-i18n='score-base'>score base</span>
<input data-i18n-placeholder='0' name='attr_dexterity_score' placeholder='0' spellcheck='false' title='@{dexterity_score}' type='text' value='10' />
</label>
<label class='sublabel' data-i18n-title='dexterity_modifier_temporary' title='dexterity modifier temporary'>
<span class='sublabel darkred' data-i18n='mod-temp'>mod temp</span>
<input data-i18n-placeholder='0' name='attr_dexterity_modifier_temporary' placeholder='0' spellcheck='false' title='@{dexterity_modifier_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='dexterity_score_temporary' title='dexterity score temporary' >
<span class='sublabel darkred' data-i18n='score-temp'>score temp</span>
<input data-i18n-placeholder='0' name='attr_dexterity_score_temporary' placeholder='0' spellcheck='false' title='@{dexterity_score_temporary}' type='text' value='0' />
</label>
<label class='notes' data-i18n-title='dexterity_notes' title='dexterity notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_dexterity_notes' placeholder='notes' spellcheck='false' title='@{dexterity_notes}' value=''></textarea>
</label>
</div>
<div class='display constitution-row'>
<button class='pictos settings-button' data-i18n-title='constitution_settings' name='act_toggle_constitution' title='constitution settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_constitution_modifier' title='@{constitution_modifier}'></span>
</div>
<div class='ability-modifier'>
<button data-i18n='con' name='roll_CON' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{constitution}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{constitution_modifier})[@{text_ability_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}} {{notes_show=@{roll_show_notes}}} {{notes=@{constitution_notes}}}'>con</button>
<span data-i18n='modifier'>modifier</span>
</div>
<div class='ability-score'>
<span data-i18n='constitution'>constitution</span><br/>
<span data-i18n='score'>score</span>
</div>
<div class='circle'>
<span name='attr_constitution' title='@{constitution}'></span>
</div>
</div>
<div class='settings constitution-settings'>
<label class='sublabel' data-i18n-title='constitution_score' title='constitution score'>
<span class='sublabel darkred' data-i18n='score-base'>score base</span>
<input data-i18n-placeholder='0' name='attr_constitution_score' placeholder='0' spellcheck='false' title='@{constitution_score}' type='text' value='10' />
</label>
<label class='sublabel' data-i18n-title='constitution_modifier_temporary' title='constitution modifier temporary'>
<span class='sublabel darkred' data-i18n='mod-temp'>mod temp</span>
<input data-i18n-placeholder='0' name='attr_constitution_modifier_temporary' placeholder='0' spellcheck='false' title='@{constitution_modifier_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='constitution_score_temporary' title='constitution score temporary'>
<span class='sublabel darkred' data-i18n='score-temp'>score temp</span>
<input data-i18n-placeholder='0' name='attr_constitution_score_temporary' placeholder='0' spellcheck='false' title='@{constitution_score_temporary}' type='text' value='0' />
</label>
<label class='notes' data-i18n-title='constitution_notes' title='constitution notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_constitution_notes' placeholder='notes' spellcheck='false' title='@{constitution_notes}' value=''></textarea>
</label>
</div>
<div class='display intelligence-row'>
<button class='pictos settings-button' data-i18n-title='intelligence_settings' name='act_toggle_intelligence' title='intelligence settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_intelligence_modifier' title='@{intelligence_modifier}'></span>
</div>
<div class='ability-modifier'>
<button data-i18n='int' name='roll_INT' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{intelligence}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{intelligence_modifier})[@{text_ability_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}} {{notes_show=@{roll_show_notes}}} {{notes=@{intelligence_notes}}}'>int</button>
<span data-i18n='modifier'>modifier</span>
</div>
<div class='ability-score'>
<span data-i18n='intelligence'>intelligence</span><br />
<span data-i18n='score'>score</span>
</div>
<div class='circle'>
<span name='attr_intelligence' title='@{intelligence}'></span>
</div>
</div>
<div class='settings intelligence-settings'>
<label class='sublabel' data-i18n-title='intelligence_score' title='intelligence score'>
<span class='sublabel darkred' data-i18n='score-base'>score base</span>
<input data-i18n-placeholder='0' name='attr_intelligence_score' placeholder='0' spellcheck='false' title='@{intelligence_score}' type='text' value='10' />
</label>
<label class='sublabel' data-i18n-title='intelligence_modifier_temporary' title='intelligence modifier temporary'>
<span class='sublabel darkred' data-i18n='mod-temp'>mod temp</span>
<input data-i18n-placeholder='0' name='attr_intelligence_modifier_temporary' placeholder='0' spellcheck='false' title='@{intelligence_modifier_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='intelligence_score_temporary' title='intelligence score temporary'>
<span class='sublabel darkred' data-i18n='score-temp'>score temp</span>
<input data-i18n-placeholder='0' name='attr_intelligence_score_temporary' placeholder='0' spellcheck='false' title='@{intelligence_score_temporary}' type='text' value='0' />
</label>
<label class='notes' data-i18n-title='intelligence_notes' title='intelligence notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_intelligence_notes' placeholder='notes' spellcheck='false' title='@{intelligence_notes}' value=''></textarea>
</label>
</div>
<div class='display wisdom-row'>
<button class='pictos settings-button' data-i18n-title='wisdom_settings' name='act_toggle_wisdom' title='wisdom settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_wisdom_modifier' title='@{wisdom_modifier}'></span>
</div>
<div class='ability-modifier'>
<button data-i18n='wis' name='roll_WIS' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{wisdom}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{wisdom_modifier})[@{text_ability_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}} {{notes_show=@{roll_show_notes}}} {{notes=@{wisdom_notes}}}'>wis</button>
<span data-i18n='modifier'>modifier</span>
</div>
<div class='ability-score'>
<span data-i18n='wisdom'>wisdom</span><br />
<span data-i18n='score'>score</span>
</div>
<div class='circle'>
<span name='attr_wisdom' title='@{wisdom}'></span>
</div>
</div>
<div class='settings wisdom-settings'>
<label class='sublabel' data-i18n-title='wisdom_score' title='wisdom score'>
<span class='sublabel darkred' data-i18n='score-base'>score base</span>
<input data-i18n-placeholder='0' name='attr_wisdom_score' placeholder='0' spellcheck='false' title='@{wisdom_score}' type='text' value='10' />
</label>
<label class='sublabel' data-i18n-title='wisdom_modifier_temporary' title='wisdom modifier temporary'>
<span class='sublabel darkred' data-i18n='mod-temp'>mod temp</span>
<input data-i18n-placeholder='0' name='attr_wisdom_modifier_temporary' placeholder='0' spellcheck='false' title='@{wisdom_modifier_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='wisdom_score_temporary' title='wisdom score temporary'>
<span class='sublabel darkred' data-i18n='score-temp'>score temp</span>
<input data-i18n-placeholder='0' name='attr_wisdom_score_temporary' placeholder='0' spellcheck='false' title='@{wisdom_score_temporary}' type='text' value='0' />
</label>
<label class='notes' data-i18n-title='wisdom_notes' title='wisdom notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_wisdom_notes' placeholder='notes' spellcheck='false' title='@{wisdom_notes}' value=''></textarea>
</label>
</div>
<div class='display charisma-row'>
<button class='pictos settings-button' data-i18n-title='charisma_settings' name='act_toggle_charisma' title='charisma settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_charisma_modifier' title='@{attr_charisma_modifier}'></span>
</div>
<div class='ability-modifier'>
<button data-i18n='cha' name='roll_CHA' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{charisma}}} {{subheader=^{ability}}} {{roll01=[[1d20cs20cf1 + (@{charisma_modifier})[@{text_ability_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=ability}} {{notes_show=@{roll_show_notes}}} {{notes=@{charisma_notes}}}'>cha</button>
<span data-i18n='modifier'>modifier</span>
</div>
<div class='ability-score'>
<span data-i18n='charisma'>charisma</span><br />
<span data-i18n='score'>score</span>
</div>
<div class='circle'>
<span name='attr_charisma' title='@{charisma}'></span>
</div>
</div>
<div class='settings charisma-settings'>
<label class='sublabel' data-i18n-title='charisma_score' title='charisma score'>
<span class='sublabel darkred' data-i18n='score-base'>score base</span>
<input data-i18n-placeholder='0' name='attr_charisma_score' placeholder='0' spellcheck='false' title='@{charisma_score}' type='text' value='10' />
</label>
<label class='sublabel' data-i18n-title='charisma_modifier_temporary' title='charisma modifier temporary'>
<span class='sublabel darkred' data-i18n='mod-temp'>mod temp</span>
<input data-i18n-placeholder='0' name='attr_charisma_modifier_temporary' placeholder='0' spellcheck='false' title='@{charisma_modifier_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='charisma_score_temporary' title='charisma score temporary'>
<span class='sublabel darkred' data-i18n='score-temp'>score temp</span>
<input data-i18n-placeholder='0' name='attr_charisma_score_temporary' placeholder='0' spellcheck='false' title='@{charisma_score_temporary}' type='text' value='0' />
</label>
<label class='notes' data-i18n-title='charisma_notes' title='charisma notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_charisma_notes' placeholder='notes' spellcheck='false' title='@{charisma_notes}' value=''></textarea>
</label>
</div>
</div>
<!-- Class DCs etc. -->
<div class='classdc background-color'>
<h1 data-i18n='class_dc'>class dc</h1>
<div class='grid display'>
<button class='pictos settings-button' data-i18n-title='class_dc_settings' name='act_toggle_class_dc' title='class dc settings' type='action'>
y
</button>
<div class='circle'>
<span name='attr_class_dc'></span>
</div>
<div class='dcbase sublabel' class='dcbase'>
<span class='symbol'>=</span>
<span class='sublabel' data-i18n='dc_base'>dc base</span>
<span class='sublabel' data-i18n='10'><b>10</b></span>
</div>
<label class='sublabel' data-i18n-title='class_dc_key_ability' title='class dc key ability'>
<span class='sublabel darkred' data-i18n='key'>key</span>
<span name='attr_class_dc_key_ability'></span>
</label>
<label class='sublabel' data-i18n-title='class_dc_proficiency' title='class dc proficiency'>
<span class='sublabel darkred' data-i18n='prof'>prof</span>
<span>
<span class="inline" name='attr_class_dc_proficiency_display'></span>
<span class="inline" name='attr_class_dc_proficiency' title='@{class_dc_proficiency}'></span>
</span>
</label>
<label class='sublabel' data-i18n-title='class_dc_item' title='class dc item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<span name='attr_class_dc_item' title='@{class_dc_item}'></span>
</label>
<label class='sublabel' data-i18n-title='class_dc_temporary' title='class dc temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<span name='attr_class_dc_temporary' title='@{class_dc_temporary}'></span>
</label>
</div>
<div class='grid settings'>
<div class='ability-select'>
<label data-i18n-title='class_dc_key_ability_select' title='class dc key ability select'>
<select name='attr_class_dc_key_ability_select' title='@{class_dc_key_select}'>
<option data-i18n='str' value='@{strength_modifier}' selected>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='class_dc_key_ability' title='class dc key ability'>
<input data-i18n-placeholder='0' name='attr_class_dc_key_ability' placeholder='0' spellcheck='false' title='@{class_dc_key_ability}' type='text' value='' />
</label>
</div>
<label class='sublabel' data-i18n-title='class_dc_rank_select' title='class dc rank select'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_class_dc_rank' title='@{class_dc_rank}'>
<option data-i18n='untrained' value='0' selected>-</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='class_dc_item' title='class dc item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_class_dc_item' placeholder='0' spellcheck='false' title='@{class_dc_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='class_dc_temporary' title='class dc temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_class_dc_temporary' placeholder='0' spellcheck='false' title='@{class_dc_temporary}' type='text' value='0' />
</label>
<label data-i18n-title='class_dc_notes' title='class dc notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_class_dc_notes' placeholder='notes' spellcheck='false' title='@{class_dc_notes}' value=''></textarea>
</label>
</div>
</div>
<!-- SPEED -->
<div class='speed grid'>
<h1 data-i18n='speed'>speed</h1>
<label data-i18n-title='speed_in_feet' title='speed in feet'>
<input data-i18n-placeholder='30' name='attr_speed' placeholder='30' spellcheck='false' title='@{speed}' type='text' value='' />
</label>
<span data-i18n='feet'>feet</span>
<div>
<h3 data-i18n='movement_notes'>movement types & notes</h3>
<label data-i18n-title='movement_types_speed_notes' title='movement types & speed notes'>
<textarea data-i18n-placeholder='notes' name='attr_speed_notes' placeholder='notes' spellcheck='false' title='@{speed_notes}' value=''></textarea>
</label>
</div>
</div>
<!-- Attacks - Melee -->
<div class='strikes melee background-color'>
<h1 data-i18n='melee_strikes'>melee strikes</h1>
<fieldset class='repeating_melee-strikes'>
<input name='attr_weapon_strike' type='hidden' value='0' />
<input name='attr_weapon_display' type='hidden' value='+0' />
<input name='attr_damage_display' type='hidden' value='0' />
<input name='attr_damage_info' type='hidden' value='' />
<input name='attr_damage_dice_query' type='hidden' value='@{damage_dice}' />
<input name='attr_weapon_roll' type='hidden' value='{{roll01_name=^{attack}}} {{roll01=[[1d20cs20cf1 + [@{weapon_proficiency_display}] @{weapon_strike}[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=attack}} {{roll01_info=@{weapon_traits}}} {{roll01_critical=1}}' />
<input name='attr_damage_roll' type='hidden' value='{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice_query}@{damage_dice_size} + @{damage_ability}[@{text_ability_modifier}] + @{damage_weapon_specialization}[WEAPON SPECIALIZATION] + @{damage_temporary}[TEMP] + @{damage_other}[OTHER] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_info}}}' />
<input name='attr_damage_critical_roll' type='hidden' value='{{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice_query}@{damage_dice_size} + @{damage_ability}[@{text_ability_modifier}] + @{damage_weapon_specialization}[WEAPON SPECIALIZATION] + @{damage_temporary}[TEMP] + @{damage_other}[OTHER] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_info}}}' />
<input name='attr_damage_additional_roll' type='hidden' value='{{roll04_name=^{damage_additional}}} {{roll04=@{damage_additional}}} {{roll04_type=damage}}' />
<input name="attr_weapon_proficiency_display" type="hidden" value ="" />
<!-- Optional Critical Damage handling -->
<button name='roll_CRITICAL_DAMAGE' style='display: none;' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_critical_roll}'></button>
<input name='attr_roll_critical_damage_button' type='hidden' value='{{roll03misc=[^{roll} ^{critical_damage}](~repeating_melee-strikes_CRITICAL_DAMAGE) }}' />
<input name='attr_roll_critical_damage' type='hidden' value='@{damage_critical_roll}' />
<!-- Show & hide hidden areas -->
<input class='toggles' name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid display'>
<button class='pictos settings-button' data-i18n-title='melee_weapon_settings' name='act_settings' title='melee weapon settings' type='action'>
y
</button>
<span class='sublabel darkred' data-i18n='weapon'>weapon</span>
<button class='display-weapon' data-i18n-title='weapon_name_display_attack_and_damage_roll' name='roll_ATTACK-DAMAGE' title='weapon name display & attack and damage roll' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{weapon_roll} @{damage_roll} @{roll_critical_damage} @{damage_additional_roll}'>
<span name='attr_weapon'></span>
</button>
<button data-i18n-title='show_or_hide_weapon_notes' name='act_collapse' title='show or hide weapon notes' type='action'>
4
</button>
<span class='sublabel darkred' data-i18n='atk'>atk</span>
<span class='sublabel darkred' data-i18n='damage'>damage</span>
<button class='display-attack' data-i18n-title='weapon_attack_display_attack_and_attack_only_roll' name='roll_ATTACK' title='weapon attack display & attack only roll' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{weapon_roll}'>
<span class='weapon' name='attr_weapon_display'></span>
</button>
<button data-i18n-title='weapon_damage_display_and_damage_only_roll' class='display-damage' name='roll_DAMAGE' title='weapon damage display & damage only roll' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{melee_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_roll} @{roll_critical_damage} @{damage_additional_roll}'>
<span class='weapon' name='attr_damage_display'></span>
</button>
<span class='collapse' name='attr_weapon_notes'></span>
</div>
<div class='settings'>
<div class='grid strikes-grid'>
<h2 data-i18n='weapon'>weapon</h2>
<label data-i18n-title='melee_weapon_name' title='melee weapon name'>
<input data-i18n-placeholder='weapon' name='attr_weapon' placeholder='weapon' spellcheck='false' title='@{weapon}' type='text' value='' />
</label>
</div>
<div class='grid strikes-grid'>
<div class='circle'>
<span name='attr_weapon_strike' title='@{weapon_strike}'></span>
</div>
<span class='symbol'>=</span>
<div class='ability-select'>
<label data-i18n-title='melee_weapon_strike_ability_select' title='melee weapon strike ability select'>
<select name='attr_weapon_ability_select' title='@{weapon_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}' selected>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='melee_weapon_strike_ability' title='melee weapon strike ability'>
<input data-i18n-placeholder='0' name='attr_weapon_ability' placeholder='0' spellcheck='false' title='@{weapon_ability}' type='text' value='0' />
</label>
</div>
<label data-i18n-title='melee_weapon_strike_rank' title='melee weapon strike rank'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_weapon_rank' title='@{weapon_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='melee_weapon_strike_item' title='melee weapon strike item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_weapon_item' placeholder='0' spellcheck='false' title='@{weapon_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='melee_weapon_strike_temporary' title='melee weapon strike temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_weapon_temporary' placeholder='0' spellcheck='false' title='@{weapon_temporary}' type='text' value='0' />
</label>
</div>
<div class='grid strikes-grid'>
<label data-i18n-title='melee_weapon_traits' title='melee weapon traits'>
<span class='sublabel darkred' data-i18n='traits'>traits</span>
<input data-i18n-placeholder='traits' name='attr_weapon_traits' placeholder='traits' spellcheck='false' title='@{weapon_traits}' type='text' value='' />
</label>
</div>
<div class='grid damage-grid'>
<h2 data-i18n='damage'>damage</h2>
<label class='sublabel' data-i18n-title='melee_weapon_damage_number_of_dice' title='melee weapon damage number of dice'>
<span class='sublabel darkred' data-i18n='dice'>dice</span>
<input data-i18n-placeholder='1' name='attr_damage_dice' placeholder='1' title='@{damage_dice}' type='number' value='1' />
</label>
<label class='sublabel' data-i18n-title='melee_weapon_damage_die_size' title='melee weapon damage die size'>
<span class='sublabel darkred' data-i18n='size'>size</span>
<input data-i18n-placeholder='d6' name='attr_damage_dice_size' placeholder='d6' spellcheck='false' title='@{damage_dice_size}' type='text' value='d6' />
</label>
<span class='symbol'>+</span>
<div class='ability-select'>
<label data-i18n-title='melee_weapon_damage_ability_select' title='melee weapon damage ability select'>
<select name='attr_damage_ability_select' title='@{damage_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}' selected>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='melee_weapon_damage_ability' title='melee weapon damage ability'>
<input data-i18n-placeholder='0' name='attr_damage_ability' placeholder='0' spellcheck='false' title='@{damage_ability}' type='text' value='0' />
</label>
</div>
<label data-i18n-title='melee_bludgeoning_damage' title='melee bludgeoning damage'>
<span data-i18n='b'>b</span>
<input name='attr_damage_b' title='@{damage_b}' type='checkbox' value='1' />
</label>
<label data-i18n-title='melee_piercing_damage' title='melee piercing damage'>
<span data-i18n='p'>p</span>
<input name='attr_damage_p' title='@{damage_p}' type='checkbox' value='1' />
</label>
<label data-i18n-title='melee_slashing_damage' title='melee slashing damage'>
<span data-i18n='s'>s</span>
<input name='attr_damage_s' title='@{damage_s}' type='checkbox' value='1' />
</label>
<label class='sublabel' data-i18n-title='melee_weapon_specialization_damage' title='melee weapon specialization damage'>
<span class='sublabel darkred' data-i18n='w_spec'>w spec</span>
<input data-i18n-placeholder='0' name='attr_damage_weapon_specialization' placeholder='0' spellcheck='false' title='@{damage_weapon_specialization}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='melee_weapon_temporary_damage' title='melee weapon temporary damage'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input name='attr_damage_temporary' spellcheck='false' title='@{damage_temporary}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='melee_weapon_other_damage' title='melee weapon other damage'>
<span class='sublabel darkred' data-i18n='other'>other</span>
<input data-i18n-placeholder='0' name='attr_damage_other' placeholder='0' spellcheck='false' title='@{damage_other}' type='text' value='0' />
</label>
<label data-i18n-title='melee_weapon_damage_supplementary_effects' title='melee weapon damage supplementary effects'>
<span class='sublabel darkred' data-i18n='effects'>effects</span>
<input data-i18n-placeholder='effects' name='attr_damage_effects' placeholder='effects' spellcheck='false' title='@{damage_effects}' type='text' value='' />
</label>
<label data-i18n-title='melee_attack_damage_additional' title='melee attack additional damage'>
<span class='sublabel darkred' data-i18n='damage_additional'>additional damage</span>
<input data-i18n-placeholder='damage_additional_placeholder' name='attr_damage_additional' placeholder='[[1d6]] acid, [[1d6]] chaotic, and [[1d6]] evil, and [[2d6]] slashing vs. plants' spellcheck='false' title='@{damage_additional}' type='text' value='' />
</label>
</div>
<h2 data-i18n='notes'>Notes</h2>
<label data-i18n-title='melee_weapon_notes' title='melee weapon notes'>
<textarea data-i18n-placeholder='notes' name='attr_weapon_notes' placeholder='notes' spellcheck='false' title='@{weapon_notes}' value=''></textarea>
</label>
</div>
</fieldset>
</div>
<!-- Attacks - Ranged -->
<div class='strikes ranged background-color '>
<h1 data-i18n='ranged_strikes'>ranged strikes</h1>
<fieldset class='repeating_ranged-strikes'>
<input name='attr_weapon_strike' type='hidden' value='0' />
<input name='attr_weapon_display' type='hidden' value='+0' />
<input name='attr_damage_display' type='hidden' value='0' />
<input name='attr_damage_info' type='hidden' value='' />
<input name='attr_damage_dice_query' type='hidden' value='@{damage_dice}' />
<input name='attr_weapon_roll' type='hidden' value='{{roll01_name=^{attack}}} {{roll01=[[1d20cs20cf1 + [@{weapon_proficiency_display}] @{weapon_strike}[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=attack}} {{roll01_info=@{weapon_traits}}} {{roll01_critical=1}}' />
<input name='attr_damage_roll' type='hidden' value='{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice_query}@{damage_dice_size} + @{damage_ability}[@{text_ability_modifier}] + @{damage_weapon_specialization}[WEAPON SPECIALIZATION] + @{damage_temporary}[TEMP] + @{damage_other}[OTHER] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_info}}}' />
<input name='attr_damage_critical_roll' type='hidden' value='{{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice_query}@{damage_dice_size} + @{damage_ability}[@{text_ability_modifier}] + @{damage_weapon_specialization}[WEAPON SPECIALIZATION] + @{damage_temporary}[TEMP] + @{damage_other}[OTHER] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_info}}}' />
<input name='attr_damage_additional_roll' type='hidden' value='{{roll04_name=^{damage_additional}}} {{roll04=@{damage_additional}}} {{roll04_type=damage}}' />
<input name="attr_weapon_proficiency_display" type="hidden" value ="" />
<!-- Optional Critical Damage handling -->
<button name='roll_CRITICAL_DAMAGE' style='display: none;' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_critical_roll}'></button>
<input name='attr_roll_critical_damage_button' type='hidden' value='{{roll03misc=[^{roll} ^{critical_damage}](~repeating_ranged-strikes_CRITICAL_DAMAGE) }}' />
<input name='attr_roll_critical_damage' type='hidden' value='@{damage_critical_roll}' />
<!-- Show & hide hidden areas -->
<input class='toggles' name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid display'>
<button class='pictos settings-button' data-i18n-title='range_weapon_settings' name='act_settings' title='range weapon settings' type='action'>
y
</button>
<span class='sublabel darkred' data-i18n='weapon'>weapon</span>
<button data-i18n-title='weapon_name_display_attack_and_damage_roll' class='display-weapon' name='roll_ATTACK-DAMAGE' type='roll' title='weapon name display & attack and damage roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{info01_name=^{range}}} {{info01=@{weapon_range}}} {{notes=@{weapon_notes}}} @{weapon_roll} @{damage_roll} @{roll_critical_damage} @{damage_additional_roll}'>
<span name='attr_weapon'></span>
</button>
<button data-i18n-title='show_or_hide_weapon_notes' name='act_collapse' title='show or hide weapon notes' type='action'>
4
</button>
<span class='sublabel darkred' data-i18n='atk'>atk</span>
<span class='sublabel darkred' data-i18n='damage'>damage</span>
<button class='display-attack' data-i18n-title='weapon_attack_display_attack_and_attack_only_roll' name='roll_ATTACK' type='roll' title='weapon attack display & attack only roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{info01_name=^{range}}} {{info01=@{weapon_range}}} {{notes=@{weapon_notes}}} @{weapon_roll}'>
<span class='weapon' name='attr_weapon_display'></span>
</button>
<button class='display-damage' data-i18n-title='weapon_damage_display_and_damage_only_roll' name='roll_DAMAGE' title='weapon damage display & damage only roll' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{weapon}}} {{subheader=^{ranged_strike}}} {{notes_show=@{roll_show_notes}}} {{notes=@{weapon_notes}}} @{damage_roll} @{roll_critical_damage} @{damage_additional_roll}'>
<span class='weapon' name='attr_damage_display'></span>
</button>
<span class='collapse' name='attr_weapon_notes'></span>
</div>
<!-- Settings area with all the inputs -->
<div class='settings'>
<div class='grid strikes-grid'>
<h2 data-i18n='weapon'>weapon</h2>
<label data-i18n-title='range_weapon_name' title='range weapon name'>
<input data-i18n-placeholder='weapon' name='attr_weapon' placeholder='weapon' spellcheck='false' title='@{weapon}' type='text' value="" />
</label>
<div class='circle'>
<span name='attr_weapon_strike' title='@{weapon_strike}'></span>
</div>
<span class='symbol'>=</span>
<div class='ability-select'>
<label data-i18n-title='range_weapon_strike_ability_select' title='range weapon strike ability select'>
<select name='attr_weapon_ability_select' title='@{weapon_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}' selected>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='range_weapon_ability' title='range weapon ability'>
<input data-i18n-placeholder='0' name='attr_weapon_ability' placeholder='0' spellcheck='false' title='@{weapon_ability}' type='text' value='0' />
</label>
</div>
<label data-i18n-title='range_weapon_strike_rank' title='range weapon strike rank'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_weapon_rank' title='@{weapon_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='range_weapon_strike_item' title='range weapon item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_weapon_item' placeholder='0' spellcheck='false' title='@{weapon_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='range_weapon_strike_temporary' title='range weapon temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_weapon_temporary' placeholder='0' spellcheck='false' title='@{weapon_temporary}' type='text' value='0' />
</label>
</div>
<div>
<label data-i18n-title='ranged_weapon_range' title='ranged weapon range'>
<span class='sublabel darkred' data-i18n='range'>range</span>
<input data-i18n-placeholder='100ft' name='attr_weapon_range' placeholder='100 ft.' spellcheck='false' title='@{weapon_range}' type='text' value='' />
</label>
</div>
<div>
<label data-i18n-title='range_weapon_traits' title='ranged weapon traits'>
<span class='sublabel darkred' data-i18n='traits'>traits</span>
<input name='attr_weapon_traits' placeholder='traits' spellcheck='false' title='@{weapon_traits}' type='text' value='' />
</label>
</div>
<div class='grid damage-grid'>
<h2 data-i18n='damage'>damage</h2>
<label class='sublabel' data-i18n-title='range_weapon_damage_number_of_dice' title='range weapon damage number of dice'>
<span class='sublabel darkred' data-i18n='dice'>dice</span>
<input name='attr_damage_dice' placeholder='1' title='@{damage_dice}' type='number' value='1' />
</label>
<label class='sublabel' data-i18n-title='range_weapon_damage_die_size' title='range weapon damage die size'>
<span class='sublabel darkred' data-i18n='size'>size</span>
<input name='attr_damage_dice_size' placeholder='d6' spellcheck='false' title='@{damage_dice_size}' type='text' value='d6' />
</label>
<span class='symbol'>+</span>
<div class='ability-select'>
<label data-i18n-title='range_weapon_damage_ability_select' title='range weapon damage ability select'>
<select name='attr_damage_ability_select' title='@{damage_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='str_half' value='@{strength_modifier_half}'>str half</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='special' value='custom' selected>special</option>
</select>
</label>
<label data-i18n-title='range_weapon_damage_ability' title='range weapon damage ability'>
<input data-i18n-placeholder='0' name='attr_damage_ability' placeholder='0' spellcheck='false' title='@{damage_ability}' type='text' value='0' />
</label>
</div>
<label data-i18n-title='range_bludgeoning_damage' title='range bludgeoning damage'>
<span data-i18n='b'>b</span>
<input name='attr_damage_b' title='@{damage_b}' type='checkbox' value='1' />
</label>
<label data-i18n-title='range_piercing_damage'' title='range piercing damage'>
<span data-i18n='p'>p</span>
<input name='attr_damage_p' title='@{damage_p}' type='checkbox' value='1' />
</label>
<label data-i18n-title='range_slashing_damage' title='range slashing damage'>
<span data-i18n='s'>s</span>
<input name='attr_damage_s' title='@{damage_s}' type='checkbox' value='1' />
</label>
<label data-i18n-title='range_weapon_specialization_damage' title='range weapon specialization damage'>
<span class='sublabel darkred' data-i18n='w_spec'>w spec</span>
<input data-i18n-placeholder='0' name='attr_damage_weapon_specialization' placeholder='0' spellcheck='false' title='@{damage_weapon_specialization}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='range_weapon_temporary_damage' title='range weapon temporary damage'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_damage_temporary' placeholder='0' spellcheck='false' title='@{damage_temporary}' type='text' value='0' />
</label>
<label data-i18n-title='range_weapon_other_damage' title='range weapon other damage'>
<span class='sublabel darkred' data-i18n='other'>other</span>
<input data-i18n-placeholder='0' name='attr_damage_other' placeholder='0' spellcheck='false' title='@{damage_other}' type='text' value='0' />
</label>
<label data-i18n-title='range_weapon_damage_supplementary_effects' title='range weapon damage supplementary effects'>
<span class='sublabel darkred' data-i18n='effects'>effects</span>
<input data-i18n-placeholder='effects' name='attr_damage_effects' placeholder='effects' spellcheck='false' title='@{damage_effects}' type='text' value='' />
</label>
<label data-i18n-title='melee_attack_damage_additional' title='melee attack additional damage'>
<span class='sublabel darkred' data-i18n='damage_additional'>additional damage</span>
<input data-i18n-placeholder='damage_additional_placeholder' name='attr_damage_additional' placeholder='[[1d6]] acid, [[1d6]] chaotic, and [[1d6]] evil, and [[2d6]] slashing vs. plants' spellcheck='false' title='@{damage_additional}' type='text' value='' />
</label>
</div>
<h2 data-i18n='notes'>Notes</h2>
<label data-i18n-title='range_weapon_notes' title='range weapon notes'>
<textarea data-i18n-placeholder='notes' name='attr_weapon_notes' placeholder='notes' spellcheck='false' title='@{weapon_notes}' value=''></textarea>
</label>
</div>
</fieldset>
</div>
<div class='weapon-proficiences background-color'>
<h1 data-i18n='weapon_proficiencies'>weapon proficiencies</h1>
<div class='grid weapon-proficiences-grid'>
<h2 data-i18n='simple'>simple</h2>
<label data-i18n-title='simple_weapon_proficiencies_rank' title='simple weapon proficiencies rank'>
<select name='attr_weapon_proficiencies_simple_rank' title='@{weapon_proficiencies_simple_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<h2 data-i18n='martial'>martial</h2>
<label data-i18n-title='martial_weapon_proficiencies_rank' title='martial weapon proficiencies rank'>
<select name='attr_weapon_proficiencies_martial_rank' title='@{weapon_proficiencies_martial_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
</div>
<fieldset class='repeating_weapon-proficiencies'>
<input name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid repeating-weapon-proficiences-grid'>
<h2 data-i18n='other'>other</h2>
<label data-i18n-title='other_weapon_proficiencies_name' title='other weapon proficiencies name'>
<input data-i18n-placeholder='name' name='attr_weapon_proficiencies_other' placeholder='name' spellcheck='false' title='@{weapon_proficiencies_other}' type='text' value='' />
</label>
<label data-i18n-title='other_weapon_proficiencies_rank' title='other weapon proficiencies rank'>
<select name='attr_weapon_proficiencies_other_rank' title='@{weapon_proficiencies_other_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
</div>
</fieldset>
</div>
</div>
<div class="column">
<div class="armorclass background-color"><!--- ARMOR CLASS column --->
<h1 data-i18n='armor_class'>armor class</h1>
<!---AC Base row -->
<div class='grid armorclass-main'>
<button class='pictos settings-button' data-i18n-title='armor_class_settings' name='act_toggle_armor_class' title='armor class settings' type='action'>
y
</button>
<div class='circle'>
<label data-i18n-title='ac' title='ac'>
<span data-i18n='ac'>ac</span>
<span class='ac-circle' name='attr_armor_class' title='@{ac}'></span>
</label>
</div>
<div class='dcbase sublabel'>
<span class='symbol'>=</span>
<span class='sublabel' data-i18n='dc_base'>dc base</span>
<span class='sublabel' data-i18n='10'><b>10</b></span>
</div>
<div class='armor-cap'>
<label class='sublabel' data-i18n-title='armor_class_modifier' title='armor class modifier'>
<span class='sublabel darkred' data-i18n='mod'>mod</span>
<span name='attr_armor_class_ability' title='@{armor_class_ability}'></span>
</label>
<span data-i18n='or'>or</span>
<div>
<label class='sublabel' data-i18n-title='cap' title='cap'>
<span class='sublabel darkred' data-i18n='cap'>cap</span>
<span name='attr_armor_class_cap' title='@{armor_class_cap}'></span>
</label>
</div>
</div>
<label class='sublabel' data-i18n-title='armor_class_proficiency' title='armor class proficiency'>
<span class='sublabel darkred' data-i18n='prof'>prof</span>
<span>
<span class="inline" name='attr_armor_class_proficiency_display'></span>
<span class="inline" name='attr_armor_class_proficiency' title='@{armor_class_proficiency}'></span>
</span>
</label>
<label class='sublabel' data-i18n-title='armor_class_item' title='armor class item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<span name='attr_armor_class_item' title='@{armor_class_item}'></span>
</label>
<label class='sublabel' data-i18n-title='armor_class_temporary' title='armor class temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<span name='attr_armor_class_temporary' title='@{armor_class_temporary}'></span>
</label>
<div class='settings grid'>
<!-- The Dex & Cap section in Armor Class -->
<div class='armor-cap'>
<div class='ability-select'>
<label data-i18n-title='armor_class_ability_select' title='armor class ability select'>
<select name='attr_armor_class_ability_select' title='@{armor_class_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}' selected>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='armor_class_ability_input' title='armor class ability input'>
<input data-i18n-placeholder='0' name='attr_armor_class_ability' placeholder='0' spellcheck='false' title='@{armor_class_ability}' type='text' value='' />
</label>
</div>
<span data-i18n='or'>or</span>
<label data-i18n-title='armor_class_cap' title='armor class cap'>
<span class='sublabel darkred' data-i18n='cap'>cap</span>
<input data-i18n-placeholder='3' name='attr_armor_class_cap' placeholder='3' spellcheck='false' title='@{armor_class_cap}' type='text' value='' />
</label>
</div>
<label class='sublabel' data-i18n-title='armor_class_rank_select' title='armor class rank select'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_armor_class_dc_rank' title='@{armor_class_dc_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='armor_class_item' title='armor class item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_armor_class_item' placeholder='0' spellcheck='false' title='@{armor_class_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='armor_class_temporary' title='armor class temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_armor_class_temporary' placeholder='0' spellcheck='false' title='@{armor_class_temporary}' type='text' value='0' />
</label>
<!-- Unarmored row -->
<div class='grid unarmored-grid'>
<div>
<h2 data-i18n='unarmored'>unarmored</h2>
<label data-i18n-title='unarmed_rank_select' title='unarmored rank select'>
<select name='attr_armor_class_unarmored_rank' title='@{armor_class_unarmored_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
</div>
<div>
<h2 data-i18n='light'>light</h2>
<label data-i18n-title='light_armor_rank_select' title='light armor rank select'>
<select name='attr_armor_class_light_rank' title='@{armor_class_light_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
</div>
<div>
<h2 data-i18n='medium'>medium</h2>
<label data-i18n-title='medium_armor_rank_select' title='medium armor rank select'>
<select name='attr_armor_class_medium_rank' title='@{armor_class_medium_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
</div>
<div>
<h2 data-i18n='heavy'>heavy</h2>
<label data-i18n-title='heavy_armor_rank_select' title='heavy armor rank select'>
<select name='attr_armor_class_heavy_rank' title='@{armor_class_heavy_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
</div>
</div>
<label data-i18n-title='armor_class_notes' title='armor class notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_armor_class_notes' placeholder='notes' spellcheck='false' title='@{armor_class_notes}' value=''></textarea>
</label>
</div>
</div>
<hr />
<!-- Shield row -->
<div class='grid shield-grid'>
<button class='pictos settings-button' data-i18n-title='shield_settings' name='act_toggle_shield' title='shield settings' type='action'>
y
</button>
<div class='circle'>
<label class='shield display'>
<span data-i18n='shield'>shield</span>
<span name='attr_armor_class_shield' title='@{armor_class_shield}'></span>
</label>
</div>
<label class='sublabel' data-i18n-title='shield_bonus_to_ac' title='shield bonus to ac'>
<span class='sublabel darkred' data-i18n='bonus'>bonus</span>
<span name='attr_armor_class_shield_ac_bonus' title='@{armor_class_shield_ac_bonus}'></span>
</label>
<label class='sublabel' data-i18n-title='shield_temporary' title='shield temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<span name='attr_armor_class_shield_temporary' title='@{armor_class_shield_temporary}'></span>
</label>
<label class='sublabel' data-i18n-title='shield_hardness' title='shield hardness'>
<span class='sublabel darkred' data-i18n='hardness'>hardness</span>
<span name='attr_armor_class_shield_hardness' title='@{armor_class_shield_hardness}'></span>
</label>
<label class='sublabel' data-i18n-title='shield_bt' title='shield bt'>
<span class='sublabel darkred' data-i18n='bt'>bt</span>
<span name='attr_armor_class_shield_bt' title='@{armor_class_shield_bt}'></span>
</label>
<div class='shield-hp'>
<label class='sublabel' data-i18n-title='shield_hp' title='shield hp'>
<span class='sublabel darkred' data-i18n='hp'>hp</span>
<input data-i18n-placeholder='0' name='attr_armor_class_shield_hp' placeholder='0' spellcheck='false' title='@{armor_class_shield_hp}' type='text' value='6' />
</label>
<span>/</span>
<label class='sublabel' data-i18n-title='shield_hp_max' title='shield hp max'>
<span class='sublabel darkred' data-i18n='max'>max</span>
<span name='attr_armor_class_shield_max' title='@{armor_class_shield_max}'></span>
</label>
</div>
<div class='settings grid'>
<label data-i18n-title='shield_bonus_to_ac' title='shield bonus to ac'>
<span class='sublabel darkred' data-i18n='bonus'>bonus</span>
<input data-i18n-placeholder='0' name='attr_armor_class_shield_ac_bonus' placeholder='0' spellcheck='false' title='@{armor_class_shield_ac_bonus}' type='text' value='0' />
</label>
<label data-i18n-title='shield_temporary' title='shield temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_armor_class_shield_temporary' placeholder='0' spellcheck='false' title='@{armor_class_shield_temporary}' type='text' value='0' />
</label>
<label data-i18n-title='shield_hardness' title='shield hardness'>
<span class='sublabel darkred' data-i18n='hardness'>hardness</span>
<input data-i18n-placeholder='0' name='attr_armor_class_shield_hardness' placeholder='0' spellcheck='false' title='@{armor_class_shield_hardness}' type='text' value='3' />
</label>
<label data-i18n-title='shield_bt' title='shield bt'>
<span class='sublabel darkred' data-i18n='bt'>bt</span>
<input data-i18n-placeholder='0' name='attr_armor_class_shield_bt' placeholder='0' spellcheck='false' title='@{armor_class_shield_bt}' type='text' value='3' />
</label>
<div class='shield-hp'>
<label data-i18n-title='shield_hp_max' title='shield hp max'>
<span class='sublabel darkred' data-i18n='hp_max'>hp max</span>
<input data-i18n-placeholder='0' name='attr_armor_class_shield_max' placeholder='0' spellcheck='false' title='@{armor_class_shield_max}' type='text' value='6' />
</label>
</div>
<label data-i18n-title='shield_notes' title='shield notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_armor_class_shield_notes' placeholder='notes' spellcheck='false' title='@{armor_class_shield_notes}' value=''></textarea>
</label>
</div>
</div>
</div>
<div class="savingthrows background-color"><!-- Saving Throws -->
<h1 data-i18n='saving_throws'>saving throws</h1>
<div class='grid display'>
<button class='pictos settings-button'data-i18n-title='saving_throw_settings' name='act_toggle_saving_throws' title='saving throw settings' type='action'>
y
</button>
<div class='savingthrows-fortitude'>
<button class='redstroke' data-i18n='fortitude' name='roll_FORT' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{fortitude}}} {{subheader=^{saving_throw}}} {{roll01=[[1d20cs20cf1 + [@{saving_throws_fortitude_proficiency_display}] (@{saving_throws_fortitude})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=saving-throw}} {{notes_show=@{roll_show_notes}}} {{notes=@{saving_throws_notes}}}'>fortitude</button>
<div class='circle' title="@{saving_throws_fortitude}">
<span class="proficiency" name='attr_saving_throws_fortitude_proficiency_display'></span>
<span name='attr_saving_throws_fortitude'></span>
</div>
</div>
<div class='savingthrows-reflex'>
<button class='redstroke' data-i18n='reflex' name='roll_REF' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{reflex}}} {{subheader=^{saving_throw}}} {{roll01=[[1d20cs20cf1 + [@{saving_throws_reflex_proficiency_display}] (@{saving_throws_reflex})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=saving-throw}} {{notes_show=@{roll_show_notes}}} {{notes=@{saving_throws_notes}}}'>reflex</button>
<div class='circle' title="@{saving_throws_reflex}">
<span class="proficiency" name='attr_saving_throws_reflex_proficiency_display'></span>
<span name='attr_saving_throws_reflex'></span>
</div>
</div>
<div class='savingthrows-will'>
<button class='redstroke' data-i18n='will' name='roll_WILL' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{will}}} {{subheader=^{saving_throw}}} {{roll01=[[1d20cs20cf1 + [@{saving_throws_will_proficiency_display}] (@{saving_throws_will})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=saving-throw}} {{notes_show=@{roll_show_notes}}} {{notes=@{saving_throws_notes}}}'>will</button>
<div class='circle' title="@{saving_throws_will}">
<span class="proficiency" name='attr_saving_throws_will_proficiency_display'></span>
<span name='attr_saving_throws_will'></span>
</div>
</div>
</div>
<div class='grid settings'>
<div class='grid'>
<div class='ability-select'>
<label data-i18n-title='fortitude_saving_throw_ability_select' title='fortitude saving throw ability select'>
<select name='attr_saving_throws_fortitude_ability_select' title='@{saving_throws_fortitude_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}' selected>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='fortitude_saving_throw_ability' title='fortitude saving throw ability'>
<input data-i18n-placeholder='0' name='attr_saving_throws_fortitude_ability' placeholder='0' spellcheck='false' title='@{saving_throws_fortitude_ability}' type='text' value='' />
</label>
</div>
<label class='sublabel' data-i18n-title='fortitude_saving_throw_rank_select' title='fortitude saving throw rank select'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_saving_throws_fortitude_rank' title='@{saving_throws_fortitude_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='fortitude_item' title='fortitude item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_saving_throws_fortitude_item' placeholder='0' spellcheck='false' title='@{saving_throws_fortitude_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='fortitude_temporary' title='fortitude temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_saving_throws_fortitude_temporary' placeholder='0' spellcheck='false' title='@{saving_throws_fortitude_temporary}' type='text' value='0' />
</label>
</div>
<div class='grid'>
<div class='ability-select'>
<label data-i18n-title='reflex_saving_throw_ability_select' title='reflex saving throw ability select'>
<select name='attr_saving_throws_reflex_ability_select' title='@{saving_throws_reflex_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}' selected>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}'>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='reflex_saving_throw_ability' title='reflex saving throw ability'>
<input data-i18n-placeholder='0' name='attr_saving_throws_reflex_ability' placeholder='0' spellcheck='false' title='@{attr_saving_throws_reflex_ability}' type='text' value='' />
</label>
</div>
<label class='sublabel' data-i18n-title='reflex_saving_throw_rank_select' title='reflex saving throw rank select'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_saving_throws_reflex_rank' title='@{saving_throws_reflex_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='reflex_item' title='reflex item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_saving_throws_reflex_item' placeholder='0' spellcheck='false' title='@{saving_throws_reflex_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='reflex_temporary' title='reflex temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_saving_throws_reflex_temporary' placeholder='0' spellcheck='false' title='@{saving_throws_reflex_temporary}' type='text' value='0' />
</label>
</div>
<div class='grid'>
<div class='ability-select'>
<label data-i18n-title='will_saving_throw_ability_select' title='will saving throw ability select'>
<select name='attr_saving_throws_will_ability_select' title='@{saving_throws_will_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}' selected>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='will_saving_throw_ability' title='will saving throw ability'>
<input data-i18n-placeholder='0' name='attr_saving_throws_will_ability' placeholder='0' spellcheck='false' title='@{saving_throws_will_ability}' type='text' value='' />
</label>
</div>
<label class='sublabel' data-i18n-title='will_saving_throw_rank_select' title='will saving throw rank select'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_saving_throws_will_rank' title='@{saving_throws_will_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='will_item' title='will item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_saving_throws_will_item' placeholder='0' spellcheck='false' title='@{saving_throws_will_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='will_temporary' title='will temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_saving_throws_will_temporary' placeholder='0' spellcheck='false' title='@{saving_throws_will_temporary}' type='text' value='0' />
</label>
</div>
<label data-i18n-title='saving_throw_notes' title='saving throw notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_saving_throws_notes' placeholder='notes' spellcheck='false' title='@{saving_throws_notes}' value=''></textarea>
</label>
</div>
</div>
<div class="skills background-color">
<h1 data-i18n="skills">skills</h1>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="acrobatics_settings" name="act_toggle_acrobatics" title="acrobatics settings" type="action">y</button>
<button class="h2" data-i18n="acrobatics" name="roll_ACROBATICS" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{acrobatics}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{acrobatics_proficiency_display}] (@{acrobatics})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{acrobatics_notes}}}">acrobatics</button>
<div class="circle"><span name="attr_acrobatics" title="@{acrobatics}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="acrobatics_ability_modifier" title="acrobatics ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_acrobatics_ability" title="@{acrobatics ability}"></span></label>
<label class="sublabel" data-i18n-title="acrobatics_proficiency" title="acrobatics proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_acrobatics_proficiency_display"></span><span class="inline" name="attr_acrobatics_proficiency" title="@{acrobatics_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="acrobatics_item" title="acrobatics item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_acrobatics_item" title="@{acrobatics_item}"></span></label>
<label class="sublabel" data-i18n-title="acrobatics_temporary" title="acrobatics temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_acrobatics_temporary" title="@{acrobatics_temporary}"></span></label>
<label class="sublabel" data-i18n-title="acrobatics_armor_pentalty" title="acrobatics armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span><span name="attr_acrobatics_armor" title="@{acrobatics_armor}"></span></label>
</div>
<div class="grid settings acrobatics-settings">
<div class="ability-select">
<select name="attr_acrobatics_ability_select" title="@{acrobatics_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}" selected="">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="acrobatics_ability_input" title="acrobatics ability input">
<input data-i18n-placeholder="0" name="attr_acrobatics_ability" placeholder="0" spellcheck="false" title="@{acrobatics_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="acrobatics_rank_select" title="acrobatics rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_acrobatics_rank" title="@{acrobatics_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="acrobatics_item" title="acrobatics item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_acrobatics_item" placeholder="0" spellcheck="false" title="@{acrobatics_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="acrobatics_temporary" title="acrobatics temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_acrobatics_temporary" placeholder="0" spellcheck="false" title="@{acrobatics_temporary}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="acrobatics_armor_pentalty" title="acrobatics armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span>
<input data-i18n-placeholder="0" name="attr_acrobatics_armor" placeholder="0" spellcheck="false" title="@{acrobatics_armor}" type="text" value=""/>
</label>
<label data-i18n-title="acrobatics_notes" title="acrobatics notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_acrobatics_notes" placeholder="notes" spellcheck="false" title="@{acrobatics_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="arcana_settings" name="act_toggle_arcana" title="arcana settings" type="action">y</button>
<button class="h2" data-i18n="arcana" name="roll_ARCANA" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{arcana}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{arcana_proficiency_display}] (@{arcana})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{arcana_notes}}}">arcana</button>
<div class="circle"><span name="attr_arcana" title="@{arcana}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="arcana_ability_modifier" title="arcana ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_arcana_ability" title="@{arcana ability}"></span></label>
<label class="sublabel" data-i18n-title="arcana_proficiency" title="arcana proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_arcana_proficiency_display"></span><span class="inline" name="attr_arcana_proficiency" title="@{arcana_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="arcana_item" title="arcana item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_arcana_item" title="@{arcana_item}"></span></label>
<label class="sublabel" data-i18n-title="arcana_temporary" title="arcana temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_arcana_temporary" title="@{arcana_temporary}"></span></label>
</div>
<div class="grid settings arcana-settings">
<div class="ability-select">
<select name="attr_arcana_ability_select" title="@{arcana_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="arcana_ability_input" title="arcana ability input">
<input data-i18n-placeholder="0" name="attr_arcana_ability" placeholder="0" spellcheck="false" title="@{arcana_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="arcana_rank_select" title="arcana rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_arcana_rank" title="@{arcana_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="arcana_item" title="arcana item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_arcana_item" placeholder="0" spellcheck="false" title="@{arcana_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="arcana_temporary" title="arcana temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_arcana_temporary" placeholder="0" spellcheck="false" title="@{arcana_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="arcana_notes" title="arcana notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_arcana_notes" placeholder="notes" spellcheck="false" title="@{arcana_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="athletics_settings" name="act_toggle_athletics" title="athletics settings" type="action">y</button>
<button class="h2" data-i18n="athletics" name="roll_ATHLETICS" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{athletics}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{athletics_proficiency_display}] (@{athletics})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{athletics_notes}}}">athletics</button>
<div class="circle"><span name="attr_athletics" title="@{athletics}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="athletics_ability_modifier" title="athletics ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_athletics_ability" title="@{athletics ability}"></span></label>
<label class="sublabel" data-i18n-title="athletics_proficiency" title="athletics proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_athletics_proficiency_display"></span><span class="inline" name="attr_athletics_proficiency" title="@{athletics_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="athletics_item" title="athletics item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_athletics_item" title="@{athletics_item}"></span></label>
<label class="sublabel" data-i18n-title="athletics_temporary" title="athletics temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_athletics_temporary" title="@{athletics_temporary}"></span></label>
<label class="sublabel" data-i18n-title="athletics_armor_pentalty" title="athletics armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span><span name="attr_athletics_armor" title="@{athletics_armor}"></span></label>
</div>
<div class="grid settings athletics-settings">
<div class="ability-select">
<select name="attr_athletics_ability_select" title="@{athletics_ability_select}">
<option data-i18n="str" value="@{strength_modifier}" selected="">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="athletics_ability_input" title="athletics ability input">
<input data-i18n-placeholder="0" name="attr_athletics_ability" placeholder="0" spellcheck="false" title="@{athletics_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="athletics_rank_select" title="athletics rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_athletics_rank" title="@{athletics_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="athletics_item" title="athletics item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_athletics_item" placeholder="0" spellcheck="false" title="@{athletics_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="athletics_temporary" title="athletics temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_athletics_temporary" placeholder="0" spellcheck="false" title="@{athletics_temporary}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="athletics_armor_pentalty" title="athletics armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span>
<input data-i18n-placeholder="0" name="attr_athletics_armor" placeholder="0" spellcheck="false" title="@{athletics_armor}" type="text" value=""/>
</label>
<label data-i18n-title="athletics_notes" title="athletics notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_athletics_notes" placeholder="notes" spellcheck="false" title="@{athletics_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="crafting_settings" name="act_toggle_crafting" title="crafting settings" type="action">y</button>
<button class="h2" data-i18n="crafting" name="roll_CRAFTING" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{crafting}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{crafting_proficiency_display}] (@{crafting})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{crafting_notes}}}">crafting</button>
<div class="circle"><span name="attr_crafting" title="@{crafting}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="crafting_ability_modifier" title="crafting ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_crafting_ability" title="@{crafting ability}"></span></label>
<label class="sublabel" data-i18n-title="crafting_proficiency" title="crafting proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_crafting_proficiency_display"></span><span class="inline" name="attr_crafting_proficiency" title="@{crafting_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="crafting_item" title="crafting item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_crafting_item" title="@{crafting_item}"></span></label>
<label class="sublabel" data-i18n-title="crafting_temporary" title="crafting temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_crafting_temporary" title="@{crafting_temporary}"></span></label>
</div>
<div class="grid settings crafting-settings">
<div class="ability-select">
<select name="attr_crafting_ability_select" title="@{crafting_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="crafting_ability_input" title="crafting ability input">
<input data-i18n-placeholder="0" name="attr_crafting_ability" placeholder="0" spellcheck="false" title="@{crafting_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="crafting_rank_select" title="crafting rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_crafting_rank" title="@{crafting_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="crafting_item" title="crafting item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_crafting_item" placeholder="0" spellcheck="false" title="@{crafting_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="crafting_temporary" title="crafting temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_crafting_temporary" placeholder="0" spellcheck="false" title="@{crafting_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="crafting_notes" title="crafting notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_crafting_notes" placeholder="notes" spellcheck="false" title="@{crafting_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="deception_settings" name="act_toggle_deception" title="deception settings" type="action">y</button>
<button class="h2" data-i18n="deception" name="roll_DECEPTION" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{deception}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{deception_proficiency_display}] (@{deception})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{deception_notes}}}">deception</button>
<div class="circle"><span name="attr_deception" title="@{deception}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="deception_ability_modifier" title="deception ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_deception_ability" title="@{deception ability}"></span></label>
<label class="sublabel" data-i18n-title="deception_proficiency" title="deception proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_deception_proficiency_display"></span><span class="inline" name="attr_deception_proficiency" title="@{deception_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="deception_item" title="deception item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_deception_item" title="@{deception_item}"></span></label>
<label class="sublabel" data-i18n-title="deception_temporary" title="deception temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_deception_temporary" title="@{deception_temporary}"></span></label>
</div>
<div class="grid settings deception-settings">
<div class="ability-select">
<select name="attr_deception_ability_select" title="@{deception_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}" selected="">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="deception_ability_input" title="deception ability input">
<input data-i18n-placeholder="0" name="attr_deception_ability" placeholder="0" spellcheck="false" title="@{deception_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="deception_rank_select" title="deception rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_deception_rank" title="@{deception_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="deception_item" title="deception item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_deception_item" placeholder="0" spellcheck="false" title="@{deception_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="deception_temporary" title="deception temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_deception_temporary" placeholder="0" spellcheck="false" title="@{deception_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="deception_notes" title="deception notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_deception_notes" placeholder="notes" spellcheck="false" title="@{deception_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="diplomacy_settings" name="act_toggle_diplomacy" title="diplomacy settings" type="action">y</button>
<button class="h2" data-i18n="diplomacy" name="roll_DIPLOMACY" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{diplomacy}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{diplomacy_proficiency_display}] (@{diplomacy})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{diplomacy_notes}}}">diplomacy</button>
<div class="circle"><span name="attr_diplomacy" title="@{diplomacy}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="diplomacy_ability_modifier" title="diplomacy ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_diplomacy_ability" title="@{diplomacy ability}"></span></label>
<label class="sublabel" data-i18n-title="diplomacy_proficiency" title="diplomacy proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_diplomacy_proficiency_display"></span><span class="inline" name="attr_diplomacy_proficiency" title="@{diplomacy_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="diplomacy_item" title="diplomacy item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_diplomacy_item" title="@{diplomacy_item}"></span></label>
<label class="sublabel" data-i18n-title="diplomacy_temporary" title="diplomacy temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_diplomacy_temporary" title="@{diplomacy_temporary}"></span></label>
</div>
<div class="grid settings diplomacy-settings">
<div class="ability-select">
<select name="attr_diplomacy_ability_select" title="@{diplomacy_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}" selected="">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="diplomacy_ability_input" title="diplomacy ability input">
<input data-i18n-placeholder="0" name="attr_diplomacy_ability" placeholder="0" spellcheck="false" title="@{diplomacy_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="diplomacy_rank_select" title="diplomacy rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_diplomacy_rank" title="@{diplomacy_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="diplomacy_item" title="diplomacy item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_diplomacy_item" placeholder="0" spellcheck="false" title="@{diplomacy_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="diplomacy_temporary" title="diplomacy temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_diplomacy_temporary" placeholder="0" spellcheck="false" title="@{diplomacy_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="diplomacy_notes" title="diplomacy notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_diplomacy_notes" placeholder="notes" spellcheck="false" title="@{diplomacy_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="intimidation_settings" name="act_toggle_intimidation" title="intimidation settings" type="action">y</button>
<button class="h2" data-i18n="intimidation" name="roll_INTIMIDATION" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{intimidation}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{intimidation_proficiency_display}] (@{intimidation})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{intimidation_notes}}}">intimidation</button>
<div class="circle"><span name="attr_intimidation" title="@{intimidation}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="intimidation_ability_modifier" title="intimidation ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_intimidation_ability" title="@{intimidation ability}"></span></label>
<label class="sublabel" data-i18n-title="intimidation_proficiency" title="intimidation proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_intimidation_proficiency_display"></span><span class="inline" name="attr_intimidation_proficiency" title="@{intimidation_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="intimidation_item" title="intimidation item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_intimidation_item" title="@{intimidation_item}"></span></label>
<label class="sublabel" data-i18n-title="intimidation_temporary" title="intimidation temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_intimidation_temporary" title="@{intimidation_temporary}"></span></label>
</div>
<div class="grid settings intimidation-settings">
<div class="ability-select">
<select name="attr_intimidation_ability_select" title="@{intimidation_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}" selected="">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="intimidation_ability_input" title="intimidation ability input">
<input data-i18n-placeholder="0" name="attr_intimidation_ability" placeholder="0" spellcheck="false" title="@{intimidation_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="intimidation_rank_select" title="intimidation rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_intimidation_rank" title="@{intimidation_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="intimidation_item" title="intimidation item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_intimidation_item" placeholder="0" spellcheck="false" title="@{intimidation_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="intimidation_temporary" title="intimidation temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_intimidation_temporary" placeholder="0" spellcheck="false" title="@{intimidation_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="intimidation_notes" title="intimidation notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_intimidation_notes" placeholder="notes" spellcheck="false" title="@{intimidation_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="medicine_settings" name="act_toggle_medicine" title="medicine settings" type="action">y</button>
<button class="h2" data-i18n="medicine" name="roll_MEDICINE" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{medicine}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{medicine_proficiency_display}] (@{medicine})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{medicine_notes}}}">medicine</button>
<div class="circle"><span name="attr_medicine" title="@{medicine}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="medicine_ability_modifier" title="medicine ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_medicine_ability" title="@{medicine ability}"></span></label>
<label class="sublabel" data-i18n-title="medicine_proficiency" title="medicine proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_medicine_proficiency_display"></span><span class="inline" name="attr_medicine_proficiency" title="@{medicine_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="medicine_item" title="medicine item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_medicine_item" title="@{medicine_item}"></span></label>
<label class="sublabel" data-i18n-title="medicine_temporary" title="medicine temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_medicine_temporary" title="@{medicine_temporary}"></span></label>
</div>
<div class="grid settings medicine-settings">
<div class="ability-select">
<select name="attr_medicine_ability_select" title="@{medicine_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}" selected="">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="medicine_ability_input" title="medicine ability input">
<input data-i18n-placeholder="0" name="attr_medicine_ability" placeholder="0" spellcheck="false" title="@{medicine_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="medicine_rank_select" title="medicine rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_medicine_rank" title="@{medicine_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="medicine_item" title="medicine item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_medicine_item" placeholder="0" spellcheck="false" title="@{medicine_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="medicine_temporary" title="medicine temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_medicine_temporary" placeholder="0" spellcheck="false" title="@{medicine_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="medicine_notes" title="medicine notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_medicine_notes" placeholder="notes" spellcheck="false" title="@{medicine_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="nature_settings" name="act_toggle_nature" title="nature settings" type="action">y</button>
<button class="h2" data-i18n="nature" name="roll_NATURE" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{nature}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{nature_proficiency_display}] (@{nature})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{nature_notes}}}">nature</button>
<div class="circle"><span name="attr_nature" title="@{nature}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="nature_ability_modifier" title="nature ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_nature_ability" title="@{nature ability}"></span></label>
<label class="sublabel" data-i18n-title="nature_proficiency" title="nature proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_nature_proficiency_display"></span><span class="inline" name="attr_nature_proficiency" title="@{nature_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="nature_item" title="nature item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_nature_item" title="@{nature_item}"></span></label>
<label class="sublabel" data-i18n-title="nature_temporary" title="nature temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_nature_temporary" title="@{nature_temporary}"></span></label>
</div>
<div class="grid settings nature-settings">
<div class="ability-select">
<select name="attr_nature_ability_select" title="@{nature_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}" selected="">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="nature_ability_input" title="nature ability input">
<input data-i18n-placeholder="0" name="attr_nature_ability" placeholder="0" spellcheck="false" title="@{nature_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="nature_rank_select" title="nature rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_nature_rank" title="@{nature_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="nature_item" title="nature item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_nature_item" placeholder="0" spellcheck="false" title="@{nature_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="nature_temporary" title="nature temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_nature_temporary" placeholder="0" spellcheck="false" title="@{nature_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="nature_notes" title="nature notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_nature_notes" placeholder="notes" spellcheck="false" title="@{nature_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="occultism_settings" name="act_toggle_occultism" title="occultism settings" type="action">y</button>
<button class="h2" data-i18n="occultism" name="roll_OCCULTISM" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{occultism}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{occultism_proficiency_display}] (@{occultism})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{occultism_notes}}}">occultism</button>
<div class="circle"><span name="attr_occultism" title="@{occultism}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="occultism_ability_modifier" title="occultism ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_occultism_ability" title="@{occultism ability}"></span></label>
<label class="sublabel" data-i18n-title="occultism_proficiency" title="occultism proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_occultism_proficiency_display"></span><span class="inline" name="attr_occultism_proficiency" title="@{occultism_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="occultism_item" title="occultism item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_occultism_item" title="@{occultism_item}"></span></label>
<label class="sublabel" data-i18n-title="occultism_temporary" title="occultism temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_occultism_temporary" title="@{occultism_temporary}"></span></label>
</div>
<div class="grid settings occultism-settings">
<div class="ability-select">
<select name="attr_occultism_ability_select" title="@{occultism_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="occultism_ability_input" title="occultism ability input">
<input data-i18n-placeholder="0" name="attr_occultism_ability" placeholder="0" spellcheck="false" title="@{occultism_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="occultism_rank_select" title="occultism rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_occultism_rank" title="@{occultism_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="occultism_item" title="occultism item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_occultism_item" placeholder="0" spellcheck="false" title="@{occultism_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="occultism_temporary" title="occultism temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_occultism_temporary" placeholder="0" spellcheck="false" title="@{occultism_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="occultism_notes" title="occultism notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_occultism_notes" placeholder="notes" spellcheck="false" title="@{occultism_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="performance_settings" name="act_toggle_performance" title="performance settings" type="action">y</button>
<button class="h2" data-i18n="performance" name="roll_PERFORMANCE" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{performance}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{performance_proficiency_display}] (@{performance})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{performance_notes}}}">performance</button>
<div class="circle"><span name="attr_performance" title="@{performance}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="performance_ability_modifier" title="performance ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_performance_ability" title="@{performance ability}"></span></label>
<label class="sublabel" data-i18n-title="performance_proficiency" title="performance proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_performance_proficiency_display"></span><span class="inline" name="attr_performance_proficiency" title="@{performance_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="performance_item" title="performance item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_performance_item" title="@{performance_item}"></span></label>
<label class="sublabel" data-i18n-title="performance_temporary" title="performance temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_performance_temporary" title="@{performance_temporary}"></span></label>
</div>
<div class="grid settings performance-settings">
<div class="ability-select">
<select name="attr_performance_ability_select" title="@{performance_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}" selected="">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="performance_ability_input" title="performance ability input">
<input data-i18n-placeholder="0" name="attr_performance_ability" placeholder="0" spellcheck="false" title="@{performance_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="performance_rank_select" title="performance rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_performance_rank" title="@{performance_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="performance_item" title="performance item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_performance_item" placeholder="0" spellcheck="false" title="@{performance_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="performance_temporary" title="performance temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_performance_temporary" placeholder="0" spellcheck="false" title="@{performance_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="performance_notes" title="performance notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_performance_notes" placeholder="notes" spellcheck="false" title="@{performance_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="religion_settings" name="act_toggle_religion" title="religion settings" type="action">y</button>
<button class="h2" data-i18n="religion" name="roll_RELIGION" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{religion}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{religion_proficiency_display}] (@{religion})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{religion_notes}}}">religion</button>
<div class="circle"><span name="attr_religion" title="@{religion}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="religion_ability_modifier" title="religion ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_religion_ability" title="@{religion ability}"></span></label>
<label class="sublabel" data-i18n-title="religion_proficiency" title="religion proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_religion_proficiency_display"></span><span class="inline" name="attr_religion_proficiency" title="@{religion_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="religion_item" title="religion item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_religion_item" title="@{religion_item}"></span></label>
<label class="sublabel" data-i18n-title="religion_temporary" title="religion temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_religion_temporary" title="@{religion_temporary}"></span></label>
</div>
<div class="grid settings religion-settings">
<div class="ability-select">
<select name="attr_religion_ability_select" title="@{religion_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}" selected="">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="religion_ability_input" title="religion ability input">
<input data-i18n-placeholder="0" name="attr_religion_ability" placeholder="0" spellcheck="false" title="@{religion_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="religion_rank_select" title="religion rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_religion_rank" title="@{religion_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="religion_item" title="religion item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_religion_item" placeholder="0" spellcheck="false" title="@{religion_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="religion_temporary" title="religion temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_religion_temporary" placeholder="0" spellcheck="false" title="@{religion_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="religion_notes" title="religion notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_religion_notes" placeholder="notes" spellcheck="false" title="@{religion_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="society_settings" name="act_toggle_society" title="society settings" type="action">y</button>
<button class="h2" data-i18n="society" name="roll_SOCIETY" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{society}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{society_proficiency_display}] (@{society})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{society_notes}}}">society</button>
<div class="circle"><span name="attr_society" title="@{society}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="society_ability_modifier" title="society ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_society_ability" title="@{society ability}"></span></label>
<label class="sublabel" data-i18n-title="society_proficiency" title="society proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_society_proficiency_display"></span><span class="inline" name="attr_society_proficiency" title="@{society_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="society_item" title="society item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_society_item" title="@{society_item}"></span></label>
<label class="sublabel" data-i18n-title="society_temporary" title="society temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_society_temporary" title="@{society_temporary}"></span></label>
</div>
<div class="grid settings society-settings">
<div class="ability-select">
<select name="attr_society_ability_select" title="@{society_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="society_ability_input" title="society ability input">
<input data-i18n-placeholder="0" name="attr_society_ability" placeholder="0" spellcheck="false" title="@{society_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="society_rank_select" title="society rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_society_rank" title="@{society_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="society_item" title="society item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_society_item" placeholder="0" spellcheck="false" title="@{society_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="society_temporary" title="society temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_society_temporary" placeholder="0" spellcheck="false" title="@{society_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="society_notes" title="society notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_society_notes" placeholder="notes" spellcheck="false" title="@{society_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="stealth_settings" name="act_toggle_stealth" title="stealth settings" type="action">y</button>
<button class="h2" data-i18n="stealth" name="roll_STEALTH" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{stealth}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{stealth_proficiency_display}] (@{stealth})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{stealth_notes}}}">stealth</button>
<div class="circle"><span name="attr_stealth" title="@{stealth}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="stealth_ability_modifier" title="stealth ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_stealth_ability" title="@{stealth ability}"></span></label>
<label class="sublabel" data-i18n-title="stealth_proficiency" title="stealth proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_stealth_proficiency_display"></span><span class="inline" name="attr_stealth_proficiency" title="@{stealth_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="stealth_item" title="stealth item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_stealth_item" title="@{stealth_item}"></span></label>
<label class="sublabel" data-i18n-title="stealth_temporary" title="stealth temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_stealth_temporary" title="@{stealth_temporary}"></span></label>
<label class="sublabel" data-i18n-title="stealth_armor_pentalty" title="stealth armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span><span name="attr_stealth_armor" title="@{stealth_armor}"></span></label>
</div>
<div class="grid settings stealth-settings">
<div class="ability-select">
<select name="attr_stealth_ability_select" title="@{stealth_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}" selected="">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="stealth_ability_input" title="stealth ability input">
<input data-i18n-placeholder="0" name="attr_stealth_ability" placeholder="0" spellcheck="false" title="@{stealth_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="stealth_rank_select" title="stealth rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_stealth_rank" title="@{stealth_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="stealth_item" title="stealth item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_stealth_item" placeholder="0" spellcheck="false" title="@{stealth_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="stealth_temporary" title="stealth temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_stealth_temporary" placeholder="0" spellcheck="false" title="@{stealth_temporary}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="stealth_armor_pentalty" title="stealth armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span>
<input data-i18n-placeholder="0" name="attr_stealth_armor" placeholder="0" spellcheck="false" title="@{stealth_armor}" type="text" value=""/>
</label>
<label data-i18n-title="stealth_notes" title="stealth notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_stealth_notes" placeholder="notes" spellcheck="false" title="@{stealth_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="survival_settings" name="act_toggle_survival" title="survival settings" type="action">y</button>
<button class="h2" data-i18n="survival" name="roll_SURVIVAL" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{survival}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{survival_proficiency_display}] (@{survival})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{survival_notes}}}">survival</button>
<div class="circle"><span name="attr_survival" title="@{survival}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="survival_ability_modifier" title="survival ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_survival_ability" title="@{survival ability}"></span></label>
<label class="sublabel" data-i18n-title="survival_proficiency" title="survival proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_survival_proficiency_display"></span><span class="inline" name="attr_survival_proficiency" title="@{survival_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="survival_item" title="survival item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_survival_item" title="@{survival_item}"></span></label>
<label class="sublabel" data-i18n-title="survival_temporary" title="survival temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_survival_temporary" title="@{survival_temporary}"></span></label>
</div>
<div class="grid settings survival-settings">
<div class="ability-select">
<select name="attr_survival_ability_select" title="@{survival_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}" selected="">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="survival_ability_input" title="survival ability input">
<input data-i18n-placeholder="0" name="attr_survival_ability" placeholder="0" spellcheck="false" title="@{survival_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="survival_rank_select" title="survival rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_survival_rank" title="@{survival_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="survival_item" title="survival item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_survival_item" placeholder="0" spellcheck="false" title="@{survival_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="survival_temporary" title="survival temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_survival_temporary" placeholder="0" spellcheck="false" title="@{survival_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="survival_notes" title="survival notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_survival_notes" placeholder="notes" spellcheck="false" title="@{survival_notes}" value=""></textarea>
</label>
</div>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="thievery_settings" name="act_toggle_thievery" title="thievery settings" type="action">y</button>
<button class="h2" data-i18n="thievery" name="roll_THIEVERY" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{thievery}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{thievery_proficiency_display}] (@{thievery})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{thievery_notes}}}">thievery</button>
<div class="circle"><span name="attr_thievery" title="@{thievery}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="thievery_ability_modifier" title="thievery ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_thievery_ability" title="@{thievery ability}"></span></label>
<label class="sublabel" data-i18n-title="thievery_proficiency" title="thievery proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_thievery_proficiency_display"></span><span class="inline" name="attr_thievery_proficiency" title="@{thievery_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="thievery_item" title="thievery item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_thievery_item" title="@{thievery_item}"></span></label>
<label class="sublabel" data-i18n-title="thievery_temporary" title="thievery temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_thievery_temporary" title="@{thievery_temporary}"></span></label>
<label class="sublabel" data-i18n-title="thievery_armor_pentalty" title="thievery armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span><span name="attr_thievery_armor" title="@{thievery_armor}"></span></label>
</div>
<div class="grid settings thievery-settings">
<div class="ability-select">
<select name="attr_thievery_ability_select" title="@{thievery_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}" selected="">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="thievery_ability_input" title="thievery ability input">
<input data-i18n-placeholder="0" name="attr_thievery_ability" placeholder="0" spellcheck="false" title="@{thievery_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="thievery_rank_select" title="thievery rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_thievery_rank" title="@{thievery_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="thievery_item" title="thievery item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_thievery_item" placeholder="0" spellcheck="false" title="@{thievery_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="thievery_temporary" title="thievery temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_thievery_temporary" placeholder="0" spellcheck="false" title="@{thievery_temporary}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="thievery_armor_pentalty" title="thievery armor pentalty"><span class="sublabel darkred" data-i18n="armor">armor</span>
<input data-i18n-placeholder="0" name="attr_thievery_armor" placeholder="0" spellcheck="false" title="@{thievery_armor}" type="text" value=""/>
</label>
<label data-i18n-title="thievery_notes" title="thievery notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_thievery_notes" placeholder="notes" spellcheck="false" title="@{thievery_notes}" value=""></textarea>
</label>
</div>
<h2 data-i18n="lore">lore</h2>
<fieldset class="repeating_lore">
<input name="attr_toggles" type="hidden" value="display,settings,"/>
<div class="grid display">
<button class="pictos settings-button" data-i18n-title="lore_settings" name="act_settings" title="lore settings" type="action">y</button>
<button class="h2" name="roll_LORE" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{lore_name}}} {{subheader=^{skill}}} {{roll01=[[1d20cs20cf1 + [@{lore_proficiency_display}] (@{lore})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=skill}} {{notes_show=@{roll_show_notes}}} {{notes=@{lore_notes}}}"><span name="attr_lore_name"></span></button>
<input name="attr_lore" type="hidden" value="0"/>
<div class="circle"><span name="attr_lore" title="@{lore}"></span></div><span class="symbol">=</span>
<label class="sublabel" data-i18n-title="lore_ability_modifier" title="lore ability modifier"><span class="sublabel darkred" data-i18n="mod">mod</span><span name="attr_lore_ability" title="@{lore ability}"></span></label>
<label class="sublabel" data-i18n-title="lore_proficiency" title="lore proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span>
<input name="attr_lore_proficiency_display" type="hidden" value=""/><span class="inline" name="attr_lore_proficiency_display"></span><span class="inline" name="attr_lore_proficiency" title="@{lore_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="lore_item" title="lore item"><span class="sublabel darkred" data-i18n="item">item</span><span name="attr_lore_item" title="@{lore_item}"></span></label>
<label class="sublabel" data-i18n-title="lore_temporary" title="lore temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_lore_temporary" title="@{lore_temporary}"></span></label>
</div>
<div class="grid settings lore-settings">
<label data-i18n-title="lore_name" title="lore name"><span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="lore" name="attr_lore_name" placeholder="lore" spellcheck="false" title="@{lore_name}" type="text" value=""/>
</label>
<div class="ability-select">
<select name="attr_lore_ability_select" title="@{lore_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
<label data-i18n-title="lore_ability_input" title="lore ability input">
<input data-i18n-placeholder="0" name="attr_lore_ability" placeholder="0" spellcheck="false" title="@{lore_ability}" type="text" value=""/>
</label>
</div>
<label data-i18n-title="lore_rank_select" title="lore rank select"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_lore_rank" title="@{lore_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label data-i18n-title="lore_item" title="lore item"><span class="sublabel darkred" data-i18n="item">item</span>
<input data-i18n-placeholder="0" name="attr_lore_item" placeholder="0" spellcheck="false" title="@{lore_item}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="lore_temporary" title="lore temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_lore_temporary" placeholder="0" spellcheck="false" title="@{lore_temporary}" type="text" value=""/>
</label>
<label data-i18n-title="lore_notes" title="lore notes"><span data-i18n="notes"></span>
<textarea data-i18n-placeholder="notes" name="attr_lore_notes" placeholder="notes" spellcheck="false" title="@{lore_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<div class="column"><!--- HIT POINTS column --->
<h1 data-i18n='hit_points'>hit points</h1>
<div class='hitpoints background-color'>
<div class='grid display background-color'>
<button class='pictos settings-button' data-i18n-title='hit_points_settings' name='act_toggle_hitpoints' title='hit points settings' type='action'>
y
</button>
<div class='circle'>
<label data-i18n-title='hit_points_max' title='hit points max'>
<span class='redstroke' data-i18n='max' title='max'>max</span>
<span name='attr_hit_points_max' title='@{hit_points_max}'></span>
</label>
</div>
<label data-i18n-title='hit_points_current' title='hit points current'>
<span class='sublabel darkred' data-i18n='current'>current</span>
<input data-i18n-placeholder='0' name='attr_hit_points' placeholder='0' spellcheck='false' title='@{hit_points}' type='text' value='' />
</label>
<label data-i18n-title='hit_points_temporary' title='hit points temporary'>
<span class='sublabel darkred' data-i18n='temporary'>temporary</span>
<input data-i18n-placeholder='0' name='attr_hit_points_temporary' placeholder='0' spellcheck='false' title='@{hit_points_temporary}' type='text' value='' />
</label>
<label data-i18n-title='hit_points_dying' title='hit points dying'>
<span class='sublabel darkred' data-i18n='dying'>dying</span>
<input data-i18n-placeholder='0' name='attr_hit_points_dying' placeholder='0' spellcheck='false' title='@{hit_points_dying}' type='text' value='' />
</label>
<label data-i18n-title='hit_points_wounded' title='hit points wounded'>
<span class='sublabel darkred' data-i18n='wounded'>wounded</span>
<input data-i18n-placeholder='0' name='attr_hit_points_wounded' placeholder='0' spellcheck='false' title='@{hit_points_wounded}' type='text' value='' />
</label>
</div>
<div class='grid settings'>
<label class='sublabel' data-i18n-title='hit_points_ancestry' title='hit points from ancestry'>
<span class='sublabel darkred' data-i18n='ancestry'>ancestry</span>
<input data-i18n-placeholder='0' name='attr_hit_points_ancestry' placeholder='0' spellcheck='false' title='@{hit_points_ancestry}' type='text' value='' />
</label>
<label class='sublabel' data-i18n-title='hit_points_class' title='hit points from class'>
<span class='sublabel darkred' data-i18n='class'>class</span>
<input class='3em' data-i18n-placeholder='0' name='attr_hit_points_class' placeholder='0' spellcheck='false' title='@{hit_points_class}' type='text' value='' />
</label>
<label class='sublabel' data-i18n-title='hit_points_other' title='hit points permanent bonus from other sources like feats and class features'>
<span class='sublabel darkred' data-i18n='other'>other</span>
<input class='3em' data-i18n-placeholder='0' name='attr_hit_points_other' placeholder='0' spellcheck='false' title='@{hit_points_other}' type='text' value='' />
</label>
<label class='sublabel' data-i18n-title='hit_points_item' title='hit points bonus from items'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input class='3em' data-i18n-placeholder='0' name='attr_hit_points_item' placeholder='0' spellcheck='false' title='@{hit_points_item}' type='text' value='' />
</label>
<label data-i18n-title='hit_points_notes' title='hit points notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_hit_points_notes' placeholder='notes' spellcheck='false' title='@{hit_points_notes}' value=''></textarea>
</label>
</div>
<hr />
<div class='resistance repeating'>
<h3 data-i18n='resistances_and_immunities'>resistances and immunities</h3>
<fieldset class='repeating_resistances-immunities'>
<input class='toggles' name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid repeating-grid'>
<button class='pictos settings-button' data-i18n-title='resistances_and_immunities_settings' name='act_settings' title='resistances and immunities settings' type='action'>
y
</button>
<button name='roll_RESIST' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{resistances_and_immunities}}} {{subheader=^{resistances_and_immunities}}} {{notes_show=[[1]]}} {{notes=@{resistances_and_immunities_notes}}}'>
<span class='repeating-title' name='attr_resistances_and_immunities'></span>
</button>
<button name='act_collapse' data-i18n-title='show_or_hide_resistance_notes' title='show or hide resistance notes' type='action'>
4
</button>
<span class='collapse' name='attr_resistances_and_immunities_notes'></span>
</div>
<div class='settings repeating-grid'>
<label data-i18n-title='resistances_and_immunities_name' title='resistances and immunities name'>
<span data-i18n='name'>name</span>
<input data-i18n-placeholder='resistances_and_immunities' name='attr_resistances_and_immunities' placeholder='resistances or immunities' title='@{resistances_and_immunities}' type='text' value='' />
</label>
<label data-i18n-title='resistances_and_immunities_notes' title='resistances and immunities notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_resistances_and_immunities_notes' placeholder='notes' spellcheck='false' title='@{resistances_and_immunities_notes}'></textarea>
</label>
</div>
</fieldset>
</div>
<div class='conditions repeating'>
<h3 data-i18n='conditions'>conditions</h3>
<fieldset class='repeating_conditions'>
<input class='toggles' name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid repeating-grid'>
<button class='pictos settings-button' data-i18n-title='condition_settings' name='act_settings' title='condition settings' type='action'>
y
</button>
<button name='roll_CONDITION' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{condition}}} {{subheader=^{conditions}}} {{notes_show=[[1]]}} {{notes=@{condition_notes}}}'>
<span class='repeating-title' name='attr_condition'></span>
</button>
<button name='act_collapse' data-i18n-title='show_or_hide_condition_notes' title='show or hide condition notes' type='action'>
4
</button>
<span class='collapse' name='attr_condition_notes'></span>
</div>
<div class='settings repeating-grid'>
<label data-i18n-title='condition_name' title='condition name'>
<span data-i18n='name'>name</span>
<input data-i18n-placeholder='condition' name='attr_condition' placeholder='condition' title='@{condition}' type='text' value='' />
</label>
<label data-i18n-title='conditions_notes' title='conditions notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_condition_notes' placeholder='notes' spellcheck='false' title='@{condition_notes}'></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<!-- Perception & Initiative -->
<div class='perception background-color'>
<h1 data-i18n='perception'>perception</h1>
<div class='grid display'>
<div class='circle'>
<span name='attr_perception' title='@{perception}'></span>
</div>
<button class='pictos settings-button' data-i18n-title='perception_settings' name='act_toggle_perception' title='perception settings' type='action'>
y
</button>
<label class='sublabel' data-i18n-title='percetion_modifier' title='perception modifier'>
<span class='sublabel darkred' data-i18n='mod'>mod</span>
<span name='attr_perception_ability' title='@{perception_ability}'></span>
</label>
<label class='sublabel' data-i18n-title='percetion_proficiency' title='perception proficiency'>
<span class='sublabel darkred' data-i18n='prof'>prof</span>
<span>
<span class="inline" name="attr_perception_proficiency_display"></span>
<span class="inline" name="attr_perception_proficiency" title="@{perception_proficiency}"></span>
</span>
</label>
<label class='sublabel' data-i18n-title='percetion_item' title='perception item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<span name='attr_perception_item' title='@{perception_item}'></span>
</label>
<label class='sublabel' data-i18n-title='percetion_temporary' title='perception temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<span name='attr_perception_temporary' title='@{perception_temporary}'></span>
</label>
</div>
<div class='grid button-grid'>
<button class='perception-button' data-i18n='perceive' name='roll_PERCEPTION' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{perception}}} {{roll01=[[1d20cs20cf1 + [@{perception_proficiency_display}] (@{perception})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=perception}} {{notes_show=@{roll_show_notes}}} {{notes=@{perception_notes}}}'>perceive</button>
<button class='perception-button' data-i18n='initiative' name='roll_INITIATIVE' type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=^{initiative}}} {{subheader=^{@{initiative_skill}}}} {{roll01=[[1d20cs20cf1 + (@{initiative}) + (@{initiative_modifier})[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}] &{tracker}]]}} {{roll01_type=initiative}}'>initiative</button>
<input name='attr_initiative' type='hidden' value='@{perception}[perception]' />
<select class='simple' name='attr_initiative_skill' title='@{initiative_skill}' >
<option data-i18n='perception' selected='selected' value='perception'>perception</option>
<option data-i18n='stealth' value='stealth'>stealth</option>
<option data-i18n='deception' value='deception'>deception</option>
<option data-i18n='diplomacy' value='diplomacy'>diplomacy</option>
<option data-i18n='acrobatics' value='acrobatics'>acrobatics</option>
<option data-i18n='arcana' value='arcana'>arcana</option>
<option data-i18n='athletics' value='athletics'>athletics</option>
<option data-i18n='crafting' value='crafting' >crafting</option>
<option data-i18n='intimidation' value='intimidation' >intimidation</option>
<option data-i18n='medicine' value='medicine'>medicine</option>
<option data-i18n='nature' value='nature'>nature</option>
<option data-i18n='occultism' value='occultism'>occultism</option>
<option data-i18n='performance' value='performance'>performance</option>
<option data-i18n='religion' value='religion'>religion</option>
<option data-i18n='society' value='society'>society</option>
<option data-i18n='survival' value='survival'>survival</option>
<option data-i18n='thievery'value='thievery'>thievery</option>
</select>
</div>
<div class='grid settings'>
<div class='ability-select'>
<label data-i18n-title='percetion_ability_select' title='perception ability select'>
<select name='attr_perception_ability_select' title='@{perception_ability_select}'>
<option data-i18n='str' value='@{strength_modifier}'>str</option>
<option data-i18n='dex' value='@{dexterity_modifier}'>dex</option>
<option data-i18n='con' value='@{constitution_modifier}'>con</option>
<option data-i18n='int' value='@{intelligence_modifier}'>int</option>
<option data-i18n='wis' value='@{wisdom_modifier}' selected>wis</option>
<option data-i18n='cha' value='@{charisma_modifier}'>cha</option>
<option data-i18n='custom' value='custom'>custom</option>
</select>
</label>
<label data-i18n-title='percetion_ability' title='perception ability'>
<input data-i18n-placeholder='0' name='attr_perception_ability' placeholder='0' spellcheck='false' title='@{perception_ability}' type='text' value='' />
</label>
</div>
<label class='sublabel' data-i18n-title='percetion_rank' title='perception rank'>
<span class='sublabel darkred' data-i18n='rank'>rank</span>
<select name='attr_perception_rank' title='@{perception_rank}'>
<option data-i18n='untrained' value='0' selected>untrained</option>
<option data-i18n='trained' value='2'>trained</option>
<option data-i18n='expert' value='4'>expert</option>
<option data-i18n='master' value='6'>master</option>
<option data-i18n='legendary' value='8'>legendary</option>
</select>
</label>
<label class='sublabel' data-i18n-title='percetion_item' title='perception item'>
<span class='sublabel darkred' data-i18n='item'>item</span>
<input data-i18n-placeholder='0' name='attr_perception_item' placeholder='0' title='@{perception_item}' type='text' value='0' />
</label>
<label class='sublabel' data-i18n-title='percetion_temporary' title='perception temporary'>
<span class='sublabel darkred' data-i18n='temp'>temp</span>
<input data-i18n-placeholder='0' name='attr_perception_temporary' placeholder='0' title='@{perception_temporary}' type='text' value='0' />
</label>
<label class="oneliner" data-i18n-title="initiative_modifier" title="Initiative modifier">
<span class="" data-i18n="initiative_modifier">Initiative modifier</span>
<input class="" name="attr_initiative_modifier" data-i18n-title="@{initiative_modifier}" type="number" value="0" />
</label>
<label data-i18n-title='percetion_notes' title='perception notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_perception_notes' placeholder='notes' title='@{perception_notes}' value=''></textarea>
</label>
</div>
<div class='senses repeating'>
<h3 data-i18n='senses'>senses</h3>
<fieldset class='repeating_senses'>
<input class='toggles' name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid repeating-grid'>
<button class='pictos settings-button' data-i18n-title='sense_settings' name='act_settings' title='sense settings' type='action'>
y
</button>
<button type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{sense}}} {{subheader=^{sense}}} {{notes_show=[[1]]}} {{notes=@{sense_notes}}}'>
<span class='repeating-title' name='attr_sense'></span>
</button>
<button name='act_collapse' data-i18n-title='show_or_hide_sense_notes' title='show or hide sense notes' type='action'>
4
</button>
<span class='collapse' name='attr_sense_notes'></span>
</div>
<div class='settings repeating-grid'>
<label data-i18n-title='sense_name' title='sense name'>
<span data-i18n='name'>name</span>
<input data-i18n-placeholder='senses' name='attr_sense' placeholder='senses' title='@{sense}' type='text' value='' />
</label>
<label data-i18n-title='senses_notes' title='senses notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_sense_notes' placeholder='notes' spellcheck='false' title='@{sense_notes}'></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<div class="repeating-details actions background-color">
<h1 data-i18n="actions">actions</h1>
<fieldset class="repeating_actions">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings,"/>
<input name="attr_action_type" type="hidden" value=""/>
<div class="grid repeating-grid-display">
<button class="pictos settings-button" data-i18n-title="action settings" name="act_settings" title="action settings" type="action">y</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &amp;{template:rolls} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{action}}} {{info01_name=^{action_type}}} {{info01=@{action_type} @{other}}} {{info02_name=^{source}}} {{info02=@{source}}} {{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{trigger}}} {{info04=@{trigger}}} {{desc=@{description}}}"><span name="attr_name"></span></button>
<button name="act_collapse" data-i18n-title="show or hide action description" title="show or hide action description" type="action">4</button><span class="collapse" name="attr_description"></span>
</div>
<div class="settings">
<label class="sublabel" data-i18n-title="action_name" title="action name"><span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_name" placeholder="name" title="@{name}" type="text" value=""/>
</label>
<label data-i18n-title="actions" title="actions"><span class="sublabel darkred" data-i18n="actions">actions</span>
<select class="simple" name="attr_action" title="@{action}">
<option data-i18n="1-action" value="1-action">1-action</option>
<option data-i18n="2-action" value="2-action">2-action</option>
<option data-i18n="3-action" value="3-action">3-action</option>
<option data-i18n="1-to-3-actions" value="1-to-3-actions">1-to-3-actions</option>
<option data-i18n="reaction" value="reaction">reaction</option>
<option data-i18n="free_action" value="free_action">free_action</option>
<option data-i18n="other" value="other">other</option>
</select>
</label>
<label class="sublabel" data-i18n-title="other" title="other"><span class="sublabel darkred" data-i18n="other">other</span>
<input data-i18n-placeholder="other" name="attr_other" placeholder="other" spellcheck="false" title="@{other}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="action_trigger" title="action trigger"><span class="sublabel darkred" data-i18n="trigger">trigger</span>
<input data-i18n-placeholder="trigger" name="attr_trigger" placeholder="trigger" spellcheck="false" title="@{trigger}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="action_traits" title="action traits"><span class="sublabel darkred" data-i18n="traits">traits</span>
<input data-i18n-placeholder="traits" name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="action_source" title="action source"><span class="sublabel darkred" data-i18n="source">source</span>
<input data-i18n-placeholder="source" name="attr_source" placeholder="source" spellcheck="false" title="@{source}" type="text" value=""/>
</label>
<label class="sublabel" data-i18n-title="action_description" title="action description"><span class="sublabel darkred" data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label>
</div>
</fieldset>
</div><!-- Languages -->
<div class='languages background-color'>
<h1 data-i18n='languages'>languages</h1>
<div class='repeating'>
<fieldset class='repeating_languages'>
<input class='toggles' name='attr_toggles' type='hidden' value='display,settings,' />
<div class='grid repeating-grid'>
<button class='pictos settings-button' data-i18n-title='language_settings' name='act_settings' title='language settings' type='action'>
y
</button>
<button type='roll' value='@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{language}}} {{subheader=^{language}}} {{notes_show=[[1]]}} {{notes=@{language_notes}}}'>
<span class='sheet-repeating-title' name='attr_language'></span>
</button>
<button data-i18n-title='show_or_hide_language_notes' name='act_collapse' title='show or hide language notes' type='action'>
4
</button>
<span class='collapse' name='attr_language_notes'></span>
</div>
<div class='settings repeating-grid'>
<label data-i18n-title='language_name' title='language name'>
<span data-i18n='name'>name</span>
<input data-i18n-placeholder='language' name='attr_language' placeholder='language' title='@{language}' type='text' value='' />
</label>
<label data-i18n-title='language_notes' title='languages notes'>
<span data-i18n='notes'>notes</span>
<textarea data-i18n-placeholder='notes' name='attr_language_notes' placeholder='notes' spellcheck='false' title='@{language_notes}'></textarea>
</label>
</div>
</fieldset>
</div>
</div>
</div>
</div><div class="details">
<div class="column">
<!--- CHARACTERISTICS --->
<div class="characteristics background-color section-pad">
<label class="sublabel" data-i18n-title="ethnicity" title="ethnicity">
<span class="sublabel darkred" data-i18n="ethnicity">ethnicity</span>
<input data-i18n-placeholder="ethnicity" name="attr_ethnicity" placeholder="ethnicity" spellcheck="false" title="@{ethnicity}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="nationality" title="nationality">
<span class="sublabel darkred" data-i18n="nationality">nationality</span>
<input data-i18n-placeholder="nationality" name="attr_nationality" placeholder="nationality" spellcheck="false" title="@{nationality}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="birthplace" title="birthplace">
<span class="sublabel darkred" data-i18n="birthplace">birthplace</span>
<input data-i18n-placeholder="birthplace" name="attr_birthplace" placeholder="birthplace" spellcheck="false" title="@{birthplace}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="age" title="age">
<span class="sublabel darkred" data-i18n="age">age</span>
<input data-i18n-placeholder="age" name="attr_age" placeholder="age" spellcheck="false" title="@{age}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="gender_pronouns" title="gender & pronouns">
<span class="sublabel darkred" data-i18n="gender_pronouns">gender & pronouns</span>
<input data-i18n-placeholder="gender_pronouns" name="attr_gender_pronouns" placeholder="gender & pronouns" spellcheck="false" title="@{gender_pronouns}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="height" title="height">
<span class="sublabel darkred" data-i18n="height-char">height</span>
<input data-i18n-placeholder="height-char" name="attr_height" placeholder="height" spellcheck="false" title="@{height}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="weight" title="weight">
<span class="sublabel darkred" data-i18n="weight">weight</span>
<input data-i18n-placeholder="weight" name="attr_weight" placeholder="weight" spellcheck="false" title="@{weight}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="appearance" title="appearance">
<span class="sublabel darkred" data-i18n="appearance">appearance</span>
<input data-i18n-placeholder="appearance" name="attr_appearance" placeholder="appearance" spellcheck="false" title="@{appearance}" type="text" value="" />
</label>
</div>
<!--- PERSONALITY --->
<div class="personality background-color">
<h1 data-i18n="personality">personality</h1>
<div class="section-pad">
<label class="sublabel" data-i18n-title="attitude" title="attitude">
<span class="sublabel darkred" data-i18n="attitude">attitude</span>
<input data-i18n-placeholder="attitude" name="attr_attitude" placeholder="attitude" spellcheck="false" title="@{attitude}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="beliefs" title="beliefs">
<span class="sublabel darkred" data-i18n="beliefs">beliefs</span>
<input data-i18n-placeholder="beliefs" name="attr_beliefs" placeholder="beliefs" spellcheck="false" title="@{beliefs}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="likes" title="likes">
<span class="sublabel darkred" data-i18n="likes">likes</span>
<input data-i18n-placeholder="likes" name="attr_likes" placeholder="likes" spellcheck="false" title="@{likes}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="dislikes" title="dislikes">
<span class="sublabel darkred" data-i18n="dislikes">dislikes</span>
<input data-i18n-placeholder="dislikes" name="attr_dislikes" placeholder="dislikes" spellcheck="false" title="@{dislikes}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="catchphrases" title="catchphrases">
<span class="sublabel darkred" data-i18n="catchphrases">catchphrases</span>
<input data-i18n-placeholder="catchphrases" name="attr_catchphrases" placeholder="catchphrases" spellcheck="false" title="@{catchphrases}" type="text" value="" />
</label>
</div>
</div>
<!--- NOTES --->
<div class="notes background-color">
<h1 data-i18n="campaign_notes">campaign notes</h1>
<!--<button class="pictos settings-button" name="act_toggle_notes" type="action">y</button>-->
<div class="notes-flex notes-settings">
<h2 data-i18n="notes">notes</h2>
<textarea data-i18n-placeholder="notes" name="attr_campaign_notes" placeholder="notes" spellcheck="false" title="@{campaign_notes}" value=""></textarea>
<h2 data-i18n="allies">allies</h2>
<textarea data-i18n-placeholder="allies" name="attr_campaign_notes_allies" placeholder="allies" spellcheck="false" title="@{campaign_notes_allies}" value=""></textarea>
<h2 data-i18n="enemies">enemies</h2>
<textarea data-i18n-placeholder="enemies" name="attr_campaign_notes_enemies" placeholder="enemies" spellcheck="false" title="@{campaign_notes_enemies}" value=""></textarea>
<h2 data-i18n="organizations">organizations</h2>
<textarea data-i18n-placeholder="organizations" name="attr_campaign_notes_organizations" placeholder="organizations" spellcheck="false" title="@{campaign_notes_organizations}" value=""></textarea>
</div>
</div>
</div>
</div>
<div class="feats">
<div class="column">
<div class="feats-ancestry-grid background-color">
<h1 data-i18n="ancestry_feats_and_abilities">ancestry feats and abilities</h1>
<fieldset class="repeating_feat-ancestry">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid repeating-grid-display feat-border">
<button class="pictos settings-button" data-i18n-title="feat_ancestry_settings" name="act_settings" title="feat ancestry settings" type="action">
y
</button>
<button class="h2" name="roll_ACTION" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{feat_ancestry}}} {{subheader=^{ancestry_feats_and_abilities}}} {{info01_name=^{type}}} {{info01=@{feat_ancestry_type}}} {{info02_name=^{level}}} {{info02=@{feat_ancestry_level}}} {{desc=@{feat_ancestry_notes}}}"><span name= "attr_feat_ancestry"></span></button>
<span name="attr_feat_ancestry_type"></span>
<span name="attr_feat_ancestry_level"></span>
<button data-i18n-title="show_or_hide_feat_ancestry_description" name="act_collapse" title="show or hide feat ancestry description" type="action">
4
</button>
<span class="collapse" name="attr_feat_ancestry_notes"></span>
</div>
<div class="grid feats-repeating-grid settings">
<label class="sublabel" data-i18n-title="ancestry_feat_and_abilities" title="ancestry feat and abilities">
<span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_feat_ancestry" placeholder="name" spellcheck="false" title="@{feat_ancestry}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="ancestry_feat_type" title="ancestry feat type">
<span class="sublabel darkred" data-i18n="type">type</span>
<input data-i18n-placeholder="special" name="attr_feat_ancestry_type" placeholder="special" spellcheck="false" title="@{feat_ancestry_type}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="ancestry_feat_level" title="ancestry feat level">
<span class="sublabel darkred" data-i18n="level">level</span>
<input data-i18n-placeholder="1st" name="attr_feat_ancestry_level" placeholder="1st" spellcheck="false" title="@{feat_ancestry_level}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="ancestry_feat_description" title="ancestry feat description">
<span class="sublabel darkred" data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_feat_ancestry_notes" placeholder="description" spellcheck="false" title="@{feat_ancestry_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
<div class="feats-skill-grid background-color">
<h1 data-i18n="skill_feats">skill feats</h1>
<fieldset class="repeating_feat-skill">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid repeating-grid-display feat-border">
<button class="pictos settings-button" data-i18n-title="feat_skill_settings" name="act_settings" title="feat skill settings" type="action">
y
</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{feat_skill}}} {{subheader=^{skill_feats}}} {{info01_name=^{level}}} {{info01=@{feat_skill_level}}} {{desc=@{feat_skill_notes}}}"><span name= "attr_feat_skill"></span></button>
<span name="attr_feat_skill_level"></span>
<button name="act_collapse" data-i18n-title="show_or_hide_feat_skill_description" title="show or hide feat skill description" type="action">
4
</button>
<span class="collapse" name="attr_feat_skill_notes"></span>
</div>
<div class="grid feats-repeating-grid settings">
<label class="sublabel" data-i18n-title="skill_feat" title="skill feat">
<span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_feat_skill" placeholder="name" spellcheck="false" title="@{feat_skill}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="skill_feat_level" title="skill feat level">
<span class="sublabel darkred" data-i18n="level">level</span>
<input data-i18n-placeholder="1st" name="attr_feat_skill_level" placeholder="1st" spellcheck="false" title="@{feat_skill_level}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="skill_feat_description" title="skill feat description">
<span class="sublabel darkred" data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_feat_skill_notes" placeholder="description" spellcheck="false" title="@{feat_skill_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
<div class="feats-general-grid background-color">
<h1 data-i18n="general_feats">general feats</h1>
<fieldset class="repeating_feat-general">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid repeating-grid-display feat-border">
<button class="pictos settings-button" data-i18n-title="feat_general_settings" name="act_settings" title="feat general settings" type="action">
y
</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{feat_general}}} {{subheader=^{general_feats}}} {{info01_name=^{level}}} {{info01=@{feat_general_level}}} {{desc=@{feat_general_notes}}}"><span name= "attr_feat_general"></span></button>
<span name="attr_feat_general_level"></span>
<button name="act_collapse" data-i18n-title="show_or_hide_feat_general_description" title="show or hide feat general description" type="action">
4
</button>
<span class="collapse" name="attr_feat_general_notes"></span>
</div>
<div class="grid feats-repeating-grid settings">
<label class="sublabel" data-i18n-title="general_feat" title="general feat">
<span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_feat_general" placeholder="name" spellcheck="false" title="@{feat_general}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="general_feat_level" title="general feat level">
<span class="sublabel darkred" data-i18n="level">level</span>
<input data-i18n-placeholder="1st" name="attr_feat_general_level" placeholder="1st" spellcheck="false" title="@{feat_general_level}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="general_feat_description" title="general feat description">
<span class="sublabel darkred" data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_feat_general_notes" placeholder="description" spellcheck="false" title="@{feat_general_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
</div>
<div class="column">
<div class="feats-class-grid background-color">
<h1 data-i18n="class_feats_and_abilities">class feats and abilities</h1>
<fieldset class="repeating_feat-class">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid repeating-grid-display feat-border">
<button class="pictos settings-button" data-i18n-title="feat_class_settings" name="act_settings" title="feat class settings" type="action">
y
</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{feat_class}}} {{subheader=^{class_feats_and_abilities}}} {{info01_name=^{type}}} {{info01=@{feat_class_type}}} {{info02_name=^{level}}} {{info02=@{feat_class_level}}} {{desc=@{feat_class_notes}}}"><span name= "attr_feat_class"></span></button>
<span name="attr_feat_class_type"></span>
<span name="attr_feat_class_level"></span>
<button name="act_collapse" data-i18n-title="show_or_hide_feat_class_description" title="show or hide feat class description" type="action">
4
</button>
<span class="collapse" name="attr_feat_class_notes"></span>
</div>
<div class="grid feats-repeating-grid settings">
<label class="sublabel" data-i18n-title="class_feats_and_abilities" title="class feats and abilities">
<span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_feat_class" placeholder="name" spellcheck="false" title="@{feat_class}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="class_feat_type" title="class feat type">
<span class="sublabel darkred" data-i18n="type">type</span>
<input data-i18n-placeholder="special" name="attr_feat_class_type" placeholder="special" spellcheck="false" title="@{feat_class_type}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="class_feat_level" title="class feat level">
<span class="sublabel darkred" data-i18n="level">level</span>
<input data-i18n-placeholder="1st" name="attr_feat_class_level" placeholder="1st" spellcheck="false" title="@{feat_class_level}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="class_feat_description" title="class feat description">
<span class="sublabel darkred" data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_feat_class_notes" placeholder="description" spellcheck="false" title="@{feat_class_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
<div class="feats-bonus-grid background-color">
<h1 data-i18n="bonus_feats">bonus feats</h1>
<fieldset class="repeating_feat-bonus">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid repeating-grid-display feat-border">
<button class="pictos settings-button" data-i18n-title="feat_bonus_settings" name="act_settings" title="feat bonus settings" type="action">
y
</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{feat_bonus}}} {{subheader=^{bonus_feats}}} {{desc=@{feat_bonus_notes}}}"><span name= "attr_feat_bonus"></span></button>
<button data-i18n-title="show_or_hide_feat_bonus_description" name="act_collapse" title="show or hide feat bonus description" type="action">
4
</button>
<span class="collapse" name="attr_feat_bonus_notes"></span>
</div>
<div class="grid feats-repeating-grid settings">
<label class="sublabel" data-i18n-title="bonus_feat" title="bonus feat">
<span class="sublabel darkred" data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_feat_bonus" placeholder="name" spellcheck="false" title="@{feat_bonus}" type="text" value="" />
</label>
<label class="sublabel" data-i18n-title="bonus_feat_description" title="bonus feat description">
<span class="sublabel darkred" data-i18n="description">description</span>
<textarea data-i18n-placeholder="description" name="attr_feat_bonus_notes" placeholder="description" spellcheck="false" title="@{feat_bonus_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
</div>
</div>
<div class="inventory">
<div class="background-color">
<h1 data-i18n="inventory">inventory</h1>
<div class="grid inv-top-row">
<div class="circle bulk-circle">
<label data-i18n-title="bulk" title="bulk">
<span data-i18n="bulk">bulk</span>
<span class="bulk-circle" name="attr_bulk" title="@{bulk}"></span>
</label>
</div>
<div class="grid encumbered">
<h2 data-i18n="encumbered">encumbered</h2>
<div class='circle'>
<span name="attr_encumbered_base" title="@{encumbered_base}"></span>
</div>
<span class='center'>=</span>
<div class="dcbase sublabel">
<span data-i18n="base">base</span>
<span data-i18n="5"><b>5</b></span>
</div>
<label data-i18n-title="strength_modifier_display" title="strength modifier display">
<span class="title" data-i18n="str">str</span>
<span class="value" name="attr_strength_modifier" title="@{strength_modifier}"></span>
</label>
<div class="dcbase sublabel">
<span data-i18n="mod">mode</span>
<input name="attr_encumbered_modifier" type="number" value="0"/>
</div>
</div>
<div class="grid encumbered">
<h2 data-i18n="maximum">maximum</h2>
<div class='circle'>
<span name="attr_maximum_base" title="@{maximum_base}"></span>
</div>
<span class='center'>=</span>
<div class="dcbase sublabel">
<span data-i18n="base">base</span>
<span data-i18n="10"><b>10</b></span>
</div>
<label data-i18n-title="strength_modifier_display" title="strength modifier display">
<span class="title" data-i18n="str">str</span>
<span class="value" name="attr_strength_modifier" title="@{strength_modifier}"></span>
</label>
<div class="dcbase sublabel">
<span data-i18n="mod">mode</span>
<input name="attr_maximum_modifier" type="number" value="0"/>
</div>
</div>
<div class="coins">
<h2 data-i18n="cp">cp</h2>
<label data-i18n-title="copper_pieces" title="copper pieces">
<input class="circle coins-circle" data-i18n-placeholder="0" name="attr_cp" placeholder="0" spellcheck="false" title="@{cp}" type="text" value="" />
</label>
</div>
<div class="coins">
<h2 data-i18n="sp">sp</h2>
<label data-i18n-title="silver_pieces" title="silver pieces">
<input class="circle coins-circle" data-i18n-placeholder="0" name="attr_sp" placeholder="0" spellcheck="false" title="@{sp}" type="text" value="" />
</label>
</div>
<div class="coins">
<h2 data-i18n="gp">gp</h2>
<label data-i18n-title="gold_pieces" title="gold pieces">
<input class="circle coins-circle" data-i18n-placeholder="0" name="attr_gp" placeholder="0" spellcheck="false" title="@{gp}" type="text" value="" />
</label>
</div>
<div class="coins">
<h2 data-i18n="pp">pp</h2>
<label data-i18n-title="platinum_pieces" title="platinum pieces">
<input class="circle coins-circle" data-i18n-placeholder="0" name="attr_pp" placeholder="0" spellcheck="false" title="@{pp}" type="text" value="" />
</label>
</div>
</div>
<div class="column worn-items">
<div class="grid inv-display-grid">
<h2 data-i18n="worn_item">worn item</h2>
<h2 data-i18n="invest_max_10">invest <br /> (max 10)</h2>
<h2 data-i18n="bulk">bulk</h2>
<h2 data-i18n="qty">qty</h2>
</div>
<fieldset class="repeating_items-worn">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid inv-display-grid">
<button class="pictos settings-button" data-i18n-title="worn_item_settings" name="act_settings" title="worn item settings" type="action">
y
</button>
<button name="roll_ACTION" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{worn_item}}} {{subheader=^{worn_item}}} {{info01_name=^{invest}}} {{info01=@{worn_invest}}} {{info02_name=^{bulk}}} {{info02=@{worn_bulk}}} {{info03_name=^{quantity}}} {{info03=@{worn_quantity}}} {{notes_show=[[1]]}} {{notes=@{worn_item_notes}}}">
<span name= "attr_worn_item"></span>
</button>
<span class="inv-bulk" name="attr_worn_invest"></span>
<span class="inv-bulk" name="attr_worn_bulk"></span>
<input class="" name="attr_worn_quantity" title="@{worn_quantity}" type="number" value="1" />
<button name="act_collapse" data-i18n-title="show_or_hide_worn_item_notes" title="show or hide worn item notes" type="action">
4
</button>
<span class="inv-notes collapse" class="collapse" name="attr_worn_item_notes"></span>
</div>
<div class="grid item-repeating-grid settings">
<label class="inv-name" data-i18n-title="worn_item" title="worn item">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_worn_item" placeholder="name" spellcheck="false" title="@{worn_item}" type="text" value="" />
</label>
<label class="inv-invest" data-i18n-title="work_item_invest_max_10" title="work item invest (max 10)">
<span data-i18n="invest">invest</span>
<input data-i18n-placeholder="0" name="attr_worn_invest" placeholder="0" spellcheck="false" title="@{worn_invest}" type="text" value="" />
</label>
<label class="inv-bulk" data-i18n-title="worn_item_bulk" title="worn item bulk">
<span data-i18n="bulk">bulk</span>
<input data-i18n-placeholder="0" name="attr_worn_bulk" placeholder="0" spellcheck="false" title="@{worn_bulk}" type="text" value="" />
</label>
<label class="inv-notes" data-i18n-title="worn_item_notes" title="worn item notes">
<span data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_worn_item_notes" placeholder="notes" spellcheck="false" title="@{worn_item_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
<div class="column">
<div class="inv-half-col">
<div class="grid inv-display-grid">
<h2 data-i18n="readied_items">readied items</h2>
<h2 data-i18n="bulk">bulk</h2>
<h2 data-i18n="qty" data-i18n-title="quantity">qty</h2>
</div>
<fieldset class="repeating_items-readied">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid inv-display-grid inv-display-grid-other feat-border">
<button class="pictos settings-button" data-i18n-title="readied_item_settings" name="act_settings" title="readied item settings" type="action">
y
</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{readied_item}}} {{subheader=^{readied_items}}} {{info01_name=^{bulk}}} {{info01=@{readied_bulk}}} {{info02_name=^{quantity}}} {{info02=@{readied_quantity}}} {{notes_show=[[1]]}} {{notes=@{readied_item_notes}}}">
<span name= "attr_readied_item"></span>
</button>
<span class="inv-bulk" name="attr_readied_bulk"></span>
<input class="" name="attr_readied_quantity" title="@{readied_quantity}" type="number" value="1" />
<button name="act_collapse" data-i18n-title="show_or_hide_readied_item_notes" title="show or hide readied item notes" type="action">
4
</button>
<span class="inv-notes collapse" name="attr_readied_item_notes"></span>
</div>
<div class="grid item-repeating-grid settings">
<label class="inv-name" data-i18n-title="readied_item_name" title="readied item name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_readied_item" placeholder="name" spellcheck="false" title="@{readied_item}" type="text" value="" />
</label>
<label class="inv-bulk" data-i18n-title="readied_item_bulk" title="readied item bulk">
<span data-i18n="bulk">bulk</span>
<input data-i18n-placeholder="0" name="attr_readied_bulk" placeholder="0" spellcheck="false" title="@{readied_bulk}" type="text" value="" />
</label>
<label class="inv-notes" data-i18n-title="readied_item_notes" title="readied item notes">
<span data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_readied_item_notes" placeholder="notes" spellcheck="false" title="@{readied_item_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
<div class="inv-half-col">
<div class="grid inv-display-grid">
<h2 data-i18n="other_items">other items</h2>
<h2 data-i18n="bulk">bulk</h2>
<h2 data-i18n="qty" data-i18n-title="quantity">qty</h2>
</div>
<fieldset class="repeating_items-other">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings," />
<div class="grid inv-display-grid inv-display-grid-other feat-border">
<button class="pictos settings-button" name="act_settings" data-i18n-title="other_item_settings" title="other item settings" type="action">
y
</button>
<button class="h2" name="roll_action" type="roll" value="@{whispertype} &{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{other_item}}} {{subheader=^{other_items}}} {{info01_name=^{bulk}}} {{info01=@{other_bulk}}} {{info02_name=^{quantity}}} {{info02=@{other_quantity}}} {{notes_show=[[1]]}} {{notes=@{other_item_notes}}}">
<span name= "attr_other_item"></span>
</button>
<span class="inv-bulk" name="attr_other_bulk"></span>
<input class="" name="attr_other_quantity" title="@{other_quantity}" type="number" value="1" />
<button name="act_collapse" data-i18n-title="show_or_hide_other_item_notes" title="show or hide other item notes" type="action">
4
</button>
<span class="inv-notes collapse" name="attr_other_item_notes"></span>
</div>
<div class="grid item-repeating-grid settings">
<label class="inv-name" data-i18n-title="other_item_name" title="other item name">
<span data-i18n="name">name</span>
<input data-i18n-placeholder="name" name="attr_other_item" placeholder="name" spellcheck="false" title="@{other_item}" type="text" value="" />
</label>
<label class="inv-bulk" data-i18n-title="other_item_bulk" title="other item bulk">
<span data-i18n="bulk">bulk</span>
<input data-i18n-placeholder="0" name="attr_other_bulk" placeholder="0" spellcheck="false" title="@{other_bulk}" type="text" value="" />
</label>
<label class="inv-notes" data-i18n-title="other_item_notes" title="other item notes">
<span data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_other_item_notes" placeholder="notes" spellcheck="false" title="@{other_item_notes}" value=""></textarea>
</label>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="spells">
<div class="column">
<div class="spellattack background-color">
<h1 data-i18n="spell_attack_roll">spell attack roll</h1>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<input class="npc-spellcaster-field" name="attr_spell_attack" title="@{spell_attack}" type="text" value=""/>
<div class="grid spellattack-grid">
<button class="pictos settings-button" name="act_toggle_spell_attack" type="action">y</button>
<div class="circle"><span name="attr_spell_attack"></span></div><span class="equals">=</span>
<label class="sublabel" data-i18n-title="spell_attack_key_ability" title="spell attack key ability"><span class="sublabel darkred" data-i18n="key">key</span><span name="attr_spell_attack_key_ability"></span></label>
<label class="sublabel" data-i18n-title="spell_attack_proficiency" title="spell attack proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_spell_attack_proficiency_display"></span><span class="inline" name="attr_spell_attack_proficiency" title="@{spell_attack_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="spell_attack_temporary" title="spell attack temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_spell_attack_temporary" title="@{spell_attack_temporary}"></span></label>
</div>
<div class="settings grid spellattack-grid">
<div class="ability-select">
<label data-i18n-title="spell_attack_key_ability_select" title="spell attack key ability select">
<select name="attr_spell_attack_key_ability_select" title="@{spell_attack_key_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
</label>
<label data-i18n-title="spell_attack_key_ability" title="spell attack key ability">
<input data-i18n-placeholder="0" name="attr_spell_attack_key_ability" placeholder="0" spellcheck="false" title="@{spell_attack_key_ability}" type="text" value=""/>
</label>
</div>
<label class="sublabel" data-i18n-title="spell_attack_rank" title="spell attack rank"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_spell_attack_rank" title="@{spell_attack_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label class="sublabel" data-i18n-title="spell_attack_temporary" title="spell attack temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_spell_attack_temporary" placeholder="0" spellcheck="false" title="@{spell_attack_temporary}" type="text" value="0"/>
</label>
<label data-i18n-title="spell_attack_notes" title="spell attack notes"><span data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_spell_attack_notes" placeholder="notes" spellcheck="false" title="@{spell_attack_notes}" value=""></textarea>
</label>
</div>
</div>
<div class="spelldc background-color">
<h1 data-i18n="spell_dc">spell dc</h1>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<input class="npc-spellcaster-field" name="attr_spell_dc" title="@{spell_dc}" type="text" value=""/>
<div class="grid spelldc-grid">
<button class="pictos settings-button" name="act_toggle_spell_dc" type="action">y</button>
<div class="circle"><span name="attr_spell_dc"></span></div><span class="equals">=</span>
<label class="sublabel" data-i18n-title="spell_base_dc" title="spell base dc"><span class="sublabel spelldc-base" data-i18n="dc_base">DC Base</span><span data-i18n="10"><b>10</b></span></label>
<label class="sublabel" data-i18n-title="spell_dc_key_ability" title="spell dc key ability"><span class="sublabel darkred" data-i18n="key">key</span><span name="attr_spell_dc_key_ability"></span></label>
<label class="sublabel" data-i18n-title="spell_dc_proficiency" title="spell dc proficiency"><span class="sublabel darkred" data-i18n="prof">prof</span><span><span class="inline" name="attr_spell_dc_proficiency_display"></span><span class="inline" name="attr_spell_dc_proficiency" title="@{spell_dc_proficiency}"></span></span></label>
<label class="sublabel" data-i18n-title="spell_dc_temporary" title="spell dc temporary"><span class="sublabel darkred" data-i18n="temp">temp</span><span name="attr_spell_dc_temporary" title="@{spell_dc_temporary}"></span></label>
</div>
<div class="settings grid spelldc-grid">
<div class="ability-select">
<label data-i18n-title="spell_dc_key_ability_select" title="spell dc key ability select">
<select name="attr_spell_dc_key_ability_select" title="@{spell_dc_key_ability_select}">
<option data-i18n="str" value="@{strength_modifier}">str</option>
<option data-i18n="dex" value="@{dexterity_modifier}">dex</option>
<option data-i18n="con" value="@{constitution_modifier}">con</option>
<option data-i18n="int" value="@{intelligence_modifier}" selected="">int</option>
<option data-i18n="wis" value="@{wisdom_modifier}">wis</option>
<option data-i18n="cha" value="@{charisma_modifier}">cha</option>
<option data-i18n="custom" value="custom">custom</option>
</select>
</label>
<label data-i18n-title="spell_dc_key_ability" title="spell dc key ability">
<input data-i18n-placeholder="0" name="attr_spell_dc_key_ability" placeholder="0" spellcheck="false" title="@{spell_dc_key_ability}" type="text" value=""/>
</label>
</div>
<label class="sublabel" data-i18n-title="spell_dc_rank" title="spell dc rank"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select name="attr_spell_dc_rank" title="@{spell_dc_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label class="sublabel" data-i18n-title="spell_dc_temporary" title="spell dc temporary"><span class="sublabel darkred" data-i18n="temp">temp</span>
<input data-i18n-placeholder="0" name="attr_spell_dc_temporary" placeholder="0" spellcheck="false" title="@{spell_dc_temporary}" type="text" value="0"/>
</label>
<label data-i18n-title="spell_dc_notes" title="spell dc notes"><span data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_spell_dc_notes" placeholder="notes" spellcheck="false" title="@{spell_dc_notes}" value=""></textarea>
</label>
</div>
</div>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<div class="magic-tradition background-color pc-spellcaster-field">
<h1 data-i18n="magic_traditions">magic traditions</h1>
<div class="grid magic-tradition-grid">
<label class="sublabel" data-i18n-title="magical_tradition_arcane" title="magical tradition arcane"><span class="sublabel darkred darkred-half-left" data-i18n="arcane">arcane</span><span class="sublabel darkred darkred-half-right" name="attr_magic_tradition_arcane_proficiency" title="@{magic_tradition_arcane_proficiency}"></span>
<select class="simple" name="attr_magic_tradition_arcane_rank" title="@{magic_tradition_arcane_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label class="sublabel" data-i18n-title="magical_tradition_primal" title="magical tradition primal"><span class="sublabel darkred darkred-half-left" data-i18n="primal">primal</span><span class="sublabel darkred darkred-half-right" name="attr_magic_tradition_primal_proficiency" title="@{magic_tradition_primal_proficiency}"></span>
<select class="simple" name="attr_magic_tradition_primal_rank" title="@{magic_tradition_primal_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label class="sublabel" data-i18n-title="magical_tradition_occult" title="magical tradition occult"><span class="sublabel darkred darkred-half-left" data-i18n="occult">occult</span><span class="sublabel darkred darkred-half-right" name="attr_magic_tradition_occult_proficiency" title="@{magic_tradition_occult_proficiency}"></span>
<select class="simple" name="attr_magic_tradition_occult_rank" title="@{magic_tradition_occult_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label class="sublabel" data-i18n-title="magical_tradition_divine" title="magical tradition divine"><span class="sublabel darkred darkred-half-left" data-i18n="divine">divine</span><span class="sublabel darkred darkred-half-right" name="attr_magic_tradition_divine_proficiency" title="@{magic_tradition_divine_proficiency}"></span>
<select class="simple" name="attr_magic_tradition_divine_rank" title="@{magic_tradition_divine_rank}">
<option data-i18n="untrained" value="0" selected="">untrained</option>
<option data-i18n="trained" value="2">trained</option>
<option data-i18n="expert" value="4">expert</option>
<option data-i18n="master" value="6">master</option>
<option data-i18n="legendary" value="8">legendary</option>
</select>
</label>
<label class="spellcaster" title="prepared spell caster">
<input name="attr_spellcaster_prepared" title="@{spellcaster_prepared}" type="checkbox" value="prepared"/><span data-i18n="prepared">prepared</span>
</label>
<label class="spellcaster" title="spontaneous spell caster">
<input name="attr_spellcaster_spontaneous" title="@{spellcaster_spontaneous}" type="checkbox" value="spontaneous"/><span data-i18n="spontaneous">spontaneous</span>
</label>
</div>
</div>
<div class="magic-tradition background-color npc-spellcaster-field">
<div class="grid magic-tradition-grid">
<label class="spellcaster" title="prepared spell caster">
<input name="attr_spellcaster_prepared" title="@{spellcaster_prepared}" type="checkbox" value="prepared"/><span data-i18n="prepared">prepared</span>
</label>
<label class="spellcaster" title="spontaneous spell caster">
<input name="attr_spellcaster_spontaneous" title="@{spellcaster_spontaneous}" type="checkbox" value="spontaneous"/><span data-i18n="spontaneous">spontaneous</span>
</label>
</div>
</div>
<div class="spellslots background-color">
<h1 data-i18n="spell_slots_per_day">spell slots per day</h1>
<label class="spellslots-row"><span class="sublabel darkred cantrip-level" data-i18n="cantrip_level">cantrip level</span></label>
<label class="spellslots-row"><span data-i18n="cantrips">CANTRIPS</span>
<input type="number" name="attr_cantrips_per_day" value=""/>
</label>
<label class="spellslots-row"><span class="sublabel darkred level" data-i18n="level">level</span><span class="sublabel darkred slots-per-day" data-i18n="spell_slots_per_day">spell slots per day</span></label>
<label class="spellslots-row"><span data-i18n="1-level">level 1</span>
<input type="number" name="attr_level_1_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_1_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="2-level">level 2</span>
<input type="number" name="attr_level_2_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_2_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="3-level">level 3</span>
<input type="number" name="attr_level_3_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_3_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="4-level">level 4</span>
<input type="number" name="attr_level_4_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_4_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="5-level">level 5</span>
<input type="number" name="attr_level_5_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_5_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="6-level">level 6</span>
<input type="number" name="attr_level_6_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_6_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="7-level">level 7</span>
<input type="number" name="attr_level_7_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_7_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="8-level">level 8</span>
<input type="number" name="attr_level_8_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_8_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="9-level">level 9</span>
<input type="number" name="attr_level_9_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_9_per_day_max" value=""/>
</label>
<label class="spellslots-row"><span data-i18n="10-level">level 10</span>
<input type="number" name="attr_level_10_per_day" value=""/><span>/</span>
<input type="number" name="attr_level_10_per_day_max" value=""/>
</label>
</div>
<div class="spellsectiontoggles background-color">
<h1 data-i18n="toggle_sections">Toggle Sections</h1>
<label class="spellsectiontoggles-row"><span class="sublabel darkred" data-i18n="off_on">off/on</span><span class="sublabel darkred" data-i18n="spell_section">spell_section</span></label>
<label class="spellsectiontoggles-row"><span class="checkbox">
<label class="switch" data-i18-titlen="innate_spells" title="innate spells">
<input name="attr_toggle_innate" title="@{toggle_innate}" type="checkbox" value="innate" checked="checked"/><span class="slider"></span>
</label></span><span data-i18n="innate_spells">innate spells</span></label>
<label class="spellsectiontoggles-row"><span class="checkbox">
<label class="switch" data-i18-titlen="focus_spells" title="focus spells">
<input name="attr_toggle_focus" title="@{toggle_focus}" type="checkbox" value="focus" checked="checked"/><span class="slider"></span>
</label></span><span data-i18n="focus_spells">focus spells</span></label>
<label class="spellsectiontoggles-row"><span class="checkbox">
<label class="switch" data-i18-titlen="cantrips" title="cantrips">
<input name="attr_toggle_cantrips" title="@{toggle_cantrips}" type="checkbox" value="cantrips" checked="checked"/><span class="slider"></span>
</label></span><span data-i18n="cantrips">cantrips</span></label>
<label class="spellsectiontoggles-row"><span class="checkbox">
<label class="switch" data-i18-titlen="spells" title="spells">
<input name="attr_toggle_normalspells" title="@{toggle_normalspells}" type="checkbox" value="spells" checked="checked"/><span class="slider"></span>
</label></span><span data-i18n="spells">spells</span></label>
</div>
</div>
<div class="column">
<div class="background-color innate compendium-drop-target">
<h1 class="label">INNATE SPELLS</h1><span class="sort">
<select name="attr_sort_spellinnate" title="@{sort_spellinnate}">
<option data-i18n="sort_by:" selected="selected" value="">Sort by:</option>
<option data-i18n="name" value="name">Name</option>
<option data-i18n="name_descending" value="name_desc">Name Desc</option>
<option data-i18n="level" value="level">Level</option>
<option data-i18n="level_descending" value="level_desc">Level Desc</option>
</select></span>
<input accept="Name" name="attr_spellinnate_spelldrop_name" type="hidden"/>
<input accept="uniqueName" name="attr_spellinnate_spelldrop_uniq" type="hidden"/>
<input accept="data" name="attr_spellinnate_spelldrop_data" type="hidden"/>
<div class="spell-panel-header"><span class="sublabel darkred" data-i18n="name">NAME</span><span class="sublabel darkred" data-i18n="actions">ACTIONS</span><span class="sublabel darkred" data-i18n="level">LEVEL</span><span class="sublabel darkred" data-i18n="daily-uses">Daily Uses</span><span class="details-toggle-column"></span>
</div>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<fieldset class="repeating_spellinnate">
<div class="spell-panel-row">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings,"/>
<button class="sheet-pictos sheet-settings-button" name="act_settings" type="action">y</button>
<input name="attr_roll_critical_damage" type="hidden" value="@{damage_critical_roll}"/>
<input name="attr_damage_critical_roll" type="hidden" value=" {{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_type}}}"/>
<input name="attr_roll_critical_damage_button" type="hidden" value="{{roll03misc=[^{roll} ^{critical_damage}](~repeating_spellinnate_CRITICAL_DAMAGE) }}"/>
<button name="roll_CRITICAL_DAMAGE" style="display: none;" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{innate_spell} ^{level} @{current_level}}} @{damage_critical_roll}"></button>
<button class="pc-spellcaster-field" name="roll_spellroll" title="%{spellroll}" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{innate_spell} ^{level} @{current_level}}} {{desc=@{description}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{saving_throw_select} @{attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button>
<button class="npc-spellcaster-field" name="roll_npcspellroll" title="%{npcspellroll}" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{innate_spell} ^{level} @{current_level}}} {{desc=@{description}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{npc_saving_throw_select} @{npc_attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button><span>
<select class="simple" name="attr_cast_actions" title="@{cast_actions}">
<option data-i18n="1-action" value="1-action">1-action</option>
<option data-i18n="2-action" value="2-action">2-action</option>
<option data-i18n="3-action" value="3-action">3-action</option>
<option data-i18n="1-to-3-actions" value="1-to-3-actions">1-to-3-actions</option>
<option data-i18n="reaction" value="reaction">reaction</option>
<option data-i18n="free_action" value="free_action">free_action</option>
</select></span><span>
<input name="attr_current_level" placeholder="" spellcheck="false" title="@{current_level}" type="number"/></span><span>
<input name="attr_uses" title="@{uses}" type="number" value="0"/>/
<input name="attr_uses_max" title="@{uses_max}" type="number" value="0"/></span>
<button data-i18n-title="show_or_hide_weapon_notes" name="act_collapse" title="show or hide weapon notes" type="action">4</button>
<div class="collapse">
<div class="spell-details-section">
<div class="spell-details-row"><span class="spell-trait" name="attr_school"></span>
<input class="spell-detail-toggle-control" name="attr_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_npc_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_traits" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" name="attr_traits"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="magic_tradition">Magic Tradition</span><span class="spell-detail" name="attr_magic_tradition"></span><span class="spell-detail-title" data-i18n="school">School</span><span class="spell-detail" name="attr_school"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="frequency">frequency</span><span class="spell-detail" name="attr_frequency"></span>
<input class="spell-detail-toggle-control" name="attr_duration" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="duration">duration</span><span class="spell-detail" name="attr_duration"></span></span>
</div>
<div class="spell-details-row">
<input class="spell-detail-toggle-control" name="attr_cast" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="cast">cast</span><span class="spell-detail" name="attr_cast"></span></span>
<input class="spell-detail-toggle-control" name="attr_cast_detail_information" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" name="attr_cast_detail_label"></span><span class="spell-detail" name="attr_cast_detail_information"></span></span>
</div>
<input class="spell-detail-toggle-control" name="attr_range" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="range">range</span><span class="spell-detail" name="attr_range"></span></div>
<input class="spell-detail-toggle-control" name="attr_area" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="area">area</span><span class="spell-detail" name="attr_area"></span></div>
<input class="spell-detail-toggle-control" name="attr_target" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="target">target</span><span class="spell-detail" name="attr_target"></span></div>
</div>
<div class="spell-details-section">
<div class="spell-details-row"><span name="attr_description"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_success">critical success</span><span class="spell-detail" name="attr_save_critical_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="success">success</span><span class="spell-detail" name="attr_save_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="failure">failure</span><span class="spell-detail" name="attr_save_failure"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_failure">critical failure</span><span class="spell-detail" name="attr_save_critical_failure"></span></div>
</div>
<div class="spell-details-section">
<input class="spell-detail-toggle-control" name="attr_heightened" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="heightened_effects">heightened effects</span><span class="spell-detail" name="attr_heightened"></span></div>
</div>
</div>
<div class="settings">
<label class="sublabel"><span class="sublabel darkred" data-i18n="name">NAME</span>
<input type="text" title="@{name}" name="attr_name" placeholder="Acid Arrow" spellcheck="false"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="base_level">BASE LEVEL</span>
<input type="number" name="attr_spelllevel" value="1"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="traits">Traits</span>
<input name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="magic_tradition">magic tradition</span>
<select class="simple" title="@{magic_tradition}" name="attr_magic_tradition">
<option data-i18n="spell tradition" value="empty-string" selected="">SPELL TRADITION</option>
<option data-i18n="arcane spell" value="arcane">ARCANE SPELL</option>
<option data-i18n="divine spell" value="divine">DIVINE SPELL</option>
<option data-i18n="primal spell" value="primal">PRIMAL SPELL</option>
<option data-i18n="occult spell" value="occult">OCCULT SPELL</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="school">SCHOOL</span>
<select class="simple" name="attr_school">
<option data-i18n="abjuration" value="abjuration" selected="">ABJURATION</option>
<option data-i18n="conjuration" value="conjuration">CONJURATION</option>
<option data-i18n="divination" value="divination">DIVINATION</option>
<option data-i18n="enchantment" value="enchantment">ENCHANTMENT</option>
<option data-i18n="evocation" value="evocation">EVOCATION</option>
<option data-i18n="illusion" value="illusion">ILLUSION</option>
<option data-i18n="necromancy" value="necromancy">NECROMANCY</option>
<option data-i18n="transmutation" value="transmutation">TRANSMUTATION</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="cast">Cast</span>
<input name="attr_cast" placeholder="somatic, verbal" spellcheck="false" title="@{cast}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred">
<select class="simple label-select" name="attr_cast_detail_label">
<option data-i18n="requirement" value="requirement" selected="">requirement</option>
<option data-i18n="trigger" value="trigger">trigger</option>
<option data-i18n="cost" value="cost">cost</option>
</select></span>
<input name="attr_cast_detail_information" placeholder="" spellcheck="false" title="@{cast_detail_information}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="range">RANGE</span>
<input name="attr_range" placeholder="120 feet" spellcheck="false" title="@{range}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="target">TARGET</span>
<input name="attr_target" placeholder="1 creature or object" spellcheck="false" title="@{target}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="area">AREA</span>
<input name="attr_area" placeholder="120 feet" spellcheck="false" title="@{area}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="duration">DURATION</span>
<input name="attr_duration" value="" placeholder="5 minutes" spellcheck="false" title="@{duration}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="frequency">frequency</span>
<select class="simple" name="attr_frequency" title="@{frequency}">
<option data-i18n="constant" value="constant" selected="selected">CONSTANT</option>
<option data-i18n="at-will" value="at-will">AT WILL</option>
<option data-i18n="x/day" value="daily-limit">X/DAY</option>
</select>
</label><span class="bordertop"><span class="sublabel darkred" data-i18n="attack">attack</span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span><span class="pc-spellcaster-field">
<label class="switch" title="@{attack_checkbox}">
<input name="attr_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spellattack_rank})[Prof] + (@{level})[Level] + (@{spellattack_ability})[ABI] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_attack_checkbox" title="@{attack_checkbox}" type="checkbox" value="@{attack_roll}"/><span class="slider"></span>
</label></span><span class="npc-spellcaster-field">
<label class="switch" title="@{npc_attack_checkbox}">
<input name="attr_npc_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spell_attack})[ATK] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_npc_attack_checkbox" title="@{npc_attack_checkbox}" type="checkbox" value="@{npc_attack_roll}"/><span class="slider"></span>
</label></span></span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="attack">attack</span>
<input readonly="" type="number" name="attr_spellattack" title="@{spellattack}" value="0"/></span>
<!-- end npc spell attack section--><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select class="simple" name="attr_spellattack_rank" title="@{spellattack_rank}">
<option value="2" data-i18n="trained" selected="">TRAINED</option>
<option value="4" data-i18n="expert">EXPERT</option>
<option value="6" data-i18n="master">MASTER</option>
<option value="8" data-i18n="legendary">LEGENDARY</option>
</select></span><span class="pc-spellcaster-field bordertop-row-item">+</span><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" name="attr_spellattack_ability" title="@{spellattack_ability}">
<option value="0">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}" selected="">CHA</option>
</select></span>
<!-- end pc spell attack section--><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spellattack_misc" placeholder="0" spellcheck="false" title="@{spellattack_misc}" type="text" value="0"/></span></span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span>
<label class="switch" title="@{damage_checkbox}">
<input name="attr_damage_roll" type="hidden" value="{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} @{roll_critical_damage} {{roll04_name=^{damage_additional}}} {{roll04=@{damage_additional}}} {{roll04_type=damage}}"/>
<input name="attr_damage_checkbox" title="@{damage_checkbox}" type="checkbox" value="@{damage_roll}"/><span class="slider"></span>
</label></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage">damage</span>
<input class="5em" name="attr_damage_dice" placeholder="1d6" spellcheck="false" title="@{damage_dice}" type="text"/></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" name="attr_damage_ability" title="@{damage_ability}">
<option value="0" selected="">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}">CHA</option>
</select></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_damage_misc" placeholder="0" spellcheck="false" title="@{damage_misc}" type="text" value="0"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">TYPE</span>
<input name="attr_damage_type" placeholder="acid" spellcheck="false" title="@{damage_type}" type="text"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage_additional">additional damage</span>
<input name="attr_damage_additional" placeholder="" spellcheck="false" title="@{damage_additional}" type="text"/></span></span></span><span class="bordertop"><span class="sublabel darkred" data-i18n="saving_throw">Saving Throw</span><span class="bordertop-row">
<input name="attr_npc_save_roll_basic" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_npc_save_roll" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="bordertop-row-item">
<input name="attr_save_roll_basic" type="hidden" value="{{savedc=[[10 + @{spelldc_rank}[DC Proficiency] + @{level}[Level] + @{spelldc_ability}[ABI] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_save_roll" type="hidden" value="{{savedc=[[10 + @{spelldc_rank}[DC Proficiency] + @{level}[Level] + @{spelldc_ability}[ABI] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="sublabel darkred" data-i18n="save">save</span><span class="pc-spellcaster-field">
<select class="simple" name="attr_saving_throw_select" title="@{saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{save_roll}">normal</option>
</select></span><span class="npc-spellcaster-field">
<select class="simple" name="attr_npc_saving_throw_select" title="@{npc_saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{npc_save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{npc_save_roll}">normal</option>
</select></span></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">type</span>
<select class="simple" title="@{save_type}" name="attr_save_type">
<option value="empty-string" selected="selected">-</option>
<option value="fortitude" data-i18n="fortitude">fortitude</option>
<option value="reflex" data-i18n="reflex">reflex</option>
<option value="will" data-i18n="will">will</option>
</select></span><span class="bordertop-row-item spacer"></span><span class="bordertop-row-item">DC =</span><span class="npc-spellcaster-field bordertop-row-item">(</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="spell_dc">spell_dc</span>
<input type="hidden" name="attr_spell_dc" value="0"/><span class="simple" name="attr_spell_dc"></span></span><span class="npc-spellcaster-field bordertop-row-item">or</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="dc">dc</span>
<input type="number" name="attr_spelldc" title="@{spelldc}" value="0"/></span><span class="npc-spellcaster-field bordertop-row-item">)</span>
<!-- end npc spell dc section--><span class="pc-spellcaster-field bordertop-row-item">10 +</span><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select class="simple" name="attr_spelldc_rank" title="@{spelldc_rank}">
<option value="2" data-i18n="trained" selected="">TRAINED</option>
<option value="4" data-i18n="expert">EXPERT</option>
<option value="6" data-i18n="master">MASTER</option>
<option value="8" data-i18n="legendary">LEGENDARY</option>
</select></span><span class="pc-spellcaster-field bordertop-row-item">+</span><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" title="@{spelldc_ability}" name="attr_spelldc_ability">
<option value="0" selected="">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}" selected="">CHA</option>
</select></span>
<!-- end pc spell dc section--><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spelldc_misc" placeholder="0" spellcheck="false" title="@{spelldc_misc}" type="text" value="0"/></span></span></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="critical_success" title="critical_success"><span class="sublabel darkred" data-i18n="critical_success">critical success</span>
<textarea name="attr_save_critical_success" placeholder="Critical Success" spellcheck="false" title="@{save_critical_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="success" title="success"><span class="sublabel darkred" data-i18n="success">success</span>
<textarea name="attr_save_success" placeholder="Success" spellcheck="false" title="@{save_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="failure" title="failure"><span class="sublabel darkred" data-i18n="failure">Failure</span>
<textarea name="attr_save_failure" placeholder="Failure" spellcheck="false" title="@{save_failure}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="critical_failure" title="critical_failure"><span class="sublabel darkred" data-i18n="critical_failure">critical failure</span>
<textarea name="attr_save_critical_failure" placeholder="Critical Failure" spellcheck="false" title="@{save_critical_failure}"></textarea>
</label></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="description" title="description"><span class="sublabel darkred" data-i18n="description">description</span>
<textarea name="attr_description" data-i18n-placeholder="description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label></span><span class="bordertop textarea" data-i18n-title="heightened_effects" title="heightened effects">
<label class="sublabel textarea" data-i18n-title="heightened_effects" title="heightened_effects"><span class="sublabel darkred" data-i18n="heightened_effects">heightened effects</span>
<textarea name="attr_heightened" data-i18n-placeholder="heightened_effects" placeholder="heightened_effects" spellcheck="false" title="@{heightened}"></textarea>
</label></span>
</div>
</div>
</fieldset>
</div>
<div class="background-color focus compendium-drop-target">
<h1 class="label" data-i18n="focus_spells">FOCUS SPELLS</h1><span class="sort">
<select name="attr_sort_spellfocus" title="@{sort_spellfocus}">
<option data-i18n="sort_by:" selected="selected" value="">Sort by:</option>
<option data-i18n="name" value="name">Name</option>
<option data-i18n="name_descending" value="name_desc">Name Desc</option>
<option data-i18n="level" value="level">Level</option>
<option data-i18n="level_descending" value="level_desc">Level Desc</option>
</select></span>
<div class="focus-points-grid">
<h2 data-i18n="focus_points">FOCUS POINTS</h2>
<label class="focus-pts-current" title="current focus points"><span class="sublabel darkred" data-i18n="current">current</span>
<input type="number" name="attr_focus_points" value="0" title="@{focus_points}"/>
</label>
<label class="focus-pts-max" title="maximum focus points"><span class="sublabel darkred" data-i18n="maximum">maximum</span>
<input type="number" name="attr_focus_points_max" value="0" title="@{focus_points_max}"/>
</label>
</div>
<input accept="Name" name="attr_spellfocus_spelldrop_name" type="hidden"/>
<input accept="uniqueName" name="attr_spellfocus_spelldrop_uniq" type="hidden"/>
<input accept="data" name="attr_spellfocus_spelldrop_data" type="hidden"/>
<div class="spell-panel-header"><span class="sublabel darkred" data-i18n="name">NAME</span><span class="sublabel darkred spellfocus-actions" data-i18n="actions">ACTIONS</span><span class="sublabel darkred spellfocus-level" data-i18n="level">LEVEL</span><span class="details-toggle-column"></span>
</div>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<fieldset class="repeating_spellfocus">
<div class="spell-panel-row">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings,"/>
<button class="sheet-pictos sheet-settings-button" name="act_settings" type="action">y</button>
<input name="attr_roll_critical_damage" type="hidden" value="@{damage_critical_roll}"/>
<input name="attr_damage_critical_roll" type="hidden" value=" {{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_type}}}"/>
<input name="attr_roll_critical_damage_button" type="hidden" value="{{roll03misc=[^{roll} ^{critical_damage}](~repeating_spellinnate_CRITICAL_DAMAGE) }}"/>
<button name="roll_CRITICAL_DAMAGE" style="display: none;" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{focus_spell} ^{level} @{current_level}}} @{damage_critical_roll}"></button>
<button class="pc-spellcaster-field" type="roll" title="%{spellroll}" name="roll_spellroll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{focus_spell} ^{level} @{current_level}}} {{desc=@{description}}}{{info01_name=^{domain}}} {{info01=@{domain}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{saving_throw_select} @{attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button>
<button class="npc-spellcaster-field" type="roll" title="%{npcspellroll}" name="roll_npcspellroll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{focus_spell} ^{level} @{current_level}}} {{desc=@{description}}}{{info01_name=^{domain}}} {{info01=@{domain}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{npc_saving_throw_select} @{npc_attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button><span class="spellfocus-actions">
<select class="simple" name="attr_cast_actions" title="@{cast_actions}">
<option data-i18n="1-action" value="1-action">1-action</option>
<option data-i18n="2-action" value="2-action">2-action</option>
<option data-i18n="3-action" value="3-action">3-action</option>
<option data-i18n="1-to-3-actions" value="1-to-3-actions">1-to-3-actions</option>
<option data-i18n="reaction" value="reaction">reaction</option>
<option data-i18n="free_action" value="free_action">free_action</option>
</select></span><span class="spellfocus-level">
<input name="attr_current_level" placeholder="" spellcheck="false" title="@{current_level}" type="number"/></span>
<button data-i18n-title="show_or_hide_weapon_notes" name="act_collapse" title="show or hide weapon notes" type="action">4</button>
<div class="collapse">
<div class="spell-details-section">
<div class="spell-details-row"><span class="spell-trait" name="attr_school"></span>
<input class="spell-detail-toggle-control" name="attr_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_npc_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_traits" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" name="attr_traits"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="domain">domain</span><span class="spell-detail" name="attr_domain"></span><span class="spell-detail-title" data-i18n="school">School</span><span class="spell-detail" name="attr_school"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="frequency">frequency</span><span class="spell-detail" name="attr_frequency"></span>
<input class="spell-detail-toggle-control" name="attr_duration" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="duration">duration</span><span class="spell-detail" name="attr_duration"></span></span>
</div>
<div class="spell-details-row">
<input class="spell-detail-toggle-control" name="attr_cast" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="cast">cast</span><span class="spell-detail" name="attr_cast"></span></span>
<input class="spell-detail-toggle-control" name="attr_cast_detail_information" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" name="attr_cast_detail_label"></span><span class="spell-detail" name="attr_cast_detail_information"></span></span>
</div>
<input class="spell-detail-toggle-control" name="attr_range" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="range">range</span><span class="spell-detail" name="attr_range"></span></div>
<input class="spell-detail-toggle-control" name="attr_area" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="area">area</span><span class="spell-detail" name="attr_area"></span></div>
<input class="spell-detail-toggle-control" name="attr_target" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="target">target</span><span class="spell-detail" name="attr_target"></span></div>
</div>
<div class="spell-details-section">
<div class="spell-details-row"><span name="attr_description"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_success">critical success</span><span class="spell-detail" name="attr_save_critical_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="success">success</span><span class="spell-detail" name="attr_save_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="failure">failure</span><span class="spell-detail" name="attr_save_failure"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_failure">critical failure</span><span class="spell-detail" name="attr_save_critical_failure"></span></div>
</div>
<div class="spell-details-section">
<input class="spell-detail-toggle-control" name="attr_heightened" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="heightened_effects">heightened effects</span><span class="spell-detail" name="attr_heightened"></span></div>
</div>
</div>
<div class="settings">
<label class="sublabel"><span class="sublabel darkred" data-i18n="name">NAME</span>
<input type="text" title="@{name}" name="attr_name" placeholder="Acid Arrow" spellcheck="false"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="base_level">BASE LEVEL</span>
<input type="number" name="attr_spelllevel" value="1"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="traits">Traits</span>
<input name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="domain">domain</span>
<input type="text" title="@{domain}" name="attr_domain" placeholder="freedom" spellcheck="false"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="school">SCHOOL</span>
<select class="simple" name="attr_school">
<option data-i18n="abjuration" value="abjuration" selected="">ABJURATION</option>
<option data-i18n="conjuration" value="conjuration">CONJURATION</option>
<option data-i18n="divination" value="divination">DIVINATION</option>
<option data-i18n="enchantment" value="enchantment">ENCHANTMENT</option>
<option data-i18n="evocation" value="evocation">EVOCATION</option>
<option data-i18n="illusion" value="illusion">ILLUSION</option>
<option data-i18n="necromancy" value="necromancy">NECROMANCY</option>
<option data-i18n="transmutation" value="transmutation">TRANSMUTATION</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="cast">Cast</span>
<input name="attr_cast" placeholder="somatic, verbal" spellcheck="false" title="@{cast}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred">
<select class="simple label-select" name="attr_cast_detail_label">
<option data-i18n="requirement" value="requirement" selected="">requirement</option>
<option data-i18n="trigger" value="trigger">trigger</option>
<option data-i18n="cost" value="cost">cost</option>
</select></span>
<input name="attr_cast_detail_information" placeholder="" spellcheck="false" title="@{cast_detail_information}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="range">RANGE</span>
<input name="attr_range" placeholder="120 feet" spellcheck="false" title="@{range}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="target">TARGET</span>
<input name="attr_target" placeholder="1 creature or object" spellcheck="false" title="@{target}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="area">AREA</span>
<input name="attr_area" placeholder="120 feet" spellcheck="false" title="@{area}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="duration">DURATION</span>
<input name="attr_duration" value="" placeholder="5 minutes" spellcheck="false" title="@{duration}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="frequency">frequency</span>
<select class="simple" name="attr_frequency" title="@{frequency}">
<option data-i18n="constant" value="constant" selected="selected">CONSTANT</option>
<option data-i18n="at-will" value="at-will">AT WILL</option>
<option data-i18n="x/day" value="daily-limit">X/DAY</option>
</select>
</label><span class="bordertop"><span class="sublabel darkred" data-i18n="attack">attack</span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span><span class="pc-spellcaster-field">
<label class="switch" title="@{attack_checkbox}">
<input name="attr_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spellattack_ability})[ABI] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_attack_checkbox" title="@{attack_checkbox}" type="checkbox" value="@{attack_roll}"/><span class="slider"></span>
</label></span><span class="npc-spellcaster-field">
<label class="switch" title="@{npc_attack_checkbox}">
<input name="attr_npc_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spell_attack})[ATK] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_npc_attack_checkbox" title="@{npc_attack_checkbox}" type="checkbox" value="@{npc_attack_roll}"/><span class="slider"></span>
</label></span></span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="attack">attack</span>
<input readonly="" type="number" name="attr_spellattack" title="@{spellattack}" value="0"/></span>
<!-- end npc spell attack section--><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" name="attr_spellattack_ability" title="@{spellattack_ability}">
<option value="0" selected="selected">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}">CHA</option>
</select></span>
<!-- end pc spell attack section--><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spellattack_misc" placeholder="0" spellcheck="false" title="@{spellattack_misc}" type="text" value="0"/></span></span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span>
<label class="switch" title="@{damage_checkbox}">
<input name="attr_damage_roll" type="hidden" value="{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} @{roll_critical_damage} {{roll04_name=^{damage_additional}}} {{roll04=@{damage_additional}}} {{roll04_type=damage}}"/>
<input name="attr_damage_checkbox" title="@{damage_checkbox}" type="checkbox" value="@{damage_roll}"/><span class="slider"></span>
</label></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage">damage</span>
<input class="5em" name="attr_damage_dice" placeholder="1d6" spellcheck="false" title="@{damage_dice}" type="text"/></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" name="attr_damage_ability" title="@{damage_ability}">
<option value="0" selected="">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}">CHA</option>
</select></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_damage_misc" placeholder="0" spellcheck="false" title="@{damage_misc}" type="text" value="0"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">TYPE</span>
<input name="attr_damage_type" placeholder="acid" spellcheck="false" title="@{damage_type}" type="text"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage_additional">additional damage</span>
<input name="attr_damage_additional" placeholder="" spellcheck="false" title="@{damage_additional}" type="text"/></span></span></span><span class="bordertop"><span class="sublabel darkred" data-i18n="saving_throw">Saving Throw</span><span class="bordertop-row">
<input name="attr_npc_save_roll_basic" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_npc_save_roll" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="bordertop-row-item">
<input name="attr_save_roll_basic" type="hidden" value="{{savedc=[[10 + @{spelldc_rank}[DC Proficiency] + @{level}[Level] + @{spelldc_ability}[ABI] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_save_roll" type="hidden" value="{{savedc=[[10 + @{spelldc_rank}[DC Proficiency] + @{level}[Level] + @{spelldc_ability}[ABI] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="sublabel darkred" data-i18n="save">save</span><span class="pc-spellcaster-field">
<select class="simple" name="attr_saving_throw_select" title="@{saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{save_roll}">normal</option>
</select></span><span class="npc-spellcaster-field">
<select class="simple" name="attr_npc_saving_throw_select" title="@{npc_saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{npc_save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{npc_save_roll}">normal</option>
</select></span></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">type</span>
<select class="simple" title="@{save_type}" name="attr_save_type">
<option value="empty-string" selected="selected">-</option>
<option value="fortitude" data-i18n="fortitude">fortitude</option>
<option value="reflex" data-i18n="reflex">reflex</option>
<option value="will" data-i18n="will">will</option>
</select></span><span class="bordertop-row-item spacer"></span><span class="bordertop-row-item">DC =</span><span class="npc-spellcaster-field bordertop-row-item">(</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="spell_dc">spell_dc</span>
<input type="hidden" name="attr_spell_dc" value="0"/><span class="simple" name="attr_spell_dc"></span></span><span class="npc-spellcaster-field bordertop-row-item">or</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="dc">dc</span>
<input type="number" name="attr_spelldc" title="@{spelldc}" value="0"/></span><span class="npc-spellcaster-field bordertop-row-item">)</span>
<!-- end npc spell dc section--><span class="pc-spellcaster-field bordertop-row-item">10 +</span><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="rank">rank</span>
<select class="simple" name="attr_spelldc_rank" title="@{spelldc_rank}">
<option value="2" data-i18n="trained" selected="">TRAINED</option>
<option value="4" data-i18n="expert">EXPERT</option>
<option value="6" data-i18n="master">MASTER</option>
<option value="8" data-i18n="legendary">LEGENDARY</option>
</select></span><span class="pc-spellcaster-field bordertop-row-item">+</span><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" title="@{spelldc_ability}" name="attr_spelldc_ability">
<option value="0" selected="">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}" selected="">CHA</option>
</select></span>
<!-- end pc spell dc section--><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spelldc_misc" placeholder="0" spellcheck="false" title="@{spelldc_misc}" type="text" value="0"/></span></span></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="critical_success" title="critical_success"><span class="sublabel darkred" data-i18n="critical_success">critical success</span>
<textarea name="attr_save_critical_success" placeholder="Critical Success" spellcheck="false" title="@{save_critical_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="success" title="success"><span class="sublabel darkred" data-i18n="success">success</span>
<textarea name="attr_save_success" placeholder="Success" spellcheck="false" title="@{save_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="failure" title="failure"><span class="sublabel darkred" data-i18n="failure">Failure</span>
<textarea name="attr_save_failure" placeholder="Failure" spellcheck="false" title="@{save_failure}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="critical_failure" title="critical_failure"><span class="sublabel darkred" data-i18n="critical_failure">critical failure</span>
<textarea name="attr_save_critical_failure" placeholder="Critical Failure" spellcheck="false" title="@{save_critical_failure}"></textarea>
</label></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="description" title="description"><span class="sublabel darkred" data-i18n="description">description</span>
<textarea name="attr_description" data-i18n-placeholder="description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label></span><span class="bordertop textarea" data-i18n-title="heightened_effects" title="heightened effects">
<label class="sublabel textarea" data-i18n-title="heightened_effects" title="heightened_effects"><span class="sublabel darkred" data-i18n="heightened_effects">heightened effects</span>
<textarea name="attr_heightened" data-i18n-placeholder="heightened_effects" placeholder="heightened_effects" spellcheck="false" title="@{heightened}"></textarea>
</label></span>
</div>
</div>
</fieldset>
</div>
<div class="background-color cantrips compendium-drop-target">
<h1 class="label" data-i18n="cantrips">CANTRIPS</h1><span class="sort">
<select name="attr_sort_cantrip" title="@{sort_cantrip}">
<option data-i18n="sort_by:" selected="selected" value="">Sort by:</option>
<option data-i18n="name" value="name">Name</option>
<option data-i18n="name_descending" value="name_desc">Name Desc</option>
<option data-i18n="level" value="level">Level</option>
<option data-i18n="level_descending" value="level_desc">Level Desc</option>
</select></span>
<input accept="Name" name="attr_cantrip_spelldrop_name" type="hidden"/>
<input accept="uniqueName" name="attr_cantrip_spelldrop_uniq" type="hidden"/>
<input accept="data" name="attr_cantrip_spelldrop_data" type="hidden"/>
<div class="spell-panel-header"><span class="sublabel darkred" data-i18n="name">NAME</span><span class="sublabel darkred" data-i18n="actions">ACTIONS</span><span class="sublabel darkred" data-i18n="level">LEVEL</span><span class="sublabel darkred" data-i18n="daily-uses">Daily Uses</span><span class="details-toggle-column"></span>
</div>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<fieldset class="repeating_cantrip">
<div class="spell-panel-row">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings,"/>
<button class="sheet-pictos sheet-settings-button" name="act_settings" type="action">y</button>
<input name="attr_roll_critical_damage" type="hidden" value="@{damage_critical_roll}"/>
<input name="attr_damage_critical_roll" type="hidden" value=" {{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_type}}}"/>
<input name="attr_roll_critical_damage_button" type="hidden" value="{{roll03misc=[^{roll} ^{critical_damage}](~repeating_spellinnate_CRITICAL_DAMAGE) }}"/>
<button name="roll_CRITICAL_DAMAGE" style="display: none;" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{cantrip}}} @{damage_critical_roll}"></button>
<button class="pc-spellcaster-field" name="roll_spellroll" title="%{spellroll}" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{cantrip}}} {{desc=@{description}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{saving_throw_select} @{attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button>
<button class="npc-spellcaster-field" name="roll_npcspellroll" title="%{npcspellroll}" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{cantrip}}} {{desc=@{description}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{npc_saving_throw_select} @{npc_attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button><span>
<select class="simple" name="attr_cast_actions" title="@{cast_actions}">
<option data-i18n="1-action" value="1-action">1-action</option>
<option data-i18n="2-action" value="2-action">2-action</option>
<option data-i18n="3-action" value="3-action">3-action</option>
<option data-i18n="1-to-3-actions" value="1-to-3-actions">1-to-3-actions</option>
<option data-i18n="reaction" value="reaction">reaction</option>
<option data-i18n="free_action" value="free_action">free_action</option>
</select></span><span>
<input name="attr_current_level" placeholder="" spellcheck="false" title="@{current_level}" type="number"/></span><span>
<input name="attr_uses" title="@{uses}" type="number" value="0"/>/
<input name="attr_uses_max" title="@{uses_max}" type="number" value="0"/></span>
<button data-i18n-title="show_or_hide_weapon_notes" name="act_collapse" title="show or hide weapon notes" type="action">4</button>
<div class="collapse">
<div class="spell-details-section">
<div class="spell-details-row"><span class="spell-trait" name="attr_school"></span>
<input class="spell-detail-toggle-control" name="attr_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_npc_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_traits" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" name="attr_traits"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="magic_tradition">Magic Tradition</span><span class="spell-detail" name="attr_magic_tradition"></span><span class="spell-detail-title" data-i18n="school">School</span><span class="spell-detail" name="attr_school"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="frequency">frequency</span><span class="spell-detail" name="attr_frequency"></span>
<input class="spell-detail-toggle-control" name="attr_duration" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="duration">duration</span><span class="spell-detail" name="attr_duration"></span></span>
</div>
<div class="spell-details-row">
<input class="spell-detail-toggle-control" name="attr_cast" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="cast">cast</span><span class="spell-detail" name="attr_cast"></span></span>
<input class="spell-detail-toggle-control" name="attr_cast_detail_information" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" name="attr_cast_detail_label"></span><span class="spell-detail" name="attr_cast_detail_information"></span></span>
</div>
<input class="spell-detail-toggle-control" name="attr_range" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="range">range</span><span class="spell-detail" name="attr_range"></span></div>
<input class="spell-detail-toggle-control" name="attr_area" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="area">area</span><span class="spell-detail" name="attr_area"></span></div>
<input class="spell-detail-toggle-control" name="attr_target" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="target">target</span><span class="spell-detail" name="attr_target"></span></div>
</div>
<div class="spell-details-section">
<div class="spell-details-row"><span name="attr_description"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_success">critical success</span><span class="spell-detail" name="attr_save_critical_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="success">success</span><span class="spell-detail" name="attr_save_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="failure">failure</span><span class="spell-detail" name="attr_save_failure"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_failure">critical failure</span><span class="spell-detail" name="attr_save_critical_failure"></span></div>
</div>
<div class="spell-details-section">
<input class="spell-detail-toggle-control" name="attr_heightened" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="heightened_effects">heightened effects</span><span class="spell-detail" name="attr_heightened"></span></div>
</div>
</div>
<div class="settings">
<label class="sublabel"><span class="sublabel darkred" data-i18n="name">NAME</span>
<input type="text" title="@{name}" name="attr_name" placeholder="Acid Arrow" spellcheck="false"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="base_level">BASE LEVEL</span>
<input type="number" name="attr_spelllevel" value="1"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="traits">Traits</span>
<input name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="magic_tradition">magic tradition</span>
<select class="simple" title="@{magic_tradition}" name="attr_magic_tradition">
<option data-i18n="spell tradition" value="empty-string" selected="">SPELL TRADITION</option>
<option data-i18n="arcane spell" value="arcane">ARCANE SPELL</option>
<option data-i18n="divine spell" value="divine">DIVINE SPELL</option>
<option data-i18n="primal spell" value="primal">PRIMAL SPELL</option>
<option data-i18n="occult spell" value="occult">OCCULT SPELL</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="school">SCHOOL</span>
<select class="simple" name="attr_school">
<option data-i18n="abjuration" value="abjuration" selected="">ABJURATION</option>
<option data-i18n="conjuration" value="conjuration">CONJURATION</option>
<option data-i18n="divination" value="divination">DIVINATION</option>
<option data-i18n="enchantment" value="enchantment">ENCHANTMENT</option>
<option data-i18n="evocation" value="evocation">EVOCATION</option>
<option data-i18n="illusion" value="illusion">ILLUSION</option>
<option data-i18n="necromancy" value="necromancy">NECROMANCY</option>
<option data-i18n="transmutation" value="transmutation">TRANSMUTATION</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="cast">Cast</span>
<input name="attr_cast" placeholder="somatic, verbal" spellcheck="false" title="@{cast}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred">
<select class="simple label-select" name="attr_cast_detail_label">
<option data-i18n="requirement" value="requirement" selected="">requirement</option>
<option data-i18n="trigger" value="trigger">trigger</option>
<option data-i18n="cost" value="cost">cost</option>
</select></span>
<input name="attr_cast_detail_information" placeholder="" spellcheck="false" title="@{cast_detail_information}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="range">RANGE</span>
<input name="attr_range" placeholder="120 feet" spellcheck="false" title="@{range}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="target">TARGET</span>
<input name="attr_target" placeholder="1 creature or object" spellcheck="false" title="@{target}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="area">AREA</span>
<input name="attr_area" placeholder="120 feet" spellcheck="false" title="@{area}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="duration">DURATION</span>
<input name="attr_duration" value="" placeholder="5 minutes" spellcheck="false" title="@{duration}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="frequency">frequency</span>
<select class="simple" name="attr_frequency" title="@{frequency}">
<option data-i18n="constant" value="constant" selected="selected">CONSTANT</option>
<option data-i18n="at-will" value="at-will">AT WILL</option>
<option data-i18n="x/day" value="daily-limit">X/DAY</option>
</select>
</label><span class="bordertop"><span class="sublabel darkred" data-i18n="attack">attack</span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span><span class="pc-spellcaster-field">
<label class="switch" title="@{attack_checkbox}">
<input name="attr_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spellattack})[Spell attack] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_attack_checkbox" title="@{attack_checkbox}" type="checkbox" value="@{attack_roll}"/><span class="slider"></span>
</label></span><span class="npc-spellcaster-field">
<label class="switch" title="@{npc_attack_checkbox}">
<input name="attr_npc_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spellattack})[Spell attack] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_npc_attack_checkbox" title="@{npc_attack_checkbox}" type="checkbox" value="@{npc_attack_roll}"/><span class="slider"></span>
</label></span></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="attack">attack</span>
<input readonly="" type="number" name="attr_spellattack" title="@{spellattack}" value="0"/></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spellattack_misc" placeholder="0" spellcheck="false" title="@{spellattack_misc}" type="text" value="0"/></span></span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span>
<label class="switch" title="@{damage_checkbox}">
<input name="attr_damage_roll" type="hidden" value="{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} @{roll_critical_damage} {{roll04_name=^{damage_additional}}} {{roll04=@{damage_additional}}} {{roll04_type=damage}}"/>
<input name="attr_damage_checkbox" title="@{damage_checkbox}" type="checkbox" value="@{damage_roll}"/><span class="slider"></span>
</label></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage">damage</span>
<input class="5em" name="attr_damage_dice" placeholder="1d6" spellcheck="false" title="@{damage_dice}" type="text"/></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" name="attr_damage_ability" title="@{damage_ability}">
<option value="0" selected="">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}">CHA</option>
</select></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_damage_misc" placeholder="0" spellcheck="false" title="@{damage_misc}" type="text" value="0"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">TYPE</span>
<input name="attr_damage_type" placeholder="acid" spellcheck="false" title="@{damage_type}" type="text"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage_additional">additional damage</span>
<input name="attr_damage_additional" placeholder="" spellcheck="false" title="@{damage_additional}" type="text"/></span></span></span><span class="bordertop"><span class="sublabel darkred" data-i18n="saving_throw">Saving Throw</span><span class="bordertop-row">
<input name="attr_npc_save_roll_basic" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_npc_save_roll" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="bordertop-row-item">
<input name="attr_save_roll_basic" type="hidden" value="{{savedc=[[@{spelldc}[SPELL DC] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_save_roll" type="hidden" value="{{savedc=[[@{spelldc}[SPELL DC] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="sublabel darkred" data-i18n="save">save</span><span class="pc-spellcaster-field">
<select class="simple" name="attr_saving_throw_select" title="@{saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{save_roll}">normal</option>
</select></span><span class="npc-spellcaster-field">
<select class="simple" name="attr_npc_saving_throw_select" title="@{npc_saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{npc_save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{npc_save_roll}">normal</option>
</select></span></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">type</span>
<select class="simple" title="@{save_type}" name="attr_save_type">
<option value="empty-string" selected="selected">-</option>
<option value="fortitude" data-i18n="fortitude">fortitude</option>
<option value="reflex" data-i18n="reflex">reflex</option>
<option value="will" data-i18n="will">will</option>
</select></span><span class="bordertop-row-item spacer"></span><span class="bordertop-row-item">DC =</span><span class="npc-spellcaster-field bordertop-row-item">(</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="spell_dc">spell_dc</span>
<input type="hidden" name="attr_spell_dc" value="0"/><span class="simple" name="attr_spell_dc"></span></span><span class="npc-spellcaster-field bordertop-row-item">or</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="dc">dc</span>
<input type="number" name="attr_spelldc" title="@{spelldc}" value="0"/></span><span class="npc-spellcaster-field bordertop-row-item">)</span>
<!-- end npc spell dc section--><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="spell_dc">spell_dc</span>
<input readonly="" type="number" name="attr_spelldc" title="@{spelldc}" value="0"/></span>
<!-- end pc spell dc section--><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spelldc_misc" placeholder="0" spellcheck="false" title="@{spelldc_misc}" type="text" value="0"/></span></span></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="critical_success" title="critical_success"><span class="sublabel darkred" data-i18n="critical_success">critical success</span>
<textarea name="attr_save_critical_success" placeholder="Critical Success" spellcheck="false" title="@{save_critical_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="success" title="success"><span class="sublabel darkred" data-i18n="success">success</span>
<textarea name="attr_save_success" placeholder="Success" spellcheck="false" title="@{save_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="failure" title="failure"><span class="sublabel darkred" data-i18n="failure">Failure</span>
<textarea name="attr_save_failure" placeholder="Failure" spellcheck="false" title="@{save_failure}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="critical_failure" title="critical_failure"><span class="sublabel darkred" data-i18n="critical_failure">critical failure</span>
<textarea name="attr_save_critical_failure" placeholder="Critical Failure" spellcheck="false" title="@{save_critical_failure}"></textarea>
</label></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="description" title="description"><span class="sublabel darkred" data-i18n="description">description</span>
<textarea name="attr_description" data-i18n-placeholder="description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label></span><span class="bordertop textarea" data-i18n-title="heightened_effects" title="heightened effects">
<label class="sublabel textarea" data-i18n-title="heightened_effects" title="heightened_effects"><span class="sublabel darkred" data-i18n="heightened_effects">heightened effects</span>
<textarea name="attr_heightened" data-i18n-placeholder="heightened_effects" placeholder="heightened_effects" spellcheck="false" title="@{heightened}"></textarea>
</label></span>
</div>
</div>
</fieldset>
</div>
<div class="background-color normalspells compendium-drop-target">
<h1 class="label">SPELLS</h1><span class="sort">
<select name="attr_sort_normalspells" title="@{sort_normalspells}">
<option data-i18n="sort_by:" selected="selected" value="">Sort by:</option>
<option data-i18n="name" value="name">Name</option>
<option data-i18n="name_descending" value="name_desc">Name Desc</option>
<option data-i18n="level" value="level">Level</option>
<option data-i18n="level_descending" value="level_desc">Level Desc</option>
</select></span>
<input accept="Name" name="attr_normalspells_spelldrop_name" type="hidden"/>
<input accept="uniqueName" name="attr_normalspells_spelldrop_uniq" type="hidden"/>
<input accept="data" name="attr_normalspells_spelldrop_data" type="hidden"/>
<div class="spell-panel-header"><span class="sublabel darkred" data-i18n="name">NAME</span><span class="sublabel darkred" data-i18n="actions">ACTIONS</span><span class="sublabel darkred" data-i18n="level">LEVEL</span><span class="sublabel darkred" data-i18n="daily-uses">Daily Uses</span><span class="details-toggle-column"></span>
</div>
<input class="toggles" name="attr_toggles" type="hidden" value=""/>
<fieldset class="repeating_normalspells">
<div class="spell-panel-row">
<input class="toggles" name="attr_toggles" type="hidden" value="display,settings,"/>
<button class="sheet-pictos sheet-settings-button" name="act_settings" type="action">y</button>
<input name="attr_roll_critical_damage" type="hidden" value="@{damage_critical_roll}"/>
<input name="attr_damage_critical_roll" type="hidden" value=" {{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_type}}}"/>
<input name="attr_roll_critical_damage_button" type="hidden" value="{{roll03misc=[^{roll} ^{critical_damage}](~repeating_spellinnate_CRITICAL_DAMAGE) }}"/>
<button name="roll_CRITICAL_DAMAGE" style="display: none;" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{spell} ^{level} @{current_level}}} @{damage_critical_roll}"></button>
<button class="pc-spellcaster-field" name="roll_spellroll" title="%{spellroll}" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{spell} ^{level} @{current_level}}} {{desc=@{description}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{saving_throw_select} @{attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button>
<button class="npc-spellcaster-field" name="roll_npcspellroll" title="%{npcspellroll}" type="roll" value="@{whispertype} &amp;{template:rolls} {{limit_height=@{roll_limit_height}}} {{charactername=@{character_name}}} {{header=@{name}}} {{subheader=^{@{school}} ^{@{magic_tradition}} ^{spell} ^{level} @{current_level}}} {{desc=@{description}}}{{info02_name=^{cast}}} {{info02=@{cast}}}{{info03_name=^{traits}}} {{info03=@{traits}}} {{info04_name=^{range}}} {{info04=@{range}}} {{info05_name=^{target}}} {{info05=@{target}}} {{info06_name=^{area}}} {{info06=@{area}}} {{info07_name=^{duration}}} {{info07=@{duration}}} @{npc_saving_throw_select} @{npc_attack_checkbox} @{damage_checkbox}"><span name="attr_name"></span></button><span>
<select class="simple" name="attr_cast_actions" title="@{cast_actions}">
<option data-i18n="1-action" value="1-action">1-action</option>
<option data-i18n="2-action" value="2-action">2-action</option>
<option data-i18n="3-action" value="3-action">3-action</option>
<option data-i18n="1-to-3-actions" value="1-to-3-actions">1-to-3-actions</option>
<option data-i18n="reaction" value="reaction">reaction</option>
<option data-i18n="free_action" value="free_action">free_action</option>
</select></span><span>
<input name="attr_current_level" placeholder="" spellcheck="false" title="@{current_level}" type="number"/></span><span>
<input name="attr_uses" title="@{uses}" type="number" value="0"/>/
<input name="attr_uses_max" title="@{uses_max}" type="number" value="0"/></span>
<button data-i18n-title="show_or_hide_weapon_notes" name="act_collapse" title="show or hide weapon notes" type="action">4</button>
<div class="collapse">
<div class="spell-details-section">
<div class="spell-details-row"><span class="spell-trait" name="attr_school"></span>
<input class="spell-detail-toggle-control" name="attr_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_npc_attack_checkbox" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" data-i18n="attack">attack</span>
<input class="spell-detail-toggle-control" name="attr_traits" type="hidden" value=""/><span class="spell-trait spell-detail-toggling-item" name="attr_traits"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="magic_tradition">Magic Tradition</span><span class="spell-detail" name="attr_magic_tradition"></span><span class="spell-detail-title" data-i18n="school">School</span><span class="spell-detail" name="attr_school"></span>
</div>
<div class="spell-details-row"><span class="spell-detail-title" data-i18n="frequency">frequency</span><span class="spell-detail" name="attr_frequency"></span>
<input class="spell-detail-toggle-control" name="attr_duration" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="duration">duration</span><span class="spell-detail" name="attr_duration"></span></span>
</div>
<div class="spell-details-row">
<input class="spell-detail-toggle-control" name="attr_cast" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="cast">cast</span><span class="spell-detail" name="attr_cast"></span></span>
<input class="spell-detail-toggle-control" name="attr_cast_detail_information" type="hidden" value=""/><span class="spell-detail-toggling-item"><span class="spell-detail-title" name="attr_cast_detail_label"></span><span class="spell-detail" name="attr_cast_detail_information"></span></span>
</div>
<input class="spell-detail-toggle-control" name="attr_range" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="range">range</span><span class="spell-detail" name="attr_range"></span></div>
<input class="spell-detail-toggle-control" name="attr_area" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="area">area</span><span class="spell-detail" name="attr_area"></span></div>
<input class="spell-detail-toggle-control" name="attr_target" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="target">target</span><span class="spell-detail" name="attr_target"></span></div>
</div>
<div class="spell-details-section">
<div class="spell-details-row"><span name="attr_description"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_success">critical success</span><span class="spell-detail" name="attr_save_critical_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_success" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="success">success</span><span class="spell-detail" name="attr_save_success"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="failure">failure</span><span class="spell-detail" name="attr_save_failure"></span></div>
<input class="spell-detail-toggle-control" name="attr_save_critical_failure" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="critical_failure">critical failure</span><span class="spell-detail" name="attr_save_critical_failure"></span></div>
</div>
<div class="spell-details-section">
<input class="spell-detail-toggle-control" name="attr_heightened" type="hidden" value=""/>
<div class="spell-details-row spell-detail-toggling-item"><span class="spell-detail-title" data-i18n="heightened_effects">heightened effects</span><span class="spell-detail" name="attr_heightened"></span></div>
</div>
</div>
<div class="settings">
<label class="sublabel"><span class="sublabel darkred" data-i18n="name">NAME</span>
<input type="text" title="@{name}" name="attr_name" placeholder="Acid Arrow" spellcheck="false"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="base_level">BASE LEVEL</span>
<input type="number" name="attr_spelllevel" value="1"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="traits">Traits</span>
<input name="attr_traits" placeholder="traits" spellcheck="false" title="@{traits}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="magic_tradition">magic tradition</span>
<select class="simple" title="@{magic_tradition}" name="attr_magic_tradition">
<option data-i18n="spell tradition" value="empty-string" selected="">SPELL TRADITION</option>
<option data-i18n="arcane spell" value="arcane">ARCANE SPELL</option>
<option data-i18n="divine spell" value="divine">DIVINE SPELL</option>
<option data-i18n="primal spell" value="primal">PRIMAL SPELL</option>
<option data-i18n="occult spell" value="occult">OCCULT SPELL</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="school">SCHOOL</span>
<select class="simple" name="attr_school">
<option data-i18n="abjuration" value="abjuration" selected="">ABJURATION</option>
<option data-i18n="conjuration" value="conjuration">CONJURATION</option>
<option data-i18n="divination" value="divination">DIVINATION</option>
<option data-i18n="enchantment" value="enchantment">ENCHANTMENT</option>
<option data-i18n="evocation" value="evocation">EVOCATION</option>
<option data-i18n="illusion" value="illusion">ILLUSION</option>
<option data-i18n="necromancy" value="necromancy">NECROMANCY</option>
<option data-i18n="transmutation" value="transmutation">TRANSMUTATION</option>
</select>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="cast">Cast</span>
<input name="attr_cast" placeholder="somatic, verbal" spellcheck="false" title="@{cast}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred">
<select class="simple label-select" name="attr_cast_detail_label">
<option data-i18n="requirement" value="requirement" selected="">requirement</option>
<option data-i18n="trigger" value="trigger">trigger</option>
<option data-i18n="cost" value="cost">cost</option>
</select></span>
<input name="attr_cast_detail_information" placeholder="" spellcheck="false" title="@{cast_detail_information}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="range">RANGE</span>
<input name="attr_range" placeholder="120 feet" spellcheck="false" title="@{range}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="target">TARGET</span>
<input name="attr_target" placeholder="1 creature or object" spellcheck="false" title="@{target}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="area">AREA</span>
<input name="attr_area" placeholder="120 feet" spellcheck="false" title="@{area}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="duration">DURATION</span>
<input name="attr_duration" value="" placeholder="5 minutes" spellcheck="false" title="@{duration}" type="text"/>
</label>
<label class="sublabel"><span class="sublabel darkred" data-i18n="frequency">frequency</span>
<select class="simple" name="attr_frequency" title="@{frequency}">
<option data-i18n="constant" value="constant" selected="selected">CONSTANT</option>
<option data-i18n="at-will" value="at-will">AT WILL</option>
<option data-i18n="x/day" value="daily-limit">X/DAY</option>
</select>
</label><span class="bordertop"><span class="sublabel darkred" data-i18n="attack">attack</span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span><span class="pc-spellcaster-field">
<label class="switch" title="@{attack_checkbox}">
<input name="attr_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spellattack})[Spell attack] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_attack_checkbox" title="@{attack_checkbox}" type="checkbox" value="@{attack_roll}"/><span class="slider"></span>
</label></span><span class="npc-spellcaster-field">
<label class="switch" title="@{npc_attack_checkbox}">
<input name="attr_npc_attack_roll" type="hidden" value="{{roll01=[[1d20cs20cf1 + (@{spellattack})[Spell attack] + (@{spellattack_misc})[MISC] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_name=^{attack}}} {{roll01_type=attack}} {{roll01_critical=1}}"/>
<input name="attr_npc_attack_checkbox" title="@{npc_attack_checkbox}" type="checkbox" value="@{npc_attack_roll}"/><span class="slider"></span>
</label></span></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="attack">attack</span>
<input readonly="" type="number" name="attr_spellattack" title="@{spellattack}" value="0"/></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spellattack_misc" placeholder="0" spellcheck="false" title="@{spellattack_misc}" type="text" value="0"/></span></span><span class="bordertop-row"><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="off_on">off/on</span>
<label class="switch" title="@{damage_checkbox}">
<input name="attr_damage_roll" type="hidden" value="{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability})[ABI] + (@{damage_misc})[MISC] + (@{query_roll_damage_bonus})[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} @{roll_critical_damage} {{roll04_name=^{damage_additional}}} {{roll04=@{damage_additional}}} {{roll04_type=damage}}"/>
<input name="attr_damage_checkbox" title="@{damage_checkbox}" type="checkbox" value="@{damage_roll}"/><span class="slider"></span>
</label></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage">damage</span>
<input class="5em" name="attr_damage_dice" placeholder="1d6" spellcheck="false" title="@{damage_dice}" type="text"/></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="ability">ability</span>
<select class="simple" name="attr_damage_ability" title="@{damage_ability}">
<option value="0" selected="">N/A</option>
<option value="@{strength_modifier}">STR</option>
<option value="@{dexterity_modifier}">DEX</option>
<option value="@{constitution_modifier}">CON</option>
<option value="@{intelligence_modifier}">INT</option>
<option value="@{wisdom_modifier}">WIS</option>
<option value="@{charisma_modifier}">CHA</option>
</select></span><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_damage_misc" placeholder="0" spellcheck="false" title="@{damage_misc}" type="text" value="0"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">TYPE</span>
<input name="attr_damage_type" placeholder="acid" spellcheck="false" title="@{damage_type}" type="text"/></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="damage_additional">additional damage</span>
<input name="attr_damage_additional" placeholder="" spellcheck="false" title="@{damage_additional}" type="text"/></span></span></span><span class="bordertop"><span class="sublabel darkred" data-i18n="saving_throw">Saving Throw</span><span class="bordertop-row">
<input name="attr_npc_save_roll_basic" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_npc_save_roll" type="hidden" value="{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="bordertop-row-item">
<input name="attr_save_roll_basic" type="hidden" value="{{savedc=[[@{spelldc}[SPELL DC] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savebasic=true}}"/>
<input name="attr_save_roll" type="hidden" value="{{savedc=[[@{spelldc}[SPELL DC] + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}"/><span class="sublabel darkred" data-i18n="save">save</span><span class="pc-spellcaster-field">
<select class="simple" name="attr_saving_throw_select" title="@{saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{save_roll}">normal</option>
</select></span><span class="npc-spellcaster-field">
<select class="simple" name="attr_npc_saving_throw_select" title="@{npc_saving_throw_select}">
<option data-i18n="none" value="">none</option>
<option data-i18n="basic" value="@{npc_save_roll_basic}">basic</option>
<option data-i18n="normal" value="@{npc_save_roll}">normal</option>
</select></span></span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="type">type</span>
<select class="simple" title="@{save_type}" name="attr_save_type">
<option value="empty-string" selected="selected">-</option>
<option value="fortitude" data-i18n="fortitude">fortitude</option>
<option value="reflex" data-i18n="reflex">reflex</option>
<option value="will" data-i18n="will">will</option>
</select></span><span class="bordertop-row-item spacer"></span><span class="bordertop-row-item">DC =</span><span class="npc-spellcaster-field bordertop-row-item">(</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="spell_dc">spell_dc</span>
<input type="hidden" name="attr_spell_dc" value="0"/><span class="simple" name="attr_spell_dc"></span></span><span class="npc-spellcaster-field bordertop-row-item">or</span><span class="npc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="dc">dc</span>
<input type="number" name="attr_spelldc" title="@{spelldc}" value="0"/></span><span class="npc-spellcaster-field bordertop-row-item">)</span>
<!-- end npc spell dc section--><span class="pc-spellcaster-field bordertop-row-item"><span class="sublabel darkred" data-i18n="spell_dc">spell_dc</span>
<input readonly="" type="number" name="attr_spelldc" title="@{spelldc}" value="0"/></span>
<!-- end pc spell dc section--><span class="bordertop-row-item">+</span><span class="bordertop-row-item"><span class="sublabel darkred" data-i18n="misc">misc</span>
<input class="5em" name="attr_spelldc_misc" placeholder="0" spellcheck="false" title="@{spelldc_misc}" type="text" value="0"/></span></span></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="critical_success" title="critical_success"><span class="sublabel darkred" data-i18n="critical_success">critical success</span>
<textarea name="attr_save_critical_success" placeholder="Critical Success" spellcheck="false" title="@{save_critical_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="success" title="success"><span class="sublabel darkred" data-i18n="success">success</span>
<textarea name="attr_save_success" placeholder="Success" spellcheck="false" title="@{save_success}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="failure" title="failure"><span class="sublabel darkred" data-i18n="failure">Failure</span>
<textarea name="attr_save_failure" placeholder="Failure" spellcheck="false" title="@{save_failure}"></textarea>
</label>
<label class="sublabel textarea" data-i18n-title="critical_failure" title="critical_failure"><span class="sublabel darkred" data-i18n="critical_failure">critical failure</span>
<textarea name="attr_save_critical_failure" placeholder="Critical Failure" spellcheck="false" title="@{save_critical_failure}"></textarea>
</label></span><span class="bordertop">
<label class="sublabel textarea" data-i18n-title="description" title="description"><span class="sublabel darkred" data-i18n="description">description</span>
<textarea name="attr_description" data-i18n-placeholder="description" placeholder="description" spellcheck="false" title="@{description}"></textarea>
</label></span><span class="bordertop textarea" data-i18n-title="heightened_effects" title="heightened effects">
<label class="sublabel textarea" data-i18n-title="heightened_effects" title="heightened_effects"><span class="sublabel darkred" data-i18n="heightened_effects">heightened effects</span>
<textarea name="attr_heightened" data-i18n-placeholder="heightened_effects" placeholder="heightened_effects" spellcheck="false" title="@{heightened}"></textarea>
</label></span>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="options">
<div class="options-wrapper">
<h1 data-i18n="options">options</h1>
<div class="options-panel">
<h2 data-i18n="customize_rolls">customize rolls</h2>
<label data-i18n-title="roll_bonus" title="bonus to roll">
<input name="attr_query_roll_bonus" title="@{query_roll_bonus}" type="checkbox" value="?{@{text_roll_bonus}|0}"/><span data-i18n="roll_bonus">bonus to roll</span>
</label>
<label data-i18n-title="roll_damage_bonus" title="bonus to damage">
<input name="attr_query_roll_damage_bonus" title="@{query_roll_damage_bonus}" type="checkbox" value="?{@{text_roll_damage_bonus}|0}"/><span data-i18n="roll_damage_bonus">bonus to damage</span>
</label>
<label data-i18n-title="#_damage_dice" title="# Damage Dice">
<input name="attr_query_roll_damage_dice" title="@{query_roll_damage_dice}" type="checkbox" value="?{@{text_#_damage_dice}|@{damage_dice}}"/><span data-i18n="#_damage_dice"># Damage Dice</span>
</label>
<label data-i18n-title="roll_option_critical_damage" title="roll critical damage options"><span data-i18n="roll_option_critical_damage">ROLL CRITICAL DAMAGE OPTIONS</span>
<select name="attr_roll_option_critical_damage" title="@{roll_option_critical_damage}">
<option data-i18n="roll_option_critical_damage_none" value="none">Don't roll critical damage</option>
<option data-i18n="roll_option_critical_damage_button" value="button">Show a chat button to roll critical damage</option>
<option data-i18n="roll_option_critical_damage_auto" selected="selected" value="auto">Auto roll critical damage</option>
</select>
</label>
<label data-i18n-title="roll_show_notes" title="Show Notes in Rolls">
<input name="attr_roll_show_notes" title="@{roll_show_notes}" type="checkbox" value="[[1]]"/><span data-i18n="roll_show_notes">Show Notes in Rolls</span>
</label>
<label data-i18n-title="Limit height of Notes and Description in roll template" title="Limit height of Notes and Description in roll template">
<input name="attr_roll_limit_height" title="@{roll_limit_height}" type="checkbox" value="limit-height"/><span data-i18n="Limit height of Notes and Description in roll template">Limit height of Notes and Description in roll template</span>
</label>
</div>
<div class="options-panel">
<h2 data-i18n="customize_sheet_layout">customize sheet layout</h2>
<h3 data-i18n="color_scheme">color scheme</h3>
<label data-i18n-title="color_scheme" title="color scheme select">
<select data-i18n-title="color_scheme" name="attr_color_scheme" title="@{color_scheme}" value="default">
<option data-i18n="default" value="default" selected="selected">default</option>
<option data-i18n="neutral" value="neutral">neutral</option>
</select>
</label>
<h3 data-i18n="change-sheet-type">change sheet type</h3>
<button data-i18n="npc" name="act_toggle_npc" type="action">npc</button>
</div>
</div>
</div>
</div>
<!-- FOOTER--><div class="footer">
<span data-i18n="disclaimer"><i>© 2019 Paizo Inc. Paizo, the Paizo golem logo, Pathfinder, and the Pathfinder logo are registered trademarks of Paizo Inc. Pathfinder Adventure Path, Pathfinder Roleplaying Game, Pathfinder World Guide, and the Pathfinder ‘P’ logo are trademarks of Paizo Inc. All Paizo titles and Paizo's character names and distinctive likenesses are property and copyright of Paizo, Inc. in the United States and other countries.</i></span><br />
<span>version </span><span name="attr_version"></span>
</div>
</div>
<!-- HIDDEN ATTRIBUTES-->
<!-- Misc -->
<input type="hidden" name="attr_version_character" value="0.0" /> <!-- Versioning: this is the current version of the character sheet - don't change it -->
<!-- Ability Scores -->
<input name="attr_strength" type="hidden" value="10" />
<input name="attr_dexterity" type="hidden" value="10" />
<input name="attr_constitution" type="hidden" value="10" />
<input name="attr_intelligence" type="hidden" value="10" />
<input name="attr_wisdom" type="hidden" value="10" />
<input name="attr_charisma" type="hidden"value="10" />
<input name="attr_strength_modifier" type="hidden" value="0" />
<input name="attr_strength_modifier_half" type="hidden" value="0" />
<input name="attr_dexterity_modifier" type="hidden" value="0" />
<input name="attr_constitution_modifier" type="hidden" value="0" />
<input name="attr_intelligence_modifier" type="hidden" value="0" />
<input name="attr_wisdom_modifier" type="hidden" value="0" />
<input name="attr_charisma_modifier" type="hidden"value="0" />
<!-- <input name="attr_acrobatics" type="hidden"value="0" /> -->
<!-- Class DC -->
<input name="attr_class_dc" type="hidden" value="10" />
<input name="attr_class_dc_key_ability" type="hidden" value="0" />
<!-- Hit Points -->
<input name="attr_hit_points" type="hidden" value="0" />
<input name="attr_hit_points_max" type="hidden" value="0" />
<!-- Perception -->
<input name="attr_perception" type="hidden" value="0" />
<input name="attr_perception_ability" type="hidden" value="0" />
<!-- Armor -->
<input name="attr_armor_class_dc_base" type="hidden" value="10" />
<input name="attr_armor_class" type="hidden" value="10" />
<input name="attr_ac" type="hidden" value="@{armor_class}" disabled="disabled" />
<input name="attr_armor_class_shield" type="hidden" value="10" />
<!-- Saving Throws -->
<input name="attr_saving_throws_fortitude" type="hidden" value="10" />
<input name="attr_saving_throws_reflex" type="hidden" value="10" />
<input name="attr_saving_throws_will" type="hidden" value="10" />
<!-- Spell Attack -->
<input name="attr_spell_attack" type="hidden" value="0" />
<input name="attr_spell_attack_key_ability" type="hidden" value="0" />
<!-- Spell DC -->
<input name="attr_spell_dc" type="hidden" value="10" />
<input name="attr_spell_dc_key_ability" type="hidden" value="0" />
<!-- Spells: Magic Tradition -->
<input name="attr_magic_tradition_arcane" type="hidden" value="0" />
<input name="attr_magic_tradition_arcane_proficiency" type="hidden" value="0" />
<input name="attr_magic_tradition_primal" type="hidden" value="0" />
<input name="attr_magic_tradition_primal_proficiency" type="hidden" value="0" />
<input name="attr_magic_tradition_occult" type="hidden" value="0" />
<input name="attr_magic_tradition_occult_proficiency" type="hidden" value="0" />
<input name="attr_magic_tradition_divine" type="hidden" value="0" />
<input name="attr_magic_tradition_divine_proficiency" type="hidden" value="0" />
<!-- Bulk -->
<input name="attr_bulk" type="hidden" value="0" />
<input name="attr_encumbered_base" type="hidden" value="5" />
<input name="attr_maximum_base" type="hidden" value="10" />
<!-- Proficiencies -->
<input name="attr_class_dc_proficiency" type="hidden" value="0" />
<input name="attr_armor_class_proficiency" type="hidden"value="0" />
<input name="attr_saving_throws_fortitude_proficiency" type="hidden"value="0" />
<input name="attr_saving_throws_reflex_proficiency" type="hidden"value="0" />
<input name="attr_saving_throws_will_proficiency" type="hidden"value="0" />
<input name="attr_perception_proficiency" type="hidden"value="0" />
<input name="attr_acrobatics_proficiency" type="hidden"value="0" />
<input name="attr_arcana_proficiency" type="hidden"value="0" />
<input name="attr_athletics_proficiency" type="hidden"value="0" />
<input name="attr_crafting_proficiency" type="hidden"value="0" />
<input name="attr_deception_proficiency" type="hidden"value="0" />
<input name="attr_diplomacy_proficiency" type="hidden"value="0" />
<input name="attr_intimidation_proficiency" type="hidden"value="0" />
<input name="attr_medicine_proficiency" type="hidden"value="0" />
<input name="attr_nature_proficiency" type="hidden"value="0" />
<input name="attr_occultism_proficiency" type="hidden"value="0" />
<input name="attr_performance_proficiency" type="hidden"value="0" />
<input name="attr_religion_proficiency" type="hidden"value="0" />
<input name="attr_society_proficiency" type="hidden"value="0" />
<input name="attr_stealth_proficiency" type="hidden"value="0" />
<input name="attr_survival_proficiency" type="hidden"value="0" />
<input name="attr_thievery_proficiency" type="hidden"value="0" />
<input name="attr_spell_attack_proficiency" type="hidden"value="0" />
<input name="attr_spell_dc_proficiency" type="hidden"value="0" />
<!-- Translatable Texts for rolls queries, rolls details etc. -->
<!-- Must be translated at sheet opening -->
<input name="attr_text_modifier" type="hidden" value="modifier" />
<input name="attr_text_ability_modifier" type="hidden" value="ability modifier" />
<input name="attr_text_bonus" type="hidden" value="bonus" />
<input name="attr_text_roll_bonus" type="hidden" value="bonus to roll" />
<input name="attr_text_roll_damage_bonus" type="hidden" value="bonus to damage" />
<input name="attr_text_#_damage_dice" type="hidden" value="# Damage Dice" />
<input name="attr_text_use" type="hidden" value="Use" />
<!-- Token Settings -->
<input type="hidden" name="settings_bar1value" value="" />
<input type="hidden" name="settings_bar1max" value="" />
<input type="hidden" name="settings_bar1link" value="" />
<input type="hidden" name="settings_bar2value" value="" />
<input type="hidden" name="settings_bar2max" value="" />
<input type="hidden" name="settings_bar2link" value="" />
<input type="hidden" name="settings_bar3value" value="" />
<input type="hidden" name="settings_bar3max" value="" />
<input type="hidden" name="settings_bar3link" value="" />
<!-- ROLL TEMPLATES--><div class="rolltemplates">
<rolltemplate class="sheet-rolltemplate-rolls">
{{#charactername}}
<span class="charactername">
{{charactername}}
</span>
{{/charactername}}
<!--- Display a header on the template --->
<div class="template-header">
{{#header}}{{header}}{{/header}}
{{#subheader}}
<div class="template-subheader">{{subheader}}</div>
{{/subheader}}
</div>
<!--- Display the dice rolls in the template --->
<div class="template-body">
<!-- Generic rolls -->
{{#roll01}}
<div class="template-row {{roll01_type}}">
{{#roll01_name}}
<span class="template-roll-name {{roll01_type}}">{{roll01_name}}</span>
{{/roll01_name}}
{{roll01}}
{{#roll01_info}}
<span class="template-roll-info {{roll01_type}}">{{roll01_info}}</span>
{{/roll01_info}}
</div>
{{#roll01_critical}}
{{#rollWasCrit() roll01}}
<div class="template-row">
<span class="success" data-i18n="critical!">Critical!</span>
</div>
{{/rollWasCrit() roll01}}
{{/roll01_critical}}
{{/roll01}}
{{#roll01misc}}<div class="template-row">{{roll01misc}}</div>{{/roll01misc}}
{{#roll02}}
<div class="template-row {{roll02_type}}">
{{#roll02_name}}
<span class="template-roll-name {{roll02_type}}">{{roll02_name}}</span>
{{/roll02_name}}
{{roll02}}
{{#roll02_info}}
<span class="template-roll-info {{roll02_type}}">{{roll02_info}}</span>
{{/roll02_info}}
</div>
{{/roll02}}
{{#roll02misc}}<div class="template-row">{{roll02misc}}</div>{{/roll02misc}}
{{#roll03}}
<div class="template-row {{roll03_type}}">
{{#roll03_name}}
<span class="template-roll-name {{roll03_type}}">{{roll03_name}}</span>
{{/roll03_name}}
{{roll03}}
{{#roll03_info}}
<span class="template-roll-info {{roll03_type}}">{{roll03_info}}</span>
{{/roll03_info}}
</div>
{{/roll03}}
{{#roll03misc}}<div class="template-row">{{roll03misc}}</div>{{/roll03misc}}
{{#roll04}}
<div class="template-row {{roll04_type}}">
{{#roll04_name}}
<span class="template-roll-name {{roll04_type}}">{{roll04_name}}</span>
{{/roll04_name}}
{{roll04}}
{{#roll04_info}}
<span class="template-roll-info {{roll04_type}}">{{roll04_info}}</span>
{{/roll04_info}}
</div>
{{/roll04}}
{{#roll04misc}}<div class="template-row">{{roll04misc}}</div>{{/roll04misc}}
<!-- SAVES -->
{{#savedc}}
<div class="template-row">
{{#savebasic}}<span class="template-roll-name bold save" data-i18n="basic">basic</span>{{/savebasic}}
<span class="template-roll-name bold save" data-i18n="saving_throw">Saving Throw</span>
<span class="template-roll-name bold">{{savetype}}</span>
<span class="template-roll-name bold" data-i18n="dc">DC</span>
{{^savespecialdc}}{{savedc}}{{/savespecialdc}}
{{#savespecialdc}}
{{#rollGreater() savespecialdc savedcmisc}}{{savespecialdc}}{{/rollGreater() savespecialdc savedcmisc}}
{{#rollTotal() savespecialdc savedcmisc}}{{savedc}}{{/rollTotal() savespecialdc savedcmisc}}
{{/savespecialdc}}
{{^savebasic}}
<div class="notes {{limit_height}}">
{{#savecriticalsuccess}}
<div class="left">
<span class="template-roll-name bold" data-i18n="critical_success">critical success</span>:
<span class="template-roll-info">{{savecriticalsuccess}}</span>
</div>
{{/savecriticalsuccess}}
{{#savesuccess}}
<div class="left">
<span class="template-roll-name bold" data-i18n="success">success</span>:
<span class="template-roll-info">{{savesuccess}}</span>
</div>
{{/savesuccess}}
{{#savefailure}}
<div class="left">
<span class="template-roll-name bold" data-i18n="failure">failure</span>:
<span class="template-roll-info">{{savefailure}}</span>
</div>
{{/savefailure}}
{{#savecriticalfailure}}
<div class="left">
<span class="template-roll-name bold" data-i18n="critical_failure">critical failure</span>:
<span class="template-roll-info">{{savecriticalfailure}}</span>
</div>
{{/savecriticalfailure}}
</div>
{{/savebasic}}
</div>
{{/savedc}}
<!-- Generic informations (bold label: information) -->
{{#info01}}
<div class="template-row left">
<span class="template-roll-name bold">{{info01_name}}</span>:
<span class="template-roll-info">{{info01}}</span>
</div>
{{/info01}}
{{#info02}}
<div class="template-row left">
<span class="template-roll-name bold">{{info02_name}}</span>:
<span class="template-roll-info">{{info02}}</span>
</div>
{{/info02}}
{{#info03}}
<div class="template-row left">
<span class="template-roll-name bold">{{info03_name}}</span>:
<span class="template-roll-info">{{info03}}</span>
</div>
{{/info03}}
{{#info04}}
<div class="template-row left">
<span class="template-roll-name bold">{{info04_name}}</span>:
<span class="template-roll-info">{{info04}}</span>
</div>
{{/info04}}
{{#info05}}
<div class="template-row left">
<span class="template-roll-name bold">{{info05_name}}</span>:
<span class="template-roll-info">{{info05}}</span>
</div>
{{/info05}}
{{#info06}}
<div class="template-row left">
<span class="template-roll-name bold">{{info06_name}}</span>:
<span class="template-roll-info">{{info06}}</span>
</div>
{{/info06}}
{{#info07}}
<div class="template-row left">
<span class="template-roll-name bold">{{info07_name}}</span>:
<span class="template-roll-info">{{info07}}</span>
</div>
{{/info07}}
{{#info08}}
<div class="template-row left">
<span class="template-roll-name bold">{{info08_name}}</span>:
<span class="template-roll-info">{{info08}}</span>
</div>
{{/info08}}
{{#info09}}
<div class="template-row left">
<span class="template-roll-name bold">{{info09_name}}</span>:
<span class="template-roll-info">{{info09}}</span>
</div>
{{/info09}}
{{#desc}}
<div class="desc {{limit_height}}">
{{desc}}
</div>
{{/desc}}
{{#rollTotal() notes_show 1}}
{{#notes}}
<div class="notes {{limit_height}}">
{{notes}}
</div>
{{/notes}}
{{/rollTotal() notes_show 1}}
</div>
</rolltemplate>
</div>
<!-- SHEET WORKERS-->
<script type="text/worker">
/* === MODULE BEGINS === */
var modPf2 = (function () {
/* === GLOBAL VARIABLES === */
var global_sheet_init_done = 0;
// Attribute names by category
const global_attributes_by_category = {
"abilities": ["strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma"]
, "ability_modifiers": ["strength_modifier", "strength_modifier_half", "dexterity_modifier", "constitution_modifier", "intelligence_modifier", "wisdom_modifier", "charisma_modifier"]
, "setting_toggles": ["class_dc", "armor_class", "hitpoints", "saving_throws", "shield", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "perception", "ancestry", "notes", "spell_attack", "spell_dc", "npcsettings", "npcspellcaster"]
, "repeating_toggles": ["repeating_conditions", "repeating_resistances-immunities", "repeating_senses", "repeating_languages", "repeating_melee-strikes", "repeating_ranged-strikes","repeating_actions","repeating_actions-activities","repeating_free-actions-reactions","repeating_feat-ancestry","repeating_feat-class","repeating_feat-general","repeating_feat-bonus", "repeating_feat-skill", "repeating_lore", "repeating_items-worn", "repeating_items-readied", "repeating_items-other", "repeating_npc-items", "repeating_npc-melee-strikes", "repeating_npc-ranged-strikes","repeating_spellinnate","repeating_spellfocus","repeating_cantrip","repeating_normalspells", "repeating_interaction-abilities"]
, "select_attributes": ["armor_class","saving_throws_fortitude","saving_throws_reflex","saving_throws_will","class_dc_key","perception","repeating_melee-strikes:weapon", "repeating_melee-strikes:damage","repeating_ranged-strikes:weapon","repeating_ranged-strikes:damage","acrobatics","arcana","athletics","crafting","deception","diplomacy","intimidation","repeating_lore:lore","medicine","nature","occultism","performance","religion","society","survival","thievery","spell_attack_key","spell_dc_key"]
, "skills": ["acrobatics","arcana","athletics","crafting","deception","diplomacy","intimidation","medicine","nature","occultism","performance","religion","society","stealth","survival","thievery"]
, "skills_fields": ["ability","ability_select","rank","proficiency","item","armor","temporary","name"]
, "repeating_skills": ["lore"]
, "saves": ["saving_throws_fortitude","saving_throws_reflex","saving_throws_will"]
, "saves_fields": ["ability","ability_select","rank","proficiency","item","temporary"]
, "ac": ["armor_class"]
, "ac_fields": ["ability","ability_select","dc_rank","proficiency","item","temporary","dc_base","cap","shield_ac_bonus","shield_temporary"]
, "hit_points": ["hit_points_ancestry","hit_points_class","hit_points_other","hit_points_item"]
, "repeating_attacks": ["melee-strikes","ranged-strikes"]
, "attacks_fields": ["weapon","weapon_ability_select","weapon_ability","weapon_proficiency","weapon_rank","weapon_item","weapon_temporary","weapon_traits","damage_dice","damage_dice_size","damage_ability_select","damage_ability","damage_b","damage_p","damage_s","damage_weapon_specialization","damage_temporary","damage_other","damage_effects","damage_additional"]
, "perception": ["perception_ability_select","perception_ability","perception_rank","perception_proficiency","perception_item","perception_temporary"]
, "class_dc": ["class_dc_key_ability_select","class_dc_key_ability","class_dc_proficiency","class_dc_rank","class_dc_item","class_dc_temporary"]
, "spell_attack": ["spell_attack_key_ability_select","spell_attack_key_ability", "spell_attack_rank","spell_attack_proficiency","spell_attack_temporary"]
, "spell_dc": ["spell_dc_key_ability_select","spell_dc_key_ability", "spell_dc_rank","spell_dc_proficiency","spell_dc_temporary"]
, "magic_tradition": ["arcane","primal","occult","divine"]
, "magic_tradition_fields": ["rank","proficiency"]
, "repeating_spells": ["cantrip","spellinnate","spellfocus","normalspells"]
, "spell_types": ["cantrips","innate","focus","normalspells"]
, "spells_fields": ["area","attack_checkbox","cast","cast_actions","cast_detail_information","cast_detail_label","current_level","damage_ability","damage_additional","damage_checkbox","damage_dice","damage_misc","damage_type","description","domain","duration","frequency","heightened","magic_tradition","name","npc_attack_checkbox","npc_saving_throw_select","range","save_critical_failure","save_critical_success","save_failure","save_success","save_type","saving_throw_select","school","spell_dc","spellattack","spellattack_ability","spellattack_misc","spellattack_rank","spelldc","spelldc_ability","spelldc_misc","spelldc_rank","spelllevel","target","toggles","traits","uses","uses_max"]
, "spells_fields_triggering": ["magic_tradition","damage_checkbox"]
, "spells_calculation_attributes": ["sheet_type","level","magic_tradition_arcane_proficiency","magic_tradition_primal_proficiency","magic_tradition_occult_proficiency","magic_tradition_divine_proficiency","spell_dc","spell_dc_key_ability","spell_attack_key_ability_select","spell_dc_temporary","spell_attack","spell_attack_key_ability","spell_attack_temporary","roll_option_critical_damage"]
, "repeating_bulks": ["worn","readied","other"]
, "bulks_fields": ["quantity","bulk"]
, "encumbrance_attributes": ["strength_modifier", "encumbered_modifier", "maximum_modifier"]
, "translatables": ["modifier","ability_modifier","bonus","roll_bonus","roll_damage_bonus","#_damage_dice","use"]
};
// NPC attributes object for building NPC from Compendium
const global_npc_attributes = {
basics: ["npc_type","level","alignment","size","traits","perception","senses","languages","acrobatics","acrobatics_notes","arcana","arcana_notes","athletics","athletics_notes","crafting","crafting_notes","deception","deception_notes","diplomacy","diplomacy_notes","intimidation","intimidation_notes","medicine","medicine_notes","nature","nature_notes","occultism","occultism_notes","performance","performance_notes","religion","religion_notes","society","society_notes","stealth","stealth_notes","survival","survival_notes","thievery","thievery_notes","strength_modifier","dexterity_modifier","constitution_modifier","intelligence_modifier","wisdom_modifier","charisma_modifier","armor_class","armor_class_notes","saving_throws_fortitude","saving_throws_reflex","saving_throws_will","saving_throws_notes","hit_points_max","hit_points_notes","immunities","weaknesses","resistances","speed","speed_notes","spell_attack","spell_dc","focus_points_max"]
};
// Misc
const global_magic_traditions = ["arcane","divine","primal","occult"];
const global_spell_frequencies = ["constant","at-will","daily-limit"];
const global_sizes = [
{size:"tiny", squares: 1.0}
, {size:"small", squares: 1.0}
, {size:"medium", squares: 1.0}
, {size:"large", squares: 2.0}
, {size:"huge", squares: 3.0}
, {size:"gargantuan", squares: 4.0}
];
const global_rollregex = /(\d+d*\d*\+*\-*\d*)/gi; // Improvable Regex formula to parse damage dice rolls (like 1d6+2 or 2d4 or just ... 3)
// Repeating sections and their attributes
var global_repsecs = {
"lore": {"section": "lore","attrs":global_attributes_by_category["skills_fields"].map(fld => `lore_${fld}`)}
};
// === UTILITIES
const toTitleCase = function(str) {
return str.replace(/\w\S*/g, function(txt){
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
};
// -- Constant attribute names
const getAttrNames = function(categories) {
let names = [];
categories.forEach((category) => {
if(category in global_attributes_by_category) {
names = names.concat(global_attributes_by_category[category]);
}
});
return names;
};
// == Collecting repeating sections IDs
const getRepSecIds = function(repsec_array,callback,repsec_agr) {
// Returns an array of objects, aggregating ids and attributes for various repeating sections items
// Parameters: Source (like global_repsecs["lore"]), callback function, Aggregate ([{section:string, ids:[ids], attrs:[attribute]}])
// Courtesy of Scott C. :)
let currsection = repsec_array.shift();
if(currsection.section) {
repsec_agr = repsec_agr || [];
getSectionIDs(`repeating_${currsection.section}`, (itemsids)=>{
repsec_agr.push({
section:currsection.section,
ids:itemsids,
attrs:currsection.attrs
});
if (_.isEmpty(repsec_array)) {
callback(repsec_agr);
} else {
getRepSecIds(repsec_array,callback,repsec_agr);
}
});
} else {
if (_.isEmpty(repsec_array)) {
callback(repsec_agr);
} else {
getRepSecIds(repsec_array,callback,repsec_agr);
}
}
};
// == Collecting repeating sections attributes
const getRepSecFields = function(repsec_agr, other_attrs = []) {
// Returns an array of attribute names from several repeating sections and optional other standard attributes
// Parameters: Repeating section Aggregate ([{section:string, ids:[ids], attrs:[attributes]}]), [other attributes names]
let repsecfields = [];
_.each(repsec_agr, (current_section)=>{
// console.log("*** DEBUG getRepsecFields section: " + current_section.section);
_.each(current_section.ids, (id)=>{
// console.log("*** DEBUG getRepsecFields ids: " + id);
_.each(current_section.attrs, (attr)=>{
// console.log("*** DEBUG getRepsecFields attrs: " + attr);
repsecfields.push(`repeating_${current_section.section}_${id}_${attr}`);
});
});
});
return repsecfields.concat(other_attrs);
};
// == Collecting one repeating section and attributes in an array of objects
const getRepSecObjectArray = function(section = "normalspell", attributesArray, callback) {
// Gather all spells from a spell section and constitute a array of objets with [{id: ID, attribute: value}]
let items = [];
getSectionIDs(`repeating_${section}`, (ids) => {
let fields = [];
ids.forEach(id => {
fields.push(...attributesArray.map(attribute => `repeating_${section}_${id}_${attribute}`));
});
getAttrs(fields, (values) => {
ids.forEach(id => {
let item = {};
item["id"] = id;
attributesArray.forEach(attribute => {
item[attribute] = (values[`repeating_${section}_${id}_${attribute}`] || "");
});
items.push(item);
});
if(callback) {
callback(items);
} else {
return items;
}
});
});
};
// == Sorting (repeating section, objects ...)
const defaultComparison = function(a, b) {
// Standard sorting comparison
if (a == b) return 0;
return a < b ? -1 : 1;
};
const stringComparison = function(a, b) {
// Sorting two strings ignoring casing and punctuation but not accents
return String(a).localeCompare(String(b),getTranslationLanguage(),{"ignorePunctuation":true,"caseFirst":false,"sensitivity":"accent"});
};
const getComparisonFunction = function(primer = String, reverse = false) {
// Sorting comparison
let comparisonFunction;
if(primer == String) {
comparisonFunction = (a, b) => {
return stringComparison(a, b);
};
} else {
comparisonFunction = (a, b) => {
return defaultComparison(primer(a), primer(b));
};
}
if (reverse) {
return function(a, b) {
return -1 * comparisonFunction(a, b);
};
}
return comparisonFunction;
};
const sortObjectArrayBy = function(sorting) {
/* Sorting an array of objects.
The `sorting` parameter is an array of sorting criteria(s), in the form of one or more attribute (key) names, or object(s) like {
name:"attribute name"
, primer: typing function name like parseInt. Defaults to String
, reverse: boolean. Ascending or descending order. Default to false.
}
Uses:
* new array = arrayOfObjetcs.sort(sortObjectArrayBy(["name"]));
* (same as) new array = arrayOfObjetcs.sort(sortObjectArrayBy([{name:"name", primer:String, reverse:false}]);
* (multiple criterias : descending level and ascending name) new array = arrayOfObjetcs.sort(sortObjectArrayBy([{name:"current_level", primer:parseInt, reverse:true},"name"]);
*/
let fields = [],
n_fields = sorting.length, field, name, comparison;
// preprocess sorting options
for (let i = 0; i < n_fields; i++) {
field = sorting[i];
if (typeof field === "string") {
name = field;
comparison = stringComparison;
} else {
name = field.name;
comparison = getComparisonFunction(field.primer, field.reverse);
}
fields.push({
name: name,
comparison: comparison
});
}
// final comparison function
return function(A, B) {
let name, result;
for (let i = 0; i < n_fields; i++) {
result = 0;
field = fields[i];
name = field.name;
result = field.comparison(A[name], B[name]);
if (result !== 0) break;
}
return result;
}
};
const sortRepeatingSection = function(section, attributes, sorting) {
// sorting is an array of one or more attribute names, or object(s). See sortObjectArrayBy()
getRepSecObjectArray(section, attributes, (items) => {
let newItems = items.sort(sortObjectArrayBy(sorting));
let sorted_attributes = newItems.map(item => `repeating_${section}_${item.id}`);
setSectionOrder(section, sorted_attributes);
});
};
// === GENERAL CALCULATIONS
// -- Sheet opening (completing global variables, versioning etc.)
const sheetOpen = function(eventinfo) {
// Initialization at first opening of sheet per the user game session
if (global_sheet_init_done === 0) {
let update = {};
// completing global variables
// Attacks
global_attributes_by_category["repeating_attacks"].forEach(category => {
global_repsecs[category] = {"section": category, "attrs": global_attributes_by_category["attacks_fields"]};
});
// Spells
global_attributes_by_category["repeating_spells"].forEach(category => {
global_repsecs[category] = {"section": category, "attrs": ["magic_tradition"]};
});
// Bulk
global_attributes_by_category["repeating_bulks"].forEach(category => {
global_repsecs[category] = {"section": `items-${category}`, "attrs": global_attributes_by_category["bulks_fields"].map(attr => `${category}_${attr}`)};
});
// translatable texts for roll queries etc.
global_attributes_by_category["translatables"].forEach(attr => {
update[`text_${attr}`] = (getTranslationByKey(attr) || "").toUpperCase();
});
// ending initialization
setAttrs(update, {silent: true}, () => {
global_sheet_init_done = 1;
versioning();
});
} else {
versioning();
}
};
// -- Calculates proficiency according to rank, level and misc bonus
const calcProficiency = function(rank, level, misc) {
let trng = (parseInt(rank) || 0);
if(trng > 0) {
return (trng + (parseInt(level) || 0) + (parseInt(misc) || 0));
} else {
return (parseInt(misc) || 0);
}
};
const calcProficiencyDisplay = function(rank) {
switch(parseInt(rank) || 0) {
case 2:
return (getTranslationByKey("trained") || "trained").charAt(0).toUpperCase();
break;
case 4:
return (getTranslationByKey("expert") || "expert").charAt(0).toUpperCase();
break;
case 6:
return (getTranslationByKey("master") || "master").charAt(0).toUpperCase();
break;
case 8:
return (getTranslationByKey("legendary") || "legendary").charAt(0).toUpperCase();
break;
default:
return " ";
}
};
// -- Returns the ability modifier of an ability select, based on the value of the select and the fact that it needs updating or not. values requires ability modifiers, plus the xxx_ability_select and xxx_ability attributes.
const getSelectAbilityModifier = function(attr, values, update_ability = false) {
let modifier = 0;
if(update_ability) {
if((values[`${attr}_ability_select`] === "custom") || (!values[`${attr}_ability_select`])) {
modifier = (parseInt(values[`${attr}_ability`]) || 0);
} else {
modifier = (parseInt(values[values[`${attr}_ability_select`].slice(2,-1)]) || 0);
}
} else {
modifier = (parseInt(values[`${attr}_ability`]) || 0);
}
// console.log(`%c getSelectAbilityModifier ${attr} ${update_ability} ${modifier}`, "color:purple;font-size:14px;");
return modifier;
};
// --- General update (to cascade ability or level/proficiency updates)
const totalUpdate = function(callback = null) {
let debug_start = new Date(); // Performance measurement
// == Gathering all necessary repeating section IDs
getRepSecIds(JSON.parse(JSON.stringify(Object.values(global_repsecs))), (repsec_agr) => {
// == Gathering all necessary attributes
let tmpfields = ["character_name","sheet_type","level","query_roll_damage_dice","cp","sp","gp","pp","spell_attack","spell_dc","roll_option_critical_damage"];
// --- Ability modifiers, Perception, Class DC, Hit Points
tmpfields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["perception"],...global_attributes_by_category["class_dc"],...global_attributes_by_category["hit_points"],...global_attributes_by_category["spell_attack"],...global_attributes_by_category["spell_dc"], ...global_attributes_by_category["encumbrance_attributes"]);
// --- Skills, Saves, AC etc.
["skills","saves","ac"].forEach(category => {
global_attributes_by_category[category].forEach(attr => {
tmpfields.push(...global_attributes_by_category[`${category}_fields`].map(field => `${attr}_${field}`));
});
});
// --- Magic_traditions
global_attributes_by_category["magic_tradition"].forEach(tradition => {
tmpfields.push(...global_attributes_by_category[`magic_tradition_fields`].map(field => `magic_tradition_${tradition}_${field}`));
});
// -- Add repeating section fields & remove duplicates
let all_fields = getRepSecFields(repsec_agr,Array.from(new Set(tmpfields)));
// == Gathering values
getAttrs(all_fields, (values) => {
// console.table(values);
let big_update = {};
let update = {}; // Will be used to collect intermediate updates and replace values in values, when necessary
if((values["sheet_type"] || "").toLowerCase() === "npc") {
// NPCs : just update weapon strikes (for critical damage roll option) and spells for now
// == Attacks / Weapon strikes
global_attributes_by_category["repeating_attacks"].forEach(r_attack => {
repsec_agr.filter(current_section => current_section.section == r_attack)[0].ids.forEach(r_attack_id => {
_.extend(big_update, calcAttack(`repeating_${r_attack}_${r_attack_id}`,values,true));
});
});
// == Spells
global_attributes_by_category["repeating_spells"].forEach(r_spell => {
repsec_agr.filter(current_section => current_section.section == r_spell)[0].ids.forEach(r_spell_id => {
_.extend(big_update, calcSpell(`repeating_${r_spell}_${r_spell_id}_`,values));
});
});
} else {
// == Starting re-calculation
// == Skills
// Fixed skills
global_attributes_by_category["skills"].forEach(skill => {
_.extend(big_update, calcSkill(skill,values,true));
});
// Repeating skills
global_attributes_by_category["repeating_skills"].forEach(r_skill => {
repsec_agr.filter(current_section => current_section.section == r_skill)[0].ids.forEach(r_skill_id => {
_.extend(big_update, calcSkill(`repeating_${r_skill}_${r_skill_id}_${r_skill}`,values,true));
});
});
// == Saves
global_attributes_by_category["saves"].forEach(save => {
_.extend(big_update, calcSave(save,values,true));
});
// == Armor Class (AC)
global_attributes_by_category["ac"].forEach(ac => {
_.extend(big_update, calcArmorClass(ac,values,true));
});
// == Hit Points
_.extend(big_update, calcHitPoints(values,true));
// == Perception
_.extend(big_update, calcPerception(values,true));
// == Class DC
_.extend(big_update, calcClassDc(values,true));
// == Attacks / Weapon strikes
global_attributes_by_category["repeating_attacks"].forEach(r_attack => {
repsec_agr.filter(current_section => current_section.section == r_attack)[0].ids.forEach(r_attack_id => {
_.extend(big_update, calcAttack(`repeating_${r_attack}_${r_attack_id}`,values,true));
});
});
// == Spell Attack
update = calcSpellAttack(values,true);
_.extend(big_update, update);
_.extend(values, update);
// == Spell DC
update = calcSpellDc(values,true);
_.extend(big_update, update);
_.extend(values, update);
// === Spells: Magic Tradition
global_attributes_by_category["magic_tradition"].forEach(tradition => {
update = calcMagicTradition(values,tradition);
_.extend(big_update, update);
_.extend(values, update);
});
// == Spells
global_attributes_by_category["repeating_spells"].forEach(r_spell => {
repsec_agr.filter(current_section => current_section.section == r_spell)[0].ids.forEach(r_spell_id => {
_.extend(big_update, calcSpell(`repeating_${r_spell}_${r_spell_id}_`,values));
});
});
// === Encumbrance / Bulk
update = calcEncumbrance(values);
_.extend(big_update, update);
_.extend(values, update);
_.extend(big_update, calcBulk(values,repsec_agr));
};
// == Updating (finally)
// console.table(big_update);
setAttrs(big_update, {silent: true}, ()=>{
console.log(`%c Pathfinder Second Edition by Roll20: ${(values["character_name"] || "Unnamed character")} updated (${new Date() - debug_start}ms)`, "color:purple;font-size:14px;");
if(callback) {
callback();
}
});
});
});
};
// === VERSIONING ===
const versioning = function(callback) {
let fields = ["version","version_character","sheet_type","character_name"].concat(global_attributes_by_category["ability_modifiers"]);
getAttrs(fields, (values) => {
let version_sheet = parseFloat(values["version"]) || 0.0;
let version_character = parseFloat(values["version_character"]) || 0.0;
if (version_character === version_sheet) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(values["character_name"] || "Unnamed character")}, version ${version_character}`, "color:purple;font-size:14px;");
if(callback) {
callback();
}
} else if (version_character === 0.0) {
// Check if the character is pre-versioning
let total_mods = 0;
global_attributes_by_category["ability_modifiers"].forEach(modifier => {
total_mods += parseInt(values[modifier] || "0");
});
if(total_mods === 0) {
// new characteur, don"t update
setAttrs({"version_character": version_sheet}, {silent: true}, () => {
versioning(callback);
});
} else {
// old character
setAttrs({"version_character": 1.0}, {silent: true}, () => {
versioning(callback);
});
}
} else if (version_character < 2.01) {
versioningUpdateTo2_01(values, () => {
setAttrs({"version_character": 2.01}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 2.05) {
versioningUpdateTo2_05(values, () => {
setAttrs({"version_character": 2.05}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 3.02) {
versioningUpdateTo3_02(values, () => {
setAttrs({"version_character": 3.02}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 3.03) {
versioningUpdateTo3_03(values, () => {
setAttrs({"version_character": 3.03}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 3.042) {
versioningUpdateTo3_042(values, () => {
setAttrs({"version_character": 3.042}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 3.06) {
versioningUpdateTo3_06(values, () => {
setAttrs({"version_character": 3.06}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 3.08) {
versioningUpdateTo3_08(values, () => {
setAttrs({"version_character": 3.08}, {silent: true}, () => {
versioning(callback);
});
});
} else if (version_character < 3.09) {
versioningUpdateTo3_09(values, () => {
setAttrs({"version_character": 3.09}, {silent: true}, () => {
versioning(callback);
});
});
} else {
setAttrs({"version_character": version_sheet}, {silent: true}, () => {
versioning(callback);
});
}
});
};
const versioningUpdateTo2_01 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 2.01`, "color:purple;font-size:13px;font-style:italic;");
if((versioning_values["sheet_type"] || "").toLowerCase() !== "npc") {
// Global recalculation to update all spells DC
totalUpdate(versioningDoneUpdating);
} else {
versioningDoneUpdating();
}
};
const versioningUpdateTo2_05 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 2.05`, "color:purple;font-size:13px;font-style:italic;");
if((versioning_values["sheet_type"] || "").toLowerCase() === "npc") {
// Update NPCs" npc_save_checkbox for innate and focule spells to handle new NPC spell DC handling
getSectionIDs("spellinnate", (innate_ids) => {
getSectionIDs("spellfocus", (focus_ids) => {
let fields = innate_ids.map(id => `repeating_spellinnate_${id}_npc_save_checkbox`).concat(focus_ids.map(id => `repeating_spellfocus_${id}_npc_save_checkbox`));
if(fields.length) {
getAttrs(fields, (values) => {
let update = {};
fields.forEach((attr) => {
if((values[attr] || "0") !== "0") { // the save checkbox was checked
// update to new roll value with new savesepecialdc
update[attr] = "{{savedc=[[@{spell_dc}[DC] + @{spelldc_misc}[MISC]]]}} {{savespecialdc=[[0 + @{spelldc}[DC] + @{spelldc_misc}[MISC]]]}} {{savedcmisc=[[0 + @{spelldc_misc}[MISC]]]}} {{savetype=^{@{save_type}}}} {{savecriticalsuccess=@{save_critical_success}}} {{savesuccess=@{save_success}}} {{savecriticalfailure=@{save_critical_failure}}} {{savefailure=@{save_failure}}}";
}
});
setAttrs(update, {silent: true}, () => {
// plus Global recalculation to update all spells DC
totalUpdate(versioningDoneUpdating);
});
});
} else {
// NPC without spells: nothing to do
versioningDoneUpdating();
}
});
});
} else {
// PC: nothing to do
versioningDoneUpdating();
}
};
const versioningUpdateTo3_02 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 3.02`, "color:purple;font-size:13px;font-style:italic;");
/*
Update spell damage checkbox to handle optional critical damage roll
"{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability}[ABI]) + @{damage_misc}[MISC] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} {{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice}+@{damage_ability}[ABI] + @{damage_misc}[MISC] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_type}}}"
=>
"{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability}[ABI]) + @{damage_misc}[MISC] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} @{roll_critical_damage}"
*/
let spells_repsecs = {}, update = {};
global_attributes_by_category["repeating_spells"].forEach(category => {
spells_repsecs[category] = {"section": category, "attrs": ["damage_dice"]};
});
getRepSecIds(JSON.parse(JSON.stringify(Object.values(spells_repsecs))), (repsec_agr) => {
getAttrs(getRepSecFields(repsec_agr), (values) => {
repsec_agr.forEach(category => {
category.ids.forEach(id => {
if( (values[`repeating_${category.section}_${id}_damage_dice`] || "") !== "") {
update[`repeating_${category.section}_${id}_damage_checkbox`] = "{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice} + (@{damage_ability}[ABI]) + @{damage_misc}[MISC] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_type}}} @{roll_critical_damage}";
}
});
});
setAttrs(update, {silent: true}, () => {
versioningDoneUpdating();
});
});
});
};
const versioningUpdateTo3_03 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 3.03`, "color:purple;font-size:13px;font-style:italic;");
/*
This function is aimed at reducing repeating spell sections level 1 to 10 to one unique repeating section (version X of the sheet, alongside spell UI overhaul)
And converting changed attributes (type => magic_tradition, save checkbox => save select and attack checkboxes)
*/
let spells = ["spellinnate","spellfocus","cantrip","spell1","spell2","spell3","spell4","spell5","spell6","spell7","spell8","spell9","spell10"];
let repsecs = {};
let attributes = ["type","save_checkbox","npc_save_checkbox"].concat(global_attributes_by_category["spells_fields"]);
spells.forEach(level => {
repsecs[level] = {"section": level, "attrs": attributes};
});
getRepSecIds(JSON.parse(JSON.stringify(Object.values(repsecs))), (repsec_agr) => {
let fields = ["sheet_type"].concat(getRepSecFields(repsec_agr));
getAttrs(fields, (values) => {
let update = {}, row = "", field = "";
spells.forEach(level => {
repsec_agr.filter(current_section => current_section.section == level)[0].ids.forEach(id => { // for every ids of the spell section
if(["spellinnate","spellfocus","cantrip"].includes(level)){ // Updating other spell sections
row = `repeating_${level}_${id}_`;
} else { // Reducing spells lvl 1 to 10 to one section
row = `repeating_normalspells_${generateRowID()}_`;
}
attributes.forEach(attribute => { // for every possible attributee
if(["spellinnate","spellfocus","cantrip"].includes(level)){
field = `${row}${attribute}`;
} else {
field = `repeating_${level}_${id}_${attribute}`;
}
if(values[field]) {
switch(attribute) {
case "type":
update[`${row}magic_tradition`] = values[field];
break;
case "save_checkbox":
if((values[field] || "0") !== "0") {
update[`${row}saving_throw_select`] = "@{save_roll}";
}
break;
case "npc_save_checkbox":
if((values[field] || "0") !== "0") {
update[`${row}npc_saving_throw_select`] = "@{npc_save_roll}";
}
break;
case "attack_checkbox":
if((values[field] || "0") !== "0") {
if((values["sheet_type"] || "").toLowerCase() === "npc") {
update[`${row}npc_attack_checkbox`] = "@{npc_attack_roll}";
} else {
update[`${row}attack_checkbox`] = "@{attack_roll}";
}
}
break;
case "npc_attack_checkbox":
if((values[field] || "0") !== "0") {
update[`${row}npc_attack_checkbox`] = "@{npc_attack_roll}";
}
break;
case "damage_checkbox":
if((values[field] || "0") !== "0") {
update[`${row}damage_checkbox`] = "@{damage_roll}";
}
break;
default:
if(!["spellinnate","spellfocus","cantrip"].includes(level)){
update[`${row}${attribute}`] = values[field];
}
break;
}
}
});
if(["spellinnate","spellfocus","cantrip"].includes(level)){ // Updating other spell sections
update[`${row}spelllevel`] = (values[`${row}spelllevel`] || "1");
} else { // Reducing spells lvl 1 to 10 to one section
update[`${row}spelllevel`] = level.replace(/[^\d]/gi,"");
}
update[`${row}current_level`] = update[`${row}spelllevel`];
});
});
// Saving new spell entries
setAttrs(update, {silent: true}, () => {
// Removing old spells 1 to 10
repsec_agr.forEach(repsec => {
if(!["spellinnate","spellfocus","cantrip"].includes(repsec.section)){
repsec.ids.forEach(id => {
removeRepeatingRow(`repeating_${repsec.section}_${id}`);
});
}
});
if(versioningDoneUpdating) {
versioningDoneUpdating();
}
});
});
});
};
const versioningUpdateTo3_042 = (versioning_values, versioningDoneUpdating) => {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 3.042`, "color:purple;font-size:13px;font-style:italic;");
// Re-synchronizing spell section toggles, and make sure color:default is in
let toggles = "";
let toggles_array = ["normalspells","cantrips","focus","innate"];
let fields = ["toggles"].concat(toggles_array.map(toggle => `toggle_${toggle}`));
getAttrs(fields, (values) => {
toggles = (values["toggles"] || "");
toggles_array.forEach(uniq => {
if((values[`toggle_${uniq}`] || "0") === "0" && toggles.includes(uniq)) {
toggles = toggles.replace(uniq + ",","");
} else if(!toggles.includes(uniq)){
toggles += `${uniq},`;
}
});
if(!toggles.includes("color:default")) {
toggles += "color:default,";
}
// Remove duplicates and empty strings, undefined, nulls and other "false" elements
toggles = [...new Set(toggles.split(","))].filter(element => {return element != null && String(element).trim().length;}).join();
setAttrs({"toggles": toggles}, {silent: true}, () => {
if(versioningDoneUpdating) {
versioningDoneUpdating();
}
});
});
};
const versioningUpdateTo3_06 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 3.06`, "color:purple;font-size:13px;font-style:italic;");
// Fixing the actions & reactions repeating section items roll
getSectionIDs("repeating_free-actions-reactions", (ids) => {
let fields = [], update = {};
["free_action","reaction"].forEach(attr => {
fields.push(...ids.map(id => `repeating_free-actions-reactions_${id}_${attr}`));
});
getAttrs(fields, (values) => {
ids.forEach(id => {
update[`repeating_free-actions-reactions_${id}_action_type`] = (`${(values[`repeating_free-actions-reactions_${id}_free_action`] || "0") == "0" ? "" : toTitleCase(getTranslationByKey("free_action"))} `
+ `${(values[`repeating_free-actions-reactions_${id}_reaction`] || "0") == "0" ? "" : toTitleCase(getTranslationByKey("reaction"))} `).trim();
});
setAttrs(update, {silent: true}, () => {
totalUpdate(versioningDoneUpdating);
});
});
});
};
const versioningUpdateTo3_08 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 3.08`, "color:purple;font-size:13px;font-style:italic;");
// Refreshing Character for TEML proficiency display improvements
getAttrs(["sheet_type"], (values) => {
if((values["sheet_type"] || "").toLowerCase() !== "npc"){
totalUpdate(versioningDoneUpdating);
}
});
};
const versioningUpdateTo3_09 = function(versioning_values, versioningDoneUpdating) {
console.log(`%c Pathfinder Second Edition by Roll20: ${(versioning_values["character_name"] || "Unnamed character")} updating to version 3.09`, "color:purple;font-size:13px;font-style:italic;");
/*
This function is aimed at reducing PC's Actions & Activities, and Reactions & Free Actions repeating sections into one new Actions repeating section
*/
getAttrs(["sheet_type"], (chartyp) => {
if((chartyp["sheet_type"] || "").toLowerCase() !== "npc"){
getSectionIDs("repeating_actions-activities", (ids_aa) => {
getSectionIDs("repeating_free-actions-reactions", (ids_ar) => {
// collecting attributes
let fields = [];
let fields_aa = ["name","actions","traits","source","description"];
let fields_ar = ["name","free_action","reaction","traits","source","trigger","description"];
ids_aa.forEach(id => {
fields_aa.forEach(attr => {
fields.push(`repeating_actions-activities_${id}_${attr}`);
});
});
ids_ar.forEach(id => {
fields_ar.forEach(attr => {
fields.push(`repeating_free-actions-reactions_${id}_${attr}`);
});
});
getAttrs(fields, (values) => {
let update = {};
// Adding new Actions rows
ids_aa.forEach(id => {
let row = `repeating_actions_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}action`] = "1-action";
fields_aa.forEach(attr => {
if(attr === "actions" && (values[`repeating_actions-activities_${id}_actions`] || "")) {
update[`${row}action`] = "other";
update[`${row}other`] = values[`repeating_actions-activities_${id}_actions`];
} else {
update[`${row}${attr}`] = (values[`repeating_actions-activities_${id}_${attr}`] || "");
}
});
// action type string
update[`${row}action_type`] = toTitleCase(getTranslationByKey((update[`${row}action`] || "1-action")));
});
ids_ar.forEach(id => {
let row = `repeating_actions_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}action`] = "free_action";
fields_ar.forEach(attr => {
if(attr === "free_action" && (values[`repeating_free-actions-reactions_${id}_${attr}`] || "") === "free action") {
update[`${row}action`] = "free_action";
} else if(attr === "reaction" && (values[`repeating_free-actions-reactions_${id}_${attr}`] || "") === "reaction") {
update[`${row}action`] = "reaction";
} else {
update[`${row}${attr}`] = (values[`repeating_free-actions-reactions_${id}_${attr}`] || "");
}
});
// action type string
update[`${row}action_type`] = toTitleCase(getTranslationByKey((update[`${row}action`] || "free_action")));
});
update["color_scheme"] = "default";
setAttrs(update, {silent: true}, () => {
// Removing old ids
ids_aa.forEach(id => removeRepeatingRow(id));
ids_ar.forEach(id => removeRepeatingRow(id));
versioningDoneUpdating();
});
});
});
});
} else {
// NPC: nothing to do
versioningDoneUpdating();
}
});
};
// === ABILITIES
const updateAbility = function(attr) {
console.log(`%c Update ability ${attr}`, "color:purple;font-size:14px;");
let fields = [`${attr}_score`,`${attr}_score_temporary`,`${attr}_modifier_temporary`];
getAttrs(fields, (values) => {
setAttrs(calcAbility(attr,values), {silent: true}, () => {
totalUpdate();
});
});
};
const calcAbility = function (attr, values) {
let update = {}, mod = 0;
update[`${attr}`] = (parseInt(values[`${attr}_score`]) || 0) + (parseInt(values[`${attr}_score_temporary`]) || 0);
mod = (Math.floor((parseInt(update[`${attr}`], 10) - 10) / 2) || 0) + (parseInt(values[`${attr}_modifier_temporary`]) || 0);
update[`${attr}_modifier`] = mod;
if(attr === "strength") {
if(mod < 0) {
update[`${attr}_modifier_half`] = mod;
} else {
update[`${attr}_modifier_half`] = Math.floor(mod/2);
}
}
return update;
};
// === SKILLS
const updateSkill = function(id, attr, callback) {
console.log(`%c Update skill ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["skills_fields"].map(field => `${id}_${field}`));
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcSkill(id,values,update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcSkill = function(attr, values, update_ability = false) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update[`${attr}_ability`] = getSelectAbilityModifier(attr, values, update_ability);
update[`${attr}_proficiency`] = calcProficiency(values[`${attr}_rank`], values["level"]);
update[`${attr}_proficiency_display`] = calcProficiencyDisplay(values[`${attr}_rank`]);
update[attr] = (parseInt(update[`${attr}_ability`]) || 0)
+ (parseInt(update[`${attr}_proficiency`]) || 0)
+ (parseInt(values[`${attr}_item`]) || 0)
+ (parseInt(values[`${attr}_armor`]) || 0)
+ (parseInt(values[`${attr}_temporary`]) || 0);
}
return update;
};
// === SAVES
const updateSave = function(id, attr, callback) {
console.log(`%c Update save ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["saves_fields"].map(field => `${id}_${field}`));
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcSave(id,values,update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcSave = function(attr, values, update_ability = false) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update[`${attr}_ability`] = getSelectAbilityModifier(attr, values, update_ability);
update[`${attr}_proficiency`] = calcProficiency(values[`${attr}_rank`], values["level"]);
update[`${attr}_proficiency_display`] = calcProficiencyDisplay(values[`${attr}_rank`]);
update[attr] = (parseInt(update[`${attr}_ability`]) || 0)
+ (parseInt(update[`${attr}_proficiency`]) || 0)
+ (parseInt(values[`${attr}_item`]) || 0)
+ (parseInt(values[`${attr}_temporary`]) || 0);
}
return update;
};
// === ARMOR CLASS (AC)
const updateArmorClass = function(id, attr, callback) {
console.log(`%c Update AC ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["ac_fields"].map(field => `${id}_${field}`));
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcArmorClass(id,values,update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcArmorClass = function(attr, values, update_ability = false) {
let update = {}, ability = 0;
if((values["sheet_type"] || "").toLowerCase() != "npc") {
// Ability modifier
ability = getSelectAbilityModifier(attr, values, update_ability);
update[`${attr}_ability`] = ability;
// Managing armor cap
ability = Math.min(ability,parseInt((values[`${attr}_cap`] || "99")));
// Proficieny
update[`${attr}_proficiency`] = calcProficiency(values[`${attr}_dc_rank`], values["level"]);
update[`${attr}_proficiency_display`] = calcProficiencyDisplay(values[`${attr}_dc_rank`]);
// AC
update[attr] = (parseInt(values[`${attr}_dc_base`]) || 10)
+ ability
+ (parseInt(update[`${attr}_proficiency`]) || 0)
+ (parseInt(values[`${attr}_item`]) || 0)
+ (parseInt(values[`${attr}_temporary`]) || 0);
// Shield
update[`${attr}_shield`] = (parseInt(update[attr]) || 10)
+ (parseInt(values[`${attr}_shield_ac_bonus`]) || 0)
+ (parseInt(values[`${attr}_shield_temporary`]) || 0);
}
return update;
};
// === HIT POINTS (HP)
const updateHitPoints = function(attr, callback) {
console.log(`%c Update HP ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["hit_points"]);
getAttrs(fields, (values) => {
setAttrs(calcHitPoints(values), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcHitPoints = function(values) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update["hit_points_max"] = (parseInt(values[`hit_points_ancestry`]) || 0)
+ ((
(parseInt(values[`hit_points_class`]) || 0)
+
(parseInt(values[`constitution_modifier`]) || 0)
) * (parseInt(values[`level`]) || 1))
+ (parseInt(values[`hit_points_other`]) || 0)
+ (parseInt(values[`hit_points_item`]) || 0);
}
return update;
};
// === ATTACKS
const updateAttack = function(id, attr, callback) {
console.log(`%c Update attack ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level","query_roll_damage_dice","roll_option_critical_damage"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["attacks_fields"].map(field => `${id}_${field}`));
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcAttack(id,values,update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcAttack = function(id, values, update_ability = false) {
let update = {};
let critoption = (values["roll_option_critical_damage"] || "auto"); // critical damage roll option
if((values["sheet_type"] || "").toLowerCase() === "npc") {
// Critical damage roll option handling
switch (critoption) {
case "none":
update[`${id}_roll_critical_damage_npc`] = " "; // no critical damage roll
break
case "button":
update[`${id}_roll_critical_damage_npc`] = "@{roll_critical_damage_button_npc}"; // chat button
break
case "auto":
update[`${id}_roll_critical_damage_npc`] = "@{damage_critical_roll_npc}"; // auto roll critical damage
break
default:
update[`${id}_roll_critical_damage_npc`] = "@{damage_critical_roll_npc}"; // auto roll critical damage
}
} else { // PC
// Ability modifiers handling
let weapon_ability = getSelectAbilityModifier(`${id}_weapon`, values, update_ability);
update[`${id}_weapon_ability`] = weapon_ability;
let damage_ability = getSelectAbilityModifier(`${id}_damage`, values, update_ability);
update[`${id}_damage_ability`] = damage_ability;
// Attack: calculating attack display value ("weapon_strike")
update[`${id}_weapon_proficiency`] = calcProficiency(values[`${id}_weapon_rank`], values["level"]);
update[`${id}_weapon_proficiency_display`] = calcProficiencyDisplay(values[`${id}_weapon_rank`]);
let weapon_strike = weapon_ability
+ (parseInt(update[`${id}_weapon_proficiency`]) || 0)
+ (parseInt(values[`${id}_weapon_item`]) || 0)
+ (parseInt(values[`${id}_weapon_temporary`]) || 0);
update[`${id}_weapon_strike`] = weapon_strike;
// Damage: calculating dice and total fixed damage
update[`${id}_damage_dice`] = (parseInt(values[`${id}_damage_dice`]) || 0);
if((parseInt(values[`${id}_damage_dice_size`].replace(/[^\d]/gi,"")) || 0)) {
update[`${id}_damage_dice_size`] = `D${parseInt(values[`${id}_damage_dice_size`].replace(/[^\d]/gi,""))}`;
} else {
update[`${id}_damage_dice_size`] = "D0";
}
let damage_dice = `${update[`${id}_damage_dice`]}${update[`${id}_damage_dice_size`]}`;
let damage_bonus = damage_ability
+ (parseInt(values[`${id}_damage_weapon_specialization`]) || 0)
+ (parseInt(values[`${id}_damage_temporary`]) || 0)
+ (parseInt(values[`${id}_damage_other`]) || 0);
// Attack display
update[`${id}_weapon_display`] = `${update[`${id}_weapon_proficiency_display`] || ""} ${weapon_strike < 0 ? "" : "+"}${weapon_strike}${(values[`${id}_weapon_traits`] || "").length ? " ("+values[`${id}_weapon_traits`]+")" : ""}`.trim();
// Damage display
update[`${id}_damage_display`] = `${damage_dice == "0D0" ? "" : damage_dice}${damage_bonus < 0 ? "" : "+"}${damage_bonus}${values[`${id}_damage_b`] == "1" ? " "+getTranslationByKey("b").toUpperCase() : ""}${values[`${id}_damage_p`] == "1" ? " "+getTranslationByKey("p").toUpperCase() : ""}${values[`${id}_damage_s`] == "1" ? " "+getTranslationByKey("s").toUpperCase() : ""}${(values[`${id}_damage_effects`] || "").length ? " "+getTranslationByKey("plus")+" "+values[`${id}_damage_effects`] : ""}${(values[`${id}_damage_additional`] || "").length ? " "+getTranslationByKey("plus")+" "+values[`${id}_damage_additional`] : ""}`;
// Damage Roll: calculating info to include translated damage type
let damage_info = "";
if(values[`${id}_damage_b`] == "1") {
damage_info += ` ${getTranslationByKey("bludgeoning")}`;
}
if(values[`${id}_damage_p`] == "1") {
damage_info += ` ${getTranslationByKey("piercing")}`;
}
if(values[`${id}_damage_s`] == "1") {
damage_info += ` ${getTranslationByKey("slashing")}`;
}
if((values[`${id}_damage_effects`] || "").length) {
damage_info += ` ${getTranslationByKey("plus")} @{damage_effects}`;
}
update[`${id}_damage_info`] = damage_info.trim();
// Damage roll : query damage dice # or not
if((values[`query_roll_damage_dice`] || "0") == "0") {
update[`${id}_damage_dice_query`] = "@{damage_dice}";
} else {
update[`${id}_damage_dice_query`] = values[`query_roll_damage_dice`];
}
// Forced update to attack and damage rolls (in case of logic change)
update[`${id}_weapon_roll`] = "{{roll01_name=^{attack}}} {{roll01=[[1d20cs20cf1 + [@{weapon_proficiency_display}] @{weapon_strike}[@{text_modifier}] + (@{query_roll_bonus})[@{text_bonus}]]]}} {{roll01_type=attack}} {{roll01_info=@{weapon_traits}}} {{roll01_critical=1}}";
update[`${id}_damage_roll`] = `{{roll02_name=^{damage}}} {{roll02=[[@{damage_dice_query}@{damage_dice_size} + @{damage_ability}[@{text_ability_modifier}] + @{damage_weapon_specialization}[${(getTranslationByKey("weapon specialization") || "").toUpperCase()}] + @{damage_temporary}[${(getTranslationByKey("temp") || "").toUpperCase()}] + @{damage_other}[${(getTranslationByKey("other") || "").toUpperCase()}] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}]]]}} {{roll02_type=damage}} {{roll02_info=@{damage_info}}}`;
update[`${id}_damage_critical_roll`] = `{{roll03_name=^{critical_damage}}} {{roll03=[[(@{damage_dice_query}@{damage_dice_size} + @{damage_ability}[@{text_ability_modifier}] + @{damage_weapon_specialization}[${(getTranslationByKey("weapon specialization") || "").toUpperCase()}] + @{damage_temporary}[${(getTranslationByKey("temp") || "").toUpperCase()}] + @{damage_other}[${(getTranslationByKey("other") || "").toUpperCase()}] + @{query_roll_damage_bonus}[@{text_roll_damage_bonus}])*2]]}} {{roll03_type=critical-damage}} {{roll03_info=@{damage_info}}}`;
// Critical damage roll option handling
switch (critoption) {
case "none":
update[`${id}_roll_critical_damage`] = " "; // no critical damage roll
break
case "button":
update[`${id}_roll_critical_damage`] = "@{roll_critical_damage_button}"; // chat button
break
case "auto":
update[`${id}_roll_critical_damage`] = "@{damage_critical_roll}"; // auto roll critical damage
break
default:
update[`${id}_roll_critical_damage`] = "@{damage_critical_roll}"; // auto roll critical damage
}
}
return update;
};
// === PERCEPTION
const updatePerception = function(attr, callback) {
console.log(`%c Update perception ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["perception"]);
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcPerception(values, update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcPerception = function(values, update_ability = false) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update["perception_ability"] = getSelectAbilityModifier("perception", values, update_ability);
update["perception_proficiency"] = calcProficiency(values["perception_rank"], values["level"]);
update["perception_proficiency_display"] = calcProficiencyDisplay(values["perception_rank"]);
update["perception"] = (parseInt(update["perception_ability"]) || 0)
+ (parseInt(update["perception_proficiency"]) || 0)
+ (parseInt(values["perception_item"]) || 0)
+ (parseInt(values["perception_temporary"]) || 0);
}
return update;
};
// === CLASS DC
const updateClassDc = function(attr, callback) {
console.log(`%c Update Class DC ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["class_dc"]);
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcClassDc(values, update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcClassDc = function(values, update_ability = false) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update["class_dc_key_ability"] = getSelectAbilityModifier("class_dc_key", values, update_ability);
update["class_dc_proficiency"] = calcProficiency(values["class_dc_rank"], values["level"]);
update["class_dc_proficiency_display"] = calcProficiencyDisplay(values["class_dc_rank"]);
update["class_dc"] = 10
+ (parseInt(update["class_dc_key_ability"]) || 0)
+ (parseInt(update["class_dc_proficiency"]) || 0)
+ (parseInt(values["class_dc_item"]) || 0)
+ (parseInt(values["class_dc_temporary"]) || 0);
}
return update;
};
// === SPELL ATTACKS
const updateSpellAttack = function(attr, callback) {
console.log(`%c Update spell attack ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["spell_attack"]);
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcSpellAttack(values, update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcSpellAttack = function(values, update_ability = false) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update["spell_attack_key_ability"] = getSelectAbilityModifier("spell_attack_key", values, update_ability);
update["spell_attack_proficiency"] = calcProficiency(values["spell_attack_rank"], values["level"]);
update["spell_attack_proficiency_display"] = calcProficiencyDisplay(values["spell_attack_rank"]);
update["spell_attack"] = (parseInt(update["spell_attack_key_ability"]) || 0)
+ (parseInt(update["spell_attack_proficiency"]) || 0)
+ (parseInt(values["spell_attack_temporary"]) || 0);
}
return update;
};
// === SPELL DC
const updateSpellDc = function(attr, callback) {
console.log(`%c Update spell DC ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
fields.push(...global_attributes_by_category["ability_modifiers"],...global_attributes_by_category["spell_dc"]);
getAttrs(fields, (values) => {
let update_ability = true;
if(attr.includes("ability")) {
update_ability = false;
}
setAttrs(calcSpellDc(values, update_ability), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcSpellDc = function(values, update_ability = false) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update["spell_dc_key_ability"] = getSelectAbilityModifier("spell_dc_key", values, update_ability);
update["spell_dc_proficiency"] = calcProficiency(values["spell_dc_rank"], values["level"]);
update["spell_dc_proficiency_display"] = calcProficiencyDisplay(values["spell_dc_rank"]);
update["spell_dc"] = 10
+ (parseInt(update["spell_dc_key_ability"]) || 0)
+ (parseInt(update["spell_dc_proficiency"]) || 0)
+ (parseInt(values["spell_dc_temporary"]) || 0)
// + (parseInt(values["spell_dc_item"]) || 0)
;
}
return update;
};
// === SPELLS: MAGIC TRADITIONS
const updateMagicTradition = function(attr, tradition, callback) {
console.log(`%c Update Magic Tradition ${tradition} with ${attr}`, "color:purple;font-size:14px;");
let fields = ["sheet_type","level"];
global_attributes_by_category["magic_tradition_fields"].forEach(field => {
fields.push(`magic_tradition_${tradition}_${field}`);
});
getAttrs(fields, (values) => {
setAttrs(calcMagicTradition(values, tradition), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcMagicTradition = function(values, tradition) {
let update = {};
if((values["sheet_type"] || "").toLowerCase() != "npc") {
update[`magic_tradition_${tradition}_proficiency`] = calcProficiency(values[`magic_tradition_${tradition}_rank`], values["level"]);
// update[`magic_tradition_${tradition}_proficiency_display`] = calcProficiencyDisplay(values[`magic_tradition_${tradition}_rank`]);
}
return update;
};
// === SPELLS: SPELL
const updateSpell = function(row, attr, callback) {
console.log(`%c Update spell ${attr}`, "color:purple;font-size:14px;");
let fields = global_attributes_by_category["spells_calculation_attributes"];
fields.push(`${row}magic_tradition`);
getAttrs(fields, (values) => {
setAttrs(calcSpell(row,values), {silent: true}, () => {
if(callback) {
callback();
}
});
});
};
const calcSpell = function(row, values) {
/*
Calculating DC (dc) and Attack (spellattack) value based on chosen magic tradition:
If no magic tradition has been chosen on the spell, then standard spell DC (spell_dc) and standard spell attack (spell_attack) are used.
Otherwise (a magic tradition has been selected for the spell), a specifi spell base DC and attack are calcuted based on magic tradition proficiency and relative (DC or Attack) ability modifiers and temporary bonuses.
In a future version, full magic tradition attack and DC should be calcultared with their own ability modifiers and temporary bonuses (ie a full setting section for each magic tradition, with notes and all)
*/
let update = {};
let tradition = (values[`${row}magic_tradition`] || "empty-string");
if((values["sheet_type"] || "").toLowerCase() == "npc") { // NPC
update[`${row}spellattack`] = values["spell_attack"];
update[`${row}spell_dc`] = values["spell_dc"];
} else { // PC
if(tradition == "empty-string") {
update[`${row}spellattack`] = values["spell_attack"];
update[`${row}spelldc`] = values["spell_dc"];
} else {
update[`${row}spellattack`] = (parseInt(values[`magic_tradition_${tradition}_proficiency`]) || 0)
+ (parseInt(values[`spell_attack_key_ability`]) || 0)
+ (parseInt(values[`spell_attack_temporary`]) || 0);
update[`${row}spelldc`] = 10
+ (parseInt(values[`magic_tradition_${tradition}_proficiency`]) || 0)
+ (parseInt(values[`spell_dc_key_ability`]) || 0)
+ (parseInt(values[`spell_dc_temporary`]) || 0);
}
}
// critical damage roll option
switch (values["roll_option_critical_damage"] || "auto") {
case "none":
update[`${row}roll_critical_damage`] = " "; // no critical damage roll
break
case "button":
update[`${row}roll_critical_damage`] = "@{roll_critical_damage_button}"; // chat button
break
case "auto":
update[`${row}roll_critical_damage`] = "@{damage_critical_roll}"; // auto roll critical damage
break
default:
update[`${row}roll_critical_damage`] = "@{damage_critical_roll}"; // auto roll critical damage
}
return update;
};
// === SPELLS: DROP
const updateSpellDrop = function(section, rawdata) {
// Checking dropped data from comendium for spell building
let cdata;
try{
cdata = JSON.parse(rawdata) || {};
}
catch(error){
cdata = {};
console.log(`%c Pathfinder Second Edition by Roll20: drop on ${section}: no valid data`, "color:red;font-size:14px;");
}
if(_.isEmpty(cdata)) {
console.log(`%c Pathfinder Second Edition by Roll20: drop on ${section}: empty data`, "color:red;font-size:14px;");
} else {
// console.log(`%c PF2E Debug: Spell data: ${JSON.stringify(cdata,null," ")}`, "color:purple;font-size:12px;");
if(cdata["Category"] && (cdata["Category"].trim().toLowerCase() === "spells")) {
let fields = global_attributes_by_category["spells_calculation_attributes"];
fields.push(`${section}_spelldrop_name`,`${section}_spelldrop_uniq`,`sort_${section}`);
getAttrs(fields, (values) => {
if(values[`${section}_spelldrop_name`]) {
let row = `repeating_${section}_${generateRowID()}_`, spell_data = {}, update = {};
spell_data["name"] = values[`${section}_spelldrop_name`];
spell_data["data"] = cdata;
// Base properties
update[`${row}name`] = spell_data["name"];
update[`${row}toggles`] = "display,";
// Extended properties from Compendium
_.extend(update,calcDroppedSpell(row,spell_data,values,(values["sheet_type"] === "npc")));
// Calculate final spell details
_.extend(values,update); // add eventual calculated attributes necessary for calcSpell()
_.extend(update,calcSpell(row,values));
// Clean dropping attributes
update[`${section}_spelldrop_name`] = "";
update[`${section}_spelldrop_uniq`] = "";
update[`${section}_spelldrop_data`] = "";
// Record everything
setAttrs(update,{silent: true}, () => {
// Re-sorting the spell section
sortSpells(section, values[`sort_${section}`]);
});
}
});
}
}
};
const calcDroppedSpell = function(row, spell_data, values = {}, is_npc = false) {
/*
Complete an existing spell with compendium data.
Parameters:
- row: `repeating_section_id_`
- spell_data: object from compendium page (with blobs)
- values: additional needed data
- is_npc: NPC character or not
*/
let update = {};
let cast_actions = {
"one-action": "1-action",
"two-action": "2-action",
"three-action": "3-action",
"1-to-3 actions": "1-to-3-actions",
"reaction": "reaction",
"free-action": "free_action"
};
if(spell_data && spell_data.name && spell_data.data && spell_data.data.blobs) {
let blob = spell_data.data.blobs[spell_data.name];
if(blob) {
// Using data from Compendium
Object.keys(blob).forEach(key => {
switch(key) {
case "magic_traditions":
update[`${row}magic_tradition`] = (blob[key].split(",")[0] || "").trim();
break;
case "cast_actions":
update[`${row}cast_actions`] = (cast_actions[blob[key].trim().toLowerCase()] || "1-action");
break;
case "cast_detail_label":
update[`${row}cast_detail_label`] = blob[key].trim().toLowerCase();
break;
case "data-attack":
if(blob[key] && blob[key].trim().toLowerCase() == "true") {
update[`${row}${is_npc ? "npc_" : ""}attack_checkbox`] = `@{${is_npc ? "npc_" : ""}attack_roll}`;
}
break;
case "damage":
update[`${row}damage_dice`] = blob[key];
update[`${row}damage_checkbox`] = "@{damage_roll}";
break;
case "data-damage_add_ability":
if(!is_npc && String(blob[key]).toLowerCase().trim() === "true" ) {
update[`${row}damage_ability`] = (values["spell_attack_key_ability_select"] || "");
}
break;
case "damage_additional":
update[`${row}damage_additional`] = blob[key].replace(global_rollregex,"[[$1]]");
break;
case "saving_throw":
if(["basic","normal"].includes(blob[key].trim().toLowerCase())) {
update[`${row}${is_npc ? "npc_" : ""}saving_throw_select`] = `@{${is_npc ? "npc_" : ""}save_roll${blob[key].trim().toLowerCase() === "basic" ? "_basic" : ""}}`;
} else {
update[`${row}${is_npc ? "npc_" : ""}saving_throw_select`] = "";
}
break;
case "level":
if(!values[`${row}spelllevel`]) {
update[`${row}spelllevel`] = blob[key];
update[`${row}current_level`] = blob[key];
}
default:
if(global_attributes_by_category["spells_fields"].includes(key) && !values[`${row}${key}`]) {
update[`${row}${key}`] = blob[key];
}
break;
}
});
// Default empty values
global_attributes_by_category["spells_fields"].forEach(attribute => {
if(!(values[`${row}${attribute}`] || update[`${row}${attribute}`])) {
if(!["toggles","name"].includes(attribute)){
if(attribute === "saving_throw_select") {
update[`${row}${attribute}`] = "none";
} else {
update[`${row}${attribute}`] = attribute.includes("check") ? "0" : "";
}
}
}
});
}
}
return update;
};
//== SPELLS: sorting
const sortSpells = function(section, sorting) {
if(sorting === "name") {
sortRepeatingSection(section, global_attributes_by_category["spells_fields"], ["name"]);
} else if (sorting === "name_desc") {
sortRepeatingSection(section, global_attributes_by_category["spells_fields"], [{name:"name", reverse:true}]);
} else if (sorting === "level") {
sortRepeatingSection(section, global_attributes_by_category["spells_fields"], [{name:"current_level",primer: parseInt},"name"]);
} else if (sorting === "level_desc") {
sortRepeatingSection(section, global_attributes_by_category["spells_fields"], [{name:"current_level", primer:parseInt, reverse:true},"name"]);
}
};
// === BULK
const updateEncumbrance = function(attr) {
console.log(`%c Update Encumbrance ${attr}`, "color:purple;font-size:14px;");
getAttrs(global_attributes_by_category["encumbrance_attributes"], (values) => {
setAttrs(calcEncumbrance(values), {silent: true});
});
};
const calcEncumbrance = function(values) {
let update = {};
update["encumbered_base"] = 5
+ (parseInt(values["strength_modifier"]) || 0)
+ (parseInt(values["encumbered_modifier"]) || 0);
update["maximum_base"] = 10
+ (parseInt(values["strength_modifier"]) || 0)
+ (parseInt(values["maximum_modifier"]) || 0);
return update;
};
const updateBulk = function(attr, callback) {
console.log(`%c Update Bulk ${attr}`, "color:purple;font-size:14px;");
let repsecs = {};
global_attributes_by_category["repeating_bulks"].forEach(category => {
repsecs[category] = {"section": `items-${category}`, "attrs": global_attributes_by_category["bulks_fields"].map(attr => `${category}_${attr}`)};
});
getRepSecIds(JSON.parse(JSON.stringify(Object.values(repsecs))), (repsec_agr) => {
let fields = getRepSecFields(repsec_agr, Array.from(new Set(["cp","sp","gp","pp"])));
getAttrs(fields, (values) => {
setAttrs(calcBulk(values,repsec_agr), {silent: true}, () => {
if(callback) {
callback();
}
});
});
});
};
const calcBulk = function(values,repsec_agr) {
let update = {};
let total = 0, light = 0, coins = 0, other = 0;
// Tallying bulk values from various items
global_attributes_by_category["repeating_bulks"].forEach(category => {
repsec_agr.filter(current_section => current_section.section == `items-${category}`)[0].ids.forEach(category_id => {
if((values[`repeating_items-${category}_${category_id}_${category}_bulk`] || "").toUpperCase() === "L") {
// Light item
light += (parseInt(values[`repeating_items-${category}_${category_id}_${category}_quantity`]) || 0);
} else {
// Other / normal bulk
other += ((parseInt(values[`repeating_items-${category}_${category_id}_${category}_bulk`]) || 0) * (parseInt(values[`repeating_items-${category}_${category_id}_${category}_quantity`]) || 0));
}
});
});
// Coins
coins = 0
+ (parseInt(values["cp"]) || 0)
+ (parseInt(values["sp"]) || 0)
+ (parseInt(values["gp"]) || 0)
+ (parseInt(values["pp"]) || 0);
total = other + Math.floor(light / 10) + Math.floor(coins / 1000);
update["bulk"] = total;
return update;
};
// == Character Compendium Drops
const completeCharacterWithCompendium = function(character_object, callback) {
/*
Completes a character with data from the Compendium.
Parameters:
- character_object:
* base_character: an object (simple keys/values) with some usefull data from the character
* compendium_spells: array of objects. Each one being {row: `repeating_section_id_`, name: name of the spell}
* more to come ? (compendium_feats, compendium_items ... ?)
- optional callback function
*/
let update = {}, pages = [], fields = ["spell_attack_key_ability_select","sheet_type"];
getAttrs(fields, (values) => {
let is_npc = ((values["sheet_type"] || "pc") === "npc");
_.extend(values,character_object.base_character); // merging character data and other usefull fields
// Gather all necessary compendium pages names
if(character_object["compendium_spells"] && character_object["compendium_spells"].length) {
pages.push(...character_object.compendium_spells.map(spell => "Spells:" + toTitleCase((spell["name"] || "").trim())));
}
getCompendiumPage(pages, (compendium_data) => {
let compendium_data_array = [];
if(Array.isArray(compendium_data)) {
compendium_data_array = compendium_data;
} else if(typeof compendium_data === "object" && compendium_data.id) { // Single page object loaded from the compendium
compendium_data_array.push(compendium_data);
}
if(character_object["compendium_spells"] && character_object["compendium_spells"].length) {
// Spells to be processed
character_object.compendium_spells.forEach(spell => {
// Find individual spell data in compendium data
let spell_data = {};
try {
spell_data = compendium_data_array.find(o => ((o.name) && (o.name.toLowerCase().trim() === spell.name.toLowerCase().trim()) && (o.data["Category"] === "Spells")));
}
catch(error) {
spell_data = {};
console.log(`%c Pathfinder Second Edition by Roll20: completeCharacterWithCompendium: no valid data in compendium data for this spell: ${(spell["name"] || "")}`, "color:red;font-size:14px;");
}
if(spell_data && spell_data.id && spell_data.data) {
_.extend(update,calcDroppedSpell(spell.row, spell_data, values, is_npc));
}
});
}
if(callback) {
callback(update);
} else {
return update;
}
});
});
};
// === NPC Compendium drops
const updateNpcDrop = function(rawdata) {
// Checking dropped data from comendium for NPC building
let cdata;
try{
cdata = JSON.parse(rawdata) || {};
}
catch(error){
cdata = {};
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: no valid data`, "color:red;font-size:14px;");
}
if(_.isEmpty(cdata)) {
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: empty data`, "color:red;font-size:14px;");
} else {
// console.log(`%c PF2E Debug: NPC data: ${JSON.stringify(cdata,null," ")}`, "color:purple;font-size:12px;");
if(cdata["Category"] && (cdata["Category"].trim().toLowerCase() === "monsters")) {
// Initialize NPC & show building splash
setAttrs({"sheet_type": "npc","build_message": (getTranslationByKey("building_npc") || "BUILDING")},{silent: true}, ()=>{
getAttrs(["npcdrop_name","npcdrop_uniq","toggles"], (values) => {
// Do 2 setAttrs: one "quick", one "long" (after getCompendiumPages), to avoid setTokenAttrs timeout
let npc_object = calcNpcDrop(cdata,values);
setAttrs(npc_object.base_character,{silent: true}, () => {
updateDefaultToken(() => { // Setting token size, bars
// Dealing with Compendium Pages (completing spells ...)
completeCharacterWithCompendium(npc_object, (character_update) => {
// -- Hide building splash
character_update["build_message"] = "";
setAttrs(character_update, {silent:true}, () => {
toggleStringBuilder(npc_object["toggles"], () => {
totalUpdate(); // Global NPC recalculation
});
});
});
});
});
});
});
}
}
};
const calcNpcDrop = function (cdata,values) {
// Budiling / Updating an NPC character with dropped data from the compendium
let update = {}, row = "", obj_array = [];
// Base NPC information
if(values["npcdrop_name"]) {
update["character_name"] = values["npcdrop_name"];
}
if(values["npcdrop_uniq"]) {
update["npc_fromcompendium"] = values["npcdrop_uniq"];
} else {
update["npc_fromcompendium"] = "Monsters:" + values["npcdrop_name"];
}
// === Basic non repeating informations
global_npc_attributes.basics.forEach((attr) => {
if(cdata[attr]) {
update[`${attr}`] = cdata[attr];
}
});
// === Repeating data
// -- Lore skills
if(cdata["data-lore"]) {
try{
obj_array = JSON.parse(cdata["data-lore"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid lore`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_lore_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}lore_name`] = (obj["lore_name"] || getTranslationByKey("lore").toUpperCase());
update[`${row}lore`] = (obj["lore"] || "0");
update[`${row}lore_notes`] = (obj["lore_notes"] || "");
});
}
}
// -- Items
if(cdata["data-items"]) {
try{
obj_array = JSON.parse(cdata["data-items"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid items`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_items-worn_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}worn_item`] = (obj["item"] || getTranslationByKey("item").toUpperCase());
update[`${row}description`] = (obj["description"] || "");
});
}
}
// -- Interaction abilities
if(cdata["data-interaction-abilities"]) {
try{
obj_array = JSON.parse(cdata["data-interaction-abilities"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid interaction abilities`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_interaction-abilities_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("ability").toUpperCase());
update[`${row}traits`] = (obj["traits"] || "");
update[`${row}description`] = (obj["description"] || "");
});
}
}
// -- Free actions reactions (automatic and reactive abilities)
if(cdata["data-free-actions-reactions"]) {
try{
obj_array = JSON.parse(cdata["data-free-actions-reactions"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid actions reactions`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_free-actions-reactions_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("ability").toUpperCase());
update[`${row}action_type`] = "";
if((obj["free_action"] || "")) {
update[`${row}free_action`] = "free action";
update[`${row}action_type`] = update[`${row}action_type`] + toTitleCase(getTranslationByKey("free_action"));
}
if((obj["reaction"] || "")) {
update[`${row}reaction`] = "reaction";
update[`${row}action_type`] = update[`${row}action_type`] + " " + toTitleCase(getTranslationByKey("reaction"));
}
update[`${row}action_type`] = update[`${row}action_type`].trim();
update[`${row}traits`] = (obj["traits"] || "");
update[`${row}source`] = (obj["source"] || "");
update[`${row}trigger`] = (obj["trigger"] || "");
update[`${row}description`] = (obj["description"] || "");
});
}
}
// -- Melee strikes
if(cdata["data-melee-strikes"]) {
try{
obj_array = JSON.parse(cdata["data-melee-strikes"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid melee strikes`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_melee-strikes_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}weapon`] = (obj["weapon"] || getTranslationByKey("weapon").toUpperCase());
update[`${row}weapon_strike`] = (obj["weapon_strike"] || "+0");
update[`${row}weapon_traits`] = (obj["weapon_traits"] || "");
update[`${row}weapon_strike_damage`] = (obj["weapon_strike_damage"] || "+0");
update[`${row}weapon_strike_damage_type`] = (obj["weapon_strike_damage_type"] || "");
update[`${row}weapon_strike_damage_additional`] = (obj["weapon_strike_damage_additional"] || "").replace(global_rollregex,"[[$1]]");
update[`${row}weapon_notes`] = (obj["weapon_notes"] || "");
});
}
}
// -- Ranged strikes
if(cdata["data-ranged-strikes"]) {
try{
obj_array = JSON.parse(cdata["data-ranged-strikes"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid ranged strikes`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_ranged-strikes_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}weapon`] = (obj["weapon"] || getTranslationByKey("weapon").toUpperCase());
update[`${row}weapon_strike`] = (obj["weapon_strike"] || "+0");
update[`${row}weapon_traits`] = (obj["weapon_traits"] || "");
update[`${row}weapon_strike_damage`] = (obj["weapon_strike_damage"] || "+0");
update[`${row}weapon_strike_damage_type`] = (obj["weapon_strike_damage_type"] || "");
update[`${row}weapon_strike_damage_additional`] = (obj["weapon_strike_damage_additional"] || "").replace(global_rollregex,"[[$1]]");
update[`${row}weapon_range`] = (obj["weapon_range"] || "");
update[`${row}weapon_notes`] = (obj["weapon_notes"] || "");
});
}
}
// -- Actions activities (Offensive or Proactive abilities)
if(cdata["data-actions-activities"]) {
try{
obj_array = JSON.parse(cdata["data-actions-activities"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid actions activities (offensive or proactive abilities)`, "color:red;font-size:14px;");
}
if(obj_array.length) {
obj_array.forEach((obj) => {
row = `repeating_actions-activities_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("ability").toUpperCase());
update[`${row}actions`] = (obj["actions"] || "");
update[`${row}traits`] = (obj["traits"] || "");
update[`${row}source`] = (obj["source"] || "");
update[`${row}description`] = (obj["description"] || "");
});
}
}
// === Spell/spellcaster handling
let is_spellcaster = false;
let spells_array = [0,0,0,0,0,0,0,0,0,0]; // number of spells per level (1 to 10)
let compendium_spells = [];
let toggles = "";
// -- Innate Spells
if(cdata["data-spellinnate"]) {
try{
obj_array = JSON.parse(cdata["data-spellinnate"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid innate spells`, "color:red;font-size:14px;");
}
if(obj_array.length) {
is_spellcaster = true;
obj_array.forEach((obj) => {
row = `repeating_spellinnate_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("spell").toUpperCase()).trim();
update[`${row}spelllevel`] = (obj["spelllevel"] || "0");
update[`${row}current_level`] = update[`${row}spelllevel`];
update[`${row}spelldc`] = (obj["spelldc"] || "0");
update[`${row}domain`] = (obj["domain"] || "");
update[`${row}description`] = (obj["description"] || "");
if(obj["name"]) { // Collecting names for getCompendium page.
compendium_spells.push({
name: obj["name"].trim(),
row: row
});
}
});
}
} else {
update["toggle_innate"] = "0";
toggles += "innate,";
}
// -- Focus spells
if((cdata["casts_focus"] || "false").toLowerCase() == "true") {
is_spellcaster = true;
}
if(cdata["data-spellfocus"]) {
try{
obj_array = JSON.parse(cdata["data-spellfocus"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid focus spells`, "color:red;font-size:14px;");
}
if(obj_array.length) {
is_spellcaster = true;
obj_array.forEach((obj) => {
row = `repeating_spellfocus_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("spell").toUpperCase()).trim();
update[`${row}spelllevel`] = (obj["spelllevel"] || "0");
update[`${row}current_level`] = update[`${row}spelllevel`];
update[`${row}spelldc`] = (obj["spelldc"] || "0");
update[`${row}domain`] = (obj["domain"] || "");
update[`${row}description`] = (obj["description"] || "");
if(obj["name"]) { // Collecting names for getCompendium page.
compendium_spells.push({
name: obj["name"].trim(),
row: row
});
}
});
}
} else {
update["toggle_focus"] = "0";
toggles += "focus,";
}
// -- Cantrips
if((cdata["casts_cantrips"] || "false").toLowerCase() == "true") {
is_spellcaster = true;
}
if(cdata["data-cantrip"]) {
try{
obj_array = JSON.parse(cdata["data-cantrip"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid cantrips`, "color:red;font-size:14px;");
}
if(obj_array.length) {
is_spellcaster = true;
update["cantrips_per_day"] = obj_array.length;
obj_array.forEach((obj) => {
row = `repeating_cantrip_${generateRowID()}_`;
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("spell").toUpperCase()).trim();
update[`${row}spelllevel`] = (obj["spelllevel"] || "0");
update[`${row}current_level`] = update[`${row}spelllevel`];
update[`${row}spelldc`] = (obj["spelldc"] || "0");
if(obj["type"] && global_magic_traditions.includes(obj["type"].trim().toLowerCase())) {
update[`${row}magic_tradition`] = obj["type"];
} else if(obj["magic_tradition"] && global_magic_traditions.includes(obj["magic_tradition"].trim().toLowerCase())) {
update[`${row}magic_tradition`] = obj["magic_tradition"];
}
if(obj["frequency"] && global_spell_frequencies.includes(obj["frequency"].trim().toLowerCase())) {
update[`${row}frequency`] = obj["frequency"];
}
update[`${row}uses_max`] = (obj["uses_max"] || "0");
update[`${row}uses`] = update[`${row}uses_max`];
update[`${row}description`] = (obj["description"] || "");
if(obj["name"]) { // Collecting names for getCompendium page.
compendium_spells.push({
name: obj["name"].trim(),
row: row
});
}
});
}
} else {
update["toggle_cantrips"] = "0";
toggles += "cantrips,";
}
// --- Prepared and Spontaneous Spells, level 1 to 10
if(cdata["spellcaster_prepared"] && cdata["spellcaster_prepared"].trim().toLowerCase() !== "false") {
is_spellcaster = true;
update["spellcaster_prepared"] = "prepared";
}
if(cdata["spellcaster_spontaneous"] && cdata["spellcaster_spontaneous"].trim().toLowerCase() !== "false") {
is_spellcaster = true;
update["spellcaster_spontaneous"] = "spontaneous";
}
if(cdata["data-spell"]) {
try{
obj_array = JSON.parse(cdata["data-spell"]);
}
catch(error) {
obj_array = [];
console.log(`%c Pathfinder Second Edition by Roll20: npcdrop_data: invalid spell`, "color:red;font-size:14px;");
}
if(obj_array.length) {
is_spellcaster = true;
let spellvl = 1;
obj_array.forEach((obj) => {
spellvl = parseInt((obj["spelllevel"] || "1"));
spells_array[spellvl-1]++;
row = `repeating_normalspells_${generateRowID()}_`;
// attributes
update[`${row}toggles`] = "display,";
update[`${row}name`] = (obj["name"] || getTranslationByKey("spell").toUpperCase()).trim();
update[`${row}spelllevel`] = spellvl;
update[`${row}current_level`] = spellvl;
update[`${row}spelldc`] = (obj["spelldc"] || "0");
if(obj["type"] && global_magic_traditions.includes(obj["type"].trim().toLowerCase())) {
update[`${row}magic_tradition`] = obj["type"];
} else if(obj["magic_tradition"] && global_magic_traditions.includes(obj["magic_tradition"].trim().toLowerCase())) {
update[`${row}magic_tradition`] = obj["magic_tradition"];
}
if(obj["frequency"] && global_spell_frequencies.includes(obj["frequency"].trim().toLowerCase())) {
update[`${row}frequency`] = obj["frequency"];
}
update[`${row}uses_max`] = (obj["uses_max"] || "0");
update[`${row}uses`] = update[`${row}uses_max`];
update[`${row}description`] = (obj["description"] || "");
if(obj["name"]) { // Collecting names for getCompendium page.
compendium_spells.push({
name: obj["name"].trim(),
row: row
});
}
});
}
} else {
update["toggle_normalspells"] = "0";
toggles += "normalspells,";
}
// -- Spells per level (1 to 10)
if(is_spellcaster) {
// Activating (or not) spell sections, and spells per day
for (let i = 0; i < 10; i++) {
if(cdata[`level_${i+1}_per_day_max`] && (parseInt(cdata[`level_${i+1}_per_day_max`]) || 0) > 0) {
update[`casts_level_${i+1}`] = "1";
update[`level_${i+1}_per_day`] = parseInt(cdata[`level_${i+1}_per_day_max`]);
update[`level_${i+1}_per_day_max`] = parseInt(cdata[`level_${i+1}_per_day_max`]);
} else {
update[`casts_level_${i+1}`] = (parseInt(spells_array[i]) || 0) > 0 ? "1" : "0";
update[`level_${i+1}_per_day`] = spells_array[i];
update[`level_${i+1}_per_day_max`] = spells_array[i];
}
}
}
// -- Rituals: TBC when sheet updated with rituals
// === Final calculations
if(is_spellcaster) { // make sure the spell/magic sections is visible
update["toggles"] = (values["toggles"] || "") + "npcspellcaster,";
}
update["hit_points"] = (update["hit_points_max"] || 0);
update["focus_points"] = (update["focus_points_max"] || 0);
// -- End / return
let obj_npc = {};
obj_npc["base_character"] = update;
obj_npc["compendium_spells"] = compendium_spells;
obj_npc["toggles"] = toggles;
return obj_npc;
};
const updateDefaultToken = function(callback) {
// === Token default attributes handling
getAttrs(["size","settings_bar1value","settings_bar1max","settings_bar1link","settings_bar2value","settings_bar2max","settings_bar2link","settings_bar3value","settings_bar3max","settings_bar3link"], (settings) => {
let default_attr = {};
// SIZE
default_attr["width"] = 70;
default_attr["height"] = 70;
if(settings["size"]) {
let squares = 1.0;
let squarelength = 70;
let obj_size = global_sizes.find((size_item) => size_item.size === settings["size"].toLowerCase());
if(! _.isEmpty(obj_size)) {
squares = Math.max((parseFloat(obj_size.squares) || 1.0), 1.0);
}
let squaresize = parseInt(squarelength * squares);
default_attr["width"] = squaresize;
default_attr["height"] = squaresize;
}
// === BARS
let getList = {}, keyword = "";
for(let x = 1; x < 4; x++) {
["value","max"].forEach(word => {
keyword = `settings_bar${x}${word}`;
if(settings[keyword]) {
getList[keyword] = settings[keyword];
}
});
}
let fields = [];
fields = fields.concat(_.values(getList));
getAttrs(fields, (values) => {
// Bar 1
if(settings["settings_bar1link"]) {
default_attr["bar1_link"] = settings["settings_bar1link"];
} else if(settings["settings_bar1value"] || settings["settings_bar1max"]) {
if(settings["settings_bar1value"] && values[settings["settings_bar1value"]]) {
default_attr["bar1_value"] = values[settings["settings_bar1value"]];
}
if(settings["settings_bar1max"] && values[settings["settings_bar1max"]]) {
default_attr["bar1_max"] = values[settings["settings_bar1max"]];
}
}
// Bar 2
if(settings["settings_bar2link"]) {
default_attr["bar2_link"] = settings["settings_bar2link"];
} else if(settings["settings_bar2value"] || settings["settings_bar2max"]) {
if(settings["settings_bar2value"] && values[settings["settings_bar2value"]]) {
default_attr["bar2_value"] = values[settings["settings_bar2value"]];
}
if(settings["settings_bar2max"] && values[settings["settings_bar2max"]]) {
default_attr["bar2_max"] = values[settings["settings_bar2max"]];
}
}
// Bar 3
if(settings["settings_bar3link"]) {
default_attr["bar3_link"] = settings["settings_bar3link"];
} else if(settings["settings_bar3value"] || settings["settings_bar3max"]) {
if(settings["settings_bar3value"] && values[settings["settings_bar3value"]]) {
default_attr["bar3_value"] = values[settings["settings_bar3value"]];
}
if(settings["settings_bar3max"] && values[settings["settings_bar3max"]]) {
default_attr["bar3_max"] = values[settings["settings_bar3max"]];
}
}
setDefaultToken(default_attr);
if(callback) {
callback();
}
});
});
};
// === Module Interface
return {
sheetOpen: sheetOpen
, getAttrNames: getAttrNames
, totalUpdate: totalUpdate
, updateAbility: updateAbility
, updateSkill: updateSkill
, updateSave: updateSave
, updateArmorClass: updateArmorClass
, updateHitPoints: updateHitPoints
, updateAttack: updateAttack
, updatePerception: updatePerception
, updateClassDc: updateClassDc
, updateSpellAttack: updateSpellAttack
, updateSpellDc: updateSpellDc
, updateMagicTradition: updateMagicTradition
, updateSpell: updateSpell
, updateEncumbrance: updateEncumbrance
, updateBulk: updateBulk
, updateNpcDrop: updateNpcDrop
, sortSpells: sortSpells
, updateSpellDrop: updateSpellDrop
, toTitleCase: toTitleCase
}
})();
/* === MODULE ENDS === */
/* === EVENTS HANDLING BEGINS === */
// == Generalities
// Sheet opening
on("sheet:opened", (eventinfo) => {
modPf2.sheetOpen(eventinfo);
});
//Changes sheet type
['npc', 'character'].forEach(attr => {
on(`clicked:toggle_${attr}`, (eventinfo) => {
setAttrs({
sheet_type : attr
});
});
});
// === SETTINGS TOGGLE
modPf2.getAttrNames(['setting_toggles', 'skills']).forEach(attr => {
on(`clicked:toggle_${attr}`, (eventinfo) => {
toggleStringBuilder(attr);
});
});
modPf2.getAttrNames(['spell_types', 'color_scheme']).forEach(attr => {
on(`change:toggle_${attr}`, (eventinfo) => {
toggleStringBuilder(attr);
});
});
const toggleStringBuilder = (toggle, callback) => {
getAttrs(["toggles"], (values) => {
let toggles_array = [];
// Remove duplicates from current toggles, and empty strings, undefined, nulls and other "false" elements
toggles_array = [...new Set((values[`toggles`] || "").split(","))].filter(element => {return element != null && String(element).trim().length;});
// For each toggle passed as parameter, add it if absent, or remove it if present
(toggle || "").split(",").forEach(toggle_uniq => {
if(toggles_array.includes(toggle_uniq)) {
// Alreay present: remove
toggles_array.splice(toggles_array.indexOf(toggle_uniq), 1);
} else {
// Absent: add it
toggles_array.push(toggle_uniq);
}
});
setAttrs({"toggles" : toggles_array.join()},{silent: true}, () => {
if(callback) {
callback();
}
});
});
};
on(`change:color_scheme`, (eventinfo) => {
const newColor = `color:${(eventinfo.newValue || "neutral")},`;
getAttrs(["toggles"], (values) => {
let update = {};
let toggles = (values["toggles"] || "");
let oldColor = `color:${(eventinfo.previousValue || "default")},`;
if(newColor === oldColor) {
if(newColor.includes("neutral")) {
oldColor = "color:default,";
} else {
oldColor = "color:neutral,";
}
}
if(toggles.includes("color:")) {
toggles = toggles.replace(oldColor, newColor);
} else {
toggles += newColor;
}
update["toggles"] = toggles;
setAttrs(update,{silent: true});
});
});
// === REPEATING SETTINGS TOGGLES
modPf2.getAttrNames(['repeating_toggles']).forEach(attr => {
on(`clicked:${attr}:settings clicked:${attr}:collapse`, (eventinfo) => {
const trigger = eventinfo.triggerName.split("clicked:")[1];
const id = trigger.split("_")[2];
const keyword = trigger.split("_")[3];
getAttrs([`${attr}_${id}_toggles`], (values) => {
let string = values[`${attr}_${id}_toggles`];
(string.includes(`${keyword}`)) ? string = string.replace(`${keyword},`, "") : string += `${keyword},`;
setAttrs({
[`${attr}_${id}_toggles`] : string
});
});
});
});
// === Options - settings
on("clicked:whisper", (eventinfo) => {
getAttrs(["whispertype"], function (values) {
setAttrs({
"whispertype": ((values["whispertype"] || "").includes("gm")) ? " " : "/w gm "
});
});
});
on("change:roll_option_critical_damage", () => {
modPf2.totalUpdate();
});
// === LEVEL
on("change:level", (eventinfo) => {
// console.table(eventinfo);
modPf2.totalUpdate();
});
// === ABILITIES
//Modifier calculators
modPf2.getAttrNames(['abilities']).forEach(attr => {
on(`change:${attr}_score change:${attr}_score_temporary change:${attr}_modifier_temporary`, (eventinfo) => {
// console.table(eventinfo);
modPf2.updateAbility(attr);
});
});
//Update ability inputs with the appropriate selectable modifier
modPf2.getAttrNames(['select_attributes']).forEach(attr => {
on(`change:${attr}_ability_select`, (eventinfo) => {
// console.table(eventinfo);
if((eventinfo.newValue || "").includes("modifier")) {
const ability = eventinfo.newValue.slice(2,-1);
getAttrs([ability], (values) => {
let update = {};
update[`${eventinfo.sourceAttribute.replace(/_select$/,"")}`] = values[ability];
setAttrs(update);
});
}
});
});
//Update ability selects to custom if the user inputs their own modifer
modPf2.getAttrNames(['select_attributes']).forEach(attr => {
on(`change:${attr}_ability`, (eventinfo) => {
// console.table(eventinfo);
if (eventinfo.sourceType === "player") {
getAttrs([`${eventinfo.sourceAttribute}_select`], (values) => {
if (values[`${eventinfo.sourceAttribute}_select`].includes("modifier")) {
setAttrs({
[`${eventinfo.sourceAttribute}_select`] : "custom"
},{silent: true});
} else {
console.log(`%c Ability value was ${values[`${eventinfo.sourceAttribute}_select`]}`, "color:orange;");
};
});
};
});
});
// === SKILLS
// Fixed skills
modPf2.getAttrNames(["skills"]).forEach(attr => {
on(modPf2.getAttrNames(["skills_fields"]).map(field => `change:${attr}_${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateSkill(attr,eventinfo.sourceAttribute);
}
});
});
// Repeating skills
modPf2.getAttrNames(['repeating_skills']).forEach(attr => {
on(modPf2.getAttrNames(["skills_fields"]).map(field => `change:repeating_${attr}:${attr}_${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateSkill(`repeating_${attr}_${eventinfo.sourceAttribute.split(`${attr}_`)[1]}${attr}`,eventinfo.sourceAttribute);
}
});
});
// === SAVES
modPf2.getAttrNames(["saves"]).forEach(attr => {
on(modPf2.getAttrNames(["saves_fields"]).map(field => `change:${attr}_${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateSave(attr,eventinfo.sourceAttribute);
}
});
});
// === ARMOR CLASS (AC)
modPf2.getAttrNames(["ac"]).forEach(attr => {
on(modPf2.getAttrNames(["ac_fields"]).map(field => `change:${attr}_${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateArmorClass(attr,eventinfo.sourceAttribute);
}
});
});
// === HIT POINTS
on(modPf2.getAttrNames(["hit_points"]).map(attr => `change:${attr}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
modPf2.updateHitPoints(eventinfo.sourceAttribute);
});
// === ATTACKS
modPf2.getAttrNames(["repeating_attacks"]).forEach(attr => {
on(modPf2.getAttrNames(["attacks_fields"]).map(field => `change:repeating_${attr}:${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateAttack(`repeating_${attr}_${eventinfo.sourceAttribute.split('_')[2]}`,eventinfo.sourceAttribute);
}
});
});
on("change:query_roll_damage_dice", (eventinfo) => {
modPf2.totalUpdate();
});
// === PERCEPTION
on(modPf2.getAttrNames(["perception"]).map(attr => `change:${attr}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updatePerception(eventinfo.sourceAttribute);
}
});
// === INITIATIVE
on("change:initiative_skill", (eventinfo) => {
setAttrs({"initiative": `@{${eventinfo.newValue}}[${getTranslationByKey(eventinfo.newValue).toUpperCase()}]`},{silent:true});
});
// === CLASS DC
on(modPf2.getAttrNames(["class_dc"]).map(attr => `change:${attr}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateClassDc(eventinfo.sourceAttribute);
}
});
// === SPELL ATTACK
on(modPf2.getAttrNames(["spell_attack"]).map(attr => `change:${attr}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateSpellAttack(eventinfo.sourceAttribute,() => {modPf2.totalUpdate()});
}
});
on("change:spell_attack", (eventinfo) => { // NPC only
getAttrs(["sheet_type"], (values) => {
if( (values["sheet_type"] || "").toLowerCase() === "npc" ) {
modPf2.totalUpdate();
}
});
});
// === SPELL DC
on(modPf2.getAttrNames(["spell_dc"]).map(attr => `change:${attr}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
if(!eventinfo.sourceAttribute.includes("ability_select")) {
modPf2.updateSpellDc(eventinfo.sourceAttribute,() => {modPf2.totalUpdate()});
}
});
on("change:spell_dc", (eventinfo) => { // NPC only
getAttrs(["sheet_type"], (values) => {
if( (values["sheet_type"] || "").toLowerCase() === "npc" ) {
modPf2.totalUpdate();
}
});
});
// === SPELLS: MAGIC TRADITIONS
modPf2.getAttrNames(["magic_tradition"]).forEach(tradition => {
on(modPf2.getAttrNames(["magic_tradition_fields"]).map(field => `change:magic_tradition_${tradition}_${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
modPf2.updateMagicTradition(eventinfo.sourceAttribute,tradition,() => {modPf2.totalUpdate()});
});
});
// === SPELLS: SPELLS
modPf2.getAttrNames(["repeating_spells"]).forEach(attr => {
on(modPf2.getAttrNames(["spells_fields_triggering"]).map(field => `change:repeating_${attr}:${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
modPf2.updateSpell(`repeating_${attr}_${eventinfo.sourceAttribute.split('_')[2]}_`,eventinfo.sourceAttribute);
});
});
// -- Sorting spells
modPf2.getAttrNames(["repeating_spells"]).forEach(section => {
on(`change:sort_${section}`, (eventinfo) => {
// console.table(eventinfo);
modPf2.sortSpells(section, (eventinfo["newValue"] || ""));
});
});
modPf2.getAttrNames(["repeating_spells"]).forEach(section => {
on(`change:_reporder:${section}`, (eventinfo) => {
// console.table(eventinfo);
let update = {};
update[`sort_${section}`] = ""; // resetting select to "Sort By:"
setAttrs(update,{silent:true});
});
});
// -- Drop spells
modPf2.getAttrNames(["repeating_spells"]).forEach(section => {
on(`change:${section}_spelldrop_data`, (eventinfo) => {
if(eventinfo && eventinfo.newValue && ((!eventinfo.triggerType) || (eventinfo.triggerType && eventinfo.triggerType == "compendium"))) {
modPf2.updateSpellDrop(section,eventinfo.newValue);
}
});
});
// === ENCUMBRANCE & BULK
on("change:encumbered_modifier change:maximum_modifier", (eventinfo) => {
modPf2.updateEncumbrance(eventinfo.sourceAttribute);
});
modPf2.getAttrNames(["repeating_bulks"]).forEach(attr => {
on(modPf2.getAttrNames(["bulks_fields"]).map(field => `change:repeating_items-${attr}:${attr}_${field}`).join(' '), (eventinfo) => {
// console.table(eventinfo);
modPf2.updateBulk(eventinfo.sourceAttribute);
});
on(`remove:repeating_items-${attr}`, (eventinfo) => {
// console.table(eventinfo);
modPf2.updateBulk(eventinfo.sourceAttribute);
});
});
on("change:cp change:sp change:gp change:pp", (eventinfo) => {
// console.table(eventinfo);
modPf2.updateBulk(eventinfo.sourceAttribute);
});
// === ACTIONS
// -- NPC Compendium drops
on("change:npcdrop_data", (eventinfo) => {
if(eventinfo && eventinfo.newValue && ((!eventinfo.triggerType) || (eventinfo.triggerType && eventinfo.triggerType == "compendium"))) {
modPf2.updateNpcDrop(eventinfo.newValue);
}
});
// -- Actions (PC)
on("change:repeating_actions:action change:repeating_actions:name", (eventinfo) => {
let row = eventinfo.sourceAttribute.substr(0,39);
getAttrs([`${row}action`], (values) => {
let update = {};
update[`${row}action_type`] = modPf2.toTitleCase(getTranslationByKey((values[`${row}action`] || "other")));
setAttrs(update,{silent: true});
});
});
// === Automatic and Reactive abilities (NPC)
on("change:repeating_free-actions-reactions:free_action change:repeating_free-actions-reactions:reaction", (eventinfo) => {
let row = eventinfo.sourceAttribute.substr(0,54);
getAttrs([`${row}free_action`,`${row}reaction`], (values) => {
let update = {};
update[`${row}action_type`] = (`${(values[`${row}free_action`] || "0") == "0" ? "" : modPf2.toTitleCase(getTranslationByKey("free_action"))} `
+ `${(values[`${row}reaction`] || "0") == "0" ? "" : modPf2.toTitleCase(getTranslationByKey("reaction"))} `).trim();
setAttrs(update,{silent: true});
})
});
/* === EVENTS HANDLING ENDS === */
//# sourceURL=Pathfinder2ByRoll20.js
</script>