Files
2024-06-03 13:15:14 -04:00

6334 lines
342 KiB
HTML
Raw Permalink 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.
<datalist id="classlist">
<option data-i18n="Adept">Adept</option>
<option data-i18n="Bard">Bard</option>
<option data-i18n="Berserker">Berserker</option>
<option data-i18n="Cleric">Cleric</option>
<option data-i18n="Druid">Druid</option>
<option data-i18n="Fighter">Fighter</option>
<option data-i18n="Herald">Herald</option>
<option data-i18n="Marshal">Marshal</option>
<option data-i18n="Ranger">Ranger</option>
<option data-i18n="Rogue">Rogue</option>
<option data-i18n="Sorcerer">Sorcerer</option>
<option data-i18n="Warlock">Warlock</option>
<option data-i18n="Wizard">Wizard</option>
</datalist>
<datalist id="heritagelist">
<option data-i18n="Dragonborn">Dragonborn</option>
<option data-i18n="Dwarf">Dwarf</option>
<option data-i18n="Elf">Elf</option>
<option data-i18n="Gnome">Gnome</option>
<option data-i18n="Halfling">Halfling</option>
<option data-i18n="Human">Human</option>
<option data-i18n="Mixed Heritage">Mixed Heritage</option>
<option data-i18n="Orc">Orc</option>
<option data-i18n="Planetouched">Planetouched</option>
</datalist>
<datalist id="culturelist">
<option data-i18n="Caravanner">Caravanner</option>
<option data-i18n="Circusfolk">Circusfolk</option>
<option data-i18n="Collegiate">Collegiate</option>
<option data-i18n="Cosmopolitan">Cosmopolitan</option>
<option data-i18n="Deep Dwarf">Deep Dwarf</option>
<option data-i18n="Deep Gnome">Deep Gnome</option>
<option data-i18n="Dragoncult">Dragoncult</option>
<option data-i18n="Dragonbound">Dragonbound</option>
<option data-i18n="Eladrin">Eladrin</option>
<option data-i18n="Forest Gnome">Forest Gnome</option>
<option data-i18n="Forgotten Folx">Forgotten Folx</option>
<option data-i18n="Forsaken">Forsaken</option>
<option data-i18n="Godbound">Godbound</option>
<option data-i18n="Imperial">Imperial</option>
<option data-i18n="High Elf">High Elf</option>
<option data-i18n="Hill Dwarf">Hill Dwarf</option>
<option data-i18n="Kithbáin Halfling">Kithbáin Halfling</option>
<option data-i18n="Lone Wanderer">Lone Wanderer</option>
<option data-i18n="Mountain Dwarf">Mountain Dwarf</option>
<option data-i18n="Mustbairn Halfling">Mustbairn Halfling</option>
<option data-i18n="Nomad">Nomad</option>
<option data-i18n="Settler">Settler</option>
<option data-i18n="Shadow Elf">Shadow Elf</option>
<option data-i18n="Steamforged">Steamforged</option>
<option data-i18n="Stoic Orc">Stoic Orc</option>
<option data-i18n="Stout Halfling">Stout Halfling</option>
<option data-i18n="Stoneworthy">Stoneworthy</option>
<option data-i18n="Tinker Gnome">Tinker Gnome</option>
<option data-i18n="Tunnel Halfling">Tunnel Halfling</option>
<option data-i18n="Tyrannized">Tyrannized</option>
<option data-i18n="Villager">Villager</option>
<option data-i18n="Warhordling">Warhordling</option>
<option data-i18n="Wildling">Wildling</option>
<option data-i18n="Wood Elf">Wood Elf</option>
</datalist>
<datalist id="backgroundlist">
<option data-i18n="Acolyte">Acolyte</option>
<option data-i18n="Artisan">Artisan</option>
<option data-i18n="Charlatan">Charlatan</option>
<option data-i18n="Criminal">Criminal</option>
<option data-i18n="Cultist">Cultist</option>
<option data-i18n="Entertainer">Entertainer</option>
<option data-i18n="Exile">Exile</option>
<option data-i18n="Farmer">Farmer</option>
<option data-i18n="Folk Hero">Folk Hero</option>
<option data-i18n="Gambler">Gambler</option>
<option data-i18n="Guard">Guard</option>
<option data-i18n="Guildmember">Guildmember</option>
<option data-i18n="Hermit">Hermit</option>
<option data-i18n="Marauder">Marauder</option>
<option data-i18n="Noble">Noble</option>
<option data-i18n="Outlander">Outlander</option>
<option data-i18n="Sage">Sage</option>
<option data-i18n="Sailor">Sailor</option>
<option data-i18n="Soldier">Soldier</option>
<option data-i18n="Trader">Trader</option>
<option data-i18n="Urchin">Urchin</option>
</datalist>
<datalist id="archtypelist">
<option data-i18n="Brawler">Brawler</option>
<option data-i18n="Exalted Athlete">Exalted Athlete</option>
<option data-i18n="Warrior Monk">Warrior Monk</option>
<option data-i18n="Dreadnought">Dreadnought</option>
<option data-i18n="Rager">Rager</option>
<option data-i18n="Tempest">Tempest</option>
<option data-i18n="Healer">Healer</option>
<option data-i18n="Oracle">Oracle</option>
<option data-i18n="Sun Priest">Sun Priest</option>
<option data-i18n="Warpriest">Warpriest</option>
<option data-i18n="Loremaster">Loremaster</option>
<option data-i18n="Minstrel">Minstrel</option>
<option data-i18n="Mountebank">Mountebank</option>
<option data-i18n="Warchanter">Warchanter</option>
<option data-i18n="Guardian">Guardian</option>
<option data-i18n="Skinchanger">Skinchanger</option>
<option data-i18n="Treespeaker">Treespeaker</option>
<option data-i18n="Brute">Brute</option>
<option data-i18n="Gladiator">Gladiator</option>
<option data-i18n="Knight">Knight</option>
<option data-i18n="Sharpshooter">Sharpshooter</option>
<option data-i18n="Green Knight">Green Knight</option>
<option data-i18n="Holy Champion">Holy Champion</option>
<option data-i18n="Inquisitor">Inquisitor</option>
<option data-i18n="Gambling General">Gambling General</option>
<option data-i18n="Swift Strategist">Swift Strategist</option>
<option data-i18n="Talented Tachician">Talented Tachician</option>
<option data-i18n="Beastmaster">Beastmaster</option>
<option data-i18n="Warden">Warden</option>
<option data-i18n="Wildborn">Wildborn</option>
<option data-i18n="Burglar">Burglar</option>
<option data-i18n="Cutthroat">Cutthroat</option>
<option data-i18n="Investigator">Investigator</option>
<option data-i18n="Trapsmith">Trapsmith</option>
<option data-i18n="Draconist">Draconist</option>
<option data-i18n="Enigma">Enigma</option>
<option data-i18n="Traveller">Traveller</option>
<option data-i18n="Alienist">Alienist</option>
<option data-i18n="Diabolist">Diabolist</option>
<option data-i18n="Spellbound">Spellbound</option>
<option data-i18n="Arcanist">Arcanist</option>
<option data-i18n="Mage">Mage</option>
<option data-i18n="Pyromancer">Pyromancer</option>
</datalist>
<datalist id="adeptlist">
<option data-i18n="Brawler">Brawler</option>
<option data-i18n="Exalted Athlete">Exalted Athlete</option>
<option data-i18n="Warrior Monk">Warrior Monk</option>
</datalist>
<datalist id="bardlist">
<option data-i18n="Loremaster">Loremaster</option>
<option data-i18n="Minstrel">Minstrel</option>
<option data-i18n="Mountebank">Mountebank</option>
<option data-i18n="Warchanter">Warchanter</option>
</datalist>
<datalist id="berserkerlist">
<option data-i18n="Dreadnought">Dreadnought</option>
<option data-i18n="Rager">Rager</option>
<option data-i18n="Tempest">Tempest</option>
</datalist>
<datalist id="clericlist">
<option data-i18n="Healer">Healer</option>
<option data-i18n="Oracle">Oracle</option>
<option data-i18n="Sun Priest">Sun Priest</option>
<option data-i18n="Warpriest">Warpriest</option>
</datalist>
<datalist id="druidlist">
<option data-i18n="Guardian">Guardian</option>
<option data-i18n="Skinchanger">Skinchanger</option>
<option data-i18n="Treespeaker">Treespeaker</option>
</datalist>
<datalist id="fighterlist">
<option data-i18n="Brute">Brute</option>
<option data-i18n="Gladiator">Gladiator</option>
<option data-i18n="Knight">Knight</option>
<option data-i18n="Sharpshooter">Sharpshooter</option>
</datalist>
<datalist id="heraldlist">
<option data-i18n="Green Knight">Green Knight</option>
<option data-i18n="Holy Champion">Holy Champion</option>
<option data-i18n="Inquisitor">Inquisitor</option>
</datalist>
<datalist id="marshallist">
<option data-i18n="Gambling General">Gambling General</option>
<option data-i18n="Swift Strategist">Swift Strategist</option>
<option data-i18n="Talented Tachician">Talented Tachician</option>
</datalist>
<datalist id="rangerlist">
<option data-i18n="Beastmaster">Beastmaster</option>
<option data-i18n="Warden">Warden</option>
<option data-i18n="Wildborn">Wildborn</option>
</datalist>
<datalist id="roguelist">
<option data-i18n="Burglar">Burglar</option>
<option data-i18n="Cutthroat">Cutthroat</option>
<option data-i18n="Investigator">Investigator</option>
<option data-i18n="Trapsmith">Trapsmith</option>
</datalist>
<datalist id="sorcererlist">
<option data-i18n="Draconist">Draconist</option>
<option data-i18n="Enigma">Enigma</option>
<option data-i18n="Traveller">Traveller</option>
</datalist>
<datalist id="warlocklist">
<option data-i18n="Alienist">Alienist</option>
<option data-i18n="Diabolist">Diabolist</option>
<option data-i18n="Spellbound">Spellbound</option>
</datalist>
<datalist id="wizardlist">
<option data-i18n="Arcanist">Arcanist</option>
<option data-i18n="Mage">Mage</option>
<option data-i18n="Pyromancer">Pyromancer</option>
</datalist>
<datalist id="dicelist">
<option>1d4</option>
<option>1d6</option>
<option>1d8</option>
<option>1d10</option>
<option>1d12</option>
</datalist>
<datalist id="statlist">
<option data-i18n="strength">strength</option>
<option data-i18n="dexterity">dexterity</option>
<option data-i18n="constitution">constitution</option>
<option data-i18n="intelligence">intelligence</option>
<option data-i18n="wisdom">wisdom</option>
<option data-i18n="charisma">charisma</option>
</datalist>
<datalist id="destinylist">
<option data-i18n="chaos">chaos</option>
<option data-i18n="comingofage">comingofage</option>
<option data-i18n="devotion">devotion</option>
<option data-i18n="dominion">dominion</option>
<option data-i18n="excellence">excellence</option>
<option data-i18n="knowledge">knowledge</option>
<option data-i18n="metamorphosis">metamorphosis</option>
<option data-i18n="revenge">revenge</option>
<option data-i18n="underdog">underdog</option>
<option data-i18n="wealth">wealth</option>
</datalist>
<datalist id="damagetypelist">
<option data-i18n="acid">acid</option>
<option data-i18n="bludgeoning">bludgeoning</option>
<option data-i18n="cold">cold</option>
<option data-i18n="fire">fire</option>
<option data-i18n="force">force</option>
<option data-i18n="lightning">lightning</option>
<option data-i18n="necrotic">necrotic</option>
<option data-i18n="piercing">piercing</option>
<option data-i18n="poison">poison</option>
<option data-i18n="psychic">psychic</option>
<option data-i18n="radiant">radiant</option>
<option data-i18n="slashing">slashing</option>
<option data-i18n="thunder">thunder</option>
</datalist>
<datalist id="sizelist">
<option data-i18n="fine">fine</option>
<option data-i18n="diminutive">diminutive</option>
<option data-i18n="tiny">tiny</option>
<option data-i18n="small">small</option>
<option data-i18n="medium">medium</option>
<option data-i18n="large">large</option>
<option data-i18n="huge">huge</option>
<option data-i18n="garantuan">garantuan</option>
<option data-i18n="colossal">colossal</option>
</datalist>
<datalist id="creaturetypelist">
<option data-i18n="aberration">aberration</option>
<option data-i18n="beast">beast</option>
<option data-i18n="celestial">celestial</option>
<option data-i18n="construct">construct</option>
<option data-i18n="dragon">dragon</option>
<option data-i18n="elemental">elemental</option>
<option data-i18n="fey">fey</option>
<option data-i18n="fiend">fiend</option>
<option data-i18n="giant">giant</option>
<option data-i18n="humanoid">humanoid</option>
<option data-i18n="monstrosity">monstrosity</option>
<option data-i18n="ooze">ooze</option>
<option data-i18n="plant">plant</option>
<option data-i18n="undead">undead</option>
<option data-i18n="vermin">vermin</option>
</datalist>
<input type="hidden" class="sheet-npctoggle" name="attr_pcnpcTab" value="pc"/>
<input type="hidden" class="sheet-statsinfotoggle" name="attr_statsinfoTab" value="stats"/>
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="Character"/>
<input type="hidden" name="attr_perception_init"/>
<input type="hidden" name="attr_athletics_init"/>
<input type="hidden" name="attr_deception_init"/>
<input type="hidden" name="attr_insight_init"/>
<input type="hidden" name="attr_vehicle_init"/>
<input type="hidden" name="attr_dexterity_init"/>
<input type="hidden" name="attr_migratev5" value="no"/>
<div class="sheet-pcnpc">
<label data-i18n-title="pc" title="pc">
<input name="attr_pcnpc_type" type="radio" value="pc"><span data-i18n="pc"></span></input>
</label>
<label data-i18n-title="npc" title="npc">
<input name="attr_pcnpc_type" type="radio" value="npc"><span data-i18n="npc"></span></input>
</label>
<label data-i18n-title="npc1" title="npc1">
</label>
<label data-i18n-title="gm" title="gm">
<input name="attr_rollgmnormal" type="radio" value="gm"><span data-i18n="gm"></span></input>
</label>
<label data-i18n-title="normal" title="normal">
<input name="attr_rollgmnormal" type="radio" value="normal"><span data-i18n="normal"></span></input>
</label>
<label data-i18n-title="normal1" title="normal1">
</label>
<label data-i18n-title="standard" title="standard">
<input name="attr_rolladvdis" type="radio" value="sta"><span data-i18n="standard"></span></input>
</label>
<label data-i18n-title="advantage" title="advantage">
<input name="attr_rolladvdis" type="radio" value="adv"><span data-i18n="advantage"></span></input>
</label>
<label data-i18n-title="disadvantage" title="disadvantage">
<input name="attr_rolladvdis" type="radio" value="dis"><span data-i18n="disadvantage"></span></input>
</label>
</div>
<div class='sheet-PC'>
<div class='sheet-header'>
<div class="sheet-character-name">
<img alt='LevelUp Logo' src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Level%20Up%20-%20Advanced%205th%20Edition/levelup-logo.jpg">
<label data-i18n-title="character_name" title="character name">
<input data-i18n-placeholder="character_name" name="attr_character_name" placeholder="character name" spellcheck="false" title="@{character_name}" type="text" value="" />
<span data-i18n="character_name">character name</span>
</label>
</div>
<div class="sheet-character-info">
<label data-i18n-title="classlevelarchtype" title="classlevelarchtype">
<span data-i18n="classlevelarchtype">Class, Level & Archtype</span>
<input type="hidden" name="attr_totallevel"/>
<div class="sheet-classlist">
<fieldset class="repeating_class">
<label data-i18n-title="repeatingclass" title="repeatingclass">
<input data-i18n-placeholder="class" name="attr_class" placeholder="class" spellcheck="false" title="@{class}" type="text" list="classlist"/>
<div class="archetypeslist">
<input type="hidden" class="sheet-archetypetoggle" name="attr_class" value="fighter" />
<div class="sheet-archtypefull">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="archtypelist"/>
</div>
<div class="sheet-adept">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="adeptlist"/>
</div>
<div class="sheet-bard">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="bardlist"/>
</div>
<div class="sheet-berserker">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="berserkerlist"/>
</div>
<div class="sheet-cleric">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="clericlist"/>
</div>
<div class="sheet-druid">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="druidlist"/>
</div>
<div class="sheet-fighter">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="fighterlist"/>
</div>
<div class="sheet-herald">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="heraldlist"/>
</div>
<div class="sheet-ranger">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="rangerlist"/>
</div>
<div class="sheet-rogue">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="roguelist"/>
</div>
<div class="sheet-sorcerer">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="sorcererlist"/>
</div>
<div class="sheet-warlock">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="warlocklist"/>
</div>
<div class="sheet-wizard">
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="wizardlist"/>
</div>
</div>
<input data-i18n-placeholder="level" name="attr_level" placeholder="level" spellcheck="false" title="@{level}" type="number"/>
</label>
</fieldset>
</div>
</label>
<label data-i18n-title="experience_points_xp" title="experienced points">
<span data-i18n="experience_points_xp">experienced points</span>
<input data-i18n-placeholder="xp" name="attr_xp" placeholder="xp" spellcheck="false" title="@{xp}" type="text" value="" />
</label>
<label data-i18n-title="heritage" title="heritage">
<span data-i18n="heritage">Heritage</span>
<input data-i18n-placeholder="heritage" name="attr_heritage" placeholder="heritage" spellcheck="false" title="@{heritage}" type="text" list="heritagelist"//>
</label>
<label data-i18n-title="culture" title="culture">
<span data-i18n="culture">culture</span>
<input data-i18n-placeholder="culture" name="attr_culture" placeholder="culture" spellcheck="false" title="@{culture}" type="text" list="culturelist"/>
</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" list="backgroundlist"/>
</label>
</div>
</div>
<div class="sheet-tabs">
<label data-i18n-title="character" title="character">
<input name="attr_sheet_type" type="radio" value="character"><span data-i18n="character"></span></input>
</label>
<label data-i18n-title="features" title="features">
<input name="attr_sheet_type" type="radio" value="features"><span data-i18n="features"></span></input>
</label>
<label data-i18n-title="backgrounds" title="backgrounds">
<input name="attr_sheet_type" type="radio" value="backgrounds"><span data-i18n="backgrounds"></span></input>
</label>
<label data-i18n-title="inventory" title="inventory">
<input name="attr_sheet_type" type="radio" value="inventory"><span data-i18n="inventory"></span></input>
</label>
<label data-i18n-title="spells" title="spells">
<input name="attr_sheet_type" type="radio" value="spells"><span data-i18n="spells"></span></input>
</label>
<label data-i18n-title="notes" title="notes">
<input name="attr_sheet_type" type="radio" value="notes"><span data-i18n="notes"></span></input>
</label>
</div>
<div class="sheet-character">
<div class="sheet-charactermiddle">
<div class="sheet-abilityscores">
<div class="sheet-abilityscore-title" data-i18n='ability_scores'>ability scores</div>
<div class='sheet-display-strength'>
<label data-i18n-title="strength" title="strength">
<span data-i18n="strength">strength</span>
</label>
<label data-i18n-title="strengthstat" title="strengthstat">
<input data-i18n-placeholder="strength" name="attr_strength" placeholder="strength" spellcheck="false" title="@{strength}" type="number" value="" />
</label>
<label data-i18n-title="strength_mod" title="strength_mod">
<input data-i18n-placeholder="strength_mod" name="attr_strength_mod" placeholder="0" spellcheck="false" title="@{strength_mod}" type="number"/>
</label>
<label data-i18n-title="strengthroll" title="strengthroll">
<button type="roll" name="act_strength_roll" value="@{strength-action}"></button>
<button type="action" name="act_strength-button" class="hidden"></button>
<input type="hidden" name="attr_strength-action" value="">
</label>
<label data-i18n-title="strength_save_roll" title="strength_save_roll">
<button type="roll" name="act_strength_save_roll" value="@{strengthsave-action}"></button>
<button type="action" name="act_strengthsave-button" class="hidden"></button>
<input type="hidden" name="attr_strengthsave-action" value="">
</label>
<label data-i18n-title="strength_save_mod" title="strength_save_mod">
<span data-i18n="save">save</span>
<input data-i18n-placeholder="strength_save_mod" name="attr_strength_save_mod" placeholder="0" spellcheck="false" title="@{strength_save_mod}" type="number"/>
</label>
<label data-i18n-title="strength_save_prof" title="strength_save_prof">
<a href="#popupStrength"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupStrength" class="overlay">
<div class="popup">
<h3>Strength Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="strength_save_prof" name="attr_strength_save_prof" title="@{strength_save_prof}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="strength_save_bonus">Strength Save Bonus</span><br>
<input data-i18n-placeholder="strength_save_bonus" name="attr_strength_save_bonus" placeholder="strength_save_bonus" spellcheck="false" title="@{strength_save_bonus}" type="number" value="0"/><br>
<span data-i18n="global_save_bonus">Global Save Bonus</span><br>
<input data-i18n-placeholder="globalsavebonus" name="attr_globalsavebonus" placeholder="globalsavebonus" spellcheck="false" title="@{globalsavebonus}" type="number" value="0" /><br>
</div>
</div>
</div>
</div>
<div class='sheet-display-dexterity'>
<label data-i18n-title="dexterity" title="dexterity">
<span data-i18n="dexterity">dexterity</span>
</label>
<label data-i18n-title="dexteritystat" title="dexteritystat">
<input data-i18n-placeholder="dexterity" name="attr_dexterity" placeholder="dexterity" spellcheck="false" title="@{dexterity}" type="number" value="" />
</label>
<label data-i18n-title="dexterity_mod" title="dexterity_mod">
<input data-i18n-placeholder="dexterity_mod" name="attr_dexterity_mod" placeholder="0" spellcheck="false" title="@{dexterity_mod}" type="number"/>
</label>
<label data-i18n-title="dexterityroll" title="dexterityroll">
<button type="roll" name="act_dexterity_roll" value="@{dexterity-action}"></button>
<button type="action" name="act_dexterity-button" class="hidden"></button>
<input type="hidden" name="attr_dexterity-action" value="">
</label>
<label data-i18n-title="dexterity_save_roll" title="dexterity_save_roll">
<button type="roll" name="act_dexterity_save_roll" value="@{dexteritysave-action}"></button>
<button type="action" name="act_dexteritysave-button" class="hidden"></button>
<input type="hidden" name="attr_dexteritysave-action" value="">
</label>
<label data-i18n-title="dexterity_save_mod" title="dexterity_save_mod">
<span data-i18n="save">save</span>
<input data-i18n-placeholder="dexterity_save_mod" name="attr_dexterity_save_mod" placeholder="0" spellcheck="false" title="@{dexterity_save_mod}" type="number"/>
</label>
<label data-i18n-title="dexterity_save_prof" title="dexterity_save_prof">
<a href="#popupdexterity"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupdexterity" class="overlay">
<div class="popup">
<h3>Dexterity Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="dexterity_save_prof" name="attr_dexterity_save_prof" title="@{dexterity_save_prof}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="dexterity_save_bonus">Dexterity Save Bonus</span><br>
<input data-i18n-placeholder="dexterity_save_bonus" name="attr_dexterity_save_bonus" placeholder="dexterity_save_bonus" spellcheck="false" title="@{dexterity_save_bonus}" type="number" value="0"/><br>
<span data-i18n="global_save_bonus">Global Save Bonus</span><br>
<input data-i18n-placeholder="globalsavebonus" name="attr_globalsavebonus" placeholder="globalsavebonus" spellcheck="false" title="@{globalsavebonus}" type="number" value="0" /><br>
</div>
</div>
</div>
</div>
<div class='sheet-display-constitution'>
<label data-i18n-title="constitution" title="constitution">
<span data-i18n="constitution">constitution</span>
</label>
<label data-i18n-title="constitutionstat" title="constitutionstat">
<input data-i18n-placeholder="constitution" name="attr_constitution" placeholder="constitution" spellcheck="false" title="@{constitution}" type="number" value="" />
</label>
<label data-i18n-title="constitution_mod" title="constitution_mod">
<input data-i18n-placeholder="constitution_mod" name="attr_constitution_mod" placeholder="0" spellcheck="false" title="@{constitution_mod}" type="number"/>
</label>
<label data-i18n-title="constitutionroll" title="constitutionroll">
<button type="roll" name="act_constitution_roll" value="@{constitution-action}"></button>
<button type="action" name="act_constitution-button" class="hidden"></button>
<input type="hidden" name="attr_constitution-action" value="">
</label>
<label data-i18n-title="constitution_save_roll" title="constitution_save_roll">
<button type="roll" name="act_constitution_save_roll" value="@{constitutionsave-action}"></button>
<button type="action" name="act_constitutionsave-button" class="hidden"></button>
<input type="hidden" name="attr_constitutionsave-action" value="">
</label>
<label data-i18n-title="constitution_save_mod" title="constitution_save_mod">
<span data-i18n="save">&nbsp;save</span>
<input data-i18n-placeholder="constitution_save_mod" name="attr_constitution_save_mod" placeholder="0" spellcheck="false" title="@{constitution_save_mod}" type="number"/>
</label>
<label data-i18n-title="constitution_save_prof" title="constitution_save_prof">
<a href="#popupconstitution"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupconstitution" class="overlay">
<div class="popup">
<h3>Constitution Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="constitution_save_prof" name="attr_constitution_save_prof" title="@{constitution_save_prof}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="constitution_save_bonus">Constitution Save Bonus</span><br>
<input data-i18n-placeholder="constitution_save_bonus" name="attr_constitution_save_bonus" placeholder="constitution_save_bonus" spellcheck="false" title="@{constitution_save_bonus}" type="number" value="0"/><br>
<span data-i18n="global_save_bonus">Global Save Bonus</span><br>
<input data-i18n-placeholder="globalsavebonus" name="attr_globalsavebonus" placeholder="globalsavebonus" spellcheck="false" title="@{globalsavebonus}" type="number" value="0" /><br>
</div>
</div>
</div>
</div>
<div class='sheet-display-intelligence'>
<label data-i18n-title="intelligence" title="intelligence">
<span data-i18n="intelligence">intelligence</span>
</label>
<label data-i18n-title="intelligencestat" title="intelligencestat">
<input data-i18n-placeholder="intelligence" name="attr_intelligence" placeholder="intelligence" spellcheck="false" title="@{intelligence}" type="number" value="" />
</label>
<label data-i18n-title="intelligence_mod" title="intelligence_mod">
<input data-i18n-placeholder="intelligence_mod" name="attr_intelligence_mod" placeholder="0" spellcheck="false" title="@{intelligence_mod}" type="number"/>
</label>
<label data-i18n-title="intelligenceroll" title="intelligenceroll">
<button type="roll" name="act_intelligence_roll" value="@{intelligence-action}"></button>
<button type="action" name="act_intelligence-button" class="hidden"></button>
<input type="hidden" name="attr_intelligence-action" value="">
</label>
<label data-i18n-title="intelligence_save_roll" title="intelligence_save_roll">
<button type="roll" name="act_intelligence_save_roll" value="@{intelligencesave-action}"></button>
<button type="action" name="act_intelligencesave-button" class="hidden"></button>
<input type="hidden" name="attr_intelligencesave-action" value="">
</label>
<label data-i18n-title="intelligence_save_mod" title="intelligence_save_mod">
<span data-i18n="save">&nbsp;save</span>
<input data-i18n-placeholder="intelligence_save_mod" name="attr_intelligence_save_mod" placeholder="0" spellcheck="false" title="@{intelligence_save_mod}" type="number"/>
</label>
<label data-i18n-title="intelligence_save_prof" title="intelligence_save_prof">
<a href="#popupintelligence"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupintelligence" class="overlay">
<div class="popup">
<h3>Intelligence Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="intelligence_save_prof" name="attr_intelligence_save_prof" title="@{intelligence_save_prof}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="intelligence_save_bonus">Intelligence Save Bonus</span><br>
<input data-i18n-placeholder="intelligence_save_bonus" name="attr_intelligence_save_bonus" placeholder="intelligence_save_bonus" spellcheck="false" title="@{intelligence_save_bonus}" type="number" value="0"/><br>
<span data-i18n="global_save_bonus">Global Save Bonus</span><br>
<input data-i18n-placeholder="globalsavebonus" name="attr_globalsavebonus" placeholder="globalsavebonus" spellcheck="false" title="@{globalsavebonus}" type="number" value="0" /><br>
</div>
</div>
</div>
</div>
<div class='sheet-display-wisdom'>
<label data-i18n-title="wisdom" title="wisdom">
<span data-i18n="wisdom">wisdom</span>
</label>
<label data-i18n-title="wisdomstat" title="wisdomstat">
<input data-i18n-placeholder="wisdom" name="attr_wisdom" placeholder="wisdom" spellcheck="false" title="@{wisdom}" type="number" value="" />
</label>
<label data-i18n-title="wisdom_mod" title="wisdom_mod">
<input data-i18n-placeholder="wisdom_mod" name="attr_wisdom_mod" placeholder="0" spellcheck="false" title="@{wisdom_mod}" type="number"/>
</label>
<label data-i18n-title="wisdomroll" title="wisdomroll">
<button type="roll" name="act_wisdom_roll" value="@{wisdom-action}"></button>
<button type="action" name="act_wisdom-button" class="hidden"></button>
<input type="hidden" name="attr_wisdom-action" value="">
</label>
<label data-i18n-title="wisdom_save_roll" title="wisdom_save_roll">
<button type="roll" name="act_wisdom_save_roll" value="@{wisdomsave-action}"></button>
<button type="action" name="act_wisdomsave-button" class="hidden"></button>
<input type="hidden" name="attr_wisdomsave-action" value="">
</label>
<label data-i18n-title="wisdom_save_mod" title="wisdom_save_mod">
<span data-i18n="save">&nbsp;save</span>
<input data-i18n-placeholder="wisdom_save_mod" name="attr_wisdom_save_mod" placeholder="0" spellcheck="false" title="@{wisdom_save_mod}" type="number"/>
</label>
<label data-i18n-title="wisdom_save_prof" title="wisdom_save_prof">
<a href="#popupwisdom"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupwisdom" class="overlay">
<div class="popup">
<h3>Wisdom Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="wisdom_save_prof" name="attr_wisdom_save_prof" title="@{wisdom_save_prof}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="wisdom_save_bonus">Wisdom Save Bonus</span><br>
<input data-i18n-placeholder="wisdom_save_bonus" name="attr_wisdom_save_bonus" placeholder="wisdom_save_bonus" spellcheck="false" title="@{wisdom_save_bonus}" type="number" value="0"/><br>
<span data-i18n="global_save_bonus">Global Save Bonus</span><br>
<input data-i18n-placeholder="globalsavebonus" name="attr_globalsavebonus" placeholder="globalsavebonus" spellcheck="false" title="@{globalsavebonus}" type="number" value="0" /><br>
</div>
</div>
</div>
</div>
<div class='sheet-display-charisma'>
<label data-i18n-title="charisma" title="charisma">
<span data-i18n="charisma">charisma</span>
</label>
<label data-i18n-title="charismastat" title="charismastat">
<input data-i18n-placeholder="charisma" name="attr_charisma" placeholder="charisma" spellcheck="false" title="@{charisma}" type="number" value="" />
</label>
<label data-i18n-title="charisma_mod" title="charisma_mod">
<input data-i18n-placeholder="charisma_mod" name="attr_charisma_mod" placeholder="0" spellcheck="false" title="@{charisma_mod}" type="number"/>
</label>
<label data-i18n-title="charismaroll" title="charismaroll">
<button type="roll" name="act_charisma_roll" value="@{charisma-action}"></button>
<button type="action" name="act_charisma-button" class="hidden"></button>
<input type="hidden" name="attr_charisma-action" value="">
</label>
<label data-i18n-title="charisma_save_roll" title="charisma_save_roll">
<button type="roll" name="act_charisma_save_roll" value="@{charismasave-action}"></button>
<button type="action" name="act_charismasave-button" class="hidden"></button>
<input type="hidden" name="attr_charismasave-action" value="">
</label>
<label data-i18n-title="charisma_save_mod" title="charisma_save_mod">
<span data-i18n="save">&nbsp;save</span>
<input data-i18n-placeholder="charisma_save_mod" name="attr_charisma_save_mod" placeholder="0" spellcheck="false" title="@{charisma_save_mod}" type="number"/>
</label>
<label data-i18n-title="charisma_save_prof" title="charisma_save_prof">
<a href="#popupcharisma"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupcharisma" class="overlay">
<div class="popup">
<h3>Charisma Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="charisma_save_prof" name="attr_charisma_save_prof" title="@{charisma_save_prof}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="charisma_save_bonus">Charisma Save Bonus</span><br>
<input data-i18n-placeholder="charisma_save_bonus" name="attr_charisma_save_bonus" placeholder="charisma_save_bonus" spellcheck="false" title="@{charisma_save_bonus}" type="number" value="0"/><br>
<span data-i18n="global_save_bonus">Global Save Bonus</span><br>
<input data-i18n-placeholder="globalsavebonus" name="attr_globalsavebonus" placeholder="globalsavebonus" spellcheck="false" title="@{globalsavebonus}" type="number" value="0" /><br>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-miscscores">
<div class='sheet-display-profbonus'>
<label data-i18n-title="proficiencybonusstat" title="proficiencybonusstat">
<input data-i18n-placeholder="proficiencybonusstat" name="attr_PB" placeholder="proficiencybonus" spellcheck="false" title="@{proficiencybonus}" type="number" value="" />
</label>
<label data-i18n-title="proficiencybonus" title="proficiencybonus">
<span data-i18n="proficiencybonus">proficiencybonus</span>
</label>
</div>
<div class='sheet-display-initiative'>
<label data-i18n-title="initiative" title="initiative">
<span data-i18n="initiative">initiative</span>
<input data-i18n-placeholder="initiativebonus" name="attr_initiativebonus" placeholder="initiativebonus" spellcheck="false" title="@{initiativebonus}" type="number" value="" />
</label>
<label data-i18n-title="initiative" title="initiative">
<span data-i18n="initiative">bonus</span>
<input data-i18n-placeholder="initiativebonus" name="attr_initiativebonus" placeholder="initiativebonus" spellcheck="false" title="@{initiativebonus}" type="number" value="" />
</label>
<label data-i18n-title="initiativeroll" title="initiativeroll">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_initiative" value="@{initiative-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_initiative-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_initiative-action" value="">
</label>
<label data-i18n-title="initiative2nd" title="initiative2nd">
<select data-i18n-placeholder="Ability_skill" name="attr_initiativetype" placeholder="Ability_skill" spellcheck="false" title="@{initiativetype}" value="">
<option value="1">Wisdom (Perception)</option>
<option value="2">Strength (Athletics)</option>
<option value="3">Charisma (Deception)</option>
<option value="4">Wisdom (Insight)</option>
<option value="5">Dexterity (Vehicles)</option>
<option value="6">Dexterity (Base)</option>
</select>
</label>
</div>
<div class='sheet-display-acsizespeed'>
<div class='sheet-display-armour_class'>
<label data-i18n-title="armour_classstat" title="armour_classstat">
<input data-i18n-placeholder="armour_class" name="attr_AC" placeholder="armour_class" spellcheck="false" title="@{armour_class}" type="number" value="" />
</label>
<label data-i18n-title="armour_class" title="armour_class">
<span data-i18n="armour_class">armour_class</span>
</label>
</div>
<div class='sheet-display-sizespeed'>
<div class='sheet-display-size'>
<label data-i18n-title="size" title="size">
<span data-i18n="size">size</span>
</label>
<label data-i18n-title="sizestat" title="sizestat">
<input data-i18n-placeholder="size" name="attr_size" placeholder="size" spellcheck="false" title="@{size}" type="text" value="" list="sizelist"/>
</label>
</div>
<div class='sheet-display-speed'>
<label data-i18n-title="speed" title="speed">
<span data-i18n="speed">speed</span>
</label>
<label data-i18n-title="speedstat" title="speedstat">
<input data-i18n-placeholder="speed" name="attr_speed" placeholder="speed" spellcheck="false" title="@{speed}" type="text" value="" />
</label>
</div>
</div>
</div>
<div class='sheet-display-hpsupply'>
<div class='sheet-display-hp'>
<label data-i18n-title="hit_points_current" title="hit_points_current">
<span data-i18n="hit_points_current">hit_points_current</span>
<input data-i18n-placeholder="hit_points_current" name="attr_HP" placeholder="hit_points_current" spellcheck="false" title="@{HP}" type="number" value="" />
</label>
</div>
<div class='sheet-display-hdhpmax'>
<div class="sheet-display-hd">
<label data-i18n-title="hit_dice" title="hit_dice">
<button type="roll" name="act_roll_hitdice" value="@{hitdice-action}" data-i18n="hit_dice">hit_dice</button>
<button type="action" name="act_hitdice-button" class="hidden"></button>
<input type="hidden" name="attr_hitdice-action" value="">
<input data-i18n-placeholder="hit_dice" name="attr_hit_dice" placeholder="hit_dice" spellcheck="false" title="@{hit_dice}" type="number" value="" />
</label>
<label data-i18n-title="hit_dice_total" title="hit_dice_total">
<span data-i18n="hit_dice_total">total</span>
<input data-i18n-placeholder="hit_dice_total" name="attr_hit_dice_total" placeholder="hit_dice_total" spellcheck="false" title="@{hit_dice_total}" type="number" value="" />
</label>
</div>
<div class="sheet-display-hpmax">
<label data-i18n-title="hit_points_maximum" title="hit_points_maximum">
<span data-i18n="hit_points_maximum">hit_points_maximum</span>
<input data-i18n-placeholder="hit_points_maximum" name="attr_HP_max" placeholder="hit_points_maximum" spellcheck="false" title="@{HP_max}" type="number" value="" />
</label>
</div>
</div>
<div class='sheet-display-hptemp'>
<label data-i18n-title="hit_points_temp" title="hit_points_temp">
<span data-i18n="hit_points_temp">temporary_hit_points</span>
<input data-i18n-placeholder="hit_points_temp" name="attr_temp_HP" placeholder="hit_points_temp" spellcheck="false" title="@{temp_HP}" type="number" value="" />
</label>
</div>
<div class='sheet-display-death_saves'>
<label data-i18n-title="death_saves" title="death_saves">
<button type="roll" name="act_roll_deathsave" value="@{deathsave-action}" data-i18n="death_saves">death_saves</button>
<button type="action" name="act_deathsave-button" class="hidden"></button>
<input type="hidden" name="attr_deathsave-action" value="">
</label>
<label data-i18n-title="death_saves_success" title="death_saves_success">
<span data-i18n="death_saves_success">successes</span>
</label>
<label data-i18n-title="death_saves_successes" title="death_saves_successes">
<div class="sheet-dots">
<input type="radio" data-i18n-placeholder="death_saves_success" name="attr_death_saves_success" placeholder="death_saves_success" title="@{death_saves_success}" value="0" checked="checked" /><span></span>
<input type="radio" data-i18n-placeholder="death_saves_success" name="attr_death_saves_success" placeholder="death_saves_success" title="@{death_saves_success}" value="1" /><span></span>
<input type="radio" data-i18n-placeholder="death_saves_success" name="attr_death_saves_success" placeholder="death_saves_success" title="@{death_saves_success}" value="2" /><span></span>
<input type="radio" data-i18n-placeholder="death_saves_success" name="attr_death_saves_success" placeholder="death_saves_success" title="@{death_saves_success}" value="3" /><span></span>
</div>
</label>
<label data-i18n-title="death_saves_fail" title="death_saves_fail">
<span data-i18n="death_saves_fail">failures</span>
</label>
<label data-i18n-title="death_saves_fails" title="death_saves_fails">
<div class="sheet-dots">
<input type="radio" data-i18n-placeholder="death_saves_fail" name="attr_death_saves_fail" placeholder="death_saves_fail" title="@{death_saves_fail}" value="0" checked="checked" /><span></span>
<input type="radio" data-i18n-placeholder="death_saves_fail" name="attr_death_saves_fail" placeholder="death_saves_fail" title="@{death_saves_fail}" value="1" /><span></span>
<input type="radio" data-i18n-placeholder="death_saves_fail" name="attr_death_saves_fail" placeholder="death_saves_fail" title="@{death_saves_fail}" value="2" /><span></span>
<input type="radio" data-i18n-placeholder="death_saves_fail" name="attr_death_saves_fail" placeholder="death_saves_fail" title="@{death_saves_fail}" value="3" /><span></span>
</div>
</label>
</div>
<div class='sheet-display-fatigue_strife'>
<label data-i18n-title="fatigue" title="fatigue">
<span data-i18n="fatigue">fatigue</span>
</label>
<label data-i18n-title="fatigues" title="fatigues">
<div class="sheet-dots">
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="0" checked="checked" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="1" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="2" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="3" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="4" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="5" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="6" /><span></span>
<input type="radio" data-i18n-placeholder="death_fatigue" name="attr_death_fatigue" placeholder="death_fatigue" title="@{death_fatigue}" value="7" /><span></span>
</div>
</label>
<label data-i18n-title="strife" title="strife">
<span data-i18n="strife">strife</span>
</label>
<label data-i18n-title="strifes" title="strifes">
<div class="sheet-dots">
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="0" checked="checked" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="1" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="2" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="3" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="4" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="5" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="6" /><span></span>
<input type="radio" data-i18n-placeholder="death_strife" name="attr_death_strife" placeholder="death_strife" title="@{death_strife}" value="7" /><span></span>
</div>
</label>
</div>
<div class='sheet-display-supply'>
<label data-i18n-title="supply" title="supply">
<span data-i18n="supply">supply</span>
<input data-i18n-placeholder="supply" name="attr_supply" placeholder="supply" spellcheck="false" title="@{supply}" type="number" value="" />
</label>
<label data-i18n-title="supply_max" title="supply_max">
<span data-i18n="supply_max">supply_max</span>
<input data-i18n-placeholder="supply_max" name="attr_supply_max" placeholder="supply_max" spellcheck="false" title="@{supply_max}" type="number" value="" />
</label>
</div>
</div>
</div>
<div class="sheet-destinyskill">
<div class='sheet-display-destiny'>
<label data-i18n-title="destiny" title="destiny">
<span data-i18n="destiny">destiny</span>
<input data-i18n-placeholder="destiny" name="attr_destiny" placeholder="destiny" spellcheck="false" title="@{destiny}" type="text" value="" list="destinylist"/>
</label>
<label data-i18n-title="destiny_source" title="destiny_source">
<span data-i18n="destiny_source">destiny_source</span>
<input data-i18n-placeholder="destiny_source" name="attr_destiny_source" placeholder="destiny_source" spellcheck="false" title="@{destiny_source}" type="text" value="" />
</label>
<label data-i18n-title="destiny_inspiration" title="destiny_inspiration">
<span data-i18n="destiny_inspiration">destiny_inspiration</span>
<input data-i18n-placeholder="destiny_inspiration" name="attr_destiny_inspiration" placeholder="destiny_inspiration" spellcheck="false" title="@{destiny_inspiration}" type="text" value="" />
</label>
<label data-i18n-title="destiny_fulfillment" title="destiny_fulfillment">
<span data-i18n="destiny_fulfillment">destiny_fulfillment</span>
<input data-i18n-placeholder="destiny_fulfillment" name="attr_destiny_fulfillment" placeholder="destiny_fulfillment" spellcheck="false" title="@{destiny_fulfillment}" type="text" value="" />
</label>
</div>
<div class='sheet-display-skill'>
<label data-i18n-title="skills" title="skills">
<span data-i18n="skills">skills</span>
</label>
<label data-i18n-title="passive_stealth" title="passive_stealth">
<span data-i18n="passive_stealth">passive_stealth</span>
</label>
<label data-i18n-title="passive_stealthx" title="passive_stealthx">
<input data-i18n-placeholder="passive_stealth" name="attr_passive_stealth" placeholder="passive_stealth" spellcheck="false" title="@{passive_stealth}" type="number" value="" />
</label>
<label data-i18n-title="passive_insight" title="passive_insight">
<span data-i18n="passive_insight">passive_insight</span>
</label>
<label data-i18n-title="passive_insightx" title="passive_insightx">
<input data-i18n-placeholder="passive_insight" name="attr_passive_insight" placeholder="passive_insight" spellcheck="false" title="@{passive_insight}" type="number" value="" />
</label>
<label data-i18n-title="passive_perception" title="passive_perception">
<span data-i18n="passive_perception">passive_perception</span>
</label>
<label data-i18n-title="passive_perceptionx" title="passive_perceptionx">
<input data-i18n-placeholder="passive_perception" name="attr_passive_perception" placeholder="passive_perception" spellcheck="false" title="@{passive_perception}" type="number" value="" />
</label>
<label data-i18n-title="passive_misc" title="passive_misc">
<span data-i18n="passive_misc">passive_misc</span>
<input data-i18n-placeholder="passive_misc_title" name="attr_passive_misc_title" placeholder="passive_misc_title" spellcheck="false" title="@{passive_misc_title}" type="text" value="" />
</label>
<label data-i18n-title="passive_miscx" title="passive_miscx">
<input data-i18n-placeholder="passive_misc" name="attr_passive_misc" placeholder="passive_misc" spellcheck="false" title="@{passive_misc}" type="number" value="" />
</label>
<label data-i18n-title="skillsettings" title="skillsettings">
<a href="#popupGobalSkills"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupGobalSkills" class="overlay">
<div class="popup">
<h3>Skill Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="jackofalltrades_check" name="attr_jackofalltrades_check" placeholder="jackofalltrades_check" spellcheck="false" title="@{jackofalltrades_check}" type="checkbox" value="1" />
<span data-i18n="jackofalltrades">jackofalltrades</span><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="skill" title="skill">
<span data-i18n="skill">Skill</span>
</label>
<label data-i18n-title="specialty" title="specialty">
<span data-i18n="specialty">Specialty</span>
</label>
<label data-i18n-title="bonus" title="bonus">
<span data-i18n="bonus">Bonus</span>
</label>
<label data-i18n-title="skill2" title="skill2">
<span data-i18n="skill">Skill</span>
</label>
<label data-i18n-title="specialty2" title="specialty2">
<span data-i18n="specialty">Specialty</span>
</label>
<label data-i18n-title="bonus2" title="bonus2">
<span data-i18n="bonus">Bonus</span>
</label>
<label data-i18n-title="acrobatics_toggle" title="acrobatics_toggle">
<a href="#popupAcrobatics"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="acrobatics_button" title="acrobatics_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_acrobatics" value="@{acrobatics-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_acrobatics-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_acrobatics-action" value="">
</label>
<label data-i18n-title="acrobatics" title="acrobatics">
<span data-i18n="acrobatics">acrobatics</span>
</label>
<label data-i18n-title="acrobatics_specialty" title="acrobatics_specialty">
<input data-i18n-placeholder="acrobatics_specialty" name="attr_acrobatics_specialty" placeholder="acrobatics_specialty" spellcheck="false" title="@{acrobatics_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="acrobatics_bonus" title="acrobatics_bonus">
<input data-i18n-placeholder="acrobatics_bonus" name="attr_acrobatics_bonus" spellcheck="false" title="@{acrobatics_bonus}" type="number" value=""/>
</label>
<div id="popupAcrobatics" class="overlay">
<div class="popup">
<h3>Acrobatics Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="acrobatics_check" name="attr_acrobatics_check" placeholder="acrobatics_check" spellcheck="false" title="@{acrobatics_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="acrobatics_specialty" name="attr_acrobatics_specialty" placeholder="acrobatics_specialty" spellcheck="false" title="@{acrobatics_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="acrobatics_exdice" name="attr_acrobatics_exdice" placeholder="acrobatics_exdice" spellcheck="false" title="@{acrobatics_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="acrobatics_check_bonus">Acrobatics Check Bonus</span><br>
<input data-i18n-placeholder="acrobatics_check_bonus" name="attr_acrobatics_check_bonus" placeholder="acrobatics_check_bonus" spellcheck="false" title="@{acrobatics_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_acrobatics_bonus">Passive Acrobatics Bonus</span><br>
<input data-i18n-placeholder="passive_acrobatics_bonus" name="attr_passive_acrobatics_bonus" placeholder="passive_acrobatics_bonus" spellcheck="false" title="@{passive_acrobatics_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="animalhandling_toggle" title="animalhandling_toggle">
<a href="#popupanimalhandling"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="animalhandling_button" title="animalhandling_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_animalhandling" value="@{animalhandling-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_animalhandling-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_animalhandling-action" value="">
</label>
<label data-i18n-title="animalhandling" title="animalhandling">
<span data-i18n="animalhandling">Animal Handling</span>
</label>
<label data-i18n-title="animalhandling_specialty" title="animalhandling_specialty">
<input data-i18n-placeholder="animalhandling_specialty" name="attr_animalhandling_specialty" placeholder="animalhandling_specialty" spellcheck="false" title="@{animalhandling_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="animalhandling_bonus" title="animalhandling_bonus">
<input data-i18n-placeholder="animalhandling_bonus" name="attr_animalhandling_bonus" spellcheck="false" title="@{animalhandling_bonus}" type="number" value=""/>
</label>
<div id="popupanimalhandling" class="overlay">
<div class="popup">
<h3>Animal Handling Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="animalhandling_check" name="attr_animalhandling_check" placeholder="animalhandling_check" spellcheck="false" title="@{animalhandling_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="animalhandling_specialty" name="attr_animalhandling_specialty" placeholder="animalhandling_specialty" spellcheck="false" title="@{animalhandling_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="animalhandling_exdice" name="attr_animalhandling_exdice" placeholder="animalhandling_exdice" spellcheck="false" title="@{animalhandling_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="animalhandling_check_bonus">Animal Handling Check Bonus</span><br>
<input data-i18n-placeholder="animalhandling_check_bonus" name="attr_animalhandling_check_bonus" placeholder="animalhandling_check_bonus" spellcheck="false" title="@{animalhandling_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_animalhandling_bonus">Passive Animal Handling Bonus</span><br>
<input data-i18n-placeholder="passive_animalhandling_bonus" name="attr_passive_animalhandling_bonus" placeholder="passive_animalhandling_bonus" spellcheck="false" title="@{passive_animalhandling_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="arcana_toggle" title="arcana_toggle">
<a href="#popuparcana"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="arcana_button" title="arcana_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_arcana" value="@{arcana-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_arcana-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_arcana-action" value="">
</label>
<label data-i18n-title="arcana" title="arcana">
<span data-i18n="arcana">Arcana</span>
</label>
<label data-i18n-title="arcana_specialty" title="arcana_specialty">
<input data-i18n-placeholder="arcana_specialty" name="attr_arcana_specialty" placeholder="arcana_specialty" spellcheck="false" title="@{arcana_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="arcana_bonus" title="arcana_bonus">
<input data-i18n-placeholder="arcana_bonus" name="attr_arcana_bonus" spellcheck="false" title="@{arcana_bonus}" type="number" value=""/>
</label>
<div id="popuparcana" class="overlay">
<div class="popup">
<h3>Arcana Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="arcana_check" name="attr_arcana_check" placeholder="arcana_check" spellcheck="false" title="@{arcana_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="arcana_specialty" name="attr_arcana_specialty" placeholder="arcana_specialty" spellcheck="false" title="@{arcana_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="arcana_exdice" name="attr_arcana_exdice" placeholder="arcana_exdice" spellcheck="false" title="@{arcana_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="arcana_check_bonus">Arcana Check Bonus</span><br>
<input data-i18n-placeholder="arcana_check_bonus" name="attr_arcana_check_bonus" placeholder="arcana_check_bonus" spellcheck="false" title="@{arcana_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_arcana_bonus">Passive Arcana Bonus</span><br>
<input data-i18n-placeholder="passive_arcana_bonus" name="attr_passive_arcana_bonus" placeholder="passive_arcana_bonus" spellcheck="false" title="@{passive_arcana_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="athletics_toggle" title="athletics_toggle">
<a href="#popupathletics"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="athletics_button" title="athletics_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_athletics" value="@{athletics-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_athletics-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_athletics-action" value="">
</label>
<label data-i18n-title="athletics" title="athletics">
<span data-i18n="athletics">Athletics</span>
</label>
<label data-i18n-title="athletics_specialty" title="athletics_specialty">
<input data-i18n-placeholder="athletics_specialty" name="attr_athletics_specialty" placeholder="athletics_specialty" spellcheck="false" title="@{athletics_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="athletics_bonus" title="athletics_bonus">
<input data-i18n-placeholder="athletics_bonus" name="attr_athletics_bonus" spellcheck="false" title="@{athletics_bonus}" type="number" value=""/>
</label>
<div id="popupathletics" class="overlay">
<div class="popup">
<h3>Athletics Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="athletics_check" name="attr_athletics_check" placeholder="athletics_check" spellcheck="false" title="@{athletics_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="athletics_specialty" name="attr_athletics_specialty" placeholder="athletics_specialty" spellcheck="false" title="@{athletics_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="athletics_exdice" name="attr_athletics_exdice" placeholder="athletics_exdice" spellcheck="false" title="@{athletics_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="athletics_check_bonus">Athletics Check Bonus</span><br>
<input data-i18n-placeholder="athletics_check_bonus" name="attr_athletics_check_bonus" placeholder="athletics_check_bonus" spellcheck="false" title="@{athletics_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_athletics_bonus">Passive Athletics Bonus</span><br>
<input data-i18n-placeholder="passive_athletics_bonus" name="attr_passive_athletics_bonus" placeholder="passive_athletics_bonus" spellcheck="false" title="@{passive_athletics_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="culture_toggle" title="culture_toggle">
<a href="#popupculture"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="culture_button" title="culture_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_culture" value="@{culture-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_culture-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_culture-action" value="">
</label>
<label data-i18n-title="culture" title="culture">
<span data-i18n="culture">Culture</span>
</label>
<label data-i18n-title="culture_specialty" title="culture_specialty">
<input data-i18n-placeholder="culture_specialty" name="attr_culture_specialty" placeholder="culture_specialty" spellcheck="false" title="@{culture_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="culture_bonus" title="culture_bonus">
<input data-i18n-placeholder="culture_bonus" name="attr_culture_bonus" spellcheck="false" title="@{culture_bonus}" type="number" value=""/>
</label>
<div id="popupculture" class="overlay">
<div class="popup">
<h3>Culture Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="culture_check" name="attr_culture_check" placeholder="culture_check" spellcheck="false" title="@{culture_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="culture_specialty" name="attr_culture_specialty" placeholder="culture_specialty" spellcheck="false" title="@{culture_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="culture_exdice" name="attr_culture_exdice" placeholder="culture_exdice" spellcheck="false" title="@{culture_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="culture_check_bonus">Culture Check Bonus</span><br>
<input data-i18n-placeholder="culture_check_bonus" name="attr_culture_check_bonus" placeholder="culture_check_bonus" spellcheck="false" title="@{culture_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_culture_bonus">Passive Culture Bonus</span><br>
<input data-i18n-placeholder="passive_culture_bonus" name="attr_passive_culture_bonus" placeholder="passive_culture_bonus" spellcheck="false" title="@{passive_culture_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="deception_toggle" title="deception_toggle">
<a href="#popupdeception"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="deception_button" title="deception_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_deception" value="@{deception-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_deception-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_deception-action" value="">
</label>
<label data-i18n-title="deception" title="deception">
<span data-i18n="deception">Deception</span>
</label>
<label data-i18n-title="deception_specialty" title="deception_specialty">
<input data-i18n-placeholder="deception_specialty" name="attr_deception_specialty" placeholder="deception_specialty" spellcheck="false" title="@{deception_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="deception_bonus" title="deception_bonus">
<input data-i18n-placeholder="deception_bonus" name="attr_deception_bonus" spellcheck="false" title="@{deception_bonus}" type="number" value=""/>
</label>
<div id="popupdeception" class="overlay">
<div class="popup">
<h3>Deception Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="deception_check" name="attr_deception_check" placeholder="deception_check" spellcheck="false" title="@{deception_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="deception_specialty" name="attr_deception_specialty" placeholder="deception_specialty" spellcheck="false" title="@{deception_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="deception_exdice" name="attr_deception_exdice" placeholder="deception_exdice" spellcheck="false" title="@{deception_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="deception_check_bonus">Deception Check Bonus</span><br>
<input data-i18n-placeholder="deception_check_bonus" name="attr_deception_check_bonus" placeholder="deception_check_bonus" spellcheck="false" title="@{deception_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_deception_bonus">Passive Deception Bonus</span><br>
<input data-i18n-placeholder="passive_deception_bonus" name="attr_passive_deception_bonus" placeholder="passive_deception_bonus" spellcheck="false" title="@{passive_deception_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="engineering_toggle" title="engineering_toggle">
<a href="#popupengineering"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="engineering_button" title="engineering_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_engineering" value="@{engineering-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_engineering-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_engineering-action" value="">
</label>
<label data-i18n-title="engineering" title="engineering">
<span data-i18n="engineering">Engineering</span>
</label>
<label data-i18n-title="engineering_specialty" title="engineering_specialty">
<input data-i18n-placeholder="engineering_specialty" name="attr_engineering_specialty" placeholder="engineering_specialty" spellcheck="false" title="@{engineering_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="engineering_bonus" title="engineering_bonus">
<input data-i18n-placeholder="engineering_bonus" name="attr_engineering_bonus" spellcheck="false" title="@{engineering_bonus}" type="number" value=""/>
</label>
<div id="popupengineering" class="overlay">
<div class="popup">
<h3>Engineering Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="engineering_check" name="attr_engineering_check" placeholder="engineering_check" spellcheck="false" title="@{engineering_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="engineering_specialty" name="attr_engineering_specialty" placeholder="engineering_specialty" spellcheck="false" title="@{engineering_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="engineering_exdice" name="attr_engineering_exdice" placeholder="engineering_exdice" spellcheck="false" title="@{engineering_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="engineering_check_bonus">Engineering Check Bonus</span><br>
<input data-i18n-placeholder="engineering_check_bonus" name="attr_engineering_check_bonus" placeholder="engineering_check_bonus" spellcheck="false" title="@{engineering_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_engineering_bonus">Passive Engineering Bonus</span><br>
<input data-i18n-placeholder="passive_engineering_bonus" name="attr_passive_engineering_bonus" placeholder="passive_engineering_bonus" spellcheck="false" title="@{passive_engineering_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="history_toggle" title="history_toggle">
<a href="#popuphistory"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="history_button" title="history_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_history" value="@{history-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_history-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_history-action" value="">
</label>
<label data-i18n-title="history" title="history">
<span data-i18n="history">History</span>
</label>
<label data-i18n-title="history_specialty" title="history_specialty">
<input data-i18n-placeholder="history_specialty" name="attr_history_specialty" placeholder="history_specialty" spellcheck="false" title="@{history_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="history_bonus" title="history_bonus">
<input data-i18n-placeholder="history_bonus" name="attr_history_bonus" spellcheck="false" title="@{history_bonus}" type="number" value=""/>
</label>
<div id="popuphistory" class="overlay">
<div class="popup">
<h3>History Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="history_check" name="attr_history_check" placeholder="history_check" spellcheck="false" title="@{history_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="history_specialty" name="attr_history_specialty" placeholder="history_specialty" spellcheck="false" title="@{history_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="history_exdice" name="attr_history_exdice" placeholder="history_exdice" spellcheck="false" title="@{history_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="history_check_bonus">History Check Bonus</span><br>
<input data-i18n-placeholder="history_check_bonus" name="attr_history_check_bonus" placeholder="history_check_bonus" spellcheck="false" title="@{history_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_history_bonus">Passive History Bonus</span><br>
<input data-i18n-placeholder="passive_history_bonus" name="attr_passive_history_bonus" placeholder="passive_history_bonus" spellcheck="false" title="@{passive_history_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="insight_toggle" title="insight_toggle">
<a href="#popupinsight"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="insight_button" title="insight_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_insight" value="@{insight-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_insight-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_insight-action" value="">
</label>
<label data-i18n-title="insight" title="insight">
<span data-i18n="insight">Insight</span>
</label>
<label data-i18n-title="insight_specialty" title="insight_specialty">
<input data-i18n-placeholder="insight_specialty" name="attr_insight_specialty" placeholder="insight_specialty" spellcheck="false" title="@{insight_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="insight_bonus" title="insight_bonus">
<input data-i18n-placeholder="insight_bonus" name="attr_insight_bonus" spellcheck="false" title="@{insight_bonus}" type="number" value=""/>
</label>
<div id="popupinsight" class="overlay">
<div class="popup">
<h3>Insight Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="insight_check" name="attr_insight_check" placeholder="insight_check" spellcheck="false" title="@{insight_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="insight_specialty" name="attr_insight_specialty" placeholder="insight_specialty" spellcheck="false" title="@{insight_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="insight_exdice" name="attr_insight_exdice" placeholder="insight_exdice" spellcheck="false" title="@{insight_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="insight_check_bonus">Insight Check Bonus</span><br>
<input data-i18n-placeholder="insight_check_bonus" name="attr_insight_check_bonus" placeholder="insight_check_bonus" spellcheck="false" title="@{insight_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_insight_bonus">Passive Insight Bonus</span><br>
<input data-i18n-placeholder="passive_insight_bonus" name="attr_passive_insight_bonus" placeholder="passive_insight_bonus" spellcheck="false" title="@{passive_insight_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="intimidation_toggle" title="intimidation_toggle">
<a href="#popupintimidation"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="intimidation_button" title="intimidation_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_intimidation" value="@{intimidation-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_intimidation-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_intimidation-action" value="">
</label>
<label data-i18n-title="intimidation" title="intimidation">
<span data-i18n="intimidation">Intimidation</span>
</label>
<label data-i18n-title="intimidation_specialty" title="intimidation_specialty">
<input data-i18n-placeholder="intimidation_specialty" name="attr_intimidation_specialty" placeholder="intimidation_specialty" spellcheck="false" title="@{intimidation_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="intimidation_bonus" title="intimidation_bonus">
<input data-i18n-placeholder="intimidation_bonus" name="attr_intimidation_bonus" spellcheck="false" title="@{intimidation_bonus}" type="number" value=""/>
</label>
<div id="popupintimidation" class="overlay">
<div class="popup">
<h3>Intimidation Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="intimidation_check" name="attr_intimidation_check" placeholder="intimidation_check" spellcheck="false" title="@{intimidation_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="intimidation_specialty" name="attr_intimidation_specialty" placeholder="intimidation_specialty" spellcheck="false" title="@{intimidation_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="intimidation_exdice" name="attr_intimidation_exdice" placeholder="intimidation_exdice" spellcheck="false" title="@{intimidation_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="intimidation_check_bonus">Intimidation Check Bonus</span><br>
<input data-i18n-placeholder="intimidation_check_bonus" name="attr_intimidation_check_bonus" placeholder="intimidation_check_bonus" spellcheck="false" title="@{intimidation_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_intimidation_bonus">Passive Intimidation Bonus</span><br>
<input data-i18n-placeholder="passive_intimidation_bonus" name="attr_passive_intimidation_bonus" placeholder="passive_intimidation_bonus" spellcheck="false" title="@{passive_intimidation_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="investigation_toggle" title="investigation_toggle">
<a href="#popupinvestigation"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="investigation_button" title="investigation_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_investigation" value="@{investigation-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_investigation-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_investigation-action" value="">
</label>
<label data-i18n-title="investigation" title="investigation">
<span data-i18n="investigation">Investigation</span>
</label>
<label data-i18n-title="investigation_specialty" title="investigation_specialty">
<input data-i18n-placeholder="investigation_specialty" name="attr_investigation_specialty" placeholder="investigation_specialty" spellcheck="false" title="@{investigation_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="investigation_bonus" title="investigation_bonus">
<input data-i18n-placeholder="investigation_bonus" name="attr_investigation_bonus" spellcheck="false" title="@{investigation_bonus}" type="number" value=""/>
</label>
<div id="popupinvestigation" class="overlay">
<div class="popup">
<h3>Investigation Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="investigation_check" name="attr_investigation_check" placeholder="investigation_check" spellcheck="false" title="@{investigation_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="investigation_specialty" name="attr_investigation_specialty" placeholder="investigation_specialty" spellcheck="false" title="@{investigation_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="investigation_exdice" name="attr_investigation_exdice" placeholder="investigation_exdice" spellcheck="false" title="@{investigation_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="investigation_check_bonus">Investigation Check Bonus</span><br>
<input data-i18n-placeholder="investigation_check_bonus" name="attr_investigation_check_bonus" placeholder="investigation_check_bonus" spellcheck="false" title="@{investigation_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_investigation_bonus">Passive Investigation Bonus</span><br>
<input data-i18n-placeholder="passive_investigation_bonus" name="attr_passive_investigation_bonus" placeholder="passive_investigation_bonus" spellcheck="false" title="@{passive_investigation_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="medicine_toggle" title="medicine_toggle">
<a href="#popupmedicine"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="medicine_button" title="medicine_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_medicine" value="@{medicine-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_medicine-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_medicine-action" value="">
</label>
<label data-i18n-title="medicine" title="medicine">
<span data-i18n="medicine">Medicine</span>
</label>
<label data-i18n-title="medicine_specialty" title="medicine_specialty">
<input data-i18n-placeholder="medicine_specialty" name="attr_medicine_specialty" placeholder="medicine_specialty" spellcheck="false" title="@{medicine_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="medicine_bonus" title="medicine_bonus">
<input data-i18n-placeholder="medicine_bonus" name="attr_medicine_bonus" spellcheck="false" title="@{medicine_bonus}" type="number" value=""/>
</label>
<div id="popupmedicine" class="overlay">
<div class="popup">
<h3>Medicine Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="medicine_check" name="attr_medicine_check" placeholder="medicine_check" spellcheck="false" title="@{medicine_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="medicine_specialty" name="attr_medicine_specialty" placeholder="medicine_specialty" spellcheck="false" title="@{medicine_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="medicine_exdice" name="attr_medicine_exdice" placeholder="medicine_exdice" spellcheck="false" title="@{medicine_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="medicine_check_bonus">Medicine Check Bonus</span><br>
<input data-i18n-placeholder="medicine_check_bonus" name="attr_medicine_check_bonus" placeholder="medicine_check_bonus" spellcheck="false" title="@{medicine_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_medicine_bonus">Passive Medicine Bonus</span><br>
<input data-i18n-placeholder="passive_medicine_bonus" name="attr_passive_medicine_bonus" placeholder="passive_medicine_bonus" spellcheck="false" title="@{passive_medicine_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="nature_toggle" title="nature_toggle">
<a href="#popupnature"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="nature_button" title="nature_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_nature" value="@{nature-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_nature-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_nature-action" value="">
</label>
<label data-i18n-title="nature" title="nature">
<span data-i18n="nature">Nature</span>
</label>
<label data-i18n-title="nature_specialty" title="nature_specialty">
<input data-i18n-placeholder="nature_specialty" name="attr_nature_specialty" placeholder="nature_specialty" spellcheck="false" title="@{nature_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="nature_bonus" title="nature_bonus">
<input data-i18n-placeholder="nature_bonus" name="attr_nature_bonus" spellcheck="false" title="@{nature_bonus}" type="number" value=""/>
</label>
<div id="popupnature" class="overlay">
<div class="popup">
<h3>Nature Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="nature_check" name="attr_nature_check" placeholder="nature_check" spellcheck="false" title="@{nature_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="nature_specialty" name="attr_nature_specialty" placeholder="nature_specialty" spellcheck="false" title="@{nature_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="nature_exdice" name="attr_nature_exdice" placeholder="nature_exdice" spellcheck="false" title="@{nature_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="nature_check_bonus">Nature Check Bonus</span><br>
<input data-i18n-placeholder="nature_check_bonus" name="attr_nature_check_bonus" placeholder="nature_check_bonus" spellcheck="false" title="@{nature_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_nature_bonus">Passive Nature Bonus</span><br>
<input data-i18n-placeholder="passive_nature_bonus" name="attr_passive_nature_bonus" placeholder="passive_nature_bonus" spellcheck="false" title="@{passive_nature_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="perception_toggle" title="perception_toggle">
<a href="#popupperception"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="perception_button" title="perception_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_perception" value="@{perception-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_perception-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_perception-action" value="">
</label>
<label data-i18n-title="perception" title="perception">
<span data-i18n="perception">Perception</span>
</label>
<label data-i18n-title="perception_specialty" title="perception_specialty">
<input data-i18n-placeholder="perception_specialty" name="attr_perception_specialty" placeholder="perception_specialty" spellcheck="false" title="@{perception_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="perception_bonus" title="perception_bonus">
<input data-i18n-placeholder="perception_bonus" name="attr_perception_bonus" spellcheck="false" title="@{perception_bonus}" type="number" value=""/>
</label>
<div id="popupperception" class="overlay">
<div class="popup">
<h3>Perception Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="perception_check" name="attr_perception_check" placeholder="perception_check" spellcheck="false" title="@{perception_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="perception_specialty" name="attr_perception_specialty" placeholder="perception_specialty" spellcheck="false" title="@{perception_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="perception_exdice" name="attr_perception_exdice" placeholder="perception_exdice" spellcheck="false" title="@{perception_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="perception_check_bonus">Perception Check Bonus</span><br>
<input data-i18n-placeholder="perception_check_bonus" name="attr_perception_check_bonus" placeholder="perception_check_bonus" spellcheck="false" title="@{perception_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_perception_bonus">Passive Perception Bonus</span><br>
<input data-i18n-placeholder="passive_perception_bonus" name="attr_passive_perception_bonus" placeholder="passive_perception_bonus" spellcheck="false" title="@{passive_perception_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="performance_toggle" title="performance_toggle">
<a href="#popupperformance"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="performance_button" title="performance_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_performance" value="@{performance-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_performance-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_performance-action" value="">
</label>
<label data-i18n-title="performance" title="performance">
<span data-i18n="performance">Performance</span>
</label>
<label data-i18n-title="performance_specialty" title="performance_specialty">
<input data-i18n-placeholder="performance_specialty" name="attr_performance_specialty" placeholder="performance_specialty" spellcheck="false" title="@{performance_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="performance_bonus" title="performance_bonus">
<input data-i18n-placeholder="performance_bonus" name="attr_performance_bonus" spellcheck="false" title="@{performance_bonus}" type="number" value=""/>
</label>
<div id="popupperformance" class="overlay">
<div class="popup">
<h3>Performance Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="performance_check" name="attr_performance_check" placeholder="performance_check" spellcheck="false" title="@{performance_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="performance_specialty" name="attr_performance_specialty" placeholder="performance_specialty" spellcheck="false" title="@{performance_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="performance_exdice" name="attr_performance_exdice" placeholder="performance_exdice" spellcheck="false" title="@{performance_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="performance_check_bonus">Performance Check Bonus</span><br>
<input data-i18n-placeholder="performance_check_bonus" name="attr_performance_check_bonus" placeholder="performance_check_bonus" spellcheck="false" title="@{performance_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_performance_bonus">Passive Performance Bonus</span><br>
<input data-i18n-placeholder="passive_performance_bonus" name="attr_passive_performance_bonus" placeholder="passive_performance_bonus" spellcheck="false" title="@{passive_performance_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="persuasion_toggle" title="persuasion_toggle">
<a href="#popuppersuasion"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="persuasion_button" title="persuasion_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_persuasion" value="@{persuasion-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_persuasion-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_persuasion-action" value="">
</label>
<label data-i18n-title="persuasion" title="persuasion">
<span data-i18n="persuasion">Persuasion</span>
</label>
<label data-i18n-title="persuasion_specialty" title="persuasion_specialty">
<input data-i18n-placeholder="persuasion_specialty" name="attr_persuasion_specialty" placeholder="persuasion_specialty" spellcheck="false" title="@{persuasion_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="persuasion_bonus" title="persuasion_bonus">
<input data-i18n-placeholder="persuasion_bonus" name="attr_persuasion_bonus" spellcheck="false" title="@{persuasion_bonus}" type="number" value=""/>
</label>
<div id="popuppersuasion" class="overlay">
<div class="popup">
<h3>Persuasion Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="persuasion_check" name="attr_persuasion_check" placeholder="persuasion_check" spellcheck="false" title="@{persuasion_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="persuasion_specialty" name="attr_persuasion_specialty" placeholder="persuasion_specialty" spellcheck="false" title="@{persuasion_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="persuasion_exdice" name="attr_persuasion_exdice" placeholder="persuasion_exdice" spellcheck="false" title="@{persuasion_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="persuasion_check_bonus">Persuasion Check Bonus</span><br>
<input data-i18n-placeholder="persuasion_check_bonus" name="attr_persuasion_check_bonus" placeholder="persuasion_check_bonus" spellcheck="false" title="@{persuasion_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_persuasion_bonus">Passive Persuasion Bonus</span><br>
<input data-i18n-placeholder="passive_persuasion_bonus" name="attr_passive_persuasion_bonus" placeholder="passive_persuasion_bonus" spellcheck="false" title="@{passive_persuasion_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="religion_toggle" title="religion_toggle">
<a href="#popupreligion"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="religion_button" title="religion_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_religion" value="@{religion-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_religion-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_religion-action" value="">
</label>
<label data-i18n-title="religion" title="religion">
<span data-i18n="religion">Religion</span>
</label>
<label data-i18n-title="religion_specialty" title="religion_specialty">
<input data-i18n-placeholder="religion_specialty" name="attr_religion_specialty" placeholder="religion_specialty" spellcheck="false" title="@{religion_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="religion_bonus" title="religion_bonus">
<input data-i18n-placeholder="religion_bonus" name="attr_religion_bonus" spellcheck="false" title="@{religion_bonus}" type="number" value=""/>
</label>
<div id="popupreligion" class="overlay">
<div class="popup">
<h3>Religion Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="religion_check" name="attr_religion_check" placeholder="religion_check" spellcheck="false" title="@{religion_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="religion_specialty" name="attr_religion_specialty" placeholder="religion_specialty" spellcheck="false" title="@{religion_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="religion_exdice" name="attr_religion_exdice" placeholder="religion_exdice" spellcheck="false" title="@{religion_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="religion_check_bonus">Religion Check Bonus</span><br>
<input data-i18n-placeholder="religion_check_bonus" name="attr_religion_check_bonus" placeholder="religion_check_bonus" spellcheck="false" title="@{religion_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_religion_bonus">Passive Religion Bonus</span><br>
<input data-i18n-placeholder="passive_religion_bonus" name="attr_passive_religion_bonus" placeholder="passive_religion_bonus" spellcheck="false" title="@{passive_religion_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="sleightofhand_toggle" title="sleightofhand_toggle">
<a href="#popupsleightofhand"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="sleightofhand_button" title="sleightofhand_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_sleightofhand" value="@{sleightofhand-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_sleightofhand-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_sleightofhand-action" value="">
</label>
<label data-i18n-title="sleightofhand" title="sleightofhand">
<span data-i18n="sleightofhand">Sleight of Hand</span>
</label>
<label data-i18n-title="sleightofhand_specialty" title="sleightofhand_specialty">
<input data-i18n-placeholder="sleightofhand_specialty" name="attr_sleightofhand_specialty" placeholder="sleightofhand_specialty" spellcheck="false" title="@{sleightofhand_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="sleightofhand_bonus" title="sleightofhand_bonus">
<input data-i18n-placeholder="sleightofhand_bonus" name="attr_sleightofhand_bonus" spellcheck="false" title="@{sleightofhand_bonus}" type="number" value=""/>
</label>
<div id="popupsleightofhand" class="overlay">
<div class="popup">
<h3>Sleight of Hand Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="sleightofhand_check" name="attr_sleightofhand_check" placeholder="sleightofhand_check" spellcheck="false" title="@{sleightofhand_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="sleightofhand_specialty" name="attr_sleightofhand_specialty" placeholder="sleightofhand_specialty" spellcheck="false" title="@{sleightofhand_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="sleightofhand_exdice" name="attr_sleightofhand_exdice" placeholder="sleightofhand_exdice" spellcheck="false" title="@{sleightofhand_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="sleightofhand_check_bonus">Sleight of Hand Check Bonus</span><br>
<input data-i18n-placeholder="sleightofhand_check_bonus" name="attr_sleightofhand_check_bonus" placeholder="sleightofhand_check_bonus" spellcheck="false" title="@{sleightofhand_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_sleightofhand_bonus">Passive Sleight of Hand Bonus</span><br>
<input data-i18n-placeholder="passive_sleightofhand_bonus" name="attr_passive_sleightofhand_bonus" placeholder="passive_sleightofhand_bonus" spellcheck="false" title="@{passive_sleightofhand_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="stealth_toggle" title="stealth_toggle">
<a href="#popupstealth"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="stealth_button" title="stealth_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_stealth" value="@{stealth-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_stealth-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_stealth-action" value="">
</label>
<label data-i18n-title="stealth" title="stealth">
<span data-i18n="stealth">Stealth</span>
</label>
<label data-i18n-title="stealth_specialty" title="stealth_specialty">
<input data-i18n-placeholder="stealth_specialty" name="attr_stealth_specialty" placeholder="stealth_specialty" spellcheck="false" title="@{stealth_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="stealth_bonus" title="stealth_bonus">
<input data-i18n-placeholder="stealth_bonus" name="attr_stealth_bonus" spellcheck="false" title="@{stealth_bonus}" type="number" value=""/>
</label>
<div id="popupstealth" class="overlay">
<div class="popup">
<h3>Stealth Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="stealth_check" name="attr_stealth_check" placeholder="stealth_check" spellcheck="false" title="@{stealth_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="stealth_specialty" name="attr_stealth_specialty" placeholder="stealth_specialty" spellcheck="false" title="@{stealth_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="stealth_exdice" name="attr_stealth_exdice" placeholder="stealth_exdice" spellcheck="false" title="@{stealth_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="stealth_check_bonus">Stealth Check Bonus</span><br>
<input data-i18n-placeholder="stealth_check_bonus" name="attr_stealth_check_bonus" placeholder="stealth_check_bonus" spellcheck="false" title="@{stealth_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_stealth_bonus">Passive Stealth Bonus</span><br>
<input data-i18n-placeholder="passive_stealth_bonus" name="attr_passive_stealth_bonus" placeholder="passive_stealth_bonus" spellcheck="false" title="@{passive_stealth_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="survival_toggle" title="survival_toggle">
<a href="#popupsurvival"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="survival_button" title="survival_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_survival" value="@{survival-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_survival-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_survival-action" value="">
</label>
<label data-i18n-title="survival" title="survival">
<span data-i18n="survival">Survival</span>
</label>
<label data-i18n-title="survival_specialty" title="survival_specialty">
<input data-i18n-placeholder="survival_specialty" name="attr_survival_specialty" placeholder="survival_specialty" spellcheck="false" title="@{survival_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="survival_bonus" title="survival_bonus">
<input data-i18n-placeholder="survival_bonus" name="attr_survival_bonus" spellcheck="false" title="@{survival_bonus}" type="number" value=""/>
</label>
<div id="popupsurvival" class="overlay">
<div class="popup">
<h3>Survival Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="survival_check" name="attr_survival_check" placeholder="survival_check" spellcheck="false" title="@{survival_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="survival_specialty" name="attr_survival_specialty" placeholder="survival_specialty" spellcheck="false" title="@{survival_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="survival_exdice" name="attr_survival_exdice" placeholder="survival_exdice" spellcheck="false" title="@{survival_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="survival_check_bonus">Survival Check Bonus</span><br>
<input data-i18n-placeholder="survival_check_bonus" name="attr_survival_check_bonus" placeholder="survival_check_bonus" spellcheck="false" title="@{survival_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_survival_bonus">Passive Survival Bonus</span><br>
<input data-i18n-placeholder="passive_survival_bonus" name="attr_passive_survival_bonus" placeholder="passive_survival_bonus" spellcheck="false" title="@{passive_survival_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="vehicles_toggle" title="vehicles_toggle">
<a href="#popupvehicles"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="vehicles_button" title="vehicles_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_vehicles" value="@{vehicles-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_vehicles-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_vehicles-action" value="">
</label>
<label data-i18n-title="vehicles" title="vehicles">
<span data-i18n="vehicles">Vehicles</span>
</label>
<label data-i18n-title="vehicles_specialty" title="vehicles_specialty">
<input data-i18n-placeholder="vehicles_specialty" name="attr_vehicles_specialty" placeholder="vehicles_specialty" spellcheck="false" title="@{vehicles_specialty}" type="text" value="" /><br>
</label>
<label data-i18n-title="vehicles_bonus" title="vehicles_bonus">
<input data-i18n-placeholder="vehicles_bonus" name="attr_vehicles_bonus" spellcheck="false" title="@{vehicles_bonus}" type="number" value=""/>
</label>
<div id="popupvehicles" class="overlay">
<div class="popup">
<h3>Vehicles Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="vehicles_check" name="attr_vehicles_check" placeholder="vehicles_check" spellcheck="false" title="@{vehicles_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="specialties">Specialties</span><br>
<input data-i18n-placeholder="vehicles_specialty" name="attr_vehicles_specialty" placeholder="vehicles_specialty" spellcheck="false" title="@{vehicles_specialty}" type="text" value="" /><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="vehicles_exdice" name="attr_vehicles_exdice" placeholder="vehicles_exdice" spellcheck="false" title="@{vehicles_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="vehicles_check_bonus">Vehicles Check Bonus</span><br>
<input data-i18n-placeholder="vehicles_check_bonus" name="attr_vehicles_check_bonus" placeholder="vehicles_check_bonus" spellcheck="false" title="@{vehicles_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_vehicles_bonus">Passive Vehicles Bonus</span><br>
<input data-i18n-placeholder="passive_vehicles_bonus" name="attr_passive_vehicles_bonus" placeholder="passive_vehicles_bonus" spellcheck="false" title="@{passive_vehicles_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="misc1_toggle" title="misc1_toggle">
<a href="#popupmisc1"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="misc1_button" title="misc1_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_misc1" value="@{misc1-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_misc1-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_misc1-action" value="">
</label>
<label data-i18n-title="misc1" title="misc1">
<input data-i18n-placeholder="misc1" name="attr_misc1" spellcheck="false" title="@{misc1}" type="text" value=""/>
</label>
<label data-i18n-title="misc1_bonus" title="misc1_bonus">
<input data-i18n-placeholder="misc1_bonus" name="attr_misc1_bonus" spellcheck="false" title="@{misc1_bonus}" type="number" value=""/>
</label>
<div id="popupmisc1" class="overlay">
<div class="popup">
<h3>Skill Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="misc1_check" name="attr_misc1_check" placeholder="misc1_check" spellcheck="false" title="@{misc1_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="misc1_exdice" name="attr_misc1_exdice" placeholder="misc1_exdice" spellcheck="false" title="@{misc1_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="misc1_check_bonus">Skill Check Bonus</span><br>
<input data-i18n-placeholder="misc1_check_bonus" name="attr_misc1_check_bonus" placeholder="misc1_check_bonus" spellcheck="false" title="@{misc1_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_misc1_bonus">Passive Skill Bonus</span><br>
<input data-i18n-placeholder="passive_misc1_bonus" name="attr_passive_misc1_bonus" placeholder="passive_misc1_bonus" spellcheck="false" title="@{passive_misc1_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="misc2_toggle" title="misc2_toggle">
<a href="#popupmisc2"><span style="font-family:Pictos;">y</span></a>
</label>
<label data-i18n-title="misc2_button" title="misc2_button">
<!-- The visible and draggable button for the macro bar -->
<button type="roll" name="act_roll_misc2" value="@{misc2-action}"></button>
<!-- The invisible button allowing the use of custom roll parsing -->
<button type="action" name="act_misc2-button" class="hidden"></button>
<!-- The invisible field for the attribute which contains the ability call -->
<input type="hidden" name="attr_misc2-action" value="">
</label>
<label data-i18n-title="misc2" title="misc2">
<input data-i18n-placeholder="misc2" name="attr_misc2" placeholder="misc2" spellcheck="false" title="@{misc2}" type="text" value="" /><br>
</label>
<label data-i18n-title="misc2_bonus" title="misc2_bonus">
<input data-i18n-placeholder="misc2_bonus" name="attr_misc2_bonus" spellcheck="false" title="@{misc2_bonus}" type="number" value=""/>
</label>
<div id="popupmisc2" class="overlay">
<div class="popup">
<h3>Skill Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<input data-i18n-placeholder="misc2_check" name="attr_misc2_check" placeholder="misc2_check" spellcheck="false" title="@{misc2_check}" type="checkbox" value="1"/>
<span data-i18n="proficient">Proficient</span><br>
<span data-i18n="expertise_dice">Expertise Dice</span><br>
<select data-i18n-placeholder="misc2_exdice" name="attr_misc2_exdice" placeholder="misc2_exdice" spellcheck="false" title="@{misc2_exdice}"><option></option><option>1d4</option><option>1d6</option><option>1d8</option><option>1d10</option><option>1d12</option></select><br>
<span data-i18n="misc2_check_bonus">Skill Check Bonus</span><br>
<input data-i18n-placeholder="misc2_check_bonus" name="attr_misc2_check_bonus" placeholder="misc2_check_bonus" spellcheck="false" title="@{misc2_check_bonus}" type="number" value="0"/><br>
<span data-i18n="passive_misc2_bonus">Passive Skill Bonus</span><br>
<input data-i18n-placeholder="passive_misc2_bonus" name="attr_passive_misc2_bonus" placeholder="passive_misc2_bonus" spellcheck="false" title="@{passive_misc2_bonus}" type="number" value="0" /><br>
<span data-i18n="global_skill_bonus">Global Skill Bonus</span><br>
<input data-i18n-placeholder="globalskillbonus" name="attr_globalskillbonus" placeholder="globalskillbonus" spellcheck="false" title="@{globalskillbonus}" type="number" value="0" /><br>
<span data-i18n="global_ability_check_bonus">Global Ability Check Bonus</span><br>
<input data-i18n-placeholder="globalabilitycheckbonus" name="attr_globalabilitycheckbonus" placeholder="globalabilitycheckbonus" spellcheck="false" title="@{globalabilitycheckbonus}" type="number" value="0" /><br>
</div>
</div>
</div>
<label data-i18n-title="toolprofs" title="toolprofs">
<span data-i18n="toolprofs">toolprofs</span>
</label>
<label data-i18n-title="tool" title="tool">
<span data-i18n="tool">Tool</span>
</label>
<label data-i18n-title="toolbonus" title="toolbonus">
<span data-i18n="bonus">Bonus</span>
</label>
<div class="sheet-toollist">
<fieldset class="repeating_tools">
<label data-i18n-title="repeatingtools" title="repeatingtools">
<button data-i18n-placeholder="toolroll" type="action" name="attr_tool-button"></button>
<input data-i18n-placeholder="toolname" name="attr_toolname" placeholder="toolname" spellcheck="false" title="@{toolname}" type="text" value="" />
<input data-i18n-placeholder="toolbonus" name="attr_toolbonus" spellcheck="false" title="@{toolbonus}" type="number" value=""/>
</label>
</fieldset>
</div>
</div>
</div>
</div>
<div class="sheet-attacks">
<label data-i18n-title="attacks_and_spellcasting" title="attacks_and_spellcasting">
<span data-i18n="attacks_and_spellcasting">attacks_and_spellcasting</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="atk_bonus" title="atk_bonus">
<span data-i18n="atk_bonus">atk_bonus</span>
</label>
<label data-i18n-title="damage" title="damage">
<span data-i18n="damage">damage</span>
</label>
<label data-i18n-title="type" title="type">
<span data-i18n="type">type</span>
</label>
<label data-i18n-title="range" title="range">
<span data-i18n="range">range</span>
</label>
<label data-i18n-title="notes" title="notes">
<span data-i18n="notes">notes</span>
</label>
<div class="sheet-attacklist">
<fieldset class="repeating_attacks">
<label data-i18n-title="repeatingattacks" title="repeatingattacks">
<button data-i18n-placeholder="attackbutton" type="action" name="attr_attack-button"></button>
<input data-i18n-placeholder="attackname" name="attr_attackname" placeholder="attackname" spellcheck="false" title="@{attackname}" type="text" value="" />
<input data-i18n-placeholder="attackbonus" name="attr_attackbonus" placeholder="attackbonus" spellcheck="false" title="@{attackbonus}" type="text" value="" />
<input data-i18n-placeholder="attackdamage" name="attr_attackdamage" placeholder="attackdamage" spellcheck="false" title="@{attackdamage}" type="text" value="" />
<input data-i18n-placeholder="attackdamagetype" name="attr_attackdamagetype" placeholder="attackdamagetype" spellcheck="false" title="@{attackdamagetype}" type="text" value="" list="damagetypelist"/>
<input data-i18n-placeholder="attackrange" name="attr_attackrange" placeholder="attackrange" spellcheck="false" title="@{attackrange}" type="text" value="" />
<input data-i18n-placeholder="attacknotes" name="attr_attacknotes" placeholder="attacknotes" spellcheck="false" title="@{attacknotes}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
</div>
<div class="sheet-features">
<div class="sheet-display-featandtraits">
<label data-i18n-title="featandtraits" title="featandtraits">
<span data-i18n="featandtraits">featandtraits</span>
<div class="sheet-featslist">
<fieldset class="repeating_feats">
<label data-i18n-title="repeatingfeats" title="repeatingfeats">
<input data-i18n-placeholder="featsname" name="attr_featsname" placeholder="featsname" spellcheck="false" title="@{featsname}" type="text" value="" /><br>
<textarea data-i18n-placeholder="featsinfo" name="attr_featsinfo" placeholder="featsinfo" spellcheck="false" title="@{featsinfo}" type="text" value="" />
</label>
</fieldset>
</div>
<textarea data-i18n-placeholder="featandtraits" name="attr_featandtraits" placeholder="featandtraits" spellcheck="false" title="@{featandtraits}" type="text" value="" />
</label>
</div>
<div class='sheet-display-langprofs'>
<label data-i18n-title="langprofs" title="langprofs">
<span data-i18n="langprofs">langprofs</span>
<textarea data-i18n-placeholder="langprofs" name="attr_langprofs" placeholder="langprofs" spellcheck="false" title="@{langprofs}" type="text" value="" />
</label>
</div>
<div class="sheet-combatmaneuvers">
<label data-i18n-title="combat_maneuvers" title="combat_maneuvers">
<span data-i18n="combat_maneuvers">combat_maneuvers</span>
</label>
<label data-i18n-title="maneuvers_known_title" title="maneuvers_known_title">
<span data-i18n="maneuvers_known">maneuvers_known</span>
</label>
<label data-i18n-title="maneuvers_known" title="maneuvers_known">
<input data-i18n-placeholder="maneuvers_known" name="attr_maneuvers_known" placeholder="maneuvers_known" spellcheck="false" title="@{maneuvers_known}" type="number" value="" />
</label>
<label data-i18n-title="traditions_known_title" title="traditions_known_title">
<span data-i18n="traditions_known">traditions_known</span>
</label>
<label data-i18n-title="traditions_known" title="traditions_known">
<input data-i18n-placeholder="traditions_known" name="attr_traditions_known" placeholder="traditions_known" spellcheck="false" title="@{traditions_known}" type="text" value="" />
</label>
<label data-i18n-title="maneuver_savedc" title="maneuver_savedc">
<span data-i18n="maneuver_savedc">maneuver_savedc</span>
<span data-i18n="maneuver_saveform">maneuver_saveform</span>
<input data-i18n-placeholder="maneuver_savedc" name="attr_maneuver_savedc" placeholder="maneuver_savedc" spellcheck="false" title="@{maneuver_savedc}" type="number" value="" />
</label>
<label data-i18n-title="exertion_points" title="exertion_points">
<span data-i18n="exertion_points">exertion_points</span>
<span data-i18n="exertion_form">exertion_form</span>
<input data-i18n-placeholder="current_exertion_points" data-i18n="current_exertion_points" name="attr_curr_exertion_points" placeholder="current_exertion_points" spellcheck="false" title="@{curr_exertion_points}" type="number" value="" />
<input data-i18n-placeholder="exertion_points" data-i18n="exertion_points" name="attr_exertion_points" placeholder="exertion_points" spellcheck="false" title="@{exertion_points}" type="number" value="" />
</label>
<label data-i18n-title="maneuversettings" title="maneuversettings">
<a href="#popupmaneuversettings"><span style="font-family:Pictos;">y</span></a>
</label>
<div id="popupmaneuversettings" class="overlay">
<div class="popup">
<h3>Maneuver Settings</h3>
<a class="close" href="#">×</a>
<div class="content">
<span data-i18n="maneuver_save_bonus">Maneuver Save DC Bonus</span><br>
<input data-i18n-placeholder="maneuver_save_bonus" name="attr_maneuver_save_bonus" placeholder="maneuver_save_bonus" spellcheck="false" title="@{maneuver_save_bonus}" type="number" value="0"/><br>
<span data-i18n="exertion_points_bonus">Exertion Points Bonus</span><br>
<input data-i18n-placeholder="exertion_points_bonus" name="attr_exertion_points_bonus" placeholder="exertion_points_bonus" spellcheck="false" title="@{exertion_points_bonus}" type="number" value="0"/><br>
</div>
</div>
</div>
<label data-i18n-title="maneuver" title="maneuver">
<span data-i18n="maneuver">maneuver</span>
</label>
<label data-i18n-title="exertion_cost" title="exertion_cost">
<span data-i18n="exertion_cost">exertion_cost</span>
</label>
<label data-i18n-title="activation" title="activation">
<span data-i18n="activation">activation</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg#</span>
</label>
<div class="sheet-maneuverlist">
<fieldset class="repeating_maneuvers">
<label data-i18n-title="repeatingmaneuvers" title="repeatingmaneuvers">
<input data-i18n-placeholder="maneuvername" name="attr_maneuvername" placeholder="maneuvername" spellcheck="false" title="@{maneuvername}" type="text" value="" />
<input data-i18n-placeholder="maneuvercost" name="attr_maneuvercost" placeholder="maneuvercost" spellcheck="false" title="@{maneuvercost}" type="text" value="" />
<input data-i18n-placeholder="maneuveractivation" name="attr_maneuveractivation" placeholder="maneuveractivation" spellcheck="false" title="@{maneuveractivation}" type="text" value="" />
<input data-i18n-placeholder="maneuverpg" name="attr_maneuverpg" placeholder="maneuverpg" spellcheck="false" title="@{maneuverpg}" type="text" value="" />
<input class="sheet-maneuvernotetoggle" data-i18n-placeholder="maneuvernotetoggle" placeholder="maneuvernotetoggle" spellcheck="false" title="@{maneuvernotetoggle}" type="checkbox" name="attr_maneuvernotetoggle" value="1" />
<div class="sheet-maneuvernotes">
<textarea data-i18n-placeholder="maneuvernotes" name="attr_maneuvernotes" placeholder="maneuvernotes" spellcheck="false" title="@{maneuvernotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class='sheet-display-explorationknacks'>
<label data-i18n-title="explorationknacks" title="explorationknacks">
<span data-i18n="explorationknacks">explorationknacks</span>
<div class="sheet-explorationknackslist">
<fieldset class="repeating_explorationknacks">
<label data-i18n-title="repeatingexplorationknacks" title="repeatingexplorationknacks">
<input data-i18n-placeholder="explorationknacksname" name="attr_explorationknacksname" placeholder="explorationknacksname" spellcheck="false" title="@{explorationknacksname}" type="text" value="" /><br>
<textarea data-i18n-placeholder="explorationknacksinfo" name="attr_explorationknacksinfo" placeholder="explorationknacksinfo" spellcheck="false" title="@{explorationknacksinfo}" type="text" value="" />
</label>
</fieldset>
</div>
<textarea data-i18n-placeholder="explorationknacks" name="attr_explorationknacks" placeholder="explorationknacks" spellcheck="false" title="@{explorationknacks}" type="text" value="" />
</label>
</div>
</div>
<div class="sheet-backgrounds">
<div class="sheet-appearance">
<div class='sheet-display-character_appearance'>
<label data-i18n-title="character_appearance" title="character_appearance">
<span data-i18n="character_appearance">character_appearance</span>
<textarea data-i18n-placeholder="character_appearance" name="attr_character_appearance" placeholder="character_appearance" spellcheck="false" title="@{character_appearance}" type="text" value="" />
</label>
</div>
<div class="sheet-display-character_description">
<label data-i18n-title="age" title="age">
<span data-i18n="age">Age</span>
<input data-i18n-placeholder="age" name="attr_age" placeholder="class level archtype" spellcheck="false" title="@{age}" type="text" value="" />
</label>
<label data-i18n-title="height" title="height">
<span data-i18n="height">height</span>
<input data-i18n-placeholder="height" name="attr_height" placeholder="height" spellcheck="false" title="@{height}" type="text" value="" />
</label>
<label data-i18n-title="weight" title="weight">
<span data-i18n="weight">weight</span>
<input data-i18n-placeholder="weight" name="attr_weight" placeholder="weight" spellcheck="false" title="@{weight}" type="text" value="" />
</label>
<label data-i18n-title="eyes" title="eyes">
<span data-i18n="eyes">eyes</span>
<input data-i18n-placeholder="eyes" name="attr_eyes" placeholder="eyes" spellcheck="false" title="@{eyes}" type="text" value="" />
</label>
<label data-i18n-title="skin" title="skin">
<span data-i18n="skin">skin</span>
<input data-i18n-placeholder="skin" name="attr_skin" placeholder="skin" spellcheck="false" title="@{skin}" type="text" value="" />
</label>
<label data-i18n-title="hair" title="hair">
<span data-i18n="hair">hair</span>
<input data-i18n-placeholder="hair" name="attr_hair" placeholder="hair" spellcheck="false" title="@{hair}" type="text" value="" />
</label>
</div>
</div>
<div class="sheet-background">
<div class='sheet-display-character_background'>
<label data-i18n-title="character_background" title="character_background">
<span data-i18n="character_background">character_background</span>
<textarea data-i18n-placeholder="character_background" name="attr_character_background" placeholder="character_background" spellcheck="false" title="@{character_background}" type="text" value="" />
</label>
</div>
<div class='sheet-display-character_allies_and_org'>
<label data-i18n-title="character_allies_and_org" title="character_allies_and_org">
<span data-i18n="character_allies_and_org">character_allies_and_org</span>
<textarea data-i18n-placeholder="character_allies_and_org" name="attr_character_allies_and_org" placeholder="character_allies_and_org" spellcheck="false" title="@{character_allies_and_org}" type="text" value="" />
</label>
</div>
</div>
</div>
<div class="sheet-inventory">
<div class="sheet-followers">
<label data-i18n-title="followers_and_strongholds" title="followers_and_strongholds">
<span data-i18n="followers_and_strongholds">followers_and_strongholds</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="type" title="type">
<span data-i18n="type">type</span>
</label>
<label data-i18n-title="ability" title="ability">
<span data-i18n="ability">ability</span>
</label>
<div class="sheet-followerlist">
<fieldset class="repeating_followers">
<label data-i18n-title="repeatingfollowers" title="repeatingfollowers">
<input data-i18n-placeholder="followername" name="attr_followername" placeholder="followername" spellcheck="false" title="@{followername}" type="text" value="" />
<input data-i18n-placeholder="followertype" name="attr_followertype" placeholder="followertype" spellcheck="false" title="@{followertype}" type="text" value="" />
<input data-i18n-placeholder="followerability" name="attr_followerability" placeholder="followerability" spellcheck="false" title="@{followerability}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-equipment_and_treasure">
<div class="sheet-equipment">
<label data-i18n-title="equipment" title="equipment">
<span data-i18n="equipment">equipment</span>
</label>
<label data-i18n-title="total_wt" title="total_wt">
<span data-i18n="total_wt">total_wt</span>
<input data-i18n-placeholder="total_wt" name="attr_total_wt" placeholder="total_wt" spellcheck="false" title="@{total_wt}" type="number" value="" />
</label>
<label data-i18n-title="wt" title="wt">
<span data-i18n="wt">wt</span>
</label>
<label data-i18n-title="item" title="item">
<span data-i18n="item">item</span>
</label>
<label data-i18n-title="properties" title="properties">
<span data-i18n="properties">properties</span>
</label>
<div class="sheet-equipmentlist">
<fieldset class="repeating_equipment">
<label data-i18n-title="repeatingequipment" title="repeatingequipment">
<input data-i18n-placeholder="equipmentwt" name="attr_equipmentwt" placeholder="equipmentwt" spellcheck="false" title="@{equipmentwt}" type="number" value="" />
<input data-i18n-placeholder="equipmentitem" name="attr_equipmentitem" placeholder="equipmentitem" spellcheck="false" title="@{equipmentitem}" type="text" value="" />
<input data-i18n-placeholder="equipmentproperties" name="attr_equipmentproperties" placeholder="equipmentproperties" spellcheck="false" title="@{equipmentproperties}" type="text" value="" />
<input class="sheet-equipmentnotetoggle" data-i18n-placeholder="equipmentnotetoggle" placeholder="equipmentnotetoggle" spellcheck="false" title="@{equipmentnotetoggle}" type="checkbox" name="attr_equipmentnotetoggle" value="1" />
<div class="sheet-equipmentnotes">
<textarea data-i18n-placeholder="equipmentnotes" name="attr_equipmentnotes" placeholder="equipmentnotes" spellcheck="false" title="@{equipmentnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
<label data-i18n-title="bulky_items" title="bulky_items">
<span data-i18n="bulky_items">bulky_items</span>
</label>
<label data-i18n-title="bulky_items_max" title="bulky_items_max">
<span data-i18n="bulky_items_max">bulky_items_max</span>
<input data-i18n-placeholder="bulky_items_max" name="attr_bulky_items_max" placeholder="bulky_items_max" spellcheck="false" title="@{bulky_items_max}" type="number" value="" />
</label>
<div class="sheet-bulkylist">
<fieldset class="repeating_bulky">
<label data-i18n-title="repeatingbulky" title="repeatingbulky">
<input data-i18n-placeholder="bulkyname" name="attr_bulkyname" placeholder="bulkyname" spellcheck="false" title="@{bulkyname}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-treasure">
<label data-i18n-title="treasure" title="treasure">
<span data-i18n="treasure">treasure</span>
<textarea data-i18n-placeholder="treasure" name="attr_treasure" placeholder="treasure" spellcheck="false" title="@{treasure}" type="text" value="" />
</label>
</div>
</div>
<div class="sheet-display-coins">
<label data-i18n-title="cp" title="cp">
<span data-i18n="cp">cp</span>
<input data-i18n-placeholder="cp" name="attr_cp" placeholder="cp" spellcheck="false" title="@{cp}" type="number" value="" />
</label>
<label data-i18n-title="sp" title="sp">
<span data-i18n="sp">sp</span>
<input data-i18n-placeholder="sp" name="attr_sp" placeholder="sp" spellcheck="false" title="@{sp}" type="number" value="" />
</label>
<label data-i18n-title="ep" title="ep">
<span data-i18n="ep">ep</span>
<input data-i18n-placeholder="ep" name="attr_ep" placeholder="ep" spellcheck="false" title="@{ep}" type="number" value="" />
</label>
<label data-i18n-title="gp" title="gp">
<span data-i18n="gp">gp</span>
<input data-i18n-placeholder="gp" name="attr_gp" placeholder="gp" spellcheck="false" title="@{gp}" type="number" value="" />
</label>
<label data-i18n-title="pp" title="pp">
<span data-i18n="pp">pp</span>
<input data-i18n-placeholder="pp" name="attr_pp" placeholder="pp" spellcheck="false" title="@{pp}" type="number" value="" />
</label>
</div>
</div>
<div class="sheet-spells">
<div class="sheet-spellcasting_class">
<label data-i18n-title="spellcasting_class" title="spellcasting_class">
<span data-i18n="spellcasting_class">spellcasting_class</span>
</label>
<label data-i18n-title="spellcasting_ability" title="spellcasting_ability">
<span data-i18n="spellcasting_ability">spellcasting_ability</span>
</label>
<label data-i18n-title="spellsave_dc" title="spellsave_dc">
<span data-i18n="spellsave_dc">spellsave_dc</span>
</label>
<label data-i18n-title="spellsave_form" title="spellsave_form">
<span data-i18n="spellsave_form">spellsave_form</span>
</label>
<label data-i18n-title="spellattack_bonus" title="spellattack_bonus">
<span data-i18n="spellattack_bonus">spellattack_bonus</span>
</label>
<label data-i18n-title="spellattack_form" title="spellattack_form">
<span data-i18n="spellattack_form">spellattack_form</span>
</label>
<label data-i18n-title="sorcerer_warlock" title="sorcerer_warlock">
<span data-i18n="sorcerer_warlock">sorcerer_warlock</span>
</label>
<label data-i18n-title="spell_points" title="spell_points">
<span data-i18n="spell_points">spell_points</span>
</label>
<div class="sheet-spellclasslist">
<fieldset class="repeating_spellclass">
<label data-i18n-title="repeatingspellclass" title="repeatingspellclass">
<input data-i18n-placeholder="spellclassname" name="attr_spellclassname" placeholder="spellclassname" spellcheck="false" title="@{spellclassname}" type="text" value="" />
<input data-i18n-placeholder="spellclassability" name="attr_spellclassability" placeholder="spellclassability" spellcheck="false" title="@{spellclassability}" type="text" value="" list="statlist"/>
<input data-i18n-placeholder="spellclassdc" name="attr_spellclassdc" placeholder="spellclassdc" spellcheck="false" title="@{spellclassdc}" type="number" value="" />
<input data-i18n-placeholder="spellclassattack" name="attr_spellclassattack" placeholder="spellclassattack" spellcheck="false" title="@{spellclassattack}" type="number" value="" />
<input data-i18n-placeholder="spellclasspoints" name="attr_spellclasspoints" placeholder="spellclasspoints" spellcheck="false" title="@{spellclasspoints}" type="number" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-spells">
<div class="sheet-display-cantrips">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="0" title="0">
<span data-i18n="0">0</span>
</label>
</div>
<label data-i18n-title="cantrips" title="cantrips">
<span data-i18n="cantrips">cantrips</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-cantriplist">
<fieldset class="repeating_cantrips">
<label data-i18n-title="repeatingcantrips" title="repeatingcantrips">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-cantripnotetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-cantripnotes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level1">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="1" title="1">
<span data-i18n="1">1</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown1" placeholder="0" spellcheck="false" title="@{spellknown1}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots1" placeholder="0" spellcheck="false" title="@{spellslots1}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended1" placeholder="0" spellcheck="false" title="@{spellexpended1}" type="number" value="" />
</label>
<label data-i18n-title="sp2" title="sp2">
<span data-i18n="sp2">sp2</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl1list">
<fieldset class="repeating_lvl1">
<label data-i18n-title="repeatinglvl1" title="repeatinglvl1">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level1notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level1notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level2">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="2" title="2">
<span data-i18n="2">2</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown2" placeholder="0" spellcheck="false" title="@{spellknown2}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots2" placeholder="0" spellcheck="false" title="@{spellslots2}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended2" placeholder="0" spellcheck="false" title="@{spellexpended2}" type="number" value="" />
</label>
<label data-i18n-title="sp3" title="sp3">
<span data-i18n="sp3">sp3</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl2list">
<fieldset class="repeating_lvl2">
<label data-i18n-title="repeatinglvl2" title="repeatinglvl2">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level2notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level2notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level3">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="3" title="3">
<span data-i18n="3">3</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown3" placeholder="0" spellcheck="false" title="@{spellknown3}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots3" placeholder="0" spellcheck="false" title="@{spellslots3}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended3" placeholder="0" spellcheck="false" title="@{spellexpended3}" type="number" value="" />
</label>
<label data-i18n-title="sp5" title="sp5">
<span data-i18n="sp5">sp5</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl3list">
<fieldset class="repeating_lvl3">
<label data-i18n-title="repeatinglvl3" title="repeatinglvl3">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level3notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level3notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level4">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="4" title="4">
<span data-i18n="4">4</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown4" placeholder="0" spellcheck="false" title="@{spellknown4}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots4" placeholder="0" spellcheck="false" title="@{spellslots4}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended4" placeholder="0" spellcheck="false" title="@{spellexpended4}" type="number" value="" />
</label>
<label data-i18n-title="sp6" title="sp6">
<span data-i18n="sp6">sp6</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl4list">
<fieldset class="repeating_lvl4">
<label data-i18n-title="repeatinglvl4" title="repeatinglvl4s">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level4notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level4notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level5">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="5" title="5">
<span data-i18n="5">5</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown5" placeholder="0" spellcheck="false" title="@{spellknown5}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots5" placeholder="0" spellcheck="false" title="@{spellslots5}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended5" placeholder="0" spellcheck="false" title="@{spellexpended5}" type="number" value="" />
</label>
<label data-i18n-title="sp7" title="sp7">
<span data-i18n="sp7">sp7</span>
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl5list">
<fieldset class="repeating_lvl5">
<label data-i18n-title="repeatinglvl5" title="repeatinglvl5">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level5notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level5notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level6">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="6" title="6">
<span data-i18n="6">6</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown6" placeholder="0" spellcheck="false" title="@{spellknown6}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots6" placeholder="0" spellcheck="false" title="@{spellslots6}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended6" placeholder="0" spellcheck="false" title="@{spellexpended6}" type="number" value="" />
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl6list">
<fieldset class="repeating_lvl6">
<label data-i18n-title="repeatinglvl6" title="repeatinglvl6">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level6notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level6notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level7">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="7" title="7">
<span data-i18n="7">7</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown7" placeholder="0" spellcheck="false" title="@{spellknown7}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots7" placeholder="0" spellcheck="false" title="@{spellslots7}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended7" placeholder="0" spellcheck="false" title="@{spellexpended7}" type="number" value="" />
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl7list">
<fieldset class="repeating_lvl7">
<label data-i18n-title="repeatinglvl7" title="repeatinglvl7">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level7notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level7notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level8">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="8" title="8">
<span data-i18n="8">8</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown8" placeholder="0" spellcheck="false" title="@{spellknown8}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots8" placeholder="0" spellcheck="false" title="@{spellslots8}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended8" placeholder="0" spellcheck="false" title="@{spellexpended8}" type="number" value="" />
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl8list">
<fieldset class="repeating_lvl8">
<label data-i18n-title="repeatinglvl8" title="repeatinglvl8">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level8notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level8notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
<div class="sheet-display-level9">
<div class="sheet-lvl">
<label data-i18n-title="lvl" title="lvl">
<span data-i18n="lvl">lvl</span>
</label>
<label data-i18n-title="9" title="9">
<span data-i18n="9">9</span>
</label>
</div>
<label data-i18n-title="known" title="known">
<span data-i18n="known">known</span>
<input data-i18n-placeholder="0" name="attr_spellknown9" placeholder="0" spellcheck="false" title="@{spellknown9}" type="number" value="" />
</label>
<label data-i18n-title="slots" title="slots">
<span data-i18n="slots">slots</span>
<input data-i18n-placeholder="0" name="attr_spellslots9" placeholder="0" spellcheck="false" title="@{spellslots9}" type="number" value="" />
</label>
<label data-i18n-title="expended" title="expended">
<span data-i18n="expended">expended</span>
<input data-i18n-placeholder="0" name="attr_spellexpended9" placeholder="0" spellcheck="false" title="@{spellexpended9}" type="number" value="" />
</label>
<label data-i18n-title="pg" title="pg">
<span data-i18n="pg">pg</span>
</label>
<div class="sheet-lvl9list">
<fieldset class="repeating_lvl9">
<label data-i18n-title="repeatinglvl9" title="repeatinglvl9">
<input data-i18n-placeholder="spellname" name="attr_spellname" placeholder="spellname" spellcheck="false" title="@{spellname}" type="text" value="" />
<input data-i18n-placeholder="spellpg" name="attr_spellpg" placeholder="spellpg" spellcheck="false" title="@{spellpg}" type="number" value="" />
<input class="sheet-level9notetoggle" data-i18n-placeholder="spellnotetoggle" placeholder="spellnotetoggle" spellcheck="false" title="@{spellnotetoggle}" type="checkbox" name="attr_spellnotetoggle" value="1" />
<div class="sheet-level9notes">
<textarea data-i18n-placeholder="spellnotes" name="attr_spellnotes" placeholder="spellnotes" spellcheck="false" title="@{spellnotes}" type="text" value="" />
</div>
</label>
</fieldset>
</div>
</div>
</div>
</div>
<div class="sheet-notes">
<div class="sheet-note">
<label data-i18n-title="notes" title="notes">
<span data-i18n="notes">notes</span>
<textarea data-i18n-placeholder="notes" name="attr_notes" placeholder="notes" spellcheck="false" title="@{notes}" type="text" value="" />
</label>
</div>
</div>
</div>
<div class='sheet-NPC'>
<div class="sheet-npc-header">
<label data-i18n-title="npc_name" title="npc name">
<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="ChallengeRating" title="ChallengeRating">
<span data-i18n="challenge">challenge</span>
<input data-i18n-placeholder="challenge" name="attr_CR" placeholder="challenge" spellcheck="false" title="@{challenge}" type="text"/>
</label>
<label data-i18n-title="CreatureSizeType" title="CreatureSizeType">
<input data-i18n-placeholder="creaturesize" name="attr_creaturesize" placeholder="creaturesize" spellcheck="false" title="@{creaturesize}" type="text" list="sizelist"/>
<input data-i18n-placeholder="creaturetype" name="attr_creaturetype" placeholder="creaturetype" spellcheck="false" title="@{creaturetype}" type="text" list="creaturetypelist"/>
</label>
<label data-i18n-title="XPReward" title="XPReward">
<input data-i18n-placeholder="xpreward" name="attr_xpreward" placeholder="xpreward" spellcheck="false" title="@{xpreward}" type="text"/>
<span data-i18n="xp">xp</span>
</label>
</div>
<div class="sheet-statsinfo">
<label data-i18n-title="stats" title="stats">
<input name="attr_statsinfo_type" type="radio" value="stats"><span data-i18n="stats"></span></input>
</label>
<label data-i18n-title="info" title="info">
<input name="attr_statsinfo_type" type="radio" value="info"><span data-i18n="info"></span></input>
</label>
<label data-i18n-title="info1" title="info1">
</label>
<label data-i18n-title="info2" title="info2">
</label>
<label data-i18n-title="info3" title="info3">
</label>
<label data-i18n-title="info4" title="info4">
</label>
<label data-i18n-title="info5" title="info5">
</label>
<label data-i18n-title="info6" title="info6">
</label>
</div>
<div class="sheet-npcstats">
<div class="sheet-npcstat">
<label data-i18n-title="armourclass" title="armourclass">
<span data-i18n="armour_class">armour_class</span>
<input data-i18n-placeholder="armour_class" name="attr_AC" placeholder="armour_class" spellcheck="false" title="@{armour_class}" type="text" value="" />
</label>
<label data-i18n-title="hit_points" title="hit_points">
<span data-i18n="hit_points">hit_points</span>
<input data-i18n-placeholder="hit_points" name="attr_HP" placeholder="hit_points" spellcheck="false" title="@{HP}" type="number" value="" />
<span data-i18n="hit_points_maximum">hit_points_maximum</span>
<input data-i18n-placeholder="hit_points_maximum" name="attr_HP_max" placeholder="hit_points_maximum" spellcheck="false" title="@{hit_points_maximum}" type="number" value="" />
<span data-i18n="bloodiedHP">bloodiedHP</span>
<input data-i18n-placeholder="bloodiedHP" name="attr_HP_bloodied" placeholder="bloodiedHP" spellcheck="false" title="@{bloodiedHP}" type="number" value="" />
<input data-i18n-placeholder="hit_dice" name="attr_hit_dice" placeholder="hit_dice" spellcheck="false" title="@{hit_dice}" type="text" value="" />
</label>
<label data-i18n-title="speed" title="speed">
<span data-i18n="speed">speed</span>
<input data-i18n-placeholder="speed" name="attr_speed" placeholder="speed" spellcheck="false" title="@{speed}" type="text" value="" />
</label>
<div class='sheet-display-npcinitiative'>
<label data-i18n-title="initiative" title="initiative">
<span data-i18n="initiative">initiative</span>
<input data-i18n-placeholder="initiative" name="attr_npcinitiative" placeholder="initiative" spellcheck="false" title="@{npcinitiative}" type="number" value="0" />
<button type="action" name="act_npcinitiative-button"></button>
</label>
</div>
</div>
<div class="sheet-statblock">
<label data-i18n-title="str" title="str">
<span data-i18n="str">str</span>
<button type="roll" name="act_strength_roll" value="@{strength-action}"></button>
</label>
<label data-i18n-title="dex" title="dex">
<span data-i18n="dex">dex</span>
<button type="roll" name="act_dexterity_roll" value="@{dexterity-action}"></button>
</label>
<label data-i18n-title="con" title="con">
<span data-i18n="con">con</span>
<button type="roll" name="act_constitution_roll" value="@{constitution-action}"></button>
</label>
<label data-i18n-title="int" title="int">
<span data-i18n="int">int</span>
<button type="roll" name="act_intelligence_roll" value="@{intelligence-action}"></button>
</label>
<label data-i18n-title="wis" title="wis">
<span data-i18n="wis">wis</span>
<button type="roll" name="act_wisdom_roll" value="@{wisdom-action}"></button>
</label>
<label data-i18n-title="cha" title="cha">
<span data-i18n="cha">cha</span>
<button type="roll" name="act_charisma_roll" value="@{charisma-action}"></button>
</label>
<label data-i18n-title="save" title="save">
<span data-i18n="save">saves</span>
</label>
<label data-i18n-title="strengthstat" title="strengthstat">
<input data-i18n-placeholder="strength" name="attr_strength" placeholder="strength" spellcheck="false" title="@{strength}" type="number" value="" />
</label>
<label data-i18n-title="strength_mod" title="strength_mod">
(<input data-i18n-placeholder="strength_mod" name="attr_strength_mod" placeholder="0" spellcheck="false" title="@{strength_mod}" type="number"/>)
</label>
<label data-i18n-title="strength_save_mod" title="strength_save_mod">
(<input data-i18n-placeholder="strength_save_mod" name="attr_strength_save_mod" placeholder="0" spellcheck="false" title="@{strength_save_mod}" type="number"/>)
<button type="roll" name="act_strength_save_roll" value="@{strengthsave-action}"></button>
<input data-i18n-placeholder="strength_save_prof" name="attr_strength_save_prof" title="@{strength_save_prof}" type="checkbox" value="1"/>
</label>
<label data-i18n-title="dexteritystat" title="dexteritystat">
<input data-i18n-placeholder="dexterity" name="attr_dexterity" placeholder="dexterity" spellcheck="false" title="@{dexterity}" type="number" value="" />
</label>
<label data-i18n-title="dexterity_mod" title="dexterity_mod">
(<input data-i18n-placeholder="dexterity_mod" name="attr_dexterity_mod" placeholder="0" spellcheck="false" title="@{dexterity_mod}" type="number"/>)
</label>
<label data-i18n-title="dexterity_save_mod" title="dexterity_save_mod">
(<input data-i18n-placeholder="dexterity_save_mod" name="attr_dexterity_save_mod" placeholder="0" spellcheck="false" title="@{dexterity_save_mod}" type="number"/>)
<button type="roll" name="act_dexterity_save_roll" value="@{dexteritysave-action}"></button>
<input data-i18n-placeholder="dexterity_save_prof" name="attr_dexterity_save_prof" title="@{dexterity_save_prof}" type="checkbox" value="1"/>
</label>
<label data-i18n-title="constitutionstat" title="constitutionstat">
<input data-i18n-placeholder="constitution" name="attr_constitution" placeholder="constitution" spellcheck="false" title="@{constitution}" type="number" value="" />
</label>
<label data-i18n-title="constitution_mod" title="constitution_mod">
(<input data-i18n-placeholder="constitution_mod" name="attr_constitution_mod" placeholder="0" spellcheck="false" title="@{constitution_mod}" type="number"/>)
</label>
<label data-i18n-title="constitution_save_mod" title="constitution_save_mod">
(<input data-i18n-placeholder="constitution_save_mod" name="attr_constitution_save_mod" placeholder="0" spellcheck="false" title="@{constitution_save_mod}" type="number"/>)
<button type="roll" name="act_constitution_save_roll" value="@{constitutionsave-action}"></button>
<input data-i18n-placeholder="constitution_save_prof" name="attr_constitution_save_prof" title="@{constitution_save_prof}" type="checkbox" value="1"/>
</label>
<label data-i18n-title="intelligencestat" title="intelligencestat">
<input data-i18n-placeholder="intelligence" name="attr_intelligence" placeholder="intelligence" spellcheck="false" title="@{intelligence}" type="number" value="" />
</label>
<label data-i18n-title="intelligence_mod" title="intelligence_mod">
(<input data-i18n-placeholder="intelligence_mod" name="attr_intelligence_mod" placeholder="0" spellcheck="false" title="@{intelligence_mod}" type="number"/>)
</label>
<label data-i18n-title="intelligence_save_mod" title="intelligence_save_mod">
(<input data-i18n-placeholder="intelligence_save_mod" name="attr_intelligence_save_mod" placeholder="0" spellcheck="false" title="@{intelligence_save_mod}" type="number"/>)
<button type="roll" name="act_intelligence_save_roll" value="@{intelligencesave-action}"></button>
<input data-i18n-placeholder="intelligence_save_prof" name="attr_intelligence_save_prof" title="@{intelligence_save_prof}" type="checkbox" value="1"/>
</label>
<label data-i18n-title="wisdomstat" title="wisdomstat">
<input data-i18n-placeholder="wisdom" name="attr_wisdom" placeholder="wisdom" spellcheck="false" title="@{wisdom}" type="number" value="" />
</label>
<label data-i18n-title="wisdom_mod" title="wisdom_mod">
(<input data-i18n-placeholder="wisdom_mod" name="attr_wisdom_mod" placeholder="0" spellcheck="false" title="@{wisdom_mod}" type="number"/>)
</label>
<label data-i18n-title="wisdom_save_mod" title="wisdom_save_mod">
(<input data-i18n-placeholder="wisdom_save_mod" name="attr_wisdom_save_mod" placeholder="0" spellcheck="false" title="@{wisdom_save_mod}" type="number"/>)
<button type="roll" name="act_wisdom_save_roll" value="@{wisdomsave-action}"></button>
<input data-i18n-placeholder="wisdom_save_prof" name="attr_wisdom_save_prof" title="@{wisdom_save_prof}" type="checkbox" value="1"/>
</label>
<label data-i18n-title="charismastat" title="charismastat">
<input data-i18n-placeholder="charisma" name="attr_charisma" placeholder="charisma" spellcheck="false" title="@{charisma}" type="number" value="" />
</label>
<label data-i18n-title="charisma_mod" title="charisma_mod">
(<input data-i18n-placeholder="charisma_mod" name="attr_charisma_mod" placeholder="0" spellcheck="false" title="@{charisma_mod}" type="number"/>)
</label>
<label data-i18n-title="charisma_save_mod" title="charisma_save_mod">
(<input data-i18n-placeholder="charisma_save_mod" name="attr_charisma_save_mod" placeholder="0" spellcheck="false" title="@{charisma_save_mod}" type="number"/>)
<button type="roll" name="act_charisma_save_roll" value="@{charismasave-action}"></button>
<input data-i18n-placeholder="charisma_save_prof" name="attr_charisma_save_prof" title="@{charisma_save_prof}" type="checkbox" value="1"/>
</label>
</div>
<div class="sheet-profman">
<label data-i18n-title="prof" title="prof">
<span data-i18n="prof">prof</span>
<input data-i18n-placeholder="prof" name="attr_PB" placeholder="prof" spellcheck="false" title="@{PB}" type="number" value="" />
</label>
<label data-i18n-title="maneuverdc" title="maneuverdc">
<span data-i18n="maneuverdc">maneuverdc</span>
<input data-i18n-placeholder="maneuverdc" name="attr_maneuverdc" placeholder="maneuverdc" spellcheck="false" title="@{maneuverdc}" type="number" value="" />
</label>
</div>
<div class="sheet-skills">
<label data-i18n-title="skills" title="skills">
<span data-i18n="skills">skills</span>
</label>
<label data-i18n-title="skill" title="skill">
<span data-i18n="skill">skill</span>
</label>
<label data-i18n-title="skill_bonus" title="skill_bonus">
<span data-i18n="skill_bonus">skill_bonus</span>
</label>
<label data-i18n-title="expertise_dice" title="expertise_dice">
<span data-i18n="expertise_dice">expertise_dice</span>
</label>
<div class="sheet-skilllist">
<fieldset class="repeating_skills">
<label data-i18n-title="repeatingskills" title="repeatingskills">
<button data-i18n-placeholder="skill-button" type="action" name="attr_skill-button"></button>
<input data-i18n-placeholder="skillname" name="attr_skillname" placeholder="skillname" spellcheck="false" title="@{skillname}" type="text" value="" />
<input data-i18n-placeholder="skillbonus" name="attr_skillbonus" placeholder="skillbonus" spellcheck="false" title="@{skillbonus}" type="number" />
<input data-i18n-placeholder="skillexdice" name="attr_skillexdice" placeholder="skillexdice" spellcheck="false" title="@{skillexdice}" type="text" list="dicelist" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-vulresinn">
<label data-i18n-title="damage vulnerabilities" title="damage vulnerabilities">
<span data-i18n="damage vulnerabilities">damage vulnerabilities</span>
<input data-i18n-placeholder="damage vulnerabilities" name="attr_damage vulnerabilities" placeholder="damage vulnerabilities" spellcheck="false" title="@{damage vulnerabilities}" type="text" value="" />
</label>
<label data-i18n-title="damage resistances" title="damage resistances">
<span data-i18n="damage resistances">damage resistances</span>
<input data-i18n-placeholder="damage resistances" name="attr_damage resistances" placeholder="damage resistances" spellcheck="false" title="@{damage resistances}" type="text" value="" />
</label>
<label data-i18n-title="damage immunities" title="damage immunities">
<span data-i18n="damage immunities">damage immunities</span>
<input data-i18n-placeholder="damage immunities" name="attr_damage immunities" placeholder="damage immunities" spellcheck="false" title="@{damage immunities}" type="text" value="" />
</label>
<label data-i18n-title="condition immunities" title="condition immunities">
<span data-i18n="condition immunities">condition immunities</span>
<input data-i18n-placeholder="condition immunities" name="attr_condition immunities" placeholder="condition immunities" spellcheck="false" title="@{condition immunities}" type="text" value="" />
</label>
</div>
<div class="sheet-senlang">
<label data-i18n-title="senses" title="senses">
<span data-i18n="senses">senses</span>
<input data-i18n-placeholder="senses" name="attr_senses" placeholder="senses" 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="languages" name="attr_languages" placeholder="languages" spellcheck="false" title="@{languages}" type="text" value="" />
</label>
</div>
<div class="sheet-abilities_and_powers">
<label data-i18n-title="abilities_and_powers" title="abilities_and_powers">
<span data-i18n="abilities_and_powers">abilities_and_powers</span>
<textarea data-i18n-placeholder="abilities_and_powers" name="attr_abilities_and_powers" placeholder="abilities_and_powers" spellcheck="false" title="@{abilities_and_powers}" />
</label>
</div>
<div class="sheet-attacks">
<label data-i18n-title="attacks_and_spellcasting" title="attacks_and_spellcasting">
<span data-i18n="attacks_and_spellcasting">attacks_and_spellcasting</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="atk_bonus" title="atk_bonus">
<span data-i18n="atk_bonus">atk_bonus</span>
</label>
<label data-i18n-title="damage" title="damage">
<span data-i18n="damage">damage</span>
</label>
<label data-i18n-title="type" title="type">
<span data-i18n="type">type</span>
</label>
<label data-i18n-title="range" title="range">
<span data-i18n="range">range</span>
</label>
<label data-i18n-title="notes" title="notes">
<span data-i18n="notes">notes</span>
</label>
<div class="sheet-attacklist">
<fieldset class="repeating_attacks">
<label data-i18n-title="repeatingattacks" title="repeatingattacks">
<button data-i18n-placeholder="attack-button" type="action" name="attr_attack-button"></button>
<input data-i18n-placeholder="attackname" name="attr_attackname" placeholder="attackname" spellcheck="false" title="@{attackname}" type="text" value="" />
<input data-i18n-placeholder="attackbonus" name="attr_attackbonus" placeholder="attackbonus" spellcheck="false" title="@{attackbonus}" type="text" value="" />
<input data-i18n-placeholder="attackdamage" name="attr_attackdamage" placeholder="attackdamage" spellcheck="false" title="@{attackdamage}" type="text" value="" />
<input data-i18n-placeholder="attackdamagetype" name="attr_attackdamagetype" placeholder="attackdamagetype" spellcheck="false" title="@{attackdamagetype}" type="text" value="" list="damagetypelist"/>
<input data-i18n-placeholder="attackrange" name="attr_attackrange" placeholder="attackrange" spellcheck="false" title="@{attackrange}" type="text" value="" />
<input data-i18n-placeholder="attacknotes" name="attr_attacknotes" placeholder="attacknotes" spellcheck="false" title="@{attacknotes}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-actions">
<label data-i18n-title="actions" title="actions">
<span data-i18n="actions">actions</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="description" title="description">
<span data-i18n="description">description</span>
</label>
<div class="sheet-actionlist">
<fieldset class="repeating_actions">
<label data-i18n-title="repeatingactions" title="repeatingactionss">
<input data-i18n-placeholder="actionname" name="attr_actionname" placeholder="actionname" spellcheck="false" title="@{actionname}" type="text" value="" />
<input data-i18n-placeholder="actionnotes" name="attr_actionnotes" placeholder="actionnotes" spellcheck="false" title="@{actionnotes}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-bonusactions">
<label data-i18n-title="bonusactions" title="bonusactions">
<span data-i18n="bonusactions">bonusactions</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="description" title="description">
<span data-i18n="description">description</span>
</label>
<div class="sheet-bonuslist">
<fieldset class="repeating_bonusactions">
<label data-i18n-title="repeatingbonusactions" title="repeatingbonusactionss">
<input data-i18n-placeholder="bonusname" name="attr_bonusname" placeholder="bonusname" spellcheck="false" title="@{bonusname}" type="text" value="" />
<input data-i18n-placeholder="bonusnotes" name="attr_bonusnotes" placeholder="bonusnotes" spellcheck="false" title="@{bonusnotes}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-reactions">
<label data-i18n-title="reactions" title="reactions">
<span data-i18n="reactions">reactions</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="description" title="description">
<span data-i18n="description">description</span>
</label>
<div class="sheet-reactionslist">
<fieldset class="repeating_reactions">
<label data-i18n-title="repeatingreactions" title="repeatingreactions">
<input data-i18n-placeholder="reactionsname" name="attr_reactionsname" placeholder="reactionsname" spellcheck="false" title="@{reactionsname}" type="text" value="" />
<input data-i18n-placeholder="reactionsnotes" name="attr_reactionsnotes" placeholder="reactionsnotes" spellcheck="false" title="@{reactionsnotes}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
<div class="sheet-legendaryactions">
<label data-i18n-title="legendaryactions" title="legendaryactions">
<span data-i18n="legendaryactions">legendaryactions</span>
</label>
<label data-i18n-title="name" title="name">
<span data-i18n="name">name</span>
</label>
<label data-i18n-title="description" title="description">
<span data-i18n="description">description</span>
</label>
<div class="sheet-legendarylist">
<fieldset class="repeating_legendaryactions">
<label data-i18n-title="repeatinglegendaryactions" title="repeatinglegendaryactionss">
<input data-i18n-placeholder="legendaryname" name="attr_legendaryname" placeholder="legendaryname" spellcheck="false" title="@{legendaryname}" type="text" value="" />
<input data-i18n-placeholder="legendarynotes" name="attr_legendarynotes" placeholder="legendarynotes" spellcheck="false" title="@{legendarynotes}" type="text" value="" />
</label>
</fieldset>
</div>
</div>
</div>
<div class="sheet-npcinfo">
<div class="sheet-NPCNotes">
<label data-i18n-title="NPCNotes" title="NPCNotes">
<textarea data-i18n-placeholder="npcnotes" name="attr_npcnotes" placeholder="npcnotes" spellcheck="false" title="@{npcnotes}" />
</label>
</div>
<div class="sheet-NPClegend_and_lore">
<label data-i18n-title="NPClegend_and_lore" title="NPClegend_and_lore">
<span data-i18n="legend_and_lore">legend_and_lore</span>
<textarea data-i18n-placeholder="legend_and_lore" name="attr_legend_and_lore" placeholder="legend_and_lore" spellcheck="false" title="@{legend_and_lore}" />
</label>
</div>
<div class="sheet-NPCEncounters">
<label data-i18n-title="NPCEncounters" title="NPCEncounters">
<span data-i18n="encounters">encounters</span>
<textarea data-i18n-placeholder="encounters" name="attr_encounters" placeholder="encounters" spellcheck="false" title="@{encounters}" />
</label>
</div>
<div class="sheet-NPCRules">
<label data-i18n-title="NPCRules" title="NPCRules">
<span data-i18n="rules">rules</span>
<textarea data-i18n-placeholder="rules" name="attr_rules" placeholder="rules" spellcheck="false" title="@{rules}" />
</label>
</div>
<div class="sheet-NPCSigns">
<label data-i18n-title="NPCSigns" title="NPCSigns">
<span data-i18n="signs">signs</span>
<textarea data-i18n-placeholder="signs" name="attr_signs" placeholder="signs" spellcheck="false" title="@{signs}" />
</label>
</div>
<div class="sheet-NPCBehaviour">
<label data-i18n-title="NPCBehaviour" title="NPCBehaviour">
<span data-i18n="behaviour">behaviour</span>
<textarea data-i18n-placeholder="behaviour" name="attr_behaviour" placeholder="behaviour" spellcheck="false" title="@{behaviour}" />
</label>
</div>
<div class="sheet-NPCCombat">
<label data-i18n-title="NPCCombat" title="NPCCombat">
<span data-i18n="combat">combat</span>
<textarea data-i18n-placeholder="combat" name="attr_combat" placeholder="combat" spellcheck="false" title="@{combat}" />
</label>
</div>
<div class="sheet-NPCNames">
<label data-i18n-title="NPCNames" title="NPCNames">
<span data-i18n="names">names</span>
<textarea data-i18n-placeholder="names" name="attr_names" placeholder="names" spellcheck="false" title="@{names}" />
</label>
</div>
</div>
</div>
<rolltemplate class="sheet-rolltemplate-test">
<div class="sheet-template-container">
<h1>{{name}}</h1>
<div class="sheet-results">
<h4>Result = {{roll1}}</h4>
<h4>Custom Result = {{computed::roll1}}</h4>
</div>
</div>
</rolltemplate>
<script type="text/worker">
/* ---- BEGIN: TheAaronSheet.js ---- */
// Github: https://github.com/shdwjk/TheAaronSheet/blob/master/TheAaronSheet.js
// By: The Aaron, Arcane Scriptomancer
// Contact: https://app.roll20.net/users/104025/the-aaron
var TAS = TAS || (function(){
'use strict';
var version = '0.2.5',
lastUpdate = 1504710542,
loggingSettings = {
debug: {
key: 'debug',
title: 'DEBUG',
color: {
bgLabel: '#7732A2',
label: '#F2EF40',
bgText: '#FFFEB7',
text: '#7732A2'
}
},
error: {
key: 'error',
title: 'Error',
color: {
bgLabel: '#C11713',
label: 'white',
bgText: '#C11713',
text: 'white'
}
},
warn: {
key: 'warn',
title: 'Warning',
color: {
bgLabel: '#F29140',
label: 'white',
bgText: '#FFD8B7',
text: 'black'
}
},
info: {
key: 'info',
title: 'Info',
color: {
bgLabel: '#413FA9',
label: 'white',
bgText: '#B3B2EB',
text: 'black'
}
},
notice: {
key: 'notice',
title: 'Notice',
color: {
bgLabel: '#33C133',
label: 'white',
bgText: '#ADF1AD',
text: 'black'
}
},
log: {
key: 'log',
title: 'Log',
color: {
bgLabel: '#f2f240',
label: 'black',
bgText: '#ffff90',
text: 'black'
}
},
callstack: {
key: 'TAS',
title: 'function',
color: {
bgLabel: '#413FA9',
label: 'white',
bgText: '#B3B2EB',
text: 'black'
}
},
callstack_async: {
key: 'TAS',
title: 'ASYNC CALL',
color: {
bgLabel: '#413FA9',
label: 'white',
bgText: '#413FA9',
text: 'white'
}
},
TAS: {
key: 'TAS',
title: 'TAS',
color: {
bgLabel: 'grey',
label: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)',
bgText: 'grey',
text: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)'
}
}
},
config = {
debugMode: false,
logging: {
log: true,
notice: true,
info: true,
warn: true,
error: true,
debug: false
}
},
callstackRegistry = [],
queuedUpdates = {}, //< Used for delaying saves till the last moment.
complexType = function(o){
switch(typeof o){
case 'string':
return 'string';
case 'boolean':
return 'boolean';
case 'number':
return (_.isNaN(o) ? 'NaN' : (o.toString().match(/\./) ? 'decimal' : 'integer'));
case 'function':
return 'function: '+(o.name ? o.name+'()' : '(anonymous)');
case 'object':
return (_.isArray(o) ? 'array' : (_.isArguments(o) ? 'arguments' : ( _.isNull(o) ? 'null' : 'object')));
default:
return typeof o;
}
},
dataLogger = function(primaryLogger,secondaryLogger,data){
_.each(data,function(m){
var type = complexType(m);
switch(type){
case 'string':
primaryLogger(m);
break;
case 'undefined':
case 'null':
case 'NaN':
primaryLogger('['+type+']');
break;
case 'number':
case 'not a number':
case 'integer':
case 'decimal':
case 'boolean':
primaryLogger('['+type+']: '+m);
break;
default:
primaryLogger('['+type+']:=========================================');
secondaryLogger(m);
primaryLogger('=========================================================');
break;
}
});
},
colorLog = function(options){
var coloredLoggerFunction,
key = options.key,
label = options.title || 'TAS',
lBGColor = (options.color && options.color.bgLabel) || 'blue',
lTxtColor = (options.color && options.color.label) || 'white',
mBGColor = (options.color && options.color.bgText) || 'blue',
mTxtColor = (options.color && options.color.text) || 'white';
coloredLoggerFunction = function(message){
/* eslint-disable no-console */
console.log(
'%c '+label+': %c '+message + ' ',
'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
'background-color: '+mBGColor+';color: '+mTxtColor+';'
);
/* eslint-enable no-console */
};
return function(){
if('TAS'===key || config.logging[key]){
/* eslint-disable no-console */
dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
/* eslint-enable no-console */
}
};
},
logDebug = colorLog(loggingSettings.debug),
logError = colorLog(loggingSettings.error),
logWarn = colorLog(loggingSettings.warn),
logInfo = colorLog(loggingSettings.info),
logNotice = colorLog(loggingSettings.notice),
logLog = colorLog(loggingSettings.log),
log = colorLog(loggingSettings.TAS),
logCS = colorLog(loggingSettings.callstack),
logCSA = colorLog(loggingSettings.callstack_async),
registerCallstack = function(callstack,label){
var idx=_.findIndex(callstackRegistry,function(o){
return (_.difference(o.stack,callstack).length === _.difference(callstack,o.stack).length) &&
_.difference(o.stack,callstack).length === 0 &&
o.label === label;
});
if(-1 === idx){
idx=callstackRegistry.length;
callstackRegistry.push({
stack: callstack,
label: label
});
}
return idx;
},
setConfigOption = function(options){
var newconf =_.defaults(options,config);
newconf.logging=_.defaults(
(options && options.logging)||{},
config.logging
);
config=newconf;
},
isDebugMode = function(){
return config.debugMode;
},
debugMode = function(){
config.logging.debug=true;
config.debugMode = true;
},
getCallstack = function(){
var e = new Error('dummy'),
stack = _.map(_.rest(e.stack.replace(/^[^(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
.split('\n')),function(l){
return l.replace(/\s+.*$/,'');
});
return stack;
},
logCallstackSub = function(cs){
var matches, csa;
_.find(cs,function(line){
matches = line.match(/TAS_CALLSTACK_(\d+)/);
if(matches){
csa=callstackRegistry[matches[1]];
logCSA( '===================='+(csa.label ? '> '+csa.label+' <' : '')+'====================');
logCallstackSub(csa.stack);
return true;
}
logCS(line);
return false;
});
},
logCallstack = function(){
var cs;
if(config.debugMode){
cs = getCallstack();
cs.shift();
log('==============================> CALLSTACK <==============================');
logCallstackSub(cs);
log('=========================================================================');
}
},
wrapCallback = function (label, callback, context){
var callstack;
if('function' === typeof label){
context=callback;
callback=label;
label=undefined;
}
if(!config.debugMode){
return (function(cb,ctx){
return function(){
cb.apply(ctx||{},arguments);
};
}(callback,context));
}
callstack = getCallstack();
callstack.shift();
return (function(cb,ctx,cs,lbl){
var ctxref=registerCallstack(cs,lbl);
/*jshint -W054 */
return new Function('cb','ctx','TASlog',
"return function TAS_CALLSTACK_"+ctxref+"(){"+
"var start,end;"+
"TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
"start=_.now();"+
"cb.apply(ctx||{},arguments);"+
"end=_.now();"+
"TASlog('Exiting: '+(cb.name||'(anonymous function)')+' :: '+(end-start)+'ms elapsed');"+
"};")(cb,ctx,log);
/*jshint +W054 */
}(callback,context,callstack,label));
},
prepareUpdate = function( attribute, value ){
queuedUpdates[attribute]=value;
},
applyQueuedUpdates = function() {
setAttrs(queuedUpdates);
queuedUpdates = {};
},
namesFromArgs = function(args,base){
return _.chain(args)
.reduce(function(memo,attr){
if('string' === typeof attr) {
memo.push(attr);
} else if(_.isArray(args) || _.isArguments(args)){
memo = namesFromArgs(attr,memo);
}
return memo;
},(_.isArray(base) && base) || [])
.uniq()
.value();
},
addId = function(obj,value){
Object.defineProperty(obj,'id',{
value: value,
writable: false,
enumerable: false
});
},
addProp = function(obj,prop,value,fullname){
(function(){
var pname=(_.contains(['S','F','I','D'],prop) ? '_'+prop : prop),
full_pname = fullname || prop,
pvalue=value;
_.each(['S','I','F'],function(p){
if( !_.has(obj,p)){
Object.defineProperty(obj, p, {
value: {},
enumerable: false,
readonly: true
});
}
});
if( !_.has(obj,'D')){
Object.defineProperty(obj, 'D', {
value: _.reduce(_.range(10),function(m,d){
Object.defineProperty(m, d, {
value: {},
enumerable: true,
readonly: true
});
return m;
},{}),
enumerable: false,
readonly: true
});
}
// Raw value
Object.defineProperty(obj, pname, {
enumerable: true,
set: function(v){
if(v!==pvalue) {
pvalue=v;
prepareUpdate(full_pname,v);
}
},
get: function(){
return pvalue;
}
});
// string value
Object.defineProperty(obj.S, pname, {
enumerable: true,
set: function(v){
var val=v.toString();
if(val !== pvalue) {
pvalue=val;
prepareUpdate(full_pname,val);
}
},
get: function(){
return pvalue.toString();
}
});
// int value
Object.defineProperty(obj.I, pname, {
enumerable: true,
set: function(v){
var val=parseInt(v,10) || 0;
if(val !== pvalue){
pvalue=val;
prepareUpdate(full_pname,val);
}
},
get: function(){
return parseInt(pvalue,10) || 0;
}
});
// float value
Object.defineProperty(obj.F, pname, {
enumerable: true,
set: function(v){
var val=parseFloat(v) || 0;
if(val !== pvalue) {
pvalue=val;
prepareUpdate(full_pname,val);
}
},
get: function(){
return parseFloat(pvalue) || 0;
}
});
_.each(_.range(10),function(d){
Object.defineProperty(obj.D[d], pname, {
enumerable: true,
set: function(v){
var val=(parseFloat(v) || 0).toFixed(d);
if(val !== pvalue){
pvalue=val;
prepareUpdate(full_pname,val);
}
},
get: function(){
return (parseFloat(pvalue) || 0).toFixed(d);
}
});
});
}());
},
repeating = function( section ) {
return (function(s){
var sectionName = s,
attrNames = [],
fieldNames = [],
operations = [],
after = [],
repAttrs = function TAS_Repeating_Attrs(){
attrNames = namesFromArgs(arguments,attrNames);
return this;
},
repFields = function TAS_Repeating_Fields(){
fieldNames = namesFromArgs(arguments,fieldNames);
return this;
},
repReduce = function TAS_Repeating_Reduce(func, initial, final, context) {
operations.push({
type: 'reduce',
func: (func && _.isFunction(func) && func) || _.noop,
memo: (_.isUndefined(initial) && 0) || initial,
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repMap = function TAS_Repeating_Map(func, final, context) {
operations.push({
type: 'map',
func: (func && _.isFunction(func) && func) || _.noop,
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repEach = function TAS_Repeating_Each(func, final, context) {
operations.push({
type: 'each',
func: (func && _.isFunction(func) && func) || _.noop,
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repTap = function TAS_Repeating_Tap(final, context) {
operations.push({
type: 'tap',
final: (final && _.isFunction(final) && final) || _.noop,
context: context || {}
});
return this;
},
repAfter = function TAS_Repeating_After(callback,context) {
after.push({
callback: (callback && _.isFunction(callback) && callback) || _.noop,
context: context || {}
});
return this;
},
repExecute = function TAS_Repeating_Execute(callback,context){
var rowSet = {},
attrSet = {},
fieldIds = [],
fullFieldNames = [];
repAfter(callback,context);
// call each operation per row.
// call each operation's final
getSectionIDs("repeating_"+sectionName,function(ids){
fieldIds = ids;
fullFieldNames = _.reduce(fieldIds,function(memo,id){
return memo.concat(_.map(fieldNames,function(name){
return 'repeating_'+sectionName+'_'+id+'_'+name;
}));
},[]);
getAttrs( _.uniq(attrNames.concat(fullFieldNames)), function(values){
_.each(attrNames,function(aname){
if(values.hasOwnProperty(aname)){
addProp(attrSet,aname,values[aname]);
}
});
rowSet = _.reduce(fieldIds,function(memo,id){
var r={};
addId(r,id);
_.each(fieldNames,function(name){
var fn = 'repeating_'+sectionName+'_'+id+'_'+name;
addProp(r,name,values[fn],fn);
});
memo[id]=r;
return memo;
},{});
_.each(operations,function(op){
var res;
switch(op.type){
case 'tap':
_.bind(op.final,op.context,rowSet,attrSet)();
break;
case 'each':
_.each(rowSet,function(r){
_.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
});
_.bind(op.final,op.context,rowSet,attrSet)();
break;
case 'map':
res = _.map(rowSet,function(r){
return _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
});
_.bind(op.final,op.context,res,rowSet,attrSet)();
break;
case 'reduce':
res = op.memo;
_.each(rowSet,function(r){
res = _.bind(op.func,op.context,res,r,attrSet,r.id,rowSet)();
});
_.bind(op.final,op.context,res,rowSet,attrSet)();
break;
}
});
// finalize attrs
applyQueuedUpdates();
_.each(after,function(op){
_.bind(op.callback,op.context)();
});
});
});
};
return {
attrs: repAttrs,
attr: repAttrs,
column: repFields,
columns: repFields,
field: repFields,
fields: repFields,
reduce: repReduce,
inject: repReduce,
foldl: repReduce,
map: repMap,
collect: repMap,
each: repEach,
forEach: repEach,
tap: repTap,
'do': repTap,
after: repAfter,
last: repAfter,
done: repAfter,
execute: repExecute,
go: repExecute,
run: repExecute
};
}(section));
},
repeatingSimpleSum = function(section, field, destination){
repeating(section)
.attr(destination)
.field(field)
.reduce(function(m,r){
return m + (r.F[field]);
},0,function(t,r,a){
a.S[destination]=t;
})
.execute();
};
/* eslint-disable no-console */
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ The Aaron Sheet v'+version+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Last update: '+(new Date(lastUpdate*1000))+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
/* eslint-enable no-console */
return {
/* Repeating Sections */
repeatingSimpleSum: repeatingSimpleSum,
repeating: repeating,
/* Configuration */
config: setConfigOption,
/* Debugging */
callback: wrapCallback,
callstack: logCallstack,
debugMode: debugMode,
isDebugMode: isDebugMode,
_fn: wrapCallback,
/* Logging */
debug: logDebug,
error: logError,
warn: logWarn,
info: logInfo,
notice: logNotice,
log: logLog
};
}());
/* ---- END: TheAaronSheet.js ---- */
/*Onxy rings functions they are wonderful*/
function setActiveCharacterId(charId){
var oldAcid=getActiveCharacterId();
var ev = new CustomEvent("message");
ev.data={"id":"0", "type":"setActiveCharacter", "data":charId};
self.dispatchEvent(ev);
return oldAcid;
}
var _sIn=setInterval;
setInterval=function(callback, timeout){
var acid=getActiveCharacterId();
_sIn(
function(){
var prevAcid=setActiveCharacterId(acid);
callback();
setActiveCharacterId(prevAcid);
}
,timeout);
}
var _sto=setTimeout
setTimeout=function(callback, timeout){
var acid=getActiveCharacterId();
_sto(
function(){
var prevAcid=setActiveCharacterId(acid);
callback();
setActiveCharacterId(prevAcid);
}
,timeout);
}
function getAttrsAsync(props){
var acid=getActiveCharacterId(); //save the current activeCharacterID in case it has changed when the promise runs
var prevAcid=null; //local variable defined here, because it needs to be shared across the promise callbacks defined below
return new Promise((resolve,reject)=>{
prevAcid=setActiveCharacterId(acid); //in case the activeCharacterId has changed, restore it to what we were expecting and save the current value to restore later
try{
getAttrs(props,(values)=>{ resolve(values); });
}
catch{ reject(); }
}).finally(()=>{
setActiveCharacterId(prevAcid); //restore activeCharcterId to what it was when the promise first ran
});
}
//use the same pattern for each of the following...
function setAttrsAsync(propObj, options){
var acid=getActiveCharacterId();
var prevAcid=null;
return new Promise((resolve,reject)=>{
prevAcid=setActiveCharacterId(acid);
try{
setAttrs(propObj,options,(values)=>{ resolve(values); });
}
catch{ reject(); }
}).finally(()=>{
setActiveCharacterId(prevAcid);
});
}
function getSectionIDsAsync(sectionName){
var acid=getActiveCharacterId();
var prevAcid=null;
return new Promise((resolve,reject)=>{
prevAcid=setActiveCharacterId(acid);
try{
getSectionIDs(sectionName,(values)=>{ resolve(values); });
}
catch{ reject(); }
}).finally(()=>{
setActiveCharacterId(prevAcid);
});
}
function getSingleAttrAsync(prop){
var acid=getActiveCharacterId();
var prevAcid=null;
return new Promise((resolve,reject)=>{
prevAcid=setActiveCharacterId(acid);
try{
getAttrs([prop],(values)=>{ resolve(values[prop]); });
}
catch{ reject(); }
}).finally(()=>{
setActiveCharacterId(prevAcid);
});
}
on("change:repeating_class remove:repeating_class", function(){
TAS.repeatingSimpleSum('class','level','totallevel');
});
on("change:repeating_equipment remove:repeating_equipment", function(){
TAS.repeatingSimpleSum('equipment','equipmentwt','total_wt');
});
on("sheet:opened change:character_name", function(eventInfo) {
getAttrs(["character_name","acrobatics-action","animalhandling-action","arcana-action","athletics-action","culture-action","deception-action","engineering-action","history-action","insight-action","intimidation-action","investigation-action","medicine-action","nature-action","perception-action","performance-action","persuasion-action","religion-action","sleightofhand-action","stealth-action","survival-action","vehicles-action","misc1-action","misc2-action"], function(v) {
var attrsToChange = {};
attrsToChange["acrobatics-action"] = "%{" + v["character_name"] + "|acrobatics-button}";
attrsToChange["animalhandling-action"] = "%{" + v["character_name"] + "|animalhandling-button}";
attrsToChange["arcana-action"] = "%{" + v["character_name"] + "|arcana-button}";
attrsToChange["athletics-action"] = "%{" + v["character_name"] + "|athletics-button}";
attrsToChange["culture-action"] = "%{" + v["character_name"] + "|culture-button}";
attrsToChange["deception-action"] = "%{" + v["character_name"] + "|deception-button}";
attrsToChange["engineering-action"] = "%{" + v["character_name"] + "|engineering-button}";
attrsToChange["history-action"] = "%{" + v["character_name"] + "|history-button}";
attrsToChange["insight-action"] = "%{" + v["character_name"] + "|insight-button}";
attrsToChange["intimidation-action"] = "%{" + v["character_name"] + "|intimidation-button}";
attrsToChange["investigation-action"] = "%{" + v["character_name"] + "|investigation-button}";
attrsToChange["medicine-action"] = "%{" + v["character_name"] + "|medicine-button}";
attrsToChange["nature-action"] = "%{" + v["character_name"] + "|nature-button}";
attrsToChange["perception-action"] = "%{" + v["character_name"] + "|perception-button}";
attrsToChange["performance-action"] = "%{" + v["character_name"] + "|performance-button}";
attrsToChange["persuasion-action"] = "%{" + v["character_name"] + "|persuasion-button}";
attrsToChange["religion-action"] = "%{" + v["character_name"] + "|religion-button}";
attrsToChange["sleightofhand-action"] = "%{" + v["character_name"] + "|sleightofhand-button}";
attrsToChange["stealth-action"] = "%{" + v["character_name"] + "|stealth-button}";
attrsToChange["survival-action"] = "%{" + v["character_name"] + "|survival-button}";
attrsToChange["vehicles-action"] = "%{" + v["character_name"] + "|vehicles-button}";
attrsToChange["misc1-action"] = "%{" + v["character_name"] + "|misc1-button}";
attrsToChange["misc2-action"] = "%{" + v["character_name"] + "|misc2-button}";
attrsToChange["initiative-action"] = "%{" + v["character_name"] + "|initiative-button}";
attrsToChange["hitdice-action"] = "%{" + v["character_name"] + "|hitdice-button}";
attrsToChange["deathsave-action"] = "%{" + v["character_name"] + "|deathsave-button}";
attrsToChange["strength-action"] = "%{" + v["character_name"] + "|strength-button}";
attrsToChange["dexterity-action"] = "%{" + v["character_name"] + "|dexterity-button}";
attrsToChange["constitution-action"] = "%{" + v["character_name"] + "|constitution-button}";
attrsToChange["intelligence-action"] = "%{" + v["character_name"] + "|intelligence-button}";
attrsToChange["wisdom-action"] = "%{" + v["character_name"] + "|wisdom-button}";
attrsToChange["charisma-action"] = "%{" + v["character_name"] + "|charisma-button}";
attrsToChange["strengthsave-action"] = "%{" + v["character_name"] + "|strengthsave-button}";
attrsToChange["dexteritysave-action"] = "%{" + v["character_name"] + "|dexteritysave-button}";
attrsToChange["constitutionsave-action"] = "%{" + v["character_name"] + "|constitutionsave-button}";
attrsToChange["intelligencesave-action"] = "%{" + v["character_name"] + "|intelligencesave-button}";
attrsToChange["wisdomsave-action"] = "%{" + v["character_name"] + "|wisdomsave-button}";
attrsToChange["charismasave-action"] = "%{" + v["character_name"] + "|charismasave-button}";
setAttrs(attrsToChange);
});
});
on("change:sheet_type", function() {
getAttrs(["sheet_type"], function(values) {
var sheet_type = values["sheet_type"]||"";
setAttrs({
"sheetTab": sheet_type,
});
});
});
on("change:pcnpc_type", function() {
getAttrs(["pcnpc_type"], function(values) {
var pcnpc_type = values["pcnpc_type"]||"";
setAttrs({
"pcnpcTab": pcnpc_type,
});
});
});
on("change:statsinfo_type", function() {
getAttrs(["statsinfo_type"], function(values) {
var statsinfo_type = values["statsinfo_type"]||"";
setAttrs({
"statsinfoTab": statsinfo_type,
});
});
});
on("change:repeating_class:class", function() {
getAttrs(["repeating_class_class"], function(values) {
var cclass = values["repeating_class_class"]||"";
var archtype = "archtype";
if (cclass == "Adept") { archtype = "adept" ;};
if (cclass == "Bard") { archtype = "bard" ;};
if (cclass == "Berserker") { archtype = "berserker" ;};
if (cclass == "Cleric") { archtype = "cleric" ;};
if (cclass == "Druid") { archtype = "druid" ;};
if (cclass == "Fighter") { archtype = "fighter" ;};
if (cclass == "Herald") { archtype = "herald" ;};
if (cclass == "Ranger") { archtype = "ranger" ;};
if (cclass == "Rogue") { archtype = "rogue" ;};
if (cclass == "Sorcerer") { archtype = "sorcerer" ;};
if (cclass == "Warlock") { archtype = "warlock" ;};
if (cclass == "Wizard") { archtype = "wizard" ;};
setAttrs({
"repeating_class_archtypeclass": archtype,
});
});
});
on("change:totallevel sheet:opened", function () {
getAttrs(["totallevel"], function (values) {
const level = parseInt(values['totallevel'], 10)||0;
var prof = level;
switch (level) {
case 1 : prof = 2;
break;
case 2 : prof = 2;
break;
case 3 : prof = 2;
break;
case 4 : prof = 2;
break;
case 5 : prof = 3;
break;
case 6 : prof = 3;
break;
case 7 : prof = 3;
break;
case 8 : prof = 3;
break;
case 9 : prof = 4;
break;
case 10 : prof = 4;
break;
case 11 : prof = 4;
break;
case 12 : prof = 4;
break;
case 13 : prof = 5;
break;
case 14 : prof = 5;
break;
case 15 : prof = 5;
break;
case 16 : prof = 5;
break;
case 17 : prof = 6;
break;
case 18 : prof = 6;
break;
case 19 : prof = 6;
break;
case 20 : prof = 6;
break;
default: prof = 2
};
setAttrs({
PB: prof,
});
});
});
on("change:strength change:PB change:strength_save_prof sheet:opened", function () {
getAttrs(["strength","strength_save_prof","PB"], function (values) {
const strength = parseInt(values['strength'], 10)||0;
const prof = parseInt(values['PB'])||0;
var saveprof = values["strength_save_prof"]||0;
const modifier = Math.floor(strength/2) -5;
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
strength_mod: modifier,
strength_save_mod: savemod,
});
});
});
on("change:dexterity change:PB change:dexterity_save_prof sheet:opened", function () {
getAttrs(["dexterity","dexterity_save_prof","PB"], function (values) {
const dexterity = parseInt(values['dexterity'], 10)||0;
const prof = parseInt(values['PB'])||0;
var saveprof = values["dexterity_save_prof"]||0;
const modifier = Math.floor(dexterity/2) -5;
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
dexterity_mod: modifier,
dexterity_save_mod: savemod,
});
});
});
on("change:constitution change:PB change:constitution_save_prof sheet:opened", function () {
getAttrs(["constitution","constitution_save_prof","PB"], function (values) {
const constitution = parseInt(values['constitution'], 10)||0;
const prof = parseInt(values['PB'])||0;
var saveprof = values["constitution_save_prof"]||0;
const modifier = Math.floor(constitution/2) -5;
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
constitution_mod: modifier,
constitution_save_mod: savemod,
});
});
});
on("change:intelligence change:PB change:intelligence_save_prof sheet:opened", function () {
getAttrs(["intelligence","intelligence_save_prof","PB"], function (values) {
const intelligence = parseInt(values['intelligence'], 10)||0;
const prof = parseInt(values['PB'])||0;
var saveprof = values["intelligence_save_prof"]||0;
const modifier = Math.floor(intelligence/2) -5;
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
intelligence_mod: modifier,
intelligence_save_mod: savemod,
});
});
});
on("change:wisdom change:PB change:wisdom_save_prof sheet:opened", function () {
getAttrs(["wisdom","wisdom_save_prof","PB"], function (values) {
const wisdom = parseInt(values['wisdom'], 10)||0;
const prof = parseInt(values['PB'])||0;
var saveprof = values["wisdom_save_prof"]||0;
const modifier = Math.floor(wisdom/2) -5;
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
wisdom_mod: modifier,
wisdom_save_mod: savemod,
});
});
});
on("change:charisma change:PB change:charisma_save_prof sheet:opened", function () {
getAttrs(["charisma","charisma_save_prof","PB","rolladvdis"], function (values) {
const charisma = parseInt(values['charisma'], 10)||0;
const prof = parseInt(values['PB'])||0;
var saveprof = values["charisma_save_prof"]||0;
const modifier = Math.floor(charisma/2) -5;
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
charisma_mod: modifier,
charisma_save_mod: savemod,
});
});
});
on('clicked:strength-button', async (info) => {
const values = await getAttrsAsync(['character_name','strength_mod','rolladvdis','rollgmnormal']);
const bonus = parseInt(values.strength_mod)||0;
const charname = values.character_name || "";
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Strength Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:strengthsave-button', async (info) => {
const values = await getAttrsAsync(['character_name','strength_save_mod','strength_save_bonus','globalsavebonus','rolladvdis','rollgmnormal']);
const savemod = parseInt(values.strength_save_mod)||0;
const savebonus = parseInt(values.strength_save_bonus)||0;
const charname = values.character_name || "";
const globalsavebonus = parseInt(values.globalsavebonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const bonus = savemod+savebonus+globalsavebonus;
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Strength Save}}{{save=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:dexterity-button', async (info) => {
const values = await getAttrsAsync(['character_name','dexterity_mod','rolladvdis','rollgmnormal']);
const bonus = parseInt(values.dexterity_mod)||0;
const charname = values.character_name || "";
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Dexterity Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:dexteritysave-button', async (info) => {
const values = await getAttrsAsync(['character_name','dexterity_save_mod','dexterity_save_bonus','globalsavebonus','rolladvdis','rollgmnormal']);
const savemod = parseInt(values.dexterity_save_mod)||0;
const savebonus = parseInt(values.dexterity_save_bonus)||0;
const charname = values.character_name || "";
const globalsavebonus = parseInt(values.globalsavebonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const bonus = savemod+savebonus+globalsavebonus;
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Dexterity Save}}{{save=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:constitution-button', async (info) => {
const values = await getAttrsAsync(['character_name','constitution_mod','rolladvdis','rollgmnormal']);
const bonus = parseInt(values.constitution_mod)||0;
const charname = values.character_name || "";
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Constitution Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:constitutionsave-button', async (info) => {
const values = await getAttrsAsync(['character_name','constitution_save_mod','constitution_save_bonus','globalsavebonus','rolladvdis','rollgmnormal']);
const savemod = parseInt(values.constitution_save_mod)||0;
const savebonus = parseInt(values.constitution_save_bonus)||0;
const charname = values.character_name || "";
const globalsavebonus = parseInt(values.globalsavebonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const bonus = savemod+savebonus+globalsavebonus;
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Constitution Save}}{{save=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:intelligence-button', async (info) => {
const values = await getAttrsAsync(['character_name','intelligence_mod','rolladvdis','rollgmnormal']);
const bonus = parseInt(values.intelligence_mod)||0;
const charname = values.character_name || "";
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Intelligence Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:intelligencesave-button', async (info) => {
const values = await getAttrsAsync(['character_name','intelligence_save_mod','intelligence_save_bonus','globalsavebonus','rolladvdis','rollgmnormal']);
const savemod = parseInt(values.intelligence_save_mod)||0;
const savebonus = parseInt(values.intelligence_save_bonus)||0;
const charname = values.character_name || "";
const globalsavebonus = parseInt(values.globalsavebonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const bonus = savemod+savebonus+globalsavebonus;
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Intelligence Save}}{{save=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:wisdom-button', async (info) => {
const values = await getAttrsAsync(['character_name','wisdom_mod','rolladvdis','rollgmnormal']);
const bonus = parseInt(values.wisdom_mod)||0;
const charname = values.character_name || "";
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Wisdom Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:wisdomsave-button', async (info) => {
const values = await getAttrsAsync(['character_name','wisdom_save_mod','wisdom_save_bonus','globalsavebonus','rolladvdis','rollgmnormal']);
const savemod = parseInt(values.wisdom_save_mod)||0;
const savebonus = parseInt(values.wisdom_save_bonus)||0;
const charname = values.character_name || "";
const globalsavebonus = parseInt(values.globalsavebonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const bonus = savemod+savebonus+globalsavebonus;
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Wisdom Save}}{{save=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:charisma-button', async (info) => {
const values = await getAttrsAsync(['character_name','charisma_mod','rolladvdis','rollgmnormal']);
const bonus = parseInt(values.charisma_mod)||0;
const charname = values.character_name || "";
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Charisma Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:charismasave-button', async (info) => {
const values = await getAttrsAsync(['character_name','charisma_save_mod','charisma_save_bonus','globalsavebonus','rolladvdis','rollgmnormal']);
const savemod = parseInt(values.charisma_save_mod)||0;
const savebonus = parseInt(values.charisma_save_bonus)||0;
const charname = values.character_name || "";
const globalsavebonus = parseInt(values.globalsavebonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const bonus = savemod+savebonus+globalsavebonus;
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" Charisma Save}}{{save=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on('clicked:acrobatics-button', async (info) => {
const values = await getAttrsAsync(['character_name','acrobatics_exdice','acrobatics_specialty','acrobatics_check','acrobatics_check_bonus','passive_acrobatics_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.acrobatics_check)||0;
const exdice = values.acrobatics_exdice||"0d6";
const specialty = values.acrobatics_specialty||"";
const checkbonus = parseInt(values.acrobatics_check_bonus)||0;
const passivebonus = parseInt(values.passive_acrobatics_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Acrobatics "+specialtyText+" Roll}}{{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:animalhandling-button', async (info) => {
const values = await getAttrsAsync(['character_name','animalhandling_exdice','animalhandling_specialty','animalhandling_check','animalhandling_check_bonus','passive_animalhandling_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.animalhandling_check)||0;
const exdice = values.animalhandling_exdice||"0d6";
const specialty = values.animalhandling_specialty||"";
const checkbonus = parseInt(values.animalhandling_check_bonus)||0;
const passivebonus = parseInt(values.passive_animalhandling_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Wisdom, "+wis+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Animal Handling "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:arcana-button', async (info) => {
const values = await getAttrsAsync(['character_name','arcana_exdice','arcana_specialty','arcana_check_bonus','passive_arcana','passive_arcana_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.arcana_check)||0;
const exdice = values.arcana_exdice||"0d6";
const specialty = values.arcana_specialty||"";
const checkbonus = parseInt(values.arcana_check_bonus)||0;
const passivebonus = parseInt(values.passive_arcana_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Arcana "+specialtyText+" Roll}}{{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:athletics-button', async (info) => {
const values = await getAttrsAsync(['character_name','athletics_exdice','athletics_specialty','athletics_check','athletics_check_bonus','passive_athletics_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.athletics_check)||0;
const exdice = values.athletics_exdice||"0d6";
const specialty = values.athletics_specialty||"";
const checkbonus = parseInt(values.athletics_check_bonus)||0;
const passivebonus = parseInt(values.passive_athletics_bonus)||0;
const charname = values.character_name || "";
const jot = values.jackofalltrades_check||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Athletics "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:culture-button', async (info) => {
const values = await getAttrsAsync(['character_name','culture_exdice','culture_specialty','culture_check','culture_check_bonus','passive_culture_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.culture_check)||0;
const exdice = values.culture_exdice||"0d6";
const specialty = values.culture_specialty||"";
const checkbonus = parseInt(values.culture_check_bonus)||0;
const passivebonus = parseInt(values.passive_culture_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Culture "+specialtyText+" Roll}}{{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:deception-button', async (info) => {
const values = await getAttrsAsync(['character_name','deception_exdice','deception_specialty','deception_check','deception_check_bonus','passive_deception_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.deception_check)||0;
const exdice = values.deception_exdice||"0d6";
const specialty = values.deception_specialty||"";
const checkbonus = parseInt(values.deception_check_bonus)||0;
const passivebonus = parseInt(values.passive_deception_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Charisma, "+cha+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Deception "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:engineering-button', async (info) => {
const values = await getAttrsAsync(['character_name','engineering_exdice','engineering_specialty','engineering_check','engineering_check_bonus','passive_engineering_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.engineering_check)||0;
const exdice = values.engineering_exdice||"0d6";
const specialty = values.engineering_specialty||"";
const checkbonus = parseInt(values.engineering_check_bonus)||0;
const passivebonus = parseInt(values.passive_engineering_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Engineering "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:history-button', async (info) => {
const values = await getAttrsAsync(['character_name','history_exdice','history_specialty','history_check','history_check_bonus','passive_history_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.history_check)||0;
const exdice = values.history_exdice||"0d6";
const specialty = values.history_specialty||"";
const checkbonus = parseInt(values.history_check_bonus)||0;
const passivebonus = parseInt(values.passive_history_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" History "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:insight-button', async (info) => {
const values = await getAttrsAsync(['character_name','insight_exdice','insight_specialty','insight_check','insight_check_bonus','passive_insight_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.insight_check)||0;
const exdice = values.insight_exdice||"0d6";
const specialty = values.insight_specialty||"";
const checkbonus = parseInt(values.insight_check_bonus)||0;
const passivebonus = parseInt(values.passive_insight_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Wisdom, "+wis+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Insight "+specialtyText+" Roll}}{{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:intimidation-button', async (info) => {
const values = await getAttrsAsync(['character_name','intimidation_exdice','intimidation_specialty','intimidation_check','intimidation_check_bonus','passive_intimidation_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.intimidation_check)||0;
const exdice = values.intimidation_exdice||"0d6";
const specialty = values.intimidation_specialty||"";
const checkbonus = parseInt(values.intimidation_check_bonus)||0;
const passivebonus = parseInt(values.passive_intimidation_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Charisma, "+cha+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Intimidation "+specialtyText+" Roll}}{{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:investigation-button', async (info) => {
const values = await getAttrsAsync(['character_name','investigation_exdice','investigation_specialty','investigation_check','investigation_check_bonus','passive_investigation_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.investigation_check)||0;
const exdice = values.investigation_exdice||"0d6";
const specialty = values.investigation_specialty||"";
const checkbonus = parseInt(values.investigation_check_bonus)||0;
const passivebonus = parseInt(values.passive_investigation_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Investigation "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:medicine-button', async (info) => {
const values = await getAttrsAsync(['character_name','medicine_exdice','medicine_specialty','medicine_check','medicine_check_bonus','passive_medicine_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.medicine_check)||0;
const exdice = values.medicine_exdice||"0d6";
const specialty = values.medicine_specialty||"";
const checkbonus = parseInt(values.medicine_check_bonus)||0;
const passivebonus = parseInt(values.passive_medicine_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Wisdom, "+wis+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Medicine "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:nature-button', async (info) => {
const values = await getAttrsAsync(['character_name','nature_exdice','nature_specialty','nature_check','nature_check_bonus','passive_nature_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.nature_check)||0;
const exdice = values.nature_exdice||"0d6";
const specialty = values.nature_specialty||"";
const checkbonus = parseInt(values.nature_check_bonus)||0;
const passivebonus = parseInt(values.passive_nature_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Nature "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:perception-button', async (info) => {
const values = await getAttrsAsync(['character_name','perception_exdice','perception_specialty','perception_check','perception_check_bonus','passive_perception_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.perception_check)||0;
const exdice = values.perception_exdice||"0d6";
const specialty = values.perception_specialty||"";
const checkbonus = parseInt(values.perception_check_bonus)||0;
const passivebonus = parseInt(values.passive_perception_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Wisdom, "+wis+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Perception "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:performance-button', async (info) => {
const values = await getAttrsAsync(['character_name','performance_exdice','performance_specialty','performance_check','performance_check_bonus','passive_performance_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.performance_check)||0;
const exdice = values.performance_exdice||"0d6";
const specialty = values.performance_specialty||"";
const checkbonus = parseInt(values.performance_check_bonus)||0;
const passivebonus = parseInt(values.passive_performance_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Charisma, "+cha+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Performance "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:persuasion-button', async (info) => {
const values = await getAttrsAsync(['character_name','persuasion_exdice','persuasion_specialty','persuasion_check','persuasion_check_bonus','passive_persuasion_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.persuasion_check)||0;
const exdice = values.persuasion_exdice||"0d6";
const specialty = values.persuasion_specialty||"";
const checkbonus = parseInt(values.persuasion_check_bonus)||0;
const passivebonus = parseInt(values.passive_persuasion_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Charisma, "+cha+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Persuasion "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:religion-button', async (info) => {
const values = await getAttrsAsync(['character_name','religion_exdice','religion_specialty','religion_check','religion_check_bonus','passive_religion_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.religion_check)||0;
const exdice = values.religion_exdice||"0d6";
const specialty = values.religion_specialty||"";
const checkbonus = parseInt(values.religion_check_bonus)||0;
const passivebonus = parseInt(values.passive_religion_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Intelligence, "+intel+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Religion "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:sleightofhand-button', async (info) => {
const values = await getAttrsAsync(['character_name','sleightofhand_exdice','sleightofhand_specialty','sleightofhand_check','sleightofhand_check_bonus','passive_sleightofhand_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.sleightofhand_check)||0;
const exdice = values.sleightofhand_exdice||"0d6";
const specialty = values.sleightofhand_specialty||"";
const checkbonus = parseInt(values.sleightofhand_check_bonus)||0;
const passivebonus = parseInt(values.passive_sleightofhand_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Sleight of Hand "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:stealth-button', async (info) => {
const values = await getAttrsAsync(['character_name','stealth_exdice','stealth_specialty','stealth_check','stealth_check_bonus','passive_stealth_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.stealth_check)||0;
const exdice = values.stealth_exdice||"0d6";
const specialty = values.stealth_specialty||"";
const checkbonus = parseInt(values.stealth_check_bonus)||0;
const passivebonus = parseInt(values.passive_stealth_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Stealth "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:survival-button', async (info) => {
const values = await getAttrsAsync(['character_name','survival_exdice','survival_specialty','survival_check','survival_check_bonus','passive_survival_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.survival_check)||0;
const exdice = values.survival_exdice||"0d6";
const specialty = values.survival_specialty||"";
const checkbonus = parseInt(values.survival_check_bonus)||0;
const passivebonus = parseInt(values.passive_survival_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Wisdom, "+wis+"|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Survival "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:vehicles-button', async (info) => {
const values = await getAttrsAsync(['character_name','vehicles_exdice','vehicles_specialty','vehicles_check','vehicles_check_bonus','passive_vehicles_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.vehicles_check)||0;
const exdice = values.vehicles_exdice||"0d6";
const specialty = values.vehicles_specialty||"";
const checkbonus = parseInt(values.vehicles_check_bonus)||0;
const passivebonus = parseInt(values.passive_vehicles_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Vehicles "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:misc1-button', async (info) => {
const values = await getAttrsAsync(['character_name','misc1_exdice','misc1_specialty','misc1_check','misc1_check_bonus','passive_misc1_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.misc1_check)||0;
const exdice = values.misc1_exdice||"0d6";
const specialty = values.misc1_specialty||"";
const checkbonus = parseInt(values.misc1_check_bonus)||0;
const passivebonus = parseInt(values.passive_misc1_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Misc1 "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on('clicked:misc2-button', async (info) => {
const values = await getAttrsAsync(['character_name','misc2_exdice','misc2_specialty','misc2_check','misc2_check_bonus','passive_misc2_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','intelligence_mod','wisdom_mod','dexterity_mod','constitution_mod','charisma_mod','jackofalltrades_check']);
const prof = parseInt(values.misc2_check)||0;
const exdice = values.misc2_exdice||"0d6";
const specialty = values.misc2_specialty||"";
const checkbonus = parseInt(values.misc2_check_bonus)||0;
const passivebonus = parseInt(values.passive_misc2_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const intel = parseInt(values.intelligence_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const con = parseInt(values.constitution_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var specdice = "1d4";
if (exdice == "") {specdice = "1d4";};
if (exdice == "1d4") {specdice = "1d6";};
if (exdice == "1d6") {specdice = "1d8";};
if (exdice == "1d8") {specdice = "1d8";};
if (exdice == "1d10") {specdice = "1d10";};
if (exdice == "1d12") {specdice = "1d12";};
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var specialtyText = "";
if (specialty != ""){
specialtyText = "("+specialty+")";
}
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+charname+" Misc 2 "+specialtyText+" Roll}} {{roll=[["+diceroll+"+?{Stat}+"+finalbonus+"+?{IncludeSpecialty}cf<0cs>101]]}}");
finishRoll(results.rollId);
});
on("change:acrobatics_check change:acrobatics_check_bonus change:passive_acrobatics_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["acrobatics_check","acrobatics_check_bonus","passive_acrobatics_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["acrobatics_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["acrobatics_check_bonus"])||0;
var passivebonus = parseInt(values["passive_acrobatics_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"acrobatics_bonus": finalbonus,
});
});
});
on("change:animalhandling_check change:animalhandling_check_bonus change:passive_animalhandling_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["animalhandling_check","animalhandling_check_bonus","passive_animalhandling_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["animalhandling_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["animalhandling_check_bonus"])||0;
var passivebonus = parseInt(values["passive_animalhandling_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"animalhandling_bonus": finalbonus,
});
});
});
on("change:arcana_check change:arcana_check_bonus change:passive_arcana_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["arcana_check","arcana_check_bonus","passive_arcana_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["arcana_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["arcana_check_bonus"])||0;
var passivebonus = parseInt(values["passive_arcana_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"arcana_bonus": finalbonus,
});
});
});
on("change:athletics_check change:athletics_check_bonus change:passive_athletics_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["athletics_check","athletics_check_bonus","passive_athletics_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["athletics_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["athletics_check_bonus"])||0;
var passivebonus = parseInt(values["passive_athletics_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"athletics_bonus": finalbonus,
});
});
});
on("change:culture_check change:culture_check_bonus change:passive_culture_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["culture_check","culture_check_bonus","passive_culture_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["culture_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["culture_check_bonus"])||0;
var passivebonus = parseInt(values["passive_culture_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"culture_bonus": finalbonus,
});
});
});
on("change:deception_check change:deception_check_bonus change:passive_deception_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["deception_check","deception_check_bonus","passive_deception_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["deception_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["deception_check_bonus"])||0;
var passivebonus = parseInt(values["passive_deception_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"deception_bonus": finalbonus,
});
});
});
on("change:engineering_check change:engineering_check_bonus change:passive_engineering_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["engineering_check","engineering_check_bonus","passive_engineering_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["engineering_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["engineering_check_bonus"])||0;
var passivebonus = parseInt(values["passive_engineering_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"engineering_bonus": finalbonus,
});
});
});
on("change:history_check change:history_check_bonus change:passive_history_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["history_check","history_check_bonus","passive_history_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["history_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["history_check_bonus"])||0;
var passivebonus = parseInt(values["passive_history_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"history_bonus": finalbonus,
});
});
});
on("change:insight_check change:insight_check_bonus change:insight_exdice change:passive_insight_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check change:wisdom sheet:opened", function() {
getAttrs(["insight_check","insight_check_bonus","insight_exdice","passive_insight_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check","wisdom_mod"], function(values) {
var prof = values["insight_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var exdice = values["insight_exdice"]||"";
var checkbonus = parseInt(values["insight_check_bonus"])||0;
var passivebonus = parseInt(values["passive_insight_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var wis = parseInt(values["wisdom_mod"])||0;
var jotbonus = Math.floor(profbonus/2);
var exbonus = 0;
if (exdice != "") {exbonus = 3;};
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"insight_bonus": finalbonus,
"passive_insight": finalbonus+wis+10+exbonus,
});
});
});
on("change:intimidation_check change:intimidation_check_bonus change:passive_intimidation_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["intimidation_check","intimidation_check_bonus","passive_intimidation_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["intimidation_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["intimidation_check_bonus"])||0;
var passivebonus = parseInt(values["passive_intimidation_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"intimidation_bonus": finalbonus,
});
});
});
on("change:investigation_check change:investigation_check_bonus change:passive_investigation_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["investigation_check","investigation_check_bonus","passive_investigation_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["investigation_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["investigation_check_bonus"])||0;
var passivebonus = parseInt(values["passive_investigation_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"investigation_bonus": finalbonus,
});
});
});
on("change:medicine_check change:medicine_check_bonus change:passive_medicine_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["medicine_check","medicine_check_bonus","passive_medicine_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["medicine_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["medicine_check_bonus"])||0;
var passivebonus = parseInt(values["passive_medicine_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"medicine_bonus": finalbonus,
});
});
});
on("change:nature_check change:nature_check_bonus change:passive_nature_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["nature_check","nature_check_bonus","passive_nature_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["nature_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["nature_check_bonus"])||0;
var passivebonus = parseInt(values["passive_nature_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"nature_bonus": finalbonus,
});
});
});
on("change:perception_check change:perception_check_bonus change:perception_exdice change:passive_perception_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check change:wisdom sheet:opened", function() {
getAttrs(["perception_check","perception_check_bonus","perception_exdice","passive_perception_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check","wisdom_mod"], function(values) {
var prof = values["perception_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var exdice = values["perception_exdice"]||"";
var checkbonus = parseInt(values["perception_check_bonus"])||0;
var passivebonus = parseInt(values["passive_perception_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var wis = parseInt(values["wisdom_mod"])||0;
var jotbonus = Math.floor(profbonus/2);
var exbonus = 0;
if (exdice != "") {exbonus = 3;};
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"perception_bonus": finalbonus,
"passive_perception": finalbonus+wis+10+exbonus,
});
});
});
on("change:performance_check change:performance_check_bonus change:passive_performance_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["performance_check","performance_check_bonus","passive_performance_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["performance_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["performance_check_bonus"])||0;
var passivebonus = parseInt(values["passive_performance_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"performance_bonus": finalbonus,
});
});
});
on("change:persuasion_check change:persuasion_check_bonus change:passive_persuasion_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["persuasion_check","persuasion_check_bonus","passive_persuasion_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["persuasion_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["persuasion_check_bonus"])||0;
var passivebonus = parseInt(values["passive_persuasion_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"persuasion_bonus": finalbonus,
});
});
});
on("change:religion_check change:religion_check_bonus change:passive_religion_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["religion_check","religion_check_bonus","passive_religion_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["religion_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["religion_check_bonus"])||0;
var passivebonus = parseInt(values["passive_religion_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"religion_bonus": finalbonus,
});
});
});
on("change:sleightofhand_check change:sleightofhand_check_bonus change:passive_sleightofhand_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["sleightofhand_check","sleightofhand_check_bonus","passive_sleightofhand_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["sleightofhand_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["sleightofhand_check_bonus"])||0;
var passivebonus = parseInt(values["passive_sleightofhand_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"sleightofhand_bonus": finalbonus,
});
});
});
on("change:stealth_check change:stealth_specialty change:stealth_exdice change:stealth_check_bonus change:passive_stealth_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check change:dexterity sheet:opened", function() {
getAttrs(["stealth_check","stealth_exdice","stealth_specialty","stealth_check_bonus","passive_stealth_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check","dexterity_mod"], function(values) {
var prof = values["stealth_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var exdice = values["stealth_exdice"]||"";
var checkbonus = parseInt(values["stealth_check_bonus"])||0;
var passivebonus = parseInt(values["passive_stealth_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var dex = parseInt(values["dexterity_mod"])||0;
var jotbonus = Math.floor(profbonus/2);
var exbonus = 0;
if (exdice != "") {exbonus = 3;};
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"stealth_bonus": finalbonus,
"passive_stealth": dex+finalbonus+10+exbonus,
});
});
});
on("change:survival_check change:survival_check_bonus change:passive_survival_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["survival_check","survival_check_bonus","passive_survival_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["survival_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["survival_check_bonus"])||0;
var passivebonus = parseInt(values["passive_survival_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"survival_bonus": finalbonus,
});
});
});
on("change:misc1_check change:misc1_check_bonus change:passive_misc1_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["misc1_check","misc1_check_bonus","passive_misc1_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["misc1_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["misc1_check_bonus"])||0;
var passivebonus = parseInt(values["passive_misc1_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"misc1_bonus": finalbonus,
});
});
});
on("change:misc2_check change:misc2_check_bonus change:passive_misc2_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["misc2_check","misc2_check_bonus","passive_misc2_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["misc2_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["misc2_check_bonus"])||0;
var passivebonus = parseInt(values["passive_misc2_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"misc2_bonus": finalbonus,
});
});
});
on("change:vehicles_check change:vehicles_check_bonus change:passive_vehicles_bonus change:globalskillbonus change:globalabilitycheckbonus change:PB change:jackofalltrades_check sheet:opened", function() {
getAttrs(["vehicles_check","vehicles_check_bonus","passive_vehicles_bonus","globalskillbonus","globalabilitycheckbonus","PB","jackofalltrades_check"], function(values) {
var prof = values["vehicles_check"]||0;
var jot = values["jackofalltrades_check"]||0;
var profbonus = parseInt(values["PB"])||0;
var checkbonus = parseInt(values["vehicles_check_bonus"])||0;
var passivebonus = parseInt(values["passive_vehicles_bonus"])||0;
var globalskillbonus = parseInt(values["globalskillbonus"])||0;
var globalabilitybonus = parseInt(values["globalabilitycheckbonus"])||0;
var jotbonus = Math.floor(profbonus/2);
var bonus = checkbonus+passivebonus+globalskillbonus+globalabilitybonus;
var finalbonus = bonus;
if (jot == 1) {finalbonus = jotbonus+bonus;};
if (prof == 1) {finalbonus = profbonus+bonus;};
setAttrs({
"vehicles_bonus": finalbonus,
});
});
});
on('clicked:initiative-button', async (info) => {
const values = await getAttrsAsync(['character_name','initiativetype','athletics_check','athletics_check_bonus','passive_athletics_bonus','deception_check','deception_check_bonus','passive_deception_bonus','insight_check','insight_check_bonus','passive_insight_bonus','perception_check','perception_check_bonus','passive_perception_bonus','vehicles_check','vehicles_check_bonus','passive_vehicles_bonus','globalskillbonus','globalabilitycheckbonus','rolladvdis','rollgmnormal','PB','strength_mod','wisdom_mod','dexterity_mod','charisma_mod','jackofalltrades_check','initiativebonus']);
const itype = values.initiativetype||"";
const athprof = parseInt(values.athletics_check)||0;
const athcheckbonus = parseInt(values.athletics_check_bonus)||0;
const athpassivebonus = parseInt(values.passive_athletics_bonus)||0;
const decprof = parseInt(values.deception_check)||0;
const deccheckbonus = parseInt(values.deception_check_bonus)||0;
const decpassivebonus = parseInt(values.passive_deception_bonus)||0;
const insprof = parseInt(values.insight_check)||0;
const inscheckbonus = parseInt(values.insight_check_bonus)||0;
const inspassivebonus = parseInt(values.passive_insight_bonus)||0;
const perprof = parseInt(values.perception_check)||0;
const percheckbonus = parseInt(values.perception_check_bonus)||0;
const perpassivebonus = parseInt(values.passive_perception_bonus)||0;
const vehprof = parseInt(values.vehicles_check)||0;
const vehcheckbonus = parseInt(values.vehicles_check_bonus)||0;
const vehpassivebonus = parseInt(values.passive_vehicles_bonus)||0;
const charname = values.character_name || "";
const jot = parseInt(values.jackofalltrades_check)||0;
const str = parseInt(values.strength_mod)||0;
const dex = parseInt(values.dexterity_mod)||0;
const wis = parseInt(values.wisdom_mod)||0;
const cha = parseInt(values.charisma_mod)||0;
const profbonus = parseInt(values.PB)||0;
const globalskillbonus = parseInt(values.globalskillbonus)||0;
const globalabilitybonus = parseInt(values.globalabilitycheckbonus)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
const jotbonus = Math.floor(profbonus/2);
const initbonus = parseInt(values.initiativebonus)||0;
var prof=0;
var checkbonus=0;
var passivebonus=0;
var name = "";
var statbonus=0;
var jotprofbonus = 0;
if (jot == 1) {jotprofbonus = jotbonus;};
if (itype == "1") {
if (perprof == 1) {jotprofbonus = profbonus;};
name = "Wisdom (Perception)";
bonus = wis+perpassivebonus+percheckbonus+globalskillbonus+globalabilitybonus+jotprofbonus+initbonus;
}
if (itype == "2") {
if (athprof == 1) {jotprofbonus = profbonus;};
name = "Strength (Athletics)";
bonus = str+athpassivebonus+athcheckbonus+globalskillbonus+globalabilitybonus+jotprofbonus+initbonus;
}
if (itype == "3") {
if (decprof == 1) {jotprofbonus = profbonus;};
name = "Charisma (Deception)";
bonus = cha+decpassivebonus+deccheckbonus+globalskillbonus+globalabilitybonus+jotprofbonus+initbonus;
}
if (itype == "4") {
if (insprof == 1) {jotprofbonus = profbonus;};
name = "Wisdom (Insight)";
bonus = wis+inspassivebonus+inscheckbonus+globalskillbonus+globalabilitybonus+jotprofbonus+initbonus;
}
if (itype == "5") {
if (vehprof == 1) {jotprofbonus = profbonus;};
name = "Dexterity (Vehicles)";
bonus = dex+vehpassivebonus+vehcheckbonus+globalskillbonus+globalabilitybonus+jotprofbonus+initbonus;
}
if (itype == "6") {
name = "Dexterity (Base)";
bonus = dex+initbonus;
}
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !{{name="+name+" Initiative}}{{roll=[["+diceroll+"+"+bonus+" &{tracker}]]}}");
finishRoll(results.rollId);
});
on('clicked:hitdice-button', async (info) => {
const values = await getAttrsAsync(['character_name','HP','HP_max','hit_dice']);
const charname = values.character_name || "";
const hp = parseInt(values.HP)||0;
const maxhp = parseInt(values.HP_max)||0;
const hitdice = parseInt(values.hit_dice)||0;
var numofDice="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20";
if (hitdice==1) { numofDice = "1";}
if (hitdice==2) { numofDice = "1|2"; }
if (hitdice==3) { numofDice = "1|2|3"; }
if (hitdice==4) { numofDice = "1|2|3|4"; }
if (hitdice==5) { numofDice = "1|2|3|4|5"; }
if (hitdice==6) { numofDice = "1|2|3|4|5|6"; }
if (hitdice==7) { numofDice = "1|2|3|4|5|6|7"; }
if (hitdice==8) { numofDice = "1|2|3|4|5|6|7|8"; }
if (hitdice==9) { numofDice = "1|2|3|4|5|6|7|8|9"; }
if (hitdice==10) { numofDice = "1|2|3|4|5|6|7|8|9|10"; }
if (hitdice==11) { numofDice = "1|2|3|4|5|6|7|8|9|10|11"; }
if (hitdice==12) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12"; }
if (hitdice==13) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13"; }
if (hitdice==14) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14"; }
if (hitdice==15) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15"; }
if (hitdice==16) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16"; }
if (hitdice==17) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17"; }
if (hitdice==18) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18"; }
if (hitdice==19) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19"; }
if (hitdice==20) { numofDice = "1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20"; }
const results = await startRoll( "&{template:default} !?{NumberOfDice|"+numofDice+"}?{dicetype|d6|d8|d10|d12}{{name="+charname+" Hit Dice Roll}}{{roll=[[?{NumberOfDice}?{dicetype}]]}}");
const successes = results.results.roll.result;
const rolled = results.results.roll.dice.length;
const newhd = hitdice-rolled;
var newhp = hp+successes;
if (newhp > maxhp) {newhp = maxhp;}
var attrsToChange = {};
attrsToChange["HP"] = newhp;
attrsToChange["hit_dice"] = newhd;
setAttrs(attrsToChange);
finishRoll(results.rollId);
});
on('clicked:deathsave-button', async (info) => {
const values = await getAttrsAsync(['character_name','death_saves_success','death_saves_fail']);
const charname = values.character_name || "";
const succ = parseInt(values.death_saves_success)||0;
const fail = parseInt(values.death_saves_fail)||0;
const results = await startRoll( "&{template:default} !{{name="+charname+" Death Save}}{{roll=[[1d20]]}}");
const successes = results.results.roll.result;
var newsucc = succ;
var newfail= fail;
if (successes > 9) { newsucc = succ+1;}
if (successes < 10) { newfail=fail+1; }
var attrsToChange = {};
attrsToChange["death_saves_success"] = newsucc;
attrsToChange["death_saves_fail"] = newfail;
setAttrs(attrsToChange);
finishRoll(results.rollId);
});
on("change:PB change:strength_mod change:dexterity_mod change:maneuver_save_bonus change:exertion_points_bonus sheet:opened", function() {
getAttrs(["PB","strength_mod","dexterity_mod","maneuver_save_bonus","exertion_points_bonus"], function(values) {
var str = parseInt(values["strength_mod"])||0;
var dex = parseInt(values["dexterity_mod"])||0;
var profbonus = parseInt(values["PB"])||0;
var manbonus = parseInt(values["maneuver_save_bonus"])||0;
var exebonus = parseInt(values["exertion_points_bonus"])||0;
var stat = str;
if (str < dex) {
stat = dex;
};
setAttrs({
"maneuver_savedc": 8 + stat + profbonus + manbonus,
"exertion_points": (2 * profbonus) + exebonus,
});
});
});
on("change:repeating_spellclass:spellclassability change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod sheet:opened", function() {
getAttrs(["PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod"],
function(values) {
var str = parseInt(values["strength_mod"])||0;
var intel = parseInt(values["intelligence_mod"])||0;
var dex = parseInt(values["dexterity_mod"])||0;
var wis = parseInt(values["wisdom_mod"])||0;
var con = parseInt(values["constitution_mod"])||0;
var cha = parseInt(values["charisma_mod"])||0;
var profbonus = parseInt(values["PB"])||0;
var statbonus = 0;
TAS.repeating("spellclass")
.attrs("spellclassdc","spellclassattack")
.fields("spellclassdc","spellclassattack","spellclassability")
.each(function(r){
var stat = r.spellclassability;
if (stat == "Strength") {
statbonus = str;
};
if (stat == "Dexterity") {
statbonus = dex;
};
if (stat == "Constitution") {
statbonus = con;
};
if (stat == "Intelligence") {
statbonus = intel;
};
if (stat == "Wisdom") {
statbonus = wis;
};
if (stat == "Charisma") {
statbonus = cha;
};
r.spellclassattack=statbonus+profbonus;
r.spellclassdc=statbonus+profbonus+8;
})
.execute(); //< begin executing the above operations
});
});
on("clicked:repeating_attacks:attack-button", async (info) => {
const values = await getAttrsAsync(['character_name','repeating_attacks_attackname','repeating_attacks_attackbonus','repeating_attacks_attackdamage','repeating_attacks_attackdamagetype','repeating_attacks_attacknotes','rolladvdis','rollgmnormal']);
const charname = values.character_name || "";
const name = values.repeating_attacks_attackname || "";
const bonus = values.repeating_attacks_attackbonus || "";
const dam = values.repeating_attacks_attackdamage || "";
const damtype = values.repeating_attacks_attackdamagetype || "";
const notes = values.repeating_attacks_attacknotes || "";
const rolladvdis = values.rolladvdis || "";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {
diceroll = "2d20kh1";
};
if (rolladvdis == "dis") {
diceroll = "2d20dh1";
};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" : "+name+" Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}{{"+damtype+" damage=[["+dam+"]]}}{{Notes="+notes+"}}");
finishRoll(results.rollId);
});
on("clicked:repeating_tools:tool-button", async (info) => {
const values = await getAttrsAsync(['character_name','repeating_tools_toolname','repeating_tools_toolbonus','rolladvdis','rollgmnormal']);
const charname = values.character_name || "";
const name = values.repeating_tools_toolname || "";
const bonus = parseInt(values.repeating_tools_toolbonus) || 0;
const rolladvdis = values.rolladvdis || "";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {
diceroll = "2d20kh1";
};
if (rolladvdis == "dis") {
diceroll = "2d20dh1";
};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" : "+name+" Roll}}{{roll=[["+diceroll+"+"+bonus+"]]}}");
finishRoll(results.rollId);
});
on("clicked:repeating_skills:skill-button", async (info) => {
const values = await getAttrsAsync(['character_name','repeating_skills_skillname','repeating_skills_skillbonus','repeating_skills_skillexdice','rolladvdis','rollgmnormal']);
const charname = values.character_name || "";
const name = values.repeating_skills_skillname || "";
const bonus = parseInt(values.repeating_skills_skillbonus) || 0;
const exdice = values.repeating_skills_skillexdice || "";
const rolladvdis = values.rolladvdis || "";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {
diceroll = "2d20kh1";
};
if (rolladvdis == "dis") {
diceroll = "2d20dh1";
};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} {{name="+charname+" : "+name+" Roll}}{{roll=[["+diceroll+"+"+bonus+"+"+exdice+"]]}}");
finishRoll(results.rollId);
});
on('clicked:npcinitiative-button', async (info) => {
const values = await getAttrsAsync(['character_name','npcinitiative','rolladvdis','rollgmnormal']);
const charname = values.character_name || "";
const initbonus = parseInt(values.npcinitiative)||0;
const rolladvdis = values.rolladvdis||"sta";
const rollgmnormal = values.rollgmnormal||"normal";
var diceroll = "1d20";
if (rolladvdis == "adv") {diceroll = "2d20kh1";};
if (rolladvdis == "dis") {diceroll = "2d20dh1";};
var gmroll = "";
if (rollgmnormal == "gm") { gmroll = "/w gm ";}
const results = await startRoll( gmroll+"&{template:default} !{{name="+name+" Initiative}}{{roll=[["+diceroll+"+"+initbonus+" &{tracker}]]}}");
finishRoll(results.rollId);
});
on("change:repeating_skills:skillname change:repeating_skills:skillbonus change:repeating_skills:skillexdice change:rolladvdis sheet:opened", function() {
getAttrs([
"repeating_skills_skillname","repeating_skills_skillbonus","repeating_skills_skillexdice","rolladvdis"
], function(values) {
var skillname = values["repeating_skills_skillname"]||"";
var bonus = values["repeating_skills_skillbonus"]||"";
var exdice = values["repeating_skills_skillexdice"]||"";
if (exdice == "") {
exdice = "0";
};
var diceroll = "1d20"
if (rolladvdis == "adv") {
diceroll = "2d20kh1";
};
if (rolladvdis == "dis") {
diceroll = "2d20dh1";
};
var setroll = "&{template:default} {{name="+skillname+" Roll}}{{roll=[["+diceroll+"+"+bonus+"+"+exdice+"]]}}";
setAttrs({
"repeating_skills_skillroll": setroll,
});
});
});
on('change:destiny', event => {
const destinydetails = {
"Chaos": {destiny_source: 'Chaos', destiny_inspiration: 'Ingenious Doubletalk', destiny_fulfillment: 'Agent of Chaos'},
"Coming of Age": {destiny_source: 'Finding Yourself', destiny_inspiration: 'Yes to Adventure', destiny_fulfillment: 'Ready to Learn'},
"Devotion": {destiny_source: 'Its Own Reward', destiny_inspiration: 'Selfless Aid', destiny_fulfillment: 'Miraculous Revival'},
"Dominion": {destiny_source: 'Leadership', destiny_inspiration: 'Studied Deliberation', destiny_fulfillment: 'Studied Deliberation'},
"Excellence": {destiny_source: 'Failure', destiny_inspiration: 'Practiced Edge', destiny_fulfillment: 'A Technique Perfected'},
"Knowledge": {destiny_source: 'Learning', destiny_inspiration: 'Critical Evaluation', destiny_fulfillment: 'Converging Theories'},
"Metamorphosis": {destiny_source: 'Unburdening', destiny_inspiration: 'Unearthly Diplomacy', destiny_fulfillment: 'Forever Changed'},
"Revenge": {destiny_source: 'Served Cold', destiny_inspiration: 'Cloak and Dagger', destiny_fulfillment: 'Retaliatory Reputation'},
"Underdog": {destiny_source: 'Defiance', destiny_inspiration: 'A Nose for Trouble', destiny_fulfillment: 'Expendable and Invulnerable'},
"Wealth": {destiny_source: 'Profits', destiny_inspiration: 'Everyone Has a Price', destiny_fulfillment: 'Wise Investments'},
}
getAttrs(['destiny'], values => {
let name = values.destiny;
let output = destinydetails[name] || '';
if(output) setAttrs(output);
});
});
on("change:initiativetype change:perception_init change:athletics_init change:deception_init change:insight_init change:vehicle_init change:dexterity_init sheet:opened", function() {
getAttrs([
"initiativetype","perception_init","athletics_init","deception_init","insight_init","vehicle_init","dexterity_init"
], function(values) {
var itype = values["initiativetype"]||"";
var perception_init = values["perception_init"]||"";
var athletics_init = values["athletics_init"]||"";
var deception_init = values["deception_init"]||"";
var insight_init = values["insight_init"]||"";
var vehicle_init = values["vehicle_init"]||"";
var dexterity_init = values["dexterity_init"]||"";
var setroll = "";
if (itype == "1") {
setroll = perception_init;
}
if (itype == "2") {
setroll = athletics_init;
}
if (itype == "3") {
setroll = deception_init;
}
if (itype == "4") {
setroll = insight_init;
}
if (itype == "5") {
setroll = vehicle_init;
}
if (itype == "6") {
setroll = dexterity_init;
}
setAttrs({
"initiativeroll": setroll,
});
});
});
on("change:HP_max change:HP_bloodied sheet:opened", function () {
getAttrs(["HP_max"], function (values) {
var HPMax = parseInt(values['HP_max'], 10)||0;
var Bloodied = Math.floor(HPMax/2);
setAttrs({
HP_bloodied: Bloodied,
});
});
});
</script>