Files
roll20-character-sheets/HackMaster_4E/hm4e.html
T

3966 lines
229 KiB
HTML

<div>
<input type="radio" class="tab tab1" name="attr_core-tab" value="1" title="Main" />
<span class="tab tab1" style='width:35px;'>Main</span>
<input type="radio" class="tab tab2" name="attr_core-tab" value="2" title="Stats" />
<span class="tab tab2" style='width:35px;'>Stats</span>
<input type="radio" class="tab tab3" name="attr_core-tab" value="3" title="Combat"/>
<span class="tab tab3">Combat</span>
<input type="radio" class="tab tab4" name="attr_core-tab" value="4" title="Abilities" />
<span class="tab tab4">Abilities</span>
<input type="radio" class="tab tab5" name="attr_core-tab" value="5" title="Equipment" />
<span class="tab tab5" style='width:70px;'>Equipment</span>
<input type="radio" class="tab tab6" name="attr_core-tab" value="6" title="MU" />
<span class="tab tab6" style='width:25px;'>MU</span>
<input type="radio" class="tab tab7" name="attr_core-tab" value="7" title="Cleric/Druid"/>
<span class="tab tab7" style='width:80px;'>Cleric/Druid</span>
<input type="radio" class="tab tab8" name="attr_core-tab" value="8" title="Thief" />
<span class="tab tab8">Thief</span>
<input type="radio" class="tab tab9" name="attr_core-tab" value="9" title="EP" />
<span class="tab tab9" style='width:25px'>EP</span>
<input type="radio" class="tab tab10" name="attr_core-tab" value="10" title="Death" />
<span class="tab tab10">Death</span>
<div class="section-basic background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="three-column">
<div class="tcleft row1"><input type="text" name="attr_player_name" /></input></div>
<div class="tcleft row2 minor-label">Player Name</div>
<div class="tcleft row3"><input type="text" name="attr_character_date" /></input></div>
<div class="tcleft row4 minor-label">Date Character Began</div>
<div class="tccenter titlesection">
<div class="titles">HackMaster 4e</div>
<div class="subtitles">Player Character Record</div>
</div>
<div class="tcright row1"><input type="text" name="attr_player_campaign" /></input></div>
<div class="tcright row2 minor-label">Campaign</div>
<div class="tcright row3">#<input type="text" name="attr_player_number" /></div>
<div class="tcleft row5 inputsize"><img
src="https://ARGHive.net/wp-content/uploads/2020/05/HM4E_BCharacterName.png" /></div>
<div class="tcleft row5 indented"><input type="text" name="attr_character_name" /></input></div>
<div class="tcleft row6 minor-label">Character Name</div>
</div>
<div class="two-column">
<div class="tcleft row1"><span class="fixedwidthlabel">Class(es): </span><input type="text" name="attr_character_class" /></div>
<div class="tcleft row2"><span class="fixedwidthlabel">Class Level(s): </span><input type="text" name="attr_character_level" /></div>
<div class="tcleft row3"><span class="fixedwidthlabel">Patron Gawd: </span><input type="text" name="attr_patron_diety" /></div>
<div class="tcleft row4"><span class="fixedwidthlabel">Religion: </span><input type="text" name="attr_religion" /></div>
<div class="tcright row1"><span class="fixedwidthlabel">Total Level: </span><input type="number" min="0" max="20" name="attr_total_level" /></div>
<div class="tcright row2"><span class="fixedwidthlabel">Race: </span>
<select class="select-standard" name="attr_character_race">
<option value=""></option>
<option value="Aardvarkian">Aardvarkian</option>
<option value="Darkman">Darkman</option>
<option value="Dwarf">Dwarf</option>
<option value="High Elf">High Elf</option>
<option value="Sylvan Elf">Sylvan Elf</option>
<option value="Grey Elf">Grey Elf</option>
<option value="Grunge Elf">Grunge Elf</option>
<option value="Dark Elf">Dark Elf</option>
<option value="Gnome">Gnome</option>
<option value="Gnome Titan">Gnome Titan</option>
<option value="Gnomeling">Gnomeling</option>
<option value="Half-elf">Half-elf</option>
<option value="Halfling">Halfling</option>
<option value="Thug Halfling">Thug Halfling</option>
<option value="Half-Orc">Half-Orc</option>
<option value="Half-Ogre">Half-Ogre</option>
<option value="Human">Human</option>
<option value="Pixie Fairy">Pixie Fairy</option>
</select>
</div>
<div class="tcright row3"><span class="fixedwidthlabel">Alignment: </span><input type="text" name="attr_character_alignment" /></div>
<div class="tcright row4"><span class="fixedwidthlabel">Handedness: </span>
<select class="select-standard" name="attr_handedness" >
<option value=""></option>
<option value="Left">Left</option>
<option value="Right">Right</option>
<option value="Ambi">Ambidextrous</option>
</select>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Background</div>
<div class="four-column">
<div class="tcleft row1"><span class="fixedwidthlabel">Place of Origin: </span><input type="text" name="attr_place_of_origin" class="mediumPlusInput" /></div>
<div class="tcleft row2"><span class="fixedwidthlabel">Social Class: </span><input type="text" name="attr_socialclass" class="mediumPlusInput" /></div>
<div class="tcleft row3"><span class="fixedwidthlabel">Looks: </span><input type="text" name="attr_looks" class="mediumPlusInput" /></div>
<div class="tccleft row1"><span class="backgroundlabel">Birth Date: </span><input type="text" name="attr_birthdate" class="backgroundinput"/></div>
<div class="tccleft row2"><span class="backgroundlabel">Birth Rank: </span><input type="text" name="attr_birthrank" class="backgroundinput" /></div>
<div class="tccleft row3"><span class="backgroundlabel">#Siblings: </span><input type="text" name="attr_siblings" class="backgroundinput" /></div>
<div class="tccleft row4"><span class="backgroundlabel">Gender: </span><input type="text" name="attr_gender" class="backgroundinput" /></div>
<div class="tccleft row5"><span class="backgroundlabel">Age: </span><input type="text" name="attr_age" class="backgroundinput" /></div>
<div class="tcright row1"><span class="backgroundlabel">Height: </span><input type="text" name="attr_height" class="backgroundinput" /></div>
<div class="tcright row2"><span class="backgroundlabel">Weight: </span><input type="text" name="attr_weight" class="backgroundinput" /></div>
<div class="tcright row3"><span class="backgroundlabel">Hair: </span><input type="text" name="attr_hair" class="backgroundinput" /></div>
<div class="tcright row4"><span class="backgroundlabel">Facial Hair: </span><input type="text" name="attr_facialhair" class="backgroundinput" /></div>
<div class="tcright row5"><span class="backgroundlabel">Eyes: </span><input type="text" name="attr_eyes" class="backgroundinput" /></div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Movement</div>
<div class="two-column13">
<div class="tcleft row1"><span class="fixedwidthlabel">Armor Bulk: </span><input
class="smallInput readonly" readonly type="text" name="attr_armor_bulk" /></div>
<div class="tcleft row2"><span class="fixedwidthlabel">Clever Packer: </span>
<input type="checkbox" class="checkbox-standard" name="attr_clever_packer" value="X" />
</div>
<div class="tcleft row3"><span class="fixedwidthlabel">Wgt Allowance: </span><input
class="smallInput readonly" readonly type="text" name="attr_str_wgt_allow" /></div>
<div class="tcleft row4"><span class="fixedwidthlabel">Encumberance: </span><input
class="smallInput" type="text" readonly name="attr_character_encumberance" /></div>
<div class="tcleft row5"><span class="fixedwidthlabel">Base Move: </span><input
class="smallInput" type="text" readonly name="attr_base_move" /></div>
<div class="tcleft row6"><span class="fixedwidthlabel">Armor Move Adj: </span><input
class="smallInput readonly" readonly type="text" name="attr_armor_adjustment" /></div>
<div class="tcleft row7"><span class="fixedwidthlabel">Enc. Move Adj: </span><input
class="smallInput readonly" readonly type="text" name="attr_encumberance_adjustment" />
</div>
<div class="tcright row1 biggroup">
<div>
<div class="moveicon"><img src="https://ARGHive.net/wp-content/uploads/2020/05/Icon_Walk.png" /></div>
<span class="fixedwidthlabelnarrow">Walk: </span><input class="reallySmallInput"
type="text" name="attr_move_walk" />
</div>
<div>
<div class="moveicon"><img src="https://ARGHive.net/wp-content/uploads/2020/05/Icon_Running.png" /></div>
<span class="fixedwidthlabelnarrow">Run: </span><input class="reallySmallInput"
type="text" name="attr_move_run" />
</div>
<div>
<div class="moveicon"><img src="https://ARGHive.net/wp-content/uploads/2020/12/icon_Charge2.png"/>
</div>
<span class="fixedwidthlabelnarrow">Charge: </span><input class="reallySmallInput"
type="text" name="attr_move_charge" />
</div>
<div>
<div class="moveicon"><img src="https://arghive.net/wp-content/uploads/2020/05/Icon_Climb.png" /></div>
<span class="fixedwidthlabelnarrow">Climb: </span><input class="reallySmallInput"
type="text" name="attr_move_climb" />
</div>
<div>
<div class="moveicon"><img
src="https://arghive.net/wp-content/uploads/2020/05/Icon_Swimming.png" />
</div>
<span class="fixedwidthlabelnarrow">Swim: </span><input class="reallySmallInput"
type="text" name="attr_move_swim" />
</div>
<div>
<div class="moveicon"><img
src="https://arghive.net/wp-content/uploads/2020/05/Icon_Crawl.png" /></div>
<span class="fixedwidthlabelnarrow">Crawl: </span><input class="reallySmallInput"
type="text" name="attr_move_crawl" />
</div>
<div>
<div class="moveicon"><img
src="https://arghive.net/wp-content/uploads/2020/05/Icon_Brachiate.png" /></div>
<span class="fixedwidthlabelnarrow">Brachiate: </span><input class="reallySmallInput"
type="text" name="attr_move_brachiate" />
</div>
<div>
<div class="moveicon"><img
src="https://arghive.net/wp-content/uploads/2020/05/Icon_Fly.png" /></div>
<span class="fixedwidthlabelnarrow">Fly: </span><input class="reallySmallInput"
type="text" name="attr_move_fly" />
</div>
<div>
<div class="moveicon"><img
src="https://ARGHive.net/wp-content/uploads/2020/05/Icon_Falling-1.png" />
</div>
<span class="fixedwidthlabelnarrow">Fall: </span><input class="reallySmallInput"
type="text" name="attr_move_fall" />
</div>
</div>
<div class="tcright row10">
<div class="subtitles">Encumberance Levels</div>
</div>
<div class="tcright encumberancelevels">
<div>
<span class="">Non: </span><input class="reallySmallInput readonly" readonly type="text"
name="attr_enc_non" />
</div>
<div>
<span class="">Light: </span><input class="reallySmallInput readonly" readonly
type="text" name="attr_enc_light" />
</div>
<div>
<span class="">Moderate: </span><input class="reallySmallInput readonly" readonly
type="text" name="attr_enc_moderate" />
</div>
<div>
<span class="">Heavy: </span><input class="reallySmallInput readonly" readonly
type="text" name="attr_enc_heavy" />
</div>
<div>
<span class="">Severe: </span><input class="reallySmallInput readonly" readonly
type="text" name="attr_enc_severe" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-stats background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="one-column">
<div class="tcleft">
<div><span class="fixedwidthlabelverynarrow">STR</span><input class="tinyInput" type="text"
name="attr_strength" />/<input class="tinyInput" type="text" name="attr_strength_pct" />
<span class="attributebox boxed">
<p>Hit<br />Prob</p><input class="tinyInput boxed" type="text" readonly
name="attr_str_hit_prob" />
</span>
<span class="attributebox boxed">
<p>Dam<br />Adj</p><input class="tinyInput boxed" type="text" readonly
name="attr_str_dam_adj" />
</span>
<span class="attributebox boxed">
<p>Open<br />Doors</p><input class="reallySmallInput boxed" type="text" readonly
name="attr_str_open_door" />
</span>
<span class="attributebox boxed">
<p>Bend<br />Bars</p><input class="tinyInput boxed" type="text" readonly
name="attr_str_bend_bars" />
</span>
<span class="attributebox boxed">
<p>Wgt<br />Allow</p><input class="reallySmallInput boxed" type="text" readonly
name="attr_str_wgt_allow" />
</span>
<span class="attributebox boxed">
<p>Max<br />Press</p><input class="reallySmallInput boxed" type="text" readonly
name="attr_str_max_press" />
</span>
</div>
<div><span class="fixedwidthlabelverynarrow">INT</span><input class="tinyInput" type="text"
name="attr_intelligence" />/<input class="tinyInput" type="text"
name="attr_intelligence_pct" />
<span class="attributebox boxed">
<p># of<br />Lang</p><input class="tinyInput boxed" type="text" readonly
name="attr_int_no_lang" />
</span>
<span class="attributebox boxed">
<p>Spell<br />Level</p><input class="tinyInput boxed" type="text" readonly
name="attr_int_spell_lvl" />
</span>
<span class="attributebox boxed">
<p>Learn<br />Ability</p><input class="tinyInput boxed" type="text" readonly
name="attr_int_learn_ability" />
</span>
<span class="attributebox boxed">
<p>Max<br />Spells</p><input class="tinyInput boxed" type="text" readonly
name="attr_int_max_spells" />
</span>
<span class="attributebox boxed">
<p>Illusion<br />Immune</p><input class="tinyInput boxed" type="text" readonly
name="attr_int_illusion_immunity" />
</span>
<span class="attributebox boxed">
<p>% Spell<br />Mishap</p><input class="tinyInput boxed" type="text" readonly
name="attr_int_spell_mishap" />
</span>
</div>
<div><span class="fixedwidthlabelverynarrow">WIS</span><input class="tinyInput" type="text"
name="attr_wisdom" />/<input class="tinyInput" type="text" name="attr_wisdom_pct" />
<span class="attributebox boxed">
<p>Mag Def<br />Adjust</p><input class="tinyInput boxed" type="text" readonly
name="attr_wis_magdef_adjust" />
</span>
<span class="attributebox boxed">
<p>Bonus<br />Spells</p><input class="reallySmallInput boxed" type="text" readonly
name="attr_wis_bonus_spells" />
</span>
<span class="attributebox boxed">
<p>% Spell<br />Failure</p><input class="tinyInput boxed" type="text" readonly
name="attr_wis_chance_spellfail" />
</span>
<span class="attributebox boxed">
<p>Improve<br />Skill %</p><input class="tinyInput boxed" type="text" readonly
name="attr_wis_improve_skill" />
</span>
<span class="attributebox boxed">
<p>Spell<br />Immunity</p><input class="smallInput boxed tinyText select-standard"
type="text" readonly name="attr_wis_spell_immunity" />
</span>
</div>
<div><span class="fixedwidthlabelverynarrow">DEX</span><input class="tinyInput" type="text"
name="attr_dexterity" />/<input class="tinyInput" type="text"
name="attr_dexterity_pct" />
<span class="attributebox boxed">
<p>Defense<br />Adjust</p><input class="tinyInput boxed" type="text" readonly
name="attr_dex_defense_adjust" />
</span>
<span class="attributebox boxed">
<p>Reaction<br />Adjust</p><input class="tinyInput boxed" type="text" readonly
name="attr_dex_reaction_adjust" />
</span>
<span class="attributebox boxed">
<p>Missile<br />Adjust</p><input class="tinyInput boxed" type="text" readonly
name="attr_dex_missile_adjust" />
</span>
</div>
<div><span class="fixedwidthlabelverynarrow">CON</span><input class="tinyInput" type="text"
name="attr_constitution" />/<input class="tinyInput" type="text"
name="attr_constitution_pct" />
<span class="attributebox boxed">
<p>Hit Pt<br />Adjust</p><input class="tinyInput boxed" type="text" readonly
name="attr_con_hitpoint_adjust" />
</span>
<span class="attributebox boxed">
<p>System<br />Shock</p><input class="tinyInput boxed" type="text" readonly
name="attr_con_system_shock" />
</span>
<span class="attributebox boxed">
<p>Resurrect<br />Survival</p><input class="tinyInput boxed" type="text" readonly
name="attr_con_resurrect_survival" />
</span>
<span class="attributebox boxed">
<p>Poison<br />Save</p><input class="tinyInput boxed" type="text" readonly
name="attr_con_poison_save" />
</span>
<span class="attributebox boxed">
<p>Immunity<br />Disease/Alcohol</p><input class="tinyInput boxed" type="text" readonly
name="attr_con_immunity_disease" />
</span>
<span class="attributebox boxed">
<p>Healing<br />Regen</p><input class="smallInput boxed" type="text" readonly
name="attr_con_regen_healing" />
</span>
</div>
<div><span class="fixedwidthlabelverynarrow">CHR</span><input class="tinyInput" type="text"
name="attr_charisma" />/<input class="tinyInput" type="text" name="attr_charisma_pct" />
<span class="attributebox boxed">
<p>Max #<br />Henchmen</p><input class="tinyInput boxed" type="text" readonly
name="attr_chr_max_henchmen" />
</span>
<span class="attributebox boxed">
<p>Loyalty<br />Base</p><input class="tinyInput boxed" type="text" readonly
name="attr_chr_loyalty_base" />
</span>
<span class="attributebox boxed">
<p>Reaction<br />Adjust</p><input class="tinyInput boxed" type="text" readonly
name="attr_chr_reaction_adjust" />
</span>
<span class="attributebox boxed">
<p>Comeliness<br />Mod</p><input class="tinyInput boxed" type="text" readonly
name="attr_chr_comeliness_mod" />
</span>
<span class="attributebox boxed">
<p>Start<br />Honor Mod</p><input class="tinyInput boxed" type="text" readonly
name="attr_chr_start_honormod" />
</span>
</div>
<div><span class="fixedwidthlabelverynarrow">COM</span><input class="tinyInput" type="text"
name="attr_comliness" />/<input class="tinyInput" type="text"
name="attr_comliness_pct" />
<span class="attributebox boxed">
<p>Effect</p>
</span><textarea class="textareafix" name="attr_com_effect"></textarea>
</div>
<div><span>Honor</span><input class="tinyInput spacer" type="text" name="attr_honor" />
<button type="roll" name="roll_honor_die" title="honorroll"
value="/roll @{honor_die} @{honor_bonus} Honor Roll" style="width: 20px"
class="btn ui-draggable"> </button>
<span class="attributebox boxed">
<p>Honor<br />Die</p><input class="reallySmallInput boxed" type="text" readonly
name="attr_honor_die" />
</span>
<span class="attributebox boxed">
<p>Level</p><input class="mediumInput boxed" type="text" readonly
name="attr_honor_level" />
</span>
<span class="attributebox boxed">
<p>Die<br />Bonus</p><input class="tinyInput boxed" type="text" readonly
name="attr_honor_bonus" />
</span>
<span class="attributebox boxed">
<p>Check<br />Mod</p><input class="tinyInput boxed" type="text" readonly
name="attr_honor_checkmod" />
</span>
<span class="attributebox boxed">
<p>Penalty<br /></p><input class="tinyInput boxed" type="text" readonly
name="attr_honor_penalty" />
</span>
<span class="attributebox boxed">
<p>Honor<br />Window</p><input class="mediumInput boxed" type="text" readonly
name="attr_honor_honorwindow" />
</span>
</div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Fame</div>
<div class="four-column">
<div class="tcleft row1" style="padding-left: 10px;">Enemy Morale Penalty</div>
<div class="tcleft row2" style="padding-left: 10px;"><input class="mediumInput boxed" type="text" readonly name="attr_enemy_morale_penalty" /></div>
<div class="tccleft row1">Total Fame</div>
<div class="tccleft row2"><input class="mediumInput boxed" type="text" readonly name="attr_total_fame" /></div>
<div class="tccright row1">From Honor</div>
<div class="tccright row2"><input class="mediumInput boxed" type="text" readonly name="attr_fame_from_honor" /></div>
<div class="tcright row1">Additional Fame</div>
<div class="tcright row2"><input class="mediumInput boxed" type="text" name="attr_additional_fame" /></div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Saving Throws</div>
<div class="three-columnX">
<div class="tcleft row1"></div>
<div class="tccenter row1">Save</div>
<div class="tcright row1">Modifiers</div>
<div class="tcleft row2">Paralyzation</div>
<div class="tcleft row3">Poison</div>
<div class="tcleft row4">Death Magic</div>
<div class="tcleft row5">Rod, Staff, Wand</div>
<div class="tcleft row6">Petrification</div>
<div class="tcleft row7">Hack Lust/Frenzy</div>
<div class="tcleft row8">Breath Weapon</div>
<div class="tcleft row9">Apology</div>
<div class="tcleft row10">Spells</div>
<div class="tccenter row2">
<input class="tinyInput" type="text" name="attr_st_paralyzation" />
<button type="roll" name="roll_st_paralyzation" title="st_roll_paralyzation"
style="width: 20px" class="btn ui-draggable"
value="&{template:save} {{savevs=Paralyzation}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_paralyzation}]]}}"></button>
</div>
<div class="tccenter row3">
<input class="tinyInput" type="text" name="attr_st_poison" />
<button type="roll" name="roll_st_poison" title="st_roll_poison" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Poison}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_poison}]]}}"></button>
</div>
<div class="tccenter row4">
<input class="tinyInput" type="text" name="attr_st_death" />
<button type="roll" name="roll_st_death" title="st_roll_death" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Death Magic}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_death}]]}}"></button>
</div>
<div class="tccenter row5">
<input class="tinyInput" type="text" name="attr_st_rod" />
<button type="roll" name="roll_st_rod" title="st_roll_rod" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Rod/Staff/Wand}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_rod}]]}}"></button>
</div>
<div class="tccenter row6">
<input class="tinyInput" type="text" name="attr_st_petrify" />
<button type="roll" name="roll_st_petrify" title="st_roll_petrify" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Petrify}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_petrify}]]}}"></button>
</div>
<div class="tccenter row7">
<input class="tinyInput" type="text" name="attr_st_hack" />
<button type="roll" name="roll_st_hack" title="st_roll_hack" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Hack Lust/Frenzy}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_hack}]]}}"></button>
</div>
<div class="tccenter row8">
<input class="tinyInput" type="text" name="attr_st_breath" />
<button type="roll" name="roll_st_breath" title="st_roll_breath" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Breath Weapon}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_breath}]]}}"></button>
</div>
<div class="tccenter row9">
<input class="tinyInput" type="text" name="attr_st_apology" />
<button type="roll" name="roll_st_apology" title="st_roll_apology" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Apology}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_apology}]]}}"></button>
</div>
<div class="tccenter row10">
<input class="tinyInput" type="text" name="attr_st_spell" />
<button type="roll" name="roll_st_spell" title="st_roll_spell" style="width: 20px"
class="btn ui-draggable"
value="&{template:save} {{savevs=Spell}} {{honor=@{honor_bonus}}} {{save=[[1d20@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{st_spell}]]}}"></button>
</div>
<div class="tcright row2"><textarea class="textareafix textareaenterable"
name="attr_st_paralyzation_mods"></textarea></div>
<div class="tcright row3"><textarea class="textareafix textareaenterable"
name="attr_st_poison_mods"></textarea></div>
<div class="tcright row4"><textarea class="textareafix textareaenterable"
name="attr_st_death_mods"></textarea></div>
<div class="tcright row5"><textarea class="textareafix textareaenterable"
name="attr_st_rod_mods"></textarea></div>
<div class="tcright row6"><textarea class="textareafix textareaenterable"
name="attr_st_petrify_mods"></textarea></div>
<div class="tcright row7"><textarea class="textareafix textareaenterable"
name="attr_st_hack_mods"></textarea></div>
<div class="tcright row8"><textarea class="textareafix textareaenterable"
name="attr_st_breath_mods"></textarea></div>
<div class="tcright row9"><textarea class="textareafix textareaenterable"
name="attr_st_apology_mods"></textarea></div>
<div class="tcright row10"><textarea class="textareafix textareaenterable"
name="attr_st_spell_mods"></textarea></div>
</div>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-combat background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="sub-section">
<div class="subtitles">Hit Points / Fatigue</div>
<div class="three-column">
<div class="tcleft row1">
<span class="headingitem heading">Current:</span>
<input class="tinyInput boxed" type="text" name="attr_hit_points" />
</div>
<div class="tcleft row2">
<span class="headingitem heading">Max:</span>
<input class="tinyInput boxed" type="text" name="attr_hit_points_max" />
</div>
<div class="tcleft row3">
<span class="headingitem heading">TOP:</span>
<input class="tinyInput boxed" type="text" readonly name="attr_TOP" />
</div>
<div class="tccenter row1">
<span class="headingitem heading">Fatigue: </span>
<input class="tinyInput boxed" type="text" name="attr_fatigue_factor" />
</div>
<div class="tccenter row2">
<span class="headingitem heading">Fatigue Factor: </span>
<input class="tinyInput boxed" type="text" readonly name="attr_fatigue_factor_max" />
</div>
<div class="tcright row1">
<span class="headingitem heading">Fatigue Check:</span>
<input class="tinyInput boxed" type="text" readonly name="attr_fatigue_check" />
</div>
<div class="tcright row2">
<span class="headingitem heading">Fatigue Adjust:</span>
<input class="tinyInput boxed" type="text" name="attr_fatigue_adjust" /><br />
<span style="font-size: xx-small;">Enter percentage to adjust fatigue factor by</span>
</div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Armor Class</div>
<div>
<span class="headingitem heading">Armor Class:</span>
<input class="tinyInput boxed" type="text" readonly name="attr_armor_class"/>
<span class="headingitem heading">Shieldless AC:</span>
<input class="tinyInput boxed" type="text" readonly name="attr_shieldless_armor_class"/>
<span class="headingitem heading">Rear AC:</span>
<input class="tinyInput boxed" type="text" readonly name="attr_rear_armor_class"/>
</div>
<div>
<span class="fixedwidthlabelnarrow heading">Armor:</span>
<select class="mediumPlusInput name=" name="attr_armor_type">
<option value="None">None</option>
<option value="Heavy Cloth">Heavy Cloth</option>
<option value="Leather">Leather</option>
<option value="Padded">Padded</option>
<option value="Stud.Leather">Stud.Leather</option>
<option value="Ring Mail">Ring Mail</option>
<option value="Tinker's Armor">Tinker's Armor</option>
<option value="Hide">Hide</option>
<option value="Brigandine">Brigandine</option>
<option value="Scale Mail">Scale Mail</option>
<option value="Chain Shirt">Chain Shirt</option>
<option value="Chain Mail">Chain Mail</option>
<option value="Stud. Hide">Stud. Hide</option>
<option value="Splint Mail">Splint Mail</option>
<option value="Heavy Chain">Heavy Chain</option>
<option value="Banded Mail">Banded Mail</option>
<option value="Plate Mail">Plate Mail</option>
<option value="Half-Plate">Half-Plate</option>
<option value="Field Plate">Field Plate</option>
<option value="Full Plate">Full Plate</option>
<option value="Elven Chain">Elven Chain</option>
</select>
<span class="attributebox">
<p>Base<br />AC</p><input class="tinyInput boxed" type="text" readonly name="attr_armor_base_ac"/>
</span>
<span class="attributebox">
<p>Magic<br />+'s</p><input class="tinyInput boxed" type="text" name="attr_armor_plus"/>
</span>
<span class="attributebox">
<p>Damage<br />Taken</p><input class="tinyInput boxed" type="text" name="attr_armor_damage"/>
</span>
<span class="attributebox">
<p>Current<br />AC</p><input class="tinyInput boxed" type="text" readonly name="attr_armor_current_ac"/>
</span>
<span class="attributebox">
<p>Hits<br />per AC</p><input class="regularInput boxed" type="text" readonly name="attr_armor_hits"/>
</span>
</div>
<div>
<span class="fixedwidthlabelnarrow heading">Shield:</span>
<select class="mediumPlusInput name=" name="attr_shield_type">
<option value="None">None</option>
<option value="Buckler">Buckler</option>
<option value="Small Shield">Small Shield</option>
<option value="Medium Shield">Medium Shield</option>
<option value="Body Shield">Body Shield</option>
<option value="Wood Buckler">Wood Buckler</option>
<option value="Wood Small">Wood Small</option>
<option value="Wood Medium">Wood Medium</option>
<option value="Wood Body">Wood Body</option>
</select>
<span class="attributebox">
<p>Base<br />AC Bonus</p><input class="tinyInput boxed" type="text" readonly name="attr_shield_base_ac"/>
</span>
<span class="attributebox">
<p>Magic<br />+'s</p><input class="tinyInput boxed" type="text" name="attr_shield_plus"/>
</span>
<span class="attributebox">
<p>Damage<br />Taken</p><input class="tinyInput boxed" type="text" name="attr_shield_damage"/>
</span>
<span class="attributebox">
<p>Current<br />AC Bonus</p><input class="tinyInput boxed" type="text" readonly name="attr_shield_current_ac"/>
</span>
<span class="attributebox">
<p>Hits<br />per AC</p><input class="regularInput boxed" type="text" readonly name="attr_shield_hits"/>
</span>
</div>
<div>
<span class="headingitem heading">Misc AC Bonus:</span>
<input class="tinyInput boxed" type="text" name="attr_misc_ac_bonus"/>
<span class="headingitem heading">Acrobatics Skill?</span>
<input class="tinyInput boxed" type="checkbox" name="attr_acrobatics"/>
</div>
</div>
<div class="sub-section">
<div>
<div class="melee-weapons">
<span style="width:75%;display: inline-block;" class="subtitles">Melee Weapons</span>
<span style="width:25%;display: inline-block;" class="subtitles">Damage Versus</span>
</div>
</div>
<fieldset class="repeating_meleeweapons">
<div class="melee-weapons">
<div style="width: 10%;"><hr/>
<div><br/>
<button type="roll" name="roll_initmw" title="Initiative"
value="/roll d10 + @{mwspeed}[Speed] -@{dex_reaction_adjust}[Dex] + @{mwinitmod}[Wpn Init] - (@{honor_bonus}[Honor])" style="width: 40px"
class="btn ui-draggable">Init</button><br/>
<button type="roll" name="roll_tohitmw" title="Hit"
value="/roll d20 +@{mwplushit}[Wpn Plus] @{str_hit_prob}[Str] @{honor_bonus}[Honor]" style="width: 40px"
class="btn ui-draggable">Hit</button>
</div>
</div>
<div style="width:60%;"><hr/>
<div class="entry2Line"><span><label class="mediumPlusInput " >Weapon Name</label><input type="text" class="mediumPlusInput " name="attr_mweaponname" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Size</label><select class="reallySmallInput " name="attr_mwsize">
<option value="T">T</option>
<option value="S">S</option>
<option value="M">M</option>
<option value="L">L</option>
<option value="H">H</option>
<option value="G">G</option>
</select></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >DamType</label><select class="reallySmallInput " name="attr_mwdamagetype">
<option value="C">C</option>
<option value="H">H</option>
<option value="P">P</option>
<option value="CP">C/P</option>
<option value="HP">H/P</option>
<option value="CH">C/H</option>
</select></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Init Mod</label><input class="reallySmallInput " type="text" name="attr_mwinitmod" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >To Hit</label><input class="reallySmallInput " type="text" name="attr_mwplushit" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >To Dam</label><input class="reallySmallInput " type="text" name="attr_mwplusdam" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Speed</label><input class="reallySmallInput " type="text" name="attr_mwspeed" /></span></div>
<div class="entry2Line"><span><label class="mediumPlusInput " >Skill</label><span><select class="mediumPlusInput " name="attr_mwskill">
<option value="P">Proficient</option>
<option value="N">Non-Proficient</option>
<option value="S">Specialized</option>
<option value="M">Master</option>
<option value="H">High Master</option>
<option value="G">Grand Master</option>
</select></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >#Att/Rnd</label><input class="reallySmallInput " type="text" name="attr_mwattrnd" /></span></div>
</div>
<div style="width:30%;"><hr/>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_mdt" title="Roll Damage"
value="/roll {@{mwdamt},1+0d0}d1 @{str_dam_adj}[STR Adj] + @{mwplusdam}[Damage Bonus] @{honor_bonus}*{@{mwdicet}+0d0|1}[Honor]+ (?{Other Modifiers|0}) Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">T</button></label>
<input class="teenyInput " type="text" name="attr_mwdicet" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_mwdamt" title="Damage, don't forget the '!p' for penetration!"/></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_mds" title="Roll Damage"
value="/roll {@{mwdams},1+0d0}d1 @{str_dam_adj}[STR Adj] + @{mwplusdam}[Damage Bonus] @{honor_bonus}*{@{mwdices}+0d0|1}[Honor]+ (?{Other Modifiers|0}) Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">S</button></label>
<input class="teenyInput " type="text" name="attr_mwdices" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_mwdams" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_mdm" title="Roll Damage"
value="/roll {@{mwdamm},1+0d0}d1 @{str_dam_adj}[STR Adj] + @{mwplusdam}[Damage Bonus] @{honor_bonus}*{@{mwdicem}+0d0|1}[Honor]+ (?{Other Modifiers|0}) Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">M</button></label>
<input class="teenyInput " type="text" name="attr_mwdicem" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_mwdamm" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_mdl" title="Roll Damage"
value="/roll {@{mwdaml},1+0d0}d1 @{str_dam_adj}[STR Adj] + @{mwplusdam}[Damage Bonus] @{honor_bonus}*{@{mwdicel}+0d0|1}[Honor]+ (?{Other Modifiers|0}) Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">L</button></label>
<input class="teenyInput " type="text" name="attr_mwdicel" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_mwdaml" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_mdh" title="Roll Damage"
value="/roll {@{mwdamh},1+0d0}d1 @{str_dam_adj}[STR Adj] + @{mwplusdam}[Damage Bonus] @{honor_bonus}*{@{mwdiceh}+0d0|1}[Honor]+ (?{Other Modifiers|0}) Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">H</button></label>
<input class="teenyInput " type="text" name="attr_mwdiceh" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_mwdamh" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_mdg" title="Roll Damage"
value="/roll {@{mwdamg},1+0d0}d1 @{str_dam_adj}[STR Adj] + @{mwplusdam}[Damage Bonus] @{honor_bonus}*{@{mwdiceg}+0d0|1}[Honor]+ (?{Other Modifiers|0}) Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">G</button></label>
<input class="teenyInput " type="text" name="attr_mwdiceg" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_mwdamg" title="Damage, don't forget the '!p' for penetration!" /></span></div>
</div>
</div>
</fieldset>
</div>
<div class="sub-section">
<div>
<div class="melee-weapons">
<span style="width:75%;display: inline-block;" class="subtitles">Missile Weapons</span>
<span style="width:25%;display: inline-block;" class="subtitles">Damage Versus</span>
</div>
</div>
<fieldset class="repeating_missileweapons">
<div class="melee-weapons">
<div style="width: 10%;"><hr/>
<div><br/>
<button type="roll" name="roll_tohitms" title="Hit"
value="/roll d20 +@{msplushit}[Wpn Plus] + @{dex_missile_adjust}[Dex] + ?{Range?|Short, [[0]]|Medium, [[-2]]|Long, [[-5]]} @{honor_bonus}[Honor]" style="width: 40px"
class="btn ui-draggable">Hit</button>
</div>
</div>
<div style="width: 60%;"><hr/>
<div class="entry2Line"><span><label class="mediumPlusInput " >Weapon Name</label><input type="text" class="mediumPlusInput " name="attr_msweaponname" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Size</label><select class="reallySmallInput " name="attr_mssize">
<option value="T">T</option>
<option value="S">S</option>
<option value="M">M</option>
<option value="L">L</option>
<option value="H">H</option>
<option value="G">G</option>
</select></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >DamType</label><select class="reallySmallInput " name="attr_msdamagetype">
<option value="C">C</option>
<option value="H">H</option>
<option value="P">P</option>
<option value="CP">C/P</option>
<option value="HP">H/P</option>
<option value="CH">C/H</option>
</select></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >To Hit</label><input class="reallySmallInput " type="text" name="attr_msplushit" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >To Dam</label><input class="reallySmallInput " type="text" name="attr_msplusdam" /></span></div>
<div class="entry2Line"><span><label class="mediumPlusInput " >Skill</label><span><select class="mediumPlusInput " name="attr_msskill">
<option value="P">Proficient</option>
<option value="N">Non-Proficient</option>
<option value="S">Specialized</option>
<option value="M">Master</option>
<option value="H">High Master</option>
<option value="G">Grand Master</option>
</select></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >ROF</label><input class="reallySmallInput " type="text" name="attr_msattrnd" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Short</label><input class="reallySmallInput " type="text" name="attr_msshort" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Medium</label><input class="reallySmallInput " type="text" name="attr_msmedium" /></span></div>
<div class="entry2Line"><span><label class="reallySmallInput " >Long</label><input class="reallySmallInput " type="text" name="attr_mslong" /></span></div>
</div>
<div style="width:30%;"><hr/>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_msdt" title="Roll Damage"
value="/roll {@{msdamt},1+0d0}d1 + @{msplusdam} [Damage Bonus] @{honor_bonus}*{@{msdicet}+0d0|1} [Honor] + ?{Other Modifiers|0} Damage Roll vs T" style="width: 20px"
class="btn ui-draggable">T</button></label>
<input class="teenyInput " type="text" name="attr_msdicet" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_msdamt" title="Damage, don't forget the '!p' for penetration!"/></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_msds" title="Roll Damage"
value="/roll {@{msdams},1+0d0}d1 + @{msplusdam} [Damage Bonus] @{honor_bonus}*{@{msdices}+0d0|1} [Honor] + ?{Other Modifiers|0} Damage Roll vs S" style="width: 20px"
class="btn ui-draggable">S</button></label>
<input class="teenyInput " type="text" name="attr_msdices" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_msdams" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_msdm" title="Roll Damage"
value="/roll {@{msdamm},1+0d0}d1 + @{msplusdam} [Damage Bonus] @{honor_bonus}*{@{msdicem}+0d0|1} [Honor] + ?{Other Modifiers|0} Damage Roll vs M" style="width: 20px"
class="btn ui-draggable">M</button></label>
<input class="teenyInput " type="text" name="attr_msdicem" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_msdamm" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_msdl" title="Roll Damage"
value="/roll {@{msdaml},1+0d0}d1 + @{msplusdam} [Damage Bonus] @{honor_bonus}*{@{msdicel}+0d0|1} [Honor] + ?{Other Modifiers|0} Damage Roll vs L" style="width: 20px"
class="btn ui-draggable">L</button></label>
<input class="teenyInput " type="text" name="attr_msdicel" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_msdaml" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_msdh" title="Roll Damage"
value="/roll {@{msdamh},1+0d0}d1 + @{msplusdam} [Damage Bonus] @{honor_bonus}*{@{msdiceh}+0d0|1} [Honor] + ?{Other Modifiers|0} Damage Roll vs H" style="width: 20px"
class="btn ui-draggable">H</button></label>
<input class="teenyInput " type="text" name="attr_msdiceh" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_msdamh" title="Damage, don't forget the '!p' for penetration!" /></span></div>
<div class="entrywDice"><span>
<label class="reallySmallInput " ><button type="roll" name="roll_msdg" title="Roll Damage"
value="/roll {@{msdamg},1+0d0}d1 + @{msplusdam} [Damage Bonus] @{honor_bonus}*{@{msdiceg}+0d0|1} [Honor] + ?{Other Modifiers|0} Damage Roll vs G" style="width: 20px"
class="btn ui-draggable">G</button></label>
<input class="teenyInput " type="text" name="attr_msdiceg" title="# of dice done by damage" />
<input class="reallySmallInput " type="text" name="attr_msdamg" title="Damage, don't forget the '!p' for penetration!" /></span></div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-abilities background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="sub-section">
<div class="subtitles">Talents</div>
<div>
<span class="headingitem heading" style="width: 25%;text-align: left;" >Talent</span>
<span class="headingitem heading" >Description</span>
</div>
<fieldset class="repeating_talents">
<div>
<input class="smallInput" style="width: 25%" type="text" name="attr_talentname" />
<input class="largeInput" style="width: 70%" type="text" name="attr_talentdesc" />
</div>
</fieldset>
</div>
<div class="sub-section">
<div class="subtitles">Quirks / Flaws</div>
<div>
<span class="headingitem heading" style="width: 25%;text-align: left;" >Quirk/Flaw</span>
<span class="headingitem heading" >Description</span>
</div>
<fieldset class="repeating_quirks">
<div>
<input class="smallInput" style="width: 25%" type="text" name="attr_quirkname" />
<input class="largeInput" style="width: 70%" type="text" name="attr_quirkdesc" />
</div>
</fieldset>
</div>
<div class="sub-section">
<div class="subtitles">Racial Abilities</div>
<div>
<span class="headingitem heading" style="width: 25%;text-align: left;" >Racial Ability</span>
<span class="headingitem heading" >Description</span>
</div>
<fieldset class="repeating_racial">
<div>
<input class="smallInput" style="width: 25%" type="text" name="attr_racialname" />
<input class="largeInput" style="width: 70%" type="text" name="attr_racialdesc" />
</div>
</fieldset>
</div>
<div class="sub-section">
<div class="subtitles">Skills</div>
<div>
<span class="headingitem heading" style="padding:0px;width:32px;" ></span>
<span class="headingitem heading" style="padding:0px;width:32px;" >%</span>
<span class="largeInput headingitem heading" style="padding:0px;width:298px;" >Skill</span>
<span class="smallInput headingitem heading" style="padding:0px;width:100px;" >Page</span>
<span class="smallInput headingitem heading" style="padding:0px;width:100px;" >Mastery<br/>Die</span>
<span class="regularInput headingitem heading" style="padding:0px;width:175px;" >Skill Type</span>
</div>
<fieldset class="repeating_skills">
<div>
<button type="roll" name="roll_skill" title="roll_skill"
style="width:20px" class="btn ui-draggable"
value="&{template:skill} {{skillis=@{skillname}}} {{honor=@{honor_bonus}}} {{skillroll=[[1d100-1*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{skillpct}]]}}"></button>
<input class="tinyInput" type="text" name="attr_skillpct" />
<input class="largeInput" type="text" name="attr_skillname" />
<input class="smallInput" type="text" name="attr_skillpage" />
<input class="smallInput" type="text" name="attr_skillmasterydie" />
<select class="regularMinusInput " name="attr_skillType">
<option value="Academia">Academia</option>
<option value="Arcane">Arcane</option>
<option value="Artisan">Artisan</option>
<option value="Barbarian">Barbarian</option>
<option value="Combat Procedure">Combat Procedure</option>
<option value="Language">Language</option>
<option value="Martial Arts">Martial Arts</option>
<option value="Mundane">Mundane</option>
<option value="Musical">Musical</option>
<option value="Named Fighting">Named Fighting</option>
<option value="Proficiency">Proficiency</option>
<option value="Social Interaction">Social Interaction</option>
<option value="Sophisticated">Sophisticated</option>
<option value="Tool Skill">Tool Skill</option>
<option value="Skill Suite">Skill Suite</option>
</select>
</div>
</fieldset>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-equipment background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="sub-section">
<div class="subtitles">Encumberance Summary</div>
<div class="four-column">
<div class="tcleft row1">Carried/Worn Total:</div>
<div class="tccleft row1"><input class="smallInput" type="text" readonly name="attr_enc_carried" /></div>
<div class="tcleft row2">Carried-Packable Total:</div>
<div class="tccleft row2"><input class="smallInput" type="text" readonly name="attr_enc_packable" /></div>
<div class="tcleft row3"><hr style="margin-left:0px;"/>Carried Encumberance:</div>
<div class="tccleft row3"><hr class="smallInput" style="margin-left:0px;"/><input class="smallInput" type="text" readonly name="attr_character_encumberance" /></div>
<div class="tcleft row4"><hr style="margin-left:0px;"/>Total Wealth:</div>
<div class="tccleft row4"><hr class="smallInput" style="margin-left:0px;"/><input class="smallInput" type="text" readonly name="attr_wealth" /></div>
<div class="tccright row1">Clever Packer:</div>
<div class="tcright row1"><input type="checkbox" name="attr_clever_packer" value="X" /></div>
<div class="tccright row2">Mount Total:</div>
<div class="tcright row2"><input class="smallInput" type="text" readonly name="attr_enc_mount" /></div>
<div class="tccright row3">In Town/Not Carried Total:</div>
<div class="tcright row3"><input class="smallInput" type="text" readonly name="attr_enc_intown" /></div>
<div class="tccright row4">Style Points Worn:</div>
<div class="tcright row4"><input class="smallInput" type="text" readonly name="attr_style_total" /></div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Wealth
<div style="float:right;"><button type="action" name="act_wealth_defaults" title="btn_wealth_defaults" style="height:14px;">Add Defaults</button></div>
</div>
<div>
<span class="mediumPlusInput headingitem heading" style="padding:0px;width:120px;" >Location</span>
<span class="regularMinusInput headingitem heading" style="padding:0px;width:175px;" >Item</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:55px;" >Qty</span>
<span class="reallySmallInput headingitem heading" style="padding:0px;width:55px;" >Wgt<br/>Each</span>
<span class="reallySmallInput headingitem heading" style="padding:0px;width:55px;" >Enc.</span>
<span class="reallySmallInput headingitem heading" style="padding:0px;width:55px;" >Value<br/>Each</span>
<span class="reallySmallInput headingitem heading" style="padding:0px;width:55px;" >Value<br/>Total</span>
</div>
<fieldset class="repeating_wealth">
<div class="repeating_wealth">
<div>
<select class="mediumPlusInput " name="attr_wLocation">
<option value="Packable">Carried-Packable</option>
<option value="Mount">Mount</option>
<option value="Town">In Town/Not Carried</option>
</select>
<input class="regularMinusInput" type="text" name="attr_wItem" />
<input class="reallySmallInputRight" type="text" name="attr_wItemQty" />
<input class="reallySmallInputRight" type="text" name="attr_wItemWgt" />
<input class="reallySmallInputRight" type="text" readonly name="attr_wItemEnc" />
<input class="reallySmallInputRight" type="text" name="attr_wValueEach" />
<input class="reallySmallInputRight" type="text" readonly name="attr_wValueTotal" />
</div>
</div>
</fieldset>
</div>
<div class="sub-section">
<div class="subtitles">Possessions</div>
<div>
<span class="mediumPlusInput headingitem heading" style="padding:0px;width:120px;" >Location</span>
<span class="largeInput headingitem heading" style="padding:0px;width:298px;" >Item</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" >Style</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" >Qty</span>
<span class="reallySmallInput headingitem heading" style="padding:0px;width:55px;" >Wgt<br/>Each</span>
<span class="reallySmallInput headingitem heading" style="padding:0px;width:55px;" >Enc.</span>
</div>
<fieldset class="repeating_inventory">
<div>
<select class="mediumPlusInput " name="attr_location">
<option value="Carried">Carried/Worn</option>
<option value="Packable">Carried-Packable</option>
<option value="Mount">Mount</option>
<option value="Town">In Town/Not Carried</option>
</select>
<input class="largeInput" type="text" name="attr_item" />
<input class="tinyInput" type="text" name="attr_stylePoints" />
<input class="tinyInput" type="text" name="attr_itemQty" />
<input class="reallySmallInputRight" type="text" name="attr_itemWgt" />
<input class="reallySmallInputRight" type="text" readonly name="attr_itemEnc" />
</div>
</fieldset>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-mu background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="spell-grid">
<div class="spellleft sub-section">
<div class="subtitles">Spell Summary</div>
<div class="spellByLevel row1">
<div class="spell-by-level">
<div class="tcleft row1 smallInput"></div>
<div class="l0 row1" style="text-align: center;">0</div>
<div class="l1 row1" style="text-align: center;">1</div>
<div class="l2 row1" style="text-align: center;">2</div>
<div class="l3 row1" style="text-align: center;">3</div>
<div class="l4 row1" style="text-align: center;">4</div>
<div class="l5 row1" style="text-align: center;">5</div>
<div class="l6 row1" style="text-align: center;">6</div>
<div class="l7 row1" style="text-align: center;">7</div>
<div class="l8 row1" style="text-align: center;">8</div>
<div class="l9 row1" style="text-align: center;">9</div>
<div class="tcleft row2 sallInput">Base</div>
<input class="l0 row2 tinyInput" type="text" name="attr_mubase0"/>
<input class="l1 row2 tinyInput" type="text" name="attr_mubase1"/>
<input class="l2 row2 tinyInput" type="text" name="attr_mubase2"/>
<input class="l3 row2 tinyInput" type="text" name="attr_mubase3"/>
<input class="l4 row2 tinyInput" type="text" name="attr_mubase4"/>
<input class="l5 row2 tinyInput" type="text" name="attr_mubase5"/>
<input class="l6 row2 tinyInput" type="text" name="attr_mubase6"/>
<input class="l7 row2 tinyInput" type="text" name="attr_mubase7"/>
<input class="l8 row2 tinyInput" type="text" name="attr_mubase8"/>
<input class="l9 row2 tinyInput" type="text" name="attr_mubase9"/>
<div class="tcleft row3 smallInput">Bonus</div>
<input class="l0 row3 tinyInput" type="text" name="attr_mubonus0"/>
<input class="l1 row3 tinyInput" type="text" name="attr_mubonus1"/>
<input class="l2 row3 tinyInput" type="text" name="attr_mubonus2"/>
<input class="l3 row3 tinyInput" type="text" name="attr_mubonus3"/>
<input class="l4 row3 tinyInput" type="text" name="attr_mubonus4"/>
<input class="l5 row3 tinyInput" type="text" name="attr_mubonus5"/>
<input class="l6 row3 tinyInput" type="text" name="attr_mubonus6"/>
<input class="l7 row3 tinyInput" type="text" name="attr_mubonus7"/>
<input class="l8 row3 tinyInput" type="text" name="attr_mubonus8"/>
<input class="l9 row3 tinyInput" type="text" name="attr_mubonus9"/>
<div class="tcleft row4 smallInput">Spell Jack</div>
<input class="l0 row4 tinyInput" type="text" readonly name="attr_mujack0"/>
<input class="l1 row4 tinyInput" type="text" readonly name="attr_mujack1"/>
<input class="l2 row4 tinyInput" type="text" readonly name="attr_mujack2"/>
<input class="l3 row4 tinyInput" type="text" readonly name="attr_mujack3"/>
<input class="l4 row4 tinyInput" type="text" readonly name="attr_mujack4"/>
<input class="l5 row4 tinyInput" type="text" readonly name="attr_mujack5"/>
<input class="l6 row4 tinyInput" type="text" readonly name="attr_mujack6"/>
<input class="l7 row4 tinyInput" type="text" readonly name="attr_mujack7"/>
<input class="l8 row4 tinyInput" type="text" readonly name="attr_mujack8"/>
<input class="l9 row4 tinyInput" type="text" readonly name="attr_mujack9"/>
<div class="tcleft row5 smallInput totalrow">Total</div>
<input class="l0 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal0"/>
<input class="l1 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal1"/>
<input class="l2 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal2"/>
<input class="l3 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal3"/>
<input class="l4 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal4"/>
<input class="l5 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal5"/>
<input class="l6 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal6"/>
<input class="l7 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal7"/>
<input class="l8 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal8"/>
<input class="l9 row5 tinyInput totalrow" type="text" readonly name="attr_mutotal9"/>
<div class="option row2 smallInput" style="padding-left: 15px;">Battlemage?</div><input type="checkbox" class="optionValue row2 tinyInput" name="attr_battlemage" value="X"/>
<div class="option row3 smallInput" style="padding-left: 15px;">Spell Jack?</div><input type="checkbox" class="optionValue row3 tinyInput" name="attr_spelljack" value="X"/>
<div class="option row4 smallInput" style="padding-left: 15px;">Jack Level</div><input type="text" class="optionValue row4 tinyInput" name="attr_spelljacklevel" value="0"/>
</div>
</div>
</div>
<div class="spellright sub-section">
<div class="subtitles">Spell Failure</div>
<div class="spell-fail-grid">
<div class="smallInput tcleft row1">Low Intelligence:</div><input class="tinyInput tcright row1" type="text" readonly name="attr_sf_low_int" />
<div class="smallInput tcleft row2">Misc Modifier:</div><input class="tinyInput tcright row2" type="text" name="attr_sf_misc_mod" />
<div class="smallInput tcleft row3">Armor/Shield:</div><input class="tinyInput tcright row3" type="text" name="attr_sf_armor_shield" />
<div class="smallInput tcleft row4">Battle Mage:</div><input class="tinyInput tcright row4" readonly type="text" name="attr_sf_battlemage" />
<div class="smallInput tcleft row5">Spell Jack:</div><input class="tinyInput tcright row5" readonly type="text" name="attr_sf_spelljacked" />
<div class="smallInput tcleft row6 totalrow">
Total:<button type="roll" name="roll_sf" title="roll_spell_failure"
style="width:20px" class="btn ui-draggable"
value="&{template:spellfail} {{honor=@{honor_bonus}}} {{diceroll=[[1d100-1*@{honor_bonus}]]}} {{character=@{character_name}}} {{target=[[@{sf_spellFailure}]]}}"></button>
</div>
<input class="tinyInput tcright row6 totalrow" readonly type="text" name="attr_sf_spellFailure" />
</div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Spell Books</div>
<fieldset class="repeating_spellbooks">
<div class="spellbooks">
<div class="tcleft row1"><span class="fixedwidthlabel">Book ID:</span></div>
<div class="tcleft row2"><input class="tinyInput" style="margin-left:20px;" type="text" name="attr_book_id" /></div>
<div class="tccleft2 row1">
<span class="fixedwidthlabel">Book Format:</span>
<select class="regularInput " name="attr_book_format">
<option value="leather-vellum">Leather Cover, vellum pages</option>
<option value="leather-parchment">Leather Cover, parchment pages</option>
<option value="animal-vellum">Animal Hide Cover, vellum pages</option>
<option value="animal-parchment">Animal Hide Cover, parchment pages</option>
<option value="monster-vellum">Monster Hide Cover, vellum pages</option>
<option value="monster-parchment">Monster Hide Cover, parchment pages</option>
<option value="dragon-vellum">Dragon Hide cover, vellum pages</option>
<option value="animal-bones">Animal Bones</option>
<option value="stone-tablets">Stone Tablets</option>
<option value="papyrus-scrolls">Papyrus Scrolls</option>
<option value="silk-ribbons">Silk Ribbons</option>
<option value="tanned-hides">Tanned Hides</option>
<option value="dried-bark">Dried Bark</option>
<option value="wooden-sticks">Wooden Sticks</option>
<option value="woven-cloth">Woven Cloth</option>
<option value="silk-rope">Silk Rope</option>
</select>
</div>
<div class="tcright row1"><span class="fixedwidthlabel">Travelling?:</span>
<input type="checkbox" name="attr_travelling_spellbook" value="X" />
</div>
<div class="tcright row2">
<span class="fixedwidthlabel">Spell Levels:</span>
<select class="smallInput " name="attr_spelllevels">
<option value="Cantrips">Cantrips</option>
<option value="L1-3">Level 1-3</option>
<option value="L4-6">Level 4-6</option>
<option value="L7-9">Level 7-9</option>
</select>
</div>
<div class="tccleft2 row2">
<span class="fixedwidthlabel">Location:</span>
<select class="regularInput" name="attr_booklocation">
<option value="Packable">Carried-Packable</option>
<option value="Carried">Carried/Worn</option>
<option value="Mount">Mount</option>
<option value="Town">In Town/Not Carried</option>
</select>
</div>
<div class="tccleft row3">
<span class="fixedwidthlabel">Weight:</span>
<input class="mediumInput" type="text" name="attr_bookweight"/>
</div>
<div class="tccright row3">
<span class="fixedwidthlabel">Enc. Mod:</span>
<input class="mediumInput" type="text" name="attr_bookencmod"/>
</div>
<div class="tcright row3">
<span class="fixedwidthlabel">Encumberance:</span>
<input class="mediumInput" readonly type="text" name="attr_bookenc"/>
</div>
<div class="tccleft row4">
<span class="fixedwidthlabel">Page Count:</span>
<input class="tinyInput" readonly type="text" name="attr_pagesused"/>
Of
<select class="reallySmallInput" name="attr_pagecount">
<option value="24">24</option>
<option value="28">28</option>
<option value="32">32</option>
<option value="36">36</option>
<option value="40">40</option>
<option value="44">44</option>
<option value="48">48</option>
<option value="52">52</option>
<option value="64">64</option>
<option value="68">68</option>
<option value="72">72</option>
<option value="76">76</option>
<option value="80">80</option>
<option value="84">84</option>
<option value="88">88</option>
<option value="92">92</option>
<option value="96">96</option>
<option value="100">100</option>
<option value="104">104</option>
<option value="108">108</option>
<option value="112">112</option>
<option value="NA">N/A</option>
</select>
</div>
<div class="tccright row4">
<span class="fixedwidthlabel">Thickness:</span>
<select class="mediumInput" name="attr_bookthickness">
<option value="1">1"</option>
<option value="2">2"</option>
<option value="6">6"</option>
<option value="7">7"</option>
<option value="8">8"</option>
<option value="9">9"</option>
<option value="10">10"</option>
<option value="NA">N/A</option>
</select>
</div>
<div class="tcright row4">
<span class="fixedwidthlabel">Size:</span>
<select class="smallInput " name="attr_book_size">
<option value="12x12">12"x12"</option>
<option value="13x12">13"x12"</option>
<option value="14x12">14"x12"</option>
<option value="15x12">15"x12"</option>
<option value="16x12">16"x12"</option>
<option value="17x12">17"x12"</option>
<option value="18x12">18"x12"</option>
<option value="9x6">9"x6"</option>
<option value="9x7">9"x7"</option>
<option value="9x8">9"x8"</option>
<option value="9x9">9"x9"</option>
<option value="10x6">10"x6"</option>
<option value="10x7">10"x7"</option>
<option value="10x8">10"x8"</option>
<option value="10x9">10"x9"</option>
<option value="11x6">11"x6"</option>
<option value="11x7">11"x7"</option>
<option value="11x8">11"x8"</option>
<option value="11x9">11"x9"</option>
<option value="12x6">12"x6"</option>
<option value="12x7">12"x7"</option>
<option value="12x8">12"x8"</option>
<option value="12x9">12"x9"</option>
</select>
</div>
</div>
<hr/>
</fieldset>
</div>
<div class="sub-section">
<div class="subtitles">Spells</div>
<div>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" ># Cast</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" ># Mem</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" >Level</span>
<span class="regularInput headingitem heading" style="padding:0px;width:250px;" >Spell Name</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" >Book Id</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" ># Pages</span>
<span class="mediumPlusInput headingitem heading" style="padding:0px;width:120px;" >Schools</span>
<span class="mediumInput headingitem heading" style="padding:0px;width:75px;" >Page Ref</span>
<span class="mediumPlusInput headingitem heading" style="padding:0px;width:120px;" >Spell Notes</span>
</div>
<fieldset class="repeating_spells">
<div>
<input class="tinyInput" type="text" name="attr_memorized" />
<input class="tinyInput" type="text" name="attr_memorized_max" />
<input class="tinyInput" type="text" name="attr_spelllevel" />
<input class="regularInput" type="text" name="attr_spellname" />
<input class="tinyInput" type="text" name="attr_bookid" />
<input class="tinyInput" type="text" name="attr_numpages" />
<select class="mediumPlusInput " name="attr_schools">
<option value="Abjuration">Abjuration</option>
<option value="Abj./Alt.">Abj./Alt.</option>
<option value="Abj./Conj.">Abj./Conj.</option>
<option value="Abj./Ench.">Abj./Ench.</option>
<option value="Abj./Evoc.">Abj./Evoc.</option>
<option value="Abj./Ill.">Abj./Ill.</option>
<option value="Abj./Nec.">Abj./Nec.</option>
<option value="Alteration">Alteration</option>
<option value="Alt./Charm/Ench./Evoc.">Alt./Charm/Ench./Evoc.</option>
<option value="Alt./Conj.">Alt./Conj.</option>
<option value="Alt./Ench.">Alt./Ench.</option>
<option value="Alt./Evoc.">Alt./Evoc.</option>
<option value="Alt./Ill.">Alt./Ill.</option>
<option value="Charm/Ench./Evoc.">Charm/Ench./Evoc.</option>
<option value="Conjuration">Conjuration</option>
<option value="Conj./Div.">Conj./Div.</option>
<option value="Conj./Evoc.">Conj./Evoc.</option>
<option value="Conj./Ill.">Conj./Ill.</option>
<option value="Conj./Nec.">Conj./Nec.</option>
<option value="Divination">Divination</option>
<option value="Div./Ench.">Div./Ench.</option>
<option value="Div./Nec.">Div./Nec.</option>
<option value="Enchantment">Enchantment</option>
<option value="Ench./Evoc.">Ench./Evoc.</option>
<option value="Evocation">Evocation</option>
<option value="Evoc./Ill.">Evoc./Ill.</option>
<option value="Evoc./Nec.">Evoc./Nec.</option>
<option value="Illusion">Illusion</option>
<option value="Ill./Nec.">Ill./Nec.</option>
<option value="Necromancy">Necromancy</option>
</select>
<input class="mediumInput" type="text" name="attr_bookreference" />
<input class="mediumPlusInput" type="text" name="attr_spellnotes" />
</div>
</fieldset>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-cleric background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="spell-grid">
<div class="spellleft sub-section">
<div class="subtitles">Spell Summary</div>
<div class="spellByLevel row1">
<div class="clericspell-by-level">
<div class="tcleft row1 smallInput"></div>
<div class="l1 row1" style="text-align: center;">1</div>
<div class="l2 row1" style="text-align: center;">2</div>
<div class="l3 row1" style="text-align: center;">3</div>
<div class="l4 row1" style="text-align: center;">4</div>
<div class="l5 row1" style="text-align: center;">5</div>
<div class="l6 row1" style="text-align: center;">6</div>
<div class="l7 row1" style="text-align: center;">7</div>
<div class="tcleft row2 sallInput">Base</div>
<input class="l1 row2 tinyInput" type="text" name="attr_clbase1"/>
<input class="l2 row2 tinyInput" type="text" name="attr_clbase2"/>
<input class="l3 row2 tinyInput" type="text" name="attr_clbase3"/>
<input class="l4 row2 tinyInput" type="text" name="attr_clbase4"/>
<input class="l5 row2 tinyInput" type="text" name="attr_clbase5"/>
<input class="l6 row2 tinyInput" type="text" name="attr_clbase6"/>
<input class="l7 row2 tinyInput" type="text" name="attr_clbase7"/>
<div class="tcleft row3 smallInput">Bonus</div>
<input class="l1 row3 tinyInput" type="text" readonly name="attr_clbonus1"/>
<input class="l2 row3 tinyInput" type="text" readonly name="attr_clbonus2"/>
<input class="l3 row3 tinyInput" type="text" readonly name="attr_clbonus3"/>
<input class="l4 row3 tinyInput" type="text" readonly name="attr_clbonus4"/>
<input class="l5 row3 tinyInput" type="text" readonly name="attr_clbonus5"/>
<input class="l6 row3 tinyInput" type="text" readonly name="attr_clbonus6"/>
<input class="l7 row3 tinyInput" type="text" readonly name="attr_clbonus7"/>
<div class="tcleft row4 smallInput">Spell Jack</div>
<input class="l1 row4 tinyInput" type="text" readonly name="attr_cljack1"/>
<input class="l2 row4 tinyInput" type="text" readonly name="attr_cljack2"/>
<input class="l3 row4 tinyInput" type="text" readonly name="attr_cljack3"/>
<input class="l4 row4 tinyInput" type="text" readonly name="attr_cljack4"/>
<input class="l5 row4 tinyInput" type="text" readonly name="attr_cljack5"/>
<input class="l6 row4 tinyInput" type="text" readonly name="attr_cljack6"/>
<input class="l7 row4 tinyInput" type="text" readonly name="attr_cljack7"/>
<div class="tcleft row5 smallInput totalrow">Total</div>
<input class="l1 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal1"/>
<input class="l2 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal2"/>
<input class="l3 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal3"/>
<input class="l4 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal4"/>
<input class="l5 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal5"/>
<input class="l6 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal6"/>
<input class="l7 row5 tinyInput totalrow" type="text" readonly name="attr_cltotal7"/>
<div class="option row3 smallInput" style="padding-left: 15px;">Spell Jack?</div><input type="checkbox" class="optionValue row3 tinyInput" name="attr_clericspelljack" value="X"/>
<div class="option row4 smallInput" style="padding-left: 15px;">Jack Level</div><input type="text" class="optionValue row4 tinyInput" name="attr_clericspelljacklevel" value="0"/>
</div>
</div>
</div>
<div class="spellright sub-section">
<div class="subtitles">Cleric Spell Failure</div>
<div class="spell-fail-grid">
<div class="smallInput tcleft row1">Low Wisdom:</div><input class="tinyInput tcright row1" type="text" readonly name="attr_wis_chance_spellfail" />
<div class="smallInput tcleft row2">Misc Modifier:</div><input class="tinyInput tcright row2" type="text" name="attr_sf_misc_clericmod" />
<div class="smallInput tcleft row5">Spell Jack:</div><input class="tinyInput tcright row5" readonly type="text" name="attr_sf_spelljacked" />
<div class="smallInput tcleft row6 totalrow">
Total:<button type="roll" name="roll_sf" title="roll_cleric_spell_failure"
style="width:20px" class="btn ui-draggable"
value="&{template:spellfail} {{honor=@{honor_bonus}}} {{diceroll=[[1d100-1*@{honor_bonus}]]}} {{character=@{character_name}}} {{target=[[@{sf_clericspellFailure}]]}}"></button>
</div>
<input class="tinyInput tcright row6 totalrow" readonly type="text" name="attr_sf_clericspellFailure" />
</div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Spells</div>
<div>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" ># Cast</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" ># Mem</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" >Level</span>
<span class="tinyInput headingitem heading" style="padding:0px;width:32px;" >Cast Time</span>
<span class="regularInput headingitem heading" style="padding:0px;width:250px;" >Spell Name</span>
<span class="mediumPlusInput headingitem heading" style="padding:0px;width:120px;" >Schools</span>
<span class="mediumInput headingitem heading" style="padding:0px;width:75px;" >Page Ref</span>
<span class="mediumPlusInput headingitem heading" style="padding:0px;width:120px;" >Spell Notes</span>
</div>
<fieldset class="repeating_clspells">
<div>
<input class="tinyInput" type="text" name="attr_clmemorized" />
<input class="tinyInput" type="text" name="attr_clmemorized_max" />
<input class="tinyInput" type="text" name="attr_clspelllevel" />
<input class="tinyInput" type="text" name="attr_clcasttime" />
<input class="regularInput" type="text" name="attr_clspellname" />
<select class="mediumPlusInput " name="attr_clschools">
<option value="Abj./Alteration">Abj./Alteration</option>
<option value="Abj./Enchant.">Abj./Enchant.</option>
<option value="Abj./Evocation">Abj./Evocation</option>
<option value="Abjuration">Abjuration</option>
<option value="Alt./Enchantment">Alt./Enchantment</option>
<option value="Alt./Evocation">Alt./Evocation</option>
<option value="Alteration">Alteration</option>
<option value="Conj./Summoning">Conj./Summoning</option>
<option value="Divination">Divination</option>
<option value="Enchant/Charm">Enchant/Charm</option>
<option value="Enchantment">Enchantment</option>
<option value="Evoc./Illus./Phant.">Evoc./Illus./Phant.</option>
<option value="Evocation">Evocation</option>
<option value="Evoc./Alteration">Evoc./Alteration</option>
<option value="Evoc./Enchantment">Evoc./Enchantment</option>
<option value="Illusion/Phant.">Illusion/Phant.</option>
<option value="Invocation">Invocation</option>
<option value="Necromancy">Necromancy</option>
<option value="Necromancy/Conj.">Necromancy/Conj.</option>
</select>
<input class="mediumInput" type="text" name="attr_clbookreference" />
<input class="mediumPlusInput" type="text" name="attr_clspellnotes" />
</div>
</fieldset>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-thief background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="sub-section">
<div class="subtitles">Thieving</div>
<div class="thief-grid">
<div class="thiefskill row1 heading" style="text-align: left;"><br/>Skill</div>
<div class="tinyInput row1 heading"><br/>Total</div>
<div class="tinyInput row1 heading"><br/>Base</div>
<div class="tinyInput row1 heading">Alloc-<br/>ated</div>
<div class="tinyInput row1 heading">Racial<br/>Adjust</div>
<div class="tinyInput row1 heading">Dex<br/>Adjust</div>
<div class="tinyInput row1 heading">Armor<br/>Adjust</div>
<div class="tinyInput row1 heading">Misc<br/>Adjust</div>
<div class="tinyInput row1 heading">Other<br/>Adjust</div>
<div class="thiefskill row2"><button type="roll" name="roll_pp" title="roll_pp"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Pick Pockets}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{pptotal}]]}}"></button>
Pick Pockets</div>
<input class="row2 tinyInput" readonly type="text" name="attr_pptotal" />
<input class="row2 tinyInput" readonly type="text" name="attr_ppbase" value="15" />
<input class="row2 tinyInput" type="text" name="attr_ppallocated" />
<input class="row2 tinyInput" readonly type="text" name="attr_ppracial" />
<input class="row2 tinyInput" readonly type="text" name="attr_ppdexadjust" />
<input class="row2 tinyInput" readonly type="text" name="attr_pparmoradjust" />
<input class="row2 tinyInput" type="text" name="attr_ppadjust" />
<input class="row2 tinyInput" type="text" name="attr_ppotheradjust" />
<div class="thiefskill row3"><button type="roll" name="roll_ol" title="roll_ol"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Open Locks}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{oltotal}]]}}"></button>
Open Locks</div>
<input class="row3 tinyInput" readonly type="text" name="attr_oltotal" />
<input class="row3 tinyInput" readonly type="text" name="attr_olbase" value="10" />
<input class="row3 tinyInput" type="text" name="attr_olallocated" />
<input class="row3 tinyInput" readonly type="text" name="attr_olracial" />
<input class="row3 tinyInput" readonly type="text" name="attr_oldexadjust" />
<input class="row3 tinyInput" readonly type="text" name="attr_olarmoradjust" />
<input class="row3 tinyInput" type="text" name="attr_oladjust" />
<input class="row3 tinyInput" type="text" name="attr_olotheradjust" />
<div class="thiefskill row4"><button type="roll" name="roll_ft" title="roll_ft"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Find Traps}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{fttotal}]]}}"></button>
Find Traps</div>
<input class="row4 tinyInput" readonly type="text" name="attr_fttotal" />
<input class="row4 tinyInput" readonly type="text" name="attr_ftbase" value="5" />
<input class="row4 tinyInput" type="text" name="attr_ftallocated" />
<input class="row4 tinyInput" readonly type="text" name="attr_ftracial" />
<input class="row4 tinyInput" readonly type="text" name="attr_ftdexadjust" />
<input class="row4 tinyInput" readonly type="text" name="attr_ftarmoradjust" />
<input class="row4 tinyInput" type="text" name="attr_ftadjust" />
<input class="row4 tinyInput" type="text" name="attr_ftotheradjust" />
<div class="thiefskill row5"><button type="roll" name="roll_rt" title="roll_rt"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Remove Traps}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{rttotal}]]}}"></button>
Remove Traps</div>
<input class="row5 tinyInput" readonly type="text" name="attr_rttotal" />
<input class="row5 tinyInput" readonly type="text" name="attr_rtbase" value="5" />
<input class="row5 tinyInput" type="text" name="attr_rtallocated" />
<input class="row5 tinyInput" readonly type="text" name="attr_rtracial" />
<input class="row5 tinyInput" readonly type="text" name="attr_rtdexadjust" />
<input class="row5 tinyInput" readonly type="text" name="attr_rtarmoradjust" />
<input class="row5 tinyInput" type="text" name="attr_rtadjust" />
<input class="row5 tinyInput" type="text" name="attr_rtotheradjust" />
<div class="thiefskill row6"><button type="roll" name="roll_ms" title="roll_ms"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Move Silently}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{mstotal}]]}}"></button>
Move Silently</div>
<input class="row6 tinyInput" readonly type="text" name="attr_mstotal" />
<input class="row6 tinyInput" readonly type="text" name="attr_msbase" value="10" />
<input class="row6 tinyInput" type="text" name="attr_msallocated" />
<input class="row6 tinyInput" readonly type="text" name="attr_msracial" />
<input class="row6 tinyInput" readonly type="text" name="attr_msdexadjust" />
<input class="row6 tinyInput" readonly type="text" name="attr_msarmoradjust" />
<input class="row6 tinyInput" type="text" name="attr_msadjust" />
<input class="row6 tinyInput" type="text" name="attr_msotheradjust" />
<div class="thiefskill row7"><button type="roll" name="roll_hs" title="roll_hs"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Hide in Shadows}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{hstotal}]]}}"></button>
Hide in Shadows</div>
<input class="row7 tinyInput" readonly type="text" name="attr_hstotal" />
<input class="row7 tinyInput" readonly type="text" name="attr_hsbase" value="5" />
<input class="row7 tinyInput" type="text" name="attr_hsallocated" />
<input class="row7 tinyInput" readonly type="text" name="attr_hsracial" />
<input class="row7 tinyInput" readonly type="text" name="attr_hsdexadjust" />
<input class="row7 tinyInput" readonly type="text" name="attr_hsarmoradjust" />
<input class="row7 tinyInput" type="text" name="attr_hsadjust" />
<input class="row7 tinyInput" type="text" name="attr_hsotheradjust" />
<div class="thiefskill row8"><button type="roll" name="roll_dn" title="roll_dn"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Detect Noise}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{dntotal}]]}}"></button>
Detect Noise</div>
<input class="row8 tinyInput" readonly type="text" name="attr_dntotal" />
<input class="row8 tinyInput" readonly type="text" name="attr_dnbase" value="15" />
<input class="row8 tinyInput" type="text" name="attr_dnallocated" />
<input class="row8 tinyInput" readonly type="text" name="attr_dnracial" />
<input class="row8 tinyInput" readonly type="text" name="attr_dndexadjust" value="N/A" />
<input class="row8 tinyInput" readonly type="text" name="attr_dnarmoradjust" />
<input class="row8 tinyInput" type="text" name="attr_dnadjust" />
<input class="row8 tinyInput" type="text" name="attr_dnotheradjust" />
<div class="thiefskill row9"><button type="roll" name="roll_cw" title="roll_cw"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Climb Walls}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{cwtotal}]]}}"></button>
Climb Walls</div>
<input class="row9 tinyInput" readonly type="text" name="attr_cwtotal" />
<input class="row9 tinyInput" readonly type="text" name="attr_cwbase" value="60" />
<input class="row9 tinyInput" type="text" name="attr_cwallocated" />
<input class="row9 tinyInput" readonly type="text" name="attr_cwracial" />
<input class="row9 tinyInput" readonly type="text" name="attr_cwdexadjust" value="N/A" />
<input class="row9 tinyInput" readonly type="text" name="attr_cwarmoradjust" />
<input class="row9 tinyInput" type="text" name="attr_cwadjust" />
<input class="row9 tinyInput" type="text" name="attr_cwotheradjust" />
<div class="thiefskill row10"><button type="roll" name="roll_rl" title="roll_rl"
style="width:20px" class="btn ui-draggable"
value="&{template:thief} {{thiefskill=Read Languages}} {{honor=@{honor_bonus}*5}} {{diceroll=[[1d100-5*@{honor_bonus}+?{Modifier|0}]]}} {{mods=?{Modifier}}} {{character=@{character_name}}} {{target=[[@{rltotal}]]}}"></button>
Read Languages</div>
<input class="row10 tinyInput" readonly type="text" name="attr_rltotal" />
<input class="row10 tinyInput" readonly type="text" name="attr_rlbase" value="0" />
<input class="row10 tinyInput" type="text" name="attr_rlallocated" />
<input class="row10 tinyInput" readonly type="text" name="attr_rlracial" />
<input class="row10 tinyInput" readonly type="text" name="attr_rldexadjust" value="N/A" />
<input class="row10 tinyInput" readonly type="text" name="attr_rlarmoradjust" value="N/A" />
<input class="row10 tinyInput" type="text" name="attr_rladjust" />
<input class="row10 tinyInput" type="text" name="attr_rlotheradjust" />
</div>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-ep background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="sub-section">
<div class="subtitles">Experience Points</div>
<div class="three-column">
<div class="col1">
<div class="heading">EPs: </div><input type="text" name="attr_eps" class="mediumInputRight" />
</div>
<div class="col2">
<div class="heading">Next Level: </div><input type="text" name="attr_eps_next" class="mediumInputRight" />
</div>
<div class="col3">
<div class="heading">Bonus %: </div><input type="text" name="attr_ep_bonus" class="mediumInputRight" />
</div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Level Tracking</div>
<div class="level-grid">
<div class="level-gridcol">
<div class="heading">&nbsp;</div>
<div class="heading">STR</div>
<div class="heading">DEX</div>
<div class="heading">CON</div>
<div class="heading">INT</div>
<div class="heading">WIS</div>
<div class="heading">CHR</div>
<div class="heading">COM</div>
<div class="heading">HP</div>
</div>
<div class="level-gridcol">
<div class="heading">Die</div>
<input type="text" name="attr_lvl_str_die" />
<input type="text" name="attr_lvl_dex_die" />
<input type="text" name="attr_lvl_con_die" />
<input type="text" name="attr_lvl_int_die" />
<input type="text" name="attr_lvl_wis_die" />
<input type="text" name="attr_lvl_chr_die" />
<input type="text" name="attr_lvl_com_die" />
<input type="text" name="attr_lvl_hp_die" />
</div>
<div class="level-gridcol">
<div class="heading">2nd</div>
<input type="text" name="attr_lvl02_str" />
<input type="text" name="attr_lvl02_dex" />
<input type="text" name="attr_lvl02_con" />
<input type="text" name="attr_lvl02_int" />
<input type="text" name="attr_lvl02_wis" />
<input type="text" name="attr_lvl02_chr" />
<input type="text" name="attr_lvl02_com" />
<input type="text" name="attr_lvl02_hp" />
</div>
<div class="level-gridcol">
<div class="heading">3rd</div>
<input type="text" name="attr_lvl03_str" />
<input type="text" name="attr_lvl03_dex" />
<input type="text" name="attr_lvl03_con" />
<input type="text" name="attr_lvl03_int" />
<input type="text" name="attr_lvl03_wis" />
<input type="text" name="attr_lvl03_chr" />
<input type="text" name="attr_lvl03_com" />
<input type="text" name="attr_lvl03_hp" />
</div>
<div class="level-gridcol">
<div class="heading">4th</div>
<input type="text" name="attr_lvl04_str" />
<input type="text" name="attr_lvl04_dex" />
<input type="text" name="attr_lvl04_con" />
<input type="text" name="attr_lvl04_int" />
<input type="text" name="attr_lvl04_wis" />
<input type="text" name="attr_lvl04_chr" />
<input type="text" name="attr_lvl04_com" />
<input type="text" name="attr_lvl04_hp" />
</div>
<div class="level-gridcol">
<div class="heading">5th</div>
<input type="text" name="attr_lvl05_str" />
<input type="text" name="attr_lvl05_dex" />
<input type="text" name="attr_lvl05_con" />
<input type="text" name="attr_lvl05_int" />
<input type="text" name="attr_lvl05_wis" />
<input type="text" name="attr_lvl05_chr" />
<input type="text" name="attr_lvl05_com" />
<input type="text" name="attr_lvl05_hp" />
</div>
<div class="level-gridcol">
<div class="heading">6th</div>
<input type="text" name="attr_lvl06_str" />
<input type="text" name="attr_lvl06_dex" />
<input type="text" name="attr_lvl06_con" />
<input type="text" name="attr_lvl06_int" />
<input type="text" name="attr_lvl06_wis" />
<input type="text" name="attr_lvl06_chr" />
<input type="text" name="attr_lvl06_com" />
<input type="text" name="attr_lvl06_hp" />
</div>
<div class="level-gridcol">
<div class="heading">7th</div>
<input type="text" name="attr_lvl07_str" />
<input type="text" name="attr_lvl07_dex" />
<input type="text" name="attr_lvl07_con" />
<input type="text" name="attr_lvl07_int" />
<input type="text" name="attr_lvl07_wis" />
<input type="text" name="attr_lvl07_chr" />
<input type="text" name="attr_lvl07_com" />
<input type="text" name="attr_lvl07_hp" />
</div>
<div class="level-gridcol">
<div class="heading">8th</div>
<input type="text" name="attr_lvl08_str" />
<input type="text" name="attr_lvl08_dex" />
<input type="text" name="attr_lvl08_con" />
<input type="text" name="attr_lvl08_int" />
<input type="text" name="attr_lvl08_wis" />
<input type="text" name="attr_lvl08_chr" />
<input type="text" name="attr_lvl08_com" />
<input type="text" name="attr_lvl08_hp" />
</div>
<div class="level-gridcol">
<div class="heading">9th</div>
<input type="text" name="attr_lvl09_str" />
<input type="text" name="attr_lvl09_dex" />
<input type="text" name="attr_lvl09_con" />
<input type="text" name="attr_lvl09_int" />
<input type="text" name="attr_lvl09_wis" />
<input type="text" name="attr_lvl09_chr" />
<input type="text" name="attr_lvl09_com" />
<input type="text" name="attr_lvl09_hp" />
</div>
<div class="level-gridcol">
<div class="heading">10th</div>
<input type="text" name="attr_lvl10_str" />
<input type="text" name="attr_lvl10_dex" />
<input type="text" name="attr_lvl10_con" />
<input type="text" name="attr_lvl10_int" />
<input type="text" name="attr_lvl10_wis" />
<input type="text" name="attr_lvl10_chr" />
<input type="text" name="attr_lvl10_com" />
<input type="text" name="attr_lvl10_hp" />
</div>
<div class="level-gridcol">
<div class="heading">11th</div>
<input type="text" name="attr_lvl11_str" />
<input type="text" name="attr_lvl11_dex" />
<input type="text" name="attr_lvl11_con" />
<input type="text" name="attr_lvl11_int" />
<input type="text" name="attr_lvl11_wis" />
<input type="text" name="attr_lvl11_chr" />
<input type="text" name="attr_lvl11_com" />
<input type="text" name="attr_lvl11_hp" />
</div>
<div class="level-gridcol">
<div class="heading">12th</div>
<input type="text" name="attr_lvl12_str" />
<input type="text" name="attr_lvl12_dex" />
<input type="text" name="attr_lvl12_con" />
<input type="text" name="attr_lvl12_int" />
<input type="text" name="attr_lvl12_wis" />
<input type="text" name="attr_lvl12_chr" />
<input type="text" name="attr_lvl12_com" />
<input type="text" name="attr_lvl12_hp" />
</div>
<div class="level-gridcol">
<div class="heading">13th</div>
<input type="text" name="attr_lvl13_str" />
<input type="text" name="attr_lvl13_dex" />
<input type="text" name="attr_lvl13_con" />
<input type="text" name="attr_lvl13_int" />
<input type="text" name="attr_lvl13_wis" />
<input type="text" name="attr_lvl13_chr" />
<input type="text" name="attr_lvl13_com" />
<input type="text" name="attr_lvl13_hp" />
</div>
<div class="level-gridcol">
<div class="heading">14th</div>
<input type="text" name="attr_lvl14_str" />
<input type="text" name="attr_lvl14_dex" />
<input type="text" name="attr_lvl14_con" />
<input type="text" name="attr_lvl14_int" />
<input type="text" name="attr_lvl14_wis" />
<input type="text" name="attr_lvl14_chr" />
<input type="text" name="attr_lvl14_com" />
<input type="text" name="attr_lvl14_hp" />
</div>
<div class="level-gridcol">
<div class="heading">15th</div>
<input type="text" name="attr_lvl15_str" />
<input type="text" name="attr_lvl15_dex" />
<input type="text" name="attr_lvl15_con" />
<input type="text" name="attr_lvl15_int" />
<input type="text" name="attr_lvl15_wis" />
<input type="text" name="attr_lvl15_chr" />
<input type="text" name="attr_lvl15_com" />
<input type="text" name="attr_lvl15_hp" />
</div>
<div class="level-gridcol">
<div class="heading">16th</div>
<input type="text" name="attr_lvl16_str" />
<input type="text" name="attr_lvl16_dex" />
<input type="text" name="attr_lvl16_con" />
<input type="text" name="attr_lvl16_int" />
<input type="text" name="attr_lvl16_wis" />
<input type="text" name="attr_lvl16_chr" />
<input type="text" name="attr_lvl16_com" />
<input type="text" name="attr_lvl16_hp" />
</div>
<div class="level-gridcol">
<div class="heading">17th</div>
<input type="text" name="attr_lvl17_str" />
<input type="text" name="attr_lvl17_dex" />
<input type="text" name="attr_lvl17_con" />
<input type="text" name="attr_lvl17_int" />
<input type="text" name="attr_lvl17_wis" />
<input type="text" name="attr_lvl17_chr" />
<input type="text" name="attr_lvl17_com" />
<input type="text" name="attr_lvl17_hp" />
</div>
<div class="level-gridcol">
<div class="heading">18th</div>
<input type="text" name="attr_lvl18_str" />
<input type="text" name="attr_lvl18_dex" />
<input type="text" name="attr_lvl18_con" />
<input type="text" name="attr_lvl18_int" />
<input type="text" name="attr_lvl18_wis" />
<input type="text" name="attr_lvl18_chr" />
<input type="text" name="attr_lvl18_com" />
<input type="text" name="attr_lvl18_hp" />
</div>
<div class="level-gridcol">
<div class="heading">19th</div>
<input type="text" name="attr_lvl19_str" />
<input type="text" name="attr_lvl19_dex" />
<input type="text" name="attr_lvl19_con" />
<input type="text" name="attr_lvl19_int" />
<input type="text" name="attr_lvl19_wis" />
<input type="text" name="attr_lvl19_chr" />
<input type="text" name="attr_lvl19_com" />
<input type="text" name="attr_lvl19_hp" />
</div>
<div class="level-gridcol">
<div class="heading">20th</div>
<input type="text" name="attr_lvl20_str" />
<input type="text" name="attr_lvl20_dex" />
<input type="text" name="attr_lvl20_con" />
<input type="text" name="attr_lvl20_int" />
<input type="text" name="attr_lvl20_wis" />
<input type="text" name="attr_lvl20_chr" />
<input type="text" name="attr_lvl20_com" />
<input type="text" name="attr_lvl20_hp" />
</div>
</div>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
<div class="section-death background">
<div class="background-hf"></div>
<div class="background-left">
<div class="basic">
<div class="sub-section">
<div class="subtitles">Raises</div>
<div class="three-column">
<div><div class="fixedwidthlabel" style="width: 150px;">Original Constitution: </div><input class="tinyInput" type="text" name="attr_orig_con" /></div>
<div><div class="fixedwidthlabel" style="width: 150px;"># Times Raised: </div><input class="tinyInput" type="text" name="attr_raised" /></div>
<div><div class="fixedwidthlabel" style="width: 150px;">Remaining Raises: </div><input readonly class="tinyInput" type="text" name="attr_raisesremaining" /></div>
</div>
</div>
<div class="sub-section">
<div class="subtitles">Last Will & Testament</div>
<div style="margin: 10px;margin-bottom:0px;">I, &nbsp;<input readonly type="text" name="attr_character_name"/> &nbsp;do Hereby: </div>
<textarea style="width: 95%;margin:10px;margin-top:0px;" name="attr_last_will"></textarea>
</div>
</div>
</div>
<div class="minor-label center">Visit https://arghive.net/image-sources to see image credits</div>
<div class="background-hf"></div>
</div>
</div>
<rolltemplate class="rolltemplate-thief">
<div class="rolltemplate-container">
<div class="rolltemplate-header">
<div class="template-header">{{character}}</div>
<div class="template-header">Roll for {{thiefskill}}</div>
</div>
<div class="rolltemplate-body">
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Honor: </span><span
class="rolltemplate-item">{{honor}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Modifiers: </span><span
class="rolltemplate-item">{{mods}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Target: </span><span
class="rolltemplate-item">{{target}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Roll Total: </span><span
class="rolltemplate-item">{{diceroll}}</span></div>
<span class="rolltemplate-result">
{{#^rollGreater() diceroll target}}<span
class="rolltemplate-succeed">{{thiefskill}} Success!</span>{{/^rollGreater() diceroll target}}
{{#rollGreater() diceroll target}}<span
class="rolltemplate-fail">{{thiefskill}} Failure</span>{{/rollGreater() diceroll target}}</span>
</span>
</div>
</div>
</rolltemplate>
<rolltemplate class="rolltemplate-spellfail">
<div class="rolltemplate-container">
<div class="rolltemplate-header">
<div class="template-header">{{character}}</div>
<div class="template-header">Roll for Spell Failure</div>
</div>
<div class="rolltemplate-body">
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Honor: </span><span
class="rolltemplate-item">{{honor}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Target: </span><span
class="rolltemplate-item">{{target}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Roll: </span><span
class="rolltemplate-item">{{diceroll}}</span></div>
<span class="rolltemplate-result">
{{#^rollGreater() diceroll target}}<span class="rolltemplate-fail">Spell Failure</span>{{/^rollGreater() diceroll target}}
{{#rollGreater() diceroll target}}<span class="rolltemplate-succeed">No Spell Failure</span>{{/rollGreater() diceroll target}}
</span>
</div>
</div>
</rolltemplate>
<rolltemplate class="rolltemplate-skill">
<div class="rolltemplate-container">
<div class="rolltemplate-header">
<div class="template-header">{{character}}</div>
<div class="template-header">Skill roll for {{skillis}}</div>
</div>
<div class="rolltemplate-body">
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Honor: </span><span
class="rolltemplate-item">{{honor}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Mods: </span><span
class="rolltemplate-item">{{mods}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Total: </span><span
class="rolltemplate-item">{{skillroll}}</span>
<span class="rolltemplate-result">
{{#^rollGreater() skillroll target}}<span
class="rolltemplate-succeed">Success!</span>{{/^rollGreater() skillroll target}}
{{#rollGreater() skillroll target}}<span
class="rolltemplate-fail">Skill attempt failed.</span>{{/rollGreater() skillroll target}}</span>
</div>
</div>
</div>
</rolltemplate>
<rolltemplate class="rolltemplate-save">
<div class="rolltemplate-container">
<div class="rolltemplate-header">
<div class="template-header">{{character}}</div>
<div class="template-header">Save vs {{savevs}}</div>
</div>
<div class="rolltemplate-body">
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Honor: </span><span
class="rolltemplate-item">{{honor}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Mods: </span><span
class="rolltemplate-item">{{mods}}</span></div>
<div class="rolltemplate-row"><span class="rolltemplate-rowhead">Total: </span><span
class="rolltemplate-item">{{save}}</span>
<span class="rolltemplate-result">
{{#rollLess() save target}}<span
class="rolltemplate-fail">FAIL!</span>{{/rollLess() save target}}
{{#^rollLess() save target}}<span
class="rolltemplate-succeed">SAVED!</span>{{/^rollLess() save target}}</span>
</div>
</div>
</div>
</rolltemplate>
<script type="text/worker">
var noop = function () {}; // do nothing.
const parseValue = (thevalue, type='int') => {
if(type === 'int') return parseInt(thevalue,10)||0;
else if(type === 'float') return parseFloat(thevalue,10)||0;
else if(type === 'str') return thevalue;
};
on ("change:orig_con change:raised", function() {
getAttrs(["orig_con", "raised"], function(v) {
var r = parseValue(v.orig_con) - parseValue(v.raised) ;
setAttrs ({
raisesremaining : r
});
});
});
function CalcThiefSkills() {
getAttrs([
"ppbase", "ppallocated" , "ppracial" , "ppdexadjust", "pparmoradjust", "ppadjust", "ppotheradjust",
"olbase", "olallocated" , "olracial" , "oldexadjust", "olarmoradjust", "oladjust", "olotheradjust",
"ftbase", "ftallocated" , "ftracial" , "ftdexadjust", "ftarmoradjust", "ftadjust", "ftotheradjust",
"rtbase", "rtallocated" , "rtracial" , "rtdexadjust", "rtarmoradjust", "rtadjust", "rtotheradjust",
"msbase", "msallocated" , "msracial" , "msdexadjust", "msarmoradjust", "msadjust", "msotheradjust",
"hsbase", "hsallocated" , "hsracial" , "hsdexadjust", "hsarmoradjust", "hsadjust", "hsotheradjust",
"dnbase", "dnallocated" , "dnracial" , "dndexadjust", "dnarmoradjust", "dnadjust", "dnotheradjust",
"cwbase", "cwallocated" , "cwracial" , "cwdexadjust", "cwarmoradjust", "cwadjust", "cwotheradjust",
"rlbase", "rlallocated" , "rlracial" , "rldexadjust", "rlarmoradjust", "rladjust", "rlotheradjust"
], function (v) {
var pp = parseValue(v.ppbase) + parseValue(v.ppallocated) + parseValue (v.ppracial) + parseValue(v.ppdexadjust) + parseValue(v.pparmoradjust) + parseValue(v.ppadjust) + parseValue(v.ppotheradjust) ;
var ol = parseValue(v.olbase) + parseValue(v.olallocated) + parseValue (v.olracial) + parseValue(v.oldexadjust) + parseValue(v.olarmoradjust) + parseValue(v.oladjust) + parseValue(v.olotheradjust) ;
var ft = parseValue(v.ftbase) + parseValue(v.ftallocated) + parseValue (v.ftracial) + parseValue(v.ftdexadjust) + parseValue(v.ftarmoradjust) + parseValue(v.ftadjust) + parseValue(v.ftotheradjust) ;
var rt = parseValue(v.rtbase) + parseValue(v.rtallocated) + parseValue (v.rtracial) + parseValue(v.rtdexadjust) + parseValue(v.rtarmoradjust) + parseValue(v.rtadjust) + parseValue(v.rtotheradjust) ;
var ms = parseValue(v.msbase) + parseValue(v.msallocated) + parseValue (v.msracial) + parseValue(v.msdexadjust) + parseValue(v.msarmoradjust) + parseValue(v.msadjust) + parseValue(v.msotheradjust) ;
var hs = parseValue(v.hsbase) + parseValue(v.hsallocated) + parseValue (v.hsracial) + parseValue(v.hsdexadjust) + parseValue(v.hsarmoradjust) + parseValue(v.hsadjust) + parseValue(v.hsotheradjust) ;
var dn = parseValue(v.dnbase) + parseValue(v.dnallocated) + parseValue (v.dnracial) + parseValue(v.dnarmoradjust) + parseValue(v.dnadjust) + parseValue(v.dnotheradjust) ;
var cw = parseValue(v.cwbase) + parseValue(v.cwallocated) + parseValue (v.cwracial) + parseValue(v.cwarmoradjust) + parseValue(v.cwadjust) + parseValue(v.cwotheradjust) ;
var rl = parseValue(v.rlbase) + parseValue(v.rlallocated) + parseValue (v.rlracial) + parseValue(v.rladjust) + parseValue(v.rlotheradjust) ;
setAttrs ({
ppTotal : pp,
olTotal : ol,
ftTotal : ft,
rtTotal : rt,
msTotal : ms,
hsTotal : hs,
dnTotal : dn,
cwTotal : cw,
rlTotal : rl
});
});
};
on("change:ppallocated change:pparmoradjust change:ppadjust change:ppotheradjust", function() { CalcThiefSkills(); });
on("change:olallocated change:olarmoradjust change:oladjust change:olotheradjust", function() { CalcThiefSkills(); });
on("change:ftallocated change:ftarmoradjust change:ftadjust change:ftotheradjust", function() { CalcThiefSkills(); });
on("change:rtallocated change:rtarmoradjust change:rtadjust change:rtotheradjust", function() { CalcThiefSkills(); });
on("change:msallocated change:msarmoradjust change:msadjust change:msotheradjust", function() { CalcThiefSkills(); });
on("change:hsallocated change:hsarmoradjust change:hsadjust change:hsotheradjust", function() { CalcThiefSkills(); });
on("change:dnallocated change:dnarmoradjust change:dnadjust change:dnotheradjust", function() { CalcThiefSkills(); });
on("change:cwallocated change:cwarmoradjust change:cwadjust change:cwotheradjust", function() { CalcThiefSkills(); });
on("change:rlallocated change:rladjust change:rlotheradjust", function() { CalcThiefSkills(); });
on ("change:character_race", function() {
getAttrs(["character_race"], function(v) {
var pp = 0;
var ol = 0;
var ft = 0;
var rt = 0;
var ms = 0;
var hs = 0;
var dn = 0;
var cw = 0;
var rl = 0;
switch (v.character_race) {
case "Aardvarkian":
pp = -5;ol=-5;ms=5;hs=10;dn=10;rl=-15;
break;
case "Dwarf":
ol = 10; ft=10;rt=15;ms=-10;hs=-5;cw=5;
break;
case "High Elf":
case "Sylvan Elf":
case "Grey Elf":
case "Grunge Elf":
pp = 5; ol=-5;ft=5;ms=5;hs=10;dn=5;
break;
case "Gnome":
ol=5;ft=10;rt=10;ms=5;hs=5;dn=10;cw=-15;
break;
case "Gnome Titan":
pp = 0;
break;
case "Gnomeling":
ol=5;ft=5;rt=5;ms=5;hs=10;dn=5;cw=-15;
break;
case "Darkman": // per the Errata, Dark elves are like 1/2 elves where not specified otherwise
case "Half-elf":
pp = 5; hs=5;
break;
case "Halfling":
case "Thug Halfling":
pp = 5;ol=5;ft=10;ms=10;hs=15;dn=5;cw=-15;rl=-5;
break;
case "Half-Orc":
pp = -5;ol=5;rt=5;dn=5;cw=5;rl=-10;
break;
case "Half-Ogre":
pp = -10;ol=5;ft=5;rt=5;ms=-5;hs=-20;dn=10;cw=20;rl=-20;
break;
case "Human":
break;
case "Pixie Fairy":
pp = 10;ol=-15;ft=-15;rt=-15;ms=20;hs=30;dn=10;cw=-50;rl=-10;
break;
};
setAttrs ({
ppracial : pp,
olracial : ol,
ftracial : ft,
rtracial : rt,
msracial : ms,
hsracial : hs,
dnracial : dn,
cwracial : cw,
rlracial : rl
});
CalcThiefSkills();
});
});
// Gets the relevent values from the sheet and calculates your AC
function CalcClericSpells() {
getAttrs(["clbase1", "clbase2","clbase3","clbase4","clbase5","clbase6","clbase7"
,"clericspelljack","clericspelljacklevel", "wisdom", "wisdom_pct", "wis_chance_spellfail", "sf_misc_clericmod"], function(v) {
var wis = v.wisdom;
var wispct = v.wisdom_pct;
var clb1 = 0; var clb2 = 0; var clb3= 0; var clb4 = 0; var clb5 = 0; var clb6 = 0; var clb7 = 0;
if (wis==13) { clb1 = 1;}
if (wis==14) { clb1 = 2;}
if (wis==15) { clb1 = 2; clb2 = 1;}
if (wis==16) { clb1 = 2; clb2 = 2;}
if (wis==17) { clb1 = 2; clb2 = 2; clb3 = 1;}
if (wis==18 && wispct < 51) { clb1 =2 ; clb2 = 2; clb3 =1; clb4 = 1; }
if (wis==18 && wispct > 50) { clb1 = 2; clb2 = 2; clb3 = 1 ; clb4 =1 ;clb5 = 1;}
if (wis==19) {clb1 = 3; clb2 = 2; clb3 = 2 ; clb4 =1 ;clb5 = 1;}
if (wis==20) {clb1 = 3; clb2 = 3; clb3 = 2 ; clb4 =2 ;clb5 = 1;}
if (wis==21) {clb1 = 3; clb2 = 3; clb3 = 3 ; clb4 =2 ;clb5 = 2;}
if (wis==22) {clb1 = 3; clb2 = 3; clb3 = 3 ; clb4 =3 ;clb5 = 3;}
if (wis==23) {clb1 = 4; clb2 = 3; clb3 = 3 ; clb4 =3 ;clb5 = 3; clb6 = 1;}
if (wis==24) {clb1 = 4; clb2 = 3; clb3 = 3 ; clb4 =3 ;clb5 = 3; clb6 = 2;}
if (wis==25) {clb1 = 4; clb2 = 3; clb3 = 3 ; clb4 =3 ;clb5 = 4; clb6 = 3; clb7 = 1;}
var isSJ = (v.clericspelljack == 'X')? 1 : 0 ;
var sj = parseValue(v.clericspelljacklevel, 'float') - 1;
if (sj < 1 ) sj = 0.0;
var b1 = parseValue(v.clbase1) ;
var b2 = parseValue(v.clbase2) ;
var b3 = parseValue(v.clbase3) ;
var b4 = parseValue(v.clbase4) ;
var b5 = parseValue(v.clbase5) ;
var b6 = parseValue(v.clbase6) ;
var b7 = parseValue(v.clbase7) ;
var t1 = (b1 + clb1) ;
var t2 = (b2 + clb2) ;
var t3 = (b3 + clb3) ;
var t4 = (b4 + clb4) ;
var t5 = (b5 + clb5) ;
var t6 = (b6 + clb6) ;
var t7 = (b7 + clb7) ;
var j1 = Math.floor(sj * t1) ;
var j2 = Math.floor(sj * t2) ;
var j3 = Math.floor(sj * t3) ;
var j4 = Math.floor(sj * t4) ;
var j5 = Math.floor(sj * t5) ;
var j6 = Math.floor(sj * t6) ;
var j7 = Math.floor(sj * t7) ;
var sjMinus = (isSJ) ? 10 : 0;
var sf = parseValue(v.wis_chance_spellfail) + parseValue(v.sf_misc_clericmod) + sjMinus;
setAttrs ({
clbonus1 : clb1,
clbonus2 : clb2,
clbonus3 : clb3,
clbonus4 : clb4,
clbonus5 : clb5,
clbonus6 : clb6,
clbonus7 : clb7,
cljack1 : j1,
cljack2 : j2,
cljack3 : j3,
cljack4 : j4,
cljack5 : j5,
cljack6 : j6,
cljack7 : j7,
cltotal1 : (b1 > 0) ? j1*isSJ + t1 : "",
cltotal2 : (b2 > 0) ? j2*isSJ + t2 : "",
cltotal3 : (b3 > 0) ? j3*isSJ + t3 : "",
cltotal4 : (b4 > 0) ? j4*isSJ + t4 : "",
cltotal5 : (b5 > 0) ? j5*isSJ + t5 : "",
cltotal6 : (b6 > 0) ? j6*isSJ + t6 : "",
cltotal7 : (b7 > 0) ? j7*isSJ + t7 : "",
sf_spelljacked : sjMinus,
sf_clericspellFailure : sf
});
});
};
on ("change:clbase7 change:clbase6 change:clbase5 change:clbase4 change:clbase3 change:clbase2 change:clbase1 change:clericspelljack change:clericspelljacklevel change:sf_misc_clericmod", function() {
CalcClericSpells();
});
// Gets the relevent values from the sheet and calculates your AC
function CalcSpellFailure() {
getAttrs(["battlemage", "sf_armor_shield","sf_misc_mod","spelljack","int_spell_mishap"], function(v) {
var sm = (v.int_spell_mishap=="--") ? 0 : parseValue (v.int_spell_mishap) ;
var ar = parseValue(v.sf_armor_shield) ;
var bm = (v.battlemage == "X" && ar > 0) ? ((ar - 40 < 0) ? -ar : -40) : 0; // Battlemages get 40% off armor failure
var mm = parseValue (v.sf_misc_mod) ;
var sj = (v.spelljack == "X") ? 10 : 0 ;
var total = sm + ar + bm + mm + sj ;
setAttrs ({
sf_low_int : sm,
sf_battlemage : bm,
sf_spelljacked : sj,
sf_spellFailure : total
});
});
};
on ("change:battlemage change:sf_armor_shield change:sf_misc_mod change:spelljack", function() {
CalcSpellFailure();
});
on ("change:mubase9 change:mubase8 change:mubase7 change:mubase6 change:mubase5 change:mubase4 change:mubase3 change:mubase2 change:mubase1 change:mubase0 change:mubonus0 change:mubonus1 change:mubonus2 change:mubonus3 change:mubonus4 change:mubonus5 change:mubonus6 change:mubonus7 change:mubonus8 change:mubonus9 change:battlemage change:spelljack change:spelljacklevel", function() {
getAttrs(["mubase0", "mubase1", "mubase2","mubase3","mubase4","mubase5","mubase6","mubase7","mubase8","mubase9",
"mubonus0", "mubonus1","mubonus2","mubonus3","mubonus4","mubonus5","mubonus6","mubonus7","mubonus8","mubonus9",
"battlemage","spelljack","spelljacklevel"], function(v) {
var isSJ = (v.spelljack == 'X')? 1 : 0 ;
var sj = parseValue(v.spelljacklevel, 'float') - 1;
if (sj < 1 ) sj = 0.0;
var t0 = (parseValue(v.mubase0) + parseValue(v.mubonus0)) ;
var t1 = (parseValue(v.mubase1) + parseValue(v.mubonus1)) ;
var t2 = (parseValue(v.mubase2) + parseValue(v.mubonus2)) ;
var t3 = (parseValue(v.mubase3) + parseValue(v.mubonus3)) ;
var t4 = (parseValue(v.mubase4) + parseValue(v.mubonus4)) ;
var t5 = (parseValue(v.mubase5) + parseValue(v.mubonus5)) ;
var t6 = (parseValue(v.mubase6) + parseValue(v.mubonus6)) ;
var t7 = (parseValue(v.mubase7) + parseValue(v.mubonus7)) ;
var t8 = (parseValue(v.mubase8) + parseValue(v.mubonus8)) ;
var t9 = (parseValue(v.mubase9) + parseValue(v.mubonus9)) ;
var j0 = 0; // Cantrips don't jack
var j1 = Math.floor(sj * t1) ;
var j2 = Math.floor(sj * t2) ;
var j3 = Math.floor(sj * t3) ;
var j4 = Math.floor(sj * t4) ;
var j5 = Math.floor(sj * t5) ;
var j6 = Math.floor(sj * t6) ;
var j7 = Math.floor(sj * t7) ;
var j8 = Math.floor(sj * t8) ;
var j9 = Math.floor(sj * t9) ;
setAttrs({
mujack0 : "N/A",
mujack1 : j1,
mujack2 : j2,
mujack3 : j3,
mujack4 : j4,
mujack5 : j5,
mujack6 : j6,
mujack7 : j7,
mujack8 : j8,
mujack9 : j9,
mutotal0 : (t0 > 0) ? t0 : "",
mutotal1 : (t1 > 0) ? j1*isSJ + t1 : "",
mutotal2 : (t2 > 0) ? j2*isSJ + t2 : "",
mutotal3 : (t3 > 0) ? j3*isSJ + t3 : "",
mutotal4 : (t4 > 0) ? j4*isSJ + t4 : "",
mutotal5 : (t5 > 0) ? j5*isSJ + t5 : "",
mutotal6 : (t6 > 0) ? j6*isSJ + t6 : "",
mutotal7 : (t7 > 0) ? j7*isSJ + t7 : "",
mutotal8 : (t8 > 0) ? j8*isSJ + t8 : "",
mutotal9 : (t9 > 0) ? j9*isSJ + t9 : ""
});
});
});
const getHonorDie = (level, honor) => {
let honortable = [
{"key": 10010,"die": "1"},
{"key": 10015,"die": "d3"},
{"key": 10020,"die": "d4"},
{"key": 10030,"die": "d3"},
{"key": 19999,"die": "1"},
{"key": 20010,"die": "1"},
{"key": 20015,"die": "d3"},
{"key": 20020,"die": "d4"},
{"key": 20025,"die": "d4+1"},
{"key": 20030,"die": "d6"},
{"key": 20035,"die": "d4+1"},
{"key": 20040,"die": "d4"},
{"key": 20050,"die": "d3"},
{"key": 29999,"die": "1"},
{"key": 30010,"die": "1"},
{"key": 30015,"die": "d3"},
{"key": 30020,"die": "d4"},
{"key": 30025,"die": "d4+1"},
{"key": 30035,"die": "d6"},
{"key": 30040,"die": "d6+1"},
{"key": 30045,"die": "d6"},
{"key": 30055,"die": "d4+1"},
{"key": 30065,"die": "d4"},
{"key": 30080,"die": "d3"},
{"key": 39999,"die": "1"},
{"key": 40010,"die": "1"},
{"key": 40015,"die": "d3"},
{"key": 40020,"die": "d4"},
{"key": 40025,"die": "d4+1"},
{"key": 40035,"die": "d6"},
{"key": 40045,"die": "d6+1"},
{"key": 40050,"die": "d8"},
{"key": 40055,"die": "d6+1"},
{"key": 40060,"die": "d6"},
{"key": 40070,"die": "d4+1"},
{"key": 40080,"die": "d4"},
{"key": 40095,"die": "d3"},
{"key": 49999,"die": "1"},
{"key": 50010,"die": "1"},
{"key": 50015,"die": "d3"},
{"key": 50020,"die": "d4"},
{"key": 50025,"die": "d4+1"},
{"key": 50030,"die": "d6"},
{"key": 50045,"die": "d6+1"},
{"key": 50055,"die": "d8"},
{"key": 50060,"die": "d8+1"},
{"key": 50065,"die": "d8"},
{"key": 50075,"die": "d6+1"},
{"key": 50085,"die": "d6"},
{"key": 50100,"die": "d4+1"},
{"key": 50115,"die": "d4"},
{"key": 50135,"die": "d3"},
{"key": 59999,"die": "1"},
{"key": 60010,"die": "1"},
{"key": 60015,"die": "d3"},
{"key": 60020,"die": "d4"},
{"key": 60025,"die": "d4+1"},
{"key": 60030,"die": "d6"},
{"key": 60035,"die": "d6+1"},
{"key": 60050,"die": "d8"},
{"key": 60065,"die": "d8+1"},
{"key": 60070,"die": "d10"},
{"key": 60075,"die": "d8+1"},
{"key": 60080,"die": "d8"},
{"key": 60090,"die": "d6+1"},
{"key": 60100,"die": "d6"},
{"key": 60115,"die": "d4+1"},
{"key": 60130,"die": "d4"},
{"key": 60150,"die": "d3"},
{"key": 69999,"die": "1"},
{"key": 70010,"die": "1"},
{"key": 70015,"die": "d3"},
{"key": 70020,"die": "d4"},
{"key": 70025,"die": "d4+1"},
{"key": 70030,"die": "d6"},
{"key": 70035,"die": "d6+1"},
{"key": 70040,"die": "d8"},
{"key": 70060,"die": "d8+1"},
{"key": 70075,"die": "d10"},
{"key": 70080,"die": "d10+1"},
{"key": 70085,"die": "d10"},
{"key": 70095,"die": "d8+1"},
{"key": 70105,"die": "d8"},
{"key": 70120,"die": "d6+1"},
{"key": 70135,"die": "d6"},
{"key": 70155,"die": "d4+1"},
{"key": 70175,"die": "d4"},
{"key": 70215,"die": "d3"},
{"key": 79999,"die": "1"},
{"key": 80010,"die": "1"},
{"key": 80015,"die": "d3"},
{"key": 80020,"die": "d4"},
{"key": 80025,"die": "d4+1"},
{"key": 80030,"die": "d6"},
{"key": 80035,"die": "d6+1"},
{"key": 80040,"die": "d8"},
{"key": 80045,"die": "d8+1"},
{"key": 80065,"die": "d10"},
{"key": 80085,"die": "d10+1"},
{"key": 80090,"die": "d12"},
{"key": 80095,"die": "d10+1"},
{"key": 80100,"die": "d10"},
{"key": 80110,"die": "d8+1"},
{"key": 80120,"die": "d8"},
{"key": 80135,"die": "d6+1"},
{"key": 80150,"die": "d6"},
{"key": 80170,"die": "d4+1"},
{"key": 80190,"die": "d4"},
{"key": 80215,"die": "d3"},
{"key": 89999,"die": "1"},
{"key": 90010,"die": "1"},
{"key": 90015,"die": "d3"},
{"key": 90020,"die": "d4"},
{"key": 90025,"die": "d4+1"},
{"key": 90030,"die": "d6"},
{"key": 90035,"die": "d6+1"},
{"key": 90040,"die": "d8"},
{"key": 90045,"die": "d8+1"},
{"key": 90050,"die": "d10"},
{"key": 90075,"die": "d10+1"},
{"key": 90095,"die": "d12"},
{"key": 90100,"die": "d12+1"},
{"key": 90105,"die": "d12"},
{"key": 90115,"die": "d10+1"},
{"key": 90125,"die": "d10"},
{"key": 90140,"die": "d8+1"},
{"key": 90155,"die": "d8"},
{"key": 90175,"die": "d6+1"},
{"key": 90195,"die": "d6"},
{"key": 90220,"die": "d4+1"},
{"key": 90245,"die": "d4"},
{"key": 90270,"die": "d3"},
{"key": 99999,"die": "1"},
{"key": 100010,"die": "1"},
{"key": 100015,"die": "d3"},
{"key": 100020,"die": "d4"},
{"key": 100025,"die": "d4+1"},
{"key": 100030,"die": "d6"},
{"key": 100035,"die": "d6+1"},
{"key": 100040,"die": "d8"},
{"key": 100045,"die": "d8+1"},
{"key": 100050,"die": "d10"},
{"key": 100055,"die": "d10+1"},
{"key": 100080,"die": "d12"},
{"key": 100105,"die": "d12+1"},
{"key": 100110,"die": "d12+2"},
{"key": 100115,"die": "d12+1"},
{"key": 100120,"die": "d12"},
{"key": 100130,"die": "d10+1"},
{"key": 100140,"die": "d10"},
{"key": 100155,"die": "d8+1"},
{"key": 100170,"die": "d8"},
{"key": 100190,"die": "d6+1"},
{"key": 100210,"die": "d6"},
{"key": 100235,"die": "d4+1"},
{"key": 100260,"die": "d4"},
{"key": 100285,"die": "d3"},
{"key": 109999,"die": "1"},
{"key": 110010,"die": "1"},
{"key": 110015,"die": "d3"},
{"key": 110020,"die": "d4"},
{"key": 110025,"die": "d4+1"},
{"key": 110030,"die": "d6"},
{"key": 110035,"die": "d6+1"},
{"key": 110040,"die": "d8"},
{"key": 110045,"die": "d8+1"},
{"key": 110050,"die": "d10"},
{"key": 110055,"die": "d10+1"},
{"key": 110060,"die": "d12"},
{"key": 110090,"die": "d12+1"},
{"key": 110115,"die": "d12+2"},
{"key": 110120,"die": "d20"},
{"key": 110125,"die": "d12+2"},
{"key": 110130,"die": "d12+1"},
{"key": 110135,"die": "d12"},
{"key": 110145,"die": "d10+1"},
{"key": 110155,"die": "d10"},
{"key": 110170,"die": "d8+1"},
{"key": 110185,"die": "d8"},
{"key": 110205,"die": "d6+1"},
{"key": 110225,"die": "d6"},
{"key": 110250,"die": "d4+1"},
{"key": 110285,"die": "d4"},
{"key": 110310,"die": "d3"},
{"key": 119999,"die": "1"},
{"key": 120010,"die": "1"},
{"key": 120015,"die": "d3"},
{"key": 120020,"die": "d4"},
{"key": 120025,"die": "d4+1"},
{"key": 120030,"die": "d6"},
{"key": 120035,"die": "d6+1"},
{"key": 120040,"die": "d8"},
{"key": 120045,"die": "d8+1"},
{"key": 120050,"die": "d10"},
{"key": 120055,"die": "d10+1"},
{"key": 120060,"die": "d12"},
{"key": 120085,"die": "d12+1"},
{"key": 120115,"die": "d12+2"},
{"key": 120130,"die": "d20"},
{"key": 120135,"die": "d12+2"},
{"key": 120140,"die": "d12+1"},
{"key": 120145,"die": "d12"},
{"key": 120155,"die": "d10+1"},
{"key": 120165,"die": "d10"},
{"key": 120180,"die": "d8+1"},
{"key": 120195,"die": "d8"},
{"key": 120215,"die": "d6+1"},
{"key": 120235,"die": "d6"},
{"key": 120260,"die": "d4+1"},
{"key": 120295,"die": "d4"},
{"key": 120320,"die": "d3"},
{"key": 129999,"die": "1"},
{"key": 130010,"die": "1"},
{"key": 130015,"die": "d3"},
{"key": 130020,"die": "d4"},
{"key": 130025,"die": "d4+1"},
{"key": 130030,"die": "d6"},
{"key": 130035,"die": "d6+1"},
{"key": 130040,"die": "d8"},
{"key": 130045,"die": "d8+1"},
{"key": 130050,"die": "d10"},
{"key": 130055,"die": "d10+1"},
{"key": 130060,"die": "d12"},
{"key": 130070,"die": "d12+1"},
{"key": 130105,"die": "d12+2"},
{"key": 130140,"die": "d20"},
{"key": 130145,"die": "d12+2"},
{"key": 130150,"die": "d12+1"},
{"key": 130155,"die": "d12"},
{"key": 130165,"die": "d10+1"},
{"key": 130175,"die": "d10"},
{"key": 130190,"die": "d8+1"},
{"key": 130205,"die": "d8"},
{"key": 130225,"die": "d6+1"},
{"key": 130245,"die": "d6"},
{"key": 130270,"die": "d4+1"},
{"key": 130305,"die": "d4"},
{"key": 130330,"die": "d3"},
{"key": 139999,"die": "1"},
{"key": 140010,"die": "1"},
{"key": 140015,"die": "d3"},
{"key": 140020,"die": "d4"},
{"key": 140025,"die": "d4+1"},
{"key": 140030,"die": "d6"},
{"key": 140035,"die": "d6+1"},
{"key": 140040,"die": "d8"},
{"key": 140045,"die": "d8+1"},
{"key": 140050,"die": "d10"},
{"key": 140055,"die": "d10+1"},
{"key": 140060,"die": "d12"},
{"key": 140070,"die": "d12+1"},
{"key": 140090,"die": "d12+2"},
{"key": 140150,"die": "d20"},
{"key": 140155,"die": "d12+2"},
{"key": 140160,"die": "d12+1"},
{"key": 140165,"die": "d12"},
{"key": 140175,"die": "d10+1"},
{"key": 140185,"die": "d10"},
{"key": 140200,"die": "d8+1"},
{"key": 140215,"die": "d8"},
{"key": 140235,"die": "d6+1"},
{"key": 140255,"die": "d6"},
{"key": 140280,"die": "d4+1"},
{"key": 140315,"die": "d4"},
{"key": 140340,"die": "d3"},
{"key": 149999,"die": "1"},
{"key": 150010,"die": "1"},
{"key": 150015,"die": "d3"},
{"key": 150020,"die": "d4"},
{"key": 150025,"die": "d4+1"},
{"key": 150030,"die": "d6"},
{"key": 150035,"die": "d6+1"},
{"key": 150040,"die": "d8"},
{"key": 150045,"die": "d8+1"},
{"key": 150050,"die": "d10"},
{"key": 150055,"die": "d10+1"},
{"key": 150060,"die": "d12"},
{"key": 150070,"die": "d12+1"},
{"key": 150080,"die": "d12+2"},
{"key": 150160,"die": "d20"},
{"key": 150165,"die": "d12+2"},
{"key": 150170,"die": "d12+1"},
{"key": 150175,"die": "d12"},
{"key": 150185,"die": "d10+1"},
{"key": 150195,"die": "d10"},
{"key": 150210,"die": "d8+1"},
{"key": 150225,"die": "d8"},
{"key": 150245,"die": "d6+1"},
{"key": 150265,"die": "d6"},
{"key": 150290,"die": "d4+1"},
{"key": 150325,"die": "d4"},
{"key": 150350,"die": "d3"},
{"key": 159999,"die": "1"},
{"key": 160010,"die": "1"},
{"key": 160015,"die": "d3"},
{"key": 160020,"die": "d4"},
{"key": 160025,"die": "d4+1"},
{"key": 160030,"die": "d6"},
{"key": 160035,"die": "d6+1"},
{"key": 160040,"die": "d8"},
{"key": 160045,"die": "d8+1"},
{"key": 160050,"die": "d10"},
{"key": 160055,"die": "d10+1"},
{"key": 160060,"die": "d12"},
{"key": 160070,"die": "d12+1"},
{"key": 160080,"die": "d12+2"},
{"key": 160170,"die": "d20"},
{"key": 160175,"die": "d12+2"},
{"key": 160180,"die": "d12+1"},
{"key": 160185,"die": "d12"},
{"key": 160195,"die": "d10+1"},
{"key": 160205,"die": "d10"},
{"key": 160220,"die": "d8+1"},
{"key": 160235,"die": "d8"},
{"key": 160255,"die": "d6+1"},
{"key": 160275,"die": "d6"},
{"key": 160300,"die": "d4+1"},
{"key": 160335,"die": "d4"},
{"key": 160360,"die": "d3"},
{"key": 169999,"die": "1"},
{"key": 170010,"die": "1"},
{"key": 170015,"die": "d3"},
{"key": 170020,"die": "d4"},
{"key": 170025,"die": "d4+1"},
{"key": 170030,"die": "d6"},
{"key": 170035,"die": "d6+1"},
{"key": 170040,"die": "d8"},
{"key": 170045,"die": "d8+1"},
{"key": 170050,"die": "d10"},
{"key": 170055,"die": "d10+1"},
{"key": 170060,"die": "d12"},
{"key": 170070,"die": "d12+1"},
{"key": 170080,"die": "d12+2"},
{"key": 170180,"die": "d20"},
{"key": 170185,"die": "d12+2"},
{"key": 170190,"die": "d12+1"},
{"key": 170195,"die": "d12"},
{"key": 170205,"die": "d10+1"},
{"key": 170215,"die": "d10"},
{"key": 170230,"die": "d8+1"},
{"key": 170245,"die": "d8"},
{"key": 170265,"die": "d6+1"},
{"key": 170285,"die": "d6"},
{"key": 170310,"die": "d4+1"},
{"key": 170345,"die": "d4"},
{"key": 170370,"die": "d3"},
{"key": 179999,"die": "1"},
{"key": 180010,"die": "1"},
{"key": 180015,"die": "d3"},
{"key": 180020,"die": "d4"},
{"key": 180025,"die": "d4+1"},
{"key": 180030,"die": "d6"},
{"key": 180035,"die": "d6+1"},
{"key": 180040,"die": "d8"},
{"key": 180045,"die": "d8+1"},
{"key": 180050,"die": "d10"},
{"key": 180055,"die": "d10+1"},
{"key": 180060,"die": "d12"},
{"key": 180070,"die": "d12+1"},
{"key": 180080,"die": "d12+2"},
{"key": 180190,"die": "d20"},
{"key": 180195,"die": "d12+2"},
{"key": 180200,"die": "d12+1"},
{"key": 180205,"die": "d12"},
{"key": 180215,"die": "d10+1"},
{"key": 180225,"die": "d10"},
{"key": 180240,"die": "d8+1"},
{"key": 180255,"die": "d8"},
{"key": 180275,"die": "d6+1"},
{"key": 180295,"die": "d6"},
{"key": 180320,"die": "d4+1"},
{"key": 180355,"die": "d4"},
{"key": 180380,"die": "d3"},
{"key": 189999,"die": "1"},
{"key": 190010,"die": "1"},
{"key": 190015,"die": "d3"},
{"key": 190020,"die": "d4"},
{"key": 190025,"die": "d4+1"},
{"key": 190030,"die": "d6"},
{"key": 190035,"die": "d6+1"},
{"key": 190040,"die": "d8"},
{"key": 190045,"die": "d8+1"},
{"key": 190050,"die": "d10"},
{"key": 190055,"die": "d10+1"},
{"key": 190060,"die": "d12"},
{"key": 190070,"die": "d12+1"},
{"key": 190075,"die": "d12+2"},
{"key": 190200,"die": "d20"},
{"key": 190205,"die": "d12+2"},
{"key": 190210,"die": "d12+1"},
{"key": 190215,"die": "d12"},
{"key": 190225,"die": "d10+1"},
{"key": 190235,"die": "d10"},
{"key": 190250,"die": "d8+1"},
{"key": 190265,"die": "d8"},
{"key": 190285,"die": "d6+1"},
{"key": 190305,"die": "d6"},
{"key": 190330,"die": "d4+1"},
{"key": 190365,"die": "d4"},
{"key": 190390,"die": "d3"},
{"key": 199999,"die": "1"},
{"key": 200010,"die": "1"},
{"key": 200015,"die": "d3"},
{"key": 200020,"die": "d4"},
{"key": 200025,"die": "d4+1"},
{"key": 200030,"die": "d6"},
{"key": 200035,"die": "d6+1"},
{"key": 200040,"die": "d8"},
{"key": 200045,"die": "d8+1"},
{"key": 200050,"die": "d10"},
{"key": 200055,"die": "d10+1"},
{"key": 200060,"die": "d12"},
{"key": 200065,"die": "d12+1"},
{"key": 200070,"die": "d12+2"},
{"key": 200210,"die": "d20"},
{"key": 200215,"die": "d12+2"},
{"key": 200220,"die": "d12+1"},
{"key": 200225,"die": "d12"},
{"key": 200235,"die": "d10+1"},
{"key": 200245,"die": "d10"},
{"key": 200260,"die": "d8+1"},
{"key": 200275,"die": "d8"},
{"key": 200295,"die": "d6+1"},
{"key": 200315,"die": "d6"},
{"key": 200340,"die": "d4+1"},
{"key": 200375,"die": "d4"},
{"key": 200400,"die": "d3"},
{"key": 209999,"die": "1"}
] ;
var myKey = level * 10000 + honor;
var die = honortable.find( item => item.key >= myKey);
return die.die ;
}
const getArmorInfo = (armorName) => {
let armortable = [
{key:"None","AC": 10, "HP": [0,0,0,0,0,0,0,0,0], "PP": 5, "OL": 0, "FRT": 0, "MS": 10, "HIS": 5, "DN": 0, "CW": 10, "SF": 0},
{key:"Heavy Cloth","AC": 9, "HP": [1,0,0,0,0,0,0,0,0], "PP": 5, "OL": 0, "FRT": 0, "MS": 10, "HIS": 5, "DN": 0, "CW": 10, "SF": 0},
{key:"Leather","AC": 8, "HP": [2,1,0,0,0,0,0,0,0], "PP": 5, "OL": 0, "FRT": 0, "MS": 10, "HIS": 5, "DN": 0, "CW": 10, "SF": 25},
{key:"Padded","AC": 8, "HP": [2,1,0,0,0,0,0,0,0], "PP": -25, "OL": -10, "FRT": -10, "MS": -15, "HIS": -15, "DN": -5, "CW": -25, "SF": 20},
{key:"Stud.Leather","AC": 7, "HP": [4,2,1,0,0,0,0,0,0], "PP": -25, "OL": -10, "FRT": -10, "MS": -15, "HIS": -15, "DN": -5, "CW": -25, "SF": 30},
{key:"Ring Mail","AC": 7, "HP": [6,2,1,0,0,0,0,0,0], "PP": -25, "OL": -10, "FRT": -10, "MS": -15, "HIS": -15, "DN": -5, "CW": -25, "SF": 40},
{key:"Tinker's Armor","AC": 7, "HP": [4,2,1,0,0,0,0,0,0], "PP": -25, "OL": -10, "FRT": -10, "MS": -15, "HIS": -15, "DN": -5, "CW": -25, "SF": 25},
{key:"Hide","AC": 6, "HP": [5,4,2,1,0,0,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 40},
{key:"Brigandine","AC": 6, "HP": [6,4,2,1,0,0,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 35},
{key:"Scale Mail","AC": 6, "HP": [7,4,2,1,0,0,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 35},
{key:"Chain Shirt","AC": 6, "HP": [6,4,2,1,0,0,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 40},
{key:"Chain Mail","AC": 5, "HP": [8,6,4,2,1,0,0,0,0], "PP": -25, "OL": -10, "FRT": -10, "MS": -15, "HIS": -15, "DN": -10, "CW": -25, "SF": 50},
{key:"Stud. Hide","AC": 5, "HP": [7,6,4,2,1,0,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 45},
{key:"Splint Mail","AC": 4, "HP": [8,8,6,4,2,1,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 60},
{key:"Heavy Chain","AC": 4, "HP": [9,8,6,4,2,1,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 60},
{key:"Banded Mail","AC": 4, "HP": [9,8,6,4,2,1,0,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 80},
{key:"Plate Mail","AC": 3, "HP": [12,10,8,6,4,2,1,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 100},
{key:"Half-Plate","AC": 3, "HP": [18,12,10,8,4,2,1,0,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 110},
{key:"Field Plate","AC": 2, "HP": [24,12,10,8,6,4,2,1,0], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 120},
{key:"Full Plate","AC": 1, "HP": [36,24,12,10,8,6,4,2,1], "PP": -999, "OL": -999, "FRT": -999, "MS": -999, "HIS": -999, "DN": -999, "CW": -999, "SF": 150},
{key:"Elven Chain","AC": 5, "HP": [8,6,4,2,1,0,0,0,0], "PP": -20, "OL": -5, "FRT": -5, "MS": -10, "HIS": -10, "DN": -5, "CW": -20, "SF": 20}
] ;
var armor = armortable.find (i => i.key == armorName) ;
return armor;
}
const getShieldInfo = (shieldName) => {
let shieldtable = [
{key:"None","AC": 0, "HP": [0,0,0,0,0], "SF": 0},
{key:"Buckler","AC": 1, "HP": [3,1,0,0,0], "SF": 5},
{key:"Small Shield","AC": 2, "HP": [4,3,1,0,0], "SF": 10},
{key:"Medium Shield","AC": 3, "HP": [5,4,3,1,0], "SF": 15},
{key:"Body Shield","AC": 4, "HP": [6,5,4,3,1], "SF": 55},
{key:"Wood Buckler","AC": 1, "HP": [2,1,0,0,0], "SF": 0},
{key:"Wood Small","AC": 2, "HP": [3,2,1,0,0], "SF": 5},
{key:"Wood Medium","AC": 3, "HP": [3,2,2,1,0], "SF": 10},
{key:"Wood Body","AC": 4, "HP": [3,3,2,2,1], "SF": 15}
];
var shield = shieldtable.find (i => i.key == shieldName) ;
return shield;
}
function removeItemAll(arr, value) {
var i = 0;
while (i < arr.length) {
if (arr[i] === value) {
arr.splice(i, 1);
} else {
++i;
}
}
return arr;
}
// Gets the relevent values from the sheet and calculates your AC
function CalculateAC() {
getAttrs(["armor_current_ac", "shield_current_ac","dex_defense_adjust","misc_ac_bonus","acrobatics"], function(v) {
var armor_ac = parseValue(v.armor_current_ac);
var shield_ac = parseValue(v.shield_current_ac);
var dex_amt = parseValue (v.dex_defense_adjust);
var misc_amt = parseValue (v.misc_ac_bonus);
//var acrobatics = 0;
var acrobatics = (v.acrobatics=="on") ? 1 : 0;
var ac = armor_ac - shield_ac + dex_amt - misc_amt - acrobatics;
var rear = armor_ac - misc_amt;
var shieldless = armor_ac + dex_amt - misc_amt - acrobatics;
setAttrs ({
armor_class : ac ,
shieldless_armor_class : shieldless,
rear_armor_class : rear
});
});
}
on ("change:acrobatics change:misc_ac_bonus" , function() {
CalculateAC();
});
on ("change:shield_type change:shield_plus change:shield_damage" , function() {
getAttrs(["shield_type" , "shield_plus", "shield_damage"], function (v) {
let shieldPlus = parseValue (v.shield_plus) ;
let shield = getShieldInfo(v.shield_type) ;
let shieldDamage = parseValue(v.shield_damage);
var abac= shield.AC ;
var acac = shield.AC + shieldPlus;
// Now calculate the hits for each level of the armor
var ahp = shield.HP;
for (var i = 0 ; i < v.shield_plus ; i++) { ahp.unshift (ahp[0]);}
removeItemAll(ahp, 0) ;
var ah = ahp.join("/") ;
// Reduce the current AC based on the damage taken to the armor:
for (var j = 0; j < ahp.length; j++) {
shieldDamage -= ahp[j];
if (shieldDamage < 0) break;
acac --; // Lose an armor class!
}
setAttrs ({
shield_current_ac : acac,
shield_hits : ah,
shield_base_ac : abac
}) ;
CalculateAC();
}) ;
});
on ("change:armor_type change:armor_plus change:armor_damage" , function() {
getAttrs(["armor_type" , "armor_plus", "armor_damage"], function (v) {
let armorPlus = parseValue (v.armor_plus) ;
let armor = getArmorInfo(v.armor_type) ;
let armorDamage = parseValue(v.armor_damage);
var abac= armor.AC ;
var acac = armor.AC - armorPlus;
// Now calculate the hits for each level of the armor
var ahp = armor.HP;
for (var i = 0 ; i < v.armor_plus ; i++) { ahp.unshift (ahp[0]);}
removeItemAll(ahp, 0) ;
var ah = ahp.join("/") ;
// Reduce the current AC based on the damage taken to the armor:
for (var j = 0; j < ahp.length; j++) {
armorDamage -= ahp[j];
if (armorDamage < 0) break;
acac ++; // Lose an armor class!
}
setAttrs ({
armor_current_ac : acac,
armor_hits : ah,
armor_base_ac : abac,
pparmoradjust : armor.PP,
olarmoradjust : armor.OL,
ftarmoradjust : armor.FRT,
rtarmoradjust : armor.FRT,
msarmoradjust : armor.MS,
hsarmoradjust : armor.HIS,
dnarmoradjust : armor.DN,
cwarmoradjust : armor.CW
}) ;
CalculateAC();
CalcThiefSkills();
}) ;
});
on ("change:hit_points_max", function() {
getAttrs(["hit_points_max"], function(v) {
setAttrs({
TOP : Math.round(v.hit_points_max / 2.0)
});
});
});
function CalculateMove() {
getAttrs(["character_race", "armor_type", "armor_plus", "str_wgt_allow", "character_encumberance"], function(v) {
var armorBulk = "Fairly";
switch (v.armor_type) {
case "None" : case "Heavy Cloth" : case "Leather" :
armorBulk = "Non";
break;
case "Splint Mail" : case "Heavy Chain" : case "Banded Mail" : case "Plate Mail" : case "Half-Plate" : case "Field Plate" : case "Full Plate" :
armorBulk ="Bulky" ;
break;
}
var armorPlus = parseValue(v.armor_plus);
if (armorPlus > 0 && armorBulk=="Fairly") armorBulk = "Non" ;
if (armorPlus > 0 && armorBulk=="Bulky") armorBulk = "Fairly" ;
var bm = 12;
var fly = 0;
switch (v.character_race) {
case "Dwarf": case "Gnome" : case "Gnome Titan" : case "Halfling" : case "Thug Halfling" :
bm = 6;
break;
case "Gnomeling" : case "Pixie Fairy" :
bm = 4; fly = 18;
break;
case "Half-Ogre" :
bm = 13;
break;
}
var ab = 1;
var abtext = "" ;
switch (armorBulk){
case "Fairly":
ab = 0.66667;
abtext = "2/3" ;
break;
case "Bulky":
ab = 0.5;
abtext = "1/2";
break;
}
var wgtAllow = parseValue(v.str_wgt_allow);
var encum =parseValue(v.character_encumberance);
var wan = wgtAllow ;
var wal = Math.ceil(Math.max (wan * 1.25 , wan + 2)) ;
var wam = Math.ceil(Math.max (wan * 1.50 , wal + 2)) ;
var wah = Math.ceil(Math.max (wan * 2.00 , wam + 2)) ;
var was = Math.ceil(Math.max (wan * 3.00 , wah + 2)) ;
var ema = 0; // Encumberance Move Adjustment - this is beyond severe
var ematext = "n/a" ;
if (encum < was) {ema = -1; ematext ="Always 1" }; // Move rate will always be 1
if (encum < wah) {ema = 0.33333; ematext="1/3"};
if (encum < wam) {ema = 0.5; ematext="1/2"};
if (encum < wal) {ema = 0.66667; ematext="2/3"};
if (encum < wan) {ema = 1.0; ematext = "1"} ;
var moveAdjust = ema * ab;
var walks = Math.round(Math.max (0, bm * moveAdjust)) ;
var runs = Math.round(Math.max (0, 2.0 * bm * moveAdjust)) ;
var charges = Math.round(Math.max (0, 1.5 * bm * moveAdjust)) ;
var flys = (fly > 0) ? Math.round(Math.max (0, fly * moveAdjust)) : "n/a" ;
var crawls = 2;
var climbs = walks / 10;
var swims = 2;
if (encum > 20) swims="n/a"; // TODO: allow 1 extra pound per point of strength bonus to damage.
setAttrs ({
base_move: bm,
enc_non : wgtAllow,
enc_light: wal,
enc_moderate: wam,
enc_heavy : wah,
enc_severe: was,
encumberance_adjustment: ematext,
move_walk: walks,
move_run: runs,
move_charge: charges,
move_fly: flys,
move_crawl: crawls,
move_fall: 58,
move_climb: climbs,
move_swim: swims,
armor_adjustment : abtext,
armor_bulk : armorBulk
}) ;
});
};
function CalculateSpellBookPages() {
getSectionIDs('spellbooks', function (bids) {
getSectionIDs('spells', function (sids){
if (bids.length === 0) { // No books, no need to calc
return;
}
const fieldArray = [];
sids.forEach(id => fieldArray.push(`repeating_spells_${id}_bookid`, `repeating_spells_${id}_numpages`));
bids.forEach(bid => fieldArray.push(`repeating_spellbooks_${bid}_book_id`)) ;
getAttrs(fieldArray, function (v) {
//const setFields = [] ;
bids.forEach(id => {
var bookId = (v[`repeating_spellbooks_${id}_book_id`]);
if (!bookId || 0 === bookId.length) return; // Look for next book
var pageCount = 0;
sids.forEach(spId => {
var sBookId = (v[`repeating_spells_${spId}_bookid`]);
if (!sBookId || 0 === sBookId.length) return; // Look for next spell
if (sBookId != bookId) return;
var sPages = (+v[`repeating_spells_${spId}_numpages`]) ;
pageCount += sPages;
});
setAttrs({
[`repeating_spellbooks_${id}_pagesused`] : pageCount
});
//setFields.concat([`repeating_spellbooks_${id}_book_id`])
});
}); // getAttrs
});
});
};
on("remove:repeating_spells", function(eventinfo) {
CalculateSpellBookPages();
});
on("change:repeating_spells:bookId change:repeating_spells:numPages", function() {
CalculateSpellBookPages();
});
const CoinTable = [
{key:"Copper Pieces", "GPValue": 0.01},
{key:"Silver Pieces", "GPValue": 0.1},
{key:"Electrum Pieces", "GPValue": 0.5},
{key:"Gold Pieces", "GPValue": 1.0},
{key:"Hard Silver Pieces", "GPValue": 2.0},
{key:"Platinum Pieces", "GPValue": 5.0},
];
on('clicked:wealth_defaults', function() {
for (var j = 0; j < CoinTable.length; j++) {
var newrowid = generateRowID();
var newrowattrs = {};
newrowattrs["repeating_wealth_" + newrowid + "_wLocation"] = "Packable";
newrowattrs["repeating_wealth_" + newrowid + "_wItem"] = CoinTable[j].key;
newrowattrs["repeating_wealth_" + newrowid + "_wItemQty"] = "0";
newrowattrs["repeating_wealth_" + newrowid + "_wItemWgt"] = "0.1";
newrowattrs["repeating_wealth_" + newrowid + "_wItemEnc"] = "0";
newrowattrs["repeating_wealth_" + newrowid + "_wValueEach"] = CoinTable[j].GPValue;
newrowattrs["repeating_wealth_" + newrowid + "_wValueTotal"] = "0";
setAttrs(newrowattrs);
}
});
on ("change:repeating_wealth:wItemQty change:repeating_wealth:wItemWgt change:repeating_wealth:wValueEach change:repeating_wealth:wLocation", function() {
getAttrs(["repeating_wealth_wItemQty","repeating_wealth_wItemWgt","repeating_wealth_wValueEach"], function(v){
var q = parseValue(v.repeating_wealth_wItemQty,"float") ;
var w = parseValue(v.repeating_wealth_wItemWgt,"float") ;
var v = parseValue(v.repeating_wealth_wValueEach,"float") ;
setAttrs({
repeating_wealth_wItemEnc: (q * w).toFixed(2),
repeating_wealth_wValueTotal: (q * v).toFixed(2)
});
CalculateWealthTotal();
CalculateEncumberanceTotals();
});
});
on ("change:total_level change:additional_fame change:honor", function(){
getAttrs(["total_level", "additional_fame", "honor"], function(v){
var ffh =Math.round(parseValue(v.total_level) * parseValue(v.honor) / 10.0);
var tf = parseValue(v.additional_fame) + ffh ;
var emp = Math.floor(tf / 60.0) ;
setAttrs({
enemy_morale_penalty: emp,
total_fame: tf,
fame_from_honor: ffh
});
});
});
function CalculateWealthTotal() {
getSectionIDs('wealth', function (ids){
const fieldArray = [];
ids.forEach(id => fieldArray.push(
`repeating_wealth_${id}_wValueTotal`
));
getAttrs(fieldArray, function (v) {
var tot = 0;
ids.forEach(id => {
var v1 = (+v[`repeating_wealth_${id}_wValueTotal`]) ;
tot += v1;
});
setAttrs({
wealth : tot.toFixed(2)
});
});
});
}
function CalculateEncumberanceTotals() {
getSectionIDs('inventory', function (ids) {
getSectionIDs('spellbooks', function (sids){
getSectionIDs('wealth', function (wids) {
if (ids.length === 0) {
return;
}
// need to get an array of all the attributes used in the repeating_items calculations, for getAttrs
const fieldArray = [];
ids.forEach(id => fieldArray.push(
`repeating_inventory_${id}_itemQty`, `repeating_inventory_${id}_itemWgt`,
`repeating_inventory_${id}_itemEnc`, `repeating_inventory_${id}_location`,
`repeating_inventory_${id}_stylePoints`
));
sids.forEach(sid => fieldArray.push(
`repeating_spellbooks_${sid}_bookenc`,
`repeating_spellbooks_${sid}_booklocation`
));
wids.forEach(wid => fieldArray.push(
`repeating_wealth_${wid}_wItemEnc`,
`repeating_wealth_${wid}_wLocation`
));
getAttrs(fieldArray.concat(['clever_packer']), function (v) {
var carried = 0;
var packable = 0;
var mount = 0;
var intown = 0;
var tot = 0;
var styletot = 0;
ids.forEach(id => {
// for each row of the table, calculate the total weight and cost
var weight = (+v[`repeating_inventory_${id}_itemEnc`]) ;
var loc = (v[`repeating_inventory_${id}_location`]);
var style = (+v[`repeating_inventory_${id}_stylePoints`]);
var qty = (+v[`repeating_inventory_${id}_itemQty`]);
switch (loc)
{
case "Carried":
carried += weight;
styletot += style * qty;
break;
case "Packable":
packable += weight;
break;
case "Mount":
mount += weight;
break;
case "Town":
intown += weight;
break;
}
});
sids.forEach(id => {
var w = (+v[`repeating_spellbooks_${id}_bookenc`]) ;
var l = (v[`repeating_spellbooks_${id}_booklocation`]);
switch (l)
{
case "Carried":
carried += w;
break;
case "Packable":
packable += w;
break;
case "Mount":
mount += w;
break;
case "Town":
intown += w;
break;
}
});
wids.forEach(id => {
var w1 = (+v[`repeating_wealth_${id}_wItemEnc`]) ;
var l1 = (v[`repeating_wealth_${id}_wLocation`]);
switch (l1)
{
case "Carried":
carried += w1;
break;
case "Packable":
packable += w1;
break;
case "Mount":
mount += w1;
break;
case "Town":
intown += w1;
break;
}
});
var tot = carried + packable * (v.clever_packer == 'X' ? 0.9 : 1.0) ;
setAttrs({
enc_carried : carried,
enc_packable: packable,
character_encumberance: tot,
enc_mount: mount,
enc_intown: intown,
style_total: styletot
});
CalculateMove() ;
});
});
});
});
};
on("change:repeating_spellbooks:bookweight change:repeating_spellbooks:bookencmod change:repeating_spellbooks:booklocation", function() {
getAttrs(["repeating_spellbooks_bookweight", "repeating_spellbooks_bookencmod"], function(v){
var totWgt = (parseFloat(v.repeating_spellbooks_bookweight) * parseFloat(v.repeating_spellbooks_bookencmod)).toFixed(2) ;
setAttrs({
repeating_spellbooks_bookenc : totWgt
});
CalculateEncumberanceTotals();
}) ;
});
on("remove:repeating_inventory remove:repeating_spellbooks", function(eventinfo) {
CalculateEncumberanceTotals();
});
on ("change:clever_packer", function() {
CalculateEncumberanceTotals();
});
on("change:character_race change:armor_type change:armor_plus change:str_wgt_allow", function() {
CalculateMove();
});
on ("change:repeating_inventory:itemQty change:repeating_inventory:itemWgt change:repeating_inventory:stylePoints change:repeating_inventory:location", function() {
getAttrs(["repeating_inventory_itemQty", "repeating_inventory_itemWgt", "repeating_inventory_location"], function(v){
var totWgt = (parseFloat(v.repeating_inventory_itemQty) * parseFloat(v.repeating_inventory_itemWgt)).toFixed(2) ;
setAttrs({
repeating_inventory_itemEnc : totWgt
});
CalculateEncumberanceTotals();
}) ;
});
on ("change:fatigue_adjust change:constitution change:constitution_pct change:wisdom change:wisdom_pct", function() {
getAttrs(["fatigue_adjust", "constitution", "constitution_pct", "wisdom", "wisdom_pct"], function(v) {
var m = 1.0 + parseValue(v.fatigue_adjust) *1.0 / (( parseValue(v.fatigue_adjust) > 1) ? 100.0 : 1.0);
setAttrs({
fatigue_factor_max : Math.round ( v.constitution / 2.0 * m - 0.5),
fatigue_check : Math.round ( ((parseValue(v.constitution) + parseValue(v.wisdom)) +
(parseValue(v.constitution_pct) + parseValue(v.wisdom_pct))/100.0 ) /2.0 - 0.5)
});
});
});
on ("change:honor change:total_level" , function() {
getAttrs(["honor", "total_level"], function (v) {
var l = parseValue (v.total_level) ;
var h = parseValue (v.honor) ;
var hd = getHonorDie (l, h);
var gh_low = l * 8 + 9;
var gh_high = l * 10 + 10;
var dishonor = l * 3 + 3;
var hl = "Honorable"; // Honor level
var hc = "+3" ;
hb = "+0";
if (h < dishonor) {hl = "Dishonor";hc="-5";hb="-1";}
if (h > gh_high) {hl = "Too Much" ;hc="+5";}
if (h >= gh_low && h <= gh_high) {hl = "Great" ;hc="+5";hb="+1";}
setAttrs ({
honor_level : hl,
honor_die: hd,
honor_checkmod: hc,
honor_penalty: "<" +dishonor,
honor_honorwindow: "" + gh_low + "-" + gh_high,
honor_bonus : hb
}) ;
}) ;
});
on ("change:comliness", function() {
getAttrs(["comliness", "comliness_pct"], function (v) {
var c = parseValue(v.comliness) ;
var effect = "?" ;
if (c <= -16)
{
effect = "Those viewing a character with Comeliness this low are repulsed and horrified, so as" +
" to turn away or attempt to destroy the creature that is so offensive to the sight. If the "+
"individual with low Comeliness is powerful, his appearance will make others tend to want to escape, " +
"or they will experience a reinforcement of a previously determined awe (horror) reaction. " +
"If both viewer and creature are of evil alignment, the effect is that of a positive Comeliness of the same total." ;
}
if (c > -16 && c <= -9)
{
effect = "Those viewing creatures with Comeliness in this range display disgust, evidenced by a tendency to look away. " +
"They will revile the individual, and act hostile in general. Under no circumstances will the viewers accept this " +
"character unless all are of evil alignment, so htat the negative Comeliness can be regarded as positive.";
}
if (c > -9 && c <= 0)
{
effect = "All viewers will evidence an aversion and a desire to be away from so ugly a creature. If given an excuse, those " +
"near the individual will be hostile and openly aggressive; otherwise they will merely tend toward rejection." ;
}
if (c > 0 && c <= 6)
{
effect = "Such an individual is simply ugly. The reaction evidenced will tend toward unease and a desire to get away "+
"from such brutishness as quickly as possible. If given the opportunity, the character's Charisma can offset ugliness, " +
"but this requires a fair amount of conversation and interaction to take place." ;
}
if (c > 6 && c <= 9)
{
effect = "The homeliness of the individual will be such that initial contact will be of a negative sort. This negative " +
"feeling will not be strongly evidenced. High Charisma will quickly overcome it if any conversation and interpersonal " +
"interaction transpires.";
}
if (c > 9 && c <= 13)
{
effect = "Plain to average Comeliness; no effect on the viewer." ;
}
if (c > 13 && c <= 17)
{
effect = "Interest in viewing the individual is evidenced by those in contact, as he is good-looking. The reaction adjustment " +
"is increased by a percentage equal to the Comeliness score of the character. Individuals of the opposite sex will seek " +
"out such characters, and they will be affected as if under a Fascinate spell unless the Wisdom of such individuals exceeds " +
"50% of the characters's Comeliness total.";
}
if (c > 17 && c <= 21)
{
effect = "The beauty of the character will cause heads to turn and hearts to race. Reaction for initial contact is at a percent " +
"equal to 150% of the Comeliness score. Individuals of the opposite sex will be affected as if under a Fascinate spell unless " +
"their Wisdom exceeds two-thirds of the character's Comeliness total. Individuals of the same sex will do likewise unless " +
"Wisdom totals at least 50% of the other character's Comeliness score. Reaction of harsh nature can cause the individual rejected " +
"to have a reaction as if the character had a negative Comeliness of half the actual (positive) score." ;
}
if (c > 21 && c <= 25)
{
effect = "The stunning beauty and gorgeous looks of a character with so high a Comeliness will be similar to that of those of lesser " +
"beauty (18-21). However, individuals will actually flock around the character, follow him and generally behave foolishly or in " +
"some manner so as to attract the attention of the character. The reaction adjustment is double the score of Comeliness. Fascinate-" +
"like power will affect all those with Wisdom of less than two-thirds the Comeliness score of the character. If an individual of " +
"the opposite sex is actually consciously sought by a character with Comeliness of 22-25 that individual will be effectively Fascinated "+
"unless his Wisdom is 18 or higher. Rejection is as 18-21 Comeliness.";
}
if (c > 25 && c <= 30)
{
effect = "Only creatures from other planes - demi-gawds, demi-gawddesses and other-worldly beings of unusual sort, can possess unearthly " +
"beauty of this sort. Reaction adjustment is double the Comeliness score. Fascinated-like power affects all except those with " +
"Wisdom equal to at least 75% of Comeliness, except that 19 or higher Wisdom always allows a saving throw versus the power. An " +
"individual of the opposite sex who is consciously sought by the possessor of such unearthly beauty and Comeliness will always be " +
"under the 'spell' of the individual with such beauty unless he has Wisdom of 20 or more." ;
}
if (c > 30) {
effect = "Invalid Comeliness. max is 30." ;
}
setAttrs ({
com_effect : effect
}) ;
}) ; // getAttrs
}) ; // on change of comliness
on ("change:charisma change:charisma_pct", function() {
getAttrs(["charisma", "charisma_pct"], function (v) {
var mh=0;lb=0;ra=0;cm=0;sh=0;
var over50 = (parseValue(v.charisma_pct) > 50) ;
switch (parseValue(v.charisma)) {
case 1:
mh=0;lb=-8;ra=-7;cm=-8;sh=-9;
break;
case 2:
mh=1;lb=-7;ra=-6;cm=-8;sh=-8;
break;
case 3:
mh=1;lb=-6;ra=-5;cm=-5;sh=-7;
break;
case 4:
mh=1;lb=-5;ra=-4;cm=-3;sh=-6;
break;
case 5:
mh=2;lb=-4;ra=-3;cm=-3;sh=-5;
break;
case 6:
mh=2;lb=-3;ra=-2;cm=-1;sh=-4;
break;
case 7:
mh=3;lb=-2;ra=-1;cm=-1;sh=-3;
break;
case 8:
mh=3;lb=-1;ra=0;cm=-1;sh=-2;
break;
case 9:
mh=4;lb=0;ra=0;cm=0;sh=-1;
break;
case 10:
case 11:
mh=4;lb=0;ra=0;cm=0;sh=0;
break;
case 12:
mh=5;lb=0;ra=0;cm=0;sh=1;
break;
case 13:
mh=5;lb=0;ra=1;cm=1;sh=2;
break;
case 14:
mh=6;lb=1;ra=2;cm=1;sh=3;
break;
case 15:
mh=7;lb=3;ra=3;cm=1;sh=4;
break;
case 16:
mh=8;lb=4;ra=5;cm=2;sh=5;
break;
case 17:
mh=10;lb=6;ra=6;cm=2;sh=6;
break;
case 18:
mh=15;lb=8;ra=7;cm=3;sh=7;
break;
case 19:
mh=18;lb=10;ra=8;cm=4;sh=8;
break;
case 20:
mh=20;lb=12;ra=9;cm=4;sh=9;
break;
case 21:
mh=25;lb=14;ra=10;cm=5;sh=10;
break;
case 22:
mh=30;lb=16;ra=11;cm=5;sh=11;
break;
case 23:
mh=35;lb=18;ra=12;cm=6;sh=12;
break;
case 24:
mh=40;lb=20;ra=13;cm=7;sh=13;
break;
case 24:
mh=45;lb=20;ra=14;cm=8;sh=14;
break;
};
setAttrs ({
chr_max_henchmen : mh,
chr_loyalty_base : lb,
chr_reaction_adjust : ra,
chr_comeliness_mod : cm,
chr_start_honormod : sh
}) ;
}) ; // getAttrs
}) ; // on
on ("change:constitution change:constitution_pct", function() {
getAttrs(["constitution", "constitution_pct"], function (v) {
var hpa=0;ss=0;rs=0;ps=0;id=0;rh="";
var over50 = (parseValue(v.constitution_pct) > 50) ;
switch (parseValue(v.constitution)) {
case 1:
hpa=-5;ss=25;rs=30;ps=-2;id=30;rh="Nil//1 hp/2 wks";
break;
case 2:
hpa=-4;ss=30;rs=35;ps=-1;id=25;rh="Nil//1 hp/1 wks";
break;
case 3:
hpa=-4;ss=35;rs=40;ps=0;id=20;rh="Nil//1 hp/2 days";
break;
case 4:
hpa=-3;ss=40;rs=45;ps=0;id=15;rh="Nil//1 hp/2 days";
break;
case 5:
hpa=-3;ss=45;rs=50;ps=0;id=10;rh="Nil//1 hp/2 days";
break;
case 6:
hpa=-2;ss=50;rs=55;ps=0;id=5;rh="Nil//1 hp/2 days";
break;
case 7:
hpa=-2;ss=55;rs=60;ps=0;id=0;rh="Nil//1 hp/day";
break;
case 8:
hpa=-1;ss=60;rs=65;ps=0;id=-5;rh="Nil//1 hp/day";
break;
case 9:
hpa=-1;ss=65;rs=70;ps=0;id=-10;rh="Nil//1 hp/day";
break;
case 10:
hpa=0;ss=70;rs=75;ps=0;id=-20;rh="Nil//1 hp/day";
break;
case 11:
hpa=0;ss=75;rs=80;ps=0;id=-25;rh="Nil//1 hp/day";
break;
case 12:
hpa=1;ss=80;rs=85;ps=0;id=-30;rh="Nil//1 hp/day";
break;
case 13:
hpa=1;ss=85;rs=90;ps=0;id=-35;rh="Nil//1 hp/day";
break;
case 14:
hpa=2;ss=88;rs=92;ps=0;id=-40;rh="Nil//1 hp/day";
break;
case 15:
hpa=2;ss=90;rs=94;ps=0;id=-45;rh="Nil//1 hp/day";
break;
case 16:
hpa=3;ss=95;rs=96;ps=0;id=-50;rh="Nil//1 hp/day";
break;
case 17:
hpa=3;ss=97;rs=98;ps=0;id=-55;rh="Nil//1 hp/day";
break;
case 18:
hpa=4;ss=99;rs=100;ps=0;id=-60;rh="Nil//1 hp/18 hrs";
break;
case 19:
hpa=4;ss=99;rs=100;ps=1;id=-65;rh="1 hp/12 hrs";
break;
case 20:
hpa=5;ss=99;rs=100;ps=1;id=-70;rh="1 hp/6 turns";
break;
case 21:
hpa=5;ss=99;rs=100;ps=2;id=-75;rh="1 hp/5 turns";
break;
case 22:
hpa=6;ss=99;rs=100;ps=2;id=-85;rh="1 hp/4 turns";
break;
case 23:
hpa=6;ss=99;rs=100;ps=3;id=-90;rh="1 hp/3 turns";
break;
case 24:
hpa=7;ss=99;rs=100;ps=3;id=-95;rh="1 hp/2 turns";
break;
case 25:
hpa=7;ss=100;rs=100;ps=4;id=-99;rh="1 hp/1 turn";
break;
};
setAttrs ({
con_hitpoint_adjust : hpa,
con_system_shock : ss,
con_resurrect_survival : rs,
con_poison_save : ps,
con_immunity_disease : id,
con_regen_healing : rh
}) ;
}) ; // getAttrs
}) ; // on
on ("change:dexterity change:dexterity_pct", function() {
getAttrs(["dexterity", "dexterity_pct"], function (v) {
var ra = 0; da = 0; ma = 0;
var pp = 0; ol = 0; rt = 0; ms = 0; hs = 0;
var over50 = (parseValue(v.dexterity_pct) > 50) ;
switch (parseValue(v.dexterity)) {
case 1:
da=5;ra=-5;ma=-6;
if (over50) {ma=-5;};
break;
case 2:
da= 4;ra=-5 ;ma=-5 ;
if (over50) {ra=-4;};
break;
case 3:
da=4 ;ra=-4 ;ma=-4 ;
if (over50) {da=3;};
break;
case 4:
da=3 ;ra=-3 ;ma=-4 ;
if (over50) {ma=-3;};
break;
case 5:
da=2 ;ra=-3 ;ma=-3 ;
if (over50) {ra=-2;};
break;
case 6:
da=2 ;ra=-2 ;ma=-2 ;
if (over50) {da=1;};
break;
case 7:
da=1 ;ra=-1 ;ma=-2 ;
pp = -25; ol = -20; rt = -20; ms = -30; hs = -20;
if (over50) {ma=-1;};
break;
case 8:
da=0 ;ra=-1 ;ma=-1 ;
pp = -20; ol = -15; rt = -15; ms = -25; hs = -15;
if (over50) {ra=0;};
break;
case 9:
pp = -15; ol = -10; rt = -10; ms = -20; hs = -10;
break;
case 10:
pp = -10; ol = -5; rt = -10; ms = -15; hs = -5;
break;
case 11:
pp = -5; rt=-5;ms=-10;
break;
case 12:
ms = -5;
break;
case 13:
da=0 ;ra=1 ;ma=1 ;
if (over50) {da=-1;};
break;
case 14:
da=-1 ;ra=1 ;ma=2 ;
if (over50) {ra=2;};
break;
case 15:
da=-2 ;ra=2 ;ma=2 ;
if (over50) {ma=3;};
break;
case 16:
da=-2 ;ra=3 ;ma=3 ;
ol= 5;
if (over50) {da=-3;};
break;
case 17:
da=-3 ;ra=3 ;ma=4 ;
pp = 5; ol = 10; rt = 0; ms = 5; hs = 5;
if (over50) {ra=4;};
break;
case 18:
da=-4 ;ra=4 ;ma=4 ;
pp = 10; ol = 15; rt = 5; ms = 10; hs = 10;
if (over50) {ma=5;};
break;
case 19:
da=-4 ;ra=5 ;ma=5 ;
pp = 15; ol = 20; rt = 10; ms = 15; hs = 15;
if (over50) {da=-5;};
break;
case 20:
da=-5 ;ra=5 ;ma=6 ;
pp = 20; ol = 25; rt = 15; ms = 20; hs = 20;
if (over50) {ra=6;};
break;
case 21:
da=-6 ;ra=6 ;ma=6 ;
pp = 25; ol = 30; rt = 20; ms = 25; hs = 25;
if (over50) {ma=7;};
break;
case 22:
da=-6 ;ra=7 ;ma=7 ;
pp = 30; ol = 35; rt = 25; ms = 25; hs = 30;
if (over50) {da=-7;};
break;
case 23:
da=-7 ;ra=7 ;ma=8 ;
pp = 35; ol = 40; rt = 30; ms = 30; hs = 35;
if (over50) {ra=8;};
break;
case 24:
da=-8 ;ra=8 ;ma=8 ;
pp = 40; ol = 45; rt = 35; ms = 35; hs = 40;
if (over50) {ma=9;};
break;
case 25:
da=-8 ;ra=9 ;ma=9 ;
pp = 45; ol = 50; rt = 40; ms = 40; hs = 45;
break;
};
setAttrs ({
dex_defense_adjust : da,
dex_reaction_adjust : ra,
dex_missile_adjust : ma,
ppdexadjust : pp,
oldexadjust : ol,
rtdexadjust : rt,
ftdexadjust : rt,
msdexadjust : ms,
hsdexadjust : hs
}) ;
CalculateAC();
CalcThiefSkills();
}) ; // getAttrs
}) ; // on
on ("change:wisdom change:wisdom_pct", function() {
getAttrs(["wisdom", "wisdom_pct"], function (v) {
var magdef = 0;
var bonusspells = 0;
var spellfail = 0;
var improveskill = 0;
var spellimmunity = 0;
var over50 = (parseValue(v.wisdom_pct) > 50) ;
switch (parseValue(v.wisdom)) {
case 1:
magdef = -6;bonusspells="--";spellfail=80;spellimmunity="--"; improveskill="--" ;
break;
case 2:
magdef = -4;bonusspells="--";spellfail=60;spellimmunity="--"; improveskill="--" ;
break;
case 3:
magdef = -3;bonusspells="--";spellfail=50;spellimmunity="--"; improveskill="1" ;
break;
case 4:
magdef = -2;bonusspells="--";spellfail=45;spellimmunity="--"; improveskill="2" ;
break;
case 5:
magdef = -1;bonusspells="--";spellfail=40;spellimmunity="--"; improveskill="3" ;
break;
case 6:
magdef = -1;bonusspells="--";spellfail=35;spellimmunity="--"; improveskill="3" ;
break;
case 7:
magdef = -1;bonusspells="--";spellfail=30;spellimmunity="--"; improveskill="4" ;
break;
case 8:
magdef = 0;bonusspells="--";spellfail=25;spellimmunity="--"; improveskill="4" ;
break;
case 9:
magdef = 0;bonusspells="0";spellfail=20;spellimmunity="--"; improveskill="5" ;
break;
case 10:
magdef = 0;bonusspells="0";spellfail=15;spellimmunity="--"; improveskill="5" ;
break;
case 11:
magdef = 0;bonusspells="0";spellfail=10;spellimmunity="--"; improveskill="5" ;
break;
case 12:
magdef = 0;bonusspells="0";spellfail=5;spellimmunity="--"; improveskill="5" ;
break;
case 13:
magdef = 0;bonusspells="1st";spellfail=0;spellimmunity="--"; improveskill="5" ;
break;
case 14:
magdef = 0;bonusspells="1st";spellfail=0;spellimmunity="--"; improveskill="6" ;
break;
case 15:
magdef = 1;bonusspells="2nd";spellfail=0;spellimmunity="--"; improveskill="7" ;
break;
case 16:
magdef = 2;bonusspells="2nd";spellfail=0;spellimmunity="--"; improveskill="8" ;
break;
case 17:
magdef = 3;bonusspells="3rd";spellfail=0;spellimmunity="--"; improveskill="9" ;
break;
case 18:
magdef = 4;bonusspells="4th";spellfail=0;spellimmunity="--"; improveskill="10" ;
if (over50) {bonusspells="5th";spellimmunity="Befriend";improveskill="11";}
break;
case 19:
magdef = 4;bonusspells="1st,3rd";spellfail=0;spellimmunity="Cause Fear, Charm Person, Command, Hypnotism"; improveskill="12" ;
break;
case 20:
magdef = 4;bonusspells="2nd,4th";spellfail=0;spellimmunity="Forget, Hold Personn, Ray of Enfeeblement, Scare"; improveskill="13" ;
break;
case 21:
magdef = 4;bonusspells="3rd,5th";spellfail=0;spellimmunity="Fear"; improveskill="14" ;
break;
case 22:
magdef = 4;bonusspells="4th,5th";spellfail=0;spellimmunity="Charm Monster, Confusion, Emotion, Fumble, Suggestion"; improveskill="15" ;
break;
case 23:
magdef = 4;bonusspells="1st,6th";spellfail=0;spellimmunity="Chaos, Feeblemind, Hold Monster, Magic Jar, Quest"; improveskill="16" ;
break;
case 24:
magdef = 4;bonusspells="5th,6th";spellfail=0;spellimmunity="Geas, Mass Suggestion, Rod of Rulership"; improveskill="18" ;
break;
case 25:
magdef = 4;bonusspells="6th,7th";spellfail=0;spellimmunity="Antipathy/Sympath, Death Spell, Mass Charm "; improveskill="20" ;
break;
};
setAttrs ({
wis_magdef_adjust : magdef,
wis_bonus_spells : bonusspells,
wis_chance_spellfail : spellfail,
wis_improve_skill : improveskill,
wis_spell_immunity : spellimmunity
}) ;
CalcClericSpells();
}) ; // getAttrs
}) ; // on
on ("change:intelligence change:intelligence_pct", function() {
getAttrs(["intelligence", "intelligence_pct"], function (v) {
var nolang = 0;
var spelllvl = 0;
var learnability = 0;
var maxspells = 0;
var illusionimmunity = 0;
var spellmishap = 0;
var over50 = (parseValue(v.intelligence_pct) > 50) ;
switch (parseValue(v.intelligence)) {
case 1:
nolang =0;spelllvl="--";learnability=1;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 2:
nolang =1;spelllvl="--";learnability=5;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 3:
nolang =1;spelllvl="--";learnability=10;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 4:
nolang =1;spelllvl="--";learnability=15;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 5:
nolang =1;spelllvl="--";learnability=20;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 6:
nolang =1;spelllvl="--";learnability=25;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 7:
nolang =1;spelllvl="--";learnability=30;maxspells="--";illusionimmunity="--";spellmishap="--" ;
break;
case 8:
nolang =1;spelllvl="Cantrips";learnability=30;maxspells=5;illusionimmunity="--";spellmishap="35" ;
break;
case 9:
nolang =2;spelllvl="4th";learnability=35;maxspells=6;illusionimmunity="--";spellmishap="20" ;
break;
case 10:
nolang =2;spelllvl="5th";learnability=40;maxspells=7;illusionimmunity="--";spellmishap="15" ;
break;
case 11:
nolang =2;spelllvl="5th";learnability=45;maxspells=7;illusionimmunity="--";spellmishap="10" ;
break;
case 12:
nolang =3;spelllvl="6th";learnability=50;maxspells=7;illusionimmunity="--";spellmishap="5" ;
break;
case 13:
nolang =3;spelllvl="6th";learnability=55;maxspells=9;illusionimmunity="--";spellmishap="0" ;
break;
case 14:
nolang =4;spelllvl="7th";learnability=60;maxspells=9;illusionimmunity="--";spellmishap="0" ;
break;
case 15:
nolang =4;spelllvl="7th";learnability=65;maxspells=11;illusionimmunity="--";spellmishap="0" ;
break;
case 16:
nolang =5;spelllvl="8th";learnability=70;maxspells=11;illusionimmunity="--";spellmishap="0" ;
break;
case 17:
nolang =6;spelllvl="8th";learnability=75;maxspells=14;illusionimmunity="--";spellmishap="0" ;
break;
case 18:
nolang =7;spelllvl="9th";learnability=85;maxspells=18;illusionimmunity="Cantrips";spellmishap="0" ;
if (over50) {learnability=90;maxspells=20;}
break;
case 19:
nolang =8;spelllvl="9th";learnability=95;maxspells="All";illusionimmunity="1st-level";spellmishap="0" ;
break;
case 20:
nolang =9;spelllvl="9th";learnability=96;maxspells="All";illusionimmunity="2nd-level";spellmishap="0" ;
break;
case 21:
nolang =10;spelllvl="9th";learnability=97;maxspells="All";illusionimmunity="3rd-level";spellmishap="0" ;
break;
case 22:
nolang =11;spelllvl="9th";learnability=98;maxspells="All";illusionimmunity="4th-level";spellmishap="0" ;
break;
case 23:
nolang =12;spelllvl="9th";learnability=99;maxspells="All";illusionimmunity="5th-level";spellmishap="0" ;
break;
case 24:
nolang =15;spelllvl="9th";learnability=100;maxspells="All";illusionimmunity="6th-level";spellmishap="0" ;
break;
case 25:
nolang =20;spelllvl="9th";learnability=100;maxspells="All";illusionimmunity="7th-level";spellmishap="0" ;
break;
};
setAttrs ({
int_no_lang : nolang,
int_spell_lvl : spelllvl,
int_learn_ability : learnability,
int_max_spells : maxspells,
int_illusion_immunity : illusionimmunity,
int_spell_mishap : spellmishap
}) ;
CalcSpellFailure() ;
}) ; // getAttrs
}) ; // on
on ("change:strength change:strength_pct", function() {
getAttrs(["strength", "strength_pct"], function (v) {
var hitprob = 0;
var damadj = 0;
var opendoor = 0;
var bendbars = 0;
var wgtallow = 0;
var wgtpress = 0;
var over50 = (parseValue(v.strength_pct) > 50) ;
switch (parseValue(v.strength)) {
case 1:
hitprob=-3;damadj=-8;opendoor=1;bendbars=0;wgtallow=1;wgtpress=3;
if (over50) {wgtAllow=2;wgtpress=4;}
break;
case 2:
hitprob=-3;damadj=-7;wgtallow=3;wgtpress=5;opendoor=1;bendbars=0;
if (over50) {wgtAllow=4;wgtpress=7;}
break;
case 3:
hitprob=-3;damadj=-6;wgtallow=5;wgtpress=10;opendoor=2;bendbars=0;
if (over50) {wgtAllow=7;wgtpress=20;}
break;
case 4:
hitprob=-2;damadj=-5;wgtallow=9;wgtpress=25;opendoor=3;bendbars=0;
if (over50) {wgtAllow=11;wgtpress=30;}
break;
case 5:
hitprob=-2;damadj=-4;wgtallow=13;wgtpress=35;opendoor=3;bendbars=0;
if (over50) {wgtAllow=15;wgtpress=40;opendoor=4;}
break;
case 6:
hitprob=-2;damadj=-3;wgtallow=18;wgtpress=55;opendoor=4;bendbars=0;
if (over50) {wgtAllow=21;wgtpress=60;}
break;
case 7:
hitprob=-1;damadj=-2;wgtallow=24;wgtpress=70;opendoor=4;bendbars=0;
if (over50) {wgtAllow=27;wgtpress=80;opendoor=5;}
break;
case 8:
hitprob=-1;damadj=-1;wgtallow=30;wgtpress=90;opendoor=5;bendbars=1;
if (over50) {wgtAllow=33;wgtpress=95;opendoor=5;}
break;
case 9:
hitprob=0;damadj=-1;wgtallow=36;wgtpress=100;opendoor=5;bendbars=1;
if (over50) {wgtAllow=39;wgtpress=110;opendoor=6;}
break;
case 10:
hitprob=0;damadj=0;wgtallow=43;wgtpress=115;opendoor=6;bendbars=2;
if (over50) {wgtAllow=47;wgtpress=125;bendbars=3;}
break;
case 11:
hitprob=0;damadj=0;wgtallow=51;wgtpress=130;opendoor=6;bendbars=4;
if (over50) {wgtAllow=55;wgtpress=135;opendoor=7;}
break;
case 12:
hitprob=0;damadj=1;wgtallow=59;wgtpress=140;opendoor=7;bendbars=5;
if (over50) {wgtAllow=63;wgtpress=145;}
break;
case 13:
hitprob=1;damadj=1;wgtallow=67;wgtpress=150;opendoor=7;bendbars=6;
if (over50) {wgtAllow=71;wgtpress=160;opendoor=8;}
break;
case 14:
hitprob=1;damadj=2;wgtallow=76;wgtpress=170;opendoor=8;bendbars=7;
if (over50) {wgtAllow=81;wgtpress=175;bendbars=8;}
break;
case 15:
hitprob=1;damadj=3;wgtallow=86;wgtpress=185;opendoor=9;bendbars=9;
if (over50) {wgtAllow=91;wgtpress=190;bendbars=10;}
break;
case 16:
hitprob=2;damadj=4;wgtallow=97;wgtpress=195;opendoor=10;bendbars=11;
if (over50) {wgtAllow=103;wgtpress=220;bendbars=12;}
break;
case 17:
hitprob=2;damadj=5;wgtallow=109;wgtpress=255;opendoor=11;bendbars=15;
if (over50) {wgtAllow=115;wgtpress=290;bendbars=20;}
break;
case 18:
hitprob=3;damadj=6;wgtallow=130;wgtpress=350;opendoor="12(3)";bendbars=25;
if (over50) {wgtAllow=160;wgtpress=480;opendoor="14(6)";bendbars=35;}
break;
case 19:
hitprob=3;damadj=7;wgtallow=200;wgtpress=640;opendoor="15(8)";bendbars=50;
if (over50) {wgtAllow=300;wgtpress=660;opendoor="16(9)";bendbars=55;}
break;
case 20:
hitprob=3;damadj=8;wgtallow=400;wgtpress=700;opendoor="17(10)";bendbars=60;
if (over50) {wgtAllow=500;wgtpress=725;opendoor="17(11)";bendbars=65;}
break;
case 21:
hitprob=4;damadj=9;wgtallow=600;wgtpress=810;opendoor="17(12)";bendbars=70;
if (over50) {wgtAllow=700;wgtpress=865;opendoor="18(13)";bendbars=75;}
break;
case 22:
hitprob=4;damadj=10;wgtallow=800;wgtpress=970;opendoor="18(14)";bendbars=80;
if (over50) {wgtAllow=900;wgtpress=1050;opendoor="18(15)";bendbars=85;}
break;
case 23:
hitprob=5;damadj=11;wgtallow=1000;wgtpress=1130;opendoor="18(16)";bendbars=90;
if (over50) {wgtAllow=1100;wgtpress=1320;opendoor="19(16)";bendbars=95;}
break;
case 24:
hitprob=6;damadj=12;wgtallow=1200;wgtpress=1440;opendoor="19(16)";bendbars=97;
if (over50) {wgtAllow=1300;wgtpress=1540;opendoor="19(17)";bendbars=98;}
break;
case 25:
hitprob=7;damadj=14;wgtallow=1500;wgtpress=1750;opendoor="19(18)";bendbars=99;
break;
};
if (hitprob > -1) hitprob = "+" + hitprob;
if (damadj > -1) damadj = "+" + damadj;
setAttrs ({
str_hit_prob : hitprob,
str_dam_adj : damadj,
str_open_door : opendoor,
str_bend_bars : bendbars,
str_wgt_allow : wgtallow,
str_max_press : wgtpress
}) ;
}) ; // getAttrs
}) ; // on
</script>