Files
roll20-character-sheets/Sword World/sheet.html
T

3591 lines
184 KiB
HTML

<input class="toggle-token" type="hidden" name="attr_display_token" value="0" />
<input class="toggle-monster" type="hidden" name="attr_monster" value="0" />
<input class="toggle-workskills" type="hidden" name="attr_workskills" value="0" />
<input class="toggle-sw20" type="hidden" name="attr_sw20" value="0" />
<input class="toggle-aog" type="hidden" name="attr_aog" value="0" />
<input class="toggle-expanded" type="hidden" name="attr_fellow_expanded" value="0" />
<input class="toggle-fautocalc" type="hidden" name="attr_fellow_autocalc" value="0" />
<input class="toggle-tabs" type="hidden" name="attr_tab" value="page1" />
<input class="adventurer-level" type="hidden" name="attr_adventurer_level" />
<input type="hidden" name="attr_storage_initiative" />
<input type="hidden" name="attr_storage_fortitude" />
<input type="hidden" name="attr_storage_willpower" />
<input type="hidden" name="attr_storage_monster_initiative" />
<input type="hidden" name="attr_storage_monster_fortitude" />
<input type="hidden" name="attr_storage_monster_willpower" />
<button type="roll" class="tokenaction hidden" name="roll_roll" value="@{roll_action}" />
<button class="hidden" type="action" name="act_roll-action" />
<input type="hidden" name="attr_roll_action" value="">
<div class="tabs">
<div class="tab-page1"><button type="action"
name="act_page1">Page 1</button></div>
<div class="tab-page2"><button type="action"
name="act_page2">Page 2</button></div>
<div class="tab-monster"><button type="action"
name="act_monster">Monster</button></div>
<div class="tab-fellow"><button type="action"
name="act_fellow">Fellow</button></div>
<div class="tab-settings"><button type="action"
name="act_settings">Settings</button></div>
<div class="roller">
<button type="roll" name="roll_class" value="@{class_action}" />
<button class="hidden" type="action" name="act_class-action" />
<input type="hidden" name="attr_class_action" value="">
</div>
</div>
<!-- reputation -->
<div class="grid col2-main page1">
<div class="grid">
<div class="grid guild nogap">
<img name="attr_character_avatar" />
<div class="grid col2-guild">
<div class="grid">
<div class="grid vcol">
<label>Reputation</label>
<input type="text" spellcheck="false" name="attr_reputation" value="0" />
</div>
<div class="grid vcol">
<label>Rank</label>
<input type="text" spellcheck="false" name="attr_rank" value="None" />
</div>
</div>
<div class="grid alevel">
<label>Adventurer Level</label>
<span class="input" name="attr_adventurer_level" />
</div>
</div>
</div>
<div class="grid profile">
<span class="label">History, Profile</span>
<label>Background</label>
<div class="auto-expand">
<span name="attr_background"></span>
<textarea spellcheck="false" name="attr_background"></textarea>
</div>
<div class="grid col4-xp">
<label>Experience Points</label>
<input type="number" name="attr_experience" />
<label>Soulscars</label>
<input type="number" name="attr_soulscars" value="0" />
</div>
<div class="grid col2-failures">
<label>Automatic Failures:</label>
<div class="grid nogap">
<input type="radio" name="attr_automatic_failures" value="0" checked="checked" />
<input type="radio" name="attr_automatic_failures" value="1" />
<input type="radio" name="attr_automatic_failures" value="2" />
<input type="radio" name="attr_automatic_failures" value="3" />
<input type="radio" name="attr_automatic_failures" value="4" />
<input type="radio" name="attr_automatic_failures" value="5" />
<input type="radio" name="attr_automatic_failures" value="6" />
<input type="radio" name="attr_automatic_failures" value="7" />
<input type="radio" name="attr_automatic_failures" value="8" />
<input type="radio" name="attr_automatic_failures" value="9" />
<input type="radio" name="attr_automatic_failures" value="10" />
<input type="radio" name="attr_automatic_failures" value="11" />
<input type="radio" name="attr_automatic_failures" value="12" />
<input type="radio" name="attr_automatic_failures" value="13" />
<input type="radio" name="attr_automatic_failures" value="14" />
<input type="radio" name="attr_automatic_failures" value="15" />
</div>
</div>
</div>
<div class="grid nogap lined">
<div class="grid col3-languages nogap">
<div class="header">Languages</div>
<div class="header">Speak</div>
<div class="header">Read</div>
<div class="label">Trade Common</div>
<div><input type="checkbox" name="attr_language_common_speak" value="yes" checked /></div>
<div><input type="checkbox" name="attr_language_common_read" value="yes" checked /></div>
<input type="text" spellcheck="false" name="attr_language_regional" placeholder="Regional( )" />
<div><input type="checkbox" name="attr_language_regional_speak" value="yes" /></div>
<div><input type="checkbox" name="attr_language_regional_read" value="yes" /></div>
<div class="label">Ancient Celestial</div>
<div><span class="check-na input" /></div>
<div><input type="checkbox" name="attr_language_celestial_read" value="yes" /></div>
<div class="label">Arcana</div>
<div><input type="checkbox" name="attr_language_arcana_speak" value="yes" /></div>
<div><input type="checkbox" name="attr_language_arcana_read" value="yes" /></div>
<div class="label">Magitech</div>
<div><input type="checkbox" name="attr_language_magitech_speak" value="yes" /></div>
<div><input type="checkbox" name="attr_language_magitech_read" value="yes" /></div>
<div class="label">Sylvan</div>
<div><input type="checkbox" name="attr_language_sylvan_speak" value="yes" /></div>
<div><span class="check-na input" /></div>
<div class="label">Daemonic</div>
<div><input type="checkbox" name="attr_language_daemonic_speak" value="yes" /></div>
<div><span class="check-na input" /></div>
<div class="label">Barbaric</div>
<div><input type="checkbox" name="attr_language_barbaric_speak" value="yes" /></div>
<div><input type="checkbox" name="attr_language_barbaric_read" value="yes" /></div>
</div>
<fieldset class="repeating_languages">
<div><input type="text" spellcheck="false" name="attr_language_name" placeholder="Language" /></div>
<div><input type="checkbox" name="attr_language_speak" value="yes" /></div>
<div><input type="checkbox" name="attr_language_read" value="yes" /></div>
</fieldset>
</div>
<div class="grid nogap lined workskills">
<div class="grid col3-workskills nogap">
<div class="header">Profession</div>
<div class="header">Work Skill</div>
<div class="header">Level</div>
</div>
<fieldset class="repeating_workskills">
<div><input type="text" spellcheck="false" name="attr_workskill_profession" placeholder="Profession" /></div>
<div><input type="text" spellcheck="false" name="attr_workskill_name" placeholder="Work Skill" /></div>
<div class="grid col2 nogap">
<input type="number" name="attr_workskill_level" placeholder="1" />
<button type="action" name="act_workskill-action" value="" />
</div>
</fieldset>
</div>
</div>
<div class="grid">
<div class="grid col2-header">
<div class="grid">
<div class="grid col2 vcol">
<label>Character Name</label>
<input type="text" spellcheck="false" name="attr_character_name" />
<label>Player Name</label>
<input type="text" spellcheck="false" name="attr_player_name" />
</div>
<div class="grid col3-race vcol">
<label>Race</label>
<input type="text" spellcheck="false" list="race" name="attr_race" />
<datalist id="race">
<option>Human</option>
<option>Elf</option>
<option>Dwarf</option>
<option>Tabbit</option>
<option>Runefolk</option>
<option>Nightmare (Human)</option>
<option>Nightmare (Elf)</option>
<option>Nightmare (Dwarf)</option>
<option>Nightmare (Lildraken)</option>
<option>Nightmare (Shadow)</option>
<option>Nightmare (Soleil)</option>
<option>Lykant</option>
<option>Lildraken</option>
<option>Grassrunner</option>
<option>Meria</option>
<option>Tiens</option>
<option>Leprechaun</option>
<option>Alv</option>
<option>Garuda Weakling</option>
<option>Tannoz Weakling</option>
<option>Basilisk Weakling</option>
<option>Minotaur Weakling</option>
<option>Shadow</option>
<option>Soleil</option>
<option>Abyssborn</option>
<option>Dark Dwarf</option>
<option>Fluorite</option>
<option>Newman</option>
<option>Spriggan</option>
<option>Fey</option>
<option>Miakis</option>
<option>Valkyrie</option>
</datalist>
<label>Age</label>
<input type="text" spellcheck="false" name="attr_age" />
<label>Gender</label>
<input type="text" spellcheck="false" name="attr_gender" />
</div>
<label>Racial Abilities</label>
<div class="auto-expand">
<span name="attr_racial_abilities"></span>
<textarea spellcheck="false" name="attr_racial_abilities"></textarea>
</div>
</div>
<h1>Sword World 2.5</h1>
</div>
<div class="grid nogap">
<div class="grid col5-abilities">
<span class="header">Base</span>
<span class="header">Correction</span>
<span class="header">Growth</span>
<span class="header">Ability Scores</span>
<span class="header">Modifiers</span>
</div>
<div class="grid col5-abilities shaded">
<div class="grid vspan2">
<label>Skill</label>
<input class="lrg" type="number" name="attr_skill" />
</div>
<div class="grid">
<label>A</label>
<input class="lrg" type="number" name="attr_ability_a" />
</div>
<div class="grid">
<label>g</label>
<input class="lrg" type="number" name="attr_growth_1" />
</div>
<div class="grid editable">
<input class="editmode" type="hidden" name="attr_dexterity_edit" value="0" />
<input type="checkbox" name="attr_dexterity_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_dexterity_mod" value="0" />
</div>
<label>Dexterity</label>
<input type="hidden" name="attr_dexterity" />
<span class="input lrg flex">
<span name="attr_dexterity_raw" />
<input class="toggle-modifier" type="hidden" name="attr_dexterity_mod" value="0" />
<span name="attr_dexterity_mod" />
</span>
</div>
<div class="grid">
<label>&divide;6</label>
<input type="hidden" name="attr_dexterity_modifier" />
<span class="input lrg" name="attr_dexterity_modifier" />
</div>
<div class="grid">
<label>B</label>
<input class="lrg" type="number" name="attr_ability_b" />
</div>
<div class="grid">
<label>h</label>
<input class="lrg" type="number" name="attr_growth_2" />
</div>
<div class="grid editable">
<input class="editmode" type="hidden" name="attr_agility_edit" value="0" />
<input type="checkbox" name="attr_agility_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_agility_mod" value="0" />
</div>
<label>Agility</label>
<input type="hidden" name="attr_agility" />
<span class="input lrg flex">
<span name="attr_agility_raw" />
<input class="toggle-modifier" type="hidden" name="attr_agility_mod" value="0" />
<span name="attr_agility_mod" />
</span>
</div>
<div class="grid">
<label>&divide;6</label>
<input type="hidden" name="attr_agility_modifier" />
<span class="input lrg" name="attr_agility_modifier" />
</div>
<div class="grid vspan2">
<label>Body</label>
<input class="lrg" type="number" name="attr_body" />
</div>
<div class="grid">
<label>C</label>
<input class="lrg" type="number" name="attr_ability_c" />
</div>
<div class="grid">
<label>i</label>
<input class="lrg" type="number" name="attr_growth_3" />
</div>
<div class="grid editable">
<input class="editmode" type="hidden" name="attr_strength_edit" value="0" />
<input type="checkbox" name="attr_strength_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_strength_mod" value="0" />
</div>
<label>Strength</label>
<input type="hidden" name="attr_strength" />
<span class="input lrg flex">
<span name="attr_strength_raw" />
<input class="toggle-modifier" type="hidden" name="attr_strength_mod" value="0" />
<span name="attr_strength_mod" />
</span>
</div>
<div class="grid">
<label>&divide;6</label>
<input type="hidden" name="attr_strength_modifier" />
<span class="input lrg" name="attr_strength_modifier" />
</div>
<div class="grid">
<label>D</label>
<input class="lrg" type="number" name="attr_ability_d" />
</div>
<div class="grid">
<label>j</label>
<input class="lrg" type="number" name="attr_growth_4" />
</div>
<div class="grid editable">
<input class="editmode" type="hidden" name="attr_vitality_edit" value="0" />
<input type="checkbox" name="attr_vitality_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_vitality_mod" value="0" />
</div>
<label>Vitality</label>
<input type="hidden" name="attr_vitality" />
<span class="input lrg flex">
<span name="attr_vitality_raw" />
<input class="toggle-modifier" type="hidden" name="attr_vitality_mod" value="0" />
<span name="attr_vitality_mod" />
</span>
</div>
<div class="grid">
<label>&divide;6</label>
<input type="hidden" name="attr_vitality_modifier" />
<span class="input lrg" name="attr_vitality_modifier" />
</div>
<div class="grid vspan2">
<label>Mind</label>
<input class="lrg" type="number" name="attr_mind" />
</div>
<div class="grid">
<label>E</label>
<input class="lrg" type="number" name="attr_ability_e" />
</div>
<div class="grid">
<label>k</label>
<input class="lrg" type="number" name="attr_growth_5" />
</div>
<div class="grid editable">
<input class="editmode" type="hidden" name="attr_intelligence_edit" value="0" />
<input type="checkbox" name="attr_intelligence_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_intelligence_mod" value="0" />
</div>
<label>Intelligence</label>
<input type="hidden" name="attr_intelligence" />
<span class="input lrg flex">
<span name="attr_intelligence_raw" />
<input class="toggle-modifier" type="hidden" name="attr_intelligence_mod" value="0" />
<span name="attr_intelligence_mod" />
</span>
</div>
<div class="grid">
<label>&divide;6</label>
<input type="hidden" name="attr_intelligence_modifier" />
<span class="input lrg" name="attr_intelligence_modifier" />
</div>
<div class="grid">
<label>F</label>
<input class="lrg" type="number" name="attr_ability_f" />
</div>
<div class="grid">
<label>l</label>
<input class="lrg" type="number" name="attr_growth_6" />
</div>
<div class="grid editable">
<input class="editmode" type="hidden" name="attr_spirit_edit" value="0" />
<input type="checkbox" name="attr_spirit_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_spirit_mod" value="0" />
</div>
<label>Spirit</label>
<input type="hidden" name="attr_spirit" />
<span class="input lrg flex">
<span name="attr_spirit_raw" />
<input class="toggle-modifier" type="hidden" name="attr_spirit_mod" value="0" />
<span name="attr_spirit_mod" />
</span>
</div>
<div class="grid">
<label>&divide;6</label>
<input type="hidden" name="attr_spirit_modifier" />
<span class="input lrg" name="attr_spirit_modifier" />
</div>
</div>
</div>
<div class="grid col2-classpack">
<div class="grid nogap classes">
<input class="toggle-class" type="hidden" name="attr_classtoggle" value="" />
<input type="checkbox" name="attr_classtoggle" value="1" />
<div class="grid col2-classes nogap">
<div class="header">Class</div>
<div class="header">Level</div>
<input class="toggle-class" type="hidden" name="attr_fighter_level" value="0" />
<div class="input">Fighter</div>
<div><input type="number" name="attr_fighter_level" /></div>
<input class="toggle-class" type="hidden" name="attr_grappler_level" value="0" />
<div class="input">Grappler</div>
<div><input type="number" name="attr_grappler_level" /></div>
<input class="toggle-class" type="hidden" name="attr_bdancer_level" value="0" />
<div class="input">Battle Dancer</div>
<div><input type="number" name="attr_bdancer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_fencer_level" value="0" />
<div class="input">Fencer</div>
<div><input type="number" name="attr_fencer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_marksman_level" value="0" />
<div class="input">Marksman</div>
<div><input type="number" name="attr_marksman_level" /></div>
<input class="toggle-class" type="hidden" name="attr_sorcerer_level" value="0" />
<div class="input">Sorcerer</div>
<div><input type="number" name="attr_sorcerer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_conjurer_level" value="0" />
<div class="input">Conjurer</div>
<div><input type="number" name="attr_conjurer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_priest_level" value="0" />
<div class="input">Priest</div>
<div><input type="number" name="attr_priest_level" /></div>
<input class="toggle-class" type="hidden" name="attr_artificer_level" value="0" />
<div class="input">Artificer</div>
<div><input type="number" name="attr_artificer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_fairy_tamer_level" value="0" />
<div class="input">Fairy Tamer</div>
<div><input type="number" name="attr_fairy_tamer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_druid_level" value="0" />
<div class="input">Druid</div>
<div><input type="number" name="attr_druid_level" /></div>
<input class="toggle-class" type="hidden" name="attr_warlock_level" value="0" />
<div class="input">Warlock</div>
<div><input type="number" name="attr_warlock_level" /></div>
<input class="toggle-class" type="hidden" name="attr_gazer_level" value="0" />
<div class="input">Abyss Gazer</div>
<div><input type="number" name="attr_gazer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_arcanist_level" value="0" />
<div class="input aog-class">Arcanist</div>
<div class="aog-class"><input type="number" name="attr_arcanist_level" /></div>
<input class="toggle-class" type="hidden" name="attr_scout_level" value="0" />
<div class="input">Scout</div>
<div><input type="number" name="attr_scout_level" /></div>
<input class="toggle-class" type="hidden" name="attr_ranger_level" value="0" />
<div class="input">Ranger</div>
<div><input type="number" name="attr_ranger_level" /></div>
<input class="toggle-class" type="hidden" name="attr_sage_level" value="0" />
<div class="input">Sage</div>
<div><input type="number" name="attr_sage_level" /></div>
<input class="toggle-class" type="hidden" name="attr_enhancer_level" value="0" />
<div class="input">Enhancer</div>
<div><input type="number" name="attr_enhancer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_bard_level" value="0" />
<div class="input">Bard</div>
<div><input type="number" name="attr_bard_level" /></div>
<input class="toggle-class" type="hidden" name="attr_rider_level" value="0" />
<div class="input">Rider</div>
<div><input type="number" name="attr_rider_level" /></div>
<input class="toggle-class" type="hidden" name="attr_alchemist_level" value="0" />
<div class="input">Alchemist</div>
<div><input type="number" name="attr_alchemist_level" /></div>
<input class="toggle-class" type="hidden" name="attr_geomancer_level" value="0" />
<div class="input">Geomancer</div>
<div><input type="number" name="attr_geomancer_level" /></div>
<input class="toggle-class" type="hidden" name="attr_tactician_level" value="0" />
<div class="input">Tactician</div>
<div><input type="number" name="attr_tactician_level" /></div>
<input class="toggle-class" type="hidden" name="attr_dhunter_level" value="0" />
<div class="input">Dark Hunter</div>
<div><input type="number" name="attr_dhunter_level" /></div>
<input class="toggle-class" type="hidden" name="attr_mystic_level" value="0" />
<div class="input sw20-class">Mystic</div>
<div class="sw20-class"><input type="number" name="attr_mystic_level" /></div>
<input class="toggle-class" type="hidden" name="attr_runesmith_level" value="0" />
<div class="input aog-class">Runesmith</div>
<div class="aog-class"><input type="number" name="attr_runesmith_level" /></div>
<input class="toggle-class" type="hidden" name="attr_aristocrat_level" value="0" />
<div class="input aog-class">Aristocrat</div>
<div class="aog-class"><input type="number" name="attr_aristocrat_level" /></div>
</div>
</div>
<div class="grid col3-packages nogap">
<div class="span2 label refmark">Check Packages</div>
<div class="refmark">Treat as 0 if no levels in relevant classes</div>
<div class="grid nogap box">
<input class="class-level" type="hidden" value="0" name="attr_scout_level" />
<label>Scout</label>
<span name="attr_scout_level" />
<input class="class-level" type="hidden" value="0" name="attr_ranger_level" />
<label>Ranger</label>
<span name="attr_ranger_level" />
<input class="class-level" type="hidden" value="0" name="attr_rider_level" />
<label>Rider</label>
<span name="attr_rider_level" />
<input class="class-level" type="hidden" value="0" name="attr_geomancer_level" />
<label>Geomancer</label>
<span name="attr_geomancer_level" />
</div>
<div class="grid col2 span2">
<div>Dexterity Modifier</div>
<div class="grid">
<button class="input lrg" type="roll" name="roll_technique"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~technique)}} {{name=@{character_name}}} {{skill=Technique}} {{class=@{technique_class}}} {{level=@{technique_class_level}}} {{ability=Dexterity}} {{modifier=@{dexterity_modifier}}} {{result=[[[[2d6]]+@{technique}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{technique}]]}}" />
<label>Technique</label>
<input type="hidden" name="attr_technique_class" />
<input type="hidden" name="attr_technique_class_level" />
<input type="hidden" name="attr_technique" />
<span class="input lrg" name="attr_technique" />
</div>
<div>Agility Modifier</div>
<div class="grid">
<button class="input lrg" type="roll" name="roll_movement"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~movement)}} {{name=@{character_name}}} {{skill=Movement}} {{class=@{movement_class}}} {{level=@{movement_class_level}}} {{ability=Agility}} {{modifier=@{agility_modifier}}} {{result=[[[[2d6]]+@{movement}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{movement}]]}}" />
<label>Movement</label>
<input type="hidden" name="attr_movement_class" />
<input type="hidden" name="attr_movement_class_level" />
<input type="hidden" name="attr_movement" />
<span class="input lrg" name="attr_movement" />
</div>
<div>Intelligence Modifier</div>
<div class="grid">
<button class="input lrg" type="roll" name="roll_observation"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~observation)}} {{name=@{character_name}}} {{skill=Observation}} {{class=@{observation_class}}} {{level=@{observation_class_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{observation}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{observation}]]}}" />
<label>Observation</label>
<input type="hidden" name="attr_observation_class" />
<input type="hidden" name="attr_observation_class_level" />
<input type="hidden" name="attr_observation" />
<span class="input lrg" name="attr_observation" />
</div>
</div>
<div class="grid nogap box">
<input class="class-level" type="hidden" value="0" name="attr_sage_level" />
<label>Sage</label>
<span name="attr_sage_level" />
<input class="class-level" type="hidden" value="0" name="attr_alchemist_level" />
<label>Alchemist</label>
<span name="attr_alchemist_level" />
</div>
<div class="grid col2 span2">
<div>Intelligence Modifier</div>
<div class="grid">
<button class="input lrg" type="roll" name="roll_knowledge"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~knowledge)}} {{name=@{character_name}}} {{skill=Knowledge}} {{class=@{knowledge_class}}} {{level=@{knowledge_class_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{knowledge}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{knowledge}]]}}" />
<label>Knowledge</label>
<input type="hidden" name="attr_knowledge_class" />
<input type="hidden" name="attr_knowledge_class_level" />
<input type="hidden" name="attr_knowledge" />
<span class="input lrg" name="attr_knowledge" />
</div>
</div>
</div>
</div>
<div class="grid col2">
<div class="grid nogap lined single">
<div class="grid col2-feats nogap">
<div class="header" />
<div class="header">Combat Feats</div>
<label>1</label>
<input type="text" spellcheck="false" name="attr_feat_1" />
<label>3</label>
<input type="text" spellcheck="false" name="attr_feat_3" />
<label>5</label>
<input type="text" spellcheck="false" name="attr_feat_5" />
<label>7</label>
<input type="text" spellcheck="false" name="attr_feat_7" />
<label>9</label>
<input type="text" spellcheck="false" name="attr_feat_9" />
<label>11</label>
<input type="text" spellcheck="false" name="attr_feat_11" />
<label>13</label>
<input type="text" spellcheck="false" name="attr_feat_13" />
<label>15</label>
<input type="text" spellcheck="false" name="attr_feat_15" />
</div>
<div class="label">Automatically acquired, etc.</div>
<fieldset class="repeating_feats">
<div><input type="text" spellcheck="false" name="attr_feat_name" placeholder="Name" /></div>
</fieldset>
</div>
<div class="grid nogap lined single">
<div class="header">Techniques, Spellsongs, Stunts, etc.</div>
<fieldset class="repeating_techniques">
<div><input type="text" spellcheck="false" name="attr_technique_name" placeholder="Name" /></div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="grid page2">
<div class="grid col8-initmove nogap">
<div class="grid nogap box">
<input class="class-level" type="hidden" value="0" name="attr_sage_level" />
<label>Sage</label>
<span name="attr_sage_level" />
<input class="class-level" type="hidden" value="0" name="attr_rider_level" />
<label>Rider</label>
<span name="attr_rider_level" />
<input class="class-level" type="hidden" value="0" name="attr_dhunter_level" />
<label>Dark Hunter</label>
<span name="attr_dhunter_level" />
</div>
<div class="grid col2">
<div>Intelligence Modifier</div>
<div class="grid">
<button class="input lrg" type="roll" name="roll_monster_knowledge"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~monster_knowledge)}} {{name=@{character_name}}} {{skill=Monster Knowledge}} {{class=@{monster_knowledge_class}}} {{level=@{monster_knowledge_class_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{monster_knowledge}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_knowledge}]]}}" />
<label class="refmark">Monster Knowledge</label>
<input type="hidden" name="attr_monster_knowledge_class" />
<input type="hidden" name="attr_monster_knowledge_class_level" />
<input type="hidden" name="attr_monster_knowledge" />
<span class="input lrg" name="attr_monster_knowledge" />
</div>
</div>
<div class="grid nogap box">
<input class="class-level" type="hidden" value="0" name="attr_scout_level" />
<label>Scout</label>
<span name="attr_scout_level" />
<input class="class-level" type="hidden" value="0" name="attr_tactician_level" />
<label>Tactician</label>
<span name="attr_tactician_level" />
</div>
<div class="grid col2">
<div>Agility Modifier</div>
<div class="grid">
<button class="input lrg" type="roll" name="roll_initiative"
value="@{storage_initiative}" />
<label class="refmark">Initiative</label>
<input type="hidden" name="attr_initiative_class" />
<input type="hidden" name="attr_initiative_class_level" />
<input type="hidden" name="attr_initiative" />
<span class="input lrg" name="attr_initiative" />
</div>
</div>
<div class="refmark">Treat as 0 if no levels in relevant classes</div>
<div class="grid boxstat move">
<label>Limited Move</label>
<input type="hidden" name="attr_limited_move" value="3" />
<span class="input lrg" name="attr_limited_move" />
</div>
<div class="grid boxstat move">
<label>Normal Move</label>
<span class="label rotate">Agility</span>
<input type="hidden" name="attr_normal_move" />
<span class="input lrg" name="attr_normal_move" />
</div>
<div class="grid boxstat move">
<label>Full Move</label>
<input type="hidden" name="attr_full_move" />
<span class="input lrg" name="attr_full_move" />
</div>
</div>
<div class="grid col3-accdmg nogap">
<div class="grid nogap box wide">
<input class="class-level" type="hidden" value="0" name="attr_fighter_level" />
<label>Fighter</label>
<span name="attr_fighter_level" />
<input class="class-level" type="hidden" value="0" name="attr_bdancer_level" />
<label>Battle Dancer</label>
<span name="attr_bdancer_level" />
<input class="class-level" type="hidden" value="0" name="attr_grappler_level" />
<label>Grappler</label>
<span name="attr_grappler_level" />
<input class="class-level" type="hidden" value="0" name="attr_fencer_level" />
<label>Fencer</label>
<span name="attr_fencer_level" />
<input class="class-level" type="hidden" value="0" name="attr_marksman_level" />
<label>Marksman</label>
<span name="attr_marksman_level" />
</div>
<div class="grid col2 nogap stretch">
<div>Dexterity Modifier</div>
<div class="grid">
<label class="refmark">Base Accuracy:</label>
<input type="hidden" name="attr_base_accuracy_class" />
<input type="hidden" name="attr_base_accuracy_class_level" />
<input type="hidden" name="attr_base_accuracy" />
<span class="input" name="attr_base_accuracy" />
</div>
<div>Strength Modifier</div>
<div class="grid">
<label class="refmark">Extra Damage:</label>
<input type="hidden" name="attr_extra_damage_class" />
<input type="hidden" name="attr_extra_damage_class_level" />
<input type="hidden" name="attr_extra_damage" />
<span class="input" name="attr_extra_damage" />
</div>
</div>
<div class="grid boxstat nogap">
<label>Movement Enhancements</label>
<div class="grid col2">
<div><input type="text" spellcheck="false" name="attr_movement_enhancements" /></div>
<div><input type="number" name="attr_movement_enhancements_modifier" /></div>
</div>
</div>
</div>
<div class="grid nogap lined">
<div class="grid col-weapons nogap">
<div class="header">Weapon Name/Notes</div>
<div class="header">Class</div>
<div class="header">Stance</div>
<div class="header">Min STR</div>
<div class="header">Weapon Accuracy</div>
<div class="header">Total Accuracy</div>
<div class="header">Power</div>
<div class="header">2</div>
<div class="header">3</div>
<div class="header">4</div>
<div class="header">5</div>
<div class="header">6</div>
<div class="header">7</div>
<div class="header">8</div>
<div class="header">9</div>
<div class="header">10</div>
<div class="header">11</div>
<div class="header">12</div>
<div class="header">Crit Value</div>
<div class="header">Extra Damage</div>
<div class="header">Total Extra Damage</div>
</div>
<fieldset class="repeating_weapons">
<input type="hidden" name="attr_weapon_total_accuracy" />
<input type="hidden" name="attr_weapon_total_extra_damage" />
<div><input type="text" spellcheck="false" name="attr_weapon_name" placeholder="Weapon" /></div>
<div>
<select class="input" name="attr_weapon_class">
<option value=""></option>
<option value="fighter">Fighter</option>
<option value="grappler">Grappler</option>
<option value="bdancer">Btl Dancer</option>
<option value="fencer">Fencer</option>
<option value="marksman">Marksman</option>
<option value="crossbow">Crossbow</option>
<option value="gun">Gun</option>
<option value="dhunter">Spc.Throw</option>
</select>
</div>
<div>
<select class="input" name="attr_weapon_stance">
<option value=""></option>
<option value="1h">1H</option>
<option value="1h2">1H&dagger;</option>
<option value="1hthrown">1H*</option>
<option value="1hw">1Hw</option>
<option value="1hother">1H#</option>
<option value="2h">2H</option>
<option value="2hs">2H&#7540;</option>
<option value="2hp">2H&#7537;</option>
<option value="2hthrown">2H*</option>
<option value="2hother">2H#</option>
</select>
</div>
<div><input type="number" name="attr_weapon_min_str" /></div>
<div><input type="number" name="attr_weapon_accuracy" value="" /></div>
<div>
<button class="input" type="roll" name="roll_attack"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~repeating_weapons_attack)}} {{damage=[Damage](~repeating_weapons_damage)}} {{name=@{character_name}}} {{skill=@{weapon_name}}} {{skillverb=attacks with}} {{result=[[[[2d6]]+@{weapon_total_accuracy}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{weapon_total_accuracy}]]}}" />
<span class="input" name="attr_weapon_total_accuracy" />
</div>
<div><input type="number" name="attr_weapon_power" /></div>
<div><span class="input">*</span></div>
<div><input type="number" name="attr_weapon_power_3" /></div>
<div><input type="number" name="attr_weapon_power_4" /></div>
<div><input type="number" name="attr_weapon_power_5" /></div>
<div><input type="number" name="attr_weapon_power_6" /></div>
<div><input type="number" name="attr_weapon_power_7" /></div>
<div><input type="number" name="attr_weapon_power_8" /></div>
<div><input type="number" name="attr_weapon_power_9" /></div>
<div><input type="number" name="attr_weapon_power_10" /></div>
<div><input type="number" name="attr_weapon_power_11" /></div>
<div><input type="number" name="attr_weapon_power_12" /></div>
<div><input type="number" name="attr_weapon_crit_value" /></div>
<div><input type="number" name="attr_weapon_extra_damage" value="" /></div>
<div>
<button class="input" type="roll" name="roll_damage" value="@{damage_action}" />
<button class="hidden" type="action" name="act_damage-action" />
<input type="hidden" name="attr_damage_action" value="">
<span class="input" name="attr_weapon_total_extra_damage" />
</div>
</fieldset>
</div>
<div class="grid boxstat nogap">
<label>Accuracy, Extra Damage enhancements, etc.</label>
<div class="auto-expand">
<span name="attr_accuracy_enhancements"></span>
<textarea spellcheck="false" name="attr_accuracy_enhancements"></textarea>
</div>
</div>
<div class="grid col2-locdef">
<div class="grid nogap lined">
<div class="grid col2-locations nogap">
<div class="header">Section</div>
<div class="header">Name of Accessory, Effect</div>
<div class="label">Head</div>
<input type="text" spellcheck="false" name="attr_accessory_head" />
<div class="label">Face</div>
<input type="text" spellcheck="false" name="attr_accessory_face" />
<div class="label">Ears</div>
<input type="text" spellcheck="false" name="attr_accessory_ears" />
<div class="label">Neck</div>
<input type="text" spellcheck="false" name="attr_accessory_neck" />
<div class="label">Back</div>
<input type="text" spellcheck="false" name="attr_accessory_back" />
<div class="label">Right Hand</div>
<input type="text" spellcheck="false" name="attr_accessory_rhand" />
<div class="label">Left Hand</div>
<input type="text" spellcheck="false" name="attr_accessory_lhand" />
<div class="label">Waist</div>
<input type="text" spellcheck="false" name="attr_accessory_waist" />
<div class="label">Feet</div>
<input type="text" spellcheck="false" name="attr_accessory_feet" />
</div>
<fieldset class="repeating_accessories">
<div class="label">Other</div>
<div><input type="text" spellcheck="false" name="attr_accessory_name" /></div>
</fieldset>
</div>
<div class="grid">
<div class="grid col2-evasion nogap">
<div class="grid nogap box wide">
<input class="class-level" type="hidden" value="0" name="attr_fighter_level" />
<label>Fighter</label>
<span name="attr_fighter_level" />
<input class="class-level" type="hidden" value="0" name="attr_grappler_level" />
<label>Grappler</label>
<span name="attr_grappler_level" />
<input class="class-level" type="hidden" value="0" name="attr_bdancer_level" />
<label>Battle Dancer</label>
<span name="attr_bdancer_level" />
<input class="class-level" type="hidden" value="0" name="attr_fencer_level" />
<label>Fencer</label>
<span name="attr_fencer_level" />
</div>
<div class="grid col2 nogap">
<div>Agility Modifier</div>
<div class="grid">
<label class="refmark">Base Evasion</label>
<input type="hidden" name="attr_base_evasion_class" />
<input type="hidden" name="attr_base_evasion_class_level" />
<input type="hidden" name="attr_base_evasion" value="0" />
<span class="input lrg" name="attr_base_evasion" />
</div>
</div>
</div>
<div class="grid nogap lined">
<div class="grid col4-armor nogap">
<div class="header">Armor Name/Notes</div>
<div class="header">Min STR</div>
<div class="header">Evasion</div>
<div class="header">Defense</div>
<input type="text" spellcheck="false" name="attr_armor_name" placeholder="Armor" />
<input type="number" name="attr_armor_min_str" />
<input type="number" name="attr_armor_evasion" />
<input type="number" name="attr_armor_defense" />
<input type="text" spellcheck="false" name="attr_shield_name" placeholder="Shield" />
<input type="number" name="attr_shield_min_str" />
<input type="number" name="attr_shield_evasion" />
<input type="number" name="attr_shield_defense" />
</div>
<fieldset class="repeating_armor">
<div><input type="text" spellcheck="false" name="attr_armor_other_name" placeholder="Other" /></div>
<div><input type="number" name="attr_armor_other_min_str" /></div>
<div><input type="number" name="attr_armor_other_evasion" /></div>
<div><input type="number" name="attr_armor_other_defense" /></div>
</fieldset>
</div>
<div class="grid col2-mageva">
<div class="grid nogap">
<div class="refmark label">Power Scores</div>
<div class="grid col3">
<input class="magic-power" type="hidden" name="attr_sorcerer_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_sorcerer_power_edit" value="0" />
<input type="checkbox" name="attr_sorcerer_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_sorcerer_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_sorcerer"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~sorcerer)}} {{name=@{character_name}}} {{skill=Sorcerer Spellcasting}} {{class=Sorcerer}} {{level=@{sorcerer_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{sorcerer_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{sorcerer_power}]]}}" />
<span class="input lrg" name="attr_sorcerer_power" />
<input class="toggle-modifier" type="hidden" name="attr_sorcerer_power_mod" value="0" />
<span name="attr_sorcerer_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Sorcerer</span>
</div>
<input class="magic-power" type="hidden" name="attr_conjurer_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_conjurer_power_edit" value="0" />
<input type="checkbox" name="attr_conjurer_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_conjurer_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_conjurer"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~conjurer)}} {{name=@{character_name}}} {{skill=Conjurer Spellcasting}} {{class=Conjurer}} {{level=@{conjurer_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{conjurer_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{conjurer_power}]]}}" />
<span class="input lrg" name="attr_conjurer_power" />
<input class="toggle-modifier" type="hidden" name="attr_conjurer_power_mod" value="0" />
<span name="attr_conjurer_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Conjurer</span>
</div>
<input class="magic-power" type="hidden" name="attr_priest_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_priest_power_edit" value="0" />
<input type="checkbox" name="attr_priest_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_priest_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_priest"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~priest)}} {{name=@{character_name}}} {{skill=Priest Spellcasting}} {{class=Priest}} {{level=@{priest_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{priest_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{priest_power}]]}}" />
<span class="input lrg" name="attr_priest_power" />
<input class="toggle-modifier" type="hidden" name="attr_priest_power_mod" value="0" />
<span name="attr_priest_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Priest</span>
</div>
<input class="magic-power" type="hidden" name="attr_artificer_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_artificer_power_edit" value="0" />
<input type="checkbox" name="attr_artificer_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_artificer_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_artificer"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~artificer)}} {{name=@{character_name}}} {{skill=Artificer Spellcasting}} {{class=Artificer}} {{level=@{artificer_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{artificer_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{artificer_power}]]}}" />
<span class="input lrg" name="attr_artificer_power" />
<input class="toggle-modifier" type="hidden" name="attr_artificer_power_mod" value="0" />
<span name="attr_artificer_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Artificer</span>
</div>
<input class="magic-power" type="hidden" name="attr_fairy_tamer_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_fairy_tamer_power_edit" value="0" />
<input type="checkbox" name="attr_fairy_tamer_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_fairy_tamer_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_fairy_tamer"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~fairy_tamer)}} {{name=@{character_name}}} {{skill=Fairy Tamer Spellcasting}} {{class=Fairy Tamer}} {{level=@{fairy_tamer_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{fairy_tamer_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{fairy_tamer_power}]]}}" />
<span class="input lrg" name="attr_fairy_tamer_power" />
<input class="toggle-modifier" type="hidden" name="attr_fairy_tamer_power_mod" value="0" />
<span name="attr_fairy_tamer_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Fairy Tamer</span>
</div>
<input class="magic-power" type="hidden" name="attr_druid_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_druid_power_edit" value="0" />
<input type="checkbox" name="attr_druid_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_druid_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_druid"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~druid)}} {{name=@{character_name}}} {{skill=Druid Spellcasting}} {{class=Druid}} {{level=@{druid_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{druid_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{druid_power}]]}}" />
<span class="input lrg" name="attr_druid_power" />
<input class="toggle-modifier" type="hidden" name="attr_druid_power_mod" value="0" />
<span name="attr_druid_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Druid</span>
</div>
<input class="magic-power" type="hidden" name="attr_warlock_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_warlock_power_edit" value="0" />
<input type="checkbox" name="attr_warlock_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_warlock_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_warlock"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~warlock)}} {{name=@{character_name}}} {{skill=Warlock Spellcasting}} {{class=Warlock}} {{level=@{warlock_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{warlock_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{warlock_power}]]}}" />
<span class="input lrg" name="attr_warlock_power" />
<input class="toggle-modifier" type="hidden" name="attr_warlock_power_mod" value="0" />
<span name="attr_warlock_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Warlock</span>
</div>
<input class="magic-power" type="hidden" name="attr_gazer_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_gazer_power_edit" value="0" />
<input type="checkbox" name="attr_gazer_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_gazer_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_gazer"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~gazer)}} {{name=@{character_name}}} {{skill=Abyss Gazer Spellcasting}} {{class=Abyss Gazer}} {{level=@{gazer_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{gazer_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{gazer_power}]]}}" />
<span class="input lrg" name="attr_gazer_power" />
<input class="toggle-modifier" type="hidden" name="attr_gazer_power_mod" value="0" />
<span name="attr_gazer_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Abyss Gazer</span>
</div>
<input class="magic-power" type="hidden" name="attr_arcanist_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_arcanist_power_edit" value="0" />
<input type="checkbox" name="attr_arcanist_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_arcanist_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_arcanist"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~arcanist)}} {{name=@{character_name}}} {{skill=Arcanist Spellcasting}} {{class=Arcanist}} {{level=@{arcanist_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{arcanist_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{arcanist_power}]]}}" />
<span class="input lrg" name="attr_arcanist_power" />
<input class="toggle-modifier" type="hidden" name="attr_arcanist_power_mod" value="0" />
<span name="attr_arcanist_power_mod" />
</span>
<span class="label">Magic Power</span>
<span class="input">Arcanist</span>
</div>
<input class="magic-power" type="hidden" name="attr_bard_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_bard_power_edit" value="0" />
<input type="checkbox" name="attr_bard_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_bard_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_bard"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~bard)}} {{name=@{character_name}}} {{skill=Bard Bardic Power}} {{class=Bard}} {{level=@{bard_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{bard_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{bard_power}]]}}" />
<span class="input lrg" name="attr_bard_power" />
<input class="toggle-modifier" type="hidden" name="attr_bard_power_mod" value="0" />
<span name="attr_bard_power_mod" />
</span>
<span class="label">Bardic Power</span>
<span class="input">Bard</span>
</div>
<input class="magic-power" type="hidden" name="attr_dhunter_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_dhunter_power_edit" value="0" />
<input type="checkbox" name="attr_dhunter_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_dhunter_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_dhunter"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~dhunter)}} {{name=@{character_name}}} {{skill=Dark Hunter Mental Power}} {{class=Dark Hunter}} {{level=@{dhunter_level}}} {{ability=Spirit}} {{modifier=@{spirit_modifier}}} {{result=[[[[2d6]]+@{dhunter_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{dhunter_power}]]}}" />
<span class="input lrg" name="attr_dhunter_power" />
<input class="toggle-modifier" type="hidden" name="attr_dhunter_power_mod" value="0" />
<span name="attr_dhunter_power_mod" />
</span>
<span class="label">Mental Power</span>
<span class="input">Dark Hunter</span>
</div>
<input class="magic-power" type="hidden" name="attr_alchemist_power" value="" />
<div class="grid nogap magic-circle">
<span class="editable">
<input class="editmode" type="hidden" name="attr_alchemist_power_edit" value="0" />
<input type="checkbox" name="attr_alchemist_power_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_alchemist_power_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_alchemist"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~alchemist)}} {{name=@{character_name}}} {{skill=Alchemist Evocation Power}} {{class=Alchemist}} {{level=@{alchemist_level}}} {{ability=Intelligence}} {{modifier=@{intelligence_modifier}}} {{result=[[[[2d6]]+@{alchemist_power}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{alchemist_power}]]}}" />
<span class="input lrg" name="attr_alchemist_power" />
<input class="toggle-modifier" type="hidden" name="attr_alchemist_power_mod" value="0" />
<span name="attr_alchemist_power_mod" />
</span>
<span class="label">Evocation Power</span>
<span class="input">Alchemist</span>
</div>
</div>
</div>
<div class="grid col2 smrowgap">
<div class="boxstat total">
<button class="input lrg" type="roll" name="roll_total_evasion"
value="&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~total_evasion)}} {{name=@{character_name}}} {{skill=Evasion}} {{result=[[[[2d6]]+@{total_evasion}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{total_evasion}]]}}" />
<label>Total Evasion</label>
<input type="hidden" name="attr_other_evasion" value="0" />
<input type="hidden" name="attr_total_evasion" value="0" />
<span class="input lrg" name="attr_total_evasion" />
</div>
<div class="boxstat total">
<label>Total Defense</label>
<input type="hidden" name="attr_other_defense" value="0" />
<input type="hidden" name="attr_total_defense" value="0" />
<span class="input lrg" name="attr_total_defense" />
</div>
<div class="grid boxstat nogap span2">
<label>Evasion, Defense enhancements, etc.</label>
<div class="auto-expand">
<span name="attr_evasion_enhancements"></span>
<textarea spellcheck="false" name="attr_evasion_enhancements"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="grid col4">
<div class="grid col2 nogap editable">
<input class="editmode" type="hidden" name="attr_hp_edit" value="0" />
<input type="checkbox" name="attr_hp_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_hp_mod" value="0" />
</div>
<div class="boxstat total">
<label>HP</label>
<input type="hidden" name="attr_hp_max" />
<span class="input lrg" name="attr_hp_max" />
</div>
<div class="boxstat black">
<input class="lrg" type="number" name="attr_hp" />
</div>
</div>
<div class="grid col2 nogap editable">
<input class="editmode" type="hidden" name="attr_mp_edit" value="0" />
<input type="checkbox" name="attr_mp_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_mp_mod" value="0" />
</div>
<div class="boxstat total">
<label>MP</label>
<input type="hidden" name="attr_mp_max" />
<span class="input lrg" name="attr_mp_max" />
</div>
<div class="boxstat black">
<input class="lrg" type="number" name="attr_mp" />
</div>
</div>
<div class="boxstat black editable">
<input class="editmode" type="hidden" name="attr_fortitude_edit" value="0" />
<input type="checkbox" name="attr_fortitude_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_fortitude_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_fortitude"
value="@{storage_fortitude}" />
<label>Fortitude</label>
<input type="hidden" name="attr_fortitude" />
<span class="input lrg" name="attr_fortitude" />
</div>
<div class="boxstat black editable">
<input class="editmode" type="hidden" name="attr_willpower_edit" value="0" />
<input type="checkbox" name="attr_willpower_edit" value="1" />
<div class="editbox">
<input type="number" name="attr_willpower_mod" value="0" />
</div>
<button class="input lrg" type="roll" name="roll_willpower"
value="@{storage_willpower}" />
<label>Willpower</label>
<input type="hidden" name="attr_willpower" />
<span class="input lrg" name="attr_willpower" />
</div>
<div class="footnote">Adventurer Level x 3 + Vitality
<input class="toggle-modifier" type="hidden" name="attr_hp_mod" value="0" />
<span name="attr_hp_mod" /></div>
<div class="footnote">Total Wizard-Type Class Levels x 3 + Spirit
<input class="toggle-modifier" type="hidden" name="attr_mp_mod" value="0" />
<span name="attr_mp_mod" /></div>
<div class="footnote">Adventurer Level + Vitality Modifier
<input class="toggle-modifier" type="hidden" name="attr_fortitude_mod" value="0" />
<span name="attr_fortitude_mod" /></div>
<div class="footnote">Adventurer Level + Spirit Modifier
<input class="toggle-modifier" type="hidden" name="attr_willpower_mod" value="0" />
<span name="attr_willpower_mod" /></div>
</div>
<div class="grid col2-monitems">
<div class="grid smrowgap">
<div class="grid profile">
<span class="label">Money / Deposit / Debt</span>
<div class="auto-expand lrg">
<span name="attr_money"></span>
<textarea spellcheck="false" name="attr_money"></textarea>
</div>
</div>
<div class="label">Power Table</div>
<div class="grid lined black nogap">
<div class="grid nogap col13 powertable">
<div />
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div />
<div>0</div>
<div>*</div>
<div>0</div>
<div>0</div>
<div>0</div>
<div>1</div>
<div>2</div>
<div>2</div>
<div>3</div>
<div>3</div>
<div>4</div>
<div>4</div>
<div>
<button class="input" type="roll" name="roll_power0" value="@{power0_action}" />
<button class="hidden" type="action" name="act_power0-action" />
<input type="hidden" name="attr_power0_action" value="">
</div>
<div>5</div>
<div>*</div>
<div>0</div>
<div>1</div>
<div>1</div>
<div>2</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>5</div>
<div>5</div>
<div>
<button class="input" type="roll" name="roll_power5" value="@{power5_action}" />
<button class="hidden" type="action" name="act_power5-action" />
<input type="hidden" name="attr_power5_action" value="">
</div>
<div>10</div>
<div>*</div>
<div>1</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>
<button class="input" type="roll" name="roll_power10" value="@{power10_action}" />
<button class="hidden" type="action" name="act_power10-action" />
<input type="hidden" name="attr_power10_action" value="">
</div>
<div>15</div>
<div>*</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>4</div>
<div>5</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>
<button class="input" type="roll" name="roll_power15" value="@{power15_action}" />
<button class="hidden" type="action" name="act_power15-action" />
<input type="hidden" name="attr_power15_action" value="">
</div>
<div>20</div>
<div>*</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>
<button class="input" type="roll" name="roll_power20" value="@{power20_action}" />
<button class="hidden" type="action" name="act_power20-action" />
<input type="hidden" name="attr_power20_action" value="">
</div>
<div>25</div>
<div>*</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>
<button class="input" type="roll" name="roll_power25" value="@{power25_action}" />
<button class="hidden" type="action" name="act_power25-action" />
<input type="hidden" name="attr_power25_action" value="">
</div>
<div>30</div>
<div>*</div>
<div>2</div>
<div>4</div>
<div>4</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>10</div>
<div>10</div>
<div>
<button class="input" type="roll" name="roll_power30" value="@{power30_action}" />
<button class="hidden" type="action" name="act_power30-action" />
<input type="hidden" name="attr_power30_action" value="">
</div>
<div>35</div>
<div>*</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>
<button class="input" type="roll" name="roll_power35" value="@{power35_action}" />
<button class="hidden" type="action" name="act_power35-action" />
<input type="hidden" name="attr_power35_action" value="">
</div>
<div>40</div>
<div>*</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>
<button class="input" type="roll" name="roll_power40" value="@{power40_action}" />
<button class="hidden" type="action" name="act_power40-action" />
<input type="hidden" name="attr_power40_action" value="">
</div>
<div>45</div>
<div>*</div>
<div>4</div>
<div>6</div>
<div>7</div>
<div>9</div>
<div>10</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>
<button class="input" type="roll" name="roll_power45" value="@{power45_action}" />
<button class="hidden" type="action" name="act_power45-action" />
<input type="hidden" name="attr_power45_action" value="">
</div>
<div>50</div>
<div>*</div>
<div>4</div>
<div>6</div>
<div>8</div>
<div>10</div>
<div>10</div>
<div>12</div>
<div>12</div>
<div>13</div>
<div>15</div>
<div>15</div>
<div>
<button class="input" type="roll" name="roll_power50" value="@{power50_action}" />
<button class="hidden" type="action" name="act_power50-action" />
<input type="hidden" name="attr_power50_action" value="">
</div>
</div>
<fieldset class="repeating_powertable">
<input type="hidden" name="attr_weapon_name" value="Power Level" />
<input type="hidden" name="attr_weapon_total_extra_damage" value="[[?{Extra Damage|0}]]" />
<input type="hidden" name="attr_weapon_crit_value" value="[[?{Crit Value|10}]]" />
<div><input type="number" name="attr_weapon_power" /></div>
<div>*</div>
<div><input type="number" name="attr_weapon_power_3" /></div>
<div><input type="number" name="attr_weapon_power_4" /></div>
<div><input type="number" name="attr_weapon_power_5" /></div>
<div><input type="number" name="attr_weapon_power_6" /></div>
<div><input type="number" name="attr_weapon_power_7" /></div>
<div><input type="number" name="attr_weapon_power_8" /></div>
<div><input type="number" name="attr_weapon_power_9" /></div>
<div><input type="number" name="attr_weapon_power_10" /></div>
<div><input type="number" name="attr_weapon_power_11" /></div>
<div><input type="number" name="attr_weapon_power_12" /></div>
<div>
<button class="input" type="roll" name="roll_damage" value="@{damage_action}" />
<button class="hidden" type="action" name="act_damage-action" />
<input type="hidden" name="attr_damage_action" value="">
</div>
</fieldset>
</div>
</div>
<div class="grid profile">
<span class="label">Items in Possession, etc.</span>
<div class="grid col2">
<div class="grid">
<div class="auto-expand tall">
<span name="attr_items"></span>
<textarea spellcheck="false" name="attr_items"></textarea>
</div>
<input class="toggle-cards" type="hidden" name="attr_alchemist_level" value="0" />
<div class="grid nogap">
<div>Material Cards in Possession</div>
<div class="grid nogap lined cards">
<div class="grid col5 nogap">
<div class="header">Color</div>
<div class="header">B</div>
<div class="header">A</div>
<div class="header">S</div>
<div class="header">SS</div>
<div class="label">Red</div>
<input type="number" name="attr_card_red_b" />
<input type="number" name="attr_card_red_a" />
<input type="number" name="attr_card_red_s" />
<input type="number" name="attr_card_red_ss" />
<div class="label">Green</div>
<input type="number" name="attr_card_green_b" />
<input type="number" name="attr_card_green_a" />
<input type="number" name="attr_card_green_s" />
<input type="number" name="attr_card_green_ss" />
<div class="label">Black</div>
<input type="number" name="attr_card_black_b" />
<input type="number" name="attr_card_black_a" />
<input type="number" name="attr_card_black_s" />
<input type="number" name="attr_card_black_ss" />
<div class="label">White</div>
<input type="number" name="attr_card_white_b" />
<input type="number" name="attr_card_white_a" />
<input type="number" name="attr_card_white_s" />
<input type="number" name="attr_card_white_ss" />
<div class="label">Gold</div>
<input type="number" name="attr_card_gold_b" />
<input type="number" name="attr_card_gold_a" />
<input type="number" name="attr_card_gold_s" />
<input type="number" name="attr_card_gold_ss" />
</div>
</div>
</div>
</div>
<div class="grid">
<div class="grid boxstat nogap">
<label class="flex"><input class="standard" type="checkbox" name="attr_adventurer_set" value="1" />
Adventurer Set</label>
<span>Backpack, Waterskin, Blanket, 6 Torches,
Tinderbox, 10m Rope, Small Knife</span>
</div>
<div class="label">Consumables</div>
<fieldset class="repeating_consumables">
<div class="grid boxstat nogap">
<input type="text" spellcheck="false" name="attr_consumable_name" />
</div>
<div class="grid col7 nogap">
<input type="radio" name="attr_consumable_quantity" value="0" checked="checked" />
<input type="radio" name="attr_consumable_quantity" value="1" />
<input type="radio" name="attr_consumable_quantity" value="2" />
<input type="radio" name="attr_consumable_quantity" value="3" />
<input type="radio" name="attr_consumable_quantity" value="4" />
<input type="radio" name="attr_consumable_quantity" value="5" />
<input type="radio" name="attr_consumable_quantity" value="6" />
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<div class="grid monster smrowgap">
<div class="grid col3-title nogap">
<input class="lrg" type="number" name="attr_monster_level" value="1" />
<input class="lrg" type="text" spellcheck="false" name="attr_character_name" />
<input class="label" type="text" spellcheck="false" list="monster_classification" name="attr_monster_classification" />
<datalist id="monster_classification">
<option>Barbarous</option>
<option>Animal</option>
<option>Plant</option>
<option>Undead</option>
<option>Construct</option>
<option>Magitech</option>
<option>Mythical Beast</option>
<option>Fairy</option>
<option>Daemon</option>
<option>Humanoid</option>
<option>Familiar</option>
<option>Golem</option>
</datalist>
</div>
<div class="grid nogap">
<div class="grid col8-stats1">
<label>Intelligence:</label>
<input type="text" spellcheck="false" list="monster_intellect" name="attr_monster_intellect" />
<datalist id="monster_intellect">
<option>None</option>
<option>Animal</option>
<option>Low</option>
<option>Average</option>
<option>High</option>
<option>Servant</option>
</datalist>
<label>Perception:</label>
<input class="large" type="text" spellcheck="false" list="monster_perception" name="attr_monster_perception" />
<datalist id="monster_perception">
<option>Five senses</option>
<option>Five senses (Darkvision)</option>
<option>Magic</option>
<option>Mechanical</option>
</datalist>
<label>Disposition:</label>
<input type="text" spellcheck="false" list="monster_disposition" name="attr_monster_disposition" />
<datalist id="monster_disposition">
<option>Friendly</option>
<option>Neutral</option>
<option>Hostile</option>
<option>Hungry</option>
<option>Instructed</option>
</datalist>
<label>Soulscars:</label>
<input type="number" name="attr_monster_soulscars" />
</div>
<div class="grid col4-stats2">
<label>Language:</label>
<input type="text" spellcheck="false" name="attr_monster_language" />
<label>Habitat:</label>
<input type="text" spellcheck="false" name="attr_monster_habitat" />
</div>
<div class="grid col6-stats3">
<label>Reputation:</label>
<div class="grid col2 nogap">
<input type="number" name="attr_monster_reputation" />
<button type="roll" name="roll_monster_reputation"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=Reputation}} {{skillverb=target}} {{result=[[@{monster_reputation}]]}}" />
</div>
<label>Weakness:</label>
<div class="grid col2 nogap">
<input type="number" name="attr_monster_weakness" />
<button type="roll" name="roll_monster_weakness"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=Weakness}} {{skillverb=target}} {{result=[[@{monster_weakness}]]}}" />
</div>
<label>Weak Point:</label>
<input type="text" spellcheck="false" name="attr_monster_weakpoint" />
</div>
<div class="grid col8-stats4">
<label>Initiative:</label>
<div class="grid col2 nogap">
<input type="number" name="attr_monster_initiative" />
<button type="roll" name="roll_monster_initiative"
value="@{storage_monster_initiative}" />
</div>
<label>Movement Speed:</label>
<input type="text" spellcheck="false" name="attr_monster_movement" />
<label>Fortitude:</label>
<div class="grid col4 nogap">
<input type="number" name="attr_monster_fortitude" value="0" />
<button type="roll" name="roll_monster_fortitude"
value="@{storage_monster_fortitude}" />
<input type="hidden" name="attr_monster_fortitude_fixed" value="7" />
<span class="input" name="attr_monster_fortitude_fixed" />
<button type="roll" name="roll_monster_fortitude2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=Fortitude}} {{result=[[@{monster_fortitude_fixed}]]}}" />
</div>
<label>Willpower:</label>
<div class="grid col4 nogap">
<button type="roll" name="roll_monster_willpower"
value="@{storage_monster_willpower}" />
<input type="number" name="attr_monster_willpower" value="0" />
<input type="hidden" name="attr_monster_willpower_fixed" value="7" />
<span class="input" name="attr_monster_willpower_fixed" />
<button type="roll" name="roll_monster_willpower2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=Willpower}} {{result=[[@{monster_willpower_fixed}]]}}" />
</div>
</div>
</div>
<div class="grid nogap lined">
<div class="grid col7-sections nogap">
<div class="header">Fighting Style (Section)</div>
<div class="header">Accuracy</div>
<div class="header">Damage</div>
<div class="header">Evasion</div>
<div class="header">Defense</div>
<div class="header maxvs">HP</div>
<div class="header maxvs">MP</div>
<input type="text" spellcheck="false" name="attr_monster_main_name" placeholder="Attack (Body)" />
<div class="grid col4 nogap">
<input type="number" name="attr_monster_main_accuracy" value="0" />
<button type="roll" name="roll_monster_main_accuracy"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~monster_main_accuracy)}} {{damage=[Damage](~monster_main_damage)}} {{name=@{character_name}}} {{skill=@{monster_main_name} Accuracy}} {{result=[[[[2d6]]+@{monster_main_accuracy}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_main_accuracy}]]}}" />
<input type="hidden" name="attr_monster_main_accuracy_fixed" value="7" />
<span class="input" name="attr_monster_main_accuracy_fixed" />
<button type="roll" name="roll_monster_main_accuracy2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{damage=[Damage](~monster_main_damage)}} {{name=@{character_name}}} {{skill=@{monster_main_name} Accuracy}} {{result=[[@{monster_main_accuracy_fixed}]]}}" />
</div>
<div class="grid col3 nogap damage">
<span class="input">2d</span>
<input type="number" name="attr_monster_main_damage" />
<button type="roll" name="roll_monster_main_damage"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~monster_main_damage)}} {{name=@{character_name}}} {{skill=@{monster_main_name} Damage}} {{result=[[[[2d6]]+@{monster_main_damage}]]}} {{raw=$[[0]]}} {{simple=1}}" />
</div>
<div class="grid col4 nogap">
<input type="number" name="attr_monster_main_evasion" value="0" />
<button type="roll" name="roll_monster_main_evasion"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~monster_main_evasion)}} {{name=@{character_name}}} {{skill=@{monster_main_name} Evasion}} {{result=[[[[2d6]]+@{monster_main_evasion}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_main_evasion}]]}}" />
<input type="hidden" name="attr_monster_main_evasion_fixed" value="7" />
<span class="input" name="attr_monster_main_evasion_fixed" />
<button type="roll" name="roll_monster_main_evasion2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=@{monster_main_name} Evasion}} {{result=[[@{monster_main_evasion_fixed}]]}}" />
</div>
<input type="number" name="attr_monster_main_defense" />
<div class="grid col2 divide nogap">
<input type="number" name="attr_monster_main_hp_max" />
<input type="number" name="attr_monster_main_hp" />
</div>
<div class="grid col2 divide nogap">
<input type="number" name="attr_monster_main_mp_max" />
<input type="number" name="attr_monster_main_mp" />
</div>
</div>
<fieldset class="repeating_monstersections">
<div><input type="text" spellcheck="false" name="attr_monster_section_name" /></div>
<div class="grid col4 nogap">
<input type="number" name="attr_monster_section_accuracy" value="0" />
<button type="roll" name="roll_monster_section_accuracy"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~repeating_monstersections_monster_section_accuracy)}} {{damage=[Damage](~repeating_monstersections_monster_section_damage)}} {{name=@{character_name}}} {{skill=@{monster_section_name} Accuracy}} {{result=[[[[2d6]]+@{monster_section_accuracy}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_section_accuracy}]]}}" />
<input type="hidden" name="attr_monster_section_accuracy_fixed" value="7" />
<span class="input" name="attr_monster_section_accuracy_fixed" />
<button type="roll" name="roll_monster_section_accuracy2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{damage=[Damage](~repeating_monstersections_monster_section_damage)}} {{name=@{character_name}}} {{skill=@{monster_section_name} Accuracy}} {{result=[[@{monster_section_accuracy_fixed}]]}}" />
</div>
<div class="grid col3 nogap damage">
<span class="input">2d</span>
<input type="number" name="attr_monster_section_damage" />
<button type="roll" name="roll_monster_section_damage"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~repeating_monstersections_monster_section_damage)}} {{name=@{character_name}}} {{skill=@{monster_section_name} Damage}} {{result=[[[[2d6]]+@{monster_section_damage}]]}} {{raw=$[[0]]}} {{simple=1}}" />
</div>
<div class="grid col4 nogap">
<input type="number" name="attr_monster_section_evasion" value="0" />
<button type="roll" name="roll_monster_section_evasion"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~repeating_monstersections_monster_section_evasion)}} {{name=@{character_name}}} {{skill=@{monster_section_name} Evasion}} {{result=[[[[2d6]]+@{monster_section_evasion}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_section_evasion}]]}}" />
<input type="hidden" name="attr_monster_section_evasion_fixed" value="7" />
<span class="input" name="attr_monster_section_evasion_fixed" />
<button type="roll" name="roll_monster_section_evasion2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=@{monster_section_name} Evasion}} {{result=[[@{monster_section_evasion_fixed}]]}}" />
</div>
<div><input type="number" name="attr_monster_section_defense" /></div>
<div class="grid col2 divide nogap">
<input type="number" name="attr_monster_section_hp_max" />
<input type="number" name="attr_monster_section_hp" />
</div>
<div class="grid col2 divide nogap">
<input type="number" name="attr_monster_section_mp_max" />
<input type="number" name="attr_monster_section_mp" />
</div>
</fieldset>
</div>
<div class="grid nogap">
<div class="grid col4-sections">
<label>Sections:</label>
<input type="text" spellcheck="false" name="attr_monster_sections" />
<label>Main Section:</label>
<input type="text" spellcheck="false" name="attr_monster_main_section" />
</div>
</div>
<div class="grid nogap">
<div class="grid nogap">
<div class="header">Unique Skills</div>
</div>
<fieldset class="repeating_monsterskills">
<input class="toggle-action" type="hidden" name="attr_monster_skill_action" value="always" />
<input class="toggle-preparation" type="hidden" name="attr_monster_skill_preparation" value="" />
<input class="toggle-declared" type="hidden" name="attr_monster_skill_declared" value="" />
<input class="toggle-template" type="hidden" name="attr_monster_skill_template" value="" />
<div class="flex">
<label class="dropdown">
<input type="checkbox" name="attr_monster_skill_dropdown" value="1" />
<span class="dropbtn flex nogap">
<span class="action-type" />
<span class="type-declared" />
<span class="type-preparation" />
</span>
<div class="dropdown-content grid col4">
<label>Action</label>
<select name="attr_monster_skill_action">
<option value="always">Always Active</option>
<option value="major">Major Action</option>
<option value="minor">Minor Action</option>
<option value="section">Section</option>
</select>
<span class="label">Preparation</span>
<label class="switch">
<input type="checkbox" name="attr_monster_skill_preparation" value="1" />
<span class="slider"></span>
</label>
<label>Template</label>
<select name="attr_monster_skill_template">
<option value=""></option>
<option value="magic">Magic System</option>
<option value="resistance">Resistance</option>
</select>
<span class="label">Declared</span>
<label class="switch">
<input type="checkbox" name="attr_monster_skill_declared" value="1" />
<span class="slider"></span>
</label>
</div>
</label>
<input type="text" spellcheck="false" name="attr_monster_skill_name" />
<div class="grid col4 nogap">
<input type="number" name="attr_monster_skill_value" value="0" />
<button class="check" type="roll" name="roll_monster_skill_value"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~repeating_monsterskills_monster_skill_value)}} {{name=@{character_name}}} {{skill=@{monster_skill_name}}} {{result=[[[[2d6]]+@{monster_skill_value}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_skill_value}]]}}" />
<button class="target" type="roll" name="roll_monster_skill_value2"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~repeating_monsterskills_monster_skill_value2)}} {{name=@{character_name}}} {{skill=@{monster_skill_name}}} {{skillverb=target}} {{result=[[[[2d6]]+@{monster_skill_value}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_skill_value}]]}}" />
<input type="hidden" name="attr_monster_skill_value_fixed" value="7" />
<span class="input" name="attr_monster_skill_value_fixed" />
<button class="check" type="roll" name="roll_monster_skill_value3"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=@{monster_skill_name}}} {{result=[[@{monster_skill_value_fixed}]]}}" />
<button class="target" type="roll" name="roll_monster_skill_value4"
value="&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=@{monster_skill_name}}} {{skillverb=target}} {{result=[[@{monster_skill_value_fixed}]]}}" />
</div>
</div>
<div class="auto-expand">
<span name="attr_monster_skill_description"></span>
<textarea spellcheck="false" name="attr_monster_skill_description"></textarea>
</div>
</fieldset>
</div>
<div class="grid nogap lined">
<div class="grid nogap">
<div class="header">Loot</div>
</div>
<fieldset class="repeating_monsterloot">
<div><input type="text" spellcheck="false" name="attr_monster_loot_roll" placeholder="1-2" /></div>
<div><input type="text" spellcheck="false" name="attr_monster_loot_name" /></div>
<div><button type="roll" name="roll_monster_loot_roll"
value="&{template:swinfo} @{roll_template_token} {{name=@{character_name}}} {{info=@{monster_loot_name}}}" /></div>
</fieldset>
</div>
<div class="grid">
<div class="auto-expand">
<span name="attr_monster_description"></span>
<textarea spellcheck="false" name="attr_monster_description" placeholder="Description"></textarea>
</div>
</div>
</div>
<div class="grid fellow">
<div class="grid col2-fellowtop">
<div class="grid">
<div class="grid col3-fellowname">
<div class="grid hex">
<span class="input acalc" name="attr_adventurer_level"></span>
<input class="mcalc" type="number" name="attr_fellow_level" placeholder="2" />
<label>Level</label>
</div>
<div class="grid">
<label>Name</label>
<input type="text" spellcheck="false" name="attr_character_name" />
<label>Player Name</label>
<input type="text" spellcheck="false" name="attr_player_name" />
</div>
<h1>Sword World 2.5</h1>
</div>
<div class="grid col3-race vcol">
<label>Race</label>
<input type="text" spellcheck="false" list="race" name="attr_race" />
<label>Age</label>
<input type="text" spellcheck="false" name="attr_age" />
<label>Gender</label>
<input type="text" spellcheck="false" name="attr_gender" />
</div>
<div class="grid">
<span class="label">Classes</span>
<span class="acalc" name="attr_classes"></span>
<div class="auto-expand mcalc">
<span name="attr_fellow_classes"></span>
<textarea spellcheck="false" name="attr_fellow_classes"></textarea>
</div>
</div>
<div class="grid">
<span class="label">Languages</span>
<div class="auto-expand">
<span name="attr_languages"></span>
<textarea spellcheck="false" name="attr_languages"></textarea>
</div>
</div>
<div class="grid">
<span class="label">Self Introduction</span>
<div class="auto-expand quote">
<span name="attr_intro"></span>
<textarea spellcheck="false" name="attr_intro"></textarea>
</div>
</div>
</div>
<div class="grid">
<div class="grid guild nogap">
<img name="attr_character_avatar" />
</div>
<div class="grid col2 nogap">
<div class="boxstat total">
<label>MP</label>
<input type="hidden" name="attr_mp_max" />
<span class="input lrg acalc" name="attr_mp_max" />
<input class="lrg mcalc" type="number" name="attr_fellow_mp_max" />
</div>
<div class="boxstat black">
<input class="lrg acalc" type="number" name="attr_mp" />
<input class="lrg mcalc" type="number" name="attr_fellow_mp" />
</div>
</div>
<div class="grid col3 fellowxp">
<span class="label">Experience</span>
<label class="flex"><input class="standard" type="radio" name="attr_fellow_xp" value="1" />
Yes</label>
<label class="flex"><input class="standard" type="radio" name="attr_fellow_xp" value="0" />
No</label>
<span class="label">Rewards</span>
<label class="flex"><input class="standard" type="radio" name="attr_fellow_rewards" value="1" />
Yes</label>
<label class="flex"><input class="standard" type="radio" name="attr_fellow_rewards" value="0" />
No</label>
</div>
</div>
</div>
<div class="grid nogap lined">
<div class="grid col6-fellowactions nogap">
<div class="grid col2 header">
<span>1d</span>
<button type="action" name="act_fellow_action" value="" />
</div>
<div class="header">Result</div>
<div class="header">Action</div>
<div class="header">Dialogue</div>
<div class="header">Value</div>
<div class="header">Effect</div>
<div class="vspan2">g h
<button type="action" name="act_fellow_action1-choice" value="" />
<button type="action" name="act_fellow_action2-choice" value="" />
</div>
<div>7</div>
<div class="auto-expand">
<span name="attr_fellow_action1_name"></span>
<textarea spellcheck="false" name="attr_fellow_action1_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action1_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action1_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action1_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action1_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action1_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action1_extra" />
<button type="action" name="act_fellow_action1-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action1_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action1_effect" placeholder="Effect"></textarea>
</div>
</div>
<div>6</div>
<div class="auto-expand">
<span name="attr_fellow_action2_name"></span>
<textarea spellcheck="false" name="attr_fellow_action2_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action2_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action2_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action2_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action2_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action2_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action2_extra" />
<button type="action" name="act_fellow_action2-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action2_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action2_effect" placeholder="Effect"></textarea>
</div>
</div>
<div class="vspan2">i j
<button type="action" name="act_fellow_action3-choice" value="" />
<button type="action" name="act_fellow_action4-choice" value="" />
</div>
<div>8</div>
<div class="auto-expand">
<span name="attr_fellow_action3_name"></span>
<textarea spellcheck="false" name="attr_fellow_action3_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action3_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action3_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action3_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action3_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action3_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action3_extra" />
<button type="action" name="act_fellow_action3-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action3_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action3_effect" placeholder="Effect"></textarea>
</div>
</div>
<div>5</div>
<div class="auto-expand">
<span name="attr_fellow_action4_name"></span>
<textarea spellcheck="false" name="attr_fellow_action4_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action4_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action4_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action4_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action4_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action4_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action4_extra" />
<button type="action" name="act_fellow_action4-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action4_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action4_effect" placeholder="Effect"></textarea>
</div>
</div>
<div class="vspan2">k
<button type="action" name="act_fellow_action5-choice" value="" />
<button type="action" name="act_fellow_action6-choice" value="" />
</div>
<div>9</div>
<div class="auto-expand">
<span name="attr_fellow_action5_name"></span>
<textarea spellcheck="false" name="attr_fellow_action5_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action5_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action5_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action5_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action5_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action5_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action5_extra" />
<button type="action" name="act_fellow_action5-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action5_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action5_effect" placeholder="Effect"></textarea>
</div>
</div>
<div>4</div>
<div class="auto-expand">
<span name="attr_fellow_action6_name"></span>
<textarea spellcheck="false" name="attr_fellow_action6_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action6_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action6_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action6_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action6_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action6_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action6_extra" />
<button type="action" name="act_fellow_action6-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action6_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action6_effect" placeholder="Effect"></textarea>
</div>
</div>
<div class="vspan2">l
<button type="action" name="act_fellow_action7-choice" value="" />
<button type="action" name="act_fellow_action8-choice" value="" />
</div>
<div>10</div>
<div class="auto-expand">
<span name="attr_fellow_action7_name"></span>
<textarea spellcheck="false" name="attr_fellow_action7_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action7_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action7_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action7_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action7_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action7_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action7_extra" />
<button type="action" name="act_fellow_action7-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action7_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action7_effect" placeholder="Effect"></textarea>
</div>
</div>
<div>3</div>
<div class="auto-expand">
<span name="attr_fellow_action8_name"></span>
<textarea spellcheck="false" name="attr_fellow_action8_name" placeholder="Action"></textarea>
</div>
<div class="auto-expand quote">
<span name="attr_fellow_action8_dialogue"></span>
<textarea spellcheck="false" name="attr_fellow_action8_dialogue" placeholder="Dialogue"></textarea>
</div>
<div>
<input type="number" name="attr_fellow_action8_value" />
</div>
<div class="grid nogap">
<div class="grid col7-felloweffect nogap">
<label>Power</label>
<input type="number" name="attr_fellow_action8_power" />
<label>Crit Value</label>
<input type="number" name="attr_fellow_action8_crit" />
<label>+</label>
<input type="number" name="attr_fellow_action8_extra" />
<button type="action" name="act_fellow_action8-action" value="" />
</div>
<div class="auto-expand">
<span name="attr_fellow_action8_effect"></span>
<textarea spellcheck="false" name="attr_fellow_action8_effect" placeholder="Effect"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="grid col4 settings">
<h2 class="span4">Settings</h2>
<label>Type</label>
<select name="attr_monster">
<option value="0">Character</option>
<option value="1">Monster</option>
<option value="2">Fellow</option>
</select>
<div class="label monster0 slot1">Show 2.0 Mystic Class</div>
<label class="switch monster0">
<input type="checkbox" name="attr_sw20" value="1" />
<span class="slider"></span>
</label>
<div class="label monster0 slot1">Show 2.0 <em>Age of Grimoire</em> Classes</div>
<label class="switch monster0">
<input type="checkbox" name="attr_aog" class="attr_aog" value="1" />
<span class="slider"></span>
</label>
<div class="label monster0 slot1">Show Work Skills</div>
<label class="switch monster0">
<input type="checkbox" name="attr_workskills" value="1" />
<span class="slider"></span>
</label>
<div class="label monster2 slot1">Expanded</div>
<label class="switch monster2">
<input type="checkbox" name="attr_fellow_expanded" value="1" />
<span class="slider"></span>
</label>
<div class="label monster2 slot1">Auto Calculate from Character</div>
<label class="switch monster2">
<input type="checkbox" name="attr_fellow_autocalc" value="1" />
<span class="slider"></span>
</label>
<div class="slot1 span2 footnote monster2">This includes level, classes, and MP.</div>
</div>
<script type="text/worker">
const storage = {
initiative: "&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~initiative)}} {{name=@{character_name}}} {{skill=Initiative}} {{class=@{initiative_class}}} {{level=@{initiative_class_level}}} {{ability=Agility}} {{modifier=@{agility_modifier}}} {{result=[[[[2d6]]+@{initiative} &{tracker}]]}} {{raw=$[[0]]}}",
fortitude: "&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~fortitude)}} {{name=@{character_name}}} {{skill=Fortitude}} {{result=[[[[2d6]]+@{fortitude}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{fortitude}]]}}",
willpower: "&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~willpower)}} {{name=@{character_name}}} {{skill=Willpower}} {{result=[[[[2d6]]+@{willpower}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{willpower}]]}}",
monster_initiative: "&{template:swskill} @{roll_template_token} {{monster=1}} {{name=@{character_name}}} {{skill=Initiative}} {{result=[[@{monster_initiative} &{tracker}]]}}",
monster_fortitude: "&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~monster_fortitude)}} {{name=@{character_name}}} {{skill=Fortitude}} {{result=[[[[2d6]]+@{monster_fortitude}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_fortitude}]]}}",
monster_willpower: "&{template:swskill} @{roll_template_token} {{monster=1}} {{reroll=[Reroll](~monster_willpower)}} {{name=@{character_name}}} {{skill=Willpower}} {{result=[[[[2d6]]+@{monster_willpower}]]}} {{raw=$[[0]]}} {{result2=[[[[12+5]]+@{monster_willpower}]]}}"
};
const tab_list = ["page1","page2","monster","fellow","settings"];
const base_list = ["skill","body","mind"];
const ability_data = {
"dexterity": "Dexterity",
"agility": "Agility",
"strength": "Strength",
"vitality": "Vitality",
"intelligence": "Intelligence",
"spirit": "Spirit"
};
const ability_list = Object.keys(ability_data);
const ability_modifier_list = ability_list.map(i => i + "_modifier");
const correction_list = "abcdef".split("");
const growth_list = "123456".split("");
const modifier_list = ability_list.map(i => i + "_mod")
.concat(["hp_mod","mp_mod","fortitude_mod","willpower_mod"]);
const total_list = base_list
.concat(ability_list.map(i => i + "_mod"))
.concat(correction_list.map(i => "ability_" + i))
.concat(growth_list.map(i => "growth_" + i))
.concat(["movement_enhancements_modifier"]);
// class data
const class_data = {
"fighter": "Fighter",
"grappler": "Grappler",
"bdancer": "Battle Dancer",
"fencer": "Fencer",
"marksman": "Marksman",
"sorcerer": "Sorcerer",
"conjurer": "Conjurer",
"priest": "Priest",
"artificer": "Artificer",
"fairy_tamer": "Fairy Tamer",
"druid": "Druid",
"warlock": "Warlock",
"gazer": "Abyss Gazer",
"arcanist": "Arcanist",
"scout": "Scout",
"ranger": "Ranger",
"sage": "Sage",
"enhancer": "Enhancer",
"bard": "Bard",
"rider": "Rider",
"alchemist": "Alchemist",
"geomancer": "Geomancer",
"tactician": "Tactician",
"dhunter": "Dark Hunter",
"mystic": "Mystic",
"Runesmith": "runesmith",
"Aristocrat": "aristocrat"
};
const class_list = Object.keys(class_data);
const magic_power_data = {
"sorcerer": {
"ability": "intelligence",
"wizard": true
},
"conjurer": {
"ability": "intelligence",
"wizard": true
},
"priest": {
"ability": "intelligence",
"wizard": true
},
"artificer": {
"ability": "intelligence",
"wizard": true
},
"fairy_tamer": {
"ability": "intelligence",
"wizard": true
},
"druid": {
"ability": "intelligence",
"wizard": true
},
"warlock": {
"ability": "intelligence",
"wizard": true
},
"gazer": {
"ability": "intelligence",
"wizard": true
},
"arcanist": {
"ability": "intelligence",
"wizard": true
},
"alchemist": {
"ability": "intelligence",
"wizard": false
},
"dhunter": {
"ability": "spirit",
"wizard": false
},
"bard": {
"ability": "spirit",
"wizard": false
}
};
const class_level_list = class_list.map(i => i + "_level")
const class_power_list = class_list.map(i => i + "_power_mod");
const package_data = {
"technique": {
"classes": ["scout","ranger"],
"ability": "dexterity",
"zero": false
},
"movement": {
"classes": ["scout","ranger","rider"],
"ability": "agility",
"zero": false
},
"observation": {
"classes": ["scout","ranger","rider","geomancer"],
"ability": "intelligence",
"zero": false
},
"knowledge": {
"classes": ["sage","alchemist"],
"ability": "intelligence",
"zero": false
},
"monster_knowledge": {
"classes": ["sage","rider","dhunter"],
"ability": "intelligence",
"zero": false
},
"initiative": {
"classes": ["scout","tactician"],
"ability": "agility",
"zero": false
},
"base_accuracy": {
"classes": ["fighter","grappler","bdancer","fencer","marksman"],
"ability": "dexterity",
"zero": false
},
"extra_damage": {
"classes": ["fighter","grappler","bdancer","fencer","marksman"],
"ability": "strength",
"zero": false
},
"base_evasion": {
"classes": ["fighter","grappler","bdancer","fencer"],
"ability": "agility",
"zero": false
}
};
const package_list = Object.keys(package_data);
tab_list.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({"tab": button});
});
});
on("sheet:opened change:character_token", function(eventInfo) {
let update = {
roll_template_token: "",
display_token: 0,
storage_initiative: storage["initiative"],
storage_fortitude: storage["fortitude"],
storage_willpower: storage["willpower"],
storage_monster_initiative: storage["monster_initiative"],
storage_monster_fortitude: storage["monster_fortitude"],
storage_monster_willpower: storage["monster_willpower"]
};
getAttrs(["character_token"], function(values) {
let character_token = values.character_token;
if (character_token.length > 0 &&
character_token.substring(character_token.length - 4, character_token.length - 3) !== '.') {
character_token += ".png";
let roll_template_token = `{{token=[x](${character_token})}}`;
update["roll_template_token"] = roll_template_token;
update["display_token"] = 1;
}
setAttrs(update);
});
triggerAbility(eventInfo);
});
total_list.forEach(trigger => {
on(`change:${trigger}`, function(eventInfo) {
triggerAbility(eventInfo);
});
});
const triggerAbility = function(eventInfo) {
getAttrs(total_list, function(values) {
let update = {};
let counter = 0;
let move_mod = parseInt(values["movement_enhancements_modifier"])||0;
base_list.forEach(base => {
let base_value = parseInt(values[`${base}`])||0;
for (let i = 0; i < 2; i++) {
let correction = correction_list[counter];
let correction_value = parseInt(values[`ability_${correction}`])||0;
let growth = counter + 1;
let growth_value = parseInt(values[`growth_${growth}`])||0;
let ability = ability_list[counter];
let mod = parseInt(values[`${ability}_mod`])||0;
let rawscore = base_value + correction_value + growth_value;
let score = rawscore + mod;
let modifier = Math.floor(score / 6);
update[`${ability}`] = score;
update[`${ability}_raw`] = rawscore;
update[`${ability}_modifier`] = modifier;
if (ability == "agility") {
update["normal_move"] = score + move_mod;
update["full_move"] = (score + move_mod) * 3;
}
counter++;
}
});
setAttrs(update);
});
};
ability_list.concat(class_level_list).concat(class_power_list).concat(modifier_list).forEach(trigger => {
on(`change:${trigger} change:race change:fellow_autocalc`, function() {
getAttrs(class_level_list.concat(class_power_list).concat(ability_list).concat(ability_modifier_list).concat(modifier_list).concat(["race"]), function(values) {
let update = {};
let classes = [];
let level = 0;
let wizard_level = 0;
let hp = parseInt(values["vitality"])||0;
let hp_mod = parseInt(values["hp_mod"])||0;
let mp = parseInt(values["spirit"])||0;
let mp_mod = parseInt(values["mp_mod"])||0;
let dexterity = parseInt(values["dexterity_modifier"])||0;
let strength = parseInt(values["strength_modifier"])||0;
let intelligence = parseInt(values["intelligence_modifier"])||0;
let spirit = parseInt(values["spirit_modifier"])||0;
let fortitude = parseInt(values["vitality_modifier"])||0;
let fort_mod = parseInt(values["fortitude_mod"])||0;
let willpower = parseInt(values["spirit_modifier"])||0;
let wp_mod = parseInt(values["willpower_mod"])||0;
let race = values["race"];
class_level_list.forEach(v => {
let class_level = parseInt(values[`${v}`])||0;
let class_name = v.replace("_level", "");
if (class_level > 0) {
classes.push(`${class_data[class_name]} ${class_level}`);
}
level = class_level > level ? class_level : level;
if (magic_power_data[class_name] && magic_power_data[class_name]["wizard"]) {
wizard_level += class_level;
}
});
update["classes"] = classes.join(', ');
update["adventurer_level"] = level;
update["hp_max"] = level * 3 + hp + hp_mod;
update["mp_max"] = race.toLowerCase() == "grassrunner" ? "None" : wizard_level * 3 + mp + mp_mod;
update["fortitude"] = level + fortitude + fort_mod;
update["willpower"] = level + willpower + wp_mod;
package_list.forEach(package => {
let package_level = 0;
let package_class = "";
let ability = package_data[package]["ability"];
let package_ability = values[`${ability}_modifier`];
let zero = package_data[package]["zero"];
package_data[package]["classes"].forEach(v => {
let class_level = parseInt(values[`${v}_level`])||0;
if (class_level > package_level) {
package_level = class_level;
package_class = class_data[v];
}
});
if (package_level > 0) {
update[`${package}_class`] = package_class;
update[`${package}_class_level`] = package_level;
package_level += package_ability;
update[`${package}`] = package_level;
} else {
if (zero) {
update[`${package}`] = 0;
} else {
update[`${package}`] = "";
}
update[`${package}_class`] = "";
update[`${package}_class_level`] = "";
}
});
class_list.forEach(v => {
if (v in magic_power_data) {
let class_level = parseInt(values[`${v}_level`])||0;
let class_mod = parseInt(values[`${v}_power_mod`])||0;
if (class_level > 0) {
let ability = magic_power_data[v]["ability"];
let ability_modifier = values[`${ability}_modifier`];
update[`${v}_power`] = class_level + ability_modifier + class_mod;
} else {
update[`${v}_power`] = "";
}
}
});
setAttrs(update);
getSectionIDs("repeating_weapons", function(idarray) {
for (var i=0; i < idarray.length; i++) {
let id = idarray[i];;
getAttrs([`repeating_weapons_${id}_weapon_class`,`repeating_weapons_${id}_weapon_accuracy`,`repeating_weapons_${id}_weapon_extra_damage`], function(values2) {
let strength = parseInt(values["strength_modifier"])||0;
let intelligence = parseInt(values["intelligence_modifier"])||0;
let spirit = parseInt(values["spirit_modifier"])||0;
let update2 = {};
let w_class = values2[`repeating_weapons_${id}_weapon_class`];
let w_acc_level = ["gun","crossbow"].includes(w_class) ? parseInt(values["marksman_level"])||0 :
parseInt(values[`${w_class}_level`])||0;
let w_dmg_level = w_class == "gun" ? parseInt(values["artificer_level"])||0 :
w_class == "crossbow" ? parseInt(values["marksman_level"])||0 :
w_class == "dhunter" ? parseInt(values["dhunter_level"])||0 :
parseInt(values[`${w_class}_level`])||0;
let w_accuracy = parseInt(values2[`repeating_weapons_${id}_weapon_accuracy`])||0;
let w_damage = parseInt(values2[`repeating_weapons_${id}_weapon_extra_damage`])||0;
w_accuracy += w_class == "dhunter" ? w_acc_level + spirit : w_acc_level + dexterity;
// w_accuracy += w_acc_level + dexterity;
w_damage += w_class == "gun" && w_dmg_level > 0 ? intelligence + w_dmg_level :
w_class == "crossbow" && w_dmg_level > 0 ? w_dmg_level :
w_class == "dhunter" && w_dmg_level > 0 ? spirit + w_dmg_level :
w_dmg_level > 0 ? strength + w_dmg_level : 0;
update2[`repeating_weapons_${id}_weapon_total_accuracy`] = w_accuracy;
update2[`repeating_weapons_${id}_weapon_total_extra_damage`] = w_damage;
setAttrs(update2, {silent:true});
});
}
});
});
});
});
on("change:repeating_weapons", function(eventInfo) {
getAttrs(["repeating_weapons_weapon_class","repeating_weapons_weapon_accuracy",
"repeating_weapons_weapon_extra_damage","fighter_level","grappler_level",
"fencer_level","marksman_level","bdancer_level","artificer_level",
"dhunter_level","strength_modifier","dexterity_modifier","spirit_modifier",
"intelligence_modifier"], function(values) {
let update = {};
let dexterity = parseInt(values["dexterity_modifier"])||0;
let strength = parseInt(values["strength_modifier"])||0;
let intelligence = parseInt(values["intelligence_modifier"])||0;
let spirit = parseInt(values["spirit_modifier"])||0;
let w_class = values["repeating_weapons_weapon_class"];
let w_acc_level = ["gun","crossbow"].includes(w_class) ? parseInt(values["marksman_level"])||0 :
parseInt(values[`${w_class}_level`])||0;
let w_dmg_level = w_class == "gun" ? parseInt(values["artificer_level"])||0 :
w_class == "crossbow" ? parseInt(values["marksman_level"])||0 :
parseInt(values[`${w_class}_level`])||0;
let w_accuracy = parseInt(values["repeating_weapons_weapon_accuracy"])||0;
let w_damage = parseInt(values["repeating_weapons_weapon_extra_damage"])||0;
w_accuracy += w_acc_level > 0 ?
w_class == "dhunter" ? w_acc_level + spirit :
w_acc_level + dexterity : 0;
w_damage += w_class == "gun" && w_dmg_level > 0 ? intelligence + w_dmg_level :
w_class == "crossbow" && w_dmg_level > 0 ? w_dmg_level :
w_class == "dhunter" && w_dmg_level > 0 ? spirit + w_dmg_level :
w_dmg_level > 0 ? strength + w_dmg_level : 0;
update["repeating_weapons_weapon_total_accuracy"] = w_accuracy;
update["repeating_weapons_weapon_total_extra_damage"] = w_damage;
setAttrs(update);
});
});
const powert_list = ["weapons","powertable"];
const getPowerValue = function(p, v) {
switch (v) {
case 3:
return (p>9)+(p>22)+(p>31)+(p>38)+(p>50)+(p>73)+(p>85)+(p>92);
case 4:
return (p>4)+(p>10)+(p>23)+(p>29)+(p>35)+(p>40)+(p>50)+(p>55)+(p>58)+
(p>85)+(p>90)+(p>96);
case 5:
return (p>2)+(p>7)+(p>12)+(p>23)+(p>30)+(p>36)+(p>41)+(p>49)+(p>52)+
(p>54)+(p>82)+(p>86)+(p>90)+(p>94)+(p>97);
case 6:
return 1+(p>3)+(p>8)+(p>13)+(p>21)+(p>26)+(p>34)+(p>42)+(p>44)+(p>48)+
(p>56)+(p>64)+(p>70)+(p>81)+(p>88)+(p>93)+(p>98)+(p>99);
case 7:
return 2+(p>5)+(p>11)+(p>16)+(p>20)+(p>28)+(p>32)+(p>39)+(p>43)+
(p>51)+(p>57)+(p>61)+(p>67)+(p>71)+(p>74)+(p>80)+(p>87)+(p>95);
case 8:
return 2+(p>0)+(p>6)+(p>14)+(p>17)+(p>22)+(p>25)+(p>33)+(p>37)+(p>46)+
(p>47)+(p>59)+(p>63)+(p>65)+(p>68)+(p>75)+(p>78)+(p>83)+(p>91);
case 9:
return 3+(p>1)+(p>9)+(p>15)+(p>18)+(p>24)+(p>27)+(p>31)+(p>38)+(p>45)+
(p>53)+(p>58)+(p>62)+(p>66)+(p>69)+(p>73)+(p>77)+(p>79)+(p>84)+
(p>92);
case 10:
return 3+(p>1)+(p>4)+(p>10)+(p>15)+(p>19)+(p>25)+(p>29)+(p>35)+(p>40)+
(p>45)+(p>52)+(p>55)+(p>60)+(p>62)+(p>69)+(p>72)+(p>76)+(p>79)+
(p>84)+(p>89)+(p>96);
case 11:
return 4+(p>3)+(p>7)+(p>12)+(p>18)+(p>19)+(p>27)+(p>33)+(p>36)+(p>41)+
(p>48)+(p>49)+(p>54)+(p>60)+(p>64)+(p>66)+(p>72)+(p>76)+(p>77)+
(p>82)+(p>86)+(p>89)+(p>94)+(p>97);
case 12:
return 4+(p>2)+(p>6)+(p>8)+(p>13)+(p>18)+(p>19)+(p>30)+(p>34)+(p>37)+
(p>42)+(p>46)+(p>53)+(p>56)+(p>59)+(p>65)+(p>70)+(p>72)+(p>76)+
(p>77)+(p>81)+(p>85)+(p>88)+(p>91)+(p>93)+(p>98)+(p>99);
}
return 0;
};
powert_list.forEach(trigger => {
on(`change:repeating_${trigger}:weapon_power`, function(eventInfo) {
getAttrs([`repeating_${trigger}_weapon_power`], function(values) {
let update = {};
let p = parseInt(values[`repeating_${trigger}_weapon_power`])||0;
update[`repeating_${trigger}_weapon_power_3`] = getPowerValue(p, 3);
update[`repeating_${trigger}_weapon_power_4`] = getPowerValue(p, 4);
update[`repeating_${trigger}_weapon_power_5`] = getPowerValue(p, 5);
update[`repeating_${trigger}_weapon_power_6`] = getPowerValue(p, 6);
update[`repeating_${trigger}_weapon_power_7`] = getPowerValue(p, 7);
update[`repeating_${trigger}_weapon_power_8`] = getPowerValue(p, 8);
update[`repeating_${trigger}_weapon_power_9`] = getPowerValue(p, 9);
update[`repeating_${trigger}_weapon_power_10`] = getPowerValue(p, 10);
update[`repeating_${trigger}_weapon_power_11`] = getPowerValue(p, 11);
update[`repeating_${trigger}_weapon_power_12`] = getPowerValue(p, 12);
setAttrs(update);
});
});
});
on("change:repeating_armor:armor_other_evasion", function() {
repeatingSum("other_evasion", "armor", "armor_other_evasion");
});
on("change:base_evasion change:armor_evasion change:shield_evasion change:other_evasion", function() {
getAttrs(["base_evasion","armor_evasion","shield_evasion","other_evasion"], function(values) {
let update = {};
let base_evasion = parseInt(values["base_evasion"])||0;
let armor_evasion = parseInt(values["armor_evasion"])||0;
let shield_evasion = parseInt(values["shield_evasion"])||0;
let other_evasion = parseInt(values["other_evasion"])||0;
update["total_evasion"] = base_evasion + armor_evasion + shield_evasion + other_evasion;
setAttrs(update);
});
});
on("change:repeating_armor:armor_other_defense", function() {
repeatingSum("other_defense", "armor", "armor_other_defense");
});
on("change:armor_defense change:shield_defense change:other_defense", function() {
getAttrs(["armor_defense","shield_defense","other_defense"], function(values) {
let update = {};
let armor_defense = parseInt(values["armor_defense"])||0;
let shield_defense = parseInt(values["shield_defense"])||0;
let other_defense = parseInt(values["other_defense"])||0;
update["total_defense"] = armor_defense + shield_defense + other_defense;
setAttrs(update);
});
});
on("clicked:roll-action", function(eventInfo) {
getAttrs(["monster"], function(values) {
let monster_type = parseInt(values["monster"])||0;
let roll = "?{Action|Initiative,0[initiative]|Fortitude,1[fortitude]|Willpower,2[willpower]}";
if (monster_type == 1) { // monster
roll = "?{Action|Initiative,0[monster_initiative]|Fortitude,1[monster_fortitude]|Willpower,2[monster_willpower]}";
} else if (monster_type == 2) { // fellow
roll = "0";
}
startRoll(`&{template:swempty} {{rolltype=[[${roll}]]}} {{raw=[[2d6]]}}`, (results) => {
finishRoll(results.rollId, {});
if (monster_type == 2) { // fellow
triggerFellow(eventInfo);
} else {
let rolltype = results.results.rolltype.expression.slice(2, -1);
let final_roll = storage[rolltype];
startRoll(final_roll, (results2) => {
finishRoll(results2.rollId, {});
});
}
});
});
});
on("clicked:class-action clicked:repeating_workskills:workskill-action", function(eventInfo) {
const source = eventInfo["sourceAttribute"] ? eventInfo["sourceAttribute"] : "";
const rowid = source ? source.split('_')[2] : "";
getAttrs(class_level_list.concat(ability_modifier_list), function(values) {
let reroll = source ? source : "roll";
let class_roll = rowid ? `@{repeating_workskills_${rowid}_workskill_level}[@{repeating_workskills_${rowid}_workskill_name}]` :
"?{Class";
let class_level = rowid ? class_roll : "?{Class}";
if (!rowid) {
class_list.forEach(c => {
let c_name = class_data[c];
let c_level = parseInt(values[`${c}_level`])||0;
class_roll += `|${c_name},${c_level}[${c}]`;
});
class_roll += "}";
}
let ability_roll = "?{Ability";
ability_list.forEach(a => {
let a_name = ability_data[a];
let a_mod = parseInt(values[`${a}_modifier`])||0;
ability_roll += `|${a_name},${a_mod}[${a}]`;
});
ability_roll += "}";
startRoll(`&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~${reroll})}} {{name=@{character_name}}} {{class=${class_roll}}} {{level=[[${class_level}]]}} {{ability=${ability_roll}}} {{modifier=[[?{Ability}]]}} {{result=[[[[2d6]]+${class_roll}+?{Ability}]]}} {{raw=$[[2]]}} {{result2=[[[[12+5]]+${class_roll}+?{Ability}]]}}`, (results) => {
const raw = results.results.raw.result;
const level = results.results.level.result;
const mod = results.results.modifier.result;
let c_name = results.results.level.expression.slice(2, -1);
c_name = rowid ? c_name : class_data[c_name];
let a_name = results.results.modifier.expression.slice(2, -1);
a_name = ability_data[a_name];
let computed = raw;
let computed2 = 17;
if (level > 0 ) {
computed += level + mod;
computed2 += level + mod;
}
finishRoll(
results.rollId,
{
"result": computed,
"result2": computed2,
"level": c_name,
"modifier": a_name
}
);
});
});
});
const powerb_list = [0,5,10,15,20,25,30,35,40,45,50].map(i => `power${i}`);
powerb_list.forEach(trigger => {
on(`clicked:${trigger}-action`, function(eventInfo) {
let key = parseInt(trigger.replace("power", ""))||0;
let name = `Power Level ${key}`;
let power = key;
let power3 = getPowerValue(power, 3);
let power4 = getPowerValue(power, 4);
let power5 = getPowerValue(power, 5);
let power6 = getPowerValue(power, 6);
let power7 = getPowerValue(power, 7);
let power8 = getPowerValue(power, 8);
let power9 = getPowerValue(power, 9);
let power10 = getPowerValue(power, 10);
let power11 = getPowerValue(power, 11);
let power12 = getPowerValue(power, 12);
startRoll(`&{template:swdamage} @{roll_template_token} {{reroll=[Reroll](~${trigger})}} {{name=@{character_name}}} {{skill=${name}}} {{power=${power}}} {{extra=[[?{Extra Damage|0}]]}} {{crit=[[?{Crit Value|10}]]}} {{power3=${power3}}} {{power4=${power4}}} {{power5=${power5}}} {{power6=${power6}}} {{power7=${power7}}} {{power8=${power8}}} {{power9=${power9}}} {{power10=${power10}}} {{power11=${power11}}} {{power12=${power12}}} {{result=[[2d6]]}}`, (results) => {
const roll = results.results.result.result;
const extra_r = results.results.extra.result;
const crit_r = results.results.crit.result;
let computed = getPowerValue(power, roll);
if (roll != 2 && (roll < crit_r || crit_r < 3)) {
computed += extra_r;
}
finishRoll(
results.rollId,
{
result: computed
}
);
});
});
});
const fellowa_list = [1,2,3,4,5,6,7,8].map(i => `fellow_action${i}`);
fellowa_list.forEach(trigger => {
on(`clicked:${trigger}-action`, function(eventInfo) {
getAttrs([`${trigger}_name`,`${trigger}_power`,`${trigger}_extra`,
`${trigger}_crit`], function(values) {
let name = values[`${trigger}_name`];
let power = parseInt(values[`${trigger}_power`])||0;
let extra = parseInt(values[`${trigger}_extra`])||0;
let crit = parseInt(values[`${trigger}_crit`])||0;
let power3 = getPowerValue(power, 3);
let power4 = getPowerValue(power, 4);
let power5 = getPowerValue(power, 5);
let power6 = getPowerValue(power, 6);
let power7 = getPowerValue(power, 7);
let power8 = getPowerValue(power, 8);
let power9 = getPowerValue(power, 9);
let power10 = getPowerValue(power, 10);
let power11 = getPowerValue(power, 11);
let power12 = getPowerValue(power, 12);
startRoll(`&{template:swdamage} @{roll_template_token} {{reroll=[Reroll](~${trigger}-action)}} {{name=@{character_name}}} {{skill=${name}}} {{power=${power}}} {{extra=[[${extra}]]}} {{crit=[[${crit}]]}} {{power3=${power3}}} {{power4=${power4}}} {{power5=${power5}}} {{power6=${power6}}} {{power7=${power7}}} {{power8=${power8}}} {{power9=${power9}}} {{power10=${power10}}} {{power11=${power11}}} {{power12=${power12}}} {{result=[[2d6]]}}`, (results) => {
const roll = results.results.result.result;
const extra_r = results.results.extra.result;
const crit_r = results.results.crit.result;
let computed = getPowerValue(power, roll);
if (roll != 2 && (roll < crit_r || crit_r < 3)) {
computed += extra_r;
}
finishRoll(
results.rollId,
{
result: computed
}
);
});
});
});
});
powert_list.forEach(trigger => {
on(`clicked:repeating_${trigger}:damage-action`, function(eventInfo) {
getAttrs([`repeating_${trigger}_weapon_power`,`repeating_${trigger}_weapon_power_3`,
`repeating_${trigger}_weapon_power_4`,`repeating_${trigger}_weapon_power_5`,
`repeating_${trigger}_weapon_power_6`,`repeating_${trigger}_weapon_power_7`,
`repeating_${trigger}_weapon_power_8`,`repeating_${trigger}_weapon_power_9`,
`repeating_${trigger}_weapon_power_10`,`repeating_${trigger}_weapon_power_11`,
`repeating_${trigger}_weapon_power_12`,`repeating_${trigger}_weapon_name`,
`repeating_${trigger}_weapon_total_extra_damage`,
`repeating_${trigger}_weapon_crit_value`], function(values) {
let key = eventInfo[`sourceAttribute`];
key = key.replace(`repeating_${trigger}_`,``).replace(`_damage-action`,``);
let name = values[`repeating_${trigger}_weapon_name`];
let power = values[`repeating_${trigger}_weapon_power`];
if (name == "Power Level") {
name += ` ${power}`;
}
let extra = values[`repeating_${trigger}_weapon_total_extra_damage`];
let crit = values[`repeating_${trigger}_weapon_crit_value`];
let power3 = values[`repeating_${trigger}_weapon_power_3`];
let power4 = values[`repeating_${trigger}_weapon_power_4`];
let power5 = values[`repeating_${trigger}_weapon_power_5`];
let power6 = values[`repeating_${trigger}_weapon_power_6`];
let power7 = values[`repeating_${trigger}_weapon_power_7`];
let power8 = values[`repeating_${trigger}_weapon_power_8`];
let power9 = values[`repeating_${trigger}_weapon_power_9`];
let power10 = values[`repeating_${trigger}_weapon_power_10`];
let power11 = values[`repeating_${trigger}_weapon_power_11`];
let power12 = values[`repeating_${trigger}_weapon_power_12`];
startRoll(`&{template:swdamage} @{roll_template_token} {{reroll=[Reroll](~repeating_${trigger}_${key}_damage)}} {{name=@{character_name}}} {{skill=${name}}} {{power=${power}}} {{extra=[[0+${extra}]]}} {{crit=[[0+${crit}]]}} {{power3=${power3}}} {{power4=${power4}}} {{power5=${power5}}} {{power6=${power6}}} {{power7=${power7}}} {{power8=${power8}}} {{power9=${power9}}} {{power10=${power10}}} {{power11=${power11}}} {{power12=${power12}}} {{result=[[2d6]]}}`, (results) => {
const roll = results.results.result.result;
const extra_r = results.results.extra.result;
const crit_r = results.results.crit.result;
let computed = parseInt(values[`repeating_${trigger}_weapon_power_${roll}`])||0;
if (roll != 2 && (roll < crit_r || crit_r < 3)) {
computed += extra_r;
}
finishRoll(
results.rollId,
{
result: computed
}
);
});
});
});
});
const action_list = ["name","dialogue","value","effect","power"];
let all_action_list = ["fellow_expanded"];
let fellow_triggers = "clicked:fellow_action";
[1,2,3,4,5,6,7,8].forEach(n => {
all_action_list = all_action_list.concat(action_list.map(i => `fellow_action${n}_${i}`));
fellow_triggers += ` clicked:fellow_action${n}-choice`;
});
const action_map = {
1: 1,
2: 1,
3: 3,
4: 3,
5: 5,
6: 7
};
on(fellow_triggers, function(eventInfo) {
triggerFellow(eventInfo);
});
const triggerFellow = function(eventInfo) {
let trigger = eventInfo["triggerName"];
let choice = 0;
if (trigger && trigger.indexOf("choice") > 0) {
choice = trigger.replace("clicked:fellow_action", "").replace("-choice", "");
choice = parseInt(choice)||0;
}
getAttrs(all_action_list, function(values) {
let expanded = parseInt(values["fellow_expanded"])||0;
let roll = choice > 0 ?
`&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~fellow_action)}} {{damage1=[Damage](~fellow_action1-action)}} {{damage2=[Damage](~fellow_action2-action)}} {{damage3=[Damage](~fellow_action3-action)}} {{damage4=[Damage](~fellow_action4-action)}} {{damage5=[Damage](~fellow_action5-action)}} {{damage6=[Damage](~fellow_action6-action)}} {{damage7=[Damage](~fellow_action7-action)}} {{damage8=[Damage](~fellow_action8-action)}} {{fellow=[[${choice}]]}} {{simple=1}} {{name=@{character_name}}} {{skill=[[1d0]]}} {{quote=[[1d0]]}} {{effect=[[1d0]]}} {{power=[[1d0]]}} {{result=[[1d0]]}}` :
expanded ?
`&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~fellow_action)}} {{choice1=[${cleaner(values.fellow_action1_name)}](~fellow_action1-choice)}} {{choice2=[${cleaner(values.fellow_action2_name)}](~fellow_action2-choice)}} {{choice3=[${cleaner(values.fellow_action3_name)}](~fellow_action3-choice)}} {{choice4=[${cleaner(values.fellow_action4_name)}](~fellow_action4-choice)}} {{choice5=[${cleaner(values.fellow_action5_name)}](~fellow_action5-choice)}} {{choice6=[${cleaner(values.fellow_action6_name)}](~fellow_action6-choice)}} {{choice7=[${cleaner(values.fellow_action7_name)}](~fellow_action7-choice)}} {{choice8=[${cleaner(values.fellow_action8_name)}](~fellow_action8-choice)}} {{fellow=[[0]]}} {{simple=1}} {{choice=1}} {{name=@{character_name}}} {{skill=[[1d0]]}} {{quote=[[1d0]]}} {{effect=[[1d0]]}} {{power=[[1d0]]}} {{result=[[1d6]]}}` :
`&{template:swskill} @{roll_template_token} {{reroll=[Reroll](~fellow_action)}} {{damage1=[Damage](~fellow_action1-action)}} {{damage2=[Damage](~fellow_action2-action)}} {{damage3=[Damage](~fellow_action3-action)}} {{damage4=[Damage](~fellow_action4-action)}} {{damage5=[Damage](~fellow_action5-action)}} {{damage6=[Damage](~fellow_action6-action)}} {{damage7=[Damage](~fellow_action7-action)}} {{damage8=[Damage](~fellow_action8-action)}} {{fellow=1}} {{simple=1}} {{name=@{character_name}}} {{skill=[[1d0]]}} {{quote=[[1d0]]}} {{effect=[[1d0]]}} {{power=[[1d0]]}} {{result=[[1d6]]}}`;
startRoll(roll, (results) => {
let raw = results.results.result.result;
let mapped = choice > 0 ? choice : action_map[raw];
let computed = parseInt(values[`fellow_action${mapped}_value`])||0;
let skill = values[`fellow_action${mapped}_name`];
let quote = values[`fellow_action${mapped}_dialogue`];
let effect = values[`fellow_action${mapped}_effect`];
let power = parseInt(values[`fellow_action${mapped}_power`])||-1;
finishRoll(
results.rollId,
{
"result": computed,
"skill": skill,
"quote": quote,
"effect": effect,
"power": power
}
);
});
});
};
const fixed_data = {
"global": ["monster_fortitude","monster_willpower",
"monster_main_accuracy","monster_main_evasion"],
"repeating_monstersections": ["monster_section_accuracy","monster_section_evasion"],
"repeating_monsterskills": ["monster_skill_value"]
};
Object.keys(fixed_data).forEach(repeater => {
let repeater1 = repeater != "global" ? `${repeater}:` : "";
let repeater2 = repeater != "global" ? `${repeater}_` : "";
let fixed_list = fixed_data[repeater];
fixed_list.forEach(trigger => {
on(`change:${repeater1}${trigger}`, function(eventInfo) {
let value = parseInt(eventInfo["newValue"])||0;
let update = {};
update[`${repeater2}${trigger}_fixed`] = value + 7;
setAttrs(update);
});
});
});
/*
Repeating Section Update - Custom Roll Parsing
A function to combine getting repeating and non repeating attributes.
*/
const getAllAttrs = function(props, section_details, callback) {
getSections(section_details, (repeats, sections) => {
getAttrs([...props, ...repeats], (attributes) => {
callback(attributes, sections);
})
});
};
// Iterates over the provided repeating sections and assembles an array
// of attributes to get from those sections for each row.
const getSections = function(section_details, callback){
let queue_clone = _.clone(section_details);
const worker = (queue, repeat_attrs=[], sections={}) => {
let detail = queue.shift();
getSectionIDs(detail.section, (IDs) => {
sections[detail.section] = IDs;
IDs.forEach((id) => {
detail.fields.forEach((f) => {
repeat_attrs.push(`${detail.section}_${id}_${f}`);
});
});
repeat_attrs.push(`_reporder_${detail.section}`);
if (queue.length) {
worker(queue, repeat_attrs, sections);
} else {
callback(repeat_attrs, sections);
}
});
};
if (!queue_clone[0]) {
callback([], {});
}
worker(queue_clone);
};
const repeating_sections = [
{
section: "repeating_weapons",
fields: ["damage_action"]
},
{
section: "repeating_powertable",
fields: ["damage_action"]
}
];
const action_refs = ["power0_action","power5_action","power10_action",
"power15_action","power20_action","power25_action","power30_action",
"power35_action","power40_action","power45_action","power50_action",
"class_action", "roll_action"]; // non-repeating buttons
const actionCallUpdate = function() {
getAllAttrs(["character_name", ...action_refs], repeating_sections, (attributes, sections) => {
let actions = Object.keys(attributes).filter((key) => key !== "character_name");
const set_obj = actions.reduce((accumulator, action_name)=>{
let key = action_name.replace(/_([^_]*)$/, "-" + '$1');
accumulator[action_name] = `%{${attributes.character_name}|${key}}`;
return accumulator;
}, {});
setAttrs(set_obj, {silent:true});
});
};
on("sheet:opened change:character_name change:repeating_weapons change:repeating_powertable", actionCallUpdate);
/* ===== PARAMETERS ==========
destinations = the name of the attribute that stores the total quantity
can be a single attribute, or an array: ['total_cost', 'total_weight']
If more than one, the matching fields must be in the same order.
section = name of repeating fieldset, without the repeating_
fields = the name of the attribute field to be summed
destination and fields both can be a single attribute: 'weight'
or an array of attributes: ['weight','number','equipped']
*/
const repeatingSum = (destinations, section, fields) => {
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, '').split(',')];
if (!Array.isArray(fields)) fields = [fields.replace(/\s/g, '').split(',')];
getSectionIDs(`repeating_${section}`, idArray => {
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
getAttrs([...attrArray], v => {
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
const output = {};
destinations.forEach((destination, index) => {
output[destination] = idArray.reduce((total, id) => total + getValue(section, id, fields[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * getValue(section, id, mult), 1), 0);
});
setAttrs(output);
});
});
};
/* roll button cleaner */
const cleaner = (input) => {
let cleaned = input
.replace(/\[/g, "&#91;")
.replace(/\]/g, "&#93;")
.replace(/\(/g, "&#40;")
.replace(/\)/g, "&#41;");
cleaned = cleaned.length > 0 ? cleaned : "None";
return cleaned;
}
</script>
<rolltemplate class="sheet-rolltemplate-swskill">
{{#rollTotal() raw 12}}
{{#result2}}
<span class="sheet-template-crit"></span>
{{/result2}}
{{/rollTotal() raw 12}}
{{#rollTotal() raw 2}}
{{^simple}}
<span class="sheet-template-fumble"></span>
{{/simple}}
{{/rollTotal() raw 2}}
<div class="container">
{{#token}}{{token}}{{/token}}
{{#choice}}
<h1>{{name}} acts:</h1>
{{/choice}}
{{^choice}}
<h1>
{{#fellow}}{{name}} says, {{computed::quote}}{{/fellow}}
{{^fellow}}
{{name}}
{{#skillverb}}{{skillverb}}{{/skillverb}}
{{^skillverb}}checks{{/skillverb}}
{{#skill}}{{skill}}{{/skill}}
{{^skill}}{{computed::level}} + {{computed::modifier}}{{/skill}}
{{/fellow}}
</h1>
{{/choice}}
{{#simple}}
{{#fellow}}
{{#rollTotal() result 1}}
<span class="die1"></span>
{{/rollTotal() result 1}}
{{#rollTotal() result 2}}
<span class="die2"></span>
{{/rollTotal() result 2}}
{{#rollTotal() result 3}}
<span class="die3"></span>
{{/rollTotal() result 3}}
{{#rollTotal() result 4}}
<span class="die4"></span>
{{/rollTotal() result 4}}
{{#rollTotal() result 5}}
<span class="die5"></span>
{{/rollTotal() result 5}}
{{#rollTotal() result 6}}
<span class="die6"></span>
{{/rollTotal() result 6}}
{{#choice}}
{{#rollTotal() result 1}}
{{choice1}}
{{choice2}}
{{/rollTotal() result 1}}
{{#rollTotal() result 2}}
{{choice1}}
{{choice2}}
{{/rollTotal() result 2}}
{{#rollTotal() result 3}}
{{choice3}}
{{choice4}}
{{/rollTotal() result 3}}
{{#rollTotal() result 4}}
{{choice3}}
{{choice4}}
{{/rollTotal() result 4}}
{{#rollTotal() result 5}}
{{choice5}}
{{choice6}}
{{/rollTotal() result 5}}
{{#rollTotal() result 6}}
{{choice7}}
{{choice8}}
{{/rollTotal() result 6}}
{{/choice}}
{{^choice}}
{{#computed::skill}}<p>{{computed::skill}}{{/computed::skill}}
{{#computed::result}}<p>{{computed::result}}</p>{{/computed::result}}
{{#computed::effect}}<p>{{computed::effect}}</p>{{/computed::effect}}
{{/choice}}
{{/fellow}}
{{^fellow}}
<p>
{{#computed::result}}{{computed::result}}{{/computed::result}}
{{^computed::result}}
{{result}}
{{/computed::result}}
{{#target}} vs. {{target}}{{/target}}
</p>
{{/fellow}}
{{/simple}}
{{^simple}}
{{#rollTotal() raw 12}}
<p>
{{#computed::result2}}{{computed::result2}}{{/computed::result2}}
{{^computed::result2}}
{{#computed::result}}{{computed::result}}{{/computed::result}}
{{^computed::result}}
{{#result2}}{{result2}}{{/result2}}
{{^result2}}{{result}}{{/result2}}
{{/computed::result}}
{{/computed::result2}}
{{#target}} vs. {{target}}{{/target}}
</p>
{{#computed::result2}}<p class="success">Automatic Success!</p>{{/computed::result2}}
{{^computed::result2}}
{{#result2}}<p class="success">Automatic Success!</p>{{/result2}}
{{/computed::result2}}
{{/rollTotal() raw 12}}
{{#^rollTotal() raw 12}}
{{#rollTotal() raw 2}}
<p><strong>0</strong>{{#target}} vs. {{target}}{{/target}}</p>
<p class="fail">Automatic Failure!</p>
{{^monster}}<p class="fail">Gain 50 experience</p>{{/monster}}
{{/rollTotal() raw 2}}
{{#^rollTotal() raw 2}}
<p>
{{#computed::result}}{{computed::result}}{{/computed::result}}
{{^computed::result}}{{result}}{{/computed::result}}
{{#target}} vs. {{target}}{{/target}}
</p>
{{#target}}
{{#computed::result}}
{{#rollLess() computed::result target}}
<p class="fail">Failure</p>
{{/rollLess() computed::result target}}
{{#^rollLess() computed::result target}}
<p class="success">Success</p>
{{/^rollLess() computed::result target}}
{{/computed::result}}
{{^computed::result}}
{{#rollLess() result target}}
<p class="fail">Failure</p>
{{/rollLess() result target}}
{{#^rollLess() result target}}
<p class="success">Success</p>
{{/^rollLess() result target}}
{{/computed::result}}
{{/target}}
{{/^rollTotal() raw 2}}
{{/^rollTotal() raw 12}}
{{^raw}}
<p>
{{#computed::result}}{{computed::result}}{{/computed::result}}
{{^computed::result}}{{result}}{{/computed::result}}
{{#target}} vs. {{target}}{{/target}}
</p>
{{#target}}
{{#computed::result}}
{{#rollLess() computed::result target}}
<p class="fail">Failure</p>
{{/rollLess() computed::result target}}
{{#^rollLess() computed::result target}}
<p class="success">Success</p>
{{/^rollLess() computed::result target}}
{{/computed::result}}
{{^computed::result}}
{{#rollLess() result target}}
<p class="fail">Failure</p>
{{/rollLess() result target}}
{{#^rollLess() result target}}
<p class="success">Success</p>
{{/^rollLess() result target}}
{{/computed::result}}
{{/target}}
{{/raw}}
{{/simple}}
<div class="crit"></div>
<div class="fumble"></div>
<div class="options">
{{#fellow}}
{{#rollGreater() computed::power -1}}
{{#rollTotal() result 1}}
{{damage1}}
{{/rollTotal() result 1}}
{{#rollTotal() result 2}}
{{damage1}}
{{/rollTotal() result 2}}
{{#rollTotal() result 3}}
{{damage3}}
{{/rollTotal() result 3}}
{{#rollTotal() result 4}}
{{damage3}}
{{/rollTotal() result 4}}
{{#rollTotal() result 5}}
{{damage5}}
{{/rollTotal() result 5}}
{{#rollTotal() result 6}}
{{damage7}}
{{/rollTotal() result 6}}
{{#rollTotal() fellow 1}}
{{damage1}}
{{/rollTotal() fellow 1}}
{{#rollTotal() fellow 2}}
{{damage2}}
{{/rollTotal() fellow 2}}
{{#rollTotal() fellow 3}}
{{damage3}}
{{/rollTotal() fellow 3}}
{{#rollTotal() fellow 4}}
{{damage4}}
{{/rollTotal() fellow 4}}
{{#rollTotal() fellow 5}}
{{damage5}}
{{/rollTotal() fellow 5}}
{{#rollTotal() fellow 6}}
{{damage6}}
{{/rollTotal() fellow 6}}
{{#rollTotal() fellow 7}}
{{damage7}}
{{/rollTotal() fellow 7}}
{{#rollTotal() fellow 8}}
{{damage8}}
{{/rollTotal() fellow 8}}
{{/rollGreater() computed::power -1}}
{{/fellow}}
{{^fellow}}
{{damage}}
{{/fellow}}
{{reroll}}
</div>
{{#raw}}<p class="refmark">2d: {{raw}}</p>{{/raw}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-swdamage">
{{#rollBetween() result crit 12}}
<span class="sheet-template-crit"></span>
{{/rollBetween() result crit 12}}
{{#rollTotal() result 2}}
<span class="sheet-template-fumble"></span>
{{/rollTotal() result 2}}
{{#rollTotal() result 3}}
<span class="sheet-template-3"></span>
{{/rollTotal() result 3}}
{{#rollTotal() result 4}}
<span class="sheet-template-4"></span>
{{/rollTotal() result 4}}
{{#rollTotal() result 5}}
<span class="sheet-template-5"></span>
{{/rollTotal() result 5}}
{{#rollTotal() result 6}}
<span class="sheet-template-6"></span>
{{/rollTotal() result 6}}
{{#rollTotal() result 7}}
<span class="sheet-template-7"></span>
{{/rollTotal() result 7}}
{{#rollTotal() result 8}}
<span class="sheet-template-8"></span>
{{/rollTotal() result 8}}
{{#rollTotal() result 9}}
<span class="sheet-template-9"></span>
{{/rollTotal() result 9}}
{{#rollTotal() result 10}}
<span class="sheet-template-10"></span>
{{/rollTotal() result 10}}
{{#rollTotal() result 11}}
<span class="sheet-template-11"></span>
{{/rollTotal() result 11}}
{{#rollTotal() result 12}}
<span class="sheet-template-12"></span>
{{/rollTotal() result 12}}
<div class="container">
{{#token}}{{token}}{{/token}}
<h1>
{{name}}'s {{skill}}
</h1>
<p>2d: {{result}}</p>
<div class="powertable">
<div />
<div>2</div>
{{#rollBetween() crit 3 3}}
<div class="crit">3</div>
{{/rollBetween() crit 3 3}}
{{#^rollBetween() crit 3 3}}
<div>3</div>
{{/^rollBetween() crit 3 3}}
{{#rollBetween() crit 3 4}}
<div class="crit">4</div>
{{/rollBetween() crit 3 4}}
{{#^rollBetween() crit 3 4}}
<div>4</div>
{{/^rollBetween() crit 3 4}}
{{#rollBetween() crit 3 5}}
<div class="crit">5</div>
{{/rollBetween() crit 3 5}}
{{#^rollBetween() crit 3 5}}
<div>5</div>
{{/^rollBetween() crit 3 5}}
{{#rollBetween() crit 3 6}}
<div class="crit">6</div>
{{/rollBetween() crit 3 6}}
{{#^rollBetween() crit 3 6}}
<div>6</div>
{{/^rollBetween() crit 3 6}}
{{#rollBetween() crit 3 7}}
<div class="crit">7</div>
{{/rollBetween() crit 3 7}}
{{#^rollBetween() crit 3 7}}
<div>7</div>
{{/^rollBetween() crit 3 7}}
{{#rollBetween() crit 3 8}}
<div class="crit">8</div>
{{/rollBetween() crit 3 8}}
{{#^rollBetween() crit 3 8}}
<div>8</div>
{{/^rollBetween() crit 3 8}}
{{#rollBetween() crit 3 9}}
<div class="crit">9</div>
{{/rollBetween() crit 3 9}}
{{#^rollBetween() crit 3 9}}
<div>9</div>
{{/^rollBetween() crit 3 9}}
{{#rollBetween() crit 3 10}}
<div class="crit">10</div>
{{/rollBetween() crit 3 10}}
{{#^rollBetween() crit 3 10}}
<div>10</div>
{{/^rollBetween() crit 3 10}}
{{#rollBetween() crit 3 11}}
<div class="crit">11</div>
{{/rollBetween() crit 3 11}}
{{#^rollBetween() crit 3 11}}
<div>11</div>
{{/^rollBetween() crit 3 11}}
{{#rollBetween() crit 3 12}}
<div class="crit">12</div>
{{/rollBetween() crit 3 12}}
{{#^rollBetween() crit 3 12}}
<div>12</div>
{{/^rollBetween() crit 3 12}}
<div>{{power}}</div>
<div>*</div>
{{#rollBetween() crit 3 3}}
<div class="crit">{{power3}}</div>
{{/rollBetween() crit 3 3}}
{{#^rollBetween() crit 3 3}}
<div>{{power3}}</div>
{{/^rollBetween() crit 3 3}}
{{#rollBetween() crit 3 4}}
<div class="crit">{{power4}}</div>
{{/rollBetween() crit 3 4}}
{{#^rollBetween() crit 3 4}}
<div>{{power4}}</div>
{{/^rollBetween() crit 3 4}}
{{#rollBetween() crit 3 5}}
<div class="crit">{{power5}}</div>
{{/rollBetween() crit 3 5}}
{{#^rollBetween() crit 3 5}}
<div>{{power5}}</div>
{{/^rollBetween() crit 3 5}}
{{#rollBetween() crit 3 6}}
<div class="crit">{{power6}}</div>
{{/rollBetween() crit 3 6}}
{{#^rollBetween() crit 3 6}}
<div>{{power6}}</div>
{{/^rollBetween() crit 3 6}}
{{#rollBetween() crit 3 7}}
<div class="crit">{{power7}}</div>
{{/rollBetween() crit 3 7}}
{{#^rollBetween() crit 3 7}}
<div>{{power7}}</div>
{{/^rollBetween() crit 3 7}}
{{#rollBetween() crit 3 8}}
<div class="crit">{{power8}}</div>
{{/rollBetween() crit 3 8}}
{{#^rollBetween() crit 3 8}}
<div>{{power8}}</div>
{{/^rollBetween() crit 3 8}}
{{#rollBetween() crit 3 9}}
<div class="crit">{{power9}}</div>
{{/rollBetween() crit 3 9}}
{{#^rollBetween() crit 3 9}}
<div>{{power9}}</div>
{{/^rollBetween() crit 3 9}}
{{#rollBetween() crit 3 10}}
<div class="crit">{{power10}}</div>
{{/rollBetween() crit 3 10}}
{{#^rollBetween() crit 3 10}}
<div>{{power10}}</div>
{{/^rollBetween() crit 3 10}}
{{#rollBetween() crit 3 11}}
<div class="crit">{{power11}}</div>
{{/rollBetween() crit 3 11}}
{{#^rollBetween() crit 3 11}}
<div>{{power11}}</div>
{{/^rollBetween() crit 3 11}}
{{#rollBetween() crit 3 12}}
<div class="crit">{{power12}}</div>
{{/rollBetween() crit 3 12}}
{{#^rollBetween() crit 3 12}}
<div>{{power12}}</div>
{{/^rollBetween() crit 3 12}}
</div>
<p>{{computed::result}} damage</p>
{{#rollBetween() result crit 12}}
{{#rollGreater() crit 2}}
<span class="success">Critical!</span>
<span class="success">(roll again and add)</span>
{{/rollGreater() crit 2}}
{{/rollBetween() result crit 12}}
<div class="crit"></div>
{{#rollTotal() result 2}}
<p class="fail">Gain 50 experience</p>
<p class="fail">(except after a critical)</p>
{{/rollTotal() result 2}}
<div class="fumble"></div>
<div class="options">
{{reroll}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-swinfo">
<div class="container">
{{#token}}{{token}}{{/token}}
<h1>{{name}}</h1>
<p>{{info}}</p>
<div class="options">
{{reroll}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-swempty">
</rolltemplate>