mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
## 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.
5129 lines
246 KiB
HTML
Executable File
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> </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> </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> </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:
|
|
<input class="standard-input" title="Resource Current" type="number" name="attr_resourceNumber" />
|
|
</div>
|
|
<div class="grr3">
|
|
Maximum:
|
|
<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="∞"/>
|
|
Remaining: <input type="text" readonly name="attr_0remaining" value="∞"/>
|
|
</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">
|
|
Simplex
|
|
</span>
|
|
<input style="float:right; width: 40px;" type="text" readonly="true" name="attr_prepared" value="∞">
|
|
<span style="float:right; color: #FFFFFF">
|
|
Number Prepared:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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
|
|
</span>
|
|
<input style="margin-top: 3px; float:left;" type="checkbox" name="attr_known">
|
|
<span style="float:left; color: #FFFFFF">
|
|
Memorized
|
|
</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:
|
|
</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 <input title="@{haste}" type="checkbox" name="attr_haste" value="1"/> 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: <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"/> -
|
|
<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: <button
|
|
type="roll"
|
|
name="roll_weapondamage"
|
|
value="@{weapondamage}"
|
|
></button></div>
|
|
<div style="padding-bottom: 3px;" class="grc2 titleblock">Critical Damage: <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: <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"/> -
|
|
<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: <button
|
|
type="roll"
|
|
name="roll_weapondamage"
|
|
value="@{weapondamage}"
|
|
></button></div>
|
|
<div style="padding-bottom: 3px;" class="grc2 titleblock">Critical Damage: <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: <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--> |