Files
roll20-character-sheets/Table Top Defined/Table_Top_Defined.html
T
Erik Goettel 3dda2e0dff # Table Top Defined Update
## Layout Fix
- The Profit and Loss sheet makes sense again. Memo and Debit were swapped around
## Focus button Added
- Focus advanced attack added to the
weapon cards.
2025-04-07 00:57:59 -07:00

5129 lines
246 KiB
HTML
Executable File

<!-- <editor-fold desc="ButtonBar"> -->
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="main"/>
<div style="text-align: center; width: 800px;" class="SAbutton">
<button type="action" name="act_main">Main</button>
<button type="action" name="act_definitions">Definitions</button>
<button type="action" name="act_abilities">Abilities/Feats</button>
<button type="action" name="act_spells">Spells</button>
<button type="action" name="act_skills">Skills</button>
<button type="action" name="act_gear">Weapons/Armor</button>
<button type="action" name="act_accessories">Accessories</button>
<button type="action" name="act_inventory">Inventory</button>
<button type="action" name="act_profitloss">Profit/Loss</button>
</div>
<!-- </editor-fold> -->
<!-- <editor-fold desc="Main Tab"> -->
<div class="sheet-main">
<div class="character-info-block main-full">
<div class="column-header grcsa">Character Information</div>
<div id="player-name">
<div>Character Name</div>
<div><input title="@{character_name}" class="flex-input" type="text" readonly name="attr_character_name"/></div>
<div>Player Name</div>
<div><input title="@{PlayerName}" class="flex-input" type="text" name="attr_PlayerName"/></div>
</div>
<div id="age-and-height">
<div>Age</div>
<div><input title="@{characterage}" class="flex-input" type="number" name="attr_characterage"/></div>
<div>Height</div>
<div><input title="@{characterheight}" class="flex-input" type="text" name="attr_characterheight"/></div>
</div>
<div id="weight-and-gender">
<div>Weight</div>
<div><input title="@{characterweight}" class="flex-input" type="text" name="attr_characterweight" /></div>
<div>Gender</div>
<div><input title="@{charactergender}" class="flex-input" type="text" name="attr_charactergender"/></div>
</div>
<div id="species-name">
<div>Species</div>
<div><input title="@{species}" class="flex-input" type="text" name="attr_species"/></div>
<div>Speed</div>
<div><input title="@{basespeed}" class="flex-input" type="text" name="attr_basespeed"/></div>
</div>
<div id="more-speed">
<div>Speed (Fly)</div>
<div><input title="@{flyspeed}" class="flex-input" type="text" name="attr_flyspeed" placeholder="#(Manuverability)"/></div>
<div>Speed (Swim)</div>
<div><input title="@{swimspeed}" class="flex-input" type="text" name="attr_swimspeed"/></div>
</div>
<div id="religion-name">
<div>Religion</div>
<div><input title="@{Religion}" class="flex-input" type="text" name="attr_Religion"/></div>
<div>Sanctity</div>
<div><input title="@{Sanctity}" class="flex-input" type="text" name="attr_Sanctity"/></div>
</div>
<div id="hd-and-size">
<div>HD</div>
<div><input title="@{HD}" class="flex-input" type="number" name="attr_HD" /></div>
<div>Size Category</div>
<div class="DataBox">
<select title="@{size}" type="text" name="attr_size" id="SizeCategory">
<option value="Sub Tiny">Sub Tiny</option>
<option value="Tiny">Tiny</option>
<option value="Very Small">Very Small</option>
<option value="Small">Small</option>
<option selected="selected" value="Medium">Medium</option>
<option value="Large">Large</option>
<option value="Very Large">Very Large</option>
<option value="Gargantuan">Gargantuan</option>
<option value="Super Gargantuan">Super Gargantuan</option>
</select>
</div>
</div>
</div>
<div class="main-left">
<div class="attribute-block">
<div class="column-header grcsa">Attributes</div>
<div id="name">
<div class="titleblock"> </div>
<div class="titleblock">Strength</div>
<div class="titleblock">Dexterity</div>
<div class="titleblock">Constitution</div>
<div class="titleblock">Intelligence</div>
<div class="titleblock">Wisdom</div>
<div class="titleblock">Charisma</div>
</div>
<div id="base">
<div class="titleblock">Base</div>
<div><input title="@{strength}" type="number" name="attr_strength"/></div>
<div><input title="@{dexterity}" type="number" name="attr_dexterity"/></div>
<div><input title="@{constitution}" type="number" name="attr_constitution"/></div>
<div><input title="@{intelligence}" type="number" name="attr_intelligence"/></div>
<div><input title="@{wisdom}" type="number" name="attr_wisdom"/></div>
<div><input title="@{charisma}" type="number" name="attr_charisma"/></div>
</div>
<div id="enhancement">
<div class="titleblock">Magic</div>
<div><input title="@{StrEnch}" type="number" name="attr_StrEnch"/></div>
<div><input title="@{DexEnch}" type="number" name="attr_DexEnch"/></div>
<div><input title="@{ConEnch}" type="number" name="attr_ConEnch"/></div>
<div><input title="@{IntEnch}" type="number" name="attr_IntEnch"/></div>
<div><input title="@{WisEnch}" type="number" name="attr_WisEnch"/></div>
<div><input title="@{ChaEnch}" type="number" name="attr_ChaEnch"/></div>
</div>
<div id="bonus">
<div class="titleblock">Bonus</div>
<div><input title="@{StrBonus}" type="number" name="attr_StrBonus"/></div>
<div><input title="@{DexBonus}" type="number" name="attr_DexBonus"/></div>
<div><input title="@{ConBonus}" type="number" name="attr_ConBonus"/></div>
<div><input title="@{IntBonus}" type="number" name="attr_IntBonus"/></div>
<div><input title="@{WisBonus}" type="number" name="attr_WisBonus"/></div>
<div><input title="@{ChaBonus}" type="number" name="attr_ChaBonus"/></div>
</div>
<div id="penalty">
<div class="titleblock">Penalty</div>
<div><input title="@{StrPen}" type="number" name="attr_StrPen"/></div>
<div><input title="@{DexPen}" type="number" name="attr_DexPen"/></div>
<div><input title="@{ConPen}" type="number" name="attr_ConPen"/></div>
<div><input title="@{IntPen}" type="number" name="attr_IntPen"/></div>
<div><input title="@{WisPen}" type="number" name="attr_WisPen"/></div>
<div><input title="@{ChaPen}" type="number" name="attr_ChaPen"/></div>
</div>
<div id="total">
<div class="titleblock">Total</div>
<div><input title="@{StrTotal}" type="number" name="attr_StrTotal" readonly/></div>
<div><input title="@{DexTotal}" type="number" name="attr_DexTotal" readonly/></div>
<div><input title="@{ConTotal}" type="number" name="attr_ConTotal" readonly/></div>
<div><input title="@{IntTotal}" type="number" name="attr_IntTotal" readonly/></div>
<div><input title="@{WisTotal}" type="number" name="attr_WisTotal" readonly/></div>
<div><input title="@{ChaTotal}" type="number" name="attr_ChaTotal" readonly/></div>
</div>
<div id="modifier">
<div class="titleblock">Modifier</div>
<div><input title="@{strmod}" type="number" name="attr_strmod" readonly/></div>
<div><input title="@{dexmod}" type="number" name="attr_dexmod" readonly/></div>
<div><input title="@{conmod}" type="number" name="attr_conmod" readonly/></div>
<div><input title="@{intmod}" type="number" name="attr_intmod" readonly/></div>
<div><input title="@{wisdom}" type="number" name="attr_wismod" readonly/></div>
<div><input title="@{chamod}" type="number" name="attr_chamod" readonly/></div>
</div>
<div id="check">
<div class="titleblock">Roll</div>
<div>
<button title="Strength Check"
type="roll"
value="&{template:custom}{{title=Strength Check}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{strmod}]]}}"
name="roll_Strength-Check"></button>
</div>
<div>
<button title="Dexterity Check"
type="roll"
value="&{template:custom}{{title=Dexterity Check}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{dexmod}]]}}"
name="roll_Dexterity-check"></button>
</div>
<div>
<button title="Constitution Check"
type="roll"
value="&{template:custom}{{title=Constitution Check}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{conmod}]]}}"
name="roll_Constitution-check"></button>
</div>
<div>
<button title="Intelligence Check"
type="roll"
value="&{template:custom}{{title=Intelligence Check}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{intmod}]]}}"
name="roll_Intelligence-check"></button>
</div>
<div>
<button title="Wisdom Check"
type="roll"
value="&{template:custom}{{title=Wisdom Check}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{wismod}]]}}"
name="roll_Wisdom-check"></button>
</div>
<div>
<button title="Charisma Check"
type="roll"
value="&{template:custom}{{title=Charisma Check}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{chamod}]]}}"
name="roll_Charisma-check"></button>
</div>
</div>
</div>
<div class="saving-throw-block">
<div class="column-header grcsa">Saving Throws</div>
<div id="save-name">
<div class="titleblock">Ego</div>
<div class="titleblock">
<select title="@{EgoBaseStr}" type="text" name="attr_EgoBaseStr" id="EgoBase">
<option value="Low">Low</option>
<option value="High">High</option>
</select>
</div>
<div class="titleblock">Fortitude</div>
<div class="titleblock">
<select title="@{FortBase}" type="text" name="attr_FortBaseStr" id="FortBase">
<option value="Low">Low</option>
<option value="High">High</option>
</select>
</div>
<div class="titleblock">Reflex</div>
<div class="titleblock">
<select title="@{ReflexBase}" type="text" name="attr_RefBaseStr" id="ReflexBase">
<option value="Low">Low</option>
<option value="High">High</option>
</select>
</div>
<div class="titleblock">Will</div>
<div class="titleblock">
<select title="@{WillBase}" type="text" name="attr_WilBaseStr" id="WillBase">
<option value="Low">Low</option>
<option value="High">High</option>
</select>
</div>
</div>
<div id="save-total">
<div><b>Total</b></div>
<div><input title="@{EgoTotal}" type="number" readonly name="attr_EgoTotal"/></div>
<div><b>Total</b></div>
<div><input title="@{FortTotal}" type="number" readonly name="attr_FortTotal"/></div>
<div><b>Total</b></div>
<div><input title="@{RefTotal}" type="number" readonly name="attr_RefTotal"/></div>
<div><b>Total</b></div>
<div><input title="@{WilTotal}" type="number" readonly name="attr_WilTotal"/></div>
</div>
<div id="save-base">
<div>Base</div>
<div><input title="@{EgoBaseNum}" type="number" name="attr_EgoBaseNum" readonly/></div>
<div>Base</div>
<div><input title="@{FortBaseNum}" type="number" name="attr_FortBaseNum" readonly/></div>
<div>Base</div>
<div><input title="@{RefBaseNum}" type="number" name="attr_RefBaseNum" readonly/></div>
<div>Base</div>
<div><input title="@{WilBaseNum}" type="number" name="attr_WilBaseNum" readonly/></div>
</div>
<div id="save-key">
<div>Cha</div>
<div><input title="@{chamod}" type="number" name="attr_chamod" readonly/></div>
<div>Con</div>
<div><input title="@{@conmod}" type="number" name="attr_conmod" readonly/></div>
<div>Dex</div>
<div><input title="@{dexmod}" type="number" name="attr_dexmod" readonly/></div>
<div>Wis</div>
<div><input title="@{wismod}" type="number" name="attr_wismod" readonly/></div>
</div>
<div id="save-magic">
<div>Magic</div>
<div><input title="@{EgoMagic}" type="number" name="attr_EgoMagic"/></div>
<div>Magic</div>
<div><input title="@{FortMagic}" type="number" name="attr_FortMagic"/></div>
<div>Magic</div>
<div><input title="@{RefMagic}" type="number" name="attr_RefMagic"/></div>
<div>Magic</div>
<div><input title="@{WilMagic}" type="number" name="attr_WilMagic"/></div>
</div>
<div id="save-misc">
<div>Misc.</div>
<div><input title="@{EgoMiscNum}" type="number" name="attr_EgoMiscNum"/></div>
<div>Misc.</div>
<div><input title="@{FortMiscNum}" type="number" name="attr_FortMiscNum"/></div>
<div>Misc.</div>
<div><input title="@{RefMiscNum}" type="number" name="attr_RefMiscNum"/></div>
<div>Misc.</div>
<div><input title="@{WilMiscNum}" type="number" name="attr_WilMiscNum"/></div>
</div>
<div id="save-temp">
<div>Temp</div>
<div><input title="@{EgoTempNum}" type="number" name="attr_EgoTempNum"/></div>
<div>Temp</div>
<div><input title="@{FortTempNum}" type="number" name="attr_FortTempNum"/></div>
<div>Temp</div>
<div><input title="@{RefTempNum}" type="number" name="attr_RefTempNum"/></div>
<div>Temp</div>
<div><input title="@{WilTempNum}" type="number" name="attr_WilTempNum"/></div>
</div>
<div id="save-check">
<div class="titleblock">Save</div>
<div class="titleblock">
<button title="Ego Save"
type="roll"
value="&{template:custom}{{title=Ego Save}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{EgoTotal}]]}}"
name="roll_Ego-save"></button>
</div>
<div class="titleblock">Save</div>
<div class="titleblock">
<button title="Fortitude Save"
type="roll"
value="&{template:custom}{{title=Fortitude Save}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{FortTotal}]]}}"
name="roll_Fortitude-save"></button>
</div>
<div class="titleblock">Save</div>
<div class="titleblock">
<button title="Reflex Save"
type="roll"
value="&{template:custom}{{title=Reflex Save}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{RefTotal}]]}}"
name="roll_Reflex-save"></button>
</div>
<div class="titleblock">Save</div>
<div class="titleblock">
<button title="Will Save"
type="roll"
value="&{template:custom}{{title=Will Save}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{WilTotal}]]}}"
name="roll_Will-save"></button>
</div>
</div>
</div>
<div class="column-header">Advanced Combat</div>
<div class="ggrid titleblock">
<div class="grc1">
<div>&nbsp;</div>
<div>Magic Touch Attack:</div>
<div>Martial Touch Attack:</div>
<div>Opposed (Trip):</div>
<div>Opposed (Shove):</div>
<div>Opposed (Trample):</div>
<div>Grapple</div>
</div>
<div class="grc2">
<div>Total</div>
<div><input title="@{MagicTouchAttack}" type="number" readonly name="attr_MagicTouchAttack"/></div>
<div><input title="@{MartialTouchAttack}" type="number" readonly name="attr_MartialTouchAttack"/></div>
<div><input title="@{TripOpposed}" type="number" readonly name="attr_TripOpposed"/></div>
<div><input title="@{ShoveOpposed}" type="number" readonly name="attr_ShoveOpposed"/></div>
<div><input title="@{TrampleOpposed}" type="number" readonly name="attr_TrampleOpposed"/></div>
<div><input title="@{Grapple}" type="number" readonly name="attr_Grapple"/></div>
</div>
<div class="grc3">
<div>Feat</div>
<div><input title="@{MagicTouchAttackFeat}" type="number" name="attr_MagicTouchAttackFeat" /></div>
<div><input title="@{MartialTouchAttackFeat}" type="number" name="attr_MartialTouchAttackFeat" /></div>
<div><input title="@{TripOpposedFeat}" type="number" name="attr_TripOpposedFeat" /></div>
<div><input title="@{ShoveOpposedFeat}" type="number" name="attr_ShoveOpposedFeat" /></div>
<div><input title="@{TrampleOpposedFeat}" type="number" name="attr_TrampleOpposedFeat" /></div>
<div><input title="@{GrappleFeat}" type="number" name="attr_GrappleFeat"/></div>
</div>
<div class="grc4">
<div>Misc.</div>
<div><input title="@{MagicTouchAttackMisc}" type="number" name="attr_MagicTouchAttackMisc" /></div>
<div><input title="@{MartialTouchAttackMisc}" type="number" name="attr_MartialTouchAttackMisc" /></div>
<div><input title="@{TripOpposedMisc}" type="number" name="attr_TripOpposedMisc" /></div>
<div><input title="@{ShoveOpposedMisc}" type="number" name="attr_ShoveOpposedMisc" /></div>
<div><input title="@{TrampleOpposedMisc}" type="number" name="attr_TrampleOpposedMisc" /></div>
<div><input title="@{GrappleMisc}" type="number" name="attr_GrappleMisc"/></div>
</div>
<div class="grc5">
<div>Temp</div>
<div><input title="@{MagicTouchAttackTemp}" type="number" name="attr_MagicTouchAttackTemp" /></div>
<div><input title="@{MartialTouchAttackTemp}" type="number" name="attr_MartialTouchAttackTemp" /></div>
<div><input title="@{TripOpposedTemp}" type="number" name="attr_TripOpposedTemp" /></div>
<div><input title="@{ShoveOpposedTemp}" type="number" name="attr_ShoveOpposedTemp" /></div>
<div><input title="@{TrampleOpposedTemp}" type="number" name="attr_TrampleOpposedTemp" /></div>
<div><input title="@{GrappleTemp}" type="number" name="attr_GrappleTemp"/></div>
</div>
<div class="grc6">
<div>Roll</div>
<div>
<button class="button"
title="MagicTouchAttack"
type="roll"
value="&{template:custom}{{title=Magic Touch Attack}}{{subtitle= @{character_name}'s touch spell}}{{Result:=[[1d20+@{MagicTouchAttack}]]}}"
name="roll_MagicTouchAttackR"></button>
</div>
<div>
<button class="button"
title="MartialTouchAttack"
type="roll"
value="&{template:custom}{{title=Martial Touch Attack}}{{subtitle= @{character_name}'s touch attack}}{{Result:=[[1d20+@{MartialTouchAttack}]]}}"
name="roll_MartialTouchAttackR"></button>
</div>
<div>
<button class="button"
title="Opposed Trip"
type="roll"
value="&{template:custom}{{title=oppose strength (Trip)}}{{subtitle= @{character_name}'s opposing strength}}{{Result:=[[1d20+@{TripOpposed}]]}}"
name="roll_TripOpposedR"></button>
</div>
<div>
<button class="button"
title="Opposed Shove"
type="roll"
value="&{template:custom}{{title=oppose strength (Shove)}}{{subtitle= @{character_name}'s opposing strength}}{{Result:=[[1d20+@{ShoveOpposed}]]}}"
name="roll_ShoveOpposedR"></button>
</div>
<div>
<button class="button"
title="Opposed Trample"
type="roll"
value="&{template:custom}{{title=oppose strength (Trample)}}{{subtitle= @{character_name}'s opposing strength}}{{Result:=[[1d20+@{TrampleOpposed}]]}}"
name="roll_opposed-trampleR"></button>
</div>
<div>
<button class="button"
title="Opposed Grapple"
type="roll"
value="&{template:custom}{{title=Opposed Grapple}}{{subtitle= @{character_name} }}{{Result=[[1d20+@{Grapple}]]}}"
name="roll_opposed-grappleR"></button>
</div>
</div>
</div> <!--Advanced Combat Grid-->
</div>
<div class="main-right">
<div class="hp-armor-block">
<div class="grc1">
<div class="column-header">Hit Points</div>
<div class="hp-column">
<div id="hp-names">
<div>Current HP:</div>
<div>Max HP:</div>
<div>Constitution:</div>
<div>Progression:</div>
<div>Misc. HP:</div>
<div>Rolled HP:</div>
</div>
<div id="hp-inputs">
<div><input title="@{hp}" type="number" name="attr_hp"/></td></div>
<div><input title="@{hp_max}" type="number" readonly name="attr_hp_max"/></div>
<div><input title="@{ConHP}" type="number" readonly name="attr_ConHP"/></div>
<div><input title="@{ProgHP}" type="number" readonly name="attr_ProgHP"/></div>
<div><input title="@{MiscHP}" type="number" name="attr_MiscHP"/></div>
<div><input title="@{RollHP}" type="number" name="attr_RollHP"/></div>
</div>
</div>
<div class="column-header">Initiative
<button class="button tokenaction"
title="Initiative"
type="roll"
value="/gr [[1d20+@{InitTotal}+(@{InitTotal}/100)+([[d10-1]]/1000)&{tracker}]]"
name="roll_00-Inintiative"></button>
</div>
<div class="ggrid">
<div class="grc1">
<div style="color: #FFFFFF">Total</div>
<div><input title="@{InitTotal}" type="number" readonly="true" name="attr_InitTotal"/></div>
</div>
<div class="grc2">
<div>&nbsp;</div>
<div class="titleblock">=</div>
</div>
<div class="grc3">
<div style="color: #FFFFFF">Dex</div>
<div class="titleblock"><input title="@{dexmod}" type="number" name="attr_dexmod" readonly="true"/></div>
</div>
<div class="grc4">
<div>&nbsp;</div>
<div class="titleblock">+</div>
</div>
<div class="grc5">
<div style="color: #FFFFFF">Misc</div>
<div><input title="@{InitBonus}" type="number" name="attr_InitBonus"/></div>
</div>
</div> <!-- Initiative Boxes -->
<div class="column-header">Wound and Base Attack</div>
<div class="ggrid"> <!--Wound and Base Attack Grid-->
<div class="grc1">
<div class="titleblock">Wound DC</div>
<div><input title="@{WoundDC}" type="number" name="attr_WoundDC" readonly/></div>
</div>
<div class="grc2">
<div class="titleblock">Base Attack</div>
<div><input title="@{BAB}" type="number" name="attr_BAB" readonly/></div>
</div>
</div>
</div>
<div class="grc2">
<div class="column-header">Armor Class</div>
<div class="ac-column">
<div id="ac-names">
<div>Total AC:</div>
<div>Touch AC:</div>
<div>Flat-Footed AC:</div>
<div>Armor:</div>
<div>Shield:</div>
<div>Natural:</div>
<div>Deflection:</div>
<div>Parry:</div>
<div>Dodge:</div>
<div>Insight:</div>
<div>Misc:</div>
</div>
<div id="ac-inputs">
<div><input title="@{TotalAC}" type="number" readonly="true" name="attr_TotalAC"/></div>
<div><input title="@{TouchAC}" type="number" readonly="true" name="attr_TouchAC"/></div>
<div><input title="@{FlatFAC}" type="number" readonly="true" name="attr_FlatFAC"/></div>
<div><input title="@{ArmorBonus}" type="number" readonly="true" name="attr_ArmorBonus"/></div>
<div><input title="@{Shield}" type="number" readonly="true" name="attr_Shield"/></div>
<div><input title="@{NaturalAC}" type="number" name="attr_NaturalAC"></div>
<div><input title="@{Deflection}" type="number" name="attr_Deflection"/></div>
<div><input title="@{ParryAC}" type="number" name="attr_ParryAC"/></div>
<div><input title="@{DodgeAC}" type="number" name="attr_DodgeAC"/></div>
<div><input title="@{InsightAC}" type="number" name="attr_InsightAC"/></div>
<div><input title="@{MiscAC}" type="number" name="attr_MiscAC"/></div>
</div>
</div>
</div>
</div>
<div class="column-header grcsa">Notes</div>
<div>
<textarea name="attr_Main-Notes" placeholder="Pertinent information, notes, and bonuses..."/>
</div>
</div>
</div>
<!--</editor-fold>-->
<!--<editor-fold desc="Definitions and Traits">-->
<div class="sheet-definitions">
<div class="ggrid">
<div class="grr1 row-header">Definitions, Traits, & Afflictions</div>
<div class="grr2 ggrid titleblock">
<div class="grc1">
<div>Attack Curve</div>
<div><select title="@{AttackCurve}" class="standard-input" type="text" name="attr_AttackCurve">
<option value="High">High</option>
<option value="Medium">Medium</option>
<option value="Low">Low</option>
</select></div>
</div>
<div class="grc2">
<div>Magic Type</div>
<div><select title="@{MagicCurve}" class="standard-input" type="text" name="attr_MagicCurve">
<option value="None">Null</option>
<option value="Basic">Basic</option>
<option value="Standard">Standard</option>
<option value="Advanced">Advanced</option>
</select></div>
</div>
<div class="grc3">
<div>Specialty</div>
<div><select title="@{Specialty}" class="standard-input" type="text" name="attr_Specialty">
<option value="Combatant">Combatant</option>
<option value="Generalist">Generalist</option>
<option value="Specialist">Specialist</option>
</select></div>
</div>
<div class="grc4">
<div>Natural Int Mod</div>
<div><input title="@{NatIntMod}" type="number" name="attr_NatIntMod" readonly/></div>
</div>
<div class="grc5">
<div>Base Skill Growth</div>
<div><input title="@{BaseSkillGrowth}" type="number" name="attr_BaseSkillGrowth" readonly/></div>
</div>
<div class="grc6">
<div>Skills Known</div>
<div><input title="@{SkillsKnown}" type="number" name="attr_SkillsKnown" readonly/></div>
</div>
<div class="grc7">
<div>Total Skill Points</div>
<div><input title="@{TotalPossibleSkillPoints}" type="number" name="attr_TotalPossibleSkillPoints" readonly/></div>
</div>
<div class="grc8">
<div>Unspent Skill Point</div>
<div><input title="@{RemainingSkillPoints}" type="number" name="attr_RemainingSkillPoints" readonly/></div>
</div>
</div>
<div class="grr3 ggrid">
<div class="grc1 bottom-border-div">
<div class="column-header">Species Info/Traits</div>
<div>Versatile?<input type="checkbox" name="attr_Versatile"/></div>
<div>
<fieldset class="repeating_DTA1">
<div class="column-header-dark">
<button type="action" class="Small-Button" name="act_dta1minimize">-</button><input title="@{speciestraitname}" class="DTA-name-dark" type="text" name="attr_speciestraitname" placeholder="<Trait name here>"/>
</div>
<input type="hidden" class="dta-toggle" name="attr_dta1minimizetoggle" value="0"/>
<div class="dta-shrink">
<textarea title="@{speciestraitdescription}" name="attr_speciestraitdescription" placeholder="<Description here>"></textarea>
</div>
</fieldset>
</div>
</div>
<div class="grc2 wrapped-div">
<div class="column-header">Definitions</div>
<div class="titleblock" style="font-size: medium">Primary</div>
<div class="column-header"><input title="@{primarydefinitionname}" class="DTA-name" type="text" name="attr_primarydefinitionname" placeholder="<Primary Definition here>"></div>
<div><textarea title="@{primarydescription}" name="attr_primarydescription" placeholder="<Description here>"></textarea></div>
<div class="column-header-dark">Secondary</div>
<div>
<fieldset class="repeating_DTA2">
<div class="column-header"><button type="action" class="Small-Button" name="act_dta2minimize">-</button><input class="DTA-name" type="text" name="attr_secdefname" placeholder="<Secondary Definition here>"/>
</div>
<input type="hidden" class="dta-toggle" name="attr_dta2minimizetoggle" value="0"/>
<div class="dta-shrink">
<textarea name="attr_secdefdescription" placeholder="<Description here>"></textarea>
</div>
</fieldset>
</div>
</div>
<div class="grc3 bottom-border-div">
<div class="column-header">Afflictions</div>
<div>
<fieldset class="repeating_DTA3">
<input type="hidden" class="afflictions-toggle" name="attr_minafflictionsval" value="0"/>
<div class="column-header-dark"><button type="action" class="Small-Button" name="act_dta3minimize">-</button><input class="DTA-name-dark" type="text" name="attr_afflictionsname" placeholder="<Affliction name here>"/>
</div>
<input type="hidden" class="dta-toggle" name="attr_dta3minimizetoggle" value="0"/>
<div class="dta-shrink">
<textarea name="attr_afflictionsdescription" placeholder="<Description here>"></textarea>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!-- This is the feats list
<div class="sheet-repeating-fields">
<fieldset class="repeating_feats">
<input type="hidden" class="feats-toggle" name="attr_minfeatval" value="0"/>
<div class="feats_title"><button style="color:black" type="action" class="Small-Button" name="act_minfeats">-</button><input type="text" name="attr_featsname" placeholder="<Feat name here>">
</div>
<div class="feats_description">
<textarea name="attr_featsdescription" placeholder="<Description here>"></textarea>
</div>
</fieldset>
</div>
</div>
</fieldset>
</div>
</div>
</div>
-->
<!--</editor-fold>-->
<!--<editor-fold desc="Abilities">-->
<div class="sheet-abilities">
<div class="ggrid">
<div class="grr1 row-header">
Abilities and Feats
</div>
<div class="titleblock grr2 ggrid">
<div class="grc1">
<div>Close Range</div>
<div><input title="@{CloseRange}" type="number" name="attr_CloseRange" readonly/></div>
</div>
<div class="grc2">
<div>Medium Range</div>
<div><input title="@{MediumRange}" type="number" name="attr_MediumRange" readonly/></div>
</div>
<div class="grc3">
<div>Long Range</div>
<div><input title="@{LongRange}" type="number" name="attr_LongRange" readonly/></div>
</div>
<div class="grc4">
<div>Spell Proficiency</div>
<div><input title="@{SpellProf}" type="number" name="attr_SpellProf" readonly/></div>
</div>
</div>
<div class="grr3 ggrid">
<div class="grr1 row-header">Resources</div>
<fieldset class="repeating_resources">
<div class="grr2">
<div class="ggrid">
<div class="grr1 column-header-dark">
<input class="resourceName" title="Resource Name" type="text" name="attr_resourceName" placeholder="Grace, Focus, Etc..."/>
</div>
<div class="grr2">
Remaining:&nbsp;
<input class="standard-input" title="Resource Current" type="number" name="attr_resourceNumber" />
</div>
<div class="grr3">
Maximum:&nbsp;
<input class="standard-input" title="Resource Max" type="number" name="attr_resourceNumber_max" />
</div>
</div>
</div>
</fieldset>
</div>
<div class="grr4 ggridc">
<div class="grc1">
<div class="column-header">Abilities</div>
<fieldset class="repeating_abilities">
<div class="midline-right-div ggrid">
<div class="row-header-dark grr1">
<div>
<button type="action" class="Small-Button" name="act_minabilitytog">-</button>
<input type="text" class="Ability-name" name="attr_abilityname" placeholder="<Ability Name Here>"/>
<button type="roll" name="roll_ability_card" value="@{abilityroll}"></button>
</div>
<div class="grr2 titleblock" style="font-size: small; font-weight: normal; margin-bottom: 2px">
Use(s): <input class="standard-input" type="text" name="attr_userdescription" placeholder="per day"/>
Max Uses: <input class="standard-input" type="text" name="attr_uses"/>
Resource: <input title="Resource Name" class="standard-input" type="text" name="attr_resourceNameCard"/>
<input type="hidden" name="attr_abilityroll"/>
</div>
</div>
<input type="hidden" class="ability-toggle" name="attr_minimizeability" value="0"/>
<div class="ability_description ggrid">
<div class="grr1 ggridc" style="margin-top: 2px">
<div class="grc1">
<div>Target/Effect:</div>
<div>Duration:</div>
<div>DC:</div>
<div>Ability Type?</div>
<div>Dice Rolled?</div>
<div>Spell Resistance?</div>
</div>
<div class="grc2">
<div><input class="standard-input" type="text" name="attr_abilitytarget"/></div>
<div><input class="standard-input" type="text" name="attr_abilityduration" placeholder="Rounds"/></div>
<div><input class="standard-input" type="text" name="attr_abilitydc"/></div>
<div>
<select class="fixed-select" name="attr_abilitytype">
<option value="0">Utility</option>
<option value="Damage">Damage</option>
<option value="Healing">Healing</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>
<input class="standard-input" type="text" name="attr_abilitydicenum" placeholder="#"/>
<select class="die-select" name="attr_abilitydicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select>
</div>
<div><input type="checkbox" name="attr_abilitysrconfirm" value="1"/></div>
</div>
<div class="grc3">
<div>Range:</div>
<div>Action:</div>
<div>Saving Throw:</div>
<div>Spell Proficiency?</div>
</div>
<div class="grc4">
<div><input class="standard-input" type="text" name="attr_abilityrange"/></div>
<div><input class="standard-input" type="text" name="attr_abilityaction"/></div>
<div>
<select class="fixed-select" name="attr_absavethrow" value="N/A" class="abilitysaving">
<option value="N/A">N/A</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div><input type="checkbox" name="attr_asprof" value="1"/></div>
</div>
</div>
<div class="grr2">
Ability Description:<br><textarea name="attr_abilitydescriptiontext"></textarea><br>
</div>
</div>
</div>
</fieldset>
</div>
<div class="grc2">
<div class="column-header">Feats</div>
<fieldset class="repeating_feats">
<div class="column-header-dark">
<button style="color:black" type="action" class="Small-Button" name="act_minfeats">-</button><input class="Ability-name" type="text" name="attr_featsname" placeholder="<Feat name here>">
</div>
<input type="hidden" class="feats-toggle" name="attr_minfeatval" value="0"/>
<div class="feats_description">
<textarea name="attr_featsdescription" placeholder="<Description here>"></textarea>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<!--</editor-fold>-->
<!-- <editor-fold desc="Spells"-->
<div class="sheet-spells">
<div class="gridarea">
<div class="titleblock">
<h3 style="color:white">Spell Casting</h3>
Primary Mental Attribute(PMA): <select title="@{PMA}" name="attr_PMA" value="" class="fixed-select">
<option value="@{strmod}">Str</option>
<option value="@{dexmod}">Dex</option>
<option value="@{wismod}">Wis</option>
<option value="@{intmod}">Int</option>
<option value="@{chamod}">Cha</option>
</select><br>
Caster Level: <input title="@{cl}" type="number" name="attr_cl" readonly/>
Spell Penetration Bonus:<input title="@{spellpenetrationbonus}" type="number" name="attr_spellpenetrationbonus" value="0">
Spell Proficiency: <input title="@{SpellProf}" type="number" name="attr_SpellProf" readonly/><br>
Close Range: <input title="@{CloseRange}" type="number" name="attr_CloseRange" readonly/>
Medium Range: <input title="@{MediumRange}" type="number" name="attr_MediumRange" readonly/>
Long: <input title="@{LongRange}" type="number" name="attr_LongRange" readonly/>
</div>
<div class="Column1"> <!--Left Column-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell0minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell0minimize">-</button>
<span>Simplex Spells</span><br>
Per Day: <input type="text" readonly name="attr_0perday" value="&infin;"/>
Remaining: <input type="text" readonly name="attr_0remaining" value="&infin;"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-0">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell0minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell0minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
&nbsp;Simplex
</span>
<input style="float:right; width: 40px;" type="text" readonly="true" name="attr_prepared" value="&infin;">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:
<span style="float: right; background: #D0D0D0">
<input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select>
</span>
</div>
<div>
<div style="float:left"><div style="float:left">On Success:</div></div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell0minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell0minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Simplex Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell2minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell2minimize">-</button>
<span>Level 2 Spells</span><br>
Per Day: <input readonly type="number" name="attr_2perday"/>
Remaining: <input type="number" name="attr_2remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-2">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell2minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell2minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell2minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell2minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float:none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 2 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell4minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell4minimize">-</button>
<span>Level 4 Spells</span><br>
Per Day: <input readonly type="number" name="attr_4perday"/>
Remaining: <input type="number" name="attr_4remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-4">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell4minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell4minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell4minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell4minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float:none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 4 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell6minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell6minimize">-</button>
<span>Level 6 Spells</span><br>
Per Day: <input readonly type="number" name="attr_6perday"/>
Remaining: <input type="number" name="attr_6remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-6">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell6minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell6minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell6minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell6minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float:none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 6 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell8minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell8minimize">-</button>
<span>Level 8 Spells</span><br>
Per Day: <input readonly type="number" name="attr_8perday"/>
Remaining: <input type="number" name="attr_8remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-8">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell8minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell8minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell8minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell8minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 8 Spells-->
</div>
<div class="Column2"> <!--Right Column-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell1minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell1minimize">-</button>
<span>Level 1 Spells</span><br>
Per Day: <input readonly type="number" name="attr_1perday"/>
Remaining: <input type="number" name="attr_1remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-1">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell1minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell1minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell1minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell1minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 1 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell3minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell3minimize">-</button>
<span>Level 3 Spells</span><br>
Per Day: <input readonly type="number" name="attr_3perday"/>
Remaining: <input type="number" name="attr_3remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-3">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell3minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell3minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell3minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell3minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 3 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell5minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell5minimize">-</button>
<span>Level 5 Spells</span><br>
Per Day: <input readonly type="number" name="attr_5perday"/>
Remaining: <input type="number" name="attr_5remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-5">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell5minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell5minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell5minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell5minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 5 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell7minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell7minimize">-</button>
<span>Level 7 Spells</span><br>
Per Day: <input readonly type="number" name="attr_7perday"/>
Remaining: <input type="number" name="attr_7remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-7">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell7minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell7minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description">
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell7minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell7minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 7 Spells-->
<div class="Spell-Level">
<input class="sptoggle" type="hidden" name="attr_spell9minimizetoggle" value="1"/>
<div class="Spell-Level-Name"><button type="action" class="Small-Button" name="act_spell9minimize">-</button>
<span>Level 9 Spells</span><br>
Per Day: <input readonly type="number" name="attr_9perday"/>
Remaining: <input type="number" name="attr_9remaining"/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_spells-9">
<div class="minimizable-repeat-spells">
<input type="hidden" class="spells-toggle" name="attr_spell9minimizetoggle" value="1"/>
<div class="spelltitle">
<button type="action" class="Small-Button" name="act_spell9minimize">-</button>
<button style="float:right" type="roll" name="act_rollspellcard" value="@{spellcard}"></button>
<input type="text" name="attr_spellname" placeholder="<Spell Name Here>"/>
<input type="hidden" name="attr_spellcard"/><br>
<span style="float:left; color: #FFFFFF">
Known&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
<span style="float:left; color: #FFFFFF">
&nbsp;&nbsp;Memorized&nbsp;
</span>
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_memorized">
<input style="float:right; width: 40px;" type="text" name="attr_prepared" placeholder="#">
<span style="float:right; color: #FFFFFF">
Number Prepared:&nbsp;
</span>
</div>
<div class="spells_description">
<div class="Details-1">
<div>School: <input type="text" name="attr_school"/></div>
<div>Casting Time: <input type="text" name="attr_castingtime"/></div>
<div>Effect: <input type="text" name="attr_effect"/></div>
<div>Saving Throw:
<select name="attr_spellsaving" value="N/A" class="spellselect">
<option value="No">None</option>
<option value="Ego">Ego</option>
<option value="Fortitude">Fortitude</option>
<option value="Reflex">Reflex</option>
<option value="Will">Will</option>
</select>
</div>
<div>
Type of Spell:
<select style="font-size: 12px" name="attr_category" value="" class="spellselect">
<option value="0">Utility</option>
<option value="Healing">Healing</option>
<option value="Damage">Damage</option>
<option value="Warding">Warding</option>
</select>
</div>
<div>Harmless?<input type="checkbox" name="attr_harmless" value="; harmless"/></div>
</div>
<div class="Details-2">
<div>Components: <input type="text" name="attr_components"/></div>
<div>Range: <input type="text" name="attr_range"/></div>
<div>Duration: <input type="text" name="attr_duration"/></div>
<div>Dice Rolled:<span style="float: right; background: #D0D0D0"><input style="float:none" type="text" name="attr_dicenum" placeholder="#">
<select class="die-select" name="attr_dicetype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select></span></div>
<div>
<div style="float:left">On Success:</div>
<select name="attr_savesucces" class="spellselect">
<option value="">None</option>
<option value="; disbelief">Disbelief</option>
<option value="; half">Half</option>
<option value="; partial">Partial</option>
<option value="; negates">Negates</option>
</select>
</div>
<div>Spell Resistance?<input type="checkbox" name="attr_sr" value="1"/></div>
</div>
<div class="Description" >
<div>Description:<br><textarea name="attr_spelldescription"></textarea></div>
</div>
<div class="Advanced ggrid">
<div class="grr1 row-header"><button type="action" class="Small-Button" name="act_spell9minimizeadvanced">-</button>Advanced</div>
<input type="hidden" class="spells-advanced-toggle" name="attr_spell9minimizeadvancedtoggle" value="1"/>
<div class="grr2 ggridc">
<div class="grc1">
<div>DC Modifier:</div>
</div>
<div class="grc2">
<div><input style="float: none" type="number" class="standard-input" name="attr_spelldcmod"/></div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div> <!--Level 9 Spells-->
</div>
</div>
</div>
<!--</editor-fold>-->
<!--<editor-fold desc="Skill-Sheet">-->
<div class="sheet-skills">
<div class="SkillsPage">
<table>
<tr>
<th colspan="9">Skills</th>
</tr>
<tr>
<td class="titleblock" colspan="4">Unspent Skill Points</td>
<td class="titleblock" colspan="5">Total Skill Points</td>
</tr>
<tr>
<td class="titleblock" colspan="4">
<input title="@{RemainingSkillPoints}" type="number" name="attr_RemainingSkillPoints" readonly/>
</td>
<td class="titleblock" colspan="5">
<input title="@{TotalPossibleSkillPoints}" type="number" name="attr_TotalPossibleSkillPoints" readonly/>
</td>
</tr>
<tr class="skill-desc">
<td>Trained?</td>
<td>Skill Name</td>
<td>Use Untrained?</td>
<td>Key</td>
<td>Roll</td>
<td>Total</td>
<td>Attribute</td>
<td>Skill Points</td>
<td>Misc.</td>
</tr>
<tr class="hoverskill">
<td><input title="@{Acrobatics Trained}" type="checkbox" name="attr_AcrobaticsTrained"/></td>
<td>Acrobatics*</td>
<td>Yes</td>
<td>Str<input type="hidden" name="attr_KeyStr"/></td>
<td><button class="button"
title="Acrobatics"
type="roll"
value="&{template:custom}{{title=Acrobatics}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{AcrobaticsTotal}]]}}"
name="roll_Acrobatics-check"></button></td>
<td><input title="@{AcrobaticsTotal}" type="number" readonly name="attr_AcrobaticsTotal"/></td>
<td><input title="@{strmod}" type="number" readonly name="attr_strmod"/></td>
<td><input title="@{AcrobaticsSP}" type="number" name="attr_AcrobaticsSP"/></td>
<td><input title="@{AcrobaticsMisc}" type="number" name="attr_AcrobaticsMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{BalanceTrained}" type="checkbox" name="attr_BalanceTrained"/></td>
<td>Balance</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="Balance"
type="roll"
value="&{template:custom}{{title=Balance}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{BalanceTotal}]]}}"
name="roll_Balance-check"></button></td>
<td><input title="@{BalanceTotal}" type="number" readonly name="attr_BalanceTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{BalanceSP}" type="number" name="attr_BalanceSP"/></td>
<td><input title="@{BalanceMisc}" type="number" name="attr_BalanceMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{BeguileTrained}" type="checkbox" name="attr_BeguileTrained"/></td>
<td>Beguile</td>
<td>Yes</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Beguile"
type="roll"
value="&{template:custom}{{title=Beguile}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{BeguileTotal}]]}}"
name="roll_Beguile-check"></button></td>
<td><input title="@{BeguileTotal}" type="number" readonly name="attr_BeguileTotal"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{BeguileSP}" type="number" name="attr_BeguileSP"/></td>
<td><input title="@{BeguileMisc}" type="number" name="attr_BeguileMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{BushcraftTrained}" type="checkbox" name="attr_BushcraftTrained"/></td>
<td>Bushcraft</td>
<td>No</td>
<td>Wis<input type="hidden" name="attr_KeyWis"/></td>
<td><button class="button"
title="Bushcraft"
type="roll"
value="&{template:custom}{{title=Bushcraft}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{BushcraftTotal}]]}}"
name="roll_Bushcraft-check"></button></td>
<td><input title="@{BushcraftTotal}" type="number" readonly name="attr_BushcraftTotal"/></td>
<td><input title="@{wismod}" type="number" readonly name="attr_wismod"/></td>
<td><input title="@{BushcraftSP}" type="number" name="attr_BushcraftSP"/></td>
<td><input title="@{BushcraftMisc}" type="number" name="attr_BushcraftMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{ConcealTrained}" type="checkbox" name="attr_ConcealTrained"/></td>
<td>Conceal</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="Conceal"
type="roll"
value="&{template:custom}{{title=Conceal}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{ConcealTotal}]]}}"
name="roll_Conceal-check"></button></td>
<td><input title="@{ConcealTotal}" type="number" readonly name="attr_ConcealTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{ConcealSP}" type="number" name="attr_ConcealSP"/></td>
<td><input title="@{ConcealMisc}" type="number" name="attr_ConcealMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{ConcentrationTrained}" type="checkbox" name="attr_ConcentrationTrained"/></td>
<td>Concentration</td>
<td>Yes</td>
<td>Con<input type="hidden" name="attr_KeyCon"/></td>
<td><button class="button"
title="Concentration"
type="roll"
value="&{template:custom}{{title=Concentration}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{ConcentrationTotal}]]}}"
name="roll_Concentration-check"></button></td>
<td><input title="@{ConcentrationTotal}" type="number" readonly name="attr_ConcentrationTotal"/></td>
<td><input title="@{conmod}" type="number" readonly name="attr_conmod"/></td>
<td><input title="@{ConcentrationSP}" type="number" name="attr_ConcentrationSP"/></td>
<td><input title="@{ConcentrationMisc}" type="number" name="attr_ConcentrationMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{CounterfeitTrained}" type="checkbox" name="attr_CounterfeitTrained"/></td>
<td>Counterfeit</td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Counterfeit"
type="roll"
value="&{template:custom}{{title=Counterfeit}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{CounterfeitTotal}]]}}"
name="roll_Counterfeit-check"></button></td>
<td><input title="@{CounterfeitTotal}" type="number" readonly name="attr_CounterfeitTotal"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{CounterfeitSP}" type="number" name="attr_CounterfeitSP"/></td>
<td><input title="@{CounterfeitMisc}" type="number" name="attr_CounterfeitMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Craft1Trained}" type="checkbox" name="attr_Craft1Trained"/></td>
<td>Craft: <input title="@{Craft1Name}" type="text" name="attr_Craft1Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Craft1"
type="roll"
value="&{template:custom}{{title=Craft: @{Craft1Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Craft1Total}]]}}"
name="roll_Craft1-check"></button></td>
<td><input title="@{Craft1Total}" type="number" readonly name="attr_Craft1Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Craft1SP}" type="number" name="attr_Craft1SP"/></td>
<td><input title="@{Craft1Misc}" type="number" name="attr_Craft1Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Craft2Trained}" type="checkbox" name="attr_Craft2Trained"/></td>
<td>Craft: <input title="@{Craft2Name}" type="text" name="attr_Craft2Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Craft2"
type="roll"
value="&{template:custom}{{title=Craft: @{Craft2Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Craft2Total}]]}}"
name="roll_Craft2-check"></button></td>
<td><input title="@{Craft2Total}" type="number" readonly name="attr_Craft2Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Craft2SP}" type="number" name="attr_Craft2SP"/></td>
<td><input title="@{Craft2Misc}" type="number" name="attr_Craft2Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Craft3Trained}" type="checkbox" name="attr_Craft3Trained"/></td>
<td>Craft: <input title="@{Craft3Name}" type="text" name="attr_Craft3Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Craft3"
type="roll"
value="&{template:custom}{{title=Craft: @{Craft3Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Craft3Total}]]}}"
name="roll_Craft3-check"></button></td>
<td><input title="@{Craft3Total}" type="number" readonly name="attr_Craft3Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Craft3SP}" type="number" name="attr_Craft3SP"/></td>
<td><input title="@{Craft3Misc}" type="number" name="attr_Craft3Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{DiscernIntentTrained}" type="checkbox" name="attr_DiscernIntentTrained"/></td>
<td>Discern Intent</td>
<td>Yes</td>
<td>Wis<input type="hidden" name="attr_KeyWis"/></td>
<td><button class="button"
title="DiscernIntent"
type="roll"
value="&{template:custom}{{title=Discern Intent}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{DiscernIntentTotal}]]}}"
name="roll_DiscernIntent-check"></button></td>
<td><input title="@{DiscernIntentTotal}" type="number" readonly name="attr_DiscernIntentTotal"/></td>
<td><input title="@{wismod}" type="number" readonly name="attr_wismod"/></td>
<td><input title="@{DiscernIntentSP}" type="number" name="attr_DiscernIntentSP"/></td>
<td><input title="@{DiscernIntentMisc}" type="number" name="attr_DiscernIntentMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{DiplomacyTrained}" type="checkbox" name="attr_DiplomacyTrained"/></td>
<td>Diplomacy</td>
<td>Yes</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Diplomacy"
type="roll"
value="&{template:custom}{{title=Diplomacy}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{DiplomacyTotal}]]}}"
name="roll_Diplomacy-check"></button></td>
<td><input title="@{DiplomacyTotal}" type="number" readonly name="attr_DiplomacyTotal"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{DiplomacySP}" type="number" name="attr_DiplomacySP"/></td>
<td><input title="@{DiplomacyMisc}" type="number" name="attr_DiplomacyMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{DisguiseTrained}" type="checkbox" name="attr_DisguiseTrained"/></td>
<td>Disguise</td>
<td>Yes</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Disguise"
type="roll"
value="&{template:custom}{{title=Disguise}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{DisguiseTotal}]]}}"
name="roll_Disguise-check"></button></td>
<td><input title="@{DisguiseTotal}" type="number" readonly name="attr_DisguiseTotal"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{DisguiseSP}" type="number" name="attr_DisguiseSP"/></td>
<td><input title="@{DisguiseMisc}" type="number" name="attr_DisguiseMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{EscapeArtistTrained}" type="checkbox" name="attr_EscapeArtistTrained"/></td>
<td>Escape Artist</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="Escape Artist"
type="roll"
value="&{template:custom}{{title=EscapeArtist}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{EscapeArtistTotal}]]}}"
name="roll_EscapeArtist-check"></button></td>
<td><input title="@{EscapeArtistTotal}" type="number" readonly name="attr_EscapeArtistTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{EscapeArtistSP}" type="number" name="attr_EscapeArtistSP"/></td>
<td><input title="@{EscapeArtistMisc}" type="number" name="attr_EscapeArtistMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{GatherInformationTrained}" type="checkbox" name="attr_GatherInformationTrained"/></td>
<td>Gather Information</td>
<td>Yes</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Gather Information"
type="roll"
value="&{template:custom}{{title=GatherInformation}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{GatherInformationTotal}]]}}"
name="roll_GatherInformation-check"></button></td>
<td><input title="@{GatherInformationTotal}" type="number" readonly name="attr_GatherInformationTotal"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{GatherInformationSP}" type="number" name="attr_GatherInformationSP"/></td>
<td><input title="@{GatherInformationMisc}" type="number" name="attr_GatherInformationMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{HaggleTrained}" type="checkbox" name="attr_HaggleTrained"/></td>
<td>Haggle</td>
<td>Yes</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Haggle"
type="roll"
value="&{template:custom}{{title=Haggle}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{HaggleTotal}]]}}"
name="roll_Haggle-check"></button></td>
<td><input title="@{HattleTotal}" type="number" readonly name="attr_HaggleTotal"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{HaggleSP}" type="number" name="attr_HaggleSP"/></td>
<td><input title="@{HaggleMisc}" type="number" name="attr_HaggleMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{HealTrained}" type="checkbox" name="attr_HealTrained"/></td>
<td>Heal</td>
<td>No</td>
<td>Wis<input type="hidden" name="attr_KeyWis"/></td>
<td><button class="button"
title="Heal"
type="roll"
value="&{template:custom}{{title=Heal}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{HealTotal}]]}}"
name="roll_Heal-check"></button></td>
<td><input title="@{HealTotal}" type="number" readonly name="attr_HealTotal"/></td>
<td><input title="@{wismod}" type="number" readonly name="attr_wismod"/></td>
<td><input title="@{HealSP}" type="number" name="attr_HealSP"/></td>
<td><input title="@{HealMisc}" type="number" name="attr_HealMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input type="checkbox" name="attr_IntimidateTrained"/></td>
<td>Intimidate</td>
<td>Yes</td>
<td>Cha<input title="@{KeyCha}" type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Intimidate"
type="roll"
value="&{template:custom}{{title=Intimidate}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{IntimidateTotal}]]}}"
name="roll_Intimidate-check"></button></td>
<td><input title="@{IntimidateTotal}" type="number" readonly name="attr_IntimidateTotal"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{IntimidateSP}" type="number" name="attr_IntimidateSP"/></td>
<td><input title="@{IntimidateMisc}" type="number" name="attr_IntimidateMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{InvestigateTrained}" type="checkbox" name="attr_InvestigateTrained"/></td>
<td>Investigate</td>
<td>Yes</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Investigate"
type="roll"
value="&{template:custom}{{title=Investigate}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{InvestigateTotal}]]}}"
name="roll_Investigate-check"></button></td>
<td><input title="@{InvestigateTotal}" type="number" readonly name="attr_InvestigateTotal"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{InvestigateSP}" type="number" name="attr_InvestigateSP"/></td>
<td><input title="@{InvestigateMisc}" type="number" name="attr_InvestigateMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Knowledge1Trained}" type="checkbox" name="attr_Knowledge1Trained"/></td>
<td>Knowledge <input title="@{Knowledge1Name}" type="text" name="attr_Knowledge1Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Knowledge1"
type="roll"
value="&{template:custom}{{title=Knowledge: @{Knowledge1Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Knowledge1Total}]]}}"
name="roll_Knowledge1-check"></button></td>
<td><input title="@{Knowledge1Total}" type="number" readonly name="attr_Knowledge1Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Knowledge1SP}" type="number" name="attr_Knowledge1SP"/></td>
<td><input title="@{Knowledge1Misc}" type="number" name="attr_Knowledge1Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Knowledge2Trained}" type="checkbox" name="attr_Knowledge2Trained"/></td>
<td>Knowledge <input title="@{Knowledge2Name}" type="text" name="attr_Knowledge2Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Knowledge2"
type="roll"
value="&{template:custom}{{title=Knowledge: @{Knowledge2Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Knowledge2Total}]]}}"
name="roll_Knowledge2-check"></button></td>
<td><input title="@{Knowledge2Total}" type="number" readonly name="attr_Knowledge2Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Knowledge2SP}" type="number" name="attr_Knowledge2SP"/></td>
<td><input title="@{Knowledge2Misc}" type="number" name="attr_Knowledge2Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Knowledge3Trained}" type="checkbox" name="attr_Knowledge3Trained"/></td>
<td>Knowledge <input title="@{Knowledge3Name}" type="text" name="attr_Knowledge3Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Knowledge3"
type="roll"
value="&{template:custom}{{title=Knowledge: @{Knowledge3Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Knowledge3Total}]]}}"
name="roll_Knowledge3-check"></button></td>
<td><input title="@{Knowledge3Total}" type="number" readonly name="attr_Knowledge3Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Knowledge3SP}" type="number" name="attr_Knowledge3SP"/></td>
<td><input title="@{Knowledge3Misc}" type="number" name="attr_Knowledge3Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Knowledge4Trained}" type="checkbox" name="attr_Knowledge4Trained"/></td>
<td>Knowledge <input title="@{Knowledge4Name}" type="text" name="attr_Knowledge4Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Knowledge4"
type="roll"
value="&{template:custom}{{title=Knowledge: @{Knowledge4Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Knowledge4Total}]]}}"
name="roll_Knowledge4-check"></button></td>
<td><input title="@{Knowledge4Total}" type="number" readonly name="attr_Knowledge4Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Knowledge4SP}" type="number" name="attr_Knowledge4SP"/></td>
<td><input title="@{Knowledge4Misc}" type="number" name="attr_Knowledge4Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Knowledge5Trained}" type="checkbox" name="attr_Knowledge5Trained"/></td>
<td>Knowledge <input title="@{Knowledge5Name}" type="text" name="attr_Knowledge5Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Knowledge5"
type="roll"
value="&{template:custom}{{title=Knowledge: @{Knowledge5Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Knowledge5Total}]]}}"
name="roll_Knowledge5-check"></button></td>
<td><input title="@{Knowledge5Total}" type="number" readonly name="attr_Knowledge5Total"/></td>
<td><input title="@{int}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Knowledge5SP}" type="number" name="attr_Knowledge5SP"/></td>
<td><input title="@{Knowledge5Misc}" type="number" name="attr_Knowledge5Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Knowledge6Trained}" type="checkbox" name="attr_Knowledge6Trained"/></td>
<td>Knowledge <input title="@{Knowledge6Name}" type="text" name="attr_Knowledge6Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Knowledge6"
type="roll"
value="&{template:custom}{{title=Knowledge: @{Knowledge6Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Knowledge6Total}]]}}"
name="roll_Knowledge6-check"></button></td>
<td><input title="@{Knowledge6Total}" type="number" readonly name="attr_Knowledge6Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Knowledge6SP}" type="number" name="attr_Knowledge6SP"/></td>
<td><input title="@{Knowledge6Misc}" type="number" name="attr_Knowledge6Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{ListenTrained}" type="checkbox" name="attr_ListenTrained"/></td>
<td>Listen</td>
<td>Yes</td>
<td>Wis<input type="hidden" name="attr_KeyWis"/></td>
<td><button class="button"
title="Listen"
type="roll"
value="&{template:custom}{{title=Listen}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{ListenTotal}]]}}"
name="roll_Listen-check"></button></td>
<td><input title="@{ListenTotal}" type="number" readonly name="attr_ListenTotal"/></td>
<td><input title="@{wismod}" type="number" readonly name="attr_wismod"/></td>
<td><input title="@{ListenSP}" type="number" name="attr_ListenSP"/></td>
<td><input title="@{ListenMisc}" type="number" name="attr_ListenMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{LockpickingTrained}" type="checkbox" name="attr_LockpickingTrained"/></td>
<td>Lockpicking</td>
<td>No</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="Lockpicking"
type="roll"
value="&{template:custom}{{title=Lockpicking}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{LockpickingTotal}]]}}"
name="roll_Lockpicking-check"></button></td>
<td><input title="@{LockpickingTotal}" type="number" readonly name="attr_LockpickingTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{LockpickingSP}" type="number" name="attr_LockpickingSP"/></td>
<td><input title="@{LockpickingMisc}" type="number" name="attr_LockpickingMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{MoveSilentlyTrained}" type="checkbox" name="attr_MoveSilentlyTrained"/></td>
<td>Move Silently*</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="MoveSilently"
type="roll"
value="&{template:custom}{{title=MoveSilently}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{MoveSilentlyTotal}]]}}"
name="roll_MoveSilently-check"></button></td>
<td><input title="@{MoveSilentlyTotal}" type="number" readonly name="attr_MoveSilentlyTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{MoveSilentlySP}" type="number" name="attr_MoveSilentlySP"/></td>
<td><input title="@{MoveSilentlyMisc}" type="number" name="attr_MoveSilentlyMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Perform1Trained}" type="checkbox" name="attr_Perform1Trained"/></td>
<td>Perform <input title="@{Perform1Name}" type="text" name="attr_Perform1Name"/></td>
<td>No</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Perform1"
type="roll"
value="&{template:custom}{{title=Perform: @{Perform1Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Perform1Total}]]}}"
name="roll_Perform1-check"></button></td>
<td><input title="@{Perform1Total}" type="number" readonly name="attr_Perform1Total"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{Perform1SP}" type="number" name="attr_Perform1SP"/></td>
<td><input title="@{Perform1Misc}" type="number" name="attr_Perform1Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Perform2Trained}" type="checkbox" name="attr_Perform2Trained"/></td>
<td>Perform <input title="@{Perform2Name}" type="text" name="attr_Perform2Name"/></td>
<td>No</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Perform2"
type="roll"
value="&{template:custom}{{title=Perform: @{Perform2Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Perform2Total}]]}}"
name="roll_Perform2-check"></button></td>
<td><input title="@{Perform2Total}" type="number" readonly name="attr_Perform2Total"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{Perform2SP}" type="number" name="attr_Perform2SP"/></td>
<td><input title="@{Perform2Misc}" type="number" name="attr_Perform2Misc"/></td>
<tr class="hoverskill">
<td><input title="@{Perform3Trained}" type="checkbox" name="attr_Perform3Trained"/></td>
<td>Perform <input title="@{Perform3Name}" type="text" name="attr_Perform3Name"/></td>
<td>No</td>
<td>Cha<input type="hidden" name="attr_KeyCha"/></td>
<td><button class="button"
title="Perform3"
type="roll"
value="&{template:custom}{{title=Perform: @{Perform3Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Perform3Total}]]}}"
name="roll_Perform3-check"></button></td>
<td><input title="@{Perform3Total}" type="number" readonly name="attr_Perform3Total"/></td>
<td><input title="@{chamod}" type="number" readonly name="attr_chamod"/></td>
<td><input title="@{Perform3SP}" type="number" name="attr_Perform3SP"/></td>
<td><input title="@{Perform3Misc}" type="number" name="attr_Perform3Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Profession1Trained}" type="checkbox" name="attr_Profession1Trained"/></td>
<td>Profession <input title="@{Profession1Name}" type="text" name="attr_Profession1Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Profession1"
type="roll"
value="&{template:custom}{{title=Profession: @{Profession1Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Profession1Total}]]}}"
name="roll_Profession1-check"></button></td>
<td><input title="@{Profession1Total}" type="number" readonly name="attr_Profession1Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Profession1SP}" type="number" name="attr_Profession1SP"/></td>
<td><input title="@{Profession1Misc}" type="number" name="attr_Profession1Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{Profession2Trained}" type="checkbox" name="attr_Profession2Trained"/></td>
<td>Profession <input title="@{Profession2Name}" type="text" name="attr_Profession2Name"/></td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="Profession2"
type="roll"
value="&{template:custom}{{title=Profession: @{Profession2Name}}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{Profession2Total}]]}}"
name="roll_Profession2-check"></button></td>
<td><input title="@{Profession2Total}" type="number" readonly name="attr_Profession2Total"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{Profession2SP}" type="number" name="attr_Profession2SP"/></td>
<td><input title="@{Profession2Misc}" type="number" name="attr_Profession2Misc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{RideTrained}" type="checkbox" name="attr_RideTrained"/></td>
<td>Ride*</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="Ride"
type="roll"
value="&{template:custom}{{title=Ride}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{RideTotal}]]}}"
name="roll_Ride-check"></button></td>
<td><input title="@{RideTotal}" type="number" readonly name="attr_RideTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{RideSP}" type="number" name="attr_RideSP"/></td>
<td><input title="@{RideMisc}" type="number" name="attr_RideMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{SleightOfHandTrained}" type="checkbox" name="attr_SleightOfHandTrained"/></td>
<td>Sleight Of Hand</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="SleightOfHand"
type="roll"
value="&{template:custom}{{title=SleightOfHand}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{SleightOfHandTotal}]]}}"
name="roll_SleightOfHand-check"></button></td>
<td><input title="@{SleightOfHandTotal}" type="number" readonly name="attr_SleightOfHandTotal"/></td>
<td><input title="@{dexmod}" type="number" readonly name="attr_dexmod"/></td>
<td><input title="@{SleightOfHandSP}" type="number" name="attr_SleightOfHandSP"/></td>
<td><input title="@{SleightOfHandMisc}" type="number" name="attr_SleightOfHandMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{SpotTrained}" type="checkbox" name="attr_SpotTrained"/></td>
<td>Spot</td>
<td>Yes</td>
<td>Wis<input type="hidden" name="attr_KeyWis"/></td>
<td><button class="button"
title="Spot"
type="roll"
value="&{template:custom}{{title=Spot}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{SpotTotal}]]}}"
name="roll_Spot-check"></button></td>
<td><input title="@{SpotTotal}" type="number" readonly name="attr_SpotTotal"/></td>
<td><input title="@{wismod}" type="number" readonly name="attr_wismod"/></td>
<td><input title="@{SpotSP}" type="number" name="attr_SpotSP"/></td>
<td><input title="@{SpotMisc}" type="number" name="attr_SpotMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{SabotageDeviceTrained}" type="checkbox" name="attr_SabotageDeviceTrained"/></td>
<td>SabotageDevice</td>
<td>No</td>
<td>Int<input type="hidden" name="attr_KeyInt"/></td>
<td><button class="button"
title="SabotageDevice"
type="roll"
value="&{template:custom}{{title=SabotageDevice}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{SabotageDeviceTotal}]]}}"
name="roll_SabotageDevice-check"></button></td>
<td><input title="@{SabotageDeviceTotal}" type="number" readonly name="attr_SabotageDeviceTotal"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{SabotageDeviceSP}" type="number" name="attr_SabotageDeviceSP"/></td>
<td><input title="@{SabotageDeviceMisc}" type="number" name="attr_SabotageDeviceMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{SwinTrained}" type="checkbox" name="attr_SwimTrained"/></td>
<td>Swim*</td>
<td>Yes</td>
<td>Str<input type="hidden" name="attr_KeyStr"/></td>
<td><button class="button"
title="Swim"
type="roll"
value="&{template:custom}{{title=Swim}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{SwimTotal}]]}}"
name="roll_Swim-check"></button></td>
<td><input title="@{SwimTotal}" type="number" readonly name="attr_SwimTotal"/></td>
<td><input title="@{strmod}" type="number" readonly name="attr_strmod"/></td>
<td><input title="@{SwimSP}" type="number" name="attr_SwimSP"/></td>
<td><input title="@{SwimMisc}" type="number" name="attr_SwimMisc"/></td>
</tr>
<tr class="hoverskill">
<td><input title="@{UseRopeTrained}" type="checkbox" name="attr_UseRopeTrained"/></td>
<td>Use Rope</td>
<td>Yes</td>
<td>Dex<input type="hidden" name="attr_KeyDex"/></td>
<td><button class="button"
title="UseRope"
type="roll"
value="&{template:custom}{{title=UseRope}}{{subtitle=@{character_name}}}{{Result:= [[1d20+@{UseRopeTotal}]]}}"
name="roll_UseRope-check"></button></td>
<td><input title="@{UseRopeTotal}" type="number" readonly name="attr_UseRopeTotal"/></td>
<td><input title="@{intmod}" type="number" readonly name="attr_intmod"/></td>
<td><input title="@{UseRopeSP}" type="number" name="attr_UseRopeSP"/></td>
<td><input title="@{UseRopeMisc}" type="number" name="attr_UseRopeMisc"/></td>
</tr>
</table>
</div>
</div>
<!--</editor-fold>-->
<!-- <editor-fold desc="Weapons/Armor Tab"-->
<div class="sheet-gear">
<div class="grr1 row-header">Armor/Weapons</div>
<div class="grr2 row-header-dark">Armor, Shield, and Focus</div>
<div class="grr3 ggrid">
<div class="grc1">Armor<br><input class="flex-bordered-input" type="text" name="attr_ArmorName"/></div>
<div class="grc2">Shatter Resistance<br><input type="number" name="attr_ArmorSR"/></div>
<div class="grc3">Hit Points<br><input type="number" name="attr_ArmorHP"/></div>
<div class="grc4">Armor Bonus<br><input type="number" name="attr_ArmorBonus"/></div>
<div class="grc5">AC Dex Limit<br><input type="number" name="attr_DexACLimit"/></div>
<div class="grc6">Skill Penalty<br><input type="number" name="attr_CheckPen"/></div>
</div> <!--Armor-->
<div class ="grr4 ggrid">
<div class="grc1">Shield<br><input class="flex-bordered-input" type="text" name="attr_ShieldName"/></div>
<div class="grc2">Shatter Resistance<br><input type="number" name="attr_ShieldSR"/></div>
<div class="grc3">Hit Points<br><input type="number" name="attr_ShieldHP"/></div>
<div class="grc4">Shield Bonus<br><input type="number" name="attr_Shield"/></div>
<div class="grc5">AC Dex Limit<br><input type="number" name="attr_ShieldDexACLimit"/></div>
<div class="grc6">Skill Penalty<br><input type="number" name="attr_ShieldCheckPen"/></div>
</div> <!--Shield-->
<div class="grr5 ggrid">
<div class="grc1">Focus<br><input class="flex-bordered-input" type="text" name="attr_FocusName"/></div>
<div class="grc2">Shatter Resistance<br><input type="number" name="attr_FocusSR"/></div>
<div class="grc3">Hit Points<br><input type="number" name="attr_FocusHP"/></div>
<div class="grc4">Enhancement<br><input value="0" type="number" name="attr_FocusEnch"/></div>
<div class="grc5">Notes<br><textarea name="attr_FocusNotes"/></div>
</div> <!--Focus-->
<div class="grr6 ggrid row-header"> <!--Weapon Title-->
Weapon(s)<br>
<span style="font-weight: normal; font-size: small">
Hasted&nbsp;<input title="@{haste}" type="checkbox" name="attr_haste" value="1"/>&nbsp;or
Slowed?<input title="@{slow}" type="checkbox" name="attr_slow" value="1"/>
</span>
</div>
<div class="grr7 ggrid"> <!--Weapon Container-->
<div class="grc1"> <!--Left Side Weapons-->
<fieldset class="repeating_weapons1">
<div class="weapon-repeat-box">
<input type="hidden" name="attr_fullattackroll"/>
<div style="margin: 0" class="column-header-dark weapon-column-span">
<button type="action" class="Small-Button" name="act_weaponminimize">-</button>
<input class="weapon-name" type="text" name="attr_weaponname" placeholder="<Weapon Name>"/>
<span style="font-weight: normal; font-size:small">
Full Attack:&nbsp;<button
type="roll"
name="roll_fullattackroll"
value="@{fullattackroll}"></button>
</span>
</div>
<div class="ggrid">
<input type="hidden" class="weapon-toggle" name="attr_weaponminimizetoggle" value="0"/>
<div class="grc1 weapon-shrink">
<div>Attack Modifier:</div>
<div>Feat/Misc Attack:</div>
<div>Enhancement:</div>
<div>Critical Multiplier:</div>
<div>Critical Range:</div>
<div>Extra Critical Dice:</div>
</div>
<div class="grc2 weapon-shrink">
<div>
<select name="attr_weapontohit" value="" class="standard-select">
<option value="@{strmod}">Str</option>
<option value="@{dexmod}">Dex</option>
<option value="@{wismod}">Wis</option>
<option value="@{intmod}">Int</option>
<option value="@{chamod}">Cha</option>
</select>
</div>
<div><input class="standard-input" type="text" name="attr_bonustoattack" value="0"/></div>
<div><input class="standard-input" type="text" name="attr_enhancetoattack" value="0"/></div>
<div><input class="standard-input" type="text" name="attr_weaponcritmod" value=""/></div>
<div>
<input type="text" name="attr_critlow" class="small-input" value="20"/>&nbsp;-
<input type="number" class="small-input" value="20" readonly/>
</div>
<div><input type="text" name="attr_extraenchdicecrit" class="standard-input" value=""/></div>
</div>
<div class="grc3 weapon-shrink">
<div>Damage Modifier:</div>
<div>Damage Die:</div>
<div>Feat Damage:</div>
<div>Imbuement Dice:</div>
<div>Damage Type?</div>
<div>Two Handed?</div>
</div>
<div class="grc4 weapon-shrink">
<div>
<select name="attr_weapontodamage" value="" class="standard-select">
<option value="@{strmod}">Str</option>
<option value="@{dexmod}">Dex</option>
<option value="@{wismod}">Wis</option>
<option value="@{intmod}">Int</option>
<option value="@{chamod}">Cha</option>
</select>
</div>
<div>
<input type="text" name="attr_dnum" class="small-input" placeholder="#"/>
<select class="die-select" name="attr_dtype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select>
<!--<input type="text" name="attr_dtype" class="small-input" placeholder="d#"/>-->
</div>
<div><input type="text" name="attr_bonustodamage" class="standard-input" value="0"/></div>
<div><input type="text" name="attr_enchdamagedice" class="standard-input" value=""/></div>
<div><input type="text" name="attr_weapondamagtype" class="standard-input" value=""/></div>
<div><input type="checkbox" name="attr_twohanded"/></div>
</div>
</div>
<div style="margin: 0;" class="column-header weapon-column-span">
Damage
</div>
<div class="ggridc">
<div class="grr1 ggrid">
<input type="hidden" name="attr_weapondamage"/>
<input type="hidden" name="attr_critweapondamage"/>
<div style="padding-bottom: 3px;" class="grc1 titleblock">Normal Damage:&nbsp;<button
type="roll"
name="roll_weapondamage"
value="@{weapondamage}"
></button></div>
<div style="padding-bottom: 3px;" class="grc2 titleblock">Critical Damage:&nbsp;<button
type="roll"
name="roll_critweapondamage"
value="@{critweapondamage}"
></button></div>
</div>
</div>
<div style="margin:0; border-radius: 0" class="column-header weapon-column-span">
<button type="action" class="Small-Button" name="act_critconfirmminimize">-</button>Critical Confirmation Rolls
</div>
<div class="ggridc">
<div class="grr1 ggrid">
<input type="hidden" name="attr_grandmastervalue"/>
<input type="hidden" class="critconfirm-toggle" name="attr_critconfirmminimizetoggle" value="0"/>
<div class="grc1 crit-shrink">
First Attack:
<button
type="roll"
name="roll_attack1"
value=
"
&{template:custom}{{title=Critical Confirm}}{{subtitle= Attack 1}}{{with a=[[1d20cs>@{critlow}+@{BAB}[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
<div class="grc2 crit-shrink">
Second Attack:
<button
type="roll"
name="roll_attack2"
value=
"
&{template:custom}{{title=Critical Confirm:}}{{subtitle=Attack 2}}{{with a=[[1d20cs>@{critlow}+(@{BAB}-5)[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
<div class="grc3 crit-shrink">
Third Attack:
<button
type="roll"
name="roll_attack3"
value=
"
&{template:custom}{{title=Critical Confirm:}}{{subtitle= Attack 3}}{{with a=[[1d20cs>@{critlow}+(@{BAB}-10)[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
<div class="grc4 crit-shrink">
Fourth Attack:
<button
type="roll"
name="roll_attack4"
value=
"
&{template:custom}{{title=Critical Confirm:}}{{subtitle= Attack 4}}{{with a=[[1d20cs>@{critlow}+(@{BAB}-15)[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
</div>
</div>
<input type="hidden" class="weapon-toggle" name="attr_weaponminimizetoggle" value="0"/>
<div style="margin:0; border-radius: 0" class="column-header-dark weapon-column-span weapon-shrink">
<button type="action" class="Small-Button" name="act_advancedweaponminimize">-</button>Advanced
</div> <!--Advanced Block-->
<div class="ggridc">
<input type="hidden" class="weapon-toggle" name="attr_weaponminimizetoggle" value="0"/>
<div class="grr1 ggrid weapon-shrink">
<input type="hidden" class="advancedweapon-toggle" name="attr_advancedweaponminimizetoggle" value="0"/>
<div class="advancedweapon-shrink column-header" style="grid-column: 1/5;border-radius: 0;font-size: small">Weapon Grand Master Bonus</div>
<div class="grc1 advancedweapon-shrink">
None <input type="radio" name="attr_grandmaster" value="0">
</div>
<div class="grc2 advancedweapon-shrink">
2nd<input type="radio" name="attr_grandmaster" value="2">
</div>
<div class="grc3 advancedweapon-shrink">
3rd<input type="radio" name="attr_grandmaster" value="3">
</div>
<div class="grc4 advancedweapon-shrink">
4th<input type="radio" name="attr_grandmaster" value="4">
</div>
</div>
<div class="grr2 ggrid weapon-shrink advancedAttackButton">
<input type="hidden" class="advancedweapon-toggle" name="attr_advancedweaponminimizetoggle" value="1"/>
<div class="advancedweapon-shrink column-header" style="grid-column: 1/5;border-radius: 0;font-size: small">Advanced Attacks</div>
<input type="hidden" name="attr_twintalon"/>
<div class="grc1 advancedweapon-shrink">
<button
type="roll"
name="roll_twintalon"
value="@{twintalon}">
Twin Talon
</button>
</div>
<div class="grc2 advancedweapon-shrink">
<input type="hidden" name="attr_crackshot"/>
<button
type="roll"
name="roll_crackshot"
value="@{crackshot}">
Crack Shot
</button>
</div>
<div class="grc3 advancedweapon-shrink">
<input type="hidden" name="attr_deadlyassault"/>
<button
type="roll"
name="roll_deadlyassault"
value="@{deadlyassault}">
Deadly Assault
</button>
</div>
<div class="grc4 advancedweapon-shrink">
<input type="hidden" name="attr_focusattack"/>
<button
type="action"
name="act_focusattack"
value="@{focusattack}">
Focus
</button>
</div>
</div>
</div> <!--Advanced Block Grid-->
</div>
</fieldset>
</div> <!--Left Side Weapons-->
<div class="grc2"> <!--Right Side Weapons-->
<fieldset class="repeating_weapons2">
<div class="weapon-repeat-box">
<input type="hidden" name="attr_fullattackroll"/>
<div style="margin: 0" class="column-header-dark weapon-column-span">
<button type="action" class="Small-Button" name="act_weaponminimize">-</button>
<input class="weapon-name" type="text" name="attr_weaponname" placeholder="<Weapon Name>"/>
<span style="font-weight: normal; font-size:small">
Full Attack:&nbsp;<button
type="roll"
name="roll_fullattackroll"
value="@{fullattackroll}"></button>
</span>
</div>
<div class="ggrid">
<input type="hidden" class="weapon-toggle" name="attr_weaponminimizetoggle" value="0"/>
<div class="grc1 weapon-shrink">
<div>Attack Modifier:</div>
<div>Feat/Misc Attack:</div>
<div>Enhancement:</div>
<div>Critical Multiplier:</div>
<div>Critical Range:</div>
<div>Extra Critical Dice:</div>
</div>
<div class="grc2 weapon-shrink">
<div>
<select name="attr_weapontohit" value="" class="standard-select">
<option value="@{strmod}">Str</option>
<option value="@{dexmod}">Dex</option>
<option value="@{wismod}">Wis</option>
<option value="@{intmod}">Int</option>
<option value="@{chamod}">Cha</option>
</select>
</div>
<div><input class="standard-input" type="text" name="attr_bonustoattack" value="0"/></div>
<div><input class="standard-input" type="text" name="attr_enhancetoattack" value="0"/></div>
<div><input class="standard-input" type="text" name="attr_weaponcritmod" value="0"/></div>
<div>
<input type="text" name="attr_critlow" class="small-input" value="20"/>&nbsp;-
<input type="number" class="small-input" value="20" readonly/>
</div>
<div><input type="text" name="attr_extraenchdicecrit" class="standard-input" value=""/></div>
</div>
<div class="grc3 weapon-shrink">
<div>Damage Modifier:</div>
<div>Damage Die:</div>
<div>Feat Damage:</div>
<div>Imbuement Dice:</div>
<div>Damage Type?</div>
<div>Two Handed?</div>
</div>
<div class="grc4 weapon-shrink">
<div>
<select name="attr_weapontodamage" value="" class="standard-select">
<option value="@{strmod}">Str</option>
<option value="@{dexmod}">Dex</option>
<option value="@{wismod}">Wis</option>
<option value="@{intmod}">Int</option>
<option value="@{chamod}">Cha</option>
</select>
</div>
<div>
<input type="text" name="attr_dnum" class="small-input" placeholder="#"/>
<select class="die-select" name="attr_dtype">
<option value="d3">d3</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
</select>
</div>
<div><input type="text" name="attr_bonustodamage" class="standard-input" value="0"/></div>
<div><input type="text" name="attr_enchdamagedice" class="standard-input" value=""/></div>
<div><input type="text" name="attr_weapondamagtype" class="standard-input" value=""/></div>
<div><input type="checkbox" name="attr_twohanded" value=".5"/></div>
</div>
</div>
<div style="margin: 0;" class="column-header weapon-column-span">
Damage
</div>
<div class="ggridc">
<div class="grr1 ggrid">
<input type="hidden" name="attr_weapondamage"/>
<input type="hidden" name="attr_critweapondamage"/>
<div style="padding-bottom: 3px;" class="grc1 titleblock">Normal Damage:&nbsp;<button
type="roll"
name="roll_weapondamage"
value="@{weapondamage}"
></button></div>
<div style="padding-bottom: 3px;" class="grc2 titleblock">Critical Damage:&nbsp;<button
type="roll"
name="roll_critweapondamage"
value="@{critweapondamage}"
></button></div>
</div>
</div>
<div style="margin:0;border-radius: 0" class="column-header weapon-column-span">
<button type="action" class="Small-Button" name="act_critconfirmminimize">-</button>Critical Confirmation Rolls
</div>
<div class="ggridc">
<div class="grr1 ggrid">
<input type="hidden" class="critconfirm-toggle" name="attr_critconfirmminimizetoggle" value="0"/>
<div class="grc1 crit-shrink">
First Attack:
<button
type="roll"
name="roll_attack1"
value=
"
&{template:custom}{{title=Critical Confirm}}{{subtitle= Attack 1}}{{with a=[[1d20cs>@{critlow}+@{BAB}[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
<div class="grc2 crit-shrink">
Second Attack:
<button
type="roll"
name="roll_attack2"
value=
"
&{template:custom}{{title=Critical Confirm:}}{{subtitle=Attack 2}}{{with a=[[1d20cs>@{critlow}+(@{BAB}-5)[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
<div class="grc3 crit-shrink">
Third Attack:
<button
type="roll"
name="roll_attack3"
value=
"
&{template:custom}{{title=Critical Confirm:}}{{subtitle= Attack 3}}{{with a=[[1d20cs>@{critlow}+(@{BAB}-10)[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
<div class="grc4 crit-shrink">
Fourth Attack:
<button
type="roll"
name="roll_attack4"
value=
"
&{template:custom}{{title=Critical Confirm:}}{{subtitle= Attack 4}}{{with a=[[1d20cs>@{critlow}+(@{BAB}-15)[Base Attack]+@{weapontohit}[Key Ability]+@{bonustoattack}[Feats]+@{enhancetoattack}[Enhancement]+(0?{Do you have miscellaneous attack bonus?|0})]] to hit.}}
"
></button>
</div>
</div>
</div>
<input type="hidden" class="weapon-toggle" name="attr_weaponminimizetoggle" value="0"/>
<div style="margin:0; border-radius: 0" class="column-header-dark weapon-column-span weapon-shrink">
<button type="action" class="Small-Button" name="act_advancedweaponminimize">-</button>Advanced
</div> <!--Advanced Block-->
<div class="ggridc">
<input type="hidden" class="weapon-toggle" name="attr_weaponminimizetoggle" value="0"/>
<div class="grr1 ggrid weapon-shrink">
<input type="hidden" class="advancedweapon-toggle" name="attr_advancedweaponminimizetoggle" value="0"/>
<div class="advancedweapon-shrink column-header" style="grid-column: 1/5;border-radius: 0;font-size: small">Weapon Grand Master Bonus</div>
<div class="grc1 advancedweapon-shrink">
None <input type="radio" name="attr_grandmaster" value="0">
</div>
<div class="grc2 advancedweapon-shrink">
2nd<input type="radio" name="attr_grandmaster" value="2">
</div>
<div class="grc3 advancedweapon-shrink">
3rd<input type="radio" name="attr_grandmaster" value="3">
</div>
<div class="grc4 advancedweapon-shrink">
4th<input type="radio" name="attr_grandmaster" value="4">
</div>
</div>
<div class="grr2 ggrid weapon-shrink advancedAttackButton">
<input type="hidden" class="advancedweapon-toggle" name="attr_advancedweaponminimizetoggle" value="1"/>
<div class="advancedweapon-shrink column-header" style="grid-column: 1/5;border-radius: 0;font-size: small">Advanced Attacks</div>
<input type="hidden" name="attr_twintalon"/>
<div class="grc1 advancedweapon-shrink">
<button
type="roll"
name="roll_twintalon"
value="@{twintalon}">
Twin Talon
</button>
</div>
<div class="grc2 advancedweapon-shrink">
<input type="hidden" name="attr_crackshot"/>
<button
type="roll"
name="roll_crackshot"
value="@{crackshot}">
Crack Shot
</button>
</div>
<div class="grc3 advancedweapon-shrink">
<input type="hidden" name="attr_deadlyassault"/>
<button
type="roll"
name="roll_deadlyassault"
value="@{deadlyassault}">
Deadly Assault
</button>
</div>
<div class="grc4 advancedweapon-shrink">
<input type="hidden" name="attr_focusattack"/>
<button
type="action"
name="act_focusattack"
value="@{focusattack}">
Focus
</button>
</div>
</div>
</div> <!--Advanced Block Grid-->
</div>
</fieldset>
</div> <!--Right Side Weapons-->
</div>
</div>
<!--</editor-fold>-->
<!--<editor-fold desc="Accessories">-->
<div class="sheet-accessories">
<div class="accessories-grid">
<div class="HeaderM">
<div><h3>Accessories</h3></div>
</div>
<div class="Column1">
<div><h4>Crown</h4>
<input class="titleinputhidden" type="hidden" name="attr_Crown_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Hat_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Hat_Color.png"/>
<input title="@{Crown}" class="titleinput" type="text" name="attr_Crown" placeholder="(Headband, Helmet, of Phylactery)"/>
<textarea title="@{CrownDesc}" name="attr_CrownDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Face</h4>
<input class="titleinputhidden" type="hidden" name="attr_Face_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Face_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Face_Color.png"/>
<input title="@{Face}" type="text" name="attr_Face" placeholder="(Mask or Goggles)"/>
<textarea title="@{FaceDesc}" name="attr_FaceDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Neck</h4>
<input class="titleinputhidden" type="hidden" name="attr_Neck_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Neck_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Neck_Color.png"/>
<input title="@{Neck}" type="text" name="attr_Neck" placeholder="(Amulet, Brooch, Medallion, Periapt, or Scarab)"/><br>
<textarea title="@{NeckDesc}" name="attr_NeckDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Shoulders</h4>
<input class="titleinputhidden" type="hidden" name="attr_Shoulders_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Shoulders_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Shoulders_Color.png"/>
<input title="@{Shoulders}" type="text" name="attr_Shoulders" placeholder="(Cloak, Cape, or Mantle)"/><br>
<textarea title="@{ShoulderDesc}" name="attr_ShoulderDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Ring 1</h4>
<input class="titleinputhidden" type="hidden" name="attr_Ring1_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Ring1_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Ring1_Color.png"/>
<input title="@{Ring1}" type="text" name="attr_Ring1" placeholder="(Ring)"/><br>
<textarea title="@{Ring1Desc}" name="attr_Ring1Desc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Ring 2</h4>
<input class="titleinputhidden" type="hidden" name="attr_Ring2_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Ring2_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Ring2_Color.png"/>
<input title="@{Ring2}" type="text" name="attr_Ring2" placeholder="(Ring)"/><br>
<textarea name="attr_Ring2Desc" placeholder="Enter details of the magical item here."></textarea>
</div>
</div>
<div class="Column2">
<div><h4>Hands</h4>
<input class="titleinputhidden" type="hidden" name="attr_Hands_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Gloves_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Gloves_Color.png"/>
<input title="@{Hands}" type="text" name="attr_Hands" placeholder="(Gloves or Gauntlets)"/><br>
<textarea title="@{HandsDesc}" name="attr_HandsDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Forearms</h4>
<input class="titleinputhidden" type="hidden" name="attr_Forearms_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Forearm_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Forearm_Color.png"/>
<input title="@{Forearms}" type="text" name="attr_Forearms" placeholder="(Bracers or Bracelets)"/><br>
<textarea title="@{FirearmsDesc}" name="attr_ForearmDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Upper Arms</h4>
<input class="titleinputhidden" type="hidden" name="attr_UpperArms_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/UpperArm_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/UpperArm_Color.png"/>
<input title="@{UpperArms}" type="text" name="attr_UpperArms" placeholder="(Bangle or Phylactery)"/><br>
<textarea title="@{UpperArmDesc}" name="attr_UpperArmDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Torso</h4>
<input class="titleinputhidden" type="hidden" name="attr_Torso_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Chest_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Chest_Color.png"/>
<input title="@{Torso}" type="text" name="attr_Torso" placeholder="(Vest, Vestment, or Shirt)"/><br>
<textarea title="@{TorsoDesc}" name="attr_TorsoDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Waist</h4>
<input class="titleinputhidden" type="hidden" name="attr_Waist_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Belt_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Belt_Color.png"/>
<input title="@{Waist}" type="text" name="attr_Waist" placeholder="(Belt or Girdle)"/><br>
<textarea title="@{BeltDesc}" name="attr_BeltDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
<div><h4>Feet</h4>
<input class="titleinputhidden" type="hidden" name="attr_Feet_hidden" value="">
<img class="shadow" src="https://obj.ttdrpg.com/Boots_Shadow.png"/>
<img class="color" src="https://obj.ttdrpg.com/Boots_Color.png"/>
<input title="@{Feet}" type="text" name="attr_Feet" placeholder="(Boots, Shoes, or Slippers)"/><br>
<textarea title="@{FeetDesc}" name="attr_FeetDesc" placeholder="Enter details of the magical item here."></textarea>
</div>
</div>
</div>
</div>
<!--</editor-fold>-->
<!--<editor-fold desc="Inventory"-->
<div class="sheet-inventory">
<div class="inventory-grid">
<div class="Header-I">
<div>
<h3>Inventory</h3><input style="width:104px" type="hidden" step="any" name="attr_GP"/>
Total Carry Weight:&nbsp;<input title="@{totalweight}" step="any" class="standard-input" name="attr_totalweight" type="text" readonly/>
</div>
</div>
<div class="Column-I">
<div><h4>Items</h4></div>
<div class="bag-grid bags Header-I">
<div style="width: 242px" class="name ">Item Name</div>
<div style="width: 180px" class="location">Location</div>
<div style="width: 64px" class="quantity">Quantity</div>
<div style="width: 64px" class="piece-weight">Unit Weight</div>
<div style="width: 64px" class="total-weight">Total Weight</div>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_maininventory">
<div class="bag-grid bags">
<input class="inventory-location" type="hidden" value="1" name="attr_locationValidation"/>
<div class="name">
<div><textarea name="attr_main-inv-name" placeholder="Item name, description, notes etc..."/></div>
</div>
<div class="location">
<input style="width: 180px;" type="text" name="attr_inventoryLocation" placeholder="Name"
title="Location must match with bag/location name."/>
</div>
<div class="quantity">
<div><input type="number" name="attr_mainquantity"/></div>
</div>
<div class="piece-weight">
<div><input step="any" type="number" name="attr_mainpieceweight"/></div>
</div>
<div class="total-weight">
<div><input step="any" type="text" name="attr_maintotalweight" readonly/></div>
</div>
</div>
</fieldset>
</div>
<div>
<div class="Header-I">Bags and Other Locations</div>
<div class="bag-grid bags" style="grid-template-columns: repeat(auto-fit, minmax(0, 1fr));font-weight: bold">
<div style="width: 1fr" class="name">Include in Carry Weight?</div>
<div style="width: 1fr" class="location">Bag/Location</div>
<div style="width: 1fr" class="quantity">Quantity</div>
<div style="width: 1fr" class="piece-weight">Bag/Location Weight</div>
</div>
<fieldset class="repeating_locationtotals">
<div class="bag-grid bags" style="grid-template-columns: repeat(auto-fit, minmax(0, 1fr));">
<div class="location">
<input style="width: 180px;" type="text" name="attr_inventoryLocationName"
placeholder="Name" title="Location name must be unique."/>
</div>
<div class="name">
<input type="checkbox" value="1" name="attr_locationOnPerson">
</div>
<div class="quantity">
<input type="text" readonly name="attr_locationItemCount"/>
</div>
<div class="piece-weight">
<input step="any" type="text" readonly name="attr_locationTotalWeight">
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<!--</editor-fold>-->
<!--<editor-fold desc="Profit/Loss">-->
<div class="sheet-profitloss">
<div class="row-header">
Profit and Loss Sheet<br>
Total Gold:<input title="TotalGold" step="any" class="standard-input" name="attr_plTotalGold" type="text" readonly/>
</div>
<div class="sheet-repeating-fields">
<fieldset class="repeating_profitloss">
<div class="bag-grid bags">
<div class="name">
<textarea title="Memo" name="attr_plMemo" placeholder="Memo..."></textarea>
</div>
<div class="location">
Debits: <input title="Debits" step="any" type="number" name="attr_plDebits"/>
</div>
<div class="quantity">
Credits: <input title="Credits" step="any" type="number" name="attr_plCredits"/>
</div>
<div class="piece-weight">
Running Total: <input title="Running Total" type="number" name="attr_plRunningTotal" readonly/>
</div>
</div>
</fieldset>
</div>
<div class="row-footer">
Total Gold:<input title="TotalGold" class="standard-input" name="attr_plTotalGold" type="text" readonly/>
</div>
</div>
<!--</editor-fold>-->
<!-- <editor-fold desc="Roll Template" -->
<rolltemplate class="sheet-rolltemplate-custom">
<div class="sheet-container sheet-color-{{color}}">
<div class="sheet-header">
{{#title}}
<div class="sheet-title">{{title}}</div>
{{/title}}
{{#subtitle}}
<div class="sheet-subtitle">{{subtitle}}</div>
{{/subtitle}}
</div>
<div class="sheet-content">
{{#allprops() title subtitle desc color}}
<div class="sheet-key">{{key}}</div>
<div class="sheet-value">{{value}}</div>
{{/allprops() title subtitle desc color}}
{{#desc}}
<div class="sheet-desc">{{desc}}</div>
{{/desc}}
</div>
</div>
</rolltemplate>
<!-- </editor-fold -->
<!--<editor-fold desc="Java Script">-->
<!--type="text/worker"-->
<script>
<!--<script type="text/worker">-->
// <editor-fold desc="General Purpose Things">
var getSectionIDsOrdered = function (sectionName, callback) {
'use strict';
getAttrs([`_reporder_${sectionName}`], function (v) {
getSectionIDs(sectionName, function (idArray) {
let reporderArray = v[`_reporder_${sectionName}`] ? v[`_reporder_${sectionName}`].toLowerCase().split(',') : [],
ids = [...new Set(reporderArray.filter(x => idArray.includes(x)).concat(idArray))];
callback(ids);
});
});
};
// </editor-fold>
//<editor-fold desc="Inventory Calculations">
// Main Inventory Location Total Weight
on("change:repeating_maininventory change:repeating_locationtotals remove:repeating_maininventory", function(){
getSectionIDs(`repeating_locationtotals`,function(locationArray) {
getSectionIDs(`repeating_maininventory`, function (inventoryArray) {
let AttrsToGet = [];
let attrsToSet = {};
for (let arrayID of inventoryArray) {
AttrsToGet.push(`repeating_maininventory_${arrayID}_maintotalweight`);
AttrsToGet.push(`repeating_maininventory_${arrayID}_inventoryLocation`);
AttrsToGet.push(`repeating_maininventory_${arrayID}_mainquantity`);
}
for (let arrayID of locationArray) {
AttrsToGet.push(`repeating_locationtotals_${arrayID}_inventoryLocationName`);
// setting these to zero, so we can just add any weights later
attrsToSet[`repeating_locationtotals_${arrayID}_locationTotalWeight`] = 0;
attrsToSet[`repeating_locationtotals_${arrayID}_locationItemCount`] = 0;
}
getAttrs(AttrsToGet, function (values) {
let location_names = {};
for (let arrayID of locationArray){
// The assumption is that bag names will be unique, if they're not the last one will take precedence
location_names[values[`repeating_locationtotals_${arrayID}_inventoryLocationName`].toLowerCase()] =
`repeating_locationtotals_${arrayID}`;
}
for (let arrayID of inventoryArray) {
let item_weight = parseFloat(values[`repeating_maininventory_${arrayID}_maintotalweight`]);
let item_location = values[`repeating_maininventory_${arrayID}_inventoryLocation`];
let item_quantity = parseInt(values[`repeating_maininventory_${arrayID}_mainquantity`]);
if (item_location.toLowerCase() in location_names) {
attrsToSet[location_names[item_location.toLowerCase()]+"_locationTotalWeight"] += item_weight;
attrsToSet[location_names[item_location.toLowerCase()]+"_locationItemCount"] += item_quantity;
attrsToSet[`repeating_maininventory_${arrayID}_locationValidation`] = 1;
} else {
attrsToSet[`repeating_maininventory_${arrayID}_locationValidation`] = 0;
}
}
setAttrs(attrsToSet);
});
});
});
});
// On Person Total Weight
on("change:repeating_locationtotals remove:repeating_locationtotals", function(){
getSectionIDs(`repeating_locationtotals`,function(locationArray) {
let AttrsToGet = [];
for (let arrayID of locationArray) {
AttrsToGet.push(`repeating_locationtotals_${arrayID}_locationTotalWeight`);
AttrsToGet.push(`repeating_locationtotals_${arrayID}_locationOnPerson`);
}
getAttrs(AttrsToGet, function (values) {
let total = 0;
for (let arrayID of locationArray){
total += Math.round((values[`repeating_locationtotals_${arrayID}_locationTotalWeight`] *
values[`repeating_locationtotals_${arrayID}_locationOnPerson`])*100)/100
}
setAttrs({
totalweight: total
});
});
});
});
on("change:repeating_maininventory:mainquantity " +
"change:repeating_maininventory:mainpieceweight", function(){
getAttrs(["repeating_maininventory_mainquantity",
"repeating_maininventory_mainpieceweight"], function(values){
let quantity = parseFloat(values.repeating_maininventory_mainquantity)||0;
let weight = parseFloat(values.repeating_maininventory_mainpieceweight)||0;
let total = Math.round((quantity * weight)*100)/100;
setAttrs({
repeating_maininventory_maintotalweight : total
});
});
})
//</editor-fold>
// <editor-fold desc="Profit/Loss">
on("change:_reporder:profitloss change:repeating_profitloss:plcredits " +
"change:repeating_profitloss:pldebits remove:repeating_profitloss", function(){
getSectionIDsOrdered(`repeating_profitloss`,function(plArray) {
let AttrsToGet = [];
let AttrsToSet = {"plTotalGold": 0};
for (let arrayID of plArray) {
AttrsToGet.push(`repeating_profitloss_${arrayID}_plDebits`);
AttrsToGet.push(`repeating_profitloss_${arrayID}_plCredits`);
}
getAttrs(AttrsToGet, function (values) {
for (let arrayID of plArray){
AttrsToSet["plTotalGold"] += parseFloat(values[`repeating_profitloss_${arrayID}_plCredits`])||0
- parseFloat(values[`repeating_profitloss_${arrayID}_plDebits`])||0;
AttrsToSet[`repeating_profitloss_${arrayID}_plRunningTotal`] = AttrsToSet["plTotalGold"];
}
setAttrs(AttrsToSet);
});
});
});
// </editor-fold>
//<editor-fold desc="Base Attack and Size Calculations">
on("change:size sheet:opened",function(){
getAttrs(["size"], function(values){
let size = 0;
if (values.size === "Sub Tiny") {
size = -8;
}if (values.size === "Tiny") {
size = -4;
}if (values.size === "Very Small") {
size = -2;
}if (values.size === "Small") {
size = -1;
}if (values.size === "Medium") {
size = 0;
}if (values.size === "Large") {
size = 1;
}if (values.size === "Very Large") {
size = 2;
}if (values.size === "Gargantuan") {
size = 4;
}if (values.size === "Super Gargantuan") {
size = 8;
}
setAttrs({
SizeMod: size
});
});
});
on("change:hd change:strmod change:dexmod change:attackcurve sheet:opened", function(){
getAttrs(["HD","AttackCurve"],function(values){
let HD = parseFloat(values.HD)||0;
let BAB = HD;
if(values.AttackCurve === "Medium"){
BAB = Math.floor(HD * .75);
}if(values.AttackCurve === "Low"){
BAB = Math.floor(HD * .5);
}
setAttrs({
BAB: BAB
});
});
});
//</editor-fold>
// <editor-fold desc="Advanced Combat Maneuvers">
on("change:hd change:dexmod change:magictouchattackmisc change:spellprof" +
" change:focusench change:magictouchattacktemp change:magictouchattackfeat" +
" sheet:opened",function(){
getAttrs(["BAB","dexmod","MagicTouchAttackMisc","SpellProf","FocusEnch"
,"MagicTouchAttackTemp", "MagicTouchAttackFeat"],function(values){
let BAB = parseFloat(values.BAB)||0;
let Dex = parseFloat(values.dexmod)||0;
let Misc = parseFloat(values.MagicTouchAttackMisc)||0;
let SpellProf = parseFloat(values.SpellProf)||0;
let FocusEnch = parseFloat(values.FocusEnch)||0;
let Temp = parseFloat(values.MagicTouchAttackTemp)||0;
let Feat = parseFloat(values.MagicTouchAttackFeat)||0;
let total = BAB + Dex + Misc + SpellProf + FocusEnch + Temp + Feat;
setAttrs({
MagicTouchAttack: total
});
});
});
on("change:hd change:dexmod change:martialtouchattackmisc " +
"change:martialtouchattacktemp change:martialtouchattackfeat" +
" sheet:opened change:strmod",function(){
getAttrs(["BAB","dexmod","MartialTouchAttackMisc","strmod",
"MartialTouchAttackTemp", "MartialTouchAttackFeat"],function(values){
let BAB = parseFloat(values.BAB)||0;
let Dex = parseFloat(values.dexmod)||0;
let Str = parseFloat(values.strmod)||0;
let Misc = parseFloat(values.MartialTouchAttackMisc)||0;
let Temp = parseFloat(values.MartialTouchAttackTemp)||0;
let Feat = parseFloat(values.MartialTouchAttackFeat)||0;
let total = BAB + Math.max(Dex,Str) + Misc + Temp + Feat;
setAttrs({
MartialTouchAttack: total
});
});
});
on("change:strmod change:dexmod change:tripopposedmisc change:tripopposedfeat " +
"change:tripopposedtemp change:sizemod sheet:opened",function(){
getAttrs(["strmod","TripOpposedMisc","TripOpposedFeat","TripOpposedTemp","SizeMod"],function (values){
let Str = parseFloat(values.strmod)||0;
let Misc = parseFloat(values.TripOpposedMisc)||0;
let Feat = parseFloat(values.TripOpposedFeat)||0;
let Temp = parseFloat(values.TripOpposedTemp)||0;
let Size = parseFloat(values.SizeMod)||0;
let total = Str + Misc + Feat + Temp + Size;
setAttrs({
TripOpposed: total
});
});
});
on("change:strmod change:dexmod change:shoveopposedmisc change:shoveopposedfeat " +
"change:shoveopposedtemp change:sizemod sheet:opened",function(){
getAttrs(["strmod","dexmod","ShoveOpposedMisc","ShoveOpposedFeat","ShoveOpposedTemp","SizeMod"],function (values){
let Str = parseFloat(values.strmod)||0;
let Dex = parseFloat(values.dexmod)||0;
let Misc = parseFloat(values.ShoveOpposedMisc)||0;
let Feat = parseFloat(values.ShoveOpposedFeat)||0;
let Temp = parseFloat(values.ShoveOpposedTemp)||0;
let Size = parseFloat(values.SizeMod)||0;
let total = Math.max(Str,Dex) + Misc + Feat + Temp + Size;
setAttrs({
ShoveOpposed: total
});
});
});
on("change:hd change:bab change:sizemod change:strmod change:grapplemisc change:grapplefeat " +
"change:grappletemp change:attackcurve sheet:opened",function() {
getAttrs(["BAB", "SizeMod", "GrappleMisc","strmod","GrappleTemp","GrappleFeat"], function (values) {
let BAB = parseFloat(values.BAB) || 0;
let Str = parseFloat(values.strmod) || 0;
let Misc = parseFloat(values.GrappleMisc) || 0;
let Temp = parseFloat(values.GrappleTemp) || 0;
let Feat = parseFloat(values.GrappleFeat) || 0;
let size =parseFloat(values.SizeMod) || 0;
let total = BAB + Misc + Feat + Temp + size + Str;
setAttrs({
Grapple: total
});
});
});
on("change:strmod change:dexmod change:trampleopposedmisc change:trampleopposedfeat " +
"change:trampleopposedtemp change:sizemod sheet:opened",function(){
getAttrs(["strmod","dexmod","TrampleOpposedMisc","TrampleOpposedFeat","TrampleOpposedTemp","SizeMod"],function (values){
let Str = parseFloat(values.strmod)||0;
let Dex = parseFloat(values.dexmod)||0;
let Misc = parseFloat(values.TrampleOpposedMisc)||0;
let Feat = parseFloat(values.TrampleOpposedFeat)||0;
let Temp = parseFloat(values.TrampleOpposedTemp)||0;
let Size = parseFloat(values.SizeMod)||0;
let total = Math.max(Str,Dex) + Misc + Feat + Temp + Size;
setAttrs({
TrampleOpposed: total
});
});
});
//</editor-fold>
//<editor-fold desc="Wound DC Calc"">
on("change:conmod change:hd sheet:opened",function(){
getAttrs(["HD","conmod"],function(values){
let HD = parseFloat(values.HD)||0;
let Con = parseFloat(values.conmod)||0;
let WoundDC = 12 + HD - Con;
setAttrs({
WoundDC: WoundDC
});
});
});
//</editor-fold>
//<editor-fold desc="Skill Mess">
//Max Skill Points per HD
var skill_cap_calc = function(hitdie, trained){
if(trained === "0"){
return Math.floor((hitdie + 3)/2);
}
return hitdie + 3;
}
//<editor-fold desc="Skill Point Totaler">
var checkmaxskillpoints = function() {
getAttrs([
"AcrobaticsSP",
"BalanceSP",
"BeguileSP",
"BushcraftSP",
"ConcealSP",
"ConcentrationSP",
"CounterfeitSP",
"Craft1SP",
"Craft2SP",
"Craft3SP",
"DiscernIntentSP",
"DiplomacySP",
"DisguiseSP",
"EscapeArtistSP",
"GatherInformationSP",
"HaggleSP",
"HealSP",
"IntimidateSP",
"InvestigateSP",
"Knowledge1SP",
"Knowledge2SP",
"Knowledge3SP",
"Knowledge4SP",
"Knowledge5SP",
"Knowledge6SP",
"ListenSP",
"LockpickingSP",
"MoveSilentlySP",
"Perform1SP",
"Perform2SP",
"Perform3SP",
"Profession1SP",
"Profession2SP",
"RideSP",
"SleightOfHandSP",
"SpotSP",
"SabotageDeviceSP",
"SwimSP",
"UseRopeSP",
"NatIntMod",
"BaseSkillGrowth",
"HD"], function (values) {
let CurrentSkillPoints = parseFloat(values.AcrobaticsSP
) + parseFloat(values.BalanceSP
) + parseFloat(values.BeguileSP
) + parseFloat(values.BushcraftSP
) + parseFloat(values.ConcealSP
) + parseFloat(values.ConcentrationSP
) + parseFloat(values.CounterfeitSP
) + parseFloat(values.Craft1SP
) + parseFloat(values.Craft2SP
) + parseFloat(values.Craft3SP
) + parseFloat(values.DiscernIntentSP
) + parseFloat(values.DiplomacySP
) + parseFloat(values.DisguiseSP
) + parseFloat(values.EscapeArtistSP
) + parseFloat(values.GatherInformationSP
) + parseFloat(values.HaggleSP
) + parseFloat(values.HealSP
) + parseFloat(values.IntimidateSP
) + parseFloat(values.InvestigateSP
) + parseFloat(values.Knowledge1SP
) + parseFloat(values.Knowledge2SP
) + parseFloat(values.Knowledge3SP
) + parseFloat(values.Knowledge4SP
) + parseFloat(values.Knowledge5SP
) + parseFloat(values.Knowledge6SP
) + parseFloat(values.ListenSP
) + parseFloat(values.LockpickingSP
) + parseFloat(values.MoveSilentlySP
) + parseFloat(values.Perform1SP
) + parseFloat(values.Perform2SP
) + parseFloat(values.Perform3SP
) + parseFloat(values.Profession1SP
) + parseFloat(values.Profession2SP
) + parseFloat(values.RideSP
) + parseFloat(values.SleightOfHandSP
) + parseFloat(values.SpotSP
) + parseFloat(values.SabotageDeviceSP
) + parseFloat(values.SwimSP
) + parseFloat(values.UseRopeSP);
let MaxSkillPoints = ((parseFloat(values.HD) || 0) + 3) * ((parseFloat(values.NatIntMod) || 0) +
(parseFloat(values.BaseSkillGrowth) || 0));
setAttrs({
TotalPossibleSkillPoints: MaxSkillPoints,
RemainingSkillPoints: MaxSkillPoints - CurrentSkillPoints
});
});
}
//</editor-fold>
on("change:intelligence change:intbonus change:intench change:intpen sheet:opened " +
"change:versatile change:specialty change:magiccurve change:attackcurve change:hd change:intmod",function(){
getAttrs(["Specialty","AttackCurve","Versatile"],function(values){
let attack = 2;
let specialty = 0;
let versatile = 0;
if(values.AttackCurve === "Medium"){
attack = 4;
}if(values.Specialty === "Specialist"){
specialty = 4;
}if(values.Specialty === "Generalist"){
specialty = 2;
}
if(values.Versatile === "on"){
versatile = 1;
}
setAttrs({
BaseSkillGrowth: attack + specialty + versatile,
});
});
});
on("change:intelligence change:intbonus change:intench change:intpen change:baseskillgrowth sheet:opened " +
"change:versatile change:specialty change:magiccurve change:attackcurve change:hd change:intmod", function() {
getAttrs(["intelligence", "IntBonus", "IntPen","BaseSkillGrowth"], function(values) {
let SkillGrowth = parseFloat(values.BaseSkillGrowth)||0;
let base = parseFloat(values.intelligence)||0;
let bonus = parseFloat(values.IntBonus)||0;
let penalty = parseFloat(values.IntPen)||0;
let total = base + bonus - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
NatIntMod: mod,
SkillsKnown: mod + SkillGrowth + 4
}, checkmaxskillpoints);
});
});
on("change:acrobaticssp change:acrobaticsmisc change:strmod change:checkpen change:shieldcheckpen sheet:opened",function(){
getAttrs(["AcrobaticsSP","AcrobaticsMisc","strmod","HD","AcrobaticsTrained","CheckPen","ShieldCheckPen"],function(values){
let SP = parseFloat(values.AcrobaticsSP)||0;
let misc = parseFloat(values.AcrobaticsMisc)||0;
let key = parseFloat(values.strmod)||0;
let HD = parseFloat(values.HD)||0;
let CheckPen = parseFloat(values.CheckPen)||0;
CheckPen = CheckPen + (parseFloat(values.ShieldCheckPen)||0);
setAttrs({
AcrobaticsTotal: Math.min(skill_cap_calc(HD,values.AcrobaticsTrained),SP) + key + misc - CheckPen,
AcrobaticsSP: Math.min(skill_cap_calc(HD,values.AcrobaticsTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:balancesp change:balancemisc change:dexmod sheet:opened",function(){
getAttrs(["BalanceSP","BalanceMisc","dexmod","HD","BalanceTrained"],function(values){
let SP = parseFloat(values.BalanceSP)||0;
let misc = parseFloat(values.BalanceMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
BalanceTotal: Math.min(skill_cap_calc(HD,values.BalanceTrained),SP) + key + misc,
BalanceSP: Math.min(skill_cap_calc(HD,values.BalanceTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:beguilesp change:beguilemisc change:chamod sheet:opened",function(){
getAttrs(["BeguileSP","BeguileMisc","chamod","HD","BeguileTrained"],function(values){
let SP = parseFloat(values.BeguileSP)||0;
let misc = parseFloat(values.BeguileMisc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
BeguileTotal: Math.min(skill_cap_calc(HD,values.BeguileTrained),SP) + key + misc,
BeguileSP: Math.min(skill_cap_calc(HD,values.BeguileTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:bushcraftsp change:bushcraftmisc change:wismod sheet:opened",function(){
getAttrs(["BushcraftSP","BushcraftMisc","wismod","HD","BushcraftTrained"],function(values){
let SP = parseFloat(values.BushcraftSP)||0;
let misc = parseFloat(values.BushcraftMisc)||0;
let key = parseFloat(values.wismod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
BushcraftTotal: Math.min(skill_cap_calc(HD,values.BushcraftTrained),SP) + key + misc,
BushcraftSP: Math.min(skill_cap_calc(HD,values.BushcraftTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:concealsp change:concealmisc change:dexmod sheet:opened",function(){
getAttrs(["ConcealSP","ConcealMisc","dexmod","HD","ConcealTrained"],function(values){
let SP = parseFloat(values.ConcealSP)||0;
let misc = parseFloat(values.ConcealMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
ConcealTotal: Math.min(skill_cap_calc(HD,values.ConcealTrained),SP) + key + misc,
ConcealSP: Math.min(skill_cap_calc(HD,values.ConcealTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:concentrationsp change:concentrationmisc change:conmod sheet:opened",function(){
getAttrs(["ConcentrationSP","ConcentrationMisc","conmod","HD","ConcentrationTrained"],function(values){
let SP = parseFloat(values.ConcentrationSP)||0;
let misc = parseFloat(values.ConcentrationMisc)||0;
let key = parseFloat(values.conmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
ConcentrationTotal: Math.min(skill_cap_calc(HD,values.ConcentrationTrained),SP) + key + misc,
ConcentrationSP: Math.min(skill_cap_calc(HD,values.ConcentrationTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:counterfeitsp change:counterfeitmisc change:intmod sheet:opened",function(){
getAttrs(["CounterfeitSP","CounterfeitMisc","intmod","HD","CounterfeitTrained"],function(values){
let SP = parseFloat(values.CounterfeitSP)||0;
let misc = parseFloat(values.CounterfeitMisc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
CounterfeitTotal: Math.min(skill_cap_calc(HD,values.CounterfeitTrained),SP) + key + misc,
CounterfeitSP: Math.min(skill_cap_calc(HD,values.CounterfeitTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:craft1sp change:craft1misc change:intmod sheet:opened",function(){
getAttrs(["Craft1SP","Craft1Misc","intmod","HD","Craft1Trained"],function(values){
let SP = parseFloat(values.Craft1SP)||0;
let misc = parseFloat(values.Craft1Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Craft1Total: Math.min(skill_cap_calc(HD,values.Craft1Trained),SP) + key + misc,
Craft1SP: Math.min(skill_cap_calc(HD,values.Craft1Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:craft2sp change:craft2misc change:intmod sheet:opened",function(){
getAttrs(["Craft2SP","Craft2Misc","intmod","HD","Craft2Trained"],function(values){
let SP = parseFloat(values.Craft2SP)||0;
let misc = parseFloat(values.Craft2Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Craft2Total: Math.min(skill_cap_calc(HD,values.Craft2Trained),SP) + key + misc,
Craft2SP: Math.min(skill_cap_calc(HD,values.Craft2Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:craft3sp change:craft3misc change:intmod sheet:opened",function(){
getAttrs(["Craft3SP","Craft3Misc","intmod","HD","Craft3Trained"],function(values){
let SP = parseFloat(values.Craft3SP)||0;
let misc = parseFloat(values.Craft3Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Craft3Total: Math.min(skill_cap_calc(HD,values.Craft3Trained),SP) + key + misc,
Craft3SP: Math.min(skill_cap_calc(HD,values.Craft3Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:discernintentsp change:discernintentmisc change:wismod sheet:opened",function(){
getAttrs(["DiscernIntentSP","DiscernIntentMisc","wismod","HD","DiscernIntentTrained"],function(values){
let SP = parseFloat(values.DiscernIntentSP)||0;
let misc = parseFloat(values.DiscernIntentMisc)||0;
let key = parseFloat(values.wismod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
DiscernIntentTotal: Math.min(skill_cap_calc(HD,values.DiscernTrained),SP) + key + misc,
DiscernIntentSP: Math.min(skill_cap_calc(HD,values.DiscernTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:diplomacysp change:diplomacymisc change:chamod sheet:opened",function(){
getAttrs(["DiplomacySP","DiplomacyMisc","chamod","HD","DiplomacyTrained"],function(values){
let SP = parseFloat(values.DiplomacySP)||0;
let misc = parseFloat(values.DiplomacyMisc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
DiplomacyTotal: Math.min(skill_cap_calc(HD,values.DiplomacyTrained),SP) + key + misc,
DiplomacySP: Math.min(skill_cap_calc(HD,values.DiplomacyTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:disguisesp change:disguisemisc change:chamod sheet:opened",function(){
getAttrs(["DisguiseSP","DisguiseMisc","chamod","HD","DisguiseTrained"],function(values){
let SP = parseFloat(values.DisguiseSP)||0;
let misc = parseFloat(values.DisguiseMisc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
DisguiseTotal: Math.min(skill_cap_calc(HD,values.DisguiseTrained),SP) + key + misc,
DisguiseSP: Math.min(skill_cap_calc(HD,values.DisguiseTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:escapeartistsp change:escapeartistmisc change:dexmod sheet:opened",function(){
getAttrs(["EscapeArtistSP","EscapeArtistMisc","dexmod","HD","EscapeArtistTrained"],function(values){
let SP = parseFloat(values.EscapeArtistSP)||0;
let misc = parseFloat(values.EscapeArtistMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
EscapeArtistTotal: Math.min(skill_cap_calc(HD,values.EscapeArtistTrained),SP) + key + misc,
EscapeArtistSP: Math.min(skill_cap_calc(HD,values.EscapeArtistTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:gatherinformationsp change:gatherinformationmisc change:chamod sheet:opened",function(){
getAttrs(["GatherInformationSP","GatherInformationMisc","chamod","HD","GatherInformationTrained"],function(values){
let SP = parseFloat(values.GatherInformationSP)||0;
let misc = parseFloat(values.GatherInformationMisc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
GatherInformationTotal: Math.min(skill_cap_calc(HD,values.GatherInformationTrained),SP) + key + misc,
GatherInformationSP: Math.min(skill_cap_calc(HD,values.GatherInformationTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:hagglesp change:hagglemisc change:chamod sheet:opened",function(){
getAttrs(["HaggleSP","HaggleMisc","chamod","HD","HaggleTrained"],function(values){
let SP = parseFloat(values.HaggleSP)||0;
let misc = parseFloat(values.HaggleMisc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
HaggleTotal: Math.min(skill_cap_calc(HD,values.HaggleTrained),SP) + key + misc,
HaggleSP: Math.min(skill_cap_calc(HD,values.HaggleTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:healsp change:healmisc change:wismod sheet:opened",function(){
getAttrs(["HealSP","HealMisc","wismod","HD","HealTrained"],function(values){
let SP = parseFloat(values.HealSP)||0;
let misc = parseFloat(values.HealMisc)||0;
let key = parseFloat(values.wismod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
HealTotal: Math.min(skill_cap_calc(HD,values.HealTrained),SP) + key + misc,
HealSP: Math.min(skill_cap_calc(HD,values.HealTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:intimidatesp change:intimidatemisc change:chamod sheet:opened",function(){
getAttrs(["IntimidateSP","IntimidateMisc","chamod","HD","IntimidateTrained"],function(values){
let SP = parseFloat(values.IntimidateSP)||0;
let misc = parseFloat(values.IntimidateMisc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
IntimidateTotal: Math.min(skill_cap_calc(HD,values.IntimidateTrained),SP) + key + misc,
IntimidateSP: Math.min(skill_cap_calc(HD,values.IntimidateTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:investigatesp change:investigatemisc change:intmod sheet:opened",function(){
getAttrs(["InvestigateSP","InvestigateMisc","intmod","HD","InvestigateTrained"],function(values){
let SP = parseFloat(values.InvestigateSP)||0;
let misc = parseFloat(values.InvestigateMisc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
InvestigateTotal: Math.min(skill_cap_calc(HD,values.InvestigateTrained),SP) + key + misc,
InvestigateSP: Math.min(skill_cap_calc(HD,values.InvestigateTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:knowledge1sp change:knowledge1misc change:intmod sheet:opened",function(){
getAttrs(["Knowledge1SP","Knowledge1Misc","intmod","HD","Knowledge1Trained"],function(values){
let SP = parseFloat(values.Knowledge1SP)||0;
let misc = parseFloat(values.Knowledge1Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Knowledge1Total: Math.min(skill_cap_calc(HD,values.Knowledge1Trained),SP) + key + misc,
Knowledge1SP: Math.min(skill_cap_calc(HD,values.Knowledge1Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:knowledge2sp change:knowledge2misc change:intmod sheet:opened",function(){
getAttrs(["Knowledge2SP","Knowledge2Misc","intmod","HD","Knowledge2Trained"],function(values){
let SP = parseFloat(values.Knowledge2SP)||0;
let misc = parseFloat(values.Knowledge2Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Knowledge2Total: Math.min(skill_cap_calc(HD,values.Knowledge2Trained),SP) + key + misc,
Knowledge2SP: Math.min(skill_cap_calc(HD,values.Knowledge2Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:knowledge3sp change:knowledge3misc change:intmod sheet:opened",function(){
getAttrs(["Knowledge3SP","Knowledge3Misc","intmod","HD","Knowledge3Trained"],function(values){
let SP = parseFloat(values.Knowledge3SP)||0;
let misc = parseFloat(values.Knowledge3Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Knowledge3Total: Math.min(skill_cap_calc(HD,values.Knowledge3Trained),SP) + key + misc,
Knowledge3SP: Math.min(skill_cap_calc(HD,values.Knowledge3Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:knowledge4sp change:knowledge4misc change:intmod sheet:opened",function(){
getAttrs(["Knowledge4SP","Knowledge4Misc","intmod","HD","Knowledge4Trained"],function(values){
let SP = parseFloat(values.Knowledge4SP)||0;
let misc = parseFloat(values.Knowledge4Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Knowledge4Total: Math.min(skill_cap_calc(HD,values.Knowledge4Trained),SP) + key + misc,
Knowledge4SP: Math.min(skill_cap_calc(HD,values.Knowledge4Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:knowledge5sp change:knowledge5misc change:intmod sheet:opened",function(){
getAttrs(["Knowledge5SP","Knowledge5Misc","intmod","HD","Knowledge5Trained"],function(values){
let SP = parseFloat(values.Knowledge5SP)||0;
let misc = parseFloat(values.Knowledge5Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Knowledge5Total: Math.min(skill_cap_calc(HD,values.Knowledge5Trained),SP) + key + misc,
Knowledge5SP: Math.min(skill_cap_calc(HD,values.Knowledge5Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:knowledge6sp change:knowledge6misc change:intmod sheet:opened",function(){
getAttrs(["Knowledge6SP","Knowledge6Misc","intmod","HD","Knowledge6Trained"],function(values){
let SP = parseFloat(values.Knowledge6SP)||0;
let misc = parseFloat(values.Knowledge6Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Knowledge6Total: Math.min(skill_cap_calc(HD,values.Knowledge6Trained),SP) + key + misc,
Knowledge6SP: Math.min(skill_cap_calc(HD,values.Knowledge6Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:listensp change:listenmisc change:wismod sheet:opened",function(){
getAttrs(["ListenSP","ListenMisc","wismod","HD","ListenTrained"],function(values){
let SP = parseFloat(values.ListenSP)||0;
let misc = parseFloat(values.ListenMisc)||0;
let key = parseFloat(values.wismod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
ListenTotal: Math.min(skill_cap_calc(HD,values.ListenTrained),SP) + key + misc,
ListenSP: Math.min(skill_cap_calc(HD,values.ListenTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:lockpickingsp change:lockpickingmisc change:dexmod sheet:opened",function(){
getAttrs(["LockpickingSP","LockpickingMisc","dexmod","HD","LockpickingTrained"],function(values){
let SP = parseFloat(values.LockpickingSP)||0;
let misc = parseFloat(values.LockpickingMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
LockpickingTotal: Math.min(skill_cap_calc(HD,values.LockpickingTrained),SP) + key + misc,
LockpickingSP: Math.min(skill_cap_calc(HD,values.LockpickingTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:movesilentlysp change:movesilentlymisc change:dexmod change:checkpen change:shieldcheckpen sheet:opened",function(){
getAttrs(["MoveSilentlySP","MoveSilentlyMisc","dexmod","MoveSilentlyTrained","HD","CheckPen","ShieldCheckPen"],function(values){
let SP = parseFloat(values.MoveSilentlySP)||0;
let misc = parseFloat(values.MoveSilentlyMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
let CheckPen = parseFloat(values.CheckPen)||0;
CheckPen = CheckPen + (parseFloat(values.ShieldCheckPen)||0);
setAttrs({
MoveSilentlyTotal: Math.min(skill_cap_calc(HD,values.MoveSilentlyTrained),SP) + key + misc - CheckPen,
MoveSilentlySP: Math.min(skill_cap_calc(HD,values.MoveSilentlyTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:perform1sp change:perform1misc change:chamod sheet:opened",function(){
getAttrs(["Perform1SP","Perform1Misc","chamod","HD","Perform1Trained"],function(values){
let SP = parseFloat(values.Perform1SP)||0;
let misc = parseFloat(values.Perform1Misc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Perform1Total: Math.min(skill_cap_calc(HD,values.Perform1Trained),SP) + key + misc,
Perform1SP: Math.min(skill_cap_calc(HD,values.Perform1Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:perform2sp change:perform2misc change:chamod sheet:opened",function(){
getAttrs(["Perform2SP","Perform2Misc","chamod","HD","Perform2Trained"],function(values){
let SP = parseFloat(values.Perform2SP)||0;
let misc = parseFloat(values.Perform2Misc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Perform2Total: Math.min(skill_cap_calc(HD,values.Perform2Trained),SP) + key + misc,
Perform2SP: Math.min(skill_cap_calc(HD,values.Perform2Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:perform3sp change:perform3misc change:chamod sheet:opened",function(){
getAttrs(["Perform3SP","Perform3Misc","chamod","HD","Perform3Trained"],function(values){
let SP = parseFloat(values.Perform3SP)||0;
let misc = parseFloat(values.Perform3Misc)||0;
let key = parseFloat(values.chamod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Perform3Total: Math.min(skill_cap_calc(HD,values.Perform3Trained),SP) + key + misc,
Perform3SP: Math.min(skill_cap_calc(HD,values.Perform3Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:profession1sp change:profession1misc change:intmod sheet:opened",function(){
getAttrs(["Profession1SP","Profession1Misc","intmod","HD","Profession1Trained"],function(values){
let SP = parseFloat(values.Profession1SP)||0;
let misc = parseFloat(values.Profession1Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Profession1Total: Math.min(skill_cap_calc(HD,values.Profession1Trained),SP) + key + misc,
Profession1SP: Math.min(skill_cap_calc(HD,values.Profession1Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:profession2sp change:profession2misc change:intmod sheet:opened",function(){
getAttrs(["Profession2SP","Profession2Misc","intmod","HD","Profession2Trained"],function(values){
let SP = parseFloat(values.Profession2SP)||0;
let misc = parseFloat(values.Profession2Misc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
Profession2Total: Math.min(skill_cap_calc(HD,values.Profession2Trained),SP) + key + misc,
Profession2SP: Math.min(skill_cap_calc(HD,values.Profession2Trained),SP)
}, checkmaxskillpoints);
});
});
on("change:ridesp change:ridemisc change:dexmod change:checkpen change:shieldcheckpen sheet:opened",function(){
getAttrs(["RideSP","RideMisc","dexmod","HD","RideTrained","CheckPen","ShieldCheckPen"],function(values){
let SP = parseFloat(values.RideSP)||0;
let misc = parseFloat(values.RideMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
let CheckPen = parseFloat(values.CheckPen)||0;
CheckPen = CheckPen + (parseFloat(values.ShieldCheckPen)||0);
setAttrs({
RideTotal: Math.min(skill_cap_calc(HD,values.RideTrained),SP) + key + misc - CheckPen,
RideSP: Math.min(skill_cap_calc(HD,values.RideTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:sleightofhandsp change:sleightofhandmisc change:dexmod sheet:opened",function(){
getAttrs(["SleightOfHandSP","SleightOfHandMisc","dexmod","HD","SleightOfHandTrained"],function(values){
let SP = parseFloat(values.SleightOfHandSP)||0;
let misc = parseFloat(values.SleightOfHandMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
SleightOfHandTotal: Math.min(skill_cap_calc(HD,values.SleightOfHandTrained),SP) + key + misc,
SleightOfHandSP: Math.min(skill_cap_calc(HD,values.SleightOfHandTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:spotsp change:spotmisc change:wismod sheet:opened",function(){
getAttrs(["SpotSP","SpotMisc","wismod","HD","SpotTrained"],function(values){
let SP = parseFloat(values.SpotSP)||0;
let misc = parseFloat(values.SpotMisc)||0;
let key = parseFloat(values.wismod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
SpotTotal: Math.min(skill_cap_calc(HD,values.SpotTrained),SP) + key + misc,
SpotSP: Math.min(skill_cap_calc(HD,values.SpotTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:sabotagedevicesp change:sabotagedevicemisc change:intmod sheet:opened",function(){
getAttrs(["SabotageDeviceSP","SabotageDeviceMisc","intmod","HD","SabotageDeviceTrained"],function(values){
let SP = parseFloat(values.SabotageDeviceSP)||0;
let misc = parseFloat(values.SabotageDeviceMisc)||0;
let key = parseFloat(values.intmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
SabotageDeviceTotal: Math.min(skill_cap_calc(HD,values.SabotageDeviceTrained),SP) + key + misc,
SabotageDeviceSP: Math.min(skill_cap_calc(HD,values.SabotageDeviceTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:swimsp change:swimmisc change:strmod change:checkpen change:shieldcheckpen sheet:opened",function(){
getAttrs(["SwimSP","SwimMisc","strmod","HD","SwimTrained","CheckPen","ShieldCheckPen"],function(values){
let SP = parseFloat(values.SwimSP)||0;
let misc = parseFloat(values.SwimMisc)||0;
let key = parseFloat(values.strmod)||0;
let HD = parseFloat(values.HD)||0;
let CheckPen = parseFloat(values.CheckPen)||0;
CheckPen = CheckPen + (parseFloat(values.ShieldCheckPen)||0);
setAttrs({
SwimTotal: Math.min(skill_cap_calc(HD,values.SwimTrained),SP) + key + misc - CheckPen,
SwimSP: Math.min(skill_cap_calc(HD,values.SwimTrained),SP)
}, checkmaxskillpoints);
});
});
on("change:useropesp change:useropemisc change:dexmod sheet:opened",function(){
getAttrs(["UseRopeSP","UseRopeMisc","dexmod","HD","UseRopeTrained"],function(values){
let SP = parseFloat(values.UseRopeSP)||0;
let misc = parseFloat(values.UseRopeMisc)||0;
let key = parseFloat(values.dexmod)||0;
let HD = parseFloat(values.HD)||0;
setAttrs({
UseRopeTotal: Math.min(skill_cap_calc(HD,values.UseRopeTrained),SP) + key + misc,
UseRopeSP: Math.min(skill_cap_calc(HD,values.UseRopeTrained),SP)
}, checkmaxskillpoints);
});
});
//</editor-fold>
//<editor-fold desc="Saves">
on("change:egobasestr change:chamod change:charisma change:hd sheet:opened",function (){
getAttrs(["EgoBaseStr","HD"],function(values){
let HD = parseFloat(values.HD);
let base = 0;
if(values.EgoBaseStr === "Low") {
base = Math.min(6, Math.floor(HD / 3));
}if(values.EgoBaseStr === "High"){
base = Math.min(12, Math.floor(2+(HD / 2)));
}
setAttrs({
EgoBaseNum: base
});
});
});
on("change:fortbasestr change:conmod change:constitution change:hd sheet:opened",function (){
getAttrs(["FortBaseStr","HD"],function(values){
let HD = parseFloat(values.HD);
let base = 0;
if(values.FortBaseStr === "Low") {
base = Math.min(6, Math.floor(HD / 3));
}if(values.FortBaseStr === "High"){
base = Math.min(12, Math.floor(2+(HD / 2)));
}
setAttrs({
FortBaseNum: base
});
});
});
on("change:refbasestr change:dexmod change:dexterity change:hd change:haste change:slow sheet:opened",function (){
getAttrs(["RefBaseStr","HD","haste","slow"],function(values){
let HD = parseFloat(values.HD);
let haste = parseFloat(values.haste);
let slow = parseFloat(values.slow);
let base = 0;
if(values.RefBaseStr === "Low") {
base = Math.min(6, Math.floor(HD / 3));
}if(values.RefBaseStr === "High"){
base = Math.min(12, Math.floor(2+(HD / 2)));
}
setAttrs({
RefBaseNum: base + haste - slow
});
});
});
on("change:wilbasestr change:wismod change:wisdom change:hd sheet:opened",function (){
getAttrs(["WilBaseStr","HD"],function(values){
let HD = parseFloat(values.HD);
let base = 0;
if(values.WilBaseStr === "Low") {
base = Math.min(6, Math.floor(HD / 3));
}if(values.WilBaseStr === "High"){
base = Math.min(12, Math.floor(2+(HD / 2)));
}
setAttrs({
WilBaseNum: base
});
});
});
on("change:egobasestr change:chamod change:charisma change:hd change:egobasenum " +
"change:egomiscnum change:egomagic change:egotempnum sheet:opened",function (){
getAttrs(["EgoBaseNum","chamod","EgoMagic","EgoMiscNum","EgoTempNum"],function(values){
let base = parseFloat(values.EgoBaseNum)||0;
let stat = parseFloat(values.chamod)||0;
let magic = parseFloat(values.EgoMagic)||0;
let misc = parseFloat(values.EgoMiscNum)||0;
let temp = parseFloat(values.EgoTempNum)||0;
let total = base + stat + magic + temp + misc;
setAttrs({
EgoTotal: total
});
});
});
on("change:fortbasestr change:conmod change:constitution change:hd change:fortbasenum " +
"change:fortmiscnum change:fortmagic change:forttempnum sheet:opened",function (){
getAttrs(["FortBaseNum","conmod","FortMagic","FortMiscNum","FortTempNum"],function(values){
let base = parseFloat(values.FortBaseNum)||0;
let stat = parseFloat(values.conmod)||0;
let magic = parseFloat(values.FortMagic)||0;
let misc = parseFloat(values.FortMiscNum)||0;
let temp = parseFloat(values.FortTempNum)||0;
let total = base + stat + magic + temp + misc;
setAttrs({
FortTotal: total
});
});
});
on("change:refbasestr change:dexmod change:dexterity change:hd change:refbasenum " +
"change:refmiscnum change:refmagic change:reftempnum sheet:opened",function (){
getAttrs(["RefBaseNum","dexmod","RefMagic","RefMiscNum","RefTempNum"],function(values){
let base = parseFloat(values.RefBaseNum)||0;
let stat = parseFloat(values.dexmod)||0;
let magic = parseFloat(values.RefMagic)||0;
let misc = parseFloat(values.RefMiscNum)||0;
let temp = parseFloat(values.RefTempNum)||0;
let total = base + stat + magic + misc + temp;
setAttrs({
RefTotal: total
});
});
});
on("change:wilbasestr change:wismod change:wisdom change:hd change:wilbasenum " +
"change:wilmiscnum change:wilmagic change:wiltempnum sheet:opened",function (){
getAttrs(["WilBaseNum","wismod","WilMagic","WilMiscNum","WilTempNum"],function(values){
let base = parseFloat(values.WilBaseNum)||0;
let stat = parseFloat(values.wismod)||0;
let magic = parseFloat(values.WilMagic)||0;
let misc = parseFloat(values.WilMiscNum)||0;
let temp = parseFloat(values.WilTempNum)||0;
let total = base + stat + magic + misc + temp;
setAttrs({
WilTotal: total
});
});
});
//</editor-fold>
// <editor-fold desc="AC">
on("change:shield change:size change:sizemod change:armorbonus change:dexmod change:naturalac change:parryac change:haste change:slow "+
"change:miscac change:deflection change:insightac change:dodgeac change:dexaclimit change:shielddexaclimit" +
" sheet:opened",function(){
getAttrs(["dexmod","ArmorBonus","NaturalAC","Shield","MiscAC","haste","slow",
"InsightAC","ParryAC","Deflection","DodgeAC","SizeMod","DexACLimit","ShieldDexACLimit"],function(values){
let dex = parseFloat(values.dexmod)||0;
let haste = parseFloat(values.haste)||0;
let slow = parseFloat(values.slow)
let armor = parseFloat(values.ArmorBonus)||0;
let natural = parseFloat(values.NaturalAC)||0;
let shield = parseFloat(values.Shield)||0;
let parry = parseFloat(values.ParryAC)||0;
let dodge = parseFloat(values.DodgeAC)||0;
let deflection = parseFloat(values.Deflection)||0;
let insight = parseFloat(values.InsightAC)||0;
let misc = parseFloat(values.MiscAC)||0;
let ArmorLimit = parseFloat(values.DexACLimit)||9999;
let ShieldLimit = parseFloat(values.ShieldDexACLimit)||9999;
let DexLimit = Math.min(ArmorLimit,ShieldLimit);
let size = parseFloat(values.SizeMod)||0;
let total = 10 + Math.min(DexLimit,dex) + armor + natural + shield + haste + parry + dodge + deflection + insight + misc - size - slow;
let flat = 10 + armor + natural + shield + deflection + misc - size;
let touch = 10 + Math.min(DexLimit,dex) + dodge + deflection + insight + misc - size + haste - slow;
setAttrs({
TotalAC: total,
FlatFAC: flat,
TouchAC: touch,
});
});
});
//</editor-fold>
//<editor-fold desc="Initiative Calculations"
on("change:dexmod change:initbonus sheet:opened", function(){
getAttrs(["dexmod","InitBonus"],function(values){
let dex = parseFloat(values.dexmod)||0;
let InitBonus = parseFloat(values.InitBonus)||0;
let total = dex + InitBonus
setAttrs({
InitTotal: total
});
});
});
//</editor-fold>
//<editor-fold desc="Button-Tabs"
const inputlist = ["Crown","Face","Neck","Shoulders","Ring1","Ring2","Hands","Forearms","UpperArms","Torso","Waist","Feet"];
inputlist.forEach(input =>{
on(`change:${input.toLowerCase()}`, function(){
getAttrs([input], function(values){
let toSetAttrs = {};
toSetAttrs[`${input}_hidden`] = values[input];
setAttrs(toSetAttrs);
})
})
})
const buttonlist = ["main","skills","gear","definitions","abilities","spells","accessories","inventory","profitloss"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
const spellbuttonlist = [0,1,2,3,4,5,6,7,8,9];
spellbuttonlist.forEach(button => {
on(`clicked:spell${button}minimize`, function(){
getAttrs([`spell${button}minimizetoggle`], function(v){
let toSetAttrs = {};
toSetAttrs[`spell${button}minimizetoggle`] = 1 - parseInt(v[`spell${button}minimizetoggle`]);
setAttrs(toSetAttrs);
});
});
});
const maxAbilityList = ["minabilitytog"];
maxAbilityList.forEach(button => {
on(`clicked:repeating_abilities:${button}`, function() {
getAttrs(['repeating_abilities_minimizeability'], function(v) {
setAttrs({
repeating_abilities_minimizeability: 1 - parseInt(v.repeating_abilities_minimizeability)
});
});
});
});
const maxFeatsList = ["minfeats"];
maxFeatsList.forEach(button => {
on(`clicked:repeating_feats:${button}`, function() {
getAttrs(['repeating_feats_minfeatval'], function(v) {
setAttrs({
repeating_feats_minfeatval: 1 - parseInt(v.repeating_feats_minfeatval)
});
});
});
});
const WeaponCol = [1,2]
WeaponCol.forEach(col => {
const maxMinWeaponList = ["weaponminimize","critconfirmminimize","advancedweaponminimize"];
maxMinWeaponList.forEach(button => {
on(`clicked:repeating_weapons${col}:${button}`, function() {
getAttrs([`repeating_weapons${col}_${button}toggle`], function(v) {
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_${button}toggle`] = 1 - parseInt(v[`repeating_weapons${col}_${button}toggle`]);
setAttrs(toSetAttrs);
});
});
});
});
const DTACol = [1,2,3,4]
DTACol.forEach(col => {
const maxMinDTAList = ["dta1minimize","dta2minimize","dta3minimize","dta4minimize"];
maxMinDTAList.forEach(button => {
on(`clicked:repeating_DTA${col}:${button}`,function (){
getAttrs([`repeating_DTA${col}_${button}toggle`], function(value){
let toSetAttrs = {};
toSetAttrs[`repeating_DTA${col}_${button}toggle`] = 1 - parseInt(value[`repeating_DTA${col}_${button}toggle`]);
setAttrs(toSetAttrs);
});
});
});
});
const advancedMin = ["","advanced"];
const maxMinSpellList = ["0_spell0minimize","1_spell1minimize","2_spell2minimize","3_spell3minimize","4_spell4minimize","5_spell5minimize",
"6_spell6minimize","7_spell7minimize","8_spell8minimize","9_spell9minimize"];
advancedMin.forEach(subbutton => { maxMinSpellList.forEach(button => {
on(`clicked:repeating_spells-${button.replace("_", ":")}${subbutton}`, function () {
getAttrs([`repeating_spells-${button}${subbutton}toggle`], function (v) {
let toSetAttrs = {};
toSetAttrs[`repeating_spells-${button}${subbutton}toggle`] = 1 - parseInt(v[`repeating_spells-${button}${subbutton}toggle`]);
setAttrs(toSetAttrs);
});
});
});
});
//</editor-fold>
//<editor-fold desc="HP Calculations"
on("change:conmod change:hd sheet:opened", function(){
getAttrs(["HD","conmod"],function(values){
let HD = parseFloat(values.HD)||0;
let conmod = parseFloat(values.conmod)||0;
let conhp = HD * conmod
setAttrs({
ConHP: conhp
});
});
});
on("change:hd change:magiccurve sheet:opened", function(){
getAttrs(["HD","MagicCurve"],function(values){
let progHP = 0;
let HD = parseFloat(values.HD)||0;
if(values.MagicCurve === "None"){
progHP = 6;
}if(values.MagicCurve === "Basic"){
progHP = 5;
}if(values.MagicCurve === "Standard"){
progHP = 4;
}if(values.MagicCurve === "Advanced"){
progHP = 3;
}
setAttrs({
ProgHP: progHP * HD
});
});
});
on("change:conhp change:mischp change:proghp change:rollhp sheet:opened", function(){
getAttrs(["ConHP","ProgHP","MiscHP","RollHP"],function(values){
let con = parseFloat(values.ConHP)||0;
let prog = parseFloat(values.ProgHP)||0;
let misc = parseFloat(values.MiscHP)||0;
let roll = parseFloat(values.RollHP)||0;
let total = con + prog + misc + roll;
if(total === 0){
total = 1
}
setAttrs({
hp_max: total,
NLD_max: total,
});
});
});
//</editor-fold>
//<editor-fold desc="HD Calculations">
on("change:hd change:lg sheet:opened", function(){
getAttrs(["HD", "LG"], function(values){
let HD = parseFloat(values.HD)||0;
let LG = parseFloat(values.LG)||0;
let HDE = HD + LG
setAttrs({
HDE: HDE
});
});
});
//</editor-fold>
//<editor-fold desc="Statblock"
on("change:strength change:strbonus change:strench change:strpen sheet:opened", function() {
getAttrs(["strength", "StrBonus", "StrEnch", "StrPen"], function(values) {
let base = parseFloat(values.strength)||0;
let bonus = parseFloat(values.StrBonus)||0;
let enhancement = parseFloat(values.StrEnch)||0;
let penalty = parseFloat(values.StrPen)||0;
let total = base + bonus + enhancement - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
StrTotal: total,
strmod: mod
});
});
});
on("change:dexterity change:dexbonus change:dexench change:dexpen sheet:opened", function() {
getAttrs(["dexterity", "DexBonus", "DexEnch", "DexPen"], function(values) {
let base = parseFloat(values.dexterity)||0;
let bonus = parseFloat(values.DexBonus)||0;
let enhancement = parseFloat(values.DexEnch)||0;
let penalty = parseFloat(values.DexPen)||0;
let total = base + bonus + enhancement - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
DexTotal: total,
dexmod: mod
});
});
});
on("change:constitution change:conbonus change:conench change:conpen sheet:opened", function() {
getAttrs(["constitution", "ConBonus", "ConEnch", "ConPen"], function(values) {
let base = parseFloat(values.constitution)||0;
let bonus = parseFloat(values.ConBonus)||0;
let enhancement = parseFloat(values.ConEnch)||0;
let penalty = parseFloat(values.ConPen)||0;
let total = base + bonus + enhancement - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
ConTotal: total,
conmod: mod
});
});
});
on("change:wisdom change:wisbonus change:wisench change:wispen sheet:opened", function() {
getAttrs(["wisdom", "WisBonus", "WisEnch", "WisPen"], function(values) {
let base = parseFloat(values.wisdom)||0;
let bonus = parseFloat(values.WisBonus)||0;
let enhancement = parseFloat(values.WisEnch)||0;
let penalty = parseFloat(values.WisPen)||0;
let total = base + bonus + enhancement - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
WisTotal: total,
wismod: mod
});
});
});
on("change:intelligence change:intbonus change:intench change:intpen sheet:opened", function() {
getAttrs(["intelligence", "IntBonus", "IntEnch", "IntPen"], function(values) {
let base = parseFloat(values.intelligence)||0;
let bonus = parseFloat(values.IntBonus)||0;
let enhancement = parseFloat(values.IntEnch)||0;
let penalty = parseFloat(values.IntPen)||0;
let total = base + bonus + enhancement - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
IntTotal: total,
intmod: mod
});
});
});
on("change:charisma change:chabonus change:chaench change:chapen sheet:opened", function() {
getAttrs(["charisma", "ChaBonus", "ChaEnch", "ChaPen"], function(values) {
let base = parseFloat(values.charisma)||0;
let bonus = parseFloat(values.ChaBonus)||0;
let enhancement = parseFloat(values.ChaEnch)||0;
let penalty = parseFloat(values.ChaPen)||0;
let total = base + bonus + enhancement - penalty;
let mod = Math.floor((total-10)/2)
setAttrs({
ChaTotal: total,
chamod: mod
});
});
});
//</editor-fold>
// <editor-fold desc="Spellcasting Calculations">
//Block of Constants used by the sheet for spell casting
const BasicMagicSPD = [ /*Vertical Index is 0 - 19 || Horizontal index is 0 - 3 */
[null,null,null,null],
[0,null,null,null],
[1,null,null,null],
[1,null,null,null],
[2,null,null,null],
[2,0,null,null],
[2,1,null,null],
[2,1,null,null],
[2,1,null,null],
[3,2,0,null],
[3,2,1,null],
[3,2,1,null],
[3,2,1,null],
[3,3,1,0],
[4,3,1,1],
[4,3,2,1],
[4,4,2,1],
[4,4,2,2],
[4,4,2,2],
[5,4,2,2]
];
const StandardMagicSPD = [ /*Vertical Index is 0 - 19 || Horizontal index is 0 - 5 */
[0,null,null,null,null,null],
[1,null,null,null,null,null],
[2,0,null,null,null,null],
[3,1,null,null,null,null],
[3,2,0,null,null,null],
[3,2,1,null,null,null],
[3,2,2,0,null,null],
[4,2,2,1,null,null],
[4,3,2,2,null,null],
[4,3,2,2,0,null],
[4,3,3,2,1,null],
[5,3,3,2,2,null],
[5,4,3,3,2,0],
[5,4,3,3,2,1],
[5,4,4,3,2,2],
[5,4,4,3,3,2],
[5,5,4,4,3,2],
[5,5,4,4,3,2],
[5,5,5,4,3,3],
[5,5,5,4,4,3]
];
const AdvancedMagicSPD = [ /*Vertical Index is 0 - 19 || Horizontal index is 0 - 8 */
[2,null,null,null,null,null,null,null,null],
[3,null,null,null,null,null,null,null,null],
[3,1,null,null,null,null,null,null,null],
[3,2,null,null,null,null,null,null,null],
[4,2,1,null,null,null,null,null,null],
[4,3,2,null,null,null,null,null,null],
[4,3,2,1,null,null,null,null,null],
[4,3,3,2,null,null,null,null,null],
[5,4,3,2,1,null,null,null,null],
[5,4,3,3,2,null,null,null,null],
[5,4,4,3,3,1,null,null,null],
[5,4,4,3,3,2,null,null,null],
[5,5,4,4,3,2,1,null,null],
[5,5,4,4,4,3,2,null,null],
[5,5,5,4,4,3,2,1,null],
[5,5,5,4,4,3,3,2,null],
[5,5,5,5,4,4,3,2,1],
[5,5,5,5,5,4,4,3,2],
[5,5,5,5,5,4,4,4,3],
[5,5,5,5,5,5,5,5,4]
];
const SpellsPerDayLevel = [1,2,3,4,5,6,7,8,9];
const SpellMacroLevel = [0,1,2,3,4,5,6,7,8,9];
SpellsPerDayLevel.forEach(level => { //setting the spells per day
on(`change:hd change:magiccurve sheet:opened change:pma change:dexmod change:strmod `+
`change:intmod change:wismod change:chamod`, function () {
getAttrs(["HD", "PMA", "MagicCurve","strmod","dexmod","wismod","intmod","chamod"], function (values) {
let HD = parseInt(values.HD)||1;
let PMA;
switch(values.PMA){
case "@{strmod}" :
PMA = values.strmod;
break;
case "@{dexmod}":
PMA = values.dexmod;
break;
case "@{wismod}" :
PMA = values.wismod;
break;
case "@{intmod}" :
PMA = values.intmod;
break;
case "@{chamod}" :
PMA = values.chamod;
break;
}
let HDSpellsPerDay = null;
let bonusspell = Math.max(Math.ceil((PMA + 1 - level)/4),0);
switch (values.MagicCurve){
case "Basic":
HDSpellsPerDay = BasicMagicSPD[HD-1][level-1]; /*[ArrayID 1][ArrayID 2]*/
break;
case "Standard":
HDSpellsPerDay = StandardMagicSPD[HD-1][level-1];
break;
case "Advanced":
HDSpellsPerDay = AdvancedMagicSPD[HD-1][level-1];
break;
}
let FinalSPD;
if(HDSpellsPerDay === null) FinalSPD = 0;
else FinalSPD = HDSpellsPerDay + bonusspell;
toSetAttrs = {};
toSetAttrs[`${level}perday`] = FinalSPD
setAttrs(toSetAttrs);
});
});
});
on(`change:hd change:magiccurve sheet:opened`,function(){
getAttrs(["HD","MagicCurve"], function(values){
let HD = parseFloat(values.HD)||0;
let CL = HD;
if (values.MagicCurve === "None"){
CL = 0;
}
else if (values.MagicCurve === "Basic"){
CL = Math.floor(HD/2);
}
setAttrs({
cl : CL
})
});
});
SpellMacroLevel.forEach(level => {
on(`change:repeating_spells-${level}:spellsaving change:repeating_spells-${level}:category change:repeating_spells change:repeating_spells-${level}:savesucces `+
`change:repeating_spells-${level}:harmless change:repeating_spells-${level}:sr change:repeating_spells-${level}:spell${level}minimizetoggle `+
`change:repeating_spells-${level}:minimizetoggle change:repeating_spells-${level}:spellname change:repeating_spells-${level}:spelldcmod`, function () {
getAttrs([`repeating_spells-${level}_spellsaving`,`repeating_spells-${level}_category`,`repeating_spells-${level}_savesucces`,
`repeating_spells-${level}_harmless`, `repeating_spells-${level}_sr`,`repeating_spells-${level}_spelldcmod`],
function (values) {
let save = values[`repeating_spells-${level}_spellsaving`];
let savesuccess = values[`repeating_spells-${level}_savesucces`];
let dcmod = parseInt(values[`repeating_spells-${level}_spelldcmod`])||0;
let type = values[`repeating_spells-${level}_category`];
let harmless = values[`repeating_spells-${level}_harmless`];
let spell_resistance = values[`repeating_spells-${level}_sr`];
let macro = `&{template:custom}{{title=@{spellname}}}{{subtitle=@{school}}}{{Components=@{components}}}`+
`{{Range=@{range}}}{{Casting Time=@{castingtime}}}{{Effect=@{effect}}}{{Duration=@{duration}}}`;
if (save !== "No") {
macro = macro + `{{${save} save= DC [[10+${dcmod}+@{PMA}+${level}+@{SpellProf}]]${savesuccess}${harmless.replace(`0`,``)}}}`;
}
if(type !== "0") {
macro = macro + `{{${type}=[[@{dicenum}@{dicetype}+(@{dicenum}*@{SpellProf})]]}}`;
}
if(spell_resistance === "1") {
macro = macro + `{{Spell Penetration=[[1d20+@{cl}+@{spellpenetrationbonus}+`+
`(0?{Do you have any Spell penetration Bonuses?|0})]]}}`;
}
macro = macro + `{{desc= @{spelldescription}}}`
toSetAttrs = {};
toSetAttrs[`repeating_spells-${level}_spellcard`] = macro;
setAttrs(toSetAttrs);
});
});
});
on("change:hd change:magiccurve sheet:opened",function(){
getAttrs(["HD","MagicCurve"],function(values){
let HD = parseFloat(values.HD)||0;
let SP = 0;
if(values.MagicCurve === "Basic"){
SP = Math.floor(HD/10);
}
if(values.MagicCurve === "Standard"){
SP = 1 + Math.floor(HD/8);
}
if(values.MagicCurve === "Advanced"){
SP = 1 + Math.floor(HD/6);
}
if(values.MagicCurve === "None"){
SP = 0;
}
setAttrs({
SpellProf: SP
});
});
});
//</editor-fold>
// <editor-fold desc="Ability Info Calculations">
on("change:repeating_abilities:minimizeability change_repeating_abilities:absavethrow " +
"change:repeating_abilities:abilitytype change:repeating_abilities:abilitysrconfirm " +
"change:repeating_abilities:asprof change:repeating_abilities", function(){
getAttrs(["repeating_abilities_absavethrow","repeating_abilities_abilitytype",
"repeating_abilities_abilitysrconfirm","repeating_abilities_asprof"],function(values){
let savethrow = (values.repeating_abilities_absavethrow);
let type = (values.repeating_abilities_abilitytype);
let sr = (values.repeating_abilities_abilitysrconfirm);
let SpellProf = (values.repeating_abilities_asprof);
let Macro = `&{template:custom}{{title=@{abilityname}}}{{subtitle=@{character_name}}}{{Range=@{abilityrange}}}`+
`{{Target=@{abilitytarget}}}{{Duration=@{abilityduration}}}`;
if(savethrow !== "N/A"){
Macro = Macro + `{{${savethrow} save=@{abilitydc}}}`;
}
if(type !== "0"){
Macro = Macro + `{{${type}=[[(@{abilitydicenum}@{abilitydicetype})]]}}`;
}
if(SpellProf === "1"){
Macro = Macro.replace(`{{${type}=[[(@{abilitydicenum}@{abilitydicetype})]]}}`,
`{{${type}=[[(@{abilitydicenum}@{abilitydicetype})+(@{SpellProf}*@{abilitydicenum})]]}}`);
}
if(sr === "1"){
Macro = Macro + `{{Spell Resistance=[[1d20+@{HD}+@{spellpenetrationbonus}+`+
`(0?{Do you have any Spell penetration Bonuses?|0})]]}}`;
}
Macro = Macro + `{{desc=@{abilitydescriptiontext}}}`
setAttrs({
repeating_abilities_abilityroll: Macro
});
});
});
on("change:hd sheet:opened",function(){
getAttrs(["HD","CloseRange","MediumRange","LongRange"],function(values){
let HD = parseFloat(values.HD)||0;
let Close = 25 + (Math.floor(HD/2)*5);
let Medium = 100 + (HD*10);
let Long = 400 + (HD*40);
setAttrs({
CloseRange: Close,
MediumRange: Medium,
LongRange: Long
});
}) ;
});
//</editor-fold>
// <editor-fold desc="Attack Bonuses">
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col} sheet:opened change:bab change:slow change:haste`,function(){
getAttrs(["BAB","slow","haste",`character_name`],function(values){
getSectionIDs(`repeating_weapons${col}`,function(array){
let rows = {};
for (let arrayID of array){
rows[`repeating_weapons${col}_` + arrayID + `_weaponbab`] = values.BAB;
rows[`repeating_weapons${col}_` + arrayID + `_`+`weaponhaste`] = values.haste;
rows[`repeating_weapons${col}_` + arrayID + `_`+`weaponslow`] = values.slow;
rows[`repeating_weapons${col}_` + arrayID + `_`+`character_name`] = values.character_name;
rows[`repeating_weapons${col}_` + arrayID + `_`+`ArrayID`] = arrayID;
}
if(rows){
setAttrs(rows);
}
});
});
});
});
// WeaponCol.forEach(col =>{
// on(`change:repeating_weapons${col}:grandmaster change:repeating_weapons${col}:weaponminimize` +
// `change:repeating_weapons${col}:weaponhaste`,function(){
// getAttrs([`repeating_weapons${col}_grandmaster`],function(values){
// let grandmaster = parseFloat(values[`repeating_weapons${col}_grandmaster`]) || 0;
// if (grandmaster === 2){
// grandmaster =
// }
// })
// })
// })
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col}:bonustoattack change:repeating_weapons${col}:weaponhaste change:repeating_weapons${col}:weaponslow` +
` change:repeating_weapons${col}:critlow change:repeating_weapons${col}:weaponbab change:repeating_weapons${col}:weaponminimize` +
` change:repeating_weapons${col}:enhancetoattack change:repeating_weapons${col}:grandmaster`, function(){
getAttrs([`repeating_weapons${col}_bonustoattack`,`repeating_weapons${col}_critlow`,`repeating_weapons${col}_weaponhaste`
,`repeating_weapons${col}_weaponbab`,`repeating_weapons${col}_weaponslow`,`repeating_weapons${col}_enhancetoattack`,
`repeating_weapons${col}_grandmaster`],function(values){
let featbonus = values[`repeating_weapons${col}_bonustoattack`] || 0;
let enhance = parseFloat(values[`repeating_weapons${col}_enhancetoattack`]) || 0;
let mincrit = parseFloat(values[`repeating_weapons${col}_critlow`]) || 0;
let grandmaster = parseFloat(values[`repeating_weapons${col}_grandmaster`]) || 0;
let BAB = parseFloat(values[`repeating_weapons${col}_weaponbab`]);
let Macro = `&{template:custom}{{title=Attack(s)}}{{subtitle=@{character_name}'s @{weaponname}}}`+
`{{First Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]+@{weapontohit}[Key Attribute]+${featbonus}`+
`[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}[slow]]]}}`;
if(values[`repeating_weapons${col}_weaponhaste`] === `1`){
Macro = Macro + `{{Haste Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
if(values[`repeating_weapons${col}_weaponslow`] === `0`) {
if (BAB - 5 > 0) {
Macro = Macro + `{{Second Attack=[[1d20cs>${mincrit}+${BAB - 5}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
if (grandmaster === 2){
Macro = Macro + `{{Second Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
if (BAB - 10 > 0) {
Macro = Macro + `{{Third Attack=[[1d20cs>${mincrit}+${BAB - 10}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
if (grandmaster === 3){
Macro = Macro + `{{Third Attack=[[1d20cs>${mincrit}+${BAB - 5}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
if (BAB - 15 > 0) {
Macro = Macro + `{{Fourth Attack=[[1d20cs>${mincrit}+${BAB - 15}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
if (grandmaster === 4){
Macro = Macro + `{{Fourth Attack=[[1d20cs>${mincrit}+${BAB - 10}[Base Attack]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
}
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_fullattackroll`] = Macro;
setAttrs(toSetAttrs);
});
});
});
// </editor-fold>
// <editor-fold desc="Damage Rolls">
// <editor-fold desc="Normal Damage">
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col}:weapontodamage change:repeating_weapons${col}:dnum change:repeating_weapons${col}:dtype` +
` change:repeating_weapons${col}:bonustodamage change:repeating_weapons${col}:enchdamagedice change:repeating_weapons${col}:weapondamagtype` +
` change:repeating_weapons${col}:twohanded change:repeating_weapons${col}:enhancetoattack change:repeating_weapons${col}:weaponminimize`, function(){
getAttrs([`repeating_weapons${col}_weapontodamage`,`repeating_weapons${col}_dnum`,`repeating_weapons${col}_dtype`,
`repeating_weapons${col}_bonustodamage`,`repeating_weapons${col}_enchdamagedice`,`repeating_weapons${col}_weapondamagtype`,
`repeating_weapons${col}_twohanded`,`repeating_weapons${col}_enhancetoattack`],function(values){
let numberOfDice = (values[`repeating_weapons${col}_dnum`]) || 0;
let dieType = values[`repeating_weapons${col}_dtype`] || 0;
let featBonus = values[`repeating_weapons${col}_bonustodamage`];
let magicBonus = values[`repeating_weapons${col}_enhancetoattack`];
let magicDice = values[`repeating_weapons${col}_enchdamagedice`];
let damageType = values[`repeating_weapons${col}_weapondamagtype`];
let twoHanded = values[`repeating_weapons${col}_twohanded`];
let macro = `&{template:custom}{{title=Damage}}{{subtitle=@{character_name}'s @{weaponname}}}`;
if (twoHanded === "on"){
macro = macro + `{{desc=@{character_name} deals [[${numberOfDice}${dieType}+[[floor(@{weapontodamage}*1.5)]][Ability]`+
`+${featBonus}[Feats/Other]+${magicBonus}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})[Misc.]]] physical damage `
}
if (twoHanded !=="on") {
macro = macro + `{{desc=@{character_name} deals [[${numberOfDice}${dieType}+[[@{weapontodamage}]][Ability]` +
`+${featBonus}[Feats/Other]+${magicBonus}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})[Misc.]]] physical damage `
}
if (magicDice){
macro = macro + ` and [[${magicDice}[${damageType}]]] ${damageType} damage`;
}
macro = macro + ` with @{weaponname}.}}`;
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_weapondamage`] = macro;
setAttrs(toSetAttrs);
});
});
});
// </editor-fold>
// <editor-fold desc="Critical Damage">
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col}:weapontodamage change:repeating_weapons${col}:dnum change:repeating_weapons${col}:dtype` +
` change:repeating_weapons${col}:bonustodamage change:repeating_weapons${col}:enchdamagedice change:repeating_weapons${col}:weapondamagtype` +
` change:repeating_weapons${col}:twohanded change:repeating_weapons${col}:enhancetoattack change:repeating_weapons${col}:weaponminimize` +
` change:repeating_weapons${col}:weaponcritmod change:repeating_weapons${col}:extraenchdicecrit`, function() {
getAttrs([`repeating_weapons${col}_weapontodamage`, `repeating_weapons${col}_dnum`, `repeating_weapons${col}_dtype`,
`repeating_weapons${col}_bonustodamage`, `repeating_weapons${col}_enchdamagedice`, `repeating_weapons${col}_weapondamagtype`,
`repeating_weapons${col}_twohanded`, `repeating_weapons${col}_enhancetoattack`, `repeating_weapons${col}_extraenchdicecrit`,
`repeating_weapons${col}_weaponcritmod`], function (values) {
let numberOfDice = (values[`repeating_weapons${col}_dnum`]) || 0;
let dieType = values[`repeating_weapons${col}_dtype`] || 0;
let featBonus = values[`repeating_weapons${col}_bonustodamage`];
let magicBonus = values[`repeating_weapons${col}_enhancetoattack`];
let magicDice = values[`repeating_weapons${col}_enchdamagedice`];
let bonusCriticalDice = values[`repeating_weapons${col}_extraenchdicecrit`];
let criticalMultiplier = parseFloat(values[`repeating_weapons${col}_weaponcritmod`]) || 0;
let damageType = values[`repeating_weapons${col}_weapondamagtype`];
let twoHanded = values[`repeating_weapons${col}_twohanded`];
let macro = `&{template:custom}{{title=Critical Damage}}{{subtitle=@{character_name}'s @{weaponname}}}`;
if (twoHanded ==="on"){
macro = macro + `{{desc=@{character_name} deals an astonishing [[[[${numberOfDice}*${criticalMultiplier}]]${dieType}+`
+`[[(floor(@{weapontodamage}*1.5)*${criticalMultiplier})]][Ability]+[[(${featBonus}*${criticalMultiplier})]]`
+`[Feats/Other]+[[(${magicBonus}*${criticalMultiplier})]][Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})[Misc.]]]`;
}
if (twoHanded !=="on") {
macro = macro + `{{desc=@{character_name} deals an astonishing [[[[${numberOfDice}*${criticalMultiplier}]]${dieType}+`
+`[[(floor(@{weapontodamage})*${criticalMultiplier})]][Ability]+[[(${featBonus}*${criticalMultiplier})]]`
+`[Feats/Other]+[[(${magicBonus}*${criticalMultiplier})]][Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})[Misc.]]]`;
}
if (magicDice){
macro = macro + ` + [[${magicDice}[${damageType}]]] ${damageType} damage`;
}
if (bonusCriticalDice){
macro = macro + ` + [[${bonusCriticalDice}[Bonus Dice]]] bonus damage`
}
macro = macro + ` with @{weaponname}.}}`
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_critweapondamage`] = macro;
setAttrs(toSetAttrs);
});
});
});
// </editor-fold>
// </editor-fold>
// <editor-fold desc="Advanced Attacks">
// Twin Talon
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col}:bonustoattack change:repeating_weapons${col}:weaponhaste change:repeating_weapons${col}:weaponslow` +
` change:repeating_weapons${col}:critlow change:repeating_weapons${col}:weaponbab change:repeating_weapons${col}:weaponminimize` +
` change:repeating_weapons${col}:enhancetoattack change:repeating_weapons${col}:grandmaster`, function(){
getAttrs([`repeating_weapons${col}_bonustoattack`,`repeating_weapons${col}_critlow`,`repeating_weapons${col}_weaponhaste`
,`repeating_weapons${col}_weaponbab`,`repeating_weapons${col}_weaponslow`,`repeating_weapons${col}_enhancetoattack`,
`repeating_weapons${col}_grandmaster`],function(values){
let featbonus = values[`repeating_weapons${col}_bonustoattack`] || 0;
let enhance = parseFloat(values[`repeating_weapons${col}_enhancetoattack`]) || 0;
let mincrit = parseFloat(values[`repeating_weapons${col}_critlow`]) || 0;
let BAB = parseFloat(values[`repeating_weapons${col}_weaponbab`]);
let Macro = `&{template:custom}{{title=Twin Talon}}{{subtitle=@{character_name}'s @{weaponname}}}`+
`{{First Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Twin Talon Penalty]+@{weapontohit}[Key Attribute]`+
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}[slow]]]}}`+
`{{Second Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Twin Talon Penalty]+@{weapontohit}[Key Attribute]`+
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}[slow]]]}}`;
if(values[`repeating_weapons${col}_weaponhaste`] === `1`){
Macro = Macro + `{{Haste Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Twin Talon Penalty]+@{weapontohit}[Key Attribute]` +
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})]]}}`;
}
Macro = Macro + `{{desc=If damage is dealt, target must make a fortitude save against their wound DC. This roll has a ` +
`-2 circumstance penalty for each attack that dealt damage. If they fail, they receive a normal [*wound*]` +
`(https://tabletopdefined.com/Afflictions/#wound). On a second failure the wound becomes the severe variant.}}`
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_twintalon`] = Macro;
setAttrs(toSetAttrs);
});
});
});
// Crack Shot
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col}:bonustoattack change:repeating_weapons${col}:weaponhaste change:repeating_weapons${col}:weaponslow` +
` change:repeating_weapons${col}:critlow change:repeating_weapons${col}:weaponbab change:repeating_weapons${col}:weaponminimize` +
` change:repeating_weapons${col}:enhancetoattack change:repeating_weapons${col}:grandmaster`, function(){
getAttrs([`repeating_weapons${col}_bonustoattack`,`repeating_weapons${col}_critlow`,`repeating_weapons${col}_weaponhaste`
,`repeating_weapons${col}_weaponbab`,`repeating_weapons${col}_weaponslow`,`repeating_weapons${col}_enhancetoattack`,
`repeating_weapons${col}_grandmaster`],function(values){
let featbonus = values[`repeating_weapons${col}_bonustoattack`] || 0;
let enhance = parseFloat(values[`repeating_weapons${col}_enhancetoattack`]) || 0;
let mincrit = parseFloat(values[`repeating_weapons${col}_critlow`]) || 0;
let grandmaster = parseFloat(values[`repeating_weapons${col}_grandmaster`]) || 0;
let BAB = parseFloat(values[`repeating_weapons${col}_weaponbab`]);
let Macro = `&{template:custom}{{title=Crack Shot}}{{subtitle=@{character_name}'s @{weaponname}}}`+
`{{Bonus Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}[Key Attribute]`+
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}`+
`[slow]]]}}`+
`{{First Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}[Key Attribute]`+
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}`+
`[slow]]]}}`;
if(values[`repeating_weapons${col}_weaponhaste`] === `1`){
Macro = Macro + `{{Haste Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Crack Shot Penalty+@{weapontohit}[Key`+
` Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
if(values[`repeating_weapons${col}_weaponslow`] === `0`) {
if (BAB - 5 > 0) {
Macro = Macro + `{{Second Attack=[[1d20cs>${mincrit}+${BAB - 5}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
if (grandmaster === 2){
Macro = Macro + `{{Second Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
if (BAB - 10 > 0) {
Macro = Macro + `{{Third Attack=[[1d20cs>${mincrit}+${BAB - 10}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
if (grandmaster === 3){
Macro = Macro + `{{Third Attack=[[1d20cs>${mincrit}+${BAB - 5}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
if (BAB - 15 > 0) {
Macro = Macro + `{{Fourth Attack=[[1d20cs>${mincrit}+${BAB - 15}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
if (grandmaster === 4){
Macro = Macro + `{{Fourth Attack=[[1d20cs>${mincrit}+${BAB - 10}[Base Attack]-2[Crack Shot Penalty]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})]]}}`;
}
}
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_crackshot`] = Macro;
setAttrs(toSetAttrs);
});
});
});
//Deadly Assault
WeaponCol.forEach(col => {
on(`change:repeating_weapons${col}:bonustoattack change:repeating_weapons${col}:weaponhaste change:repeating_weapons${col}:weaponslow` +
` change:repeating_weapons${col}:critlow change:repeating_weapons${col}:weaponbab change:repeating_weapons${col}:weaponminimize` +
` change:repeating_weapons${col}:enhancetoattack change:repeating_weapons${col}:grandmaster`, function(){
getAttrs([`repeating_weapons${col}_bonustoattack`,`repeating_weapons${col}_critlow`,`repeating_weapons${col}_weaponhaste`
,`repeating_weapons${col}_weaponbab`,`repeating_weapons${col}_weaponslow`,`repeating_weapons${col}_enhancetoattack`,
`repeating_weapons${col}_grandmaster`],function(values){
let featbonus = values[`repeating_weapons${col}_bonustoattack`] || 0;
let enhance = parseFloat(values[`repeating_weapons${col}_enhancetoattack`]) || 0;
let mincrit = parseFloat(values[`repeating_weapons${col}_critlow`]) || 0;
let grandmaster = parseFloat(values[`repeating_weapons${col}_grandmaster`]) || 0;
let BAB = parseFloat(values[`repeating_weapons${col}_weaponbab`]);
let Macro = `&{template:custom}{{title=Deadly Assault}}{{subtitle=@{character_name}'s @{weaponname}}}`+
`{{Bonus Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]+@{weapontohit}[Key Attribute]`+
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}`+
`[slow]]]}}`+
`{{First Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]+@{weapontohit}[Key Attribute]`+
`+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous bonuses?|0})-@{slow}`+
`[slow]]]}}`;
if (BAB - 5 > 0) {
Macro = Macro + `{{Second Attack=[[1d20cs>${mincrit}+${BAB - 5}[Base Attack]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})-@{slow}[Slow]]]}}`;
}
if (grandmaster === 2){
Macro = Macro + `{{Second Attack=[[1d20cs>${mincrit}+${BAB}[Base Attack]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})-@{slow}[Slow]]]}}`;
}
if (BAB - 10 > 0) {
Macro = Macro + `{{Third Attack=[[1d20cs>${mincrit}+${BAB - 10}[Base Attack]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})-@{slow}[Slow]]]}}`;
}
if (grandmaster === 3){
Macro = Macro + `{{Third Attack=[[1d20cs>${mincrit}+${BAB - 5}[Base Attack]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})-@{slow}[Slow]]]}}`;
}
if (BAB - 15 > 0) {
Macro = Macro + `{{Fourth Attack=[[1d20cs>${mincrit}+${BAB - 15}[Base Attack]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})-@{slow}[Slow]]]}}`;
}
if (grandmaster === 4){
Macro = Macro + `{{Fourth Attack=[[1d20cs>${mincrit}+${BAB - 10}[Base Attack]+@{weapontohit}`+
`[Key Attribute]+${featbonus}[Feat Bonuses]+${enhance}[Enhancement]+(0?{Do you have any miscellaneous `+
`bonuses?|0})-@{slow}[Slow]]]}}`;
}
let toSetAttrs = {};
toSetAttrs[`repeating_weapons${col}_deadlyassault`] = Macro;
setAttrs(toSetAttrs);
});
});
});
//Focus <Pending>
// weapondamage is the name of the damage button
WeaponCol.forEach(col => {
on(`clicked:repeating_weapons${col}:focusattack`, function(){
getAttrs([
`repeating_weapons${col}_bonustoattack`,
`repeating_weapons${col}_critlow`,
`repeating_weapons${col}_weaponhaste`,
`repeating_weapons${col}_weaponbab`,
`repeating_weapons${col}_enhancetoattack`,
`repeating_weapons${col}_weapontodamage`,
`repeating_weapons${col}_bonustodamage`,
`repeating_weapons${col}_dnum`,
`repeating_weapons${col}_dtype`,
`repeating_weapons${col}_enchdamagedice`,
`repeating_weapons${col}_extraenchdicecrit`,
`repeating_weapons${col}_weaponcritmod`,
`repeating_weapons${col}_twohanded`,
`repeating_weapons${col}_weapontohit`,
// `repeating_weapons${col}_character_name`,
// `repeating_weapons${col}_arrayID`,
`repeating_weapons${col}_weapondamagtype`], function(values){
// const arrayID = values[`repeating_weapons${col}_arrayID`]
// const characterName = values[`repeating_weapons${col}_character_name`];
const featBonusToAttack = values[`repeating_weapons${col}_bonustoattack`] || 0;
const featBonusToDamage = values[`repeating_weapons${col}_bonustodamage`] || 0;
const dieQuantity = values[`repeating_weapons${col}_dnum`] || 1;
const dieType = values[`repeating_weapons${col}_dtype`];
const weaponEnhancement = values[`repeating_weapons${col}_enhancetoattack`] || 0;
const baseAttack = values[`repeating_weapons${col}_weaponbab`] || 0;
const minCritThreshold = values[`repeating_weapons${col}_critlow`]|| 20 ;
const keyAttackAttribute = values[`repeating_weapons${col}_weapontohit`] || 0;
const keyDamageAttribute = values[`repeating_weapons${col}_weapontodamage`] ;
const twoHandedToggle = values[`repeating_weapons${col}_twohanded`];
const magicDice = values[`repeating_weapons${col}_enchdamagedice`];
const magicCriticalDice = values[`repeating_weapons${col}_extraenchdicecrit`];
const magicDamageType = values[`repeating_weapons${col}_weapondamagtype`];
const criticalModifier = values[`repeating_weapons${col}_weaponcritmod`];
let macroRoll = `&{template:custom} {{title=Focus Attack}}{{Attack Roll=[[1d20cs>${minCritThreshold}+${baseAttack}`+
`[BAB]+${keyAttackAttribute}[Key Attribute]+${featBonusToAttack}[Feats]+${weaponEnhancement}[Enhancement]`+
`-@{slow}[Slow]+((0?{Focus Points Spent})*3)[Focus]+(0?{Miscellaneous attack bonuses?})[Misc.]]]}}`;
if (twoHandedToggle === "on"){
macroRoll = macroRoll + `{{Damage=[[[[${dieQuantity}+(0?{Focus Points Spent})]]${dieType}+floor(`+
`(${keyDamageAttribute})*1.5)[Key Attribute]+${featBonusToDamage}[Feat]+${weaponEnhancement}[Magic]+((`+
`0?{Focus Points Spent})*3)[Focus]]]}}`;
}
if (twoHandedToggle !== "on"){
macroRoll = macroRoll + `{{Damage=[[[[${dieQuantity}+(0?{Focus Points Spent})]]${dieType}+floor(`+
`${keyDamageAttribute})[Key Attribute]+${featBonusToDamage}[Feat]+${weaponEnhancement}[Magic]+((0?{`+
`Focus Points Spent})*3)[Focus]]]}}`;
}
if (magicDice){
macroRoll = macroRoll + `{{${magicDamageType} Damage=[[${magicDice}[${magicDamageType}]]]}}`;
}
macroRoll = macroRoll + `{{Critical Confirmation Roll=[[1d20cs>${minCritThreshold}+${baseAttack}`+
`[BAB]+${keyAttackAttribute}[Key Attribute]+${featBonusToAttack}[Feats]+${weaponEnhancement}[Enhancement]`+
`-@{slow}[Slow]+((0?{Focus Points Spent})*3)[Focus]+(0?{Miscellaneous attack bonuses?})[Misc.]]]}}`;
if (twoHandedToggle === "on"){
macroRoll = macroRoll + `{{Critical Damage=[[[[((${dieQuantity}+(0?{Focus Points Spent}))*${criticalModifier})]]`+
`${dieType}+(floor(${keyDamageAttribute}*1.5)*${criticalModifier})[Key Attribute]+(`+
`${featBonusToDamage}*${criticalModifier}[Feat])+(${weaponEnhancement}*${criticalModifier})+(((0?{Focus`+
` Points Spent})*3)*${criticalModifier})[Focus]]]}}`;
}
if (twoHandedToggle !== "on"){
macroRoll = macroRoll + `{{Critical Damage=[[[[((${dieQuantity}+(0?{Focus Points Spent}))*${criticalModifier})]]`+
`${dieType}+(${keyDamageAttribute}*${criticalModifier})[Key Attribute]+(`+
`${featBonusToDamage}*${criticalModifier}[Feat])+(${weaponEnhancement}*${criticalModifier})+(((0?{Focus`+
` Points Spent})*3)*${criticalModifier})[Focus]]]}}`;
}
if (magicCriticalDice){
macroRoll = macroRoll + `{{Bonus Critical Damage = [[${magicCriticalDice}]]}}`
}
startRoll(macroRoll,function(roll){
finishRoll(roll.rollId);
});
});
});
})
// </editor-fold>
// enchdamagedice
</script>
<!--</editor-fold-->