Obsidian Portal
Menu
Sign In / Create Account
JavaScript is currently disabled. Obsidian Portal has a lot of really cool features that use JavaScript. You should check them out. We think you'll have a much more enjoyable experience.
Home
Campaigns
Games Nearby
Plans
Community
Help
Resources
ACKS Player's Sheet
Author:
ajlukavsky
Slug:
acksheet
Type:
GameCharacter
System:
Adventurer Conqueror King
DST Source Code
HTML Template
<div class="character-sheet clearfix"> <div class="fancybox"> <h3 class="title">Basic Information</h3> <div class="twothirdswidth"> <table width="100%"> <col /> <col /> <col /> <col width="14%" /> <tr> <tr> <td class="dsf dsf_character name"></td> <td class="dsf dsf_class"></td> <td class="dsf dsf_title"></td> <td class="dsf dsf_level"></td> </tr> <tr> <th>character name</th> <th>class</th> <th>title</th> <th>level</th> </tr> </table> <table width="100%"> <col /> <col width="19%" /> <col width="21%" /> <col width="21%" /> <col width="20%" /> <tr> <tr> <td class="dsf dsf_race"></td> <td class="dsf dsf_gender"></td> <td class="dsf dsf_alignment"></td> <td class="dsf dsf_xp_bonus"></td> <td class="dsf dsf_experience_points">0</td> </tr> <tr> <th>race</th> <th>gender</th> <th>alignment</th> <th>xp bonus</th> <th>xp</th> </tr> <tr> <td style="text-align:center;" <td colspan="4" class="dsf dsf_languages"></td> <td class="dsf dsf_xp_next"></td> </tr> <tr> <th colspan="4">languages</th> <th>xp next</th> </tr> <tr> <td style="text-align:center;" <td colspan="1" class="dsf dsf_height"></td> <td style="text-align:center;" <td colspan="1" class="dsf dsf_weight"></td> <td style="text-align:center;" <td colspan="3" class="dsf dsf_mortal_wounds">None</td> </tr> <tr> <th colspan="1">height</th> <th colspan="1">weight</th> <th colspan="3">mortal wounds</th> </tr> </table> </div> <div class="thirdwidth"> <div class="dsf dsf_avatar_image readonly"> </div> </div> <div class="fancybox statsbox thirdwidth"> <h3 class="title">Attributes</h3> <table width="100%"> <col /> <col width="30%" /> <col width="30%" /> <tr> <th>name</th> <th>score</th> <th>mod</th> </tr><tr> <th style="text-align:center;" <th class="stat">STR</th> <td class="dsf dsf_strength">9</td> <td class="dsf dsf_strength_mod readonly"></td> </tr><tr> <th style="text-align:center;" <th class="stat">INT</th> <td class="dsf dsf_intelligence">9</td> <td class="dsf dsf_intelligence_mod readonly"></td> </tr><tr> <th style="text-align:center;" <th class="stat">WIS</th> <td class="dsf dsf_wisdom">9</td> <td class="dsf dsf_wisdom_mod readonly"></td> </tr><tr> <th style="text-align:center;" <th class="stat">DEX</th> <td class="dsf dsf_dexterity">9</td> <td class="dsf dsf_dexterity_mod readonly"></td> </tr><tr> <th style="text-align:center;" <th class="stat">CON</th> <td class="dsf dsf_constitution">9</td> <td class="dsf dsf_constitution_mod readonly"></td> </tr><tr> <th style="text-align:center;" <th class="stat">CHA</th> <td class="dsf dsf_charisma">9</td> <td class="dsf dsf_charisma_mod readonly"></td> </tr> </table> </div> <div class="fancybox savesbox thirdwidth"> <h3 class="title">Saving Throws</h3> <table width="100%"> <col /> <col width="33%" /> <tr> <th>name</th> <th>score</th> </tr><tr> <th>PETRIFICATION/</br>PARALYSIS</th> <td class="dsf dsf_petrification"></td> </tr><tr> <th>POISON/</br>DEATH</th> <td class="dsf dsf_poison"></td> </tr><tr> <th>BLAST/BREATH</th> <td class="dsf dsf_blast"></td> </tr><tr> <th>STAFF/WANDS</th> <td class="dsf dsf_staff"></td> </tr><tr> <th>SPELLS</th> <td class="dsf dsf_spell"></td> </tr> </table> </div> <div class="fancybox actionsbox thirdwidth"> <h3 class="title">Standard Actions</h3> <table width="100%"> <col /> <col width="33%" /> <tr> <th>name</th> <th>throw</th> </tr><tr> <th>CLIMB</th> <td class="dsf dsf_climb">18+</td> </tr><tr> </tr><tr> <th>BASH</th> <td class="dsf dsf_open doors">18+</td> </tr><tr> <th>SEARCH</th> <td class="dsf dsf_secret doors">18+</td> </tr><tr> <th>LISTEN</th> <td class="dsf dsf_hear noise">18+</td> </tr><tr> <th>DISARM</th> <td class="dsf dsf_find traps">18+</td> </tr><tr> <th>HUNT</th> <td class="dsf dsf_hunt">14+</td> </tr><tr> <th>FORAGE</th> <td class="dsf dsf_forage">18+</td> </tr> </table> </div> <div class="fancybox hpbox quarterwidth"> <h3 class="title">Hit Points</h4> <table width="100%"> <col /> <col width="5%"/> <col width="45%"/> <tr> <td class="dsf dsf_wounds"></td> <td class=>/</td> <td class="dsf dsf_hp"></td> </tr><tr> <th colspan="1" class=>current</th> <th colspan="1" class=></th> <th colspan="1" class=>max</th> </tr> </table> </div> <div class="fancybox acbox quarterwidth"> <h3 class="title">Armor Class</h4> <table width="100%"> <col /> <tr> <td class="dsf dsf_armrclss">0</td> </tr><tr> <th class=>dex + armor + prof</th> </tr> </table> </div> <div class="fancybox initiativebox quarterwidth"> <h3 class="title">Initiative Mod<br></h4> <table width="100%"> <col /> <tr> <td class="dsf dsf_initativ_total">0</td> </tr><tr> <th>dex + prof</th> </tr> </table> </div> <div class="fancybox surprisebox quarterwidth"> <h3 class="title">Surprise<br></h4> <table width="100%"> <col /> <tr> <td class="dsf dsf_surprise">2</td> </tr><tr> <th>race + prof</th> </tr> </table> </div> <div class="fancybox tohitbox"> <h3 class="title">To-Hit</h4> <table width="100%"> <col /> <col width="9%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <tr> <th style="text-align:center;" colspan="13">note : enter weapon attack throw value at AC0 to populate table</th> </tr><tr> <th>AC-2</th> <th>AC-1</th> <th>AC0</th> <th>AC1</th> <th>AC2</th> <th>AC3</th> <th>AC4</th> <th>AC5</th> <th>AC6</th> <th>AC7</th> <th>AC8</th> <th>AC9</th> </tr><tr> <td class="dsf dsf_tohit-2 readonly"></td> <td class="dsf dsf_tohit-1 readonly"></td> <td class="dsf dsf_tohit0">10</td> <td class="dsf dsf_tohit1 readonly"></td> <td class="dsf dsf_tohit2 readonly"></td> <td class="dsf dsf_tohit3 readonly"></td> <td class="dsf dsf_tohit4 readonly"></td> <td class="dsf dsf_tohit5 readonly"></td> <td class="dsf dsf_tohit6 readonly"></td> <td class="dsf dsf_tohit7 readonly"></td> <td class="dsf dsf_tohit8 readonly"></td> <td class="dsf dsf_tohit9 readonly"></td> </tr> </table> </div> <div class="fancybox weaponbox"> <h3 class="title">Weapons<span class="ctlAddWeapon addButton">+ Add</span></h3> <div class="dsf dsf_ctlWeaponCount" style="display:none"></div> <table class="weaponTable" prefix="weapon"> <th>name</th> <th>attack</br>throw</th> <th>damage</th> <th>range (s/m/l)</th> <th>special qualities</th> </tr> </table> </div> <div class="fancybox armorbox"> <h3 class="title">Protective Items (armor, shield, ring, etc)<span class="ctlAddArmor addButton">+ Add</span></h3> <div class="dsf dsf_ctlArmorCount" style="display:none"></div> <table class="armorTable" prefix="armor"> <th>name</th> <th>armor bonus</th> <th>special qualities</th> </tr> </table> </div> <div class="fancybox Inventorybox"> <h3 class="title">Carried Items</h3> <table width="100%"> <col /> <col width="6%"/> <col width="12%"/> <col width="0%"/> <col width="0%"/> <col width="39%"/> <col width="6%"/> <col width="12%"/> <tr> <th style="text-align:center;" colspan="8">note : all weights entered in stone. large items are 1 stone. small items are 0.17 stone. </br>armor is 1 stone per point of AC. do not use dashes for items with negligible weight. </br>enter 0 or leave blank. # entries do not autosum the weight column values. </tr><tr> <th>item</th> <th>#</th> <th>weight</br> in stone</th> <th rowspan="18" class="collapse" style="width: 2px !important;"></th> <th rowspan="18" class="collapse" style="width: 2px !important;border-left: 1px solid #8A8A8A !important;"></th> <th>item</th> <th>#</th> <th>weight</br> in stone</th> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventory1"></td> <td style="text-align:center;" <td class="dsf dsf_inventory1_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory1_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventory2"></td> <td style="text-align:center;" <td class="dsf dsf_inventory2_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory2_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventory3"></td> <td style="text-align:center;" <td class="dsf dsf_inventory3_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory3_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventory4"></td> <td style="text-align:center;" <td class="dsf dsf_inventory4_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory4_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventory5"></td> <td style="text-align:center;" <td class="dsf dsf_inventory5_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory5_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventory6"></td> <td style="text-align:center;" <td class="dsf dsf_inventory6_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory6_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventory7"></td> <td style="text-align:center;" <td class="dsf dsf_inventory7_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory7_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventory8"></td> <td style="text-align:center;" <td class="dsf dsf_inventory8_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory8_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventory9"></td> <td style="text-align:center;" <td class="dsf dsf_inventory9_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventory9_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventorya"></td> <td style="text-align:center;" <td class="dsf dsf_inventorya_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventorya_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryb"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryb_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryb_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryc"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryc_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryc_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryd"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryd_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryd_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventorye"></td> <td style="text-align:center;" <td class="dsf dsf_inventorye_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventorye_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryf"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryf_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryf_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryg"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryg_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryg_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryh"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryh_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryh_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryi"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryi_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryi_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryj"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryj_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryj_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryk"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryk_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryk_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryl"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryl_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryl_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventorym"></td> <td style="text-align:center;" <td class="dsf dsf_inventorym_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventorym_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryn"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryn_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryn_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryo"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryo_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryo_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryp"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryp_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryp_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryq"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryq_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryq_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryr"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryr_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryr_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventorys"></td> <td style="text-align:center;" <td class="dsf dsf_inventorys_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventorys_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryt"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryt_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryt_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryu"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryu_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryu_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryv"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryv_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryv_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryw"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryw_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryw_wt"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_inventoryx"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryx_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryx_wt"></td> <td style="text-align:left;"<td class="dsf dsf_inventoryy"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryy_quantity"></td> <td style="text-align:center;" <td class="dsf dsf_inventoryy_wt"></td> </tr><tr> </table> </div> <div class="fancybox Lootbox halfwidth"> <h3 class="title">Loot Items</h3> <table width="100%"> <col /> <col width="28%" /> <tr> <th>name</th> <th>value (gp)</th> </tr><tr> <td style="text-align:left;" <td class="dsf dsf_loot1"></td> <td style="text-align:center;" <td class="dsf dsf_loot1_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot2"></td> <td style="text-align:center;" <td class="dsf dsf_loot2_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot3"></td> <td style="text-align:center;" <td class="dsf dsf_loot3_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot4"></td> <td style="text-align:center;" <td class="dsf dsf_loot4_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot5"></td> <td style="text-align:center;" <td class="dsf dsf_loot5_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot6"></td> <td style="text-align:center;" <td class="dsf dsf_loot6_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot7"></td> <td style="text-align:center;" <td class="dsf dsf_loot7_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot8"></td> <td style="text-align:center;" <td class="dsf dsf_loot8_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loot9"></td> <td style="text-align:center;" <td class="dsf dsf_loot9_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loota"></td> <td style="text-align:center;" <td class="dsf dsf_loota_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_lootb"></td> <td style="text-align:center;" <td class="dsf dsf_lootb_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_lootc"></td> <td style="text-align:center;" <td class="dsf dsf_lootc_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_lootd"></td> <td style="text-align:center;" <td class="dsf dsf_lootd_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_loote"></td> <td style="text-align:center;" <td class="dsf dsf_loote_val"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_lootf"></td> <td style="text-align:center;" <td class="dsf dsf_lootf_val"></td> </table> </div> <div class="fancybox MoneyBox halfwidth"> <h3 class="title">Coin</h4> <div class="fancybox MoneyOnHandBox halfwidth"> <h4 class="title">ON PERSON</h4> <table width="100%"> <th style="text-align:right;" >copper (cp)</th> <td style="text-align:right;" <td class="dsf dsf_cp">0</td> </tr><tr> <th style="text-align:right;" >silver (sp)</th> <td style="text-align:right;" <td class="dsf dsf_sp">0</td> </tr><tr> <th style="text-align:right;" >electrum (ep)</th> <td style="text-align:right;" <td class="dsf dsf_ep">0</td> </tr><tr> <th style="text-align:right;" >gold (gp)</th> <td style="text-align:right;" <td class="dsf dsf_gp">0</td> </tr><tr> <th style="text-align:right;" >platinum (pp)</th> <td style="text-align:right;" <td class="dsf dsf_pp">0</td> </table> </div> <div class="fancybox MoneyInStorageBox halfwidth"> <h4 class="title">IN STORAGE</h4> <table width="100%"> <th style="text-align:right;" >copper (cp)</th> <td style="text-align:right;" <td class="dsf dsf_cps">0</td> </tr><tr> <th style="text-align:right;" >silver (sp)</th> <td style="text-align:right;" <td class="dsf dsf_sps">0</td> </tr><tr> <th style="text-align:right;" >electrum (ep)</th> <td style="text-align:right;" <td class="dsf dsf_eps">0</td> </tr><tr> <th style="text-align:right;" >gold (gp)</th> <td style="text-align:right;" <td class="dsf dsf_gps">0</td> </tr><tr> <th style="text-align:right;" >platinum (pp)</th> <td style="text-align:right;" <td class="dsf dsf_pps">0</td> </tr><tr> </table> </div> </table> </div> <div class="fancybox TotalMoneyBox"> <table width="100%"> <col /> <col width="1%" /> <th style="text-align:right;" class=>total wealth (gp) -</th> <td class="dsf dsf_wealth_total readonly"></td> </table> </div> <div class="fancybox speedbox"> <h3 class="title">Encumbrance and Movement Rate</h4> <table width="100%"> <col /> <col width="25%" /> <col width="25%" /> <col width="25%" /> <tr> <th>combat / stealth</th> <th>exploration / run</th> <th>climb / swim</th> <th>daily distance (miles)</th> </tr><tr> <td class="dsf dsf_speed_combat readonly"></td> <td class="dsf dsf_speed_run readonly"></td> <td class="dsf dsf_speed_climb readonly"></td> <td class="dsf dsf_daily readonly"></td> </tr> </table> </div> <div class="fancybox TotalEncumbranceBox"> <table width="100%"> <col /> <col width="1%" /> <col width="1%" /> <th style="text-align:center;"class=>0 to 5 (light)   5.1 to 7 (moderate)   7.1 to 10 (heavy)   10.1+ (encumbered)</th> <td class="dsf dsf_totalweight readonly"></td> <td class="dsf dsf_encumbrance readonly"></td> </table> </div> <div class="abilitybox fancybox"> <h3 class="title">Class Abilities<span class="ctlAddAbility addButton">+ Add</span></h3> <div class="dsf dsf_ctlAbilityCount" style="display:none"></div> <table width="100%" class="abilityTable" prefix="special_ability"> <tr><th>name</th><th>description</th></tr> </table> </div> <div class="featbox fancybox"> <h3 class="title">Learned Proficiencies<span class="ctlAddFeat addButton">+ Add</span></h3> <div class="dsf dsf_ctlFeatCount" style="display:none"></div> <table width="100%" class="featTable" prefix="feat"> <tr><th>name</th><th>description</th></tr> </table> </div> <div class="fancybox ThiefBox thirdwidth"> <h3 class="title">Thief Skills</h4> <table width="100%"> <th style="text-align:center;" >pick pockets</th> <td style="text-align:center;" <td class="dsf dsf_pick">-</td> </tr><tr> <th style="text-align:center;" >open locks</th> <td style="text-align:center;" <td class="dsf dsf_locks">-</td> </tr><tr> <th style="text-align:center;" >find / remove traps</th> <td style="text-align:center;" <td class="dsf dsf_find">-</td> </tr><tr> <th style="text-align:center;" >move silently</th> <td style="text-align:center;" <td class="dsf dsf_move">-</td> </tr><tr> <th style="text-align:center;" >hide in shadows</th> <td style="text-align:center;" <td class="dsf dsf_hide">-</td> </tr><tr> <th style="text-align:center;" >hear noise</th> <td style="text-align:center;" <td class="dsf dsf_hear">-</td> </tr><tr> <th style="text-align:center;" >climb walls</th> <td style="text-align:center;" <td class="dsf dsf_climb">-</td> </tr><tr> <th style="text-align:center;" >read languages</th> <td style="text-align:center;" <td class="dsf dsf_read">-</td> </tr><tr> </table> </div> <div class="fancybox ClericBox thirdwidth"> <h3 class="title">Turn Undead</h4> <table width="100%"> <th style="text-align:center;" >skeleton</th> <td style="text-align:center;" <td class="dsf dsf_skeleton">-</td> </tr><tr> <th style="text-align:center;" >zombie</th> <td style="text-align:center;" <td class="dsf dsf_zombie">-</td> </tr><tr> <th style="text-align:center;" >ghoul</th> <td style="text-align:center;" <td class="dsf dsf_ghoul">-</td> </tr><tr> <th style="text-align:center;" >wight</th> <td style="text-align:center;" <td class="dsf dsf_wight">-</td> </tr><tr> <th style="text-align:center;" >wraith</th> <td style="text-align:center;" <td class="dsf dsf_wraith">-</td> </tr><tr> <th style="text-align:center;" >mummy</th> <td style="text-align:center;" <td class="dsf dsf_mummy">-</td> </tr><tr> <th style="text-align:center;" >spectre</th> <td style="text-align:center;" <td class="dsf dsf_spectre">-</td> </tr><tr> <th style="text-align:center;" >vampire</th> <td style="text-align:center;" <td class="dsf dsf_vampire">-</td> </tr><tr> <th style="text-align:center;" >infernal</th> <td style="text-align:center;" <td class="dsf dsf_infernal">-</td> </tr><tr> </table> </div> <div class="fancybox SpellsPerDayBox thirdwidth"> <h3 class="title">Spells</h4> <table width="100%"> <col /> <col width="46%" /> <col width="27%" /> <tr> <th>spells</br>/ day</th> <th>spell</br>level</th> <th> repetoire</br>limit</th> </tr><tr> <td class="dsf dsf_s1rem">-</td> <th style="text-align:center;" >1</th> <td class="dsf dsf_s1max">-</td> </tr><tr> <td class="dsf dsf_s2rem">-</td> <th style="text-align:center;" >2</th> <td class="dsf dsf_s2max">-</td> </tr><tr> <td class="dsf dsf_s3rem">-</td> <th style="text-align:center;" >3</th> <td class="dsf dsf_s3max">-</td> </tr><tr> <td class="dsf dsf_s4rem">-</td> <th style="text-align:center;" >4</th> <td class="dsf dsf_s4max">-</td> </tr><tr> <td class="dsf dsf_s5rem">-</td> <th style="text-align:center;" >5</th> <td class="dsf dsf_s5max">-</td> </tr><tr> <td class="dsf dsf_s6rem">-</td> <th style="text-align:center;" >6</th> <td class="dsf dsf_s6max">-</td> </tr> </table> </div> <div class="fancybox repertoirebox"> <h3 class="title">SPELL BOOK</h4> <h3 class="title">Level 1<span class="ctlAddRepertoire addButton">+ Add</span></h3> <div class="dsf dsf_ctlRepertoireCount" style="display:none"></div> <table class="repertoireTable" prefix="repertoire"> <th>name</th> <th>description</th> </tr> </table> </div> <div class="fancybox repertoire2box"> <h3 class="title">Level 2<span class="ctlAddRepertoire2 addButton">+ Add</span></h3> <div class="dsf dsf_ctlRepertoire2Count" style="display:none"></div> <table class="repertoire2Table" prefix="repertoire2"> <th>name</th> <th>description</th> </tr> </table> </div> <div class="fancybox repertoire3box"> <h3 class="title">Level 3<span class="ctlAddRepertoire3 addButton">+ Add</span></h3> <div class="dsf dsf_ctlRepertoire3Count" style="display:none"></div> <table class="repertoire3Table" prefix="repertoire3"> <th>name</th> <th>description</th> </tr> </table> </div> <div class="fancybox repertoire4box"> <h3 class="title">Level 4<span class="ctlAddRepertoire4 addButton">+ Add</span></h3> <div class="dsf dsf_ctlRepertoire4Count" style="display:none"></div> <table class="repertoire4Table" prefix="repertoire4"> <th>name</th> <th>description</th> </tr> </table> </div> <div class="fancybox repertoire5box"> <h3 class="title">Level 5<span class="ctlAddRepertoire5 addButton">+ Add</span></h3> <div class="dsf dsf_ctlRepertoire5Count" style="display:none"></div> <table class="repertoire5Table" prefix="repertoire5"> <th>name</th> <th>description</th> </tr> </table> </div> <div class="fancybox repertoire6box"> <h3 class="title">Level 6<span class="ctlAddRepertoire6 addButton">+ Add</span></h3> <div class="dsf dsf_ctlRepertoire6Count" style="display:none"></div> <table class="repertoire6Table" prefix="repertoire6"> <th>name</th> <th>description</th> </tr> </table> </div> <div class="fancybox Notebox"> <table width="100%"> <h3 class="title">Notes (quests, names, rumours, details, etc)</h3> <table width="100%"> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes1"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes2"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes3"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes4"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes5"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes6"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes7"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes8"></td> </tr><tr> <td style="text-align:left;"<td class="dsf dsf_notes9"></td> </tr><tr> </table> </div> <div class="fancybox henchmenbox"> <h3 class="title">Henchmen, Followers, Specialists & Mercenaries</h3> <div class="fancybox HenchmanBox thirdwidth"> <table width="100%"> <col /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <td colspan="6" style="text-align:center;" <td class="dsf dsf_name1"></td> <th rowspan="28" class="collapse" style="width: 2px !important;"></th> <th rowspan="28" class="collapse" style="width: 2px !important;border-left: 1px solid #8A8A8A !important;"></th> </tr><tr> <th colspan="6" style="text-align:center;" >name</th> </tr><tr> <td colspan="4" style="text-align:center;" <td class="dsf dsf_class1"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_level1"></td> </tr><tr> <th colspan="4" style="text-align:center;" >class</th> <th colspan="2" style="text-align:center;" >lvl/hd</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_hp1"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_ac1"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_attack1"></td> </tr><tr> <th colspan="2" style="text-align:center;" >hp</th> <th colspan="2" style="text-align:center;" >ac</th> <th colspan="2" style="text-align:center;" >attack</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_damage1"></td> <td colspan="1" style="text-align:center;" <td class="dsf dsf_loyalty1"></td> <td colspan="3" style="text-align:center;" <td class="dsf dsf_move1"></td> </tr><tr> <th colspan="2" style="text-align:center;" >damage</th> <th colspan="1" style="text-align:center;" >loyalty</th> <th colspan="3" style="text-align:center;" >move</th> </tr><tr> <th colspan="6" style="text-align:center;" >abilities/proficiencies</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof11"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof12"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof13"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof14"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof15"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof16"></td> </tr><tr> <th colspan="6" style="text-align:center;" >equipment</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip11"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip12"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip13"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip14"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip15"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip16"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip17"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip18"></td> </tr> </table> </div> <div class="fancybox HenchmanBox thirdwidth"> <table width="100%"> <col /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <td colspan="6" style="text-align:center;" <td class="dsf dsf_name2"></td> <th rowspan="28" class="collapse" style="width: 2px !important;"></th> <th rowspan="28" class="collapse" style="width: 2px !important;border-left: 1px solid #8A8A8A !important;"></th> </tr><tr> <th colspan="6" style="text-align:center;" >name</th> </tr><tr> <td colspan="4" style="text-align:center;" <td class="dsf dsf_class2"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_level2"></td> </tr><tr> <th colspan="4" style="text-align:center;" >class</th> <th colspan="2" style="text-align:center;" >lvl/hd</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_hp2"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_ac2"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_attack2"></td> </tr><tr> <th colspan="2" style="text-align:center;" >hp</th> <th colspan="2" style="text-align:center;" >ac</th> <th colspan="2" style="text-align:center;" >attack</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_damage2"></td> <td colspan="1" style="text-align:center;" <td class="dsf dsf_loyalty2"></td> <td colspan="3" style="text-align:center;" <td class="dsf dsf_move2"></td> </tr><tr> <th colspan="2" style="text-align:center;" >damage</th> <th colspan="1" style="text-align:center;" >loyalty</th> <th colspan="3" style="text-align:center;" >move</th> </tr><tr> <th colspan="6" style="text-align:center;" >abilities/proficiencies</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof21"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof22"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof23"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof24"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof25"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof26"></td> </tr><tr> <th colspan="6" style="text-align:center;" >equipment</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip21"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip22"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip23"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip24"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip25"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip26"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip27"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip28"></td> </tr> </table> </div> <div class="fancybox HenchmanBox thirdwidth"> <table width="100%"> <col /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <td colspan="6" style="text-align:center;" <td class="dsf dsf_name3"></td> </tr><tr> <th colspan="6" style="text-align:center;" >name</th> </tr><tr> <td colspan="4" style="text-align:center;" <td class="dsf dsf_class3"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_level3"></td> </tr><tr> <th colspan="4" style="text-align:center;" >class</th> <th colspan="2" style="text-align:center;" >lvl/hd</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_hp3"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_ac3"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_attack3"></td> </tr><tr> <th colspan="2" style="text-align:center;" >hp</th> <th colspan="2" style="text-align:center;" >ac</th> <th colspan="2" style="text-align:center;" >attack</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_damage3"></td> <td colspan="1" style="text-align:center;" <td class="dsf dsf_loyalty3"></td> <td colspan="3" style="text-align:center;" <td class="dsf dsf_move3"></td> </tr><tr> <th colspan="2" style="text-align:center;" >damage</th> <th colspan="1" style="text-align:center;" >loyalty</th> <th colspan="3" style="text-align:center;" >move</th> </tr><tr> <th colspan="6" style="text-align:center;" >abilities/proficiencies</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof31"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof32"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof33"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof34"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof35"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof36"></td> </tr><tr> <th colspan="6" style="text-align:center;" >equipment</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip31"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip32"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip33"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip34"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip35"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip36"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip37"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip38"></td> </tr> </table> </div> <div class="fancybox HenchmanBox"> <h4 class="title"> </h4> <div class="fancybox HenchmanBox thirdwidth"> <table width="100%"> <col /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <td colspan="6" style="text-align:center;" <td class="dsf dsf_name4"></td> <th rowspan="28" class="collapse" style="width: 2px !important;"></th> <th rowspan="28" class="collapse" style="width: 2px !important;border-left: 1px solid #8A8A8A !important;"></th> </tr><tr> <th colspan="6" style="text-align:center;" >name</th> </tr><tr> <td colspan="4" style="text-align:center;" <td class="dsf dsf_class4"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_level4"></td> </tr><tr> <th colspan="4" style="text-align:center;" >class</th> <th colspan="2" style="text-align:center;" >lvl/hd</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_hp4"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_ac4"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_attack4"></td> </tr><tr> <th colspan="2" style="text-align:center;" >hp</th> <th colspan="2" style="text-align:center;" >ac</th> <th colspan="2" style="text-align:center;" >attack</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_damage4"></td> <td colspan="1" style="text-align:center;" <td class="dsf dsf_loyalty4"></td> <td colspan="3" style="text-align:center;" <td class="dsf dsf_move4"></td> </tr><tr> <th colspan="2" style="text-align:center;" >damage</th> <th colspan="1" style="text-align:center;" >loyalty</th> <th colspan="3" style="text-align:center;" >move</th> </tr><tr> <th colspan="6" style="text-align:center;" >abilities/proficiencies</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof41"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof42"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof43"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof44"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof45"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof46"></td> </tr><tr> <th colspan="6" style="text-align:center;" >equipment</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip41"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip42"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip43"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip44"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip45"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip46"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip47"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip48"></td> </tr> </table> </div> <div class="fancybox HenchmanBox thirdwidth"> <table width="100%"> <col /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <td colspan="6" style="text-align:center;" <td class="dsf dsf_name5"></td> <th rowspan="28" class="collapse" style="width: 2px !important;"></th> <th rowspan="28" class="collapse" style="width: 2px !important;border-left: 1px solid #8A8A8A !important;"></th> </tr><tr> <th colspan="6" style="text-align:center;" >name</th> </tr><tr> <td colspan="4" style="text-align:center;" <td class="dsf dsf_class5"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_level5"></td> </tr><tr> <th colspan="4" style="text-align:center;" >class</th> <th colspan="2" style="text-align:center;" >lvl/hd</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_hp5"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_ac5"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_attack5"></td> </tr><tr> <th colspan="2" style="text-align:center;" >hp</th> <th colspan="2" style="text-align:center;" >ac</th> <th colspan="2" style="text-align:center;" >attack</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_damage5"></td> <td colspan="1" style="text-align:center;" <td class="dsf dsf_loyalty5"></td> <td colspan="3" style="text-align:center;" <td class="dsf dsf_move5"></td> </tr><tr> <th colspan="2" style="text-align:center;" >damage</th> <th colspan="1" style="text-align:center;" >loyalty</th> <th colspan="3" style="text-align:center;" >move</th> </tr><tr> <th colspan="6" style="text-align:center;" >abilities/proficiencies</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof51"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof52"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof53"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof54"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof55"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof56"></td> </tr><tr> <th colspan="6" style="text-align:center;" >equipment</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip51"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip52"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip53"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip54"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip55"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip56"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip57"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip58"></td> </tr> </table> </div> <div class="fancybox HenchmanBox thirdwidth"> <table width="100%"> <col /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <td colspan="6" style="text-align:center;" <td class="dsf dsf_name6"></td> </tr><tr> <th colspan="6" style="text-align:center;" >name</th> </tr><tr> <td colspan="4" style="text-align:center;" <td class="dsf dsf_class6"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_level6"></td> </tr><tr> <th colspan="4" style="text-align:center;" >class</th> <th colspan="2" style="text-align:center;" >lvl/hd</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_hp6"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_ac6"></td> <td colspan="2" style="text-align:center;" <td class="dsf dsf_attack6"></td> </tr><tr> <th colspan="2" style="text-align:center;" >hp</th> <th colspan="2" style="text-align:center;" >ac</th> <th colspan="2" style="text-align:center;" >attack</th> </tr><tr> <td colspan="2" style="text-align:center;" <td class="dsf dsf_damage6"></td> <td colspan="1" style="text-align:center;" <td class="dsf dsf_loyalty6"></td> <td colspan="3" style="text-align:center;" <td class="dsf dsf_move6"></td> </tr><tr> <th colspan="2" style="text-align:center;" >damage</th> <th colspan="1" style="text-align:center;" >loyalty</th> <th colspan="3" style="text-align:center;" >move</th> </tr><tr> <th colspan="6" style="text-align:center;" >abilities/proficiencies</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof61"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof62"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof63"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof64"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof65"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_prof66"></td> </tr><tr> <th colspan="6" style="text-align:center;" >equipment</th> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip61"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip62"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip63"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip64"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip65"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip66"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip67"></td> </tr><tr> <td colspan="6" style="text-align:left;" <td class="dsf dsf_equip68"></td> </tr> </table> </div> </table> </div> </table> </div> <div class="fancybox"> <h3 class="title">Character Bio</h3> <div class="dsf dsf_bio readonly"></div> </div> </div> <div style="position:absolute;bottom:10px;width:730px;text-align:center;font-size:12pt;z-index:2;"> Character By <span class="dsf dsf_player"></span> • Sheet By <span class="dsf dsf_dst_author"></span> </div>
CSS
.ds_acksheet .clearfix:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;k } .ds_acksheet .clearfix { display: inline-block; } .ds_acksheet .clearfix { height: 1%; } .ds_acksheet label { background-color:#ffffff; } .ds_acksheet { line-height: 20px; width: 99%; background-color: #d3d2b3; padding: 0; margin: 0; border: 0; } .ds_acksheet .fancybox { /*padding: 0 0 2px 0;*/ padding: 2px; margin: 5px 0 0 0; display: inline-block; width: 99%; vertical-align: top; float: left; } /* Tables */ .ds_acksheet table { margin: 0; border-collapse: separate; border-spacing: 1px; background-color: #d3d2b3; } .ds_acksheet td { padding: 6px 5px 5px 5px; font-family: 'Comic Sans MS'; font-weight: normal; color: #000000; text-align: center; vertical-align: top; margin: 0 3px; background-color: #ffffff; } .ds_acksheet th { border-top: 1px solid grey; padding-top: 3px; text-align: center; vertical-align: center; font-family: 'MS Sans Serif'; font-weight: bold; font-variant: small-caps; color: #96958b; margin: 0 3px; background-color: #f4f4e8; } .ds_acksheet tF { border-top: 1px solid grey; padding-top: 3px; text-align: center; vertical-align: center; font-family: 'MS Sans Serif'; font-weight: bold; font-variant: small-caps; color: #ffff; margin: 0 3px; background-color: #000; } /* Active Areas */ .ds_acksheet .dsf { vertical-align: center; } .ds_acksheet.editable span.dsf { min-width: 20px; display: inline-block } .ds_acksheet .noborder { border: none !important; } /* Titles */ .ds_acksheet .title { width: 100%; text-align: center; margin: 0; padding: 1px 0; } .ds_acksheet h3.title { font-family: 'Georgia'; background-color: #77776b; color: #FFFFFF; font-size: 20px; padding: 1px 0; font-variant: small-caps; font-weight: normal; } .ds_acksheet h4.title { font-family: 'MS Sans Serif'; background-color: #77776b; color: #FFFFFF; font-size: 14px; font-variant: small-caps; font-weight: normal; padding: 1px; } .ds_acksheet h5.title { font-family: 'MS Sans Serif'; background-color: #f4f4e8; color: #96958b; font-size: 13px; font-variant: small-caps; font-weight: bold; padding: 1px; } .ds_acksheet .newSpellsDialog { font-family: Book Antiqua3, Palatino, serif; background: #000000; /* Old browsers */ color: #96958b; font-size: 16px; width: 100%; text-align: center; margin: 0; padding: 2px 0; } .ds_acksheet .newSpellsDialog label { display: inline; font: inherit; } .ds_acksheet .newSpellsDialog input { padding: 0 2px; font: inherit; } .ds_acksheet .collapse { width: 1px !important; padding: 0 !important; margin: 0 !important; border-spacing: 0 !important; border: none !important; } .ds_acksheet .addButton, .ds_acksheet .removeButton { display: none; } .ds_acksheet.editable .addButton { display: inline; float: right; margin: 3px 8px; padding: 4px 5px; border-radius: 4px; background-color: #ccc; color: #111; cursor: pointer; font-weight: normal; font-size: 10px; line-height: 11px; } .ds_acksheet.editable .removeButton { display: inline; float: right; margin: 3px 8px; padding: 4px 5px; border-radius: 4px; background-color: #722; color: #fff; cursor: pointer; font-weight: normal; font-size: 10px; line-height: 11px; } .ds_acksheet.editable .dsf { border-radius: 2px; } .ds_acksheet.editable .dsf.readonly, .ds_acksheet.editable .dsf.checkbox { border-radius: 0; } .ds_acksheet .quarterwidth { width: 24.2%; display: inline-block; margin-top: 0; vertical-align: top; } .halfwidth.halfwidthright { padding-right: 1%; } .ds_acksheet .halfwidth { width: 48.5%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .thirdwidth { width: 32.7%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .sixthwidth { width: 16%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .eighthwidth { width: 11%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .twothirdswidth { width: 65.4%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .threequarterwidth { width: 74.5%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .twofifthswidth { width: 41%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .spellSection .quarterwidth { width: 19%; display: inline-block; margin-top: 0; vertical-align: top; } .ds_acksheet .spellSection .threequarterwidth { width: 79%; display: inline-block; margin-top: 0; vertical-align: top; margin-right: 2%; } .ds_acksheet .domain { border-top-left-radius: 0; border-top-right-radius: 0; margin-left: -1px; width: 181px; box-shadow: none; } .ds_acksheet .dcbox { width: 1px; margin-right: -1px; } .ds_acksheet .spellSection { margin-top: 5px; border-top-left-radius: inherit; border-top-right-radius: inherit; } .ds_acksheet .skillTable tr > td:first-child { text-align: left; } .ds_acksheet .statsbox th.stat, .ds_acksheet .savesbox th.stat, .ds_acksheet .actionsbox th.stat { padding-top: 3px; font-family: MS Sans Serif; color: #8B8A80; font-size: 19px; font-variant: small-caps; font-weight: bold; vertical-align: bottom; } .ds_acksheet .spellList { margin: 2px 1px 2px 2px; display: inline-block; font-size: 16px; font-family: 'Book Antiqua; font-weight: normal; color: #000000; border-bottom: 1px solid grey; } .ds_acksheet .spellList .dsf { width: 490px; display: inline-block; height: 100%; } .ds_acksheet .spellList .spellLevel { width: 16px; display: inline-block; } .ds_acksheet .dsf_bio { min-height: 100px; height: 100%; padding: 5px; font-family: 'Book Antiqua; font-size: 16px; font-style: italic; color: #000000; } .ds_acksheet .sideways { -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); text-align: left; vertical-align: top; display: block; margin: 10px 0 15px 0; font-size: 10px; } .ds_acksheet .dsf_avatar_image { height: 100%; }
JavaScript
var $ = jQuery; aisleten.characters.jeditablePlaceholder = " "; function acksheet_dataPreLoad(options) { if ($.browser.msie) { } if(typeof dynamic_sheet_attrs == "undefined") dynamic_sheet_attrs = {}; var containerId = "#" + options['containerId']; //Set defaults to keep the editing fields from making the form gross var defaults = { str: "10", dex: "10", "con": "10", "int": "10", wis: "10", cha: "10", languages: "Common", ctlFeatCount: 5, //Default number on Takissis's sheet ctlSpellCount: 0, //Default number on Takissis's sheet ctlAbilityCount: 5, //Default number on Takissis's sheet ctlSpelldescriptionCount: 5, //Default number on Takissis's sheet ctlInventoryCount: 10, //Due to poor numbering, the max number on Takissis's sheet ctlSkillCount: 0, //Start with no extra skill lines ctlTraitCount: 2, //A little extra padding to fill space ctlWeaponCount: 2, //Two rows, primary and backup ctlRepertoireCount: 0, // ctlRepertoire2Count: 0, // ctlRepertoire3Count: 0, // ctlRepertoire4Count: 0, // ctlRepertoire5Count: 0, // ctlRepertoire6Count: 0, // ctlArmorCount: 2, //Two rows, primary and backup ctlSpellSectionCount: 0 } dynamic_sheet_attrs = $.extend(defaults, dynamic_sheet_attrs); if (!options.isEditable) { //We're in read-only mode, so alter the sheet a little to make it more useful //Can't add if it's not an edit $(containerId + " .newSpellsDialog").hide(); if (dynamic_sheet_attrs.ctlSpellSectionCount <= 0) { //Not a wielder, so hide that section $(containerId + " .spellbox").hide(); } if (dynamic_sheet_attrs.ctlTraitCount <= 0) { //Not a wielder, so hide that section $(containerId + " .traitbox").hide(); } if (dynamic_sheet_attrs.ctlFeatCount <= 0) { //Not a wielder, so hide that section $(containerId + " .featbox").hide(); } if (dynamic_sheet_attrs.ctlSpellCount <= 0) { //Not a wielder, so hide that section $(containerId + " .spellbox").hide(); } if (dynamic_sheet_attrs.ctlAbilityCount <= 0) { //Not a wielder, so hide that section $(containerId + " .abilitybox").hide(); } if (dynamic_sheet_attrs.ctlSpelldescriptionCount <= 0) { //Not a wielder, so hide that section $(containerId + " .spelldescriptionbox").hide(); } } else { //First, we ensure that all the dynamic tables show at least one row if (dynamic_sheet_attrs.ctlFeatCount < 5) { dynamic_sheet_attrs.ctlFeatCount = 5; } if (dynamic_sheet_attrs.ctlSpellCount < 0) { dynamic_sheet_attrs.ctlSpellCount = 0; } if (dynamic_sheet_attrs.ctlAbilityCount < 5) { dynamic_sheet_attrs.ctlAbilityCount = 5; } if (dynamic_sheet_attrs.ctlSpelldescriptionCount < 0) { dynamic_sheet_attrs.ctlSpelldescriptionCount = 0; } if (dynamic_sheet_attrs.ctlTraitCount < 2) { dynamic_sheet_attrs.ctlTraitCount = 2; } if (dynamic_sheet_attrs.ctlSkillCount < 0) { dynamic_sheet_attrs.ctlSkillCount = 0; } if (dynamic_sheet_attrs.ctlWeaponCount < 2) { dynamic_sheet_attrs.ctlWeaponCount = 2; } if (dynamic_sheet_attrs.ctlRepertoireCount < 2) { dynamic_sheet_attrs.ctlRepertoireCount = 2; } if (dynamic_sheet_attrs.ctlRepertoire2Count < 2) { dynamic_sheet_attrs.ctlRepertoire2Count = 2; } if (dynamic_sheet_attrs.ctlRepertoire3Count < 2) { dynamic_sheet_attrs.ctlRepertoire3Count = 2; } if (dynamic_sheet_attrs.ctlRepertoire4Count < 2) { dynamic_sheet_attrs.ctlRepertoire4Count = 2; } if (dynamic_sheet_attrs.ctlRepertoire5Count < 2) { dynamic_sheet_attrs.ctlRepertoire5Count = 2; } if (dynamic_sheet_attrs.ctlRepertoire6Count < 2) { dynamic_sheet_attrs.ctlRepertoire6Count = 2; } if (dynamic_sheet_attrs.ctlArmorCount < 2) { dynamic_sheet_attrs.ctlArmorCount = 2; } if (dynamic_sheet_attrs.ctlInventoryCount < 9) { dynamic_sheet_attrs.ctlInventoryCount = 9; } //Loading in editing mode, so wire up the event handlers $(containerId + " .ctlAddFeat").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlFeatCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addFeatRow('featTable', 'feat', count, containerId, true); }); $(containerId + " .ctlAddSpell").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlSpellCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addSpellRow('spellTable', 'spell', count, containerId, true); }); $(containerId + " .ctlAddAbility").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlAbilityCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addFeatRow('abilityTable', 'special_ability', count, containerId, true); }); $(containerId + " .ctlAddSpelldescription").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlSpelldescriptionCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addFeatRow('spelldescriptionTable', 'spell_description', count, containerId, true); }); $(containerId + " .ctlAddTrait").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlTraitCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addFeatRow('traitTable', 'trait', count, containerId, true); }); $(containerId + " .ctlAddSkill").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlSkillCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addSkillRow('skillTable', count, containerId, true); }); $(containerId + " .ctlAddWeapon").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlWeaponCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addWeaponRow('weaponTable', count, containerId, true); }); $(containerId + " .ctlAddRepertoire").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlRepertoireCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addRepertoireRow('repertoireTable', count, containerId, true); }); $(containerId + " .ctlAddRepertoire2").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlRepertoire2Count"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addRepertoire2Row('repertoire2Table', count, containerId, true); }); $(containerId + " .ctlAddRepertoire3").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlRepertoire3Count"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addRepertoire3Row('repertoire3Table', count, containerId, true); }); $(containerId + " .ctlAddRepertoire4").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlRepertoire4Count"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addRepertoire4Row('repertoire4Table', count, containerId, true); }); $(containerId + " .ctlAddRepertoire5").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlRepertoire5Count"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addRepertoire5Row('repertoire5Table', count, containerId, true); }); $(containerId + " .ctlAddRepertoire6").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlRepertoire6Count"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addRepertoire6Row('repertoire6Table', count, containerId, true); }); $(containerId + " .ctlAddArmor").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlArmorCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addArmorRow('armorTable', count, containerId, true); }); $(containerId + " .ctlAddInventory").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlInventoryCount"); var count = Number(ctl.text())+1; ctl.text(count); acksheet_addInventoryRow('inventorybox', count, containerId, true); }); $(containerId + " .ctlAddSpellSection").bind("click.acksheet", function () { var ctl = $(containerId + " .dsf_ctlSpellSectionCount"); var count = Number(ctl.text()); ctl.text(count + 1); acksheet_addSpellSection('spellbox', count, containerId, true); }); $(containerId).delegate(".ctlRemoveSpellSection", "click", function () { var ctl = $(containerId + " .dsf_ctlSpellSectionCount"); var count = Number(ctl.text()) - 1; ctl.text(count); ctl = $(this).parents(".spellSectionContainer").next(); $(this).parents(".spellSectionContainer").remove(); acksheet_renumberSpellSections(ctl); }); } //Now, we initialize the dynamic rows to hold the incoming data for (var i=1; i<=dynamic_sheet_attrs.ctlFeatCount; i++) { acksheet_addFeatRow('featTable', 'feat', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlSpellCount; i++) { acksheet_addSpellRow('spellTable', 'spell', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlAbilityCount; i++) { acksheet_addFeatRow('abilityTable', 'special_ability', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlSpelldescriptionCount; i++) { acksheet_addFeatRow('spelldescriptionTable', 'spell_description', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlTraitCount; i++) { acksheet_addFeatRow('traitTable', 'trait', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlSkillCount; i++) { acksheet_addSkillRow('skillTable', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlWeaponCount; i++) { acksheet_addWeaponRow('weaponTable', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlRepertoireCount; i++) { acksheet_addRepertoireRow('repertoireTable', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlRepertoire2Count; i++) { acksheet_addRepertoire2Row('repertoire2Table', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlRepertoire3Count; i++) { acksheet_addRepertoire3Row('repertoire3Table', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlRepertoire4Count; i++) { acksheet_addRepertoire4Row('repertoire4Table', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlRepertoire5Count; i++) { acksheet_addRepertoire5Row('repertoire5Table', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlRepertoire6Count; i++) { acksheet_addRepertoire6Row('repertoire6Table', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlArmorCount; i++) { acksheet_addArmorRow('armorTable', i, containerId, options.isEditable); } for (var i=1; i<=dynamic_sheet_attrs.ctlInventoryCount; i++) { acksheet_addInventoryRow('inventorybox', i, containerId, options.isEditable); } for (var i=0; i<dynamic_sheet_attrs.ctlSpellSectionCount; i++) { acksheet_addSpellSection('spellbox', i, containerId, options.isEditable, dynamic_sheet_attrs["spsSec" + i + "_Spontaneous"] == '1', dynamic_sheet_attrs["spsSec" + i + "_Spellbook"] == '1', dynamic_sheet_attrs["spsSec" + i + "_Domains" + i + "_Domains"] == '1', dynamic_sheet_attrs["spsSec" + i + "_MinLevel"], dynamic_sheet_attrs["spsSec" + i + "_MaxLevel"]); } } function acksheet_dataPostLoad(options) { //alert(JSON.stringify(dynamic_sheet_attrs)); // Called just after the data is loaded. if (options.isEditable) { var containerId = "#" + options['containerId']; //since we're editing, make sure that all the data is recalculated and correct acksheet_updateStat("str", containerId); acksheet_updateStat("dex", containerId); acksheet_updateStat("con", containerId); acksheet_updateStat("int", containerId); acksheet_updateStat("wis", containerId); acksheet_updateStat("cha", containerId); acksheet_updateInventoryStuff(containerId); var fixHelper = function(e, ui) { ui.children().each(function() { $(this).width($(this).width()); }); return ui; }; //Wire up sortable tables $(containerId + " .featTable").sortable({ items: "tr:not(:first)", helper: fixHelper, update: acksheet_InventoryStuff }); $(containerId + " .abilityTable").sortable({ items: "tr:not(:first)", helper: fixHelper, update: acksheet_renumberTable }); $(containerId + " .spelldescriptionTable").sortable({ items: "tr:not(:first)", helper: fixHelper, update: acksheet_renumberTable }); $(containerId + " .traitTable").sortable({ items: "tr:not(:first)", helper: fixHelper, update: acksheet_renumberTable }); $(containerId + " .inventorybox").sortable({ items: "div.item", helper: fixHelper, update: acksheet_renumberItems }); $(containerId + " .featTable tr, " + containerId + " .abilityTable tr, " + containerId + " .spelldescriptionTable tr, " + containerId + " .traitTable tr, " + containerId + " .inventorybox div.item").disableSelection(); } } function acksheet_dataChange(options) { // Called immediately after a data value is changed. // alert("dataChange. " + options['fieldName'] + " = " + options['fieldValue']); var field = options['fieldName']; var val = options['fieldValue']; var containerId = "#" + options['containerId']; //need to push the values to the other versions of the field //required due to how jEditable works $(containerId + " .dsf_" + field).text(val); switch (field) { case "str": case "str_damage": case "str_boost": acksheet_updateStat("str", containerId); break; case "int": case "int_damage": case "int_boost": acksheet_updateStat("int", containerId); break; case "wis": case "wis_damage": case "wis_boost": acksheet_updateStat("wis", containerId); break; case "dex": case "dex_damage": case "dex_boost": acksheet_updateStat("dex", containerId); break; case "con": case "con_damage": case "con_boost": acksheet_updateStat("con", containerId); break; case "cha": case "cha_damage": case "cha_boost": acksheet_updateStat("cha", containerId); break; case "strength": case "strength_mod": acksheet_updateStrength(containerId); break; case "intelligence": case "intelligence_mod": acksheet_updateIntelligence(containerId); break; case "wisdom": case "wisdom_mod": acksheet_updateWisdom(containerId); break; case "dexterity": case "dexterity_mod": acksheet_updateDexterity(containerId); break; case "constitution": case "constitution_mod": acksheet_updateConstitution(containerId); break; case "charisma": case "charisma_mod": acksheet_updateCharisma(containerId); break; case "base_fort_save": case "magic_fort_mod": case "misc_fort_mod": case "temp_fort_mod": case "base_reflex_save": case "magic_reflex_mod": case "misc_reflex_mod": case "temp_reflex_mod": case "base_willpower_save": case "magic_willpower_mod": case "misc_willpower_mod": case "temp_willpower_mod": acksheet_updateSaves(containerId); break; case "misc_init_mod": acksheet_updateInit(containerId); break; case "size_mod": acksheet_updateAC(containerId); case "bab": acksheet_updateAttacks(containerId); case "misc_grapple_mod": acksheet_updateGrapple(containerId); break; case "armor_bonus": case "shield_bonus": case "dex_mod_armor": case "deflection_mod": case "misc_mod": case "natural_armor": acksheet_updateAC(containerId); break; case "tohit-2": case "tohit-1": case "tohit0": case "tohit1": case "tohit2": case "tohit3": case "tohit4": case "tohit5": case "tohit6": case "tohit7": case "tohit8": case "tohit9": case "pp": case "gp": case "ep": case "sp": case "cp": case "pps": case "gps": case "eps": case "sps": case "cps": case "inventory1_wt": case "inventory2_wt": case "inventory3_wt": case "inventory4_wt": case "inventory5_wt": case "inventory6_wt": case "inventory7_wt": case "inventory8_wt": case "inventory9_wt": case "inventorya_wt": case "inventoryb_wt": case "inventoryc_wt": case "inventoryd_wt": case "inventorye_wt": case "inventoryf_wt": case "inventoryg_wt": case "inventoryh_wt": case "inventoryi_wt": case "inventoryj_wt": case "inventoryl_wt": case "inventorym_wt": case "inventoryn_wt": case "inventoryo_wt": case "inventoryp_wt": case "inventoryq_wt": case "inventoryr_wt": case "inventorys_wt": case "inventoryt_wt": case "inventoryu_wt": case "inventoryv_wt": case "inventoryw_wt": case "inventoryx_wt": case "inventoryy_wt": case "loot1_val": case "loot2_val": case "loot3_val": case "loot4_val": case "loot5_val": case "loot6_val": case "loot7_val": case "loot8_val": case "loot9_val": case "loota_val": case "lootb_val": case "lootc_val": case "lootd_val": case "loote_val": case "lootf_val": case "totalweight": case "wealth_total": case "speed_base": case "speed_combat": case "speed_run": case "speed_climb": case "daily": case "encumbrance": acksheet_updateInventoryStuff(containerId); break; } if ((field.substr(field.length - 6) == '_ranks')) { acksheet_updateSkill(containerId, "dsf_" + field.substr(0, field.length - 6)); } else if ((field.substr(field.length - 9) == '_misc_mod')) { acksheet_updateSkill(containerId, "dsf_" + field.substr(0, field.length - 9)); } else if ((field.substr(field.length - 8) == '_ability')) { acksheet_updateSkill(containerId, "dsf_" + field.substr(0, field.length - 8)); } else if ((field.length >= 14) && (field.substr(0, 6) == 'spsSec') && (field.substr(field.length - 6) == 'BaseDC')) { for (var l=0; l<=9; l++) { $(containerId + " .dsf_" + field.substr(0, 7) + "_DC" + l).text(Number(val) + l); } } } function acksheet_dataPreSave(options) { // Called just before the data is saved to the server. // alert("dataPreSave"); var containerId = "#" + options['containerId']; //Comb through the dynamic tables and remove empty values acksheet_cleanTable("feat", "Feat", containerId); acksheet_cleanTable("spell", "Spell", containerId); acksheet_cleanTable("special_ability", "Ability", containerId); acksheet_cleanTable("spell_description", "Spelldescription", containerId); acksheet_cleanTable("trait", "Trait", containerId); acksheet_cleanTable("extra_skill", "Skill", containerId); acksheet_cleanTable("weapon", "Weapon", containerId); acksheet_cleanTable("repertoire", "Repertoire", containerId); acksheet_cleanTable("repertoire2", "Repertoire2", containerId); acksheet_cleanTable("repertoire3", "Repertoire3", containerId); acksheet_cleanTable("repertoire4", "Repertoire4", containerId); acksheet_cleanTable("repertoire5", "Repertoire5", containerId); acksheet_cleanTable("repertoire6", "Repertoire6", containerId); acksheet_cleanTable("armor", "Armor", containerId); acksheet_cleanInventoryTable(containerId); //Because we're deleting rows, we need to recalculate the relevant cells //acksheet_updateTotal("Equipment", "equMass", containerId); } // You can define your own variables...just make sure to namespace them! function acksheet_updateStat(stat, containerId) { var value = Number($(containerId + " .dsf_" + stat).text()) - Number($(containerId + " .dsf_" + stat + "_damage").text()) + Number($(containerId + " .dsf_" + stat + "_boost").text()); if (acksheet_isNumeric(value)) { $(containerId + " .dsf_" + stat + "_mod").text(Math.round((parseInt(value) - 10) / 3)); switch (stat) { case "strength": acksheet_updateAttacks(containerId); acksheet_updateGrapple(containerId); break; case "wisdom": acksheet_updateSaves(containerId); break; case "dexterity": acksheet_updateSaves(containerId); acksheet_updateInit(containerId); acksheet_updateAttacks(containerId); acksheet_updateAC(containerId); break; case "constitution": acksheet_updateSaves(containerId); break; } acksheet_updateSkills(containerId, stat); } } function acksheet_updateStrength(containerId) { var strengthmod; var strength = Number($(containerId + " .dsf_strength").text()); if (strength <= 3) {strengthmod = "-3";} else if ((strength >3) && (strength <= 5)) {strengthmod = "-2";} else if ((strength > 5) && (strength <= 8)) {strengthmod = "-1";} else if ((strength > 8) && (strength <= 12)) {strengthmod = "-";} else if ((strength > 12) && (strength <= 15)) {strengthmod = "+1";} else if ((strength > 15) && (strength <= 17)) {strengthmod = "+2";} else {strengthmod = "+3";} $(containerId + " .dsf_strength_mod").text(strengthmod); } function acksheet_updateIntelligence(containerId) { var intelligencemod; var intelligence = Number($(containerId + " .dsf_intelligence").text()); if (intelligence <= 3) {intelligencemod = "-3";} else if ((intelligence >3) && (intelligence <= 5)) {intelligencemod = "-2";} else if ((intelligence > 5) && (intelligence <= 8)) {intelligencemod = "-1";} else if ((intelligence > 8) && (intelligence <= 12)) {intelligencemod = "-";} else if ((intelligence > 12) && (intelligence <= 15)) {intelligencemod = "+1";} else if ((intelligence > 15) && (intelligence <= 17)) {intelligencemod = "+2";} else {intelligencemod = "+3";} $(containerId + " .dsf_intelligence_mod").text(intelligencemod); } function acksheet_updateWisdom(containerId) { var wisdommod; var wisdom = Number($(containerId + " .dsf_wisdom").text()); if (wisdom <= 3) {wisdommod = "-3";} else if ((wisdom >3) && (wisdom <= 5)) {wisdommod = "-2";} else if ((wisdom > 5) && (wisdom <= 8)) {wisdommod = "-1";} else if ((wisdom > 8) && (wisdom <= 12)) {wisdommod = "-";} else if ((wisdom > 12) && (wisdom <= 15)) {wisdommod = "+1";} else if ((wisdom > 15) && (wisdom <= 17)) {wisdommod = "+2";} else {wisdommod = "+3";} $(containerId + " .dsf_wisdom_mod").text(wisdommod); } function acksheet_updateDexterity(containerId) { var dexteritymod; var dexterity = Number($(containerId + " .dsf_dexterity").text()); if (dexterity <= 3) {dexteritymod = "-3";} else if ((dexterity >3) && (dexterity <= 5)) {dexteritymod = "-2";} else if ((dexterity > 5) && (dexterity <= 8)) {dexteritymod = "-1";} else if ((dexterity > 8) && (dexterity <= 12)) {dexteritymod = "-";} else if ((dexterity > 12) && (dexterity <= 15)) {dexteritymod = "+1";} else if ((dexterity > 15) && (dexterity <= 17)) {dexteritymod = "+2";} else {dexteritymod = "+3";} $(containerId + " .dsf_dexterity_mod").text(dexteritymod); } function acksheet_updateConstitution(containerId) { var constitutionmod; var constitution = Number($(containerId + " .dsf_constitution").text()); if (constitution <= 3) {constitutionmod = "-3";} else if ((constitution >3) && (constitution <= 5)) {constitutionmod = "-2";} else if ((constitution > 5) && (constitution <= 8)) {constitutionmod = "-1";} else if ((constitution > 8) && (constitution <= 12)) {constitutionmod = "-";} else if ((constitution > 12) && (constitution <= 15)) {constitutionmod = "+1";} else if ((constitution > 15) && (constitution <= 17)) {constitutionmod = "+2";} else {constitutionmod = "+3";} $(containerId + " .dsf_constitution_mod").text(constitutionmod); } function acksheet_updateCharisma(containerId) { var charismamod; var charisma = Number($(containerId + " .dsf_charisma").text()); if (charisma <= 3) {charismamod = "-3";} else if ((charisma >3) && (charisma <= 5)) {charismamod = "-2";} else if ((charisma > 5) && (charisma <= 8)) {charismamod = "-1";} else if ((charisma > 8) && (charisma <= 12)) {charismamod = "-";} else if ((charisma > 12) && (charisma <= 15)) {charismamod = "+1";} else if ((charisma > 15) && (charisma <= 17)) {charismamod = "+2";} else {charismamod = "+3";} $(containerId + " .dsf_charisma_mod").text(charismamod); } function acksheet_updateSaves(containerId) { $(containerId + " .dsf_fortitude_total").text(Number($(containerId + " .dsf_base_fort_save").text()) + Number($(containerId + " .dsf_con_mod:first").text()) + Number($(containerId + " .dsf_magic_fort_mod").text()) + Number($(containerId + " .dsf_misc_fort_mod").text()) + Number($(containerId + " .dsf_temp_fort_mod").text())); $(containerId + " .dsf_willpower_total").text(Number($(containerId + " .dsf_base_willpower_save").text()) + Number($(containerId + " .dsf_wis_mod:first").text()) + Number($(containerId + " .dsf_magic_willpower_mod").text()) + Number($(containerId + " .dsf_misc_willpower_mod").text()) + Number($(containerId + " .dsf_temp_willpower_mod").text())); $(containerId + " .dsf_reflex_total").text(Number($(containerId + " .dsf_base_reflex_save").text()) + Number($(containerId + " .dsf_dex_mod:first").text()) + Number($(containerId + " .dsf_magic_reflex_mod").text()) + Number($(containerId + " .dsf_misc_reflex_mod").text()) + Number($(containerId + " .dsf_temp_reflex_mod").text())); } function acksheet_updateInit(containerId) { $(containerId + " .dsf_initative_total").text(Number($(containerId + " .dsf_dexterity_mod:first").text()) + Number($(containerId + " .dsf_misc_init_mod").text())); } function acksheet_updateAC(containerId) { $(containerId + " .dsf_ac").text(0 + Number($(containerId + " .dsf_armor_bonus").text()) + Number($(containerId + " .dsf_shield_bonus").text()) + Number($(containerId + " .dsf_dexterity_mod").text()) + Number($(containerId + " .dsf_misc_mod").text())); } function acksheet_updateGrapple(containerId) { var val = $(containerId + " .dsf_size_mod:first").text(); if (acksheet_isNumeric(val)) $(containerId + " .dsf_size_mod_grapple").text(-4 * parseFloat(val)); else $(containerId + " .dsf_size_mod_grapple").text(""); $(containerId + " .dsf_grapple_total").text(Number($(containerId + " .dsf_str_mod:first").text()) + Number($(containerId + " .dsf_bab:first").text()) + Number($(containerId + " .dsf_size_mod_grapple").text()) + Number($(containerId + " .dsf_misc_grapple_mod").text())); } function acksheet_updateAttacks(containerId) { var bab = Number($(containerId + " .dsf_bab:first").text()); var ranged = bab + Number($(containerId + " .dsf_size_mod:first").text()) + Number($(containerId + " .dsf_dex_mod:first").text()) + Number($(containerId + " .dsf_attack_ranged_misc").text()); var melee = bab + Number($(containerId + " .dsf_size_mod:first").text()) + Number($(containerId + " .dsf_str_mod:first").text()) + Number($(containerId + " .dsf_attack_melee_misc").text()); if (bab < 6) { $(containerId + " .dsf_attack_melee_total").text(acksheet_signedInt(melee)); $(containerId + " .dsf_attack_ranged_total").text(acksheet_signedInt(ranged)); } else if (bab < 11) { $(containerId + " .dsf_attack_melee_total").text(acksheet_signedInt(melee) + "/" + acksheet_signedInt(melee-5)); $(containerId + " .dsf_attack_ranged_total").text(acksheet_signedInt(ranged) + "/" + acksheet_signedInt(ranged-5)); } else if (bab < 16) { $(containerId + " .dsf_attack_melee_total").text(acksheet_signedInt(melee) + "/" + acksheet_signedInt(melee-5) + "/" + acksheet_signedInt(melee-10)); $(containerId + " .dsf_attack_ranged_total").text(acksheet_signedInt(ranged) + "/" + acksheet_signedInt(ranged-5) + "/" + acksheet_signedInt(ranged-10)); } else { $(containerId + " .dsf_attack_melee_total").text(acksheet_signedInt(melee) + "/" + acksheet_signedInt(melee-5) + "/" + acksheet_signedInt(melee-10) + "/" + acksheet_signedInt(melee-15)); $(containerId + " .dsf_attack_ranged_total").text(acksheet_signedInt(ranged) + "/" + acksheet_signedInt(ranged-5) + "/" + acksheet_signedInt(ranged-10) + "/" + acksheet_signedInt(ranged-15)); } } function acksheet_updateSkills(containerId, stat) { var id; stat = stat[0].toUpperCase() + stat.substr(1).toLowerCase(); $(containerId + " .skillTable td:contains(" + stat + ")").each(function (i, c) { id = acksheet_findDsfClass($(c).next()); if (id) { acksheet_updateSkill(containerId, id.substr(0, id.length - 4)); } }); } function acksheet_updateSkill(containerId, skill) { var modtype = $(containerId + " ." + skill + "_mod").prev().text().toLowerCase(); var ranks = Number($(containerId + " ." + skill + "_ranks").text()); var abilMod = Number($(containerId + " .dsf_" + modtype + "_mod:first").text()); if (ranks <= 0) { ranks = 0; } var ctl = $(containerId + " ." + skill + "_ability_mod"); if (ctl.length) { //Custom field, so fill in the stat mod ctl.text(acksheet_signedInt(abilMod)); } and $(containerId + " ." + skill + "_mod").text(acksheet_signedInt(ranks + Number($(containerId + " ." + skill + "_misc_mod").text()) + abilMod)); } function acksheet_updateTotal(countTitle, fieldName, containerId) { var count = Number($(containerId + " .dsf_ctl" + countTitle + "Count").text()); var sum = 0; for (var i=0; i<count; i++) { var val = Number($(containerId + " .dsf_" + fieldName + i).text()); if (!isNaN(val)) sum += val; } $(containerId + " .dsf_" + fieldName + "Total").text(Math.round(100.0 * sum) / 100.0); } function acksheet_updateInventoryStuff(containerId) { $(containerId + " .dsf_tohit-2").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) - 2 ) *100) /100); $(containerId + " .dsf_tohit-1").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) -1 ) *100) /100); $(containerId + " .dsf_tohit1").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 1 ) *100) /100); $(containerId + " .dsf_tohit2").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 2 ) *100) /100); $(containerId + " .dsf_tohit3").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 3 ) *100) /100); $(containerId + " .dsf_tohit4").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 4 ) *100) /100); $(containerId + " .dsf_tohit5").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 5 ) *100) /100); $(containerId + " .dsf_tohit6").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 6 ) *100) /100); $(containerId + " .dsf_tohit7").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 7 ) *100) /100); $(containerId + " .dsf_tohit8").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 8 ) *100) /100); $(containerId + " .dsf_tohit9").text(Math.round(( Number($(containerId + " .dsf_tohit0").text()) + 9 ) *100) /100); $(containerId + " .dsf_wealth_total").text(Math.round(( Number($(containerId + " .dsf_pp").text()) * 5 + Number($(containerId + " .dsf_gp").text()) + Number($(containerId + " .dsf_ep").text()) /2 + Number($(containerId + " .dsf_sp").text()) / 10.0 + Number($(containerId + " .dsf_cp").text()) / 100 + Number($(containerId + " .dsf_pps").text()) * 5 + Number($(containerId + " .dsf_gps").text()) + Number($(containerId + " .dsf_eps").text()) /2 + Number($(containerId + " .dsf_sps").text()) / 10.0 + Number($(containerId + " .dsf_cps").text()) / 100 + Number($(containerId + " .dsf_loot1_val").text()) + Number($(containerId + " .dsf_loot2_val").text()) + Number($(containerId + " .dsf_loot3_val").text()) + Number($(containerId + " .dsf_loot4_val").text()) + Number($(containerId + " .dsf_loot5_val").text()) + Number($(containerId + " .dsf_loot6_val").text()) + Number($(containerId + " .dsf_loot7_val").text()) + Number($(containerId + " .dsf_loot8_val").text()) + Number($(containerId + " .dsf_loot9_val").text()) + Number($(containerId + " .dsf_loota_val").text()) + Number($(containerId + " .dsf_lootb_val").text()) + Number($(containerId + " .dsf_lootc_val").text()) + Number($(containerId + " .dsf_lootd_val").text()) + Number($(containerId + " .dsf_loote_val").text()) + Number($(containerId + " .dsf_lootf_val").text()) )*100) /100); $(containerId + " .dsf_totalweight").text(Math.round(( Number($(containerId + " .dsf_inventory1_wt").text()) + Number($(containerId + " .dsf_inventory2_wt").text()) + Number($(containerId + " .dsf_inventory3_wt").text()) + Number($(containerId + " .dsf_inventory4_wt").text()) + Number($(containerId + " .dsf_inventory5_wt").text()) + Number($(containerId + " .dsf_inventory6_wt").text()) + Number($(containerId + " .dsf_inventory7_wt").text()) + Number($(containerId + " .dsf_inventory8_wt").text()) + Number($(containerId + " .dsf_inventory9_wt").text()) + Number($(containerId + " .dsf_inventorya_wt").text()) + Number($(containerId + " .dsf_inventoryb_wt").text()) + Number($(containerId + " .dsf_inventoryc_wt").text()) + Number($(containerId + " .dsf_inventoryd_wt").text()) + Number($(containerId + " .dsf_inventorye_wt").text()) + Number($(containerId + " .dsf_inventoryf_wt").text()) + Number($(containerId + " .dsf_inventoryg_wt").text()) + Number($(containerId + " .dsf_inventoryh_wt").text()) + Number($(containerId + " .dsf_inventoryi_wt").text()) + Number($(containerId + " .dsf_inventoryj_wt").text()) + Number($(containerId + " .dsf_inventoryk_wt").text()) + Number($(containerId + " .dsf_inventoryl_wt").text()) + Number($(containerId + " .dsf_inventorym_wt").text()) + Number($(containerId + " .dsf_inventoryn_wt").text()) + Number($(containerId + " .dsf_inventoryo_wt").text()) + Number($(containerId + " .dsf_inventoryp_wt").text()) + Number($(containerId + " .dsf_inventoryq_wt").text()) + Number($(containerId + " .dsf_inventoryr_wt").text()) + Number($(containerId + " .dsf_inventorys_wt").text()) + Number($(containerId + " .dsf_inventoryt_wt").text()) + Number($(containerId + " .dsf_inventoryu_wt").text()) + Number($(containerId + " .dsf_inventoryv_wt").text()) + Number($(containerId + " .dsf_inventoryw_wt").text()) + Number($(containerId + " .dsf_inventoryx_wt").text()) + Number($(containerId + " .dsf_inventoryy_wt").text()) + Number($(containerId + " .dsf_pp").text()) /1000 + Number($(containerId + " .dsf_gp").text()) /1000 + Number($(containerId + " .dsf_ep").text()) /1000 + Number($(containerId + " .dsf_sp").text()) /1000 + Number($(containerId + " .dsf_cp").text()) /1000 ) *10) /10); { var base; var weight = Number($(containerId + " .dsf_totalweight").text()); if (weight <= 5) {base = 40;} else if ((weight > 5) && (weight <= 7)) {base = 30;} else if ((weight > 7) && (weight <= 10)) {base = 20;} else {base = 10;} $(containerId + " .dsf_speed_combat").text(base); $(containerId + " .dsf_speed_run").text(base * 3); $(containerId + " .dsf_speed_climb").text(base / 4); $(containerId + " .dsf_daily").text((base * 6) / 10); } { var encumbrance; var weight = Number($(containerId + " .dsf_totalweight").text()); if (weight <= 5) {encumbrance = "(Light)";} else if ((weight > 5) && (weight <= 7)) {encumbrance = "(Moderate)";} else if ((weight > 7) && (weight <= 10)) {encumbrance = "(Heavy)";} else {encumbrance = "(Overloaded)";} $(containerId + " .dsf_encumbrance").text(encumbrance); } } function acksheet_bindRow(newRow, containerId) { //Force-bind the new elements. Ah, sweet hax containerId = containerId.replace("#", ""); newRow.find(".dsf").each(function (i, c) { var name = acksheet_findDsfClass(c); if (name) aisleten.characters.bindField(name.replace("dsf_", ""), containerId, 'acksheet'); }); } function acksheet_addFeatRow(table, prefix, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_' + prefix + 'Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_' + prefix + num + '" /><td style="text-align:left;"<td class="dsf dsf_' + prefix + 'Description' + num + '"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addSpellRow(table, prefix, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_' + prefix + 'Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_' + prefix + num + '" /><td style="text-align:left;"<td class="dsf dsf_' + prefix + 'Description' + num + '"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addSkillRow(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_extra_skillRow' + num +'"><td class="dsf dsf_skill' + num + '" /><td class="dsf dsf_skill' + num + '_ability"> </td><td class="dsf dsf_skill' + num + '_mod readonly"> </td><td class="dsf dsf_skill' + num + '_ability_mod readonly"> </td><td class="dsf dsf_skill' + num + '_ranks"> </td><td class="dsf dsf_skill' + num + '_misc_mod"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addWeaponRow(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_weaponRow' + num +'"><td style="text-align:left;"<td class="dsf dsf_weapon' + num + '" /><td class="dsf dsf_weapon' + num + '_attack_bonus"> </td><td class="dsf dsf_weapon' + num + '_damage"> </td><td class="dsf dsf_weapon' + num + '_range"> </td><td style="text-align:center;"<td class="dsf dsf_weapon' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addRepertoireRow(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_repertoireRow' + num +'"><td style="text-align:left;"<td class="dsf dsf_repertoire' + num + '_attack_bonus"> </td><td style="text-align:left;"<td class="dsf dsf_repertoire' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addRepertoire2Row(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_repertoire2Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_repertoire2' + num + '_attack_bonus"> </td><td style="text-align:left;"<td class="dsf dsf_repertoire2' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addRepertoire3Row(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_repertoire3Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_repertoire3' + num + '_attack_bonus"> </td><td style="text-align:left;"<td class="dsf dsf_repertoire3' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addRepertoire4Row(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_repertoire4Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_repertoire4' + num + '_attack_bonus"> </td><td style="text-align:left;"<td class="dsf dsf_repertoire4' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addRepertoire5Row(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_repertoire5Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_repertoire5' + num + '_attack_bonus"> </td><td style="text-align:left;"<td class="dsf dsf_repertoire5' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addRepertoire6Row(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_repertoire6Row' + num +'"><td style="text-align:left;"<td class="dsf dsf_repertoire6' + num + '_attack_bonus"> </td><td style="text-align:left;"<td class="dsf dsf_repertoire6' + num + '_type"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addArmorRow(table, num, containerId, isEditable) { var newRow = $('<tr class="acksheet_armorRow' + num +'"><td style="text-align:left;"<td class="dsf dsf_armor' + num + '" /><td class="dsf dsf_armor' + num + '_attack_bonus"> </td><td class="dsf dsf_armor' + num + '_damage"> </td></tr>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addInventoryRow(table, num, containerId, isEditable) { var newRow = $('<div class="item acksheet_item' + num + '"><table><col /><col width="35" /><tr><td class="dsf dsf_item' + num + '" /><td class="dsf dsf_item' + num + '_weight"> </td></tr><tr><th>Name</th><th>Wt.</th></tr></table></div>'); $(containerId + " ." + table).append(newRow); if (isEditable) { newRow.disableSelection(); acksheet_bindRow(newRow, containerId); } } function acksheet_addSpellSection(table, num, containerId, isEditable, isSpontaneous, usesSpellbook, hasDomains, minLevel, maxLevel) { if (!maxLevel) { //new section, so pull the values from the add dialog isSpontaneous = $(containerId + " .newSpellsDialog input[name=spontaneous]")[0].checked; usesSpellbook = $(containerId + " .newSpellsDialog input[name=spellbook]")[0].checked; hasDomains = $(containerId + " .newSpellsDialog input[name=domains]")[0].checked; minLevel = Number($(containerId + " .newSpellsDialog input[name=minSpellLevel]").val()); maxLevel = Number($(containerId + " .newSpellsDialog input[name=maxSpellLevel]").val()); } //Make sure we have at least some rows to add if (!maxLevel || (maxLevel < 4)) maxLevel = 4; if (!minLevel || (minLevel < 1)) minLevel = 1; if (maxLevel >6) maxLevel = 6; if (minLevel > maxLevel) { var tmp = minLevel; minLevel = maxLevel; maxLevel = tmp; } var html = '<div class="spellSection clearfix spellSectionContainer acksheet_spellSection' + num + '"><div class="dsf dsf_spsSec' + num + '_Spontaneous" style="display:none;">' + (isSpontaneous ? '1' : '0') + '</div><div class="dsf dsf_spsSec' + num + '_Spellbook" style="display:none;">' + (usesSpellbook ? '1' : '0') + '</div><div class="dsf dsf_spsSec' + num + '_Domains" style="display:none;">' + (hasDomains ? '1' : '0') + '</div><div class="dsf dsf_spsSec' + num + '_MaxLevel" style="display:none;">' + maxLevel + '</div><div class="dsf dsf_spsSec' + num + '_MinLevel" style="display:none;">' + minLevel + '</div><div class="spellSection"><h3 class="title">Spells<span class="dsf dsf_spsSec' + num + '_Name"></span><span class="ctlRemoveSpellSection removeButton">- Remove</span></h3></tr><tr>'; var dcTable = '<div class =" domain dcbox quarterwidth"><h4 class ="title">Per-Day</br>total / remaining</h4><table class="dcTable"><col width="15" /><col /><col /><col /><tr>' for (var l=minLevel; l<=maxLevel; l++) { dcTable += '<tr><td class="spellLevel">' + l + ':</td>' dcTable += '<td class="dsf dsf_spsSec' + num + '_PerDayNumber' + l + '">0</td>' dcTable += '<td class="collapse" rowspan="1">/</td>'; if (l == 0) dcTable += '<td>—</td>'; else dcTable += '<td class="dsf dsf_spsSec' + num + '_RemainingNumber' + l + '">0</td>'; dcTable += '</tr>'; } dcTable += "</table>"; if (hasDomains) { for (var d=0; d<3; d++) { html += '<div class=" domain quarterwidth"><h4 class="title"><span class="dsf dsf_spsSec' + num + '_Domain' + d + '_Name"></span></h4><table hidden="domainTable"><col width="13" /><col /><tr><td colspan="2" class="dsf dsf_spsSec' + num + '_Domain' + d + '_Power"></td></tr><tr><th colspan="2">Domain Power</th></tr>'; for (var l=Math.max(1, minLevel); l<=maxLevel; l++) { html += '<tr><td class="spellLevel">' + l + ':</td><td class="dsf dsf_spsSec' + num + '_Domain' + d + '_Spells' + l + '"></td></tr>'; } html += "</table></div>"; } html += dcTable + "</div>"; } else html += '<div class="threequarterwidth">'; if (usesSpellbook) { html += '<h4 style="text-align:left;"<h4 class="title"> Level Spellbook </h4>'; for (var l=minLevel; l<=maxLevel; l++) { html += '<div class="spellList"><div class="spellLevel" style="display:inline-block;">' + l + ':</div><div class="dsf dsf_spsSec' + num + '_Known' + l + '"></div></div>'; } } if (isSpontaneous) html += '<h4 style="text-align:left;"<h4 class="title"> Level Spells Known </h4>'; else html += '<h4 style="text-align:left;"<h4 class="title"> Level Repertoire </h4>'; for (var l=minLevel; l<=maxLevel; l++) { html += '<div class="spellList"><div class="spellLevel" style="display:inline-block;">' + l + ':</div><div class="dsf dsf_spsSec' + num + '_Prepared' + l + '"></div></div>'; } if (!hasDomains) html += "</div>" + dcTable; var newSection = $(html); $(containerId + " ." + table).append(newSection); if (isEditable) { acksheet_bindRow(newSection, containerId); } } function acksheet_cleanTable(prefix, title, containerId) { var max = Number($(containerId + " .dsf_ctl" + title + "Count").text()); var count = 0; for (var i=1; i<=max; i++) { var row = $(containerId + " tr.acksheet_" + prefix + "Row" + i); var obj = row.find("td:first"); if ("" == $.trim(obj.text())) { //This row is empty, so find the relevant tr tags and remove them row.remove(); } else { count++; } } //Nothing to renumber if we remove them all if (count > 0) acksheet_renumberTable(null, { item: $(containerId + " ." + prefix + "Table td:first") }); $(containerId + " .dsf_ctl" + title + "Count").text(count); } function acksheet_cleanInventoryTable(containerId) { var max = Number($(containerId + " .dsf_ctlInventoryCount").text()); var count = 0; for (var i=1; i<=max; i++) { var box = $(containerId + " div.acksheet_item" + i); var obj = box.find("td:first"); if ("" == $.trim(obj.text())) { //This row is empty, so find the relevant tr tags and remove them box.remove(); } else { count++; } } //Nothing to renumber if we remove them all if (count > 0) acksheet_renumberItems(null, { item: $(containerId + " .inventorybox div.item:first") }); $(containerId + " .dsf_ctlInventoryCount").text(count); } function acksheet_findDsfClass(element) { var classes = $(element).attr('class'); if (!classes) return null; classes = classes.split(/\s/); var fieldName = null; $.each(classes, function(i, className) { if(className.substr(0,4) == "dsf_") { fieldName = className; } }); return fieldName; } function acksheet_isNumeric(n) { return ($.isNumeric && $.isNumeric(n)) || (!isNaN(parseFloat(n)) && isFinite(n)); } function acksheet_signedInt(n) { return (n < 0) ? n : ("+" + n) } function acksheet_renumberTable(e, ui) { //ui.item is the tr tag that got moved var parent = ui.item.parents("table"); var prefix = parent.attr("prefix"); var baserow = parent.find(".acksheet_" + prefix + "Row1").children(); baserow.each(function (i, c) { baserow[i] = $(c).prop("class").replace("1", "{0}"); }); //Now that we have the templates, reorder things parent.find("tr:not(:first)").each(function (i, c) { $(c).prop("class", "acksheet_" + prefix + "Row" + (i+1)); $(c).find("td").each(function (j, cc) { var str = baserow[j]; $(cc).prop("class", str.replace(/\{0\}/g, (i+1))); }); }); } function acksheet_renumberItems(e, ui) { //ui.item is the tr tag that got moved var parent = ui.item.parents(".inventorybox"); var baserow = [ "dsf dsf_item{0}", "dsf dsf_item{0}_weight" ]; //Now that we have the templates, reorder things parent.find(".item").each(function (i, c) { $(c).prop("class", "item acksheet_item" + (i+1)); $(c).find("tr:first td").each(function (j, cc) { var str = baserow[j]; $(cc).prop("class", str.replace(/\{0\}/g, (i+1))); }); }); } function acksheet_renumberSpellSections(ctl) { //ctl is the div tag after the item that got removed if (!ctl.length) return; //Removed the last item, so nothing to do var parent = ctl.parents(".spellbox"); var count = Number(parent.find(".dsf_ctlSpellSectionCount").text()); var start = Number(ctl.prop("class").substr(54)); //Now that we have the templates, reorder things for (var i = start; i <= count; i++) { parent.find(".acksheet_spellSection" + i).each(function (j, c) { $(c).prop("class", "spellSection spellSectionContainer acksheet_spellSection" + (i)); $(c).find(".dsf").each(function (j, cc) { var str = $(cc).prop("class"); $(cc).prop("class", str.replace("dsf_spsSec" + i, "dsf_spsSec" + (i))); }); }); } }
Submit Notes
Added quantity column to the inventory section.
Back