Files
roll20-character-sheets/Gestalt/GestaltSheet.html
T
Parka24 69cca45586 [GestaltRPG] Adding New Sheet
Adding new sheet, CSS, JSON, and preview for the Gestalt RPG.
2025-05-16 17:14:46 -07:00

1749 lines
86 KiB
HTML

<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="character" />
<div>
<button type="action" name="act_character" class="sheet-button0">Character</button>
<button type="action" name="act_skills" class="sheet-button1">Skills</button>
<button type="action" name="act_traits" class="sheet-button2">Traits</button>
<button type="action" name="act_classf" class="sheet-button3">Class Features</button>
<button type="action" name="act_feats" class="sheet-button4">Feats</button>
<button type="action" name="act_attacks" class="sheet-button5">Attacks</button>
<button type="action" name="act_defenses" class="sheet-button6">Defenses</button>
<button type="action" name="act_spells" class="sheet-button7">Spells</button>
<button type="action" name="act_notes" class="sheet-button8">Notes</button>
</div>
<div class="sheet-character">
<h2>Character</h2>
<span>
<div class="sheet-frontsheet sheet-grid-sectionfront">
<div class="sheet-namelvl sheet-block">
<label>Name:</label><input type="text" name="attr_character_name" />
<label>Primary Class:</label><input type="text" name="attr_primaryclass" />
<label>Secondary Class:</label><input type="text" name="attr_secondaryclass" />
<label>Level:</label><input type="number" value="1" name="attr_characterlevel" />
</div>
<div class="sheet-lineage sheet-block">
<label>Lineage:</label><input type="text" name="attr_lineage" />
<label>Culture:</label><input type="text" name="attr_culture" />
<label>Size:</label>
<select name="attr_sizecat" class="sizecat">
<option value="tiny">Tiny</option>
<option value="small">Small</option>
<option value="medium" selected>Medium</option>
<option value="large">Large</option>
<option value="huge">Huge</option>
</select>
<label>Speed:</label><input type="number" name="attr_speed" class='sheet-arrowless' />
</div>
<div class="sheet-hp sheet-block">
<label>HP/Max:</label><input type="number" name="attr_hp" class='sheet-arrowless' /><input type="number" name="attr_hp_max" class='sheet-arrowless' />
<label>Primary Mana/Max:</label><input type="number" placeholder="0" name="attr_primana" /><input type="number" placeholder="0" name="attr_primana_max" />
<label>Secondary Mana/Max:</label><input type="number" placeholder="0" name="attr_secmana" /><input type="number" placeholder="0" name="attr_secmana_max" />
<label>Personal Hero Dice Current/Max:</label><input type="number" placeholder="0" name="attr_herodice_current" /><input type="number" class='sheet-arrowless' name="attr_herodice_max" value="10" readonly />
</div>
<div class="sheet-attributes sheet-block">
<h2>Attributes</h2>
<label>Strength </label><input type="number" placeholder="0" name='attr_strength' class='sheet-short' value='0'>
<button type='roll' name='roll_testattack' value='&{template:default} {{name=@{character_name}}} {{Strength check=[[1d20 + @{strength}]]}}'></button>
<br />
<label>Dexterity </label><input type="number" placeholder="0" name='attr_dexterity' class='sheet-short' value='0'>
<button type='roll' name='roll_testattack' value='&{template:default} {{name=@{character_name}}} {{Dexterity check=[[1d20 + @{dexterity}]]}}'></button>
<br />
<label>Constitution </label><input type="number" placeholder="0" name='attr_constitution' class='sheet-short' value='0'>
<button type='roll' name='roll_testattack' value='&{template:default} {{name=@{character_name}}} {{Constitution check=[[1d20 + @{constitution}]]}}'></button>
<br />
<label>Intelligence </label><input type="number" placeholder="0" name='attr_intelligence' class='sheet-short' value='0'>
<button type='roll' name='roll_testattack' value='&{template:default} {{name=@{character_name}}} {{Intelligence check=[[1d20 + @{intelligence}]]}}'></button>
<br />
<label>Wisdom </label><input type="number" placeholder="0" name='attr_wisdom' class='sheet-short' value='0'>
<button type='roll' name='roll_testattack' value='&{template:default} {{name=@{character_name}}} {{Wisdom check=[[1d20 + @{wisdom}]]}}'></button>
<br />
<label>Charisma </label><input type="number" placeholder="0" name='attr_charisma' class='sheet-short' value='0'>
<button type='roll' name='roll_testattack' value='&{template:default} {{name=@{character_name}}} {{Charisma check=[[1d20 + @{charisma}]]}}'></button>
<hr />
</div>
<div class="sheet-keywords sheet-block">
<h2>Keywords</h2>
<fieldset class="repeating_keyword">
<input type="text" name="attr_keywordname" />
</fieldset>
</div>
<div class="sheet-defenses sheet-block">
<h2>Defenses</h2>
<div class="defenses">
<label>Defense Proficiency</label>
<select name="attr_proftypedefense" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<label>AC/Threshold</label><textarea name="attr_finalactotal" class="sheet-numwindow" readonly>0</textarea><textarea name="attr_finalthreshold" class="sheet-numwindow" readonly>0</textarea>
<label>Unaware</label><textarea name="attr_finalunawarearmorclass" class="sheet-numwindow"readonly>0</textarea>
<label>Fortitude Save</label>
<select name="attr_saveproffort" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select><input type="number" placeholder="0" name="attr_fortsave" /><textarea name="attr_finalfortsave" class="sheet-numwindow" readonly>0</textarea>
<button type='roll' name='roll_testsave' value='&{template:default} {{name=@{character_name}}} {{Fortitude Save=[[1d20 + @{finalfortsave}]]}}'></button>
<label>Reflex Save</label>
<select name="attr_saveprofref" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select><input type="number" placeholder="0" name="attr_refsave" /><textarea name="attr_finalrefsave" class="sheet-numwindow" readonly>0</textarea>
<button type='roll' name='roll_testsave' value='&{template:default} {{name=@{character_name}}} {{Reflex Save=[[1d20 + @{finalrefsave}]]}}'></button>
<label>Will Save</label>
<select name="attr_saveprofwill" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select><input type="number" placeholder="0" name="attr_willsave" /><textarea name="attr_finalwillsave" class="sheet-numwindow" readonly>0</textarea>
<button type='roll' name='roll_testsave' value='&{template:default} {{name=@{character_name}}} {{Will Save=[[1d20 + @{finalwillsave}]]}}'></button>
</div>
</div>
</div>
</span>
</div>
<div class="sheet-skills">
<h2>Skills</h2>
<span>
<label>Academia</label>
<select name="attr_proftypeacademia" class="proftype">
<option value="0" selected>Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreacademia" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_academia" /><textarea name="attr_finalacademiabonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Academia check=[[1d20 + @{finalacademiabonus}]]}}'></button>
<label>Acrobatics</label>
<select name="attr_proftypeacrobatics" class="proftype">
<option value="0" selected>Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreacrobatics" class="abilitytype">
<option value="0">Strength</option>
<option value="1" selected>Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_acrobatics" /><textarea name="attr_finalacrobaticsbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Acrobatics check=[[1d20 + @{finalacrobaticsbonus}]]}}'></button>
<label>Animal Husbandry</label>
<select name="attr_proftypeanimalh" class="proftype">
<option value="0" selected>Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreanimalh" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4" selected>Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_animalh" /><textarea name="attr_finalanimalhbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Animal Husbandry check=[[1d20 + @{finalanimalhbonus}]]}}'></button>
<label>Aquatic</label>
<select name="attr_proftypeaquatic" class="proftype">
<option value="0" selected>Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreaquatic" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_aquatic" /><textarea name="attr_finalaquaticbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Aquatic check=[[1d20 + @{finalaquaticbonus}]]}}'></button>
<label>Arcane Lore</label>
<select name="attr_proftypearcanel" class="proftype">
<option value="0" selected>Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscorearcanel" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_arcanel" /><textarea name="attr_finalarcanelbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Arcane Lore check=[[1d20 + @{finalarcanelbonus}]]}}'></button>
<label>Athletics</label>
<select name="attr_proftypeathletics" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreathletics" class="abilitytype">
<option value="0" selected>Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_athletics" /><textarea name="attr_finalathleticsbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Athletics check=[[1d20 + @{finalathleticsbonus}]]}}'></button>
<label>Bluff</label>
<select name="attr_proftypebluff" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscorebluff" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4">Wisdom</option>
<option value="5" selected>Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_bluff" /><textarea name="attr_finalbluffbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Bluff check=[[1d20 + @{finalbluffbonus}]]}}'></button>
<label>Fieldcraft</label>
<select name="attr_proftypefieldcraft" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscorefieldcraft" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4" selected>Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_fieldcraft" /><textarea name="attr_finalfieldcraftbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Fieldcraft check=[[1d20 + @{finalfieldcraftbonus}]]}}'></button>
<label>Intimidate</label>
<select name="attr_proftypeintimidate" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreintimidate" class="abilitytype">
<option value="0" selected>Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_intimidate" /><textarea name="attr_finalintimidatebonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Intimidate check=[[1d20 + @{finalintimidatebonus}]]}}'></button>
<label>Investigation</label>
<select name="attr_proftypeinvestigation" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreinvestigation" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_investigation" /><textarea name="attr_finalinvestigationbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Investigation check=[[1d20 + @{finalinvestigationbonus}]]}}'></button>
<label>Medicine</label>
<select name="attr_proftypemedicine" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoremedicine" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4" selected>Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_medicine" /><textarea name="attr_finalmedicinebonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Medicine check=[[1d20 + @{finalmedicinebonus}]]}}'></button>
<label>Merchant Lore</label>
<select name="attr_proftypemerchantl" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoremerchantl" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_merchantl" /><textarea name="attr_finalmerchantlbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Merchant Lore check=[[1d20 + @{finalmerchantlbonus}]]}}'></button>
<label>Military Lore</label>
<select name="attr_proftypemilitaryl" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoremilitaryl" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_militaryl" /><textarea name="attr_finalmilitarylbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Military Lore check=[[1d20 + @{finalmilitarylbonus}]]}}'></button>
<label>Perception</label>
<select name="attr_proftypeperception" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreperception" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4" selected>Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_perception" /><textarea name="attr_finalperceptionbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Perception check=[[1d20 + @{finalperceptionbonus}]]}}'></button>
<label>Perform</label>
<select name="attr_proftypeperform" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreperform" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4">Wisdom</option>
<option value="5" selected>Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_perform" /><textarea name="attr_finalperformbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Perform check=[[1d20 + @{finalperformbonus}]]}}'></button>
<label>Profession</label>
<select name="attr_proftypeprofession" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoreprofession" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_profession" /><textarea name="attr_finalprofessionbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Profession check=[[1d20 + @{finalprofessionbonus}]]}}'></button>
<label>Politique</label>
<select name="attr_proftypepolitique" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscorepolitique" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_politique" /><textarea name="attr_finalpolitiquebonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Politique check=[[1d20 + @{finalpolitiquebonus}]]}}'></button>
<label>Religion</label>
<select name="attr_proftypereligion" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscorereligion" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4" selected>Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_religion" /><textarea name="attr_finalreligionbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Religion check=[[1d20 + @{finalreligionbonus}]]}}'></button>
<label>Stealth</label>
<select name="attr_proftypestealth" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscorestealth" class="abilitytype">
<option value="0">Strength</option>
<option value="1" selected>Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_stealth" /><textarea name="attr_finalstealthbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Stealth check=[[1d20 + @{finalstealthbonus}]]}}'></button>
<label>Technological Lore</label>
<select name="attr_proftypetechl" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<select name="attr_abilityscoretechl" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<input type="number" placeholder="0" name="attr_techl" /><textarea name="attr_finaltechlbonus" class="sheet-numwindow" readonly></textarea>
<button type='roll' name='roll_testskill' value='&{template:default} {{name=@{character_name}}} {{Technological Lore check=[[1d20 + @{finaltechlbonus}]]}}'></button>
</span>
</div>
<div class="sheet-traits">
<h2>Traits</h2>
<span>
<div class="sheet-traitssheet sheet-grid-sectiontraits">
<div class="sheet-lineagetraits sheet-block">
<h2>Lineage Traits</h2>
<fieldset class="repeating_lineagetraits">
<input type="text" name="attr_lineagetrait" />
<textarea placeholder='Enter lineage trait info' maxlength='2000' minlength='10' name="attr_lineagetext"></textarea>
<button type='roll' name='roll_pastelineagetrait' value='&{template:default} {{name=@{character_name}}} {{@{lineagetrait}}} {{@{lineagetext}}}'></button>
</fieldset>
</div>
<div class="sheet-culturetraits sheet-block">
<h2>Culture Traits</h2>
<fieldset class="repeating_culturetraits">
<input type="text" name="attr_culturetrait" />
<textarea placeholder='Enter lineage trait info' maxlength='2000' minlength='10' name="attr_culturetext"></textarea>
<button type='roll' name='roll_pasteculturetrait' value='&{template:default} {{name=@{character_name}}} {{@{culturetrait}}} {{@{culturetext}}}'></button>
</fieldset>
</div>
<div class="sheet-honors sheet-block">
<h2>Honors</h2>
<fieldset class="repeating_honors">
<input type="text" name="attr_honors" />
<textarea placeholder='Enter honor info' maxlength='2000' minlength='10' name="attr_honortext"></textarea>
<button type='roll' name='roll_pasteclasstrait' value='&{template:default} {{name=@{character_name}}} {{@{honors}}} {{@{honortext}}}'></button>
</fieldset>
</div>
</div>
</span>
</div>
<div class="sheet-classf">
<h2>Class Features</h2>
<span>
<div class="sheet-classfsheet sheet-grid-sectionclassf">
<div class="sheet-classf sheet-block">
<fieldset class="repeating_classf">
<input type="text" name="attr_classf" />
<textarea placeholder='Enter class feature info' maxlength='4000' minlength='10' name="attr_classftext"></textarea>
<button type='roll' name='roll_pasteclassfeature' value='&{template:default} {{name=@{character_name}}} {{@{classf}}} {{@{classftext}}}'></button>
</fieldset>
</div>
</div>
</span>
</div>
<div class="sheet-feats">
<h2>Feats</h2>
<span>
<div class="sheet-featssheet sheet-grid-sectionfeats">
<div class="sheet-feats sheet-block">
<fieldset class="repeating_feats">
<input type="text" name="attr_feats" />
<textarea placeholder='Enter feat info' maxlength='4000' minlength='10' name="attr_featstext"></textarea>
<button type='roll' name='roll_pastefeat' value='&{template:default} {{name=@{character_name}}} {{@{feats}}} {{@{featstext}}}'></button>
</fieldset>
</div>
</div>
</span>
</div>
<div class="sheet-attacks">
<h2>Attacks</h2><br>
<span>
<label>Simple Weapons</label>
<select name="attr_proftypesimpleweapons" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<label>Martial Weapons</label>
<select name="attr_proftypemartialweapons" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<fieldset class="repeating_attacks">
<input type="text" placeholder="Attack Name" name="attr_attackname" />
<input type="text" value="0" name="attr_attackbonus" />
<input type="text" value="1d4" name="attr_attackdamage" />
<input type="text" value="Properties" name="attr_attackproperties" />
<button type='roll' name='roll_testattackroll' value='&{template:default} {{name=@{character_name}}} {{Attack roll to hit=[[1d20 + @{attackbonus}]]}} {{Damage value rolled=[[@{attackdamage}]]}}'></button>
</fieldset>
</span>
</div>
<div class="sheet-defenses">
<h2>Defenses</h2><br>
<span>
<div class="sheet-defensessheet sheet-grid-sectiondefenses">
<div class="sheet-generaldef sheet-block">
<div class="defenses">
<h2>Defenses</h2>
<label>Defense Proficiency</label>
<select name="attr_proftypedefense" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<label>AC/Threshold Modifiers</label><input type="number" placeholder="0" name="attr_armorclassmod" /><input type="number" placeholder="0" name="attr_thresholdmod" />
<label>Total AC/Threshold</label><textarea name="attr_finalactotal" class="sheet-numwindow" readonly>0</textarea><textarea name="attr_finalthreshold" class="sheet-numwindow" readonly>0</textarea>
<label>Unaware AC Modifier</label><input type="number" name="attr_unawarearmorclassmod" />
<label>Total Unaware</label><textarea name="attr_finalunawarearmorclass" class="sheet-numwindow"readonly>0</textarea>
<label>Fortitude Save</label>
<select name="attr_saveproffort" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select><input type="number" placeholder="0" name="attr_fortsave" /><textarea name="attr_finalfortsave" class="sheet-numwindow" readonly>0</textarea>
<button type='roll' name='roll_testsave' value='&{template:default} {{name=@{character_name}}} {{Fortitude Save=[[1d20 + @{finalfortsave}]]}}'></button>
<label>Reflex Save</label>
<select name="attr_saveprofref" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select><input type="number" placeholder="0" name="attr_refsave" /><textarea name="attr_finalrefsave" class="sheet-numwindow" readonly>0</textarea>
<button type='roll' name='roll_testsave' value='&{template:default} {{name=@{character_name}}} {{Reflex Save=[[1d20 + @{finalrefsave}]]}}'></button>
<label>Will Save</label>
<select name="attr_saveprofwill" class="proftypedef">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select><input type="number" placeholder="0" name="attr_willsave" /><textarea name="attr_finalwillsave" class="sheet-numwindow" readonly>0</textarea>
<button type='roll' name='roll_testsave' value='&{template:default} {{name=@{character_name}}} {{Will Save=[[1d20 + @{finalwillsave}]]}}'></button>
</div>
</div>
<div class="sheet-armor sheet-block">
<div class="armor">
<h2>Armor</h2>
<label>Armor Proficiency</label>
<input type="checkbox" id="armorlight" name="attr_armorlight" value="yes"> Light Armor<br>
<input type="checkbox" id="armormedium" name="attr_armormedium" value="yes"> Medium Armor<br>
<input type="checkbox" id="armorheavy" name="attr_armorheavy" value="yes"> Heavy Armor<br>
<input type="checkbox" id="armorsuperheavy" name="attr_armorsuperheavy" value="yes"> Superheavy Armor<br>
<input type="checkbox" id="armorshields" name="attr_armorshields" value="yes"> Shields<br>
<label>Armor Name</label>
<input type="text" name="attr_armorname" />
<label>Armor AC Bonus</label><input type="number" placeholder="0" name='attr_armoracbonus' value='0'>
<label>Armor Max Dex Bonus</label>(put 10 or higher for no max dex limit)<br><input type="number" name='attr_armormaxdexbonus' value='10'>
<label>Armor Threshold</label><input type="number" placeholder="0" name='attr_armorthreshold' value='0'>
<label>Armor Movement Penalty</label><input type="number" placeholder="0" name='attr_armormovementpenalty' value='0'>
</div>
</div>
</div>
</span>
</div>
<div class="sheet-spells">
<h2>Spells</h2><br>
<span>
<label>Primary Spellcasting Proficiency</label>
<select name="attr_proftypespellspri" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<label>Primary Spellcasting Attribute</label>
<select name="attr_spellcastingattribpri" class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3" selected>Intelligence</option>
<option value="4">Wisdom</option>
<option value="5">Charisma</option>
</select>
<label>Primary Spellcasting DC Modifier</label>
<input type="number" value="0" name="attr_spellcastingdcpri" />
<br>
<h3>Final Primary DC</h3>
<br>
<textarea name="attr_finalspellcastingdcpri" class="sheet-numwindow" readonly></textarea>
<br>
<label>Secondary Spellcasting Proficiency</label>
<select name="attr_proftypespellssec" class="proftype">
<option value="0">Unskilled</option>
<option value="1">Skilled</option>
<option value="2">Professional</option>
<option value="3">Exceptional</option>
</select>
<label>Secondary Spellcasting Attribute</label>
<select name='attr_spellcastingattribsec' class="abilitytype">
<option value="0">Strength</option>
<option value="1">Dexterity</option>
<option value="2">Constitution</option>
<option value="3">Intelligence</option>
<option value="4" selected>Wisdom</option>
<option value="5">Charisma</option>
</select>
<label>Secondary Spellcasting DC Modifier</label>
<input type="number" value="0" name="attr_spellcastingdcsec" />
<br>
<h3>Final Secondary DC</h3>
<br>
<textarea name="attr_finalspellcastingdcsec" class="sheet-numwindow" readonly></textarea>
<br>
<h2>Individual Spells</h2>
<fieldset class="repeating_Spell Example">
<label>Spell Name</label><input type="text" name="attr_spellname" placeholder="Spell Name" />
<label>Spell Text</label><textarea placeholder='Enter spell info' maxlength='2000' minlength='10' name="attr_spelltext"></textarea>
<button type='roll' name='roll_pastespell' value='&{template:default} {{name=@{character_name}}} {{Primary Spell DC=@{finalspellcastingdcpri}}} {{Secondary Spell DC=@{finalspellcastingdcsec}}} {{Spell Name=@{spellname}}} {{Spell Text=@{spelltext}}}'></button>
</fieldset>
</span>
</div>
<div class="sheet-notes">
<h2>Notes</h2><br>
<span>
<textarea placeholder='Notes go here' maxlength='10000' minlength='1' name="attr_notetext"></textarea>
</span>
</div>
<script type="text/worker">
const buttonlist = ["character", "skills", "traits", "classf", "feats", "attacks", "defenses", "spells", "notes"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
//Spellcasting and Saving Throws section
on("sheet:opened change:characterlevel change:strength change:dexterity change:constitution change:intelligence change:wisdom change:charisma change:proftypespellspri change:proftypespellssec change:spellcastingattribpri change:spellcastingattribsec change:spellcastingdcpri change:spellcastingdcsec change:saveproffort change:fortsave change:saveprofref change:refsave change:saveprofwill change:willsave change:proftypeacademia change:abilityscoreacademia change:academia change:proftypeacrobatics change:abilityscoreacrobatics change:acrobatics change:proftypeanimalh change:abilityscoreanimalh change:animalh change:proftypeaquatic change:abilityscoreaquatic change:aquatic change:proftypearcanel change:abilityscorearcanel change:arcanel change:proftypeathletics change:abilityscoreathletics change:athletics change:proftypebluff change:abilityscorebluff change:bluff change:proftypefieldcraft change:abilityscorefieldcraft change:fieldcraft change:proftypeintimidate change:abilityscoreintimidate change:intimidate change:proftypeinvestigation change:abilityscoreinvestigation change:investigation change:proftypemedicine change:abilityscoremedicine change:medicine change:proftypemerchantl change:abilityscoremerchantl change:merchantl change:proftypemilitaryl change:abilityscoremilitaryl change:militaryl change:proftypeperception change:abilityscoreperception change:perception change:proftypeperform change:abilityscoreperform change:profession change:proftypeprofession change:abilityscoreprofession change:profession change:proftypepolitique change:abilityscorepolitique change:politique change:proftypereligion change:abilityscorereligion change:religion change:proftypestealth change:abilityscorestealth change:stealth change:proftypetechl change:abilityscoretechl change:techl", function(){
getAttrs(["characterlevel","strength","dexterity","constitution","intelligence","wisdom","charisma","proftypespellspri","proftypespellssec","spellcastingattribpri","spellcastingdcpri","spellcastingattribsec","spellcastingdcsec","saveproffort","fortsave","saveprofref","refsave","saveprofwill","willsave","proftypeacademia","abilityscoreacademia","academia","proftypeacrobatics","abilityscoreacrobatics","acrobatics","proftypeanimalh","abilityscoreanimalh","animalh","proftypeaquatic","abilityscoreaquatic","aquatic","proftypearcanel","abilityscorearcanel","arcanel","proftypeathletics","abilityscoreathletics","athletics","proftypebluff","abilityscorebluff","bluff","proftypefieldcraft","abilityscorefieldcraft","fieldcraft","proftypeintimidate","abilityscoreintimidate","intimidate","proftypeinvestigation","abilityscoreinvestigation","investigation","proftypemedicine","abilityscoremedicine","medicine","proftypemerchantl","abilityscoremerchantl","merchantl","proftypemilitaryl","abilityscoremilitaryl","militaryl","proftypeperception","abilityscoreperception","perception","proftypeperform","abilityscoreperform","profession","proftypeprofession","abilityscoreprofession","profession","proftypepolitique","abilityscorepolitique","politique","proftypereligion","abilityscorereligion","religion","proftypestealth","abilityscorestealth","stealth","proftypetechl","abilityscoretechl","techl"], function(values) {
//Variables
let tempcharacterlevel = parseInt(values.characterlevel)||0;
//proficiency level holders
let skilledbonus = tempcharacterlevel;
let professionalbonus = tempcharacterlevel + 3;
let exceptionalbonus = tempcharacterlevel + 6;
//modifier holders
let tempstrength = parseInt(values.strength)||0;
let tempdexterity = parseInt(values.dexterity)||0;
let tempconstitution = parseInt(values.constitution)||0;
let tempintelligence = parseInt(values.intelligence)||0;
let tempwisdom = parseInt(values.wisdom)||0;
let tempcharisma = parseInt(values.charisma)||0;
//temporary holders of save proficiencies
let tempfortprof = parseInt(values.saveproffort)||0;
let temprefprof = parseInt(values.saveprofref)||0;
let tempwillprof = parseInt(values.saveprofwill)||0;
//temporary holders of arbitrary save bonuses
let temparbitraryfortbonus = parseInt(values.fortsave)||0;
let temparbitraryrefbonus = parseInt(values.refsave)||0;
let temparbitrarywillbonus = parseInt(values.willsave)||0;
//temporary holders of final save values
let tempfinalfortsave = 0;
let tempfinalrefsave = 0;
let tempfinalwillsave = 0;
//temporary holders of the final spell dc values
let tempfinalspellcastingdcpri = 0;
let tempfinalspellcastingdcsec = 0;
//temporary holders of the spell attribute mods
let spellvaluepri = 0;
let spellvaluesec = 0;
//temporary holders of arbitrary spell DC modifiers
let arbitraryspellmodpri = parseInt(values.spellcastingdcpri)||0;
let arbitraryspellmodsec = parseInt(values.spellcastingdcsec)||0;
//temporary holders of spellcasting attribute modifier type
let abilitymodpri = parseInt(values.spellcastingattribpri)||0;
let abilitymodsec = parseInt(values.spellcastingattribsec)||0;
let spellproficiencytypepri = parseInt(values.proftypespellspri)||0;
let spellproficiencytypesec = parseInt(values.proftypespellssec)||0;
//Do primary spellcasting attribute
if (abilitymodpri === 0){
spellvaluepri = tempstrength;
} else if (abilitymodpri === 1){
spellvaluepri = tempdexterity;
} else if (abilitymodpri === 2){
spellvaluepri = tempconstitution;
} else if (abilitymodpri === 3){
spellvaluepri = tempintelligence;
} else if (abilitymodpri === 4){
spellvaluepri = tempwisdom;
} else if (abilitymodpri === 5){
spellvaluepri = tempcharisma;
} else {
spellvaluepri = tempstrength;
}
//Do primary spellcasting DC
if (spellproficiencytypepri === 0){
tempfinalspellcastingdcpri = 10 + arbitraryspellmodpri + spellvaluepri;
} else if (spellproficiencytypepri === 1){
tempfinalspellcastingdcpri = 10 + arbitraryspellmodpri + spellvaluepri + tempcharacterlevel;
} else if (spellproficiencytypepri === 2){
tempfinalspellcastingdcpri = 10 + arbitraryspellmodpri + spellvaluepri + tempcharacterlevel + 3;
} else if (spellproficiencytypepri === 3){
tempfinalspellcastingdcpri = 10 + arbitraryspellmodpri + spellvaluepri + tempcharacterlevel + 6;
} else{
tempfinalspellcastingdcpri = 10 + arbitraryspellmodpri + spellvaluepri;
}
//Do secondary spellcasting attribute
if (abilitymodsec === 0){
spellvaluesec = tempstrength;
} else if (abilitymodsec === 1){
spellvaluesec = tempdexterity;
} else if (abilitymodsec === 2){
spellvaluesec = tempconstitution;
} else if (abilitymodsec === 3){
spellvaluesec = tempintelligence;
} else if (abilitymodsec === 4){
spellvaluesec = tempwisdom;
} else if (abilitymodsec === 5){
spellvaluesec = tempcharisma;
} else{
spellvaluesec = strength;
}
//Do secondary spellcasting DC
if (spellproficiencytypesec === 0) {
tempfinalspellcastingdcsec = 10 + arbitraryspellmodsec + spellvaluesec;
} else if (spellproficiencytypesec === 1){
tempfinalspellcastingdcsec = 10 + arbitraryspellmodsec + spellvaluesec + tempcharacterlevel;
} else if (spellproficiencytypesec === 2){
tempfinalspellcastingdcsec = 10 + arbitraryspellmodsec + spellvaluesec + tempcharacterlevel + 3;
} else if (spellproficiencytypesec === 3){
tempfinalspellcastingdcsec = 10 + arbitraryspellmodsec + spellvaluesec + tempcharacterlevel + 6;
} else {
tempfinalspellcastingdcsec = 10 + arbitraryspellmodsec + spellvaluesec;
}
//Do fort save
if (tempfortprof === 0){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus;
} else if (tempfortprof === 1){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus + skilledbonus;
} else if (tempfortprof === 2){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus + professionalbonus;
} else if (tempfortprof === 3){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus + exceptionalbonus;
} else {
tempfinalfortsave = tempconstitution + temparbitraryfortbonus;
}
//Do ref save
if (temprefprof === 0){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus;
} else if (temprefprof === 1){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus + skilledbonus;
} else if (temprefprof === 2){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus + professionalbonus;
} else if (temprefprof === 3){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus + exceptionalbonus;
} else{
tempfinalrefsave = tempdexterity + temparbitraryrefbonus ;
}
//Do will save
if (tempwillprof === 0){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus;
} else if (tempwillprof === 1){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus + skilledbonus;
} else if (tempwillprof === 2){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus + professionalbonus;
} else if (tempwillprof === 3){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus + exceptionalbonus;
} else {
tempfinalwillsave = tempwisdom + temparbitrarywillbonus;
}
setAttrs({
//spellcasting dcs
finalspellcastingdcpri: tempfinalspellcastingdcpri,
finalspellcastingdcsec: tempfinalspellcastingdcsec,
//saving throws
finalfortsave: tempfinalfortsave,
finalrefsave: tempfinalrefsave,
finalwillsave: tempfinalwillsave,
});
});
});
//Skills Section
on("sheet:opened change:characterlevel change:strength change:dexterity change:constitution change:intelligence change:wisdom change:charisma change:proftypeacademia change:abilityscoreacademia change:academia change:proftypeacrobatics change:abilityscoreacrobatics change:acrobatics change:proftypeanimalh change:abilityscoreanimalh change:animalh change:proftypeaquatic change:abilityscoreaquatic change:aquatic change:proftypearcanel change:abilityscorearcanel change:arcanel change:proftypeathletics change:abilityscoreathletics change:athletics change:proftypebluff change:abilityscorebluff change:bluff change:proftypefieldcraft change:abilityscorefieldcraft change:fieldcraft change:proftypeintimidate change:abilityscoreintimidate change:intimidate change:proftypeinvestigation change:abilityscoreinvestigation change:investigation change:proftypemedicine change:abilityscoremedicine change:medicine change:proftypemerchantl change:abilityscoremerchantl change:merchantl change:proftypemilitaryl change:abilityscoremilitaryl change:militaryl change:proftypeperception change:abilityscoreperception change:perception change:proftypeperform change:abilityscoreperform change:profession change:proftypeprofession change:abilityscoreprofession change:profession change:proftypepolitique change:abilityscorepolitique change:politique change:proftypereligion change:abilityscorereligion change:religion change:proftypestealth change:abilityscorestealth change:stealth change:proftypetechl change:abilityscoretechl change:techl", function(){
getAttrs(["characterlevel","strength","dexterity","constitution","intelligence","wisdom","charisma","proftypeacademia","abilityscoreacademia","academia","proftypeacrobatics","abilityscoreacrobatics","acrobatics","proftypeanimalh","abilityscoreanimalh","animalh","proftypeaquatic","abilityscoreaquatic","aquatic","proftypearcanel","abilityscorearcanel","arcanel","proftypeathletics","abilityscoreathletics","athletics","proftypebluff","abilityscorebluff","bluff","proftypefieldcraft","abilityscorefieldcraft","fieldcraft","proftypeintimidate","abilityscoreintimidate","intimidate","proftypeinvestigation","abilityscoreinvestigation","investigation","proftypemedicine","abilityscoremedicine","medicine","proftypemerchantl","abilityscoremerchantl","merchantl","proftypemilitaryl","abilityscoremilitaryl","militaryl","proftypeperception","abilityscoreperception","perception","proftypeperform","abilityscoreperform","profession","proftypeprofession","abilityscoreprofession","profession","proftypepolitique","abilityscorepolitique","politique","proftypereligion","abilityscorereligion","religion","proftypestealth","abilityscorestealth","stealth","proftypetechl","abilityscoretechl","techl"], function(values) {
//Variables
let tempcharacterlevel = parseInt(values.characterlevel)||0;
//proficiency level holders
let skilledbonus = tempcharacterlevel;
let professionalbonus = tempcharacterlevel + 3;
let exceptionalbonus = tempcharacterlevel + 6;
//modifier holders
let tempstrength = parseInt(values.strength)||0;
let tempdexterity = parseInt(values.dexterity)||0;
let tempconstitution = parseInt(values.constitution)||0;
let tempintelligence = parseInt(values.intelligence)||0;
let tempwisdom = parseInt(values.wisdom)||0;
let tempcharisma = parseInt(values.charisma)||0;
//temporary skill arbitrary modifier holders
let temparbitraryacademia = parseInt(values.academia)||0;
let temparbitraryacrobatics = parseInt(values.acrobatics)||0;
let temparbitraryanimalh = parseInt(values.animalh)||0;
let temparbitraryaquatic = parseInt(values.aquatic)||0;
let temparbitraryarcanel = parseInt(values.arcanel)||0;
let temparbitraryathletics = parseInt(values.athletics)||0;
let temparbitrarybluff = parseInt(values.bluff)||0;
let temparbitraryfieldcraft = parseInt(values.fieldcraft)||0;
let temparbitraryintimidate = parseInt(values.intimidate)||0;
let temparbitraryinvestigation = parseInt(values.investigation)||0;
let temparbitrarymedicine = parseInt(values.medicine)||0;
let temparbitrarymerchantl = parseInt(values.merchantl)||0;
let temparbitrarymilitaryl = parseInt(values.militaryl)||0;
let temparbitraryperception = parseInt(values.perception)||0;
let temparbitraryperform = parseInt(values.perform)||0;
let temparbitrarypolitique = parseInt(values.politique)||0;
let temparbitraryprofession = parseInt(values.profession)||0;
let temparbitraryreligion = parseInt(values.religion)||0;
let temparbitrarystealth = parseInt(values.stealth)||0;
let temparbitrarytechl = parseInt(values.techl)||0;
//temporary skill attribute type holders
let tempacademiaattrib = parseInt(values.abilityscoreacademia)||0;
let tempacrobaticsattrib = parseInt(values.abilityscoreacrobatics)||0;
let tempanimalhattrib = parseInt(values.abilityscoreanimalh)||0;
let tempaquaticattrib = parseInt(values.abilityscoreaquatic)||0;
let temparcanelattrib = parseInt(values.abilityscorearcanel)||0;
let tempathleticsattrib = parseInt(values.abilityscoreathletics)||0;
let tempbluffattrib = parseInt(values.abilityscorebluff)||0;
let tempfieldcraftattrib = parseInt(values.abilityscorefieldcraft)||0;
let tempintimidateattrib = parseInt(values.abilityscoreintimidate)||0;
let tempinvestigationattrib = parseInt(values.abilityscoreinvestigation)||0;
let tempmedicineattrib = parseInt(values.abilityscoremedicine)||0;
let tempmerchantlattrib = parseInt(values.abilityscoremerchantl)||0;
let tempmilitarylattrib = parseInt(values.abilityscoremilitaryl)||0;
let tempperceptionattrib = parseInt(values.abilityscoreperception)||0;
let tempperformattrib = parseInt(values.abilityscoreperform)||0;
let temppolitiqueattrib = parseInt(values.abilityscorepolitique)||0;
let tempprofessionattrib = parseInt(values.abilityscoreprofession)||0;
let tempreligionattrib = parseInt(values.abilityscorereligion)||0;
let tempstealthattrib = parseInt(values.abilityscorestealth)||0;
let temptechlattrib = parseInt(values.abilityscoretechl)||0;
//temporary skill attribute value holders
let academiamod = 0;
let acrobaticsmod = 0;
let animalhmod = 0;
let aquaticmod = 0;
let arcanelmod = 0;
let athleticsmod = 0;
let bluffmod = 0;
let fieldcraftmod = 0;
let intimidatemod = 0;
let investigationmod = 0;
let medicinemod = 0;
let merchantlmod = 0;
let militarylmod = 0;
let perceptionmod = 0;
let performmod = 0;
let politiquemod = 0;
let professionmod = 0;
let religionmod = 0;
let stealthmod = 0;
let techlmod = 0;
//temporary holders of skill prof levels
let tempacademiaproflevel = parseInt(values.proftypeacademia)||0;
let tempacrobaticsproflevel = parseInt(values.proftypeacrobatics)||0;
let tempanimalhproflevel = parseInt(values.proftypeanimalh)||0;
let tempaquaticproflevel = parseInt(values.proftypeaquatic)||0;
let temparcanelproflevel = parseInt(values.proftypearcanel)||0;
let tempathleticsproflevel = parseInt(values.proftypeathletics)||0;
let tempbluffproflevel = parseInt(values.proftypebluff)||0;
let tempfieldcraftproflevel = parseInt(values.proftypefieldcraft)||0;
let tempintimidateproflevel = parseInt(values.proftypeintimidate)||0;
let tempinvestigationproflevel = parseInt(values.proftypeinvestigation)||0;
let tempmedicineproflevel = parseInt(values.proftypemedicine)||0;
let tempmerchantlproflevel = parseInt(values.proftypemerchantl)||0;
let tempmilitarylproflevel = parseInt(values.proftypemilitaryl)||0;
let tempperceptionproflevel = parseInt(values.proftypeperception)||0;
let tempperformproflevel = parseInt(values.proftypeperform)||0;
let temppolitiqueproflevel = parseInt(values.proftypepolitique)||0;
let tempprofessionproflevel = parseInt(values.proftypeprofession)||0;
let tempreligionproflevel = parseInt(values.proftypereligion)||0;
let tempstealthproflevel = parseInt(values.proftypestealth)||0;
let temptechlproflevel = parseInt(values.proftypetechl)||0;
//temporary final skill level holders
let tempfinalacademiabonus = 0;
let tempfinalacrobaticsbonus = 0;
let tempfinalanimalhbonus = 0;
let tempfinalaquaticbonus = 0;
let tempfinalarcanelbonus = 0;
let tempfinalathleticsbonus = 0;
let tempfinalbluffbonus = 0;
let tempfinalfieldcraftbonus = 0;
let tempfinalintimidatebonus = 0;
let tempfinalinvestigationbonus = 0;
let tempfinalmedicinebonus = 0;
let tempfinalmerchantlbonus = 0;
let tempfinalmilitarylbonus = 0;
let tempfinalperceptionbonus = 0;
let tempfinalperformbonus = 0;
let tempfinalpolitiquebonus = 0;
let tempfinalprofessionbonus = 0;
let tempfinalreligionbonus = 0;
let tempfinalstealthbonus = 0;
let tempfinaltechlbonus = 0;
//Determining skill Attribute Modifiers
//academia
if (tempacademiaattrib === 0){
academiamod = tempstrength;
} else if (tempacademiaattrib === 1){
academiamod = tempdexterity;
} else if (tempacademiaattrib === 2){
academiamod = tempconstitution;
} else if (tempacademiaattrib === 3){
academiamod = tempintelligence;
} else if (tempacademiaattrib === 4){
academiamod = tempwisdom;
} else if (tempacademiaattrib === 5){
academiamod = tempcharisma;
} else{
academiamod = tempintelligence;
}
//Acrobatics
if (tempacrobaticsattrib === 0){
acrobaticsmod = tempstrength;
} else if (tempacrobaticsattrib === 1){
acrobaticsmod = tempdexterity;
} else if (tempacrobaticsattrib === 2){
acrobaticsmod = tempconstitution;
} else if (tempacrobaticsattrib === 3){
acrobaticsmod = tempintelligence;
} else if (tempacrobaticsattrib === 4){
acrobaticsmod = tempwisdom;
} else if (tempacrobaticsattrib === 5){
acrobaticsmod = tempcharisma;
} else{
acrobaticsmod = tempdexterity;
}
//animal husbandry
if (tempanimalhattrib === 0){
animalhmod = tempstrength;
} else if (tempanimalhattrib === 1){
animalhmod = tempdexterity;
} else if (tempanimalhattrib === 2){
animalhmod = tempconstitution;
} else if (tempanimalhattrib === 3){
animalhmod = tempintelligence;
} else if (tempanimalhattrib === 4){
animalhmod = tempwisdom;
} else if (tempanimalhattrib === 5){
animalhmod = tempcharisma;
} else{
animalhmod = tempwisdom;
}
//Aquatic
if (tempaquaticattrib === 0){
aquaticmod = tempstrength;
} else if (tempaquaticattrib === 1){
aquaticmod = tempdexterity;
} else if (tempaquaticattrib === 2){
aquaticmod = tempconstitution;
} else if (tempaquaticattrib === 3){
aquaticmod = tempintelligence;
} else if (tempaquaticattrib === 4){
aquaticmod = tempwisdom;
} else if (tempaquaticattrib === 5){
aquaticmod = tempcharisma;
} else{
aquaticmod = tempintelligence;
}
//Arcane Lore
if (temparcanelattrib === 0){
arcanelmod = tempstrength;
} else if (temparcanelattrib === 1){
arcanelmod = tempdexterity;
} else if (temparcanelattrib === 2){
arcanelmod = tempconstitution;
} else if (temparcanelattrib === 3){
arcanelmod = tempintelligence;
} else if (temparcanelattrib === 4){
arcanelmod = tempwisdom;
} else if (temparcanelattrib === 5){
arcanelmod = tempcharisma;
} else{
arcanelmod = tempintelligence;
}
//Athletics
if (tempathleticsattrib === 0){
athleticsmod = tempstrength;
} else if (tempathleticsattrib === 1){
athleticsmod = tempdexterity;
} else if (tempathleticsattrib === 2){
athleticsmod = tempconstitution;
} else if (tempathleticsattrib === 3){
athleticsmod = tempintelligence;
} else if (tempathleticsattrib === 4){
athleticsmod = tempwisdom;
} else if (tempathleticsattrib === 5){
athleticsmod = tempcharisma;
} else{
athleticsmod = tempstrength;
}
//Bluff
if (tempbluffattrib === 0){
bluffmod = tempstrength;
} else if (tempbluffattrib === 1){
bluffmod = tempdexterity;
} else if (tempbluffattrib === 2){
bluffmod = tempconstitution;
} else if (tempbluffattrib === 3){
bluffmod = tempintelligence;
} else if (tempbluffattrib === 4){
bluffmod = tempwisdom;
} else if (tempbluffattrib === 5){
bluffmod = tempcharisma;
} else{
bluffmod = tempstrength;
}
//Fieldcraft
if (tempfieldcraftattrib === 0){
fieldcraftmod = tempstrength;
} else if (tempfieldcraftattrib === 1){
fieldcraftmod = tempdexterity;
} else if (tempfieldcraftattrib === 2){
fieldcraftmod = tempconstitution;
} else if (tempfieldcraftattrib === 3){
fieldcraftmod = tempintelligence;
} else if (tempfieldcraftattrib === 4){
fieldcraftmod = tempwisdom;
} else if (tempfieldcraftattrib === 5){
fieldcraftmod = tempcharisma;
} else{
fieldcraftmod = tempwisdom;
}
//Intimidate
if (tempintimidateattrib === 0){
intimidatemod = tempstrength;
} else if (tempintimidateattrib === 1){
intimidatemod = tempdexterity;
} else if (tempintimidateattrib === 2){
intimidatemod = tempconstitution;
} else if (tempintimidateattrib === 3){
intimidatemod = tempintelligence;
} else if (tempintimidateattrib === 4){
intimidatemod = tempwisdom;
} else if (tempintimidateattrib === 5){
intimidatemod = tempcharisma;
} else{
intimidatemod = tempstrength;
}
//Investigation
if (tempinvestigationattrib === 0){
investigationmod = tempstrength;
} else if (tempinvestigationattrib === 1){
investigationmod = tempdexterity;
} else if (tempinvestigationattrib === 2){
investigationmod = tempconstitution;
} else if (tempinvestigationattrib === 3){
investigationmod = tempintelligence;
} else if (tempinvestigationattrib === 4){
investigationmod = tempwisdom;
} else if (tempinvestigationattrib === 5){
investigationmod = tempcharisma;
} else{
investigationmod = tempintelligence;
}
//Medicine
if (tempmedicineattrib === 0){
medicinemod = tempstrength;
} else if (tempmedicineattrib === 1){
medicinemod = tempdexterity;
} else if (tempmedicineattrib === 2){
medicinemod = tempconstitution;
} else if (tempmedicineattrib === 3){
medicinemod = tempintelligence;
} else if (tempmedicineattrib === 4){
medicinemod = tempwisdom;
} else if (tempmedicineattrib === 5){
medicinemod = tempcharisma;
} else{
medicinemod = tempwisdom;
}
//Merchant Lore
if (tempmerchantlattrib === 0){
merchantlmod = tempstrength;
} else if (tempmerchantlattrib === 1){
merchantlmod = tempdexterity;
} else if (tempmerchantlattrib === 2){
merchantlmod = tempconstitution;
} else if (tempmerchantlattrib === 3){
merchantlmod = tempintelligence;
} else if (tempmerchantlattrib === 4){
merchantlmod = tempwisdom;
} else if (tempmerchantlattrib === 5){
merchantlmod = tempcharisma;
} else{
merchantlmod = tempintelligence;
}
//Military Lore
if (tempmilitarylattrib === 0){
militarylmod = tempstrength;
} else if (tempmilitarylattrib === 1){
militarylmod = tempdexterity;
} else if (tempmilitarylattrib === 2){
militarylmod = tempconstitution;
} else if (tempmilitarylattrib === 3){
militarylmod = tempintelligence;
} else if (tempmilitarylattrib === 4){
militarylmod = tempwisdom;
} else if (tempmilitarylattrib === 5){
militarylmod = tempcharisma;
} else{
militarylmod = tempintelligence;
}
//Perception
if (tempperceptionattrib === 0){
perceptionmod = tempstrength;
} else if (tempperceptionattrib === 1){
perceptionmod = tempdexterity;
} else if (tempperceptionattrib === 2){
perceptionmod = tempconstitution;
} else if (tempperceptionattrib === 3){
perceptionmod = tempintelligence;
} else if (tempperceptionattrib === 4){
perceptionmod = tempwisdom;
} else if (tempperceptionattrib === 5){
perceptionmod = tempcharisma;
} else{
perceptionmod = tempwisdom;
}
//Perform
if (tempperformattrib === 0){
performmod = tempstrength;
} else if (tempperformattrib === 1){
performmod = tempdexterity;
} else if (tempperformattrib === 2){
performmod = tempconstitution;
} else if (tempperformattrib === 3){
performmod = tempintelligence;
} else if (tempperformattrib === 4){
performmod = tempwisdom;
} else if (tempperformattrib === 5){
performmod = tempcharisma;
} else{
performmod = tempcharisma;
}
//Profession
if (tempprofessionattrib === 0){
professionmod = tempstrength;
} else if (tempprofessionattrib === 1){
professionmod = tempdexterity;
} else if (tempprofessionattrib === 2){
professionmod = tempconstitution;
} else if (tempprofessionattrib === 3){
professionmod = tempintelligence;
} else if (tempprofessionattrib === 4){
professionmod = tempwisdom;
} else if (tempprofessionattrib === 5){
professionmod = tempcharisma;
} else{
professionmod = tempintelligence;
}
//Politique
if (temppolitiqueattrib === 0){
politiquemod = tempstrength;
} else if (temppolitiqueattrib === 1){
politiquemod = tempdexterity;
} else if (temppolitiqueattrib === 2){
politiquemod = tempconstitution;
} else if (temppolitiqueattrib === 3){
politiquemod = tempintelligence;
} else if (temppolitiqueattrib === 4){
politiquemod = tempwisdom;
} else if (temppolitiqueattrib === 5){
politiquemod = tempcharisma;
} else{
politiquemod = tempintelligence;
}
//Religion
if (tempreligionattrib === 0){
religionmod = tempstrength;
} else if (tempreligionattrib === 1){
religionmod = tempdexterity;
} else if (tempreligionattrib === 2){
religionmod = tempconstitution;
} else if (tempreligionattrib === 3){
religionmod = tempintelligence;
} else if (tempreligionattrib === 4){
religionmod = tempwisdom;
} else if (tempreligionattrib === 5){
religionmod = tempcharisma;
} else{
religionmod = tempwisdom;
}
//Stealth
if (tempstealthattrib === 0){
stealthmod = tempstrength;
} else if (tempstealthattrib === 1){
stealthmod = tempdexterity;
} else if (tempstealthattrib === 2){
stealthmod = tempconstitution;
} else if (tempstealthattrib === 3){
stealthmod = tempintelligence;
} else if (tempstealthattrib === 4){
stealthmod = tempwisdom;
} else if (tempstealthattrib === 5){
stealthmod = tempcharisma;
} else{
stealthmod = tempdexterity;
}
//Tech Lore
if (temptechlattrib === 0){
techlmod = tempstrength;
} else if (temptechlattrib === 1){
techlmod = tempdexterity;
} else if (temptechlattrib === 2){
techlmod = tempconstitution;
} else if (temptechlattrib === 3){
techlmod = tempintelligence;
} else if (temptechlattrib === 4){
techlmod = tempwisdom;
} else if (temptechlattrib === 5){
techlmod = tempcharisma;
} else{
techlmod = tempintelligence;
}
//Determining Skill Proficiency Modifiers + Arbitrary modifiers
//Academia
if (tempacademiaproflevel === 0){
tempfinalacademiabonus = academiamod + temparbitraryacademia;
} else if (tempacademiaproflevel === 1){
tempfinalacademiabonus = academiamod + temparbitraryacademia + skilledbonus;
} else if (tempacademiaproflevel === 2){
tempfinalacademiabonus = academiamod + temparbitraryacademia + professionalbonus;
} else if (tempacademiaproflevel === 3){
tempfinalacademiabonus = academiamod + temparbitraryacademia + exceptionalbonus;
} else {
tempfinalacademiabonus = academiamod + temparbitraryacademia;
}
//Acrobatics
if (tempacrobaticsproflevel === 0){
tempfinalacrobaticsbonus = acrobaticsmod + temparbitraryacrobatics;
} else if (tempacrobaticsproflevel === 1){
tempfinalacrobaticsbonus = acrobaticsmod + temparbitraryacrobatics + skilledbonus;
} else if (tempacrobaticsproflevel === 2){
tempfinalacrobaticsbonus = acrobaticsmod + temparbitraryacrobatics + professionalbonus;
} else if (tempacrobaticsproflevel === 3){
tempfinalacrobaticsbonus = acrobaticsmod + temparbitraryacrobatics + exceptionalbonus;
} else {
tempfinalacrobaticsbonus = acrobaticsmod + temparbitraryacrobatics;
}
//Animal Husbandry
if (tempanimalhproflevel === 0){
tempfinalanimalhbonus = animalhmod + temparbitraryanimalh;
} else if (tempanimalhproflevel === 1){
tempfinalanimalhbonus = animalhmod + temparbitraryanimalh + skilledbonus;
} else if (tempanimalhproflevel === 2){
tempfinalanimalhbonus = animalhmod + temparbitraryanimalh + professionalbonus;
} else if (tempanimalhproflevel === 3){
tempfinalanimalhbonus = animalhmod + temparbitraryanimalh + exceptionalbonus;
} else {
tempfinalanimalhbonus = animalhmod + temparbitraryanimalh;
}
//Aquatic
if (tempaquaticproflevel === 0){
tempfinalaquaticbonus = aquaticmod + temparbitraryaquatic;
} else if (tempaquaticproflevel === 1){
tempfinalaquaticbonus = aquaticmod + temparbitraryaquatic + skilledbonus;
} else if (tempaquaticproflevel === 2){
tempfinalaquaticbonus = aquaticmod + temparbitraryaquatic + professionalbonus;
} else if (tempaquaticproflevel === 3){
tempfinalaquaticbonus = aquaticmod + temparbitraryaquatic + exceptionalbonus;
} else {
tempfinalaquaticbonus = aquaticmod + temparbitraryaquatic;
}
//Arcane Lore
if (temparcanelproflevel === 0){
tempfinalarcanelbonus = arcanelmod + temparbitraryarcanel;
} else if (temparcanelproflevel === 1){
tempfinalarcanelbonus = arcanelmod + temparbitraryarcanel + skilledbonus;
} else if (temparcanelproflevel === 2){
tempfinalarcanelbonus = arcanelmod + temparbitraryarcanel + professionalbonus;
} else if (temparcanelproflevel === 3){
tempfinalarcanelbonus = arcanelmod + temparbitraryarcanel + exceptionalbonus;
} else {
tempfinalarcanelbonus = arcanelmod + temparbitraryarcanel;
}
//Athletics
if (tempathleticsproflevel === 0){
tempfinalathleticsbonus = athleticsmod + temparbitraryathletics;
} else if (tempathleticsproflevel === 1){
tempfinalathleticsbonus = athleticsmod + temparbitraryathletics + skilledbonus;
} else if (tempathleticsproflevel === 2){
tempfinalathleticsbonus = athleticsmod + temparbitraryathletics + professionalbonus;
} else if (tempathleticsproflevel === 3){
tempfinalathleticsbonus = athleticsmod + temparbitraryathletics + exceptionalbonus;
} else {
tempfinalathleticsbonus = athleticsmod + temparbitraryathletics;
}
//Bluff
if (tempbluffproflevel === 0){
tempfinalbluffbonus = bluffmod + temparbitrarybluff;
} else if (tempbluffproflevel === 1){
tempfinalbluffbonus = bluffmod + temparbitrarybluff + skilledbonus;
} else if (tempbluffproflevel === 2){
tempfinalbluffbonus = bluffmod + temparbitrarybluff + professionalbonus;
} else if (tempbluffproflevel === 3){
tempfinalbluffbonus = bluffmod + temparbitrarybluff + exceptionalbonus;
} else {
tempfinalbluffbonus = bluffmod + temparbitrarybluff;
}
//Fieldcraft
if (tempfieldcraftproflevel === 0){
tempfinalfieldcraftbonus = fieldcraftmod + temparbitraryfieldcraft;
} else if (tempfieldcraftproflevel === 1){
tempfinalfieldcraftbonus = fieldcraftmod + temparbitraryfieldcraft + skilledbonus;
} else if (tempfieldcraftproflevel === 2){
tempfinalfieldcraftbonus = fieldcraftmod + temparbitraryfieldcraft + professionalbonus;
} else if (tempfieldcraftproflevel === 3){
tempfinalfieldcraftbonus = fieldcraftmod + temparbitraryfieldcraft + exceptionalbonus;
} else {
tempfinalfieldcraftbonus = fieldcraftmod + temparbitraryfieldcraft;
}
//Intimidate
if (tempintimidateproflevel === 0){
tempfinalintimidatebonus = intimidatemod + temparbitraryintimidate;
} else if (tempintimidateproflevel === 1){
tempfinalintimidatebonus = intimidatemod + temparbitraryintimidate + skilledbonus;
} else if (tempintimidateproflevel === 2){
tempfinalintimidatebonus = intimidatemod + temparbitraryintimidate + professionalbonus;
} else if (tempintimidateproflevel === 3){
tempfinalintimidatebonus = intimidatemod + temparbitraryintimidate + exceptionalbonus;
} else {
tempfinalintimidatebonus = intimidatemod + temparbitraryintimidate;
}
//Investigation
if (tempinvestigationproflevel === 0){
tempfinalinvestigationbonus = investigationmod + temparbitraryinvestigation;
} else if (tempinvestigationproflevel === 1){
tempfinalinvestigationbonus = investigationmod + temparbitraryinvestigation + skilledbonus;
} else if (tempinvestigationproflevel === 2){
tempfinalinvestigationbonus = investigationmod + temparbitraryinvestigation + professionalbonus;
} else if (tempinvestigationproflevel === 3){
tempfinalinvestigationbonus = investigationmod + temparbitraryinvestigation + exceptionalbonus;
} else {
tempfinalinvestigationbonus = investigationmod + temparbitraryinvestigation;
}
//Medicine
if (tempmedicineproflevel === 0){
tempfinalmedicinebonus = medicinemod + temparbitrarymedicine;
} else if (tempmedicineproflevel === 1){
tempfinalmedicinebonus = medicinemod + temparbitrarymedicine + skilledbonus;
} else if (tempmedicineproflevel === 2){
tempfinalmedicinebonus = medicinemod + temparbitrarymedicine + professionalbonus;
} else if (tempmedicineproflevel === 3){
tempfinalmedicinebonus = medicinemod + temparbitrarymedicine + exceptionalbonus;
} else {
tempfinalmedicinebonus = medicinemod + temparbitrarymedicine;
}
//Merchant Lore
if (tempmerchantlproflevel === 0){
tempfinalmerchantlbonus = merchantlmod + temparbitrarymerchantl;
} else if (tempmerchantlproflevel === 1){
tempfinalmerchantlbonus = merchantlmod + temparbitrarymerchantl + skilledbonus;
} else if (tempmerchantlproflevel === 2){
tempfinalmerchantlbonus = merchantlmod + temparbitrarymerchantl + professionalbonus;
} else if (tempmerchantlproflevel === 3){
tempfinalmerchantlbonus = merchantlmod + temparbitrarymerchantl + exceptionalbonus;
} else {
tempfinalmerchantlbonus = merchantlmod + temparbitrarymerchantl;
}
//Military Lore
if (tempmilitarylproflevel === 0){
tempfinalmilitarylbonus = militarylmod + temparbitrarymilitaryl;
} else if (tempmilitarylproflevel === 1){
tempfinalmilitarylbonus = militarylmod + temparbitrarymilitaryl + skilledbonus;
} else if (tempmilitarylproflevel === 2){
tempfinalmilitarylbonus = militarylmod + temparbitrarymilitaryl + professionalbonus;
} else if (tempmilitarylproflevel === 3){
tempfinalmilitarylbonus = militarylmod + temparbitrarymilitaryl + exceptionalbonus;
} else {
tempfinalmilitarylbonus = militarylmod + temparbitrarymilitaryl;
}
//Perception
if (tempperceptionproflevel === 0){
tempfinalperceptionbonus = perceptionmod + temparbitraryperception;
} else if (tempperceptionproflevel === 1){
tempfinalperceptionbonus = perceptionmod + temparbitraryperception + skilledbonus;
} else if (tempperceptionproflevel === 2){
tempfinalperceptionbonus = perceptionmod + temparbitraryperception + professionalbonus;
} else if (tempperceptionproflevel === 3){
tempfinalperceptionbonus = perceptionmod + temparbitraryperception + exceptionalbonus;
} else {
tempfinalperceptionbonus = perceptionmod + temparbitraryperception;
}
//Perform
if (tempperformproflevel === 0){
tempfinalperformbonus = performmod + temparbitraryperform;
} else if (tempperformproflevel === 1){
tempfinalperformbonus = performmod + temparbitraryperform + skilledbonus;
} else if (tempperformproflevel === 2){
tempfinalperformbonus = performmod + temparbitraryperform + professionalbonus;
} else if (tempperformproflevel === 3){
tempfinalperformbonus = performmod + temparbitraryperform + exceptionalbonus;
} else {
tempfinalperformbonus = performmod + temparbitraryperform;
}
//Profession
if (tempprofessionproflevel === 0){
tempfinalprofessionbonus = professionmod + temparbitraryprofession;
} else if (tempprofessionproflevel === 1){
tempfinalprofessionbonus = professionmod + temparbitraryprofession + skilledbonus;
} else if (tempprofessionproflevel === 2){
tempfinalprofessionbonus = professionmod + temparbitraryprofession + professionalbonus;
} else if (tempprofessionproflevel === 3){
tempfinalprofessionbonus = professionmod + temparbitraryprofession + exceptionalbonus;
} else {
tempfinalprofessionbonus = professionmod + temparbitraryprofession;
}
//Politique
if (temppolitiqueproflevel === 0){
tempfinalpolitiquebonus = politiquemod + temparbitrarypolitique;
} else if (temppolitiqueproflevel === 1){
tempfinalpolitiquebonus = politiquemod + temparbitrarypolitique + skilledbonus;
} else if (temppolitiqueproflevel === 2){
tempfinalpolitiquebonus = politiquemod + temparbitrarypolitique + professionalbonus;
} else if (temppolitiqueproflevel === 3){
tempfinalpolitiquebonus = politiquemod + temparbitrarypolitique + exceptionalbonus;
} else {
tempfinalpolitiquebonus = politiquemod + temparbitrarypolitique;
}
//religion
if (tempreligionproflevel === 0){
tempfinalreligionbonus = religionmod + temparbitraryreligion;
} else if (tempreligionproflevel === 1){
tempfinalreligionbonus = religionmod + temparbitraryreligion + skilledbonus;
} else if (tempreligionproflevel === 2){
tempfinalreligionbonus = religionmod + temparbitraryreligion + professionalbonus;
} else if (tempreligionproflevel === 3){
tempfinalreligionbonus = religionmod + temparbitraryreligion + exceptionalbonus;
} else {
tempfinalreligionbonus = religionmod + temparbitraryreligion;
}
//Stealth
if (tempstealthproflevel === 0){
tempfinalstealthbonus = stealthmod + temparbitrarystealth;
} else if (tempstealthproflevel === 1){
tempfinalstealthbonus = stealthmod + temparbitrarystealth + skilledbonus;
} else if (tempstealthproflevel === 2){
tempfinalstealthbonus = stealthmod + temparbitrarystealth + professionalbonus;
} else if (tempstealthproflevel === 3){
tempfinalstealthbonus = stealthmod + temparbitrarystealth + exceptionalbonus;
} else {
tempfinalstealthbonus = stealthmod + temparbitrarystealth;
}
//Tech Lore
if (temptechlproflevel === 0){
tempfinaltechlbonus = techlmod + temparbitrarytechl;
} else if (temptechlproflevel === 1){
tempfinaltechlbonus = techlmod + temparbitrarytechl + skilledbonus;
} else if (temptechlproflevel === 2){
tempfinaltechlbonus = techlmod + temparbitrarytechl + professionalbonus;
} else if (temptechlproflevel === 3){
tempfinaltechlbonus = techlmod + temparbitrarytechl + exceptionalbonus;
} else {
tempfinaltechlbonus = techlmod + temparbitrarytechl;
}
setAttrs({
//setting final skill values
finalacademiabonus: tempfinalacademiabonus,
finalacrobaticsbonus: tempfinalacrobaticsbonus,
finalanimalhbonus: tempfinalanimalhbonus,
finalaquaticbonus: tempfinalaquaticbonus,
finalarcanelbonus: tempfinalarcanelbonus,
finalathleticsbonus: tempfinalathleticsbonus,
finalbluffbonus: tempfinalbluffbonus,
finalfieldcraftbonus: tempfinalfieldcraftbonus,
finalintimidatebonus: tempfinalintimidatebonus,
finalinvestigationbonus: tempfinalinvestigationbonus,
finalmedicinebonus: tempfinalmedicinebonus,
finalmerchantlbonus: tempfinalmerchantlbonus,
finalmilitarylbonus: tempfinalmilitarylbonus,
finalperceptionbonus: tempfinalperceptionbonus,
finalperformbonus: tempfinalperformbonus,
finalpolitiquebonus: tempfinalpolitiquebonus,
finalprofessionbonus: tempfinalprofessionbonus,
finalreligionbonus: tempfinalreligionbonus,
finalstealthbonus: tempfinalstealthbonus,
finaltechlbonus: tempfinaltechlbonus
});
});
});
//Defenses Section
on("sheet:opened change:characterlevel change:dexterity change:proftypedefense change:saveproffort change:fortsave change:saveprofref change:refsave change:saveprofwill change:willsave change:armoracbonus change:armormaxdexbonus change:armorthreshold change:armormovementpenalty change:armorname change:armorclassmod change:thresholdmod change:unawarearmorclassmod", function(){
getAttrs(["characterlevel","proftypedefense","strength","dexterity","constitution","intelligence","wisdom","charisma","proftypespellspri","proftypespellssec","spellcastingattribpri","armoracbonus","armormaxdexbonus","armorthreshold","armorclassmod","thresholdmod","unawarearmorclassmod","spellcastingdcpri","spellcastingattribsec","spellcastingdcsec","saveproffort","fortsave","saveprofref","refsave","saveprofwill","willsave","proftypeacademia","abilityscoreacademia","academia","proftypeacrobatics","abilityscoreacrobatics","acrobatics","proftypeanimalh","abilityscoreanimalh","animalh","proftypeaquatic","abilityscoreaquatic","aquatic","proftypearcanel","abilityscorearcanel","arcanel","proftypeathletics","abilityscoreathletics","athletics","proftypebluff","abilityscorebluff","bluff","proftypefieldcraft","abilityscorefieldcraft","fieldcraft","proftypeintimidate","abilityscoreintimidate","intimidate","proftypeinvestigation","abilityscoreinvestigation","investigation","proftypemedicine","abilityscoremedicine","medicine","proftypemerchantl","abilityscoremerchantl","merchantl","proftypemilitaryl","abilityscoremilitaryl","militaryl","proftypeperception","abilityscoreperception","perception","proftypeperform","abilityscoreperform","profession","proftypeprofession","abilityscoreprofession","profession","proftypepolitique","abilityscorepolitique","politique","proftypereligion","abilityscorereligion","religion","proftypestealth","abilityscorestealth","stealth","proftypetechl","abilityscoretechl","techl"], function(values) {
//Variables
let tempcharacterlevel = parseInt(values.characterlevel)||0;
//proficiency level holders
let skilledbonus = tempcharacterlevel;
let professionalbonus = tempcharacterlevel + 3;
let exceptionalbonus = tempcharacterlevel + 6;
//modifier holders
let tempstrength = parseInt(values.strength)||0;
let tempdexterity = parseInt(values.dexterity)||0;
let tempconstitution = parseInt(values.constitution)||0;
let tempintelligence = parseInt(values.intelligence)||0;
let tempwisdom = parseInt(values.wisdom)||0;
let tempcharisma = parseInt(values.charisma)||0;
//temporary holders of save proficiencies
let tempfortprof = parseInt(values.saveproffort)||0;
let temprefprof = parseInt(values.saveprofref)||0;
let tempwillprof = parseInt(values.saveprofwill)||0;
//temporary holder of AC prof
let tempdefenseprof = parseInt(values.proftypedefense)||0;
//temporary holder of ac and Threshold
let tempactotal = parseInt(values.armorclassmod)||0;
let temparmorac = parseInt(values.armoracbonus)||0;
let tempthreshold = parseInt(values.thresholdmod)||0;
let temparmorthreshold = parseInt(values.armorthreshold)||0;
let tempunaware = parseInt(values.unawarearmorclassmod)||0;
//temporary holders of max dex and capped dex value
let tempmaxdex = parseInt(values.armormaxdexbonus)||0;
let tempcappeddex = 0;
//temporary holders of arbitrary save bonuses
let temparbitraryfortbonus = parseInt(values.fortsave)||0;
let temparbitraryrefbonus = parseInt(values.refsave)||0;
let temparbitrarywillbonus = parseInt(values.willsave)||0;
//temporary holders of final save values
let tempfinalfortsave = 0;
let tempfinalrefsave = 0;
let tempfinalwillsave = 0;
//temporary holders of final defense values
let tempfinalactotal = 0;
let tempfinalthreshold = 0;
let tempfinalunaware = 0;
//Evaluate larger threshold and set value
if (tempthreshold>=temparmorthreshold){
tempfinalthreshold = tempthreshold;
} else {
tempfinalthreshold = temparmorthreshold;
}
//set Unaware
tempfinalunaware = 15 + tempunaware;
//Check max dex
if (tempdexterity>=tempmaxdex){
tempcappeddex = tempmaxdex;
} else {
tempcappeddex = tempdexterity;
}
//Do Defenses
if (tempdefenseprof === 0){
tempfinalactotal = 10 + tempcappeddex + tempactotal + temparmorac;
} else if (tempdefenseprof === 1){
tempfinalactotal = 10 + tempcappeddex + tempactotal + temparmorac + skilledbonus;
} else if (tempdefenseprof === 2){
tempfinalactotal = 10 + tempcappeddex + tempactotal + temparmorac + professionalbonus;
} else if (tempdefenseprof === 3){
tempfinalactotal = 10 + tempcappeddex + tempactotal + temparmorac + exceptionalbonus;
} else {
tempfinalactotal = 10 + tempcappeddex + tempactotal + temparmorac;
}
//Do fort save
if (tempfortprof === 0){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus;
} else if (tempfortprof === 1){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus + skilledbonus;
} else if (tempfortprof === 2){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus + professionalbonus;
} else if (tempfortprof === 3){
tempfinalfortsave = tempconstitution + temparbitraryfortbonus + exceptionalbonus;
} else {
tempfinalfortsave = tempconstitution + temparbitraryfortbonus;
}
//Do ref save
if (temprefprof === 0){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus;
} else if (temprefprof === 1){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus + skilledbonus;
} else if (temprefprof === 2){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus + professionalbonus;
} else if (temprefprof === 3){
tempfinalrefsave = tempdexterity + temparbitraryrefbonus + exceptionalbonus;
} else{
tempfinalrefsave = tempdexterity + temparbitraryrefbonus;
}
//Do will save
if (tempwillprof === 0){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus;
} else if (tempwillprof === 1){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus + skilledbonus;
} else if (tempwillprof === 2){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus + professionalbonus;
} else if (tempwillprof === 3){
tempfinalwillsave = tempwisdom + temparbitrarywillbonus + exceptionalbonus;
} else {
tempfinalwillsave = tempwisdom + temparbitrarywillbonus;
}
setAttrs({
//threshold
finalthreshold: tempfinalthreshold,
//ac totals
finalunawarearmorclass: tempfinalunaware,
finalactotal: tempfinalactotal,
//saving throws
finalfortsave: tempfinalfortsave,
finalrefsave: tempfinalrefsave,
finalwillsave: tempfinalwillsave
});
});
});
</script>