Files
roll20-character-sheets-tester/Level Up - Advanced 5th Edition/levelup.html
T
seregrauko ef27aeac49 NPC Sheet Fix
Fixed NPC CR current using the incorrect attribute --Reset to using attr_CR
2021-12-15 17:41:46 +00:00

4189 lines
210 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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="Ranger">Ranger</option>
<option data-i18n="Rogue">Rogue</option>
<option data-i18n="Sorcerer">Sorcerer</option>
<option data-i18n="Warlock">Warlock</option>
<option data-i18n="Warlord">Warlord</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="dicelist">
<option>1d4</option>
<option>1d6</option>
<option>1d8</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_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="npc" title="npc">
</label>
<label data-i18n-title="npc" title="npc">
</label>
<label data-i18n-title="npc" title="npc">
</label>
<label data-i18n-title="npc" title="npc">
</label>
<label data-i18n-title="npc" title="npc">
</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"/>
<input data-i18n-placeholder="archtype" name="attr_archtype" placeholder="archtype" spellcheck="false" title="@{archtype}" type="text" list="archtypelist"/>
<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>
</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="attr_strengthroll"></button>
</label>
<label data-i18n-title="strength_save_roll" title="strength_save_roll">
<button type="roll" name="attr_strength_save_roll"></button>
</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">
<input data-i18n-placeholder="strength_save_prof" name="attr_strength_save_prof" title="@{strength_save_prof}" type="checkbox" value="1"/>
<span data-i18n="prof">prof</span>
</label>
</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="attr_dexterityroll"></button>
</label>
<label data-i18n-title="dexterity_save_roll" title="dexterity_save_roll">
<button type="roll" name="attr_dexterity_save_roll"></button>
</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">
<input data-i18n-placeholder="dexterity_save_prof" name="attr_dexterity_save_prof" title="@{dexterity_save_prof}" type="checkbox" value="1"/>
<span data-i18n="prof">prof</span>
</label>
</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="attr_constitutionroll"></button>
</label>
<label data-i18n-title="constitution_save_roll" title="constitution_save_roll">
<button type="roll" name="attr_constitution_save_roll"></button>
</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">
<input data-i18n-placeholder="constitution_save_prof" name="attr_constitution_save_prof" title="@{constitution_save_prof}" type="checkbox" value="1" />
<span data-i18n="prof">prof</span>
</label>
</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="attr_intelligenceroll"></button>
</label>
<label data-i18n-title="intelligence_save_roll" title="intelligence_save_roll">
<button type="roll" name="attr_intelligence_save_roll"></button>
</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">
<input data-i18n-placeholder="intelligence_save_prof" name="attr_intelligence_save_prof" title="@{intelligence_save_prof}" type="checkbox" value="1" />
<span data-i18n="prof">prof</span>
</label>
</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="attr_wisdomroll"></button>
</label>
<label data-i18n-title="wisdom_save_roll" title="wisdom_save_roll">
<button type="roll" name="attr_wisdom_save_roll"></button>
</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">
<input data-i18n-placeholder="wisdom_save_prof" name="attr_wisdom_save_prof" title="@{wisdom_save_prof}" type="checkbox" value="1" />
<span data-i18n="prof">prof</span>
</label>
</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="attr_charismaroll"></button>
</label>
<label data-i18n-title="charisma_save_roll" title="charisma_save_roll">
<button type="roll" name="attr_charisma_save_roll"></button>
</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">
<input data-i18n-placeholder="charisma_save_prof" name="attr_charisma_save_prof" title="@{charisma_save_prof}" type="checkbox" value="1" />
<span data-i18n="prof">prof</span>
</label>
</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>
</label>
<label data-i18n-title="initiativeroll" title="initiativeroll">
<button type="roll" name="attr_initiativeroll"></button>
</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>
</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">
<span data-i18n="hit_dice">hit_dice</span>
<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="@{hit_points_maximum}" 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">
<span data-i18n="death_saves">death_saves</span>
</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="jackofalltrades" title="jackofalltrades">
<span data-i18n="jackofalltrades">jackofalltrades</span>
</label>
<label data-i18n-title="jackofalltrades_check" title="jackofalltrades_check">
<input data-i18n-placeholder="jackofalltrades_check" name="attr_jackofalltrades_check" placeholder="jackofalltrades_check" spellcheck="false" title="@{jackofalltrades_check}" type="checkbox" value="1" />
</label>
<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="expertise_dice" title="expertise_dice">
<span data-i18n="expertise_dice">Expertise Dice</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="expertise_dice2" title="expertise_dice2">
<span data-i18n="expertise_dice">Expertise Dice</span>
</label>
<label data-i18n-title="acrobatics_check" title="acrobatics_check">
<input data-i18n-placeholder="acrobatics_check" name="attr_acrobatics_check" placeholder="acrobatics_check" spellcheck="false" title="@{acrobatics_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="acrobatics_button" title="acrobatics_button">
<button type="roll" name="attr_acrobatics_roll" 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="" />
</label>
<label data-i18n-title="acrobatics_exdice" title="acrobatics_exdice">
<input data-i18n-placeholder="acrobatics_exdice" name="attr_acrobatics_exdice" placeholder="acrobatics_exdice" spellcheck="false" title="@{acrobatics_exdice}" type="text" value="" list="dicelist"/>
</label>
<label data-i18n-title="medicine_check" title="medicine_check">
<input data-i18n-placeholder="medicine_check" name="attr_medicine_check" placeholder="medicine_check" spellcheck="false" title="@{medicine_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="medicine_button" title="medicine_button">
<button type="roll" name="attr_medicine_roll" 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="" />
</label>
<label data-i18n-title="medicine_exdice" title="medicine_exdice">
<input data-i18n-placeholder="medicine_exdice" name="attr_medicine_exdice" placeholder="medicine_exdice" spellcheck="false" title="@{medicine_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="animalhandling_check" title="animalhandling_check">
<input data-i18n-placeholder="animalhandling_check" name="attr_animalhandling_check" placeholder="animalhandling_check" spellcheck="false" title="@{animalhandling_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="animalhandling_button" title="animalhandling_button">
<button type="roll" name="attr_animalhandling_roll"/>
</label>
<label data-i18n-title="animalhandling" title="animalhandling">
<span data-i18n="animalhandling">animalhandling</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="" />
</label>
<label data-i18n-title="animalhandling_exdice" title="animalhandling_exdice">
<input data-i18n-placeholder="animalhandling_exdice" name="attr_animalhandling_exdice" placeholder="animalhandling_exdice" spellcheck="false" title="@{animalhandling_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="nature_check" title="nature_check">
<input data-i18n-placeholder="nature_check" name="attr_nature_check" placeholder="nature_check" spellcheck="false" title="@{nature_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="nature_button" title="nature_button">
<button type="roll" name="attr_nature_roll"/>
</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="" />
</label>
<label data-i18n-title="nature_exdice" title="nature_exdice">
<input data-i18n-placeholder="nature_exdice" name="attr_nature_exdice" placeholder="nature_exdice" spellcheck="false" title="@{nature_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="arcana_check" title="arcana_check">
<input data-i18n-placeholder="arcana_check" name="attr_arcana_check" placeholder="arcana_check" spellcheck="false" title="@{arcana_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="arcana_button" title="arcana_button">
<button type="roll" name="attr_arcana_roll"/>
</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="" />
</label>
<label data-i18n-title="arcana_exdice" title="arcana_exdice">
<input data-i18n-placeholder="arcana_exdice" name="attr_arcana_exdice" placeholder="arcana_exdice" spellcheck="false" title="@{arcana_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="perception_check" title="perception_check">
<input data-i18n-placeholder="perception_check" name="attr_perception_check" placeholder="perception_check" spellcheck="false" title="@{perception_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="perception_button" title="perception_button">
<button type="roll" name="attr_perception_roll"/>
</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="" />
</label>
<label data-i18n-title="perception_exdice" title="perception_exdice">
<input data-i18n-placeholder="perception_exdice" name="attr_perception_exdice" placeholder="perception_exdice" spellcheck="false" title="@{perception_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="athletics_check" title="athletics_check">
<input data-i18n-placeholder="athletics_check" name="attr_athletics_check" placeholder="athletics_check" spellcheck="false" title="@{athletics_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="athletics_button" title="athletics_button">
<button type="roll" name="attr_athletics_roll"/>
</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="" />
</label>
<label data-i18n-title="athletics_exdice" title="athletics_exdice">
<input data-i18n-placeholder="athletics_exdice" name="attr_athletics_exdice" placeholder="athletics_exdice" spellcheck="false" title="@{athletics_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="performance_check" title="performance_check">
<input data-i18n-placeholder="performance_check" name="attr_performance_check" placeholder="performance_check" spellcheck="false" title="@{performance_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="performance_button" title="performance_button">
<button type="roll" name="attr_performance_roll"/>
</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="" />
</label>
<label data-i18n-title="performance_exdice" title="performance_exdice">
<input data-i18n-placeholder="performance_exdice" name="attr_performance_exdice" placeholder="performance_exdice" spellcheck="false" title="@{performance_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="culture_check" title="culture_check">
<input data-i18n-placeholder="culture_check" name="attr_culture_check" placeholder="culture_check" spellcheck="false" title="@{culture_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="culture_button" title="culture_button">
<button type="roll" name="attr_culture_roll"/>
</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="" />
</label>
<label data-i18n-title="culture_exdice" title="culture_exdice">
<input data-i18n-placeholder="culture_exdice" name="attr_culture_exdice" placeholder="culture_exdice" spellcheck="false" title="@{culture_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="persuasion_check" title="persuasion_check">
<input data-i18n-placeholder="persuasion_check" name="attr_persuasion_check" placeholder="persuasion_check" spellcheck="false" title="@{persuasion_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="persuasion_button" title="persuasion_button">
<button type="roll" name="attr_persuasion_roll"/>
</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="" />
</label>
<label data-i18n-title="persuasion_exdice" title="persuasion_exdice">
<input data-i18n-placeholder="persuasion_exdice" name="attr_persuasion_exdice" placeholder="persuasion_exdice" spellcheck="false" title="@{persuasion_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="deception_check" title="deception_check">
<input data-i18n-placeholder="deception_check" name="attr_deception_check" placeholder="deception_check" spellcheck="false" title="@{deception_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="deception_button" title="deception_button">
<button type="roll" name="attr_deception_roll"/>
</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="" />
</label>
<label data-i18n-title="deception_exdice" title="deception_exdice">
<input data-i18n-placeholder="deception_exdice" name="attr_deception_exdice" placeholder="deception_exdice" spellcheck="false" title="@{deception_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="religion_check" title="religion_check">
<input data-i18n-placeholder="religion_check" name="attr_religion_check" placeholder="religion_check" spellcheck="false" title="@{religion_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="religion_button" title="religion_button">
<button type="roll" name="attr_religion_roll"/>
</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="" />
</label>
<label data-i18n-title="religion_exdice" title="religion_exdice">
<input data-i18n-placeholder="religion_exdice" name="attr_religion_exdice" placeholder="religion_exdice" spellcheck="false" title="@{religion_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="engineering_check" title="engineering_check">
<input data-i18n-placeholder="engineering_check" name="attr_engineering_check" placeholder="engineering_check" spellcheck="false" title="@{engineering_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="engineering_button" title="engineering_button">
<button type="roll" name="attr_engineering_roll"/>
</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="" />
</label>
<label data-i18n-title="engineering_exdice" title="engineering_exdice">
<input data-i18n-placeholder="engineering_exdice" name="attr_engineering_exdice" placeholder="engineering_exdice" spellcheck="false" title="@{engineering_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="sleightofhand_check" title="sleightofhand_check">
<input data-i18n-placeholder="sleightofhand_check" name="attr_sleightofhand_check" placeholder="sleightofhand_check" spellcheck="false" title="@{sleightofhand_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="sleightofhand_button" title="sleightofhand_button">
<button type="roll" name="attr_sleightofhand_roll"/>
</label>
<label data-i18n-title="sleightofhand" title="sleightofhand">
<span data-i18n="sleightofhand">sleightofhand</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="" />
</label>
<label data-i18n-title="sleightofhand_exdice" title="sleightofhand_exdice">
<input data-i18n-placeholder="sleightofhand_exdice" name="attr_sleightofhand_exdice" placeholder="sleightofhand_exdice" spellcheck="false" title="@{sleightofhand_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="history_check" title="history_check">
<input data-i18n-placeholder="history_check" name="attr_history_check" placeholder="history_check" spellcheck="false" title="@{history_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="history_button" title="history_button">
<button type="roll" name="attr_history_roll"/>
</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="" />
</label>
<label data-i18n-title="history_exdice" title="history_exdice">
<input data-i18n-placeholder="history_exdice" name="attr_history_exdice" placeholder="history_exdice" spellcheck="false" title="@{history_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="stealth_check" title="stealth_check">
<input data-i18n-placeholder="stealth_check" name="attr_stealth_check" placeholder="stealth_check" spellcheck="false" title="@{stealth_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="stealth_button" title="stealth_button">
<button type="roll" name="attr_stealth_roll"/>
</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="" />
</label>
<label data-i18n-title="stealth_exdice" title="stealth_exdice">
<input data-i18n-placeholder="stealth_exdice" name="attr_stealth_exdice" placeholder="stealth_exdice" spellcheck="false" title="@{stealth_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="insight_check" title="insight_check">
<input data-i18n-placeholder="insight_check" name="attr_insight_check" placeholder="insight_check" spellcheck="false" title="@{insight_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="insight_button" title="insight_button">
<button type="roll" name="attr_insight_roll"/>
</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="" />
</label>
<label data-i18n-title="insight_exdice" title="insight_exdice">
<input data-i18n-placeholder="insight_exdice" name="attr_insight_exdice" placeholder="insight_exdice" spellcheck="false" title="@{insight_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="survival_check" title="survival_check">
<input data-i18n-placeholder="survival_check" name="attr_survival_check" placeholder="survival_check" spellcheck="false" title="@{survival_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="survival_button" title="survival_button">
<button type="roll" name="attr_survival_roll"/>
</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="" />
</label>
<label data-i18n-title="survival_exdice" title="survival_exdice">
<input data-i18n-placeholder="survival_exdice" name="attr_survival_exdice" placeholder="survival_exdice" spellcheck="false" title="@{survival_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="intimidation_check" title="intimidation_check">
<input data-i18n-placeholder="intimidation_check" name="attr_intimidation_check" placeholder="intimidation_check" spellcheck="false" title="@{intimidation_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="intimidation_button" title="intimidation_button">
<button type="roll" name="attr_intimidation_roll"/>
</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="" />
</label>
<label data-i18n-title="intimidation_exdice" title="intimidation_exdice">
<input data-i18n-placeholder="intimidation_exdice" name="attr_intimidation_exdice" placeholder="intimidation_exdice" spellcheck="false" title="@{intimidation_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="misc1_check" title="misc1_check">
<input data-i18n-placeholder="misc1_check" name="attr_misc1_check" placeholder="misc1_check" spellcheck="false" title="@{misc1_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="misc1_button" title="misc1_button">
<button type="roll" name="attr_misc1_roll"/>
</label>
<label data-i18n-title="misc1" title="misc1">
<input data-i18n-placeholder="misc1" name="attr_misc1" placeholder="misc1" spellcheck="false" title="@{misc1}" type="text" value="" />
</label>
<label data-i18n-title="misc1_exdice" title="misc1_exdice">
<input data-i18n-placeholder="misc1_exdice" name="attr_misc1_exdice" placeholder="misc1_exdice" spellcheck="false" title="@{misc1_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="investigation_check" title="investigation_check">
<input data-i18n-placeholder="investigation_check" name="attr_investigation_check" placeholder="investigation_check" spellcheck="false" title="@{investigation_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="investigation_button" title="investigation_button">
<button type="roll" name="attr_investigation_roll"/>
</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="" />
</label>
<label data-i18n-title="investigation_exdice" title="investigation_exdice">
<input data-i18n-placeholder="investigation_exdice" name="attr_investigation_exdice" placeholder="investigation_exdice" spellcheck="false" title="@{investigation_exdice}" type="text" value="" list="dicelist" />
</label>
<label data-i18n-title="misc2_check" title="misc2_check">
<input data-i18n-placeholder="misc2_check" name="attr_misc2_check" placeholder="misc2_check" spellcheck="false" title="@{misc2_check}" type="checkbox" value="1" />
</label>
<label data-i18n-title="misc2_button" title="misc2_button">
<button type="roll" name="attr_misc2_roll"/>
</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="" />
</label>
<label data-i18n-title="misc2_exdice" title="misc2_exdice">
<input data-i18n-placeholder="misc2_exdice" name="attr_misc2_exdice" placeholder="misc2_exdice" spellcheck="false" title="@{misc2_exdice}" type="text" value="" list="dicelist" />
</label>
<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="toolexpertise_dice" title="toolexpertise_dice">
<span data-i18n="expertise_dice">Expertise Dice</span>
</label>
<div class="sheet-toollist">
<fieldset class="repeating_tools">
<label data-i18n-title="repeatingtools" title="repeatingtools">
<input data-i18n-placeholder="toolprof" name="attr_toolprof" placeholder="toolprof" spellcheck="false" title="@{toolprof}" type="checkbox" value="1" />
<button data-i18n-placeholder="toolroll" type="roll" name="attr_toolroll"></button>
<input data-i18n-placeholder="toolname" name="attr_toolname" placeholder="toolname" spellcheck="false" title="@{toolname}" type="text" value="" />
<input data-i18n-placeholder="toolexdice" name="attr_toolexdice" placeholder="toolexdice" spellcheck="false" title="@{toolexdice}" list="dicelist" type="text" 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="attackroll" type="roll" name="attr_attackroll"></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>
<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="exertion_points" name="attr_exertion_points" placeholder="exertion_points" spellcheck="false" title="@{exertion_points}" type="number" value="" />
</label>
<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="" />
</label>
</fieldset>
</div>
</div>
<div class='sheet-display-explorationknacks'>
<label data-i18n-title="explorationknacks" title="explorationknacks">
<span data-i18n="explorationknacks">explorationknacks</span>
<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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</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="" />
</label>
</fieldset>
</div>
</div>
</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="info" title="info">
</label>
<label data-i18n-title="info" title="info">
</label>
<label data-i18n-title="info" title="info">
</label>
<label data-i18n-title="info" title="info">
</label>
<label data-i18n-title="info" title="info">
</label>
<label data-i18n-title="info" title="info">
</label>
</div>
<div class="sheet-npc-stats">
<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="" />
<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-statblock">
<label data-i18n-title="str" title="str">
<span data-i18n="str">str</span>
<button type="roll" name="attr_strengthroll"></button>
</label>
<label data-i18n-title="dex" title="dex">
<span data-i18n="dex">dex</span>
<button type="roll" name="attr_dexterityroll"></button>
</label>
<label data-i18n-title="con" title="con">
<span data-i18n="con">con</span>
<button type="roll" name="attr_constitutionroll"></button>
</label>
<label data-i18n-title="int" title="int">
<span data-i18n="int">int</span>
<button type="roll" name="attr_intelligenceroll"></button>
</label>
<label data-i18n-title="wis" title="wis">
<span data-i18n="wis">wis</span>
<button type="roll" name="attr_wisdomroll"></button>
</label>
<label data-i18n-title="cha" title="cha">
<span data-i18n="cha">cha</span>
<button type="roll" name="attr_charismaroll"></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="attr_strength_save_roll"></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="attr_dexterity_save_roll"></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="attr_constitution_save_roll"></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="attr_intelligence_save_roll"></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="attr_wisdom_save_roll"></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="attr_charisma_save_roll"></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="skillroll" type="roll" name="attr_skillroll"></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="attackroll" type="roll" name="attr_attackroll"></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-npc-info">
<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 ---- */
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("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: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 setroll = "&{template:default} {{name=Strength Check}}{{check=[[1d20+"+modifier+"]]}}";
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
strength_mod: modifier,
strength_save_mod: savemod,
strengthroll: setroll,
});
});
});
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 setroll = "&{template:default} {{name=Dexterity Check}}{{check=[[1d20+"+modifier+"]]}}";
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
dexterity_mod: modifier,
dexterity_save_mod: savemod,
dexterityroll: setroll,
});
});
});
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 setroll = "&{template:default} {{name=Constitution Check}}{{check=[[1d20+"+modifier+"]]}}";
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
constitution_mod: modifier,
constitution_save_mod: savemod,
constitutionroll: setroll,
});
});
});
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 setroll = "&{template:default} {{name=Intelligence Check}}{{check=[[1d20+"+modifier+"]]}}";
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
intelligence_mod: modifier,
intelligence_save_mod: savemod,
intelligenceroll: setroll,
});
});
});
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 setroll = "&{template:default} {{name=Wisdom Check}}{{check=[[1d20+"+modifier+"]]}}";
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
wisdom_mod: modifier,
wisdom_save_mod: savemod,
wisdomroll: setroll,
});
});
});
on("change:charisma change:PB change:charisma_save_prof sheet:opened", function () {
getAttrs(["charisma","charisma_save_prof","PB"], 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 setroll = "&{template:default} {{name=Charisma Check}}{{check=[[1d20+"+modifier+"]]}}";
var savemod = modifier;
if (saveprof == 1) {
savemod = savemod + prof;
};
setAttrs({
charisma_mod: modifier,
charisma_save_mod: savemod,
charismaroll: setroll,
});
});
});
on("change:strength_save_mod sheet:opened", function() {
getAttrs(["strength_save_mod"], function(values) {
var statsave = parseInt(values["strength_save_mod"])||0;
var setsaveroll = "&{template:default} {{name=Strength Save}}{{save=[[1d20+"+statsave+"]]}}";
setAttrs({
"strength_save_roll": setsaveroll,
});
});
});
on("change:dexterity_save_mod sheet:opened", function() {
getAttrs(["dexterity_save_mod"], function(values) {
var statsave = parseInt(values["dexterity_save_mod"])||0;
var setsaveroll = "&{template:default} {{name=Dexterity Save}}{{save=[[1d20+"+statsave+"]]}}";
setAttrs({
"dexterity_save_roll": setsaveroll,
});
});
});
on("change:constitution_save_mod sheet:opened", function() {
getAttrs(["constitution_save_mod"], function(values) {
var statsave = parseInt(values["constitution_save_mod"])||0;
var setsaveroll = "&{template:default} {{name=Constitution Save}}{{save=[[1d20+"+statsave+"]]}}";
setAttrs({
"constitution_save_roll": setsaveroll,
});
});
});
on("change:intelligence_save_mod sheet:opened", function() {
getAttrs(["intelligence_save_mod"], function(values) {
var statsave = parseInt(values["intelligence_save_mod"])||0;
var setsaveroll = "&{template:default} {{name=Intelligence Save}}{{save=[[1d20+"+statsave+"]]}}";
setAttrs({
"intelligence_save_roll": setsaveroll,
});
});
});
on("change:wisdom_save_mod sheet:opened", function() {
getAttrs(["wisdom_save_mod"], function(values) {
var statsave = parseInt(values["wisdom_save_mod"])||0;
var setsaveroll = "&{template:default} {{name=Wisdom Save}}{{save=[[1d20+"+statsave+"]]}}";
setAttrs({
"wisdom_save_roll": setsaveroll,
});
});
});
on("change:charisma_save_mod sheet:opened", function() {
getAttrs(["charisma_save_mod"], function(values) {
var statsave = parseInt(values["charisma_save_mod"])||0;
var setsaveroll = "&{template:default} {{name=Charisma Save}}{{save=[[1d20+"+statsave+"]]}}";
setAttrs({
"charisma_save_roll": setsaveroll,
});
});
});
on("change:initiative sheet:opened", function() {
getAttrs(["initiative"], function(values) {
var init = parseInt(values["initiative"])||0;
var setroll = "&{template:default} {{name=Initiative}}{{initiative=[[1d20+"+init+"&{tracker}]]}}";
setAttrs({
"initiativeroll": setroll,
});
});
});
on("change:acrobatics_check change:acrobatics_specialty change:acrobatics_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["acrobatics_check","acrobatics_exdice","acrobatics_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["acrobatics_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["acrobatics_exdice"]||"";
var specialty = values["acrobatics_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Acrobatics ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";;
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Acrobatics ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Acrobatics ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"acrobatics_roll": setroll,
});
});
});
on("change:animalhandling_check change:animalhandling_specialty change:animalhandling_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["animalhandling_check","animalhandling_exdice","animalhandling_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["animalhandling_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["animalhandling_exdice"]||"";
var specialty = values["animalhandling_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Animal Handling ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Animal Handling ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Animal Handling ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"animalhandling_roll": setroll,
});
});
});
on("change:arcana_check change:arcana_specialty change:arcana_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["arcana_check","arcana_exdice","arcana_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["arcana_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["arcana_exdice"]||"";
var specialty = values["arcana_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Arcana ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Arcana ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Arcana ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"arcana_roll": setroll,
});
});
});
on("change:athletics_check change:athletics_specialty change:athletics_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["athletics_check","athletics_exdice","athletics_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["athletics_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["athletics_exdice"]||"";
var specialty = values["athletics_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Athletics ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
var setinit = "&{template:default} !{{name=Athletics Initiative}}{{roll=[[1d20+"+str+"+"+exdice+" &{tracker}]]}}" ;
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Athletics ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Athletics Initiative}}{{roll=[[1d20+"+str+"+"+jotbonus+"+"+exdice+" &{tracker}]]}}" ;
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Athletics ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Athletics Initiative}}{{roll=[[1d20+"+str+"+"+profbonus+"+"+exdice+" &{tracker}]]}}" ;
};
setAttrs({
"athletics_roll": setroll,
"athletics_init": setinit,
});
});
});
on("change:culture_check change:culture_specialty change:culture_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["culture_check","culture_exdice","culture_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["culture_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["culture_exdice"]||"";
var specialty = values["culture_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Culture ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Culture ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Culture ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"culture_roll": setroll,
});
});
});
on("change:deception_check change:deception_specialty change:deception_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["deception_check","deception_exdice","deception_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["deception_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["deception_exdice"]||"";
var specialty = values["deception_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Deception ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
var setinit = "&{template:default} !{{name=Deception Initiative}}{{roll=[[1d20+"+cha+"+"+exdice+" &{tracker}]]}}" ;
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Deception ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Deception Initiative}}{{roll=[[1d20+"+cha+"+"+jotbonus+"+"+exdice+" &{tracker}]]}}" ;
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Deception ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Deception Initiative}}{{roll=[[1d20+"+cha+"+"+profbonus+"+"+exdice+" &{tracker}]]}}" ;
};
setAttrs({
"deception_roll": setroll,
"deception_init": setinit,
});
});
});
on("change:engineering_check change:engineering_specialty change:engineering_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["engineering_check","engineering_exdice","engineering_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["engineering_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["engineering_exdice"]||"";
var specialty = values["engineering_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Engineering ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Engineering ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Engineering ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"engineering_roll": setroll,
});
});
});
on("change:history_check change:history_specialty change:history_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["history_check","history_exdice","history_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["history_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["history_exdice"]||"";
var specialty = values["history_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=History ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=History ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=History ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"history_roll": setroll,
});
});
});
on("change:insight_check change:insight_specialty change:insight_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["insight_check","insight_exdice","insight_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["insight_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["insight_exdice"]||"";
var specialty = values["insight_specialty"]||"";
var bonus = 0;
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Insight ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
var setinit = "&{template:default} !{{name=Insight Initiative}}{{roll=[[1d20+"+wis+"+"+exdice+" &{tracker}]]}}" ;
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Insight ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Insight Initiative}}{{roll=[[1d20+"+wis+"+"+jotbonus+"+"+exdice+" &{tracker}]]}}" ;
bonus = jotbonus;
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Insight ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Insight Initiative}}{{roll=[[1d20+"+wis+"+"+profbonus+"+"+exdice+" &{tracker}]]}}" ;
bonus = profbonus;
};
setAttrs({
"insight_roll": setroll,
"insight_init": setinit,
"passive_insight": bonus+wis+8,
});
});
});
on("change:intimidation_check change:intimidation_specialty change:intimidation_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["intimidation_check","intimidation_exdice","intimidation_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["intimidation_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["intimidation_exdice"]||"";
var specialty = values["intimidation_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Intimidation ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Intimidation ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Intimidation ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"intimidation_roll": setroll,
});
});
});
on("change:investigation_check change:investigation_specialty change:investigation_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["investigation_check","investigation_exdice","investigation_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["investigation_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["investigation_exdice"]||"";
var specialty = values["investigation_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Investigation ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Investigation ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Investigation ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"investigation_roll": setroll,
});
});
});
on("change:medicine_check change:medicine_specialty change:medicine_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["medicine_check","medicine_exdice","medicine_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["medicine_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["medicine_exdice"]||"";
var specialty = values["medicine_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Medicine ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Medicine ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Medicine ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"medicine_roll": setroll,
});
});
});
on("change:nature_check change:nature_specialty change:nature_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["nature_check","nature_exdice","nature_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["nature_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["nature_exdice"]||"";
var specialty = values["nature_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Nature ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Nature ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Nature ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"nature_roll": setroll,
});
});
});
on("change:perception_check change:perception_specialty change:perception_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["perception_check","perception_exdice","perception_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["perception_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["perception_exdice"]||"";
var specialty = values["perception_specialty"]||"";
var bonus = 0;
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Perception ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
var setinit = "&{template:default} !{{name=Perception Initiative}}{{roll=[[1d20+"+wis+"+"+exdice+" &{tracker}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Perception ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Perception Initiative}}{{roll=[[1d20+"+wis+"+"+jotbonus+"+"+exdice+" &{tracker}]]}}";
bonus = jotbonus;
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Perception ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
setinit = "&{template:default} !{{name=Perception Initiative}}{{roll=[[1d20+"+wis+"+"+profbonus+"+"+exdice+" &{tracker}]]}}";
bonus = profbonus;
};
setAttrs({
"perception_roll": setroll,
"perception_init": setinit,
"passive_perception": bonus+wis+8,
});
});
});
on("change:performance_check change:performance_specialty change:performance_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["performance_check","performance_exdice","performance_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["performance_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["performance_exdice"]||"";
var specialty = values["performance_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Performance ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Performance ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Performance ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"performance_roll": setroll,
});
});
});
on("change:persuasion_check change:persuasion_specialty change:persuasion_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["persuasion_check","persuasion_exdice","persuasion_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["persuasion_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["persuasion_exdice"]||"";
var specialty = values["persuasion_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Persuasion ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Persuasion ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Charisma, "+cha+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Persuasion ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"persuasion_roll": setroll,
});
});
});
on("change:religion_check change:religion_specialty change:religion_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["religion_check","religion_exdice","religion_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["religion_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["religion_exdice"]||"";
var specialty = values["religion_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Religion ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Religion ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Intelligence, "+intel+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Religion ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"religion_roll": setroll,
});
});
});
on("change:sleightofhand_check change:sleightofhand_specialty change:sleightofhand_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["sleightofhand_check","sleightofhand_exdice","sleightofhand_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["sleightofhand_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["sleightofhand_exdice"]||"";
var specialty = values["sleightofhand_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Sleight of Hand ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Sleight of Hand ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Sleight of Hand ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"sleightofhand_roll": setroll,
});
});
});
on("change:stealth_check change:stealth_specialty change:stealth_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["stealth_check","stealth_exdice","stealth_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["stealth_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["stealth_exdice"]||"";
var specialty = values["stealth_specialty"]||"";
var bonus = 0;
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Stealth ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Stealth ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
bonus = jotbonus;
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Dexterity, "+dex+"|Strength, "+str+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Stealth ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
bonus = profbonus;
};
setAttrs({
"stealth_roll": setroll,
"passive_stealth": dex+bonus+8,
});
});
});
on("change:survival_check change:survival_specialty change:survival_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["survival_check","survival_exdice","survival_specialty","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["survival_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["survival_exdice"]||"";
var specialty = values["survival_specialty"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Survival ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Survival ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Wisdom, "+wis+"|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name=Survival ("+specialty+") Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"survival_roll": setroll,
});
});
});
on("change:misc1_check change:misc1 change:misc1_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["misc1_check","misc1_exdice","misc1","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["misc1_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["misc1_exdice"]||"";
var specialty = values["misc1"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+specialty+" Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+specialty+" Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+specialty+" Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"misc1_roll": setroll,
});
});
});
on("change:misc2_check change:misc2 change:misc2_exdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs(["misc2_check","misc2_exdice","misc2","PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"], function(values) {
var prof = values["misc2_check"]||0;
var jot = values["jackofalltrades_check"]||0;
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 exdice = values["misc2_exdice"]||"";
var specialty = values["misc2"]||"";
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+specialty+" Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+specialty+" Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+specialty+" Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"misc2_roll": setroll,
});
});
});
on("change:PB change:strength_mod change:dexterity_mod sheet:opened", function() {
getAttrs(["PB","strength_mod","dexterity_mod"], function(values) {
var str = parseInt(values["strength_mod"])||0;
var dex = parseInt(values["dexterity_mod"])||0;
var profbonus = parseInt(values["PB"])||0;
var stat = str;
if (str < dex) {
stat = dex;
};
setAttrs({
"maneuver_savedc": 8 + stat + profbonus,
"exertion_points": 2 * profbonus,
});
});
});
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("change:repeating_tools:toolname change:repeating_tools:toolprof change:repeating_tools:toolexdice change:PB change:strength_mod change:intelligence_mod change:wisdom_mod change:dexterity_mod change:constitution_mod change:charisma_mod change:jackofalltrades_check sheet:opened", function() {
getAttrs([
"repeating_tools_toolname","repeating_tools_toolprof","repeating_tools_toolexdice",
"PB","strength_mod","intelligence_mod","wisdom_mod","dexterity_mod","constitution_mod","charisma_mod","jackofalltrades_check"
], function(values) {
var toolname = values["repeating_tools_toolname"]||"";
var prof = values["repeating_tools_toolprof"]||"";
var exdice = values["repeating_tools_exdice"]||"";
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 jot = values["jackofalltrades_check"]||0;
var jotbonus = Math.floor(profbonus/2);
var specdice = "1d4";
if (exdice == "") {
exdice = "0d6";
specdice = "1d4";
};
if (exdice == "1d4") {
specdice = "1d6";
};
if (exdice == "1d6") {
specdice = "1d8";
};
if (exdice == "1d8") {
specdice = "1d8";
};
var setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+toolname+" Roll}}{{roll=[[1d20+?{Stat}+?{IncludeSpecialty}]]}}";
if (jot == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+toolname+" Roll}}{{roll=[[1d20+?{Stat}+"+jotbonus+"+?{IncludeSpecialty}]]}}";
};
if (prof == 1) {
setroll = "&{template:default} !?{Stat|Strength, "+str+"|Dexterity, "+dex+"|Constitution, "+con+"|Intelligence, "+intel+"|Wisdom, "+wis+"|Charisma, "+cha+"} ?{IncludeSpecialty|No, "+exdice+"|Yes, "+specdice+" } {{name="+toolname+" Roll}}{{roll=[[1d20+?{Stat}+"+profbonus+"+?{IncludeSpecialty}]]}}";
};
setAttrs({
"repeating_tools_toolroll": setroll,
});
});
});
on("change:repeating_attacks:attackname change:repeating_attacks:attackbonus change:repeating_attacks:attackdamage change:repeating_attacks:attackdamagetype change:repeating_attacks:attacknotes sheet:opened", function() {
getAttrs([
"repeating_attacks_attackname","repeating_attacks_attackbonus","repeating_attacks_attackdamage","repeating_attacks_attackdamagetype","repeating_attacks_attacknotes"
], function(values) {
var attackname = values["repeating_attacks_attackname"]||"";
var bonus = values["repeating_attacks_attackbonus"]||"";
var dam = values["repeating_attacks_attackdamage"]||"";
var damtype = values["repeating_attacks_attackdamagetype"]||"";
var notes = values["repeating_attacks_attacknotes"]||"";
if (!isNaN(bonus.charAt(0))) {
bonus= "+"+bonus;
}
var setroll = "&{template:default} {{name="+attackname+" Roll}}{{roll=[[1d20"+bonus+"]]}}{{"+damtype+" damage=[["+dam+"]]}}{{Notes="+notes+"}}";
setAttrs({
"repeating_attacks_attackroll": setroll,
});
});
});
on("change:repeating_skills:skillname change:repeating_skills:skillbonus change:repeating_skills:skillexdice sheet:opened", function() {
getAttrs([
"repeating_skills_skillname","repeating_skills_skillbonus","repeating_skills_skillexdice"
], 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 setroll = "&{template:default} {{name="+skillname+" Roll}}{{roll=[[1d20+"+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 sheet:opened", function() {
getAttrs([
"initiativetype","perception_init","athletics_init","deception_init","insight_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 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;
}
setAttrs({
"initiativeroll": setroll,
});
});
});
on("sheet:opened", function() {
getAttrs([
"migratev5","hit_points_temp","hit_points_maximum","hit_points_current","armor_class","proficiencybonus",
"charismasaveprof","charismasave","charismasaveroll","charismamod",
"wisdomsaveprof","wisdomsave","wisdomsaveroll","wisdommod",
"intelligencesaveprof","intelligencesave","intelligencesaveroll","intelligencemod",
"constitutionsaveprof","constitutionsave","constitutionsaveroll","constitutionmod",
"dexteritysaveprof","dexteritysave","dexteritysaveroll","dexteritymod",
"strengthsaveprof","strengthsave","strengthsaveroll","strengthmod"
], function(values) {
var migrated = values["migratev5"]||"";
var tempHP = values["hit_points_temp"]||"";
var HPmax = values["hit_points_maximum"]||"";
var HPCurr = values["hit_points_current"]||"";
var AC = values["armor_class"]||"";
var PB = values["proficiencybonus"]||"";
var chasaveprof = values["charismasaveprof"]||"";
var chasavmod = values["charismasave"]||"";
var chasave = values["charismasaveroll"]||"";
var chamod = values["charismamod"]||"";
var wissaveprof = values["wisdomsaveprof"]||"";
var wissavemod = values["wisdomsave"]||"";
var wissave = values["wisdomsaveroll"]||"";
var wismod = values["wisdommod"]||"";
var intsaveprof = values["intelligencesaveprof"]||"";
var intsavemod = values["intelligencesave"]||"";
var intsave = values["intelligencesaveroll"]||"";
var intmod = values["intelligencemod"]||"";
var consaveprof = values["constitutionsaveprof"]||"";
var consavemod = values["constitutionsave"]||"";
var consav = values["constitutionsaveroll"]||"";
var conmod = values["constitutionmod"]||"";
var dexsaveprof = values["dexteritysaveprof"]||"";
var dexsavemod = values["dexteritysave"]||"";
var dexsave = values["dexteritysaveroll"]||"";
var dexmod = values["dexteritymod"]||"";
var strsaveprof = values["strengthsaveprof"]||"";
var strsavemod = values["strengthsave"]||"";
var strsave = values["strengthsaveroll"]||"";
var strmod = values["strengthmod"]||"";
if (migrated == "No") {
setAttrs({
"strength_mod": strmod,"strength_save_roll": strsave,"strength_save_mod": strsavemod,"strength_save_prof": strsaveprof,
"dexterity_mod": dexmod,"dexterity_save_roll": dexsave,"dexterity_save_mod": dexsavemod,"dexterity_save_prof": dexsaveprof,
"constitution_mod": conmod,"constitution_save_roll": consav,"constitution_save_mod": consavemod,"constitution_save_prof": consaveprof,
"intelligence_mod": intmod,"intelligence_save_roll": intsave,"intelligence_save_mod": intsavemod,"intelligence_save_prof": intsaveprof,
"wisdom_mod": wismod,"wisdom_save_roll": wissave,"wisdom_save_mod": wissavemod,"wisdom_save_prof": wissaveprof,
"charisma_mod": chamod,"charisma_save_roll": chasave,"charisma_save_mod": chasavmod,"charisma_save_prof": chasaveprof,
"PB": PB, "AC": AC, "HP": HPCurr, "HP_max": HPmax, "temp_HP": tempHP, "migratev5": "Yes",
});
}
});
});
</script>