Files
roll20-character-sheets/StarWars5E/StarWars5E_HTML.html
T
Arbiter bc548d7d13 NPC Work:
- adding translations.
2025-03-19 21:32:25 +01:00

13992 lines
939 KiB
HTML

<div class="container">
<!-- HEADER -->
<input class="npc_toggle" name="attr_npc" type="hidden" value="0">
<!-- NPC -->
<div class="container npc">
<input class="npc_options-flag" type="checkbox" name="attr_npc_options-flag" checked="checked"><span>y</span>
<div class="npc_options">
<div class="flex-row flex-w-12">
<div class="flex-column flex-w-6">
<div class="sheet-row title">
<span data-i18n="npc-options-u">NPC OPTIONS</span>
</div>
<div class="sheet-row">
<span data-i18n="name-u">NAME</span>
<input type="text" name="attr_npc_name">
</div>
<div class="sheet-row">
<span data-i18n="npc-type-u">NPC TYPE</span>
<input type="text" name="attr_npc_type" placeholder="Medium fiend, any evil alignment"
data-i18n-placeholder="npc-type-place">
</div>
<div class="sheet-row">
<span data-i18n="armor-class-u">ARMOR CLASS</span>
<input class="num" type="text" name="attr_npc_ac" placeholder="10">
<span data-i18n="type-u">TYPE</span>
<input type="text" name="attr_npc_actype" placeholder="scale mail"
data-i18n-placeholder="npc-armor-place" value="">
</div>
<div class="sheet-row">
<span data-i18n="hit-points-u">HIT POINTS</span>
<input class="num" type="text" name="attr_hp_max" placeholder="82">
<span data-i18n="formula-u">FORMULA</span>
<input type="text" name="attr_npc_hpformula" placeholder="11d8 + 33">
</div>
<div class="sheet-row">
<span data-i18n="speed-u">SPEED</span>
<input type="text" name="attr_npc_speed" placeholder="30 ft., fly 60ft."
data-i18n-placeholder="npc-speed-place">
</div>
<div class="spacer"></div>
<div class="sheet-row">
<span data-i18n="attributes-u">ATTRIBUTES</span>
</div>
<div class="sheet-row">
<span data-i18n="str-u">STR</span>
<input class="num" type="text" name="attr_strength_base" value="10">
<span data-i18n="dex-u">DEX</span>
<input class="num" type="text" name="attr_dexterity_base" value="10">
<span data-i18n="con-u">CON</span>
<input class="num" type="text" name="attr_constitution_base" value="10">
<span data-i18n="int-u">INT</span>
<input class="num" type="text" name="attr_intelligence_base" value="10">
<span data-i18n="wis-u">WIS</span>
<input class="num" type="text" name="attr_wisdom_base" value="10">
<span data-i18n="cha-u">CHA</span>
<input class="num" type="text" name="attr_charisma_base" value="10">
</div>
<div class="spacer"></div>
<div class="sheet-row">
<span data-i18n="saves-u">SAVES</span>
</div>
<div class="sheet-row">
<span data-i18n="str-u">STR</span>
<input class="num" type="text" name="attr_npc_str_save_base" placeholder="0">
<span data-i18n="dex-u">DEX</span>
<input class="num" type="text" name="attr_npc_dex_save_base" placeholder="0">
<span data-i18n="con-u">CON</span>
<input class="num" type="text" name="attr_npc_con_save_base" placeholder="0">
<span data-i18n="int-u">INT</span>
<input class="num" type="text" name="attr_npc_int_save_base" placeholder="0">
<span data-i18n="wis-u">WIS</span>
<input class="num" type="text" name="attr_npc_wis_save_base" placeholder="0">
<span data-i18n="cha-u">CHA</span>
<input class="num" type="text" name="attr_npc_cha_save_base" placeholder="0">
<input type="hidden" name="attr_npc_str_save" value="@{strength_mod}">
<input type="hidden" name="attr_npc_dex_save" value="@{dexterity_mod}">
<input type="hidden" name="attr_npc_con_save" value="@{constitution_mod}">
<input type="hidden" name="attr_npc_int_save" value="@{intelligence_mod}">
<input type="hidden" name="attr_npc_wis_save" value="@{wisdom_mod}">
<input type="hidden" name="attr_npc_cha_save" value="@{charisma_mod}">
</div>
<div class="spacer"></div>
<div class="sheet-row">
<span data-i18n="skills-u">SKILLS</span>
</div>
<div class="sheet-row skills-list" data-i18n-list="skills-list">
<div class="sheet-col">
<div class="sheet-row" data-i18n-list-item="acrobatics">
<span data-i18n="acrobatics-u">ACROBATICS</span>
<input class="num" type="text" name="attr_npc_acrobatics_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="animal_handling">
<span data-i18n="animal_handling-u">ANIMAL HANDLING</span>
<input class="num" type="text" name="attr_npc_animal_handling_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="athletics">
<span data-i18n="athletics-u">ATHLETICS</span>
<input class="num" type="text" name="attr_npc_athletics_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="deception">
<span data-i18n="deception-u">DECEPTION</span>
<input class="num" type="text" name="attr_npc_deception_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="insight">
<span data-i18n="insight-u">INSIGHT</span>
<input class="num" type="text" name="attr_npc_insight_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="intimidation">
<span data-i18n="intimidation-u">INTIMIDATION</span>
<input class="num" type="text" name="attr_npc_intimidation_base" placeholder="0">
</div>
</div>
<div class="sheet-col" data-i18n-list-sublist>
<div class="sheet-row" data-i18n-list-item="investigation">
<span data-i18n="investigation-u">INVESTIGATION</span>
<input class="num" type="text" name="attr_npc_investigation_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="lore">
<span data-i18n="lore-u">LORE</span>
<input class="num" type="text" name="attr_npc_lore_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="medicine">
<span data-i18n="medicine-u">MEDICINE</span>
<input class="num" type="text" name="attr_npc_medicine_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="nature">
<span data-i18n="nature-u">NATURE</span>
<input class="num" type="text" name="attr_npc_nature_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="perception">
<span data-i18n="perception-u">PERCEPTION</span>
<input class="num" type="text" name="attr_npc_perception_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="performance">
<span data-i18n="performance-u">PERFORMANCE</span>
<input class="num" type="text" name="attr_npc_performance_base" placeholder="0">
</div>
</div>
<div class="sheet-col" data-i18n-list-sublist>
<div class="sheet-row" data-i18n-list-item="persuasion">
<span data-i18n="persuasion-u">PERSUASION</span>
<input class="num" type="text" name="attr_npc_persuasion_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="piloting">
<span data-i18n="piloting-u">PILOTING</span>
<input class="num" type="text" name="attr_npc_piloting_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="sleight_of_hand">
<span data-i18n="sleight_of_hand-u">SLEIGHT OF HAND</span>
<input class="num" type="text" name="attr_npc_sleight_of_hand_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="stealth">
<span data-i18n="stealth-u">STEALTH</span>
<input class="num" type="text" name="attr_npc_stealth_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="survival">
<span data-i18n="survival-u">SURVIVAL</span>
<input class="num" type="text" name="attr_npc_survival_base" placeholder="0">
</div>
<div class="sheet-row" data-i18n-list-item="technology">
<span data-i18n="technology-u">TECHNOLOGY</span>
<input class="num" type="text" name="attr_npc_technology_base" placeholder="0">
</div>
</div>
<input type="hidden" name="attr_npc_acrobatics" value="@{dexterity_mod}">
<input type="hidden" name="attr_npc_animal_handling" value="@{wisdom_mod}">
<input type="hidden" name="attr_npc_athletics" value="@{strength_mod}">
<input type="hidden" name="attr_npc_deception" value="@{charisma_mod}">
<input type="hidden" name="attr_npc_insight" value="@{wisdom_mod}">
<input type="hidden" name="attr_npc_intimidation" value="@{charisma_mod}">
<input type="hidden" name="attr_npc_investigation" value="@{intelligence_mod}">
<input type="hidden" name="attr_npc_lore" value="@{intelligence_mod}">
<input type="hidden" name="attr_npc_medicine" value="@{wisdom_mod}">
<input type="hidden" name="attr_npc_nature" value="@{intelligence_mod}">
<input type="hidden" name="attr_npc_perception" value="@{wisdom_mod}">
<input type="hidden" name="attr_npc_performance" value="@{charisma_mod}">
<input type="hidden" name="attr_npc_persuasion" value="@{charisma_mod}">
<input type="hidden" name="attr_npc_piloting" value="@{intelligence_mod}">
<input type="hidden" name="attr_npc_sleight_of_hand" value="@{dexterity_mod}">
<input type="hidden" name="attr_npc_stealth" value="@{dexterity_mod}">
<input type="hidden" name="attr_npc_survival" value="@{wisdom_mod}">
<input type="hidden" name="attr_npc_technology" value="@{intelligence_mod}">
</div>
<div class="sheet-row">
<span data-i18n="damage-vuln-u">DAMAGE VULNERABILITIES</span>
<input type="text" name="attr_npc_vulnerabilities" placeholder="fire"
data-i18n-placeholder="npc-dmg-vuln-place">
</div>
<div class="sheet-row">
<span data-i18n="damage-res-u">DAMAGE RESISTANCES</span>
<input type="text" name="attr_npc_resistances" placeholder="cold"
data-i18n-placeholder="npc-dmg-res-place">
</div>
<div class="sheet-row">
<span data-i18n="damage-imm-u">DAMAGE IMMUNITIES</span>
<input type="text" name="attr_npc_immunities" placeholder="lighting, thunder"
data-i18n-placeholder="npc-dmg-imm-place">
</div>
<div class="sheet-row">
<span data-i18n="cond-imm-u">CONDITION IMMUNITIES</span>
<input type="text" name="attr_npc_condition_immunities" placeholder="charmed"
data-i18n-placeholder="npc-cond-imm-place">
</div>
<div class="sheet-row">
<span data-i18n="senses-u">SENSES</span>
<input type="text" name="attr_npc_senses" placeholder="darkvision 120ft., passive Perception 16"
data-i18n-placeholder="npc-senses-place">
</div>
<div class="sheet-row">
<span data-i18n="langs-u">LANGUAGES</span>
<input type="text" name="attr_npc_languages" placeholder="Abyssal, Common, Infernal" value="—"
data-i18n-placeholder="npc-langs-place">
</div>
<div class="sheet-row">
<span data-i18n="challenge-u">CHALLENGE</span>
<input class="num" type="text" name="attr_npc_challenge" placeholder="1">
<span data-i18n="xp-u">XP</span>
<input type="text" name="attr_npc_xp" placeholder="250">
</div>
<div class="sheet-row">
<span data-i18n="token_size-u">TOKEN SIZE</span>
<input class="text" name="attr_token_size" value="1" placeholder="1">
</div>
<div class="sheet-row">
<input class="npcpowercastingflag" type="checkbox" name="attr_npcpowercastingflag" value="1">
<span data-i18n="powercast-npc-u">POWERCASTING NPC</span>
<div class="npcpoweroptions">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_powercasting_ability"
style="margin: 0px; width: auto; padding: 0px; height: 15px;">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="npcpoweroptions">
<div class="sheet-row">
<span data-i18n="glob-atk-mod:-u">GLOBAL POWER ATTACK MODIFIER:</span>
<input type="text" class="num" name="attr_globalpowermod" placeholder="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="power-caster-lvl:-u">POWER CASTER LEVEL:</span>
<input type="text" class="num" name="attr_caster_level">
</div>
<div class="sheet-row">
<span data-i18n="power_dc_mod:-u">POWER SAVE DC MOD:</span>
<input type="text" class="num" name="attr_power_dc_mod" placeholde="0" value="0">
</div>
</div>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_npcreactionsflag" value="1">
<span data-i18n="has-reaction-u">HAS REACTIONS</span>
</div>
<div class="sheet-row">
<span data-i18n="leg-actions:-u">LEGENDARY ACTIONS:</span>
<input class="num" type="text" name="attr_npc_legendary_actions" value="0" placeholder="0">
</div>
</div>
<div class="flex-column flex-w-6">
<div class="sheet-row title">
<span data-i18n="gen-opts-u">GENERAL OPTIONS</span>
</div>
<div class="sheet-row">
<span>SHEET TYPE:</span>
<select name="attr_npc">
<option value="0">PC</option>
<option value="1">NPC</option>
<option value="2">Ship</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="roll-queries:-u">ROLL QUERIES:</span>
<select name="attr_rtype">
<option value="{{always=1}} {{r2=[[@{d20}" data-i18n="always-adv">Always Roll Advantage</option>
<option value="@{advantagetoggle}" data-i18n="adv-toggle">Advantage Toggle</option>
<option value="{{query=1}} ?{Advantage?|Normal Roll,&#123&#123normal=1&#125&#125 &#123&#123r2=[[0d20|Advantage,&#123&#123advantage=1&#125&#125 &#123&#123r2=[[@{d20}|Disadvantage,&#123&#123disadvantage=1&#125&#125 &#123&#123r2=[[@{d20}}"
data-i18n="query-adv">Query Advantage
</option>
<option value="{{normal=1}} {{r2=[[0d20" data-i18n="never-adv">Never Roll Advantage</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="whisp-rolls-gm:-u">WHISPER ROLLS TO GM:</span>
<select name="attr_wtype">
<option value="" data-i18n="never-whisper-roll">Never Whisper Rolls</option>
<option value="@{whispertoggle}" data-i18n="toggle-roll-whisper">Whisper Toggle</option>
<option value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }" data-i18n="query-whisper-roll">Query
Whisper
</option>
<option value="/w gm " data-i18n="always-whisper-roll">Always Whisper Rolls</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="auto-dmg-roll:-u">AUTO DAMAGE ROLL:</span>
<select class="dtype" name="attr_dtype">
<option value="pick" data-i18n="never-dmg">Don't Auto Roll Damage</option>
<option value="full" data-i18n="always-dmg">Auto Roll Damage & Crit</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="npc-name-in-rolls:-u">NPC NAME IN ROLLS:</span>
<select name="attr_npc_name_flag">
<option value="{{name=@{npc_name}}}" data-i18n="show">Show</option>
<option value="0" data-i18n="hide">Hide</option>
</select>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_init_tiebreaker" value="@{dexterity}/100">
<span data-i18n="add-dex-tiebreaker-u">ADD DEX TIEBREAKER TO INITIATIVE</span>
</div>
<br><br>
<div class="sheet-row title">
<span data-i18n="import-export-u">IMPORT / EXPORT</span>
</div>
<div class="flex-column flex-w-12">
<div class="flex-column">
<span>Json Value</span>
<textarea name="attr_json_value" title style="width: 95%; height:21rem;"></textarea>
</div>
<div class="flex-row flex-justify-sa">
<button type="action" name="act_clean-npc"><span data-i18n="import-export-clean-u">Clean</span></button>
<button type="action" name="act_import-json"><span data-i18n="import-export-import-u">Import From Json</span></button>
<button type="action" name="act_export-json"><span data-i18n="import-export-export-u">Export To Json</span></button>
</div>
</div>
</div>
</div>
</div>
<div class="npc_display_row">
<div class="display">
<div class="sheet-row title red">
<button type="roll" name="roll_npc_init" style="width: 100%;"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{init}}} {{mod=[[[[@{initiative_bonus}]][DEX]]]}} {{r1=[[@{d20}+[[@{initiative_bonus}]][DEX] &{tracker}]]}} {{normal=1}} {{type=Initiative}}">
<span name="attr_npc_name"></span>
</button>
</div>
<div class="sheet-row subtitle" style="margin-top: -5px;">
<span class="italics" name="attr_npc_type"></span>
</div>
<div class="triangle"></div>
<div class="button-row flex-row flex-justify-sb triangle">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
</div>
<div class="sheet-row red" style="position:relative;">
<span data-i18n="ac" class="bold">Armor Class</span>
<span class="num" name="attr_npc_ac"></span>
<input class="actype" type="hidden" name="attr_npc_actype" value="">
<span class="parens" name="attr_npc_actype"></span>
<button type="roll" name="roll_npc_init"
style="position: absolute; right: 5px; height: 30px; width: 20px;"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{init}}} {{mod=[[[[@{initiative_bonus}]][DEX]]]}} {{r1=[[@{d20}+[[@{initiative_bonus}]][DEX] &{tracker}]]}} {{normal=1}} {{type=Initiative}}">
<span class="npc-init-die">t</span>
<span style="display: block;">INIT</span>
</button>
</div>
<div class="sheet-row red">
<span data-i18n="hp" class="bold">Hit Points</span>
<span class="num3" name="attr_hp_max"></span>
<button type="roll" name="roll_npc_hpformula"
value="@{wtype}&{template:npc} {{type=Hit Points}} {{normal=1}} @{npc_name_flag} {{rname=^{hp}}} {{mod=@{npc_hpformula}}} {{r1=[[@{npc_hpformula}]]}} charname=@{character_name}">
<span class="parens" name="attr_npc_hpformula" style="font-size: 12px; font-weight: normal;"></span>
</button>
</div>
<div class="sheet-row red">
<span data-i18n="speed" class="bold">Speed</span>
<span name="attr_npc_speed"></span>
</div>
<div class="triangle"></div>
<div class="sheet-row red">
<div class="attr-container">
<button type="roll" name="roll_npc_str"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{strength}}} {{mod=[[[[@{strength_mod}]][STR]]]}} {{r1=[[@{d20}+[[@{strength_mod}]][STR]]]}} @{rtype}+[[@{strength_mod}]][STR]]]}} {{type=Ability}}">
<span class="bold" data-i18n="str-u">STR</span>
<span name="attr_strength"></span>
<input class="negativeflag" type="hidden" name="attr_npc_str_negative" value="0">
<span class="npcattr" name="attr_strength_mod"></span>
</button>
</div>
<div class="attr-container">
<button type="roll" name="roll_npc_dex"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{dexterity}}} {{mod=[[[[@{dexterity_mod}]][DEX]]]}} {{r1=[[@{d20}+[[@{dexterity_mod}]][DEX]]]}} @{rtype}+[[@{dexterity_mod}]][DEX]]]}} {{type=Ability}}">
<span class="bold" data-i18n="dex-u">DEX</span>
<span name="attr_dexterity"></span>
<input class="negativeflag" type="hidden" name="attr_npc_dex_negative" value="0">
<span class="npcattr" name="attr_dexterity_mod"></span>
</button>
</div>
<div class="attr-container">
<button type="roll" name="roll_npc_con"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{constitution}}} {{mod=[[[[@{constitution_mod}]][CON]]]}} {{r1=[[@{d20}+[[@{constitution_mod}]][CON]]]}} @{rtype}+[[@{constitution_mod}]][CON]]]}} {{type=Ability}}">
<span class="bold" data-i18n="con-u">CON</span>
<span name="attr_constitution"></span>
<input class="negativeflag" type="hidden" name="attr_npc_con_negative" value="0">
<span class="npcattr" name="attr_constitution_mod"></span>
</button>
</div>
<div class="attr-container">
<button type="roll" name="roll_npc_int"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{intelligence}}} {{mod=[[[[@{intelligence_mod}]][INT]]]}} {{r1=[[@{d20}+[[@{intelligence_mod}]][INT]]]}} @{rtype}+[[@{intelligence_mod}]][INT]]]}} {{type=Ability}}">
<span class="bold" data-i18n="int-u">INT</span>
<span name="attr_intelligence"></span>
<input class="negativeflag" type="hidden" name="attr_npc_int_negative" value="0">
<span class="npcattr" name="attr_intelligence_mod"></span>
</button>
</div>
<div class="attr-container">
<button type="roll" name="roll_npc_wis"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{wisdom}}} {{mod=[[[[@{wisdom_mod}]][WIS]]]}} {{r1=[[@{d20}+[[@{wisdom_mod}]][WIS]]]}} @{rtype}+[[@{wisdom_mod}]][WIS]]]}} {{type=Ability}}">
<span class="bold" data-i18n="wis-u">WIS</span>
<span name="attr_wisdom"></span>
<input class="negativeflag" type="hidden" name="attr_npc_wis_negative" value="0">
<span class="npcattr" name="attr_wisdom_mod"></span>
</button>
</div>
<div class="attr-container">
<button type="roll" name="roll_npc_cha"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{charisma}}} {{mod=[[[[@{charisma_mod}]][CHA]]]}} {{r1=[[@{d20}+[[@{charisma_mod}]][CHA]]]}} @{rtype}+[[@{charisma_mod}]][CHA]]]}} {{type=Ability}}">
<span class="bold" data-i18n="cha-u">CHA</span>
<span name="attr_charisma"></span>
<input class="negativeflag" type="hidden" name="attr_npc_cha_negative" value="0">
<span class="npcattr" name="attr_charisma_mod"></span>
</button>
</div>
</div>
<div class="triangle"></div>
<input class="flag" type="hidden" name="attr_npc_saving_flag" value="">
<div class="sheet-row saving red">
<span class="bold" data-i18n="saving-throw">Saving Throws</span>
<input class="flag" type="hidden" name="attr_npc_str_save_flag" value="0">
<button type="roll" name="roll_npc_str_save"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{strength-save}}} {{mod=[[[[@{npc_str_save}]][STR SAVE]]]}} {{r1=[[@{d20}+[[@{npc_str_save}]][STR SAVE]]]}} @{rtype}+[[@{npc_str_save}]][STR SAVE]]]}} {{type=Save}}">
<span data-i18n="str">Str</span>
<span class="stat" name="attr_npc_str_save"></span>
</button>
<input class="flag" type="hidden" name="attr_npc_dex_save_flag" value="0">
<button type="roll" name="roll_npc_dex_save"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{dexterity-save}}} {{mod=[[[[@{npc_dex_save}]][DEX SAVE]]]}} {{r1=[[@{d20}+[[@{npc_dex_save}]][DEX SAVE]]]}} @{rtype}+[[@{npc_dex_save}]][DEX SAVE]]]}} {{type=Save}}">
<span data-i18n="dex">Dex</span>
<span class="stat" name="attr_npc_dex_save"></span>
</button>
<input class="flag" type="hidden" name="attr_npc_con_save_flag" value="0">
<button type="roll" name="roll_npc_con_save"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{constitution-save}}} {{mod=[[[[@{npc_con_save}]][CON SAVE]]]}} {{r1=[[@{d20}+[[@{npc_con_save}]][CON SAVE]]]}} @{rtype}+[[@{npc_con_save}]][CON SAVE]]]}} {{type=Save}}">
<span data-i18n="con">Con</span>
<span class="stat" name="attr_npc_con_save"></span>
</button>
<input class="flag" type="hidden" name="attr_npc_int_save_flag" value="0">
<button type="roll" name="roll_npc_int_save"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{intelligence-save}}} {{mod=[[[[@{npc_int_save}]][INT SAVE]]]}} {{r1=[[@{d20}+[[@{npc_int_save}]][INT SAVE]]]}} @{rtype}+[[@{npc_int_save}]][INT SAVE]]]}} {{type=Save}}">
<span data-i18n="int">Int</span>
<span class="stat" name="attr_npc_int_save"></span>
</button>
<input class="flag" type="hidden" name="attr_npc_wis_save_flag" value="0">
<button type="roll" name="roll_npc_wis_save"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{wisdom-save}}} {{mod=[[[[@{npc_wis_save}]][WIS SAVE]]]}} {{r1=[[@{d20}+[[@{npc_wis_save}]][WIS SAVE]]]}} @{rtype}+[[@{npc_wis_save}]][WIS SAVE]]]}} {{type=Save}}">
<span data-i18n="wis">Wis</span>
<span class="stat" name="attr_npc_wis_save"></span>
</button>
<input class="flag" type="hidden" name="attr_npc_cha_save_flag" value="0">
<button type="roll" name="roll_npc_cha_save"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{charisma-save}}} {{mod=[[[[@{npc_cha_save}]][CHA SAVE]]]}} {{r1=[[@{d20}+[[@{npc_cha_save}]][CHA SAVE]]]}} @{rtype}+[[@{npc_cha_save}]][CHA SAVE]]]}} {{type=Save}}">
<span data-i18n="cha">Cha</span>
<span class="stat" name="attr_npc_cha_save"></span>
</button>
</div>
<input class="flag" type="hidden" name="attr_npc_skills_flag" value="">
<div class="sheet-row skills skills-list red" data-i18n-list="skills-list">
<span class="bold" data-i18n="skills">Skills</span>
<span data-i18n-list-item="acrobatics">
<input class="flag" type="hidden" name="attr_npc_acrobatics_flag" value="0">
<button type="roll" name="roll_npc_acrobatics"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{acrobatics}}} {{mod=@{npc_acrobatics}}} {{r1=[[@{d20}+@{npc_acrobatics}]]}} @{rtype}+@{npc_acrobatics}]]}} {{type=Skill}}">
<span data-i18n="acrobatics">Acrobatics</span>
<span class="stat" name="attr_npc_acrobatics"></span>
</button>
</span>
<span data-i18n-list-item="animal_handling">
<input class="flag" type="hidden" name="attr_npc_animal_handling_flag" value="0">
<button type="roll" name="roll_npc_animal_handling"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{animal_handling}}} {{mod=@{npc_animal_handling}}} {{r1=[[@{d20}+@{npc_animal_handling}]]}} @{rtype}+@{npc_animal_handling}]]}} {{type=Skill}}">
<span data-i18n="animal_handling">Animal Handling</span>
<span class="stat" name="attr_npc_animal_handling"></span>
</button>
</span>
<span data-i18n-list-item="athletics">
<input class="flag" type="hidden" name="attr_npc_athletics_flag" value="0">
<button type="roll" name="roll_npc_athletics"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{athletics}}} {{mod=@{npc_athletics}}} {{r1=[[@{d20}+@{npc_athletics}]]}} @{rtype}+@{npc_athletics}]]}} {{type=Skill}}">
<span data-i18n="athletics">Athletics</span>
<span class="stat" name="attr_npc_athletics"></span>
</button>
</span>
<span data-i18n-list-item="deception">
<input class="flag" type="hidden" name="attr_npc_deception_flag" value="0">
<button type="roll" name="roll_npc_deception"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{deception}}} {{mod=@{npc_deception}}} {{r1=[[@{d20}+@{npc_deception}]]}} @{rtype}+@{npc_deception}]]}} {{type=Skill}}">
<span data-i18n="deception">Deception</span>
<span class="stat" name="attr_npc_deception"></span>
</button>
</span>
<span data-i18n-list-item="insight">
<input class="flag" type="hidden" name="attr_npc_insight_flag" value="0">
<button type="roll" name="roll_npc_insight"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{insight}}} {{mod=@{npc_insight}}} {{r1=[[@{d20}+@{npc_insight}]]}} @{rtype}+@{npc_insight}]]}} {{type=Skill}}">
<span data-i18n="insight">Insight</span>
<span class="stat" name="attr_npc_insight"></span>
</button>
</span>
<span data-i18n-list-item="intimidation">
<input class="flag" type="hidden" name="attr_npc_intimidation_flag" value="0">
<button type="roll" name="roll_npc_intimidation"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{intimidation}}} {{mod=@{npc_intimidation}}} {{r1=[[@{d20}+@{npc_intimidation}]]}} @{rtype}+@{npc_intimidation}]]}} {{type=Skill}}">
<span data-i18n="intimidation">Intimidation</span>
<span class="stat" name="attr_npc_intimidation"></span>
</button>
</span>
<span data-i18n-list-item="investigation">
<input class="flag" type="hidden" name="attr_npc_investigation_flag" value="0">
<button type="roll" name="roll_npc_investigation"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{investigation}}} {{mod=@{npc_investigation}}} {{r1=[[@{d20}+@{npc_investigation}]]}} @{rtype}+@{npc_investigation}]]}} {{type=Skill}}">
<span data-i18n="investigation">Investigation</span>
<span class="stat" name="attr_npc_investigation"></span>
</button>
</span>
<span data-i18n-list-item="lore">
<input class="flag" type="hidden" name="attr_npc_lore_flag" value="0">
<button type="roll" name="roll_npc_lore"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{lore}}} {{mod=@{npc_lore}}} {{r1=[[@{d20}+@{npc_lore}]]}} @{rtype}+@{npc_lore}]]}} {{type=Skill}}">
<span data-i18n="lore">Lore</span>
<span class="stat" name="attr_npc_lore"></span>
</button>
</span>
<span data-i18n-list-item="medicine">
<input class="flag" type="hidden" name="attr_npc_medicine_flag" value="0">
<button type="roll" name="roll_npc_medicine"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{medicine}}} {{mod=@{npc_medicine}}} {{r1=[[@{d20}+@{npc_medicine}]]}} @{rtype}+@{npc_medicine}]]}} {{type=Skill}}">
<span data-i18n="medicine">Medicine</span>
<span class="stat" name="attr_npc_medicine"></span>
</button>
</span>
<span data-i18n-list-item="nature">
<input class="flag" type="hidden" name="attr_npc_nature_flag" value="0">
<button type="roll" name="roll_npc_nature"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{nature}}} {{mod=@{npc_nature}}} {{r1=[[@{d20}+@{npc_nature}]]}} @{rtype}+@{npc_nature}]]}} {{type=Skill}}">
<span data-i18n="nature">Nature</span>
<span class="stat" name="attr_npc_nature"></span>
</button>
</span>
<span data-i18n-list-item="perception">
<input class="flag" type="hidden" name="attr_npc_perception_flag" value="0">
<button type="roll" name="roll_npc_perception"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{perception}}} {{mod=@{npc_perception}}} {{r1=[[@{d20}+@{npc_perception}]]}} @{rtype}+@{npc_perception}]]}} {{type=Skill}}">
<span data-i18n="perception">Perception</span>
<span class="stat" name="attr_npc_perception"></span>
</button>
</span>
<span data-i18n-list-item="performance">
<input class="flag" type="hidden" name="attr_npc_performance_flag" value="0">
<button type="roll" name="roll_npc_performance"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{performance}}} {{mod=@{npc_performance}}} {{r1=[[@{d20}+@{npc_performance}]]}} @{rtype}+@{npc_performance}]]}} {{type=Skill}}">
<span data-i18n="performance">Performance</span>
<span class="stat" name="attr_npc_performance"></span>
</button>
</span>
<span data-i18n-list-item="persuasion">
<input class="flag" type="hidden" name="attr_npc_persuasion_flag" value="0">
<button type="roll" name="roll_npc_persuasion"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{persuasion}}} {{mod=@{npc_persuasion}}} {{r1=[[@{d20}+@{npc_persuasion}]]}} @{rtype}+@{npc_persuasion}]]}} {{type=Skill}}">
<span data-i18n="persuasion">Persuasion</span>
<span class="stat" name="attr_npc_persuasion"></span>
</button>
</span>
<span data-i18n-list-item="piloting">
<input class="flag" type="hidden" name="attr_npc_piloting_flag" value="0">
<button type="roll" name="roll_npc_piloting"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{piloting}}} {{mod=@{npc_piloting}}} {{r1=[[@{d20}+@{npc_piloting}]]}} @{rtype}+@{npc_piloting}]]}} {{type=Skill}}">
<span data-i18n="piloting">Piloting</span>
<span class="stat" name="attr_npc_piloting"></span>
</button>
</span>
<span data-i18n-list-item="sleight_of_hand">
<input class="flag" type="hidden" name="attr_npc_sleight_of_hand_flag" value="0">
<button type="roll" name="roll_npc_sleight_of_hand"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{sleight_of_hand}}} {{mod=@{npc_sleight_of_hand}}} {{r1=[[@{d20}+@{npc_sleight_of_hand}]]}} @{rtype}+@{npc_sleight_of_hand}]]}} {{type=Skill}}">
<span data-i18n="sleight_of_hand">Sleight of Hand</span>
<span class="stat" name="attr_npc_sleight_of_hand"></span>
</button>
</span>
<span data-i18n-list-item="stealth">
<input class="flag" type="hidden" name="attr_npc_stealth_flag" value="0">
<button type="roll" name="roll_npc_stealth"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{stealth}}} {{mod=@{npc_stealth}}} {{r1=[[@{d20}+@{npc_stealth}]]}} @{rtype}+@{npc_stealth}]]}} {{type=Skill}}">
<span data-i18n="stealth">Stealth</span>
<span class="stat" name="attr_npc_stealth"></span>
</button>
</span>
<span data-i18n-list-item="survival">
<input class="flag" type="hidden" name="attr_npc_survival_flag" value="0">
<button type="roll" name="roll_npc_survival"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{survival}}} {{mod=@{npc_survival}}} {{r1=[[@{d20}+@{npc_survival}]]}} @{rtype}+@{npc_survival}]]}} {{type=Skill}}">
<span data-i18n="survival">Survival</span>
<span class="stat" name="attr_npc_survival"></span>
</button>
</span>
<span data-i18n-list-item="technology">
<input class="flag" type="hidden" name="attr_npc_technology_flag" value="0">
<button type="roll" name="roll_npc_technology"
value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=^{technology}}} {{mod=@{npc_technology}}} {{r1=[[@{d20}+@{npc_technology}]]}} @{rtype}+@{npc_technology}]]}} {{type=Skill}}">
<span data-i18n="technology">Technology</span>
<span class="stat" name="attr_npc_technology"></span>
</button>
</span>
</div>
<input class="flag" type="hidden" name="attr_npc_vulnerabilities">
<div class="sheet-row status vulnerabilities red">
<span class="bold" data-i18n="dmg-vuln">Damage Vulnerabilities</span>
<span class="info" name="attr_npc_vulnerabilities"></span>
</div>
<input class="flag" type="hidden" name="attr_npc_resistances">
<div class="sheet-row status resistances red">
<span class="bold" data-i18n="dmg-res">Damage Resistances</span>
<span class="info" name="attr_npc_resistances"></span>
</div>
<input class="flag" type="hidden" name="attr_npc_immunities">
<div class="sheet-row status immunities red">
<span class="bold" data-i18n="dmg-imm">Damage Immunities</span>
<span class="info" name="attr_npc_immunities"></span>
</div>
<input class="flag" type="hidden" name="attr_npc_condition_immunities">
<div class="sheet-row status condition_immunities red">
<span class="bold" data-i18n="cond-imm">Condition Immunities</span>
<span class="info" name="attr_npc_condition_immunities"></span>
</div>
<div class="sheet-row senses red">
<span class="bold" data-i18n="senses">Senses</span>
<span class="info" name="attr_npc_senses"></span>
</div>
<div class="sheet-row languages red">
<span class="bold" data-i18n="langs">Languages</span>
<span class="info languages" name="attr_npc_languages" value="—"></span>
</div>
<div class="sheet-row red">
<span class="bold" data-i18n="challenge">Challenge</span>
<span class="num" name="attr_npc_challenge"></span>
<span class="parens xp" name="attr_npc_xp"></span>
</div>
<div class="triangle"></div>
<div class="sheet-row traits">
<fieldset class="repeating_npctrait">
<div class="trait">
<input class="npc_options-flag" type="checkbox" name="attr_npc_options-flag"
checked="checked"><span>y</span>
<div class="npc_options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name" placeholder="False Appearance."
data-i18n-placeholder="npc-trait-name-place">
</div>
<div class="sheet-row">
<textarea name="attr_desc" placeholder="If the dragon fails..."
data-i18n-placeholder="npc-trait-desc-place"></textarea>
</div>
</div>
<div class="display">
<button class="pick" type="roll" name="roll_npc_trait"
value="@{wtype}&{template:npcaction} @{npc_name_flag} {{rname=@{name}}} {{description=@{desc}}} @{charname_output}">
<div class="sheet-row wide">
<span class="bold wide" name="attr_name"></span>
</div>
<span class="description" name="attr_desc"></span>
</button>
</div>
</div>
</fieldset>
</div>
</div>
<div class="actions_container">
<input class="dflag" type="hidden" name="attr_dflag" value="pick">
<div class="sheet-row actions">
<div class="sheet-row actiontitle" style="position: relative;">
<span class="title red" data-i18n="actions">Actions</span>
</div>
<fieldset class="repeating_npcaction">
<div class="action">
<input class="npc_options-flag" type="checkbox" name="attr_npc_options-flag"
checked="checked"><span>y</span>
<div class="npc_options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_attack_flag" value="on">
<span data-i18n="attack-u">ATTACK</span>
</div>
<input type="hidden" class="attack_options" name="attr_attack_flag" value="0">
<div class="sheet-row attack_option">
<span data-i18n="type:-u">TYPE:</span>
<select name="attr_attack_type">
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
<span style="margin-left: 15px;" data-i18n="range-reach:-u">RANGE/REACH:</span>
<input type="text" name="attr_attack_range" placeholder="5 ft." style="width: 100px;"
data-i18n-placeholder="range-reach-place">
</div>
<div class="sheet-row attack_option">
<span data-i18n="to-hit:-u">TO HIT:</span>
<input type="text" name="attr_attack_tohit" value="0" placeholder="5"
style="width: 30px;">
<span style="margin-left: 15px;" data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_attack_target" placeholder="One target"
style="width: 100px;" data-i18n-placeholder="to-hit-place">
</div>
<input type="hidden" name="attr_damage_flag">
<div class="sheet-row attack_option">
<span data-i18n="on-hit:-u">ON HIT:</span>
<input type="text" name="attr_attack_damage" placeholder="1d10" style="width: 65px;">
<input type="text" name="attr_attack_damagetype" placeholder="slashing"
style="width: 100px;" data-i18n-placeholder="on-hit-place">
<input type="hidden" name="attr_attack_crit">
</div>
<div class="sheet-row attack_option">
<span data-i18n="on-hit2:-u">ON HIT 2:</span>
<input type="text" name="attr_attack_damage2" placeholder="2d6+5" style="width: 65px;">
<input type="text" name="attr_attack_damagetype2" placeholder="fire"
style="width: 100px;" data-i18n-placeholder="on-hit-2-place">
<input type="hidden" name="attr_attack_crit2">
</div>
<div class="sheet-row attack_option">
<span data-i18n="desc:-u">DESCRIPTION:</span>
<select name="attr_show_desc">
<option value="@{description}" data-i18n="show">Show</option>
<option value=" " data-i18n="hide">Hide</option>
</select>
</div>
<div class="sheet-row">
<textarea name="attr_description"></textarea>
</div>
</div>
<div class="display flex-w-12">
<button class="pick" type="roll" name="roll_npc_action" value="@{rollbase}">
<div class="sheet-row wide">
<span class="bold wide" name="attr_name"></span>
</div>
<input class="attack_options" type="hidden" name="attr_attack_flag">
<div class="sheet-row attack attack_option">
<span class="italics" name="attr_attack_type"></span><span class="italics"> Weapon Attack: </span><span
name="attr_attack_tohitrange"></span>
</div>
<div class="sheet-row attack attack_option">
<span class="italics"
style="font-size: 13px; font-weight: normal; vertical-align: middle;"
data-i18n="hit:">Hit: </span><span name="attr_attack_onhit"
style="vertical-align: middle;"></span>
</div>
<span class="description" name="attr_description"></span>
</button>
</div>
<input type="hidden" name="attr_rollbase">
<button type="roll" style="display: none;" name="roll_npc_dmg"
value="@{wtype}&{template:npcdmg} @{damage_flag} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}}"></button>
<button type="roll" style="display: none;" name="roll_npc_crit"
value="@{wtype}&{template:npcdmg} @{damage_flag} {{crit=1}} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}} {{crit1=[[@{attack_crit}+0]]}} {{crit2=[[@{attack_crit2}+0]]}}"></button>
</div>
</fieldset>
</div>
<input class="reaction_flag" type="hidden" name="attr_npcreactionsflag">
<div class="sheet-row actions reaction">
<div class="sheet-row actiontitle">
<span class="title red" data-i18n="reactions">Reactions</span>
</div>
<fieldset class="repeating_npcreaction">
<div class="trait">
<input class="npc_options-flag" type="checkbox" name="attr_npc_options-flag"
checked="checked"><span>y</span>
<div class="npc_options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name" placeholder="Parry."
data-i18n-placeholder="npc-trait-name-place">
</div>
<div class="sheet-row">
<textarea name="attr_desc" placeholder="The creature adds 2 to its AC against..."
data-i18n-placeholder="npc-trait-desc-place"></textarea>
</div>
</div>
<div class="display">
<button class="pick" type="roll" name="roll_npc_trait"
value="@{wtype}&{template:npcaction} @{npc_name_flag} {{rname=@{name}}} {{description=@{desc}}} @{charname_output}">
<div class="sheet-row wide">
<span class="bold wide" name="attr_name"></span>
</div>
<span class="description" name="attr_desc"></span>
</button>
</div>
</div>
</fieldset>
</div>
<input class="legendary_flag" type="hidden" name="attr_npc_legendary_actions" value="0">
<div class="sheet-row actions legendary">
<div class="sheet-row actiontitle">
<span class="title red" data-i18n="leg-actions">Legendary Actions</span>
</div>
<div class="sheet-row">
<div class="legendaryactions" data-i18n="leg-actions-desc"><span
name="attr_npc_legendary_actions_desc"></span></div>
</div>
<fieldset class="repeating_npcaction-l">
<div class="action">
<input class="npc_options-flag" type="checkbox" name="attr_npc_options-flag"
checked="checked"><span>y</span>
<div class="npc_options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_attack_flag" value="on">
<span data-i18n="attack-u">ATTACK</span>
</div>
<input type="hidden" class="attack_options" name="attr_attack_flag" value="0">
<div class="sheet-row attack_option">
<span data-i18n="type:-u">TYPE:</span>
<select name="attr_attack_type">
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
<span style="margin-left: 15px;" data-i18n="range-reach:-u">RANGE/REACH:</span>
<input type="text" name="attr_attack_range" placeholder="5 ft." style="width: 100px;"
data-i18n-placeholder="range-reach-place">
</div>
<div class="sheet-row attack_option">
<span data-i18n="to-hit:-u">TO HIT:</span>
<input type="text" name="attr_attack_tohit" value="0" placeholder="5"
style="width: 30px;">
<span style="margin-left: 15px;" data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_attack_target" placeholder="One target"
style="width: 100px;" data-i18n-placeholder="to-hit-place">
</div>
<input type="hidden" name="attr_damage_flag">
<div class="sheet-row attack_option">
<span data-i18n="on-hit:-u">ON HIT:</span>
<input type="text" name="attr_attack_damage" placeholder="1d10" style="width: 65px;">
<input type="text" name="attr_attack_damagetype" placeholder="slashing"
style="width: 100px;" data-i18n-placeholder="on-hit-place">
<input type="hidden" name="attr_attack_crit">
</div>
<div class="sheet-row attack_option">
<span data-i18n="on-hit2:-u">ON HIT 2:</span>
<input type="text" name="attr_attack_damage2" placeholder="2d6+5" style="width: 65px;">
<input type="text" name="attr_attack_damagetype2" placeholder="fire"
style="width: 100px;" data-i18n-placeholder="on-hit-2-place">
<input type="hidden" name="attr_attack_crit2">
</div>
<div class="sheet-row attack_option">
<span data-i18n="desc:-u">DESCRIPTION:</span>
<select name="attr_show_desc">
<option value="@{description}" data-i18n="show">Show</option>
<option value=" " data-i18n="hide">Hide</option>
</select>
</div>
<div class="sheet-row">
<textarea name="attr_description"></textarea>
</div>
</div>
<div class="display">
<button class="pick" type="roll" name="roll_npc_action" value="@{rollbase}">
<div class="sheet-row wide">
<span class="bold wide" name="attr_name"></span>
</div>
<input class="attack_options" type="hidden" name="attr_attack_flag">
<div class="sheet-row attack attack_option">
<span class="italics" name="attr_attack_type"></span><span class="italics"> Weapon Attack: </span><span
name="attr_attack_tohitrange">
</div>
<div class="sheet-row attack attack_option">
<span class="italics"
style="font-size: 13px; font-weight: normal; vertical-align: middle;"
data-i18n="hit:">Hit: </span><span name="attr_attack_onhit"
style="vertical-align: middle;"></span>
</div>
<span class="description" name="attr_description"></span>
</button>
</div>
<input type="hidden" name="attr_rollbase">
<button type="roll" style="display: none;" name="roll_npc_dmg"
value="@{wtype}&{template:npcdmg} @{damage_flag} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}}"></button>
<button type="roll" style="display: none;" name="roll_npc_crit"
value="@{wtype}&{template:npcdmg} @{damage_flag} {{crit=1}} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}} {{crit1=[[@{attack_crit}+0]]}} {{crit2=[[@{attack_crit2}+0]]}}"></button>
</div>
</fieldset>
</div>
</div>
</div>
<input type="hidden" name="attr_npcpowercastingflag">
<div class="powers npc-powers">
<div class="sheet-row title red">
<span data-i18n="powers-u">POWERS</span>
</div>
<div class="triangle"></div>
<div class="flex-row body">
<div class="flex-column flex-w-4">
<div class="power-labels">
<span data-i18n="force_slots_total-u">FORCE TOTAL</span>
<span data-i18n="force_slots_remaining-u">FORCE REMAINING</span>
</div>
<div class="power-level">
<div class="level">
<span>FP</span>
</div>
<div class="total">
<input type="number" name="attr_force_power_points_total" value="0">
</div>
<div class="expended">
<input type="number" name="attr_force_power_points_expended" value="0">
</div>
</div>
<div class="power-labels">
<span data-i18n="tech_slots_total-u">TECH TOTAL</span>
<span data-i18n="tech_slots_remaining-u">TECH REMAINING</span>
</div>
<div class="power-level">
<div class="level">
<span>TP</span>
</div>
<div class="total">
<input type="number" name="attr_tech_power_points_total" value="0">
</div>
<div class="expended">
<input type="number" name="attr_tech_power_points_expended" value="0">
</div>
</div>
<br>
<div class="power-level">
<div class="level">
<span>0</span>
</div>
<div class="cantrips">
<span data-i18n="cantrips-u">AT-WILL</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-cantrip">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="cantrip-progression:-u">AT-WILL PROGRESSION</span>
<select name="attr_power_damage_progression">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Cantrip Dice" data-i18n="cantrip-dice-u">AT-WILL DICE</option>
<option value="Cantrip Beam" data-i18n="cantrip-beam-u">AT-WILL BEAM</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="cantrip">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>1</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-1">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="1">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>2</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-2">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="2">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="power-level">
<div class="level">
<span>3</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-3">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="3">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>4</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-4">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="4">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<!-- Edited Spell Adding here ppl -->
<div class="power-level">
<div class="level">
<span>5</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-5">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="5">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<!-- Removed Components Here -->
</div>
<div class="flex-column flex-w-4">
<div class="power-level">
<div class="level">
<span>6</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-6">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="6">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>7</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-7">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="7">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>8</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-8">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="8">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>9</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-9">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="9">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="footer">
<div style="margin-right: 50px; margin-left: 10px;">
<span data-i18n="portions-sheet-utilize">
Portions of this sheet utilize content from the System Reference Document 5.0 under the OGL License. View OGL License and Copyright Notice. https://sw5e.com/
</span>
</div>
<div>
<span data-i18n="footer-wiki-link">
For more information about this character sheet, its functionality, or uses, please check out the Roll20 Wiki for official documentation. https://wiki.roll20.net/5th_Edition_OGL_by_Roll20
</span>
</div>
</div>
</div>
<!-- PC -->
<div class="container pc">
<input type="hidden" name="attr_tab" value="core">
<div class="tab core">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="char-name-u">CHARACTER NAME</span>
</div>
<input class="options-flag" type="checkbox" name="attr_options-class-selection" checked="checked"><span>y</span>
<div class="header-info options">
<div class="sheet-row" style="border-top: 2px dashed gold;">
<span data-i18n="class:-u">CLASS:</span>
<input type="hidden" name="attr_custom_class" class="flag">
<select class="hiding class" name="attr_class">
<option value="" data-i18n="choose">Choose</option>
<option value="Berserker" data-i18n="berserker">Berserker</option>
<option value="Consular" data-i18n="consular">Consular</option>
<option value="Engineer" data-i18n="engineer">Engineer</option>
<option value="Fighter" data-i18n="fighter">Fighter</option>
<option value="Guardian" data-i18n="guardian">Guardian</option>
<option value="Monk" data-i18n="monk">Monk</option>
<option value="Operative" data-i18n="operative">Operative</option>
<option value="Scholar" data-i18n="scholar">Scholar</option>
<option value="Scout" data-i18n="scout">Scout</option>
<option value="Sentinel" data-i18n="sentinel">Sentinel</option>
</select>
<input type="text" class="showing" name="attr_cust_classname" style="width: 90px;">
<span data-i18n="subclass:-u">SUBCLASS:</span>
<input type="text" name="attr_subclass">
<span data-i18n="lvl:-u">LEVEL:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_level" value="1">
</div>
<div class="sheet-row">
<span data-i18n="race:-u">RACE:</span>
<input type="text" name="attr_race">
<span data-i18n="subrace:-u">SUBRACE:</span>
<input type="text" name="attr_subrace">
</div>
</div>
<div class="header-info display">
<div class="top">
<div class="hlabel-container">
<input type="text" name="attr_class_display" class="class-display no_events">
<span class="label" data-i18n="class-level-u">CLASS & LEVEL</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_background" style="width: 182px;">
<span class="label" data-i18n="background-u">BACKGROUND</span>
</div>
</div>
<div class="bottom">
<div class="hlabel-container">
<input type="text" name="attr_race_display" class="no_events">
<span class="label" data-i18n="race-u">RACE</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_alignment">
<span class="label" data-i18n="alignment-u">ALIGNMENT</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_experience">
<span class="label" data-i18n="exp-pts-u">EXPERIENCE POINTS</span>
</div>
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="pc-btn-group">
<input type="hidden" name="attr_tab">
<button type="action" name="act_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_tab_bio"><span data-i18n="bio-u">BIO</span></button>
<button type="action" name="act_tab_powers"><span data-i18n="powers-u">POWERS</span></button>
<button type="action" name="act_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-4">
<div class="flex-row">
<div class="attributes-container" style="margin-top: 10px;">
<div class="attr-container">
<button type="roll" name="roll_strength"
value="@{wtype}&{template:simple} {{rname=^{strength-u}}} {{mod=@{strength_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{strength_mod}@{jack_attr}[STR]]]}} @{rtype}+@{strength_mod}@{jack_attr}[STR]]]}} @{charname_output}"
data-i18n="strength-u">STRENGTH
</button>
<span class="attr" name="attr_strength_mod" title="@{strength_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_strength_base" title="@{strength}" value="10">
<input type="hidden" name="attr_strength" value="10">
<input class="attr-flag" type="hidden" name="attr_strength_flag" value="0">
<span class="finalattr" name="attr_strength"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_dexterity"
value="@{wtype}&{template:simple} {{rname=^{dexterity-u}}} {{mod=@{dexterity_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{dexterity_mod}@{jack_attr}[DEX]]]}} @{rtype}+@{dexterity_mod}@{jack_attr}[DEX]]]}} @{charname_output}"
data-i18n="dexterity-u">DEXTERITY
</button>
<span class="attr" name="attr_dexterity_mod" title="@{dexterity_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_dexterity_base" title="@{dexterity}" value="10">
<input type="hidden" name="attr_dexterity" value="10">
<input class="attr-flag" type="hidden" name="attr_dexterity_flag" value="0">
<span class="finalattr" name="attr_dexterity"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_constitution"
value="@{wtype}&{template:simple} {{rname=^{constitution-u}}} {{mod=@{constitution_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{constitution_mod}@{jack_attr}[CON]]]}} @{rtype}+@{constitution_mod}@{jack_attr}[CON]]]}} @{charname_output}"
data-i18n="constitution-u">CONSTITUTION
</button>
<span class="attr" name="attr_constitution_mod" title="@{constitution_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_constitution_base" title="@{constitution}"
value="10">
<input type="hidden" name="attr_constitution" value="10">
<input class="attr-flag" type="hidden" name="attr_constitution_flag" value="0">
<span class="finalattr" name="attr_constitution"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_intelligence"
value="@{wtype}&{template:simple} {{rname=^{intelligence-u}}} {{mod=@{intelligence_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{intelligence_mod}@{jack_attr}[INT]]]}} @{rtype}+@{intelligence_mod}@{jack_attr}[INT]]]}} @{charname_output}"
data-i18n="intelligence-u">INTELLIGENCE
</button>
<span class="attr" name="attr_intelligence_mod" title="@{intelligence_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_intelligence_base" title="@{intelligence}"
value="10">
<input type="hidden" name="attr_intelligence" value="10">
<input class="attr-flag" type="hidden" name="attr_intelligence_flag" value="0">
<span class="finalattr" name="attr_intelligence"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_wisdom"
value="@{wtype}&{template:simple} {{rname=^{wisdom-u}}} {{mod=@{wisdom_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{wisdom_mod}@{jack_attr}[WIS]]]}} @{rtype}+@{wisdom_mod}@{jack_attr}[WIS]]]}} @{charname_output}"
data-i18n="wisdom-u">WISDOM
</button>
<span class="attr" name="attr_wisdom_mod" title="@{wisdom_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_wisdom_base" title="@{wisdom}" value="10">
<input type="hidden" name="attr_wisdom" value="10">
<input class="attr-flag" type="hidden" name="attr_wisdom_flag" value="0">
<span class="finalattr" name="attr_wisdom"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_charisma"
value="@{wtype}&{template:simple} {{rname=^{charisma-u}}} {{mod=@{charisma_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{charisma_mod}@{jack_attr}[CHA]]]}} @{rtype}+@{charisma_mod}@{jack_attr}[CHA]]]}} @{charname_output}"
data-i18n="charisma-u">CHARISMA
</button>
<span class="attr" name="attr_charisma_mod" title="@{charisma_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_charisma_base" title="@{charisma}" value="10">
<input type="hidden" name="attr_charisma" value="10">
<input class="attr-flag" type="hidden" name="attr_charisma_flag" value="0">
<span class="finalattr" name="attr_charisma"></span>
</div>
</div>
</div>
<div class="skills-saves-container">
<div class="flex-row insp-prof-container">
<div class="value">
<input type="checkbox" name="attr_inspiration"><span></span>
</div>
<div class="label">
<span data-i18n="inspiration-u">INSPIRATION</span>
</div>
</div>
<div class="flex-row insp-prof-container">
<div class="value">
<span name="attr_pb" title="@{pb}"></span>
</div>
<div class="label">
<span class="break-lang" data-i18n="prof-bonus-u">PROFICIENCY BONUS</span>
</div>
</div>
<div class="saving-throw-container">
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_strength_save_prof" title="@{strength_save_prof}"
value="(@{pb})">
<span name="attr_strength_save_bonus" title="@{strength_save_bonus}">0</span>
<button type="roll" name="roll_strength_save"
value="@{wtype}&{template:simple} {{rname=^{strength-save-u}}} {{mod=@{strength_save_bonus}}} {{r1=[[@{d20}+@{strength_save_bonus}@{pbd_safe}]]}} @{rtype}+@{strength_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="strength">Strength
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_dexterity_save_prof" title="@{dexterity_save_prof}"
value="(@{pb})">
<span name="attr_dexterity_save_bonus" title="@{dexterity_save_bonus}">0</span>
<button type="roll" name="roll_dexterity_save"
value="@{wtype}&{template:simple} {{rname=^{dexterity-save-u}}} {{mod=@{dexterity_save_bonus}}} {{r1=[[@{d20}+@{dexterity_save_bonus}@{pbd_safe}]]}} @{rtype}+@{dexterity_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="dexterity">Dexterity
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_constitution_save_prof" title="@{constitution_save_prof}"
value="(@{pb})">
<span name="attr_constitution_save_bonus" title="@{constitution_save_bonus}">0</span>
<button type="roll" name="roll_constitution_save"
value="@{wtype}&{template:simple} {{rname=^{constitution-save-u}}} {{mod=@{constitution_save_bonus}}} {{r1=[[@{d20}+@{constitution_save_bonus}@{pbd_safe}]]}} @{rtype}+@{constitution_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="constitution">Constitution
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_intelligence_save_prof" title="@{intelligence_save_prof}"
value="(@{pb})">
<span name="attr_intelligence_save_bonus" title="@{intelligence_save_bonus}">0</span>
<button type="roll" name="roll_intelligence_save"
value="@{wtype}&{template:simple} {{rname=^{intelligence-save-u}}} {{mod=@{intelligence_save_bonus}}} {{r1=[[@{d20}+@{intelligence_save_bonus}@{pbd_safe}]]}} @{rtype}+@{intelligence_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="intelligence">Intelligence
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_wisdom_save_prof" title="@{wisdom_save_prof}"
value="(@{pb})">
<span name="attr_wisdom_save_bonus" title="@{wisdom_save_bonus}">0</span>
<button type="roll" name="roll_wisdom_save"
value="@{wtype}&{template:simple} {{rname=^{wisdom-save-u}}} {{mod=@{wisdom_save_bonus}}} {{r1=[[@{d20}+@{wisdom_save_bonus}@{pbd_safe}]]}} @{rtype}+@{wisdom_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="wisdom">Wisdom
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_charisma_save_prof" title="@{charisma_save_prof}"
value="(@{pb})">
<span name="attr_charisma_save_bonus" title="@{charisma_save_bonus}">0</span>
<button type="roll" name="roll_charisma_save"
value="@{wtype}&{template:simple} {{rname=^{charisma-save-u}}} {{mod=@{charisma_save_bonus}}} {{r1=[[@{d20}+@{charisma_save_bonus}@{pbd_safe}]]}} @{rtype}+@{charisma_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="charisma">Charisma
</button>
</div>
<input type="hidden" class="toggleflag" name="attr_global_save_mod_flag">
<div class="conditional-visibility textarea globalattack">
<span class="label break-lang" data-i18n="global-save-u">GLOBAL SAVE MODIFIER</span>
<fieldset class="repeating_savemod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag"
checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_save_active_flag" value="1"
class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_save_rollstring"
placeholder="1d4[BLESS]" style="width: 125px;"></textarea>
</div>
<div class="display">
<span class="title" name="attr_global_save_rollstring"></span>
</div>
</div>
</fieldset>
</div>
<div class="label">
<span data-i18n="saving-throws-u">SAVING THROWS</span>
</div>
</div>
<div class="skills-container skills-list">
<div data-i18n-list="skills-list">
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="acrobatics">
<input type="checkbox" name="attr_acrobatics_prof" title="@{acrobatics_prof}"
value="(@{pb}*@{acrobatics_type})">
<span name="attr_acrobatics_bonus" title="@{acrobatics_bonus}">0</span>
<button type="roll" name="roll_acrobatics"
value="@{wtype}&{template:simple} {{rname=^{acrobatics-u}}} {{mod=@{acrobatics_bonus}}} {{r1=[[@{d20}+@{acrobatics_bonus}@{pbd_safe}]]}} @{rtype}+@{acrobatics_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}"
data-i18n="acrobatics-core">Acrobatics <span>(Dex)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="animal_handling">
<input type="checkbox" name="attr_animal_handling_prof" title="@{animal_handling_prof}"
value="(@{pb}*@{animal_handling_type})">
<span name='attr_animal_handling_bonus' title='@{animal_handling_bonus}'>0</span>
<button type='roll' name='roll_animal_handling'
value='@{wtype}&{template:simple} {{rname=^{animal_handling-u}}} {{mod=@{animal_handling_bonus}}} {{r1=[[@{d20}+@{animal_handling_bonus}@{pbd_safe}]]}} @{rtype}+@{animal_handling_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='animal_handling-core'>Animal Handling <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="athletics">
<input type="checkbox" name="attr_athletics_prof" title="@{athletics_prof}"
value="(@{pb}*@{athletics_type})">
<span name='attr_athletics_bonus' title='@{athletics_bonus}'>0</span>
<button type='roll' name='roll_athletics'
value='@{wtype}&{template:simple} {{rname=^{athletics-u}}} {{mod=@{athletics_bonus}}} {{r1=[[@{d20}+@{athletics_bonus}@{pbd_safe}]]}} @{rtype}+@{athletics_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='athletics-core'>Athletics <span>(Str)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="deception">
<input type="checkbox" name="attr_deception_prof" title="@{deception_prof}"
value="(@{pb}*@{deception_type})">
<span name='attr_deception_bonus' title='@{deception_bonus}'>0</span>
<button type='roll' name='roll_deception'
value='@{wtype}&{template:simple} {{rname=^{deception-u}}} {{mod=@{deception_bonus}}} {{r1=[[@{d20}+@{deception_bonus}@{pbd_safe}]]}} @{rtype}+@{deception_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='deception-core'>Deception <span>(Cha)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="insight">
<input type="checkbox" name="attr_insight_prof" title="@{insight_prof}"
value="(@{pb}*@{insight_type})">
<span name='attr_insight_bonus' title='@{insight_bonus}'>0</span>
<button type='roll' name='roll_insight'
value='@{wtype}&{template:simple} {{rname=^{insight-u}}} {{mod=@{insight_bonus}}} {{r1=[[@{d20}+@{insight_bonus}@{pbd_safe}]]}} @{rtype}+@{insight_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='insight-core'>Insight <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="intimidation">
<input type="checkbox" name="attr_intimidation_prof" title="@{intimidation_prof}"
value="(@{pb}*@{intimidation_type})">
<span name='attr_intimidation_bonus' title='@{intimidation_bonus}'>0</span>
<button type='roll' name='roll_intimidation'
value='@{wtype}&{template:simple} {{rname=^{intimidation-u}}} {{mod=@{intimidation_bonus}}} {{r1=[[@{d20}+@{intimidation_bonus}@{pbd_safe}]]}} @{rtype}+@{intimidation_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='intimidation-core'>Intimidation <span>(Cha)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="investigation">
<input type="checkbox" name="attr_investigation_prof" title="@{investigation_prof}"
value="(@{pb}*@{investigation_type})">
<span name='attr_investigation_bonus' title='@{investigation_bonus}'>0</span>
<button type='roll' name='roll_investigation'
value='@{wtype}&{template:simple} {{rname=^{investigation-u}}} {{mod=@{investigation_bonus}}} {{r1=[[@{d20}+@{investigation_bonus}@{pbd_safe}]]}} @{rtype}+@{investigation_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='investigation-core'>Investigation <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="lore">
<input type="checkbox" name="attr_lore_prof" title="@{lore_prof}"
value="(@{pb}*@{lore_type})">
<span name='attr_lore_bonus' title='@{lore_bonus}'>0</span>
<button type='roll' name='roll_lore'
value='@{wtype}&{template:simple} {{rname=^{lore-u}}} {{mod=@{lore_bonus}}} {{r1=[[@{d20}+@{lore_bonus}@{pbd_safe}]]}} @{rtype}+@{lore_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='lore-core'>Lore <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="medicine">
<input type="checkbox" name="attr_medicine_prof" title="@{medicine_prof}"
value="(@{pb}*@{medicine_type})">
<span name='attr_medicine_bonus' title='@{medicine_bonus}'>0</span>
<button type='roll' name='roll_medicine'
value='@{wtype}&{template:simple} {{rname=^{medicine-u}}} {{mod=@{medicine_bonus}}} {{r1=[[@{d20}+@{medicine_bonus}@{pbd_safe}]]}} @{rtype}+@{medicine_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='medicine-core'>Medicine <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="nature">
<input type="checkbox" name="attr_nature_prof" title="@{nature_prof}"
value="(@{pb}*@{nature_type})">
<span name='attr_nature_bonus' title='@{nature_bonus}'>0</span>
<button type='roll' name='roll_nature'
value='@{wtype}&{template:simple} {{rname=^{nature-u}}} {{mod=@{nature_bonus}}} {{r1=[[@{d20}+@{nature_bonus}@{pbd_safe}]]}} @{rtype}+@{nature_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='nature-core'>Nature <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="perception">
<input type="checkbox" name="attr_perception_prof" title="@{perception_prof}"
value="(@{pb}*@{perception_type})">
<span name='attr_perception_bonus' title='@{perception_bonus}'>0</span>
<button type='roll' name='roll_perception'
value='@{wtype}&{template:simple} {{rname=^{perception-u}}} {{mod=@{perception_bonus}}} {{r1=[[@{d20}+@{perception_bonus}@{pbd_safe}]]}} @{rtype}+@{perception_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='perception-core'>Perception <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="performance">
<input type="checkbox" name="attr_performance_prof" title="@{performance_prof}"
value="(@{pb}*@{performance_type})">
<span name='attr_performance_bonus' title='@{performance_bonus}'>0</span>
<button type='roll' name='roll_performance'
value='@{wtype}&{template:simple} {{rname=^{performance-u}}} {{mod=@{performance_bonus}}} {{r1=[[@{d20}+@{performance_bonus}@{pbd_safe}]]}} @{rtype}+@{performance_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='performance-core'>Performance <span>(Cha)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="persuasion">
<input type="checkbox" name="attr_persuasion_prof" title="@{persuasion_prof}"
value="(@{pb}*@{persuasion_type})">
<span name='attr_persuasion_bonus' title='@{persuasion_bonus}'>0</span>
<button type='roll' name='roll_persuasion'
value='@{wtype}&{template:simple} {{rname=^{persuasion-u}}} {{mod=@{persuasion_bonus}}} {{r1=[[@{d20}+@{persuasion_bonus}@{pbd_safe}]]}} @{rtype}+@{persuasion_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='persuasion-core'>Persuasion <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="piloting">
<input type="checkbox" name="attr_piloting_prof" title="@{piloting_prof}"
value="(@{pb}*@{piloting_type})">
<span name='attr_piloting_bonus' title='@{piloting_bonus}'>0</span>
<button type='roll' name='roll_piloting'
value='@{wtype}&{template:simple} {{rname=^{piloting-u}}} {{mod=@{piloting_bonus}}} {{r1=[[@{d20}+@{piloting_bonus}@{pbd_safe}]]}} @{rtype}+@{piloting_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='piloting-core'>Piloting <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="sleight_of_hand">
<input type="checkbox" name="attr_sleight_of_hand_prof" title="@{sleight_of_hand_prof}"
value="(@{pb}*@{sleight_of_hand_type})">
<span name='attr_sleight_of_hand_bonus' title='@{sleight_of_hand_bonus}'>0</span>
<button type='roll' name='roll_sleight_of_hand'
value='@{wtype}&{template:simple} {{rname=^{sleight_of_hand-u}}} {{mod=@{sleight_of_hand_bonus}}} {{r1=[[@{d20}+@{sleight_of_hand_bonus}@{pbd_safe}]]}} @{rtype}+@{sleight_of_hand_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='sleight_of_hand-core'>Sleight of Hand <span>(Dex)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="stealth">
<input type="checkbox" name="attr_stealth_prof" title="@{stealth_prof}"
value="(@{pb}*@{stealth_type})">
<span name='attr_stealth_bonus' title='@{stealth_bonus}'>0</span>
<button type='roll' name='roll_stealth'
value='@{wtype}&{template:simple} {{rname=^{stealth-u}}} {{mod=@{stealth_bonus}}} {{r1=[[@{d20}+@{stealth_bonus}@{pbd_safe}]]}} @{rtype}+@{stealth_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='stealth-core'>Stealth <span>(Dex)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="survival">
<input type="checkbox" name="attr_survival_prof" title="@{survival_prof}"
value="(@{pb}*@{survival_type})">
<span name='attr_survival_bonus' title='@{survival_bonus}'>0</span>
<button type='roll' name='roll_survival'
value='@{wtype}&{template:simple} {{rname=^{survival-u}}} {{mod=@{survival_bonus}}} {{r1=[[@{d20}+@{survival_bonus}@{pbd_safe}]]}} @{rtype}+@{survival_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='survival-core'>Survival <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="technology">
<input type="checkbox" name="attr_technology_prof" title="@{technology_prof}"
value="(@{pb}*@{technology_type})">
<span name='attr_technology_bonus' title='@{technology_bonus}'>0</span>
<button type='roll' name='roll_technology'
value='@{wtype}&{template:simple} {{rname=^{technology-u}}} {{mod=@{technology_bonus}}} {{r1=[[@{d20}+@{technology_bonus}@{pbd_safe}]]}} @{rtype}+@{technology_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='technology-core'>Technology <span>(Int)</span></button>
</div>
</div>
<div class="label">
<span data-i18n="skills-u">SKILLS</span>
</div>
</div>
</div>
</div>
<div class="flex-row insp-prof-container" style="width: 100%; margin-top: 2px;">
<div class="value">
<!-- <input type="text" name="attr_passive_wisdom" title="@{passive_wisdom}" value="(10+@{perception_bonus}+@{passiveperceptionmod})" disabled="true" ><span></span> -->
<span name="attr_passive_wisdom"></span>
</div>
<div class="label" style="width: 217px;">
<span data-i18n="pass-wis-u">PASSIVE WISDOM (PERCEPTION)</span>
</div>
</div>
<div class="tool_proficiencies" style="margin-bottom: 10px; min-height: 100px; position: relative;">
<div class="top">
<span class="label" style="width: 95px;" data-i18n="tool-u">TOOL</span>
<span class="label" style="width: 25px;" data-i18n="pro-u">PRO</span>
<span class="label" style="width: 50px;" data-i18n="attr-u">ATTRIBUTE</span>
</div>
<fieldset class="repeating_tool">
<div class="tool">
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_toolname" style="width: 120px;">
</div>
<div class="sheet-row">
<span data-i18n="prof-bonus:-u">PROFICIENCY BONUS:</span>
<select name="attr_toolbonus_base">
<option value="(@{pb})" selected="selected" data-i18n="prof-u">PROFICIENT</option>
<option value="(@{pb}*2)" data-i18n="expertise-u">EXPERTISE</option>
<option value="(floor(@{pb}/2))" data-i18n="jack-of-all-u">JACK OF ALL TRADES</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="attr:-u">ATTRIBUTE:</span>
<select name="attr_toolattr_base">
<option value="@{strength_mod}" selected="selected" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}" data-i18n="charisma-u">CHARISMA</option>
<option value="?{Attribute?|Strength,@{strength_mod}|Dexterity,@{dexterity_mod}|Constitution,@{constitution_mod}|Intelligence,@{intelligence_mod}|Wisdom,@{wisdom_mod}|Charisma,@{charisma_mod}}" data-i18n="query-attr-u">QUERY ATTRIBUTE</option>
</select>
<span data-i18n="mods:-u">MODS:</span>
<input type="text" class="num" name="attr_tool_mod" title="@{tool_mod}" value="0">
</div>
</div>
<div class="display">
<button type="roll" name="roll_tool" value="@{wtype}&{template:simple} {{rname=@{toolname}}} {{mod=@{toolbonus}}} {{r1=[[@{d20}+@{toolbonus}@{pbd_safe}]]}} @{rtype}+@{toolbonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}">
<span name="attr_toolname" style="width: 100px;"></span>
<input type="text" name="attr_toolbonus_display" style="width: 40px; text-align: center;">
<input type="hidden" name="attr_toolbonus">
<input type="text" name="attr_toolattr" style="width: 80px;">
</button>
</div>
</div>
</fieldset>
<input type="hidden" class="toggleflag" name="attr_global_skill_mod_flag">
<div class="conditional-visibility textarea globalattack">
<span class="label" data-i18n="global-skill-u">GLOBAL SKILL MODIFIER</span>
<fieldset class="repeating_skillmod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_skill_active_flag" value="1" class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_skill_rollstring" placeholder="1d4[GUIDANCE]"></textarea>
</div>
<div class="display">
<span class="title" name="attr_global_skill_rollstring"></span>
</div>
</div>
</fieldset>
</div>
<div class="label fixed-bottom-title">
<span data-i18n="tool-prof-u" style="display: inline;">TOOL PROFICIENCIES</span><span style="display: inline;"> & </span><span data-i18n="custom-skills-u" style="display: inline;">CUSTOM SKILLS</span>
</div>
</div>
<div class="textbox-container proficiencies" style="margin-bottom: 10px;">
<input type="hidden" class="inventoryflag" name="attr_simpleproficencies" value="complex">
<textarea class="simple" name="attr_other_proficiencies_and_languages" style="min-height: 91px; height: 91px;"></textarea>
<div class="complex">
<div class="top">
<span class="label" style="width: 50px;" data-i18n="type-u">TYPE</span>
<span class="label" style="width: 135px;" data-i18n="proficency-u">PROFICIENCY</span>
</div>
<fieldset class="repeating_proficiencies">
<div class="proficiency">
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<div class="options">
<div class="sheet-row">
<span data-i18n="type:-u">TYPE:</span>
<select name="attr_prof_type">
<option selected="selected" data-i18n="lang-u">LANGUAGE</option>
<option data-i18n="weapon-u">WEAPON</option>
<option data-i18n="armor-u">ARMOR</option>
<option data-i18n="other-u">OTHER</option>
</select>
</div>
<div class="sheet-row" style="margin-bottom: 3px;">
<span data-i18n="proficency-u">PROFICIENCY</span><span>:</span>
<input type="text" name="attr_name" style="width: 165px;" placeholder="Basic, Huttese, Binary">
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<button type="roll" name="roll_output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{prof_type} PROFICIENCY}} {{description=@{name}}}">
<span name="attr_prof_type" style="width: 55px;"></span>
<span name="attr_name" style="width: 159px;"></span>
</button>
</div>
</div>
</fieldset>
</div>
<div class="label">
<span style="margin-top: -10px;" data-i18n="other-prof-langs-u">OTHER PROFICIENCIES & LANGUAGES</span>
</div>
</div>
<div class="textbox-container proficiencies">
<input type="hidden" class="inventoryflag" name="attr_simpleproficencies" value="complex">
<textarea class="simple" name="attr_deployments" style="min-height: 91px; height: 91px;"></textarea>
<div class="complex">
<div class="top">
<span class="label" style="width: 50px;" data-i18n="rank-u">RANK</span>
<span class="label" style="width: 135px;" data-i18n="deployment-u">DEPLOYMENT</span>
</div>
<fieldset class="repeating_deployments">
<div class="deployment">
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<div class="options">
<div class="sheet-row">
<span data-i18n="deployment:-u">DEPLOYMENT:</span>
<select name="attr_deployment_type">
<option selected="selected" data-i18n="coordinator">Coordinator</option>
<option data-i18n="gunner">Gunner</option>
<option data-i18n="mechanic">Mechanic</option>
<option data-i18n="operator">Operator</option>
<option data-i18n="pilot">Pilot</option>
<option data-i18n="technician">Technician</option>
</select>
</div>
<div class="sheet-row" style="margin-bottom: 3px;">
<span data-i18n="rank:-u">RANK:</span>
<input type="number" name="attr_deployment_rank" style="width: 40px;">
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<button type="roll" name="roll_output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{deployment_type} @{deployment_rank}}} {{description=Deployment}}">
<span name="attr_deployment_rank" style="width: 55px;"></span>
<span name="attr_deployment_type" style="width: 159px;"></span>
</button>
</div>
</div>
</fieldset>
</div>
<div class="label">
<span style="margin-top: -10px;" data-i18n="deployments-u">DEPLOYMENTS</span>
</div>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="flex-row flex-align-stretch ac-init-speed-container">
<div class="ac">
<input type="text" name="attr_ac" title="@{ac}">
<span class="label pc-ac" data-i18n="armor-class-u">ARMOR CLASS</span>
</div>
<div class="init">
<span name="attr_initiative_bonus" title="@{initiative_bonus}"></span>
<button type="roll" name="roll_initiative" value="@{wtype}&{template:simple} {{rname=^{init-u}}} {{mod=@{initiative_bonus}}} {{r1=[[@{initiative_style}+@{initiative_bonus}@{pbd_safe}[INIT] &{tracker}]]}} {{normal=1}} @{charname_output}" data-i18n="init-u">INITIATIVE</button>
</div>
<div class="speed">
<input type="text" name="attr_speed" title="@{speed}">
<span class="label" data-i18n="speed-u">SPEED</span>
</div>
</div>
<div class="hp">
<div class="top">
<span data-i18n="hp-max">Hit Point Maximum</span>
<input type="text" name="attr_hp_max" title="@{hp_max}">
</div>
<input type="number" name="attr_hp" title="@{hp}">
<span class="label" data-i18n="hp-current-u">CURRENT HIT POINTS</span>
</div>
<div class="hp" style="min-height: 56px;">
<input type="number" name="attr_hp_temp" title="@{hp_temp}">
<span class="label" data-i18n="hp-temp-u">TEMPORARY HIT POINTS</span>
</div>
<div class="hdice-dsaves-container" style="width: 242px;">
<div class="subcontainer">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_hit_dice_max" title="@{hit_dice_max}">
</div>
<input type="number" name="attr_hit_dice" title="@{hit_dice}" style="margin-bottom: -6px;">
<button type="roll" name="roll_hit_dice" value="@{wtype}&{template:simple} {{rname=^{hit-dice-u}}} {{mod=D@{hitdie_final}+[[@{constitution_mod}[CON]]]}} {{r1=[[1d@{hitdie_final}+[[@{constitution_mod}]][CON]]]}} {{normal=1}} @{charname_output}" data-i18n="hit-dice-u">HIT DICE</button>
</div>
<div class="subcontainer" style="float: right;">
<div class="row-container">
<span data-i18n="successes-u">SUCCESSES</span>
<input type="checkbox" name="attr_deathsave_succ1">
<input type="checkbox" name="attr_deathsave_succ2">
<input type="checkbox" name="attr_deathsave_succ3">
</div>
<div class="row-container">
<span data-i18n="failures-u">FAILURES</span>
<input type="checkbox" name="attr_deathsave_fail1">
<input type="checkbox" name="attr_deathsave_fail2">
<input type="checkbox" name="attr_deathsave_fail3">
</div>
<button type="roll" name="roll_death_save" style="margin-top: 6px;" value="@{wtype}&{template:simple} {{rname=^{death-save-u}}} {{mod=@{death_save_bonus}}} {{r1=[[@{d20}+@{death_save_bonus}[MOD]@{globalsavingthrowbonus}]]}} {{normal=1}} {{global=@{global_save_mod}}} @{charname_output}" data-i18n="death-saves-u">DEATH SAVES</button>
</div>
</div>
<input type="hidden" class="exhaustion-toggle" name="attr_exhaustion_toggle" value="0">
<div class="exhaustion" style="position: relative;">
<input type="number" name="attr_exhaustion_level" step="1" min="0" max="6">
<div class="ex-descriptions">
<span class="ex-description" name="attr_exhaustion_1"></span>
<span class="ex-description" name="attr_exhaustion_2"></span>
<span class="ex-description" name="attr_exhaustion_3"></span>
<span class="ex-description" name="attr_exhaustion_4"></span>
<span class="ex-description" name="attr_exhaustion_5"></span>
<span class="ex-description" name="attr_exhaustion_6"></span>
</div>
<span class="label" data-i18n="exhaustion-u">EXHAUSTION LEVEL</span>
</div>
<input type="hidden" class="ammoflag" name="attr_ammotracking">
<div class="attacks" style="position: relative;">
<div class="top">
<span class="label" style="width: 95px;padding: 0;" data-i18n="name-u">NAME</span>
<span class="label" style="width: 35px;padding: 0;" data-i18n="atk-u">ATK</span>
<span class="label" style="width: 65px;padding: 0;" data-i18n="dmg-type-u">DAMAGE/TYPE</span>
</div>
<fieldset class="repeating_attack">
<div class="attack">
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_atkname">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_atkflag" value="{{attack=1}}" checked="checked">
<span data-i18n="attack:-u">ATTACK:</span>
<select name="attr_atkattr_base">
<option value="@{strength_mod}" data-i18n="str-u">STR</option>
<option value="@{dexterity_mod}" selected="selected" data-i18n="dex-u">DEX</option>
<option value="@{constitution_mod}" data-i18n="con-u">CON</option>
<option value="@{intelligence_mod}" data-i18n="int-u">INT</option>
<option value="@{wisdom_mod}" data-i18n="wis-u">WIS</option>
<option value="@{charisma_mod}" data-i18n="cha-u">CHA</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="0">-</option>
</select>
<span>+</span>
<input type="text" class="num" name="attr_atkmod" placeholder="0">
<span>+</span>
<input type="checkbox" name="attr_atkprofflag" value="(@{pb})" checked="checked" style="margin-left: 3px;">
<span data-i18n="proficient-u">PROFICIENT</span>
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_atkrange" placeholder="Self (60-foot cone)" style="width: 170px;" data-i18n-placeholder="range-place">
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="power-bonus:-u">POWER BONUS:</span>
<input type="text" class="num" name="attr_atkpower" placeholder="0">
<span data-i18n="crit-range-u">CRIT RANGE:</span>
<input type="text" class="num" name="attr_atkcritrange" value="20" placeholder="20">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_dmgflag" value="{{damage=1}} {{dmg1flag=1}}" checked="checked">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_dmgbase" placeholder="1d6" style="width: 50px;">
<span>+</span>
<select name="attr_dmgattr">
<option value="@{strength_mod}" data-i18n="str-u">STR</option>
<option value="@{dexterity_mod}" selected="selected" data-i18n="dex-u">DEX</option>
<option value="@{constitution_mod}" data-i18n="con-u">CON</option>
<option value="@{intelligence_mod}" data-i18n="int-u">INT</option>
<option value="@{wisdom_mod}" data-i18n="wis-u">WIS</option>
<option value="@{charisma_mod}" data-i18n="cha-u">CHA</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="0">-</option>
</select>
<span>+</span>
<input type="text" class="num" name="attr_dmgmod" placeholder="0">
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_dmgtype" placeholder="Slashing" style="width: 50px;" data-i18n-placeholder="dmg-type-place">
<span data-i18n="crit:-u">CRIT:</span>
<input type="text" name="attr_dmgcustcrit" placeholder="1d6" style="width: 80px;">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_dmg2flag" value="{{damage=1}} {{dmg2flag=1}}">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_dmg2base" placeholder="1d6" style="width: 50px;">
<span>+</span>
<select name="attr_dmg2attr">
<option value="@{strength_mod}" data-i18n="str-u">STR</option>
<option value="@{dexterity_mod}" data-i18n="dex-u">DEX</option>
<option value="@{constitution_mod}" data-i18n="con-u">CON</option>
<option value="@{intelligence_mod}" data-i18n="int-u">INT</option>
<option value="@{wisdom_mod}" data-i18n="wis-u">WIS</option>
<option value="@{charisma_mod}" data-i18n="cha-u">CHA</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="0" selected="selected">-</option>
</select>
<span>+</span>
<input type="text" class="num" name="attr_dmg2mod" placeholder="0">
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_dmg2type" placeholder="Slashing" style="width: 50px;" data-i18n-placeholder="dmg-type-place">
<span data-i18n="crit:-u">CRIT:</span>
<input type="text" name="attr_dmg2custcrit" placeholder="1d6" style="width: 80px;">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_saveflag" value="{{save=1}} {{saveattr=@{saveattr}}} {{savedesc=@{saveeffect}}} {{savedc=[[[[@{savedc}]][SAVE]]]}}">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_saveattr">
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" selected="selected" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="vs-dc:-u">VS DC:</span>
<select name="attr_savedc">
<option value="(@{power_save_dc})" selected="selected" data-i18n="power-u">POWER</option>
<option value="(@{strength_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="str-u">STR</option>
<option value="(@{dexterity_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="dex-u">DEX</option>
<option value="(@{constitution_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="con-u">CON</option>
<option value="(@{intelligence_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="int-u">INT</option>
<option value="(@{wisdom_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="wis-u">WIS</option>
<option value="(@{charisma_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="cha-u">CHA</option>
<option value="(@{saveflat})" data-i18n="flat-u">FLAT</option>
</select>
<input class="flatflag" type="hidden" name="attr_savedc">
<input class="num flat" type="text" name="attr_saveflat" placeholder="10" value="10">
</div>
<div class="sheet-row">
<span data-i18n="save-effect:-u">SAVE EFFECT:</span>
<input type="text" name="attr_saveeffect" placeholder="half damage" style="width: 160px;" data-i18n-placeholder="save-effect-place">
</div>
<div class="sheet-row ammo">
<span data-i18n="ammunition:-u">AMMUNITION:</span>
<input type="text" name="attr_ammo" placeholder="Arrows" style="width: 160px;" data-i18n-placeholder="ammunition-place">
</div>
<div class="sheet-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
<textarea name="attr_atk_desc" placeholder="Up to 2 creatures within 5 feet" data-i18n-placeholder="description-place"></textarea>
</div>
</div>
<div class="display">
<button type="roll" name="roll_attack" value="@{rollbase}">
<span name="attr_atkname" style="width: 85px;"></span>
<input type="text" name="attr_atkbonus" style="width: 40px; text-align: center;" value="">
<input type="text" name="attr_atkdmgtype" style="width: 90px;" value="">
</button>
</div>
</div>
<input type="hidden" name="attr_rollbase">
<input type="hidden" name="attr_rollbase_dmg">
<input type="hidden" name="attr_rollbase_crit">
<input type="hidden" name="attr_hldmg">
<input type="hidden" name="attr_powerlevel">
<input type="hidden" name="attr_itemid">
<input type="hidden" name="attr_powerid">
<input type="hidden" name="attr_power_innate">
<input type="hidden" name="attr_versatile_alt">
<button type="roll" name="roll_attack_dmg" style="display: none;" value="@{rollbase_dmg}"></button>
<button type="roll" name="roll_attack_crit" style="display: none;" value="@{rollbase_crit}"></button>
</fieldset>
<input type="hidden" class="toggleflag" name="attr_global_attack_mod_flag">
<div class="conditional-visibility textbox globalattack">
<span class="label" data-i18n="global-attack-u">GLOBAL ATTACK MODIFIER</span>
<fieldset class="repeating_tohitmod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_attack_active_flag" value="1" class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_attack_rollstring" placeholder="1d4[BLESS]"></textarea>
</div>
<div class="display">
<span class="title" name="attr_global_attack_rollstring"></span>
</div>
</div>
</fieldset>
</div>
<input type="hidden" class="toggleflag" name="attr_global_damage_mod_flag">
<div class="conditional-visibility textbox globalattack">
<span class="label" data-i18n="global-damage-u">GLOBAL DAMAGE MODIFIER</span>
<fieldset class="repeating_damagemod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_damage_active_flag" value="1" class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_damage_rollstring" placeholder="1d6[SNEAK ATTACK]"></textarea>
<div class="sheet-row" style="margin-bottom: 5px;">
<span style="display: inline; margin-left: 25px;" data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_global_damage_type" value="">
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span class="title" name="attr_global_damage_rollstring" style="width: 110px; padding-right: 0px;"></span>
<span class="subheader" name="attr_global_damage_type" style="padding-right: 0px;"></span>
</div>
</div>
</fieldset>
</div>
<span class="label" style="margin-top: 0px; position: absolute; bottom: 0px;" data-i18n="atk-powercasting-u">ATTACKS & POWERCASTING</span>
</div>
<div class="equipment">
<div class="money">
<div class="coin">
<span class="label" data-i18n="credit-piece-u">CR</span>
<input type="text" name="attr_cr" title="@{cr}">
</div>
</div>
<input type="hidden" class="inventoryflag" name="attr_simpleinventory" value="complex">
<textarea class="simple" name="attr_equipment"></textarea>
<div class="complex">
<input type="hidden" class="warningflag" name="attr_armorwarningflag">
<div class="warning">
<span data-i18n="warning-armor-sets-u">
<input type="checkbox" name="attr_armorwarning" value="hide">
WARNING - MULTIPLE SETS OF ARMOR OR SHIELDS HAVE BEEN ADDED AND AC IS NOT CORRECTLY CALCULATED. UNEQUIP THE ARMOR PIECE FROM THE ITEM DETAILS.
</span>
</div>
<div class="header" style="height: auto;">
<span class="pictos" style="width: 25px; font-size: 15px;">*</span>
<span style="width: 100px; text-align: left;" data-i18n="item-name-u">ITEM NAME</SPAN>
<span style="width: 25px;"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/5th%20Edition%20OGL%20by%20Roll20/images/weight_lbs.png" style="width: 15px; margin-bottom: -3px;"></span>
</div>
<fieldset class="repeating_inventory">
<input type="hidden" class="equippedflag" name="attr_equipped">
<div class="item">
<input class="weight" type="text" name="attr_itemcount" value="1">
<input class="name" type="text" name="attr_itemname">
<input class="weight" type="text" name="attr_itemweight">
<input class="inventorysubflag" type="checkbox" name="attr_inventorysubflag"><span>i</span>
<div class="subitem">
<input class="equipped" type="checkbox" name="attr_equipped" value="1" checked="checked">
<span class="equippedlabel" data-i18n="equipped-u">EQUIPPED</span>
<input class="equipped" type="checkbox" name="attr_useasresource" value="1">
<span class="equippedlabel" data-i18n="use-as-resource-u">USE AS A RESOURCE</span>
<input class="equipped" type="checkbox" name="attr_hasattack" value="1">
<span class="equippedlabel" data-i18n="has-attack-u">HAS AN ATTACK</span>
<span class="label" data-i18n="prop:-u">PROP:</span>
<input class="subfield" type="text" name="attr_itemproperties">
<span class="label" data-i18n="mods:-u">MODS:</span>
<input class="subfield" type="text" name="attr_itemmodifiers">
<textarea class="subtextarea" name="attr_itemcontent"></textarea>
</div>
<input type="hidden" name="attr_itemattackid">
<input type="hidden" name="attr_itemresourceid">
</div>
</fieldset>
<div class="weighttotal">
<span class="label" data-i18n="total-weight-u">TOTAL WEIGHT</span>
<input type="text" name="attr_weighttotal" value="0">
<input type="hidden" class="encumberance" name="attr_encumberance">
<span class="encumb immobile" data-i18n="immobile-u">IMMOBILE</span>
<span class="encumb heavily" data-i18n="heavily-encumbered-u">HEAVILY ENCUMBERED</span>
<span class="encumb encumbered" data-i18n="encumbered-u">ENCUMBERED</span>
<span class="encumb over" data-i18n="over-carrying-cap-u">OVER CARRYING CAPACITY</span>
</div>
</div>
<span class="label" style="margin-top: 0px; position: absolute; bottom: 0px;" data-i18n="equipment-u">EQUIPMENT</span>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="textbox pibf">
<input class="options-flag" type="checkbox" name="attr_options-flag-personality" checked="checked"><span>y</span>
<div class="options">
<textarea name="attr_personality_traits" style="min-height: 50px; height: 50px;"></textarea>
</div>
<div class="display">
<span name="attr_personality_traits"></span>
</div>
<span class="label" data-i18n="personality-traits-u">PERSONALITY TRAITS</span>
</div>
<div class="textbox pibf">
<input class="options-flag" type="checkbox" name="attr_options-flag-ideals" checked="checked"><span>y</span>
<div class="options">
<textarea name="attr_ideals"></textarea>
</div>
<div class="display">
<span name="attr_ideals"></span>
</div>
<span class="label" data-i18n="ideals-u">IDEALS</span>
</div>
<div class="textbox pibf">
<input class="options-flag" type="checkbox" name="attr_options-flag-bonds" checked="checked"><span>y</span>
<div class="options">
<textarea name="attr_bonds"></textarea>
</div>
<div class="display">
<span name="attr_bonds"></span>
</div>
<span class="label" data-i18n="bonds-u">BONDS</span>
</div>
<div class="textbox pibf">
<input class="options-flag" type="checkbox" name="attr_options-flag-flaws" checked="checked"><span>y</span>
<div class="options">
<textarea name="attr_flaws" style="min-height: 46px; height: 46px;"></textarea>
</div>
<div class="display">
<span name="attr_flaws"></span>
</div>
<span class="label" data-i18n="flaws-u">FLAWS</span>
</div>
<div class="resources">
<div class="hdice-dsaves-container" style="width: 246px; margin-top: 10px;">
<div class="subcontainer" style="height: 64px; width: 119px;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_class_resource_max" title="@{class_resource_max}">
</div>
<input type="number" class="stepper" name="attr_class_resource" title="@{class_resource}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_class_resource_name" title="@{class_resource_name}" placeholder="CLASS RESOURCE" data-i18n-placeholder="class-resource-u">
</div>
<div class="subcontainer" style="height: 64px; width: 119px; float: right;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_other_resource_max" title="@{other_resource_max}">
</div>
<input type="number" class="stepper" name="attr_other_resource" title="@{other_resource}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_other_resource_name" title="@{other_resource_name}" placeholder="OTHER RESOURCE" data-i18n-placeholder="other-resource-u">
<input type="hidden" name="attr_other_resource_itemid">
</div>
</div>
<fieldset class="repeating_resource">
<div class="hdice-dsaves-container" style="width: 246px; margin-top: 10px;">
<div class="subcontainer" style="height: 64px; width: 119px;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_resource_left_max" title="@{repeating_resource_left_max}">
</div>
<input type="number" class="stepper" name="attr_resource_left" title="@{repeating_resource_left}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_resource_left_name" title="@{repeating_resource_left_name}" placeholder="OTHER RESOURCE" data-i18n-placeholder="other-resource-u">
<input type="hidden" name="attr_resource_left_itemid">
</div>
<div class="subcontainer" style="height: 64px; width: 119px;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_resource_right_max" title="@{repeating_resource_right_max}">
</div>
<input type="number" class="stepper" name="attr_resource_right" title="@{repeating_resource_right}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_resource_right_name" title="@{repeating_resource_right_name}" placeholder="OTHER RESOURCE" data-i18n-placeholder="other-resource-u">
<input type="hidden" name="attr_resource_right_itemid">
</div>
</div>
</fieldset>
</div>
<div class="textbox traits" style="min-height: 480px;">
<input type="hidden" class="inventoryflag" name="attr_simpletraits" value="complex">
<textarea class="simple" name="attr_features_and_traits" style="min-height: 461px; height: 461px;"></textarea>
<div class="complex">
<fieldset class="repeating_traits">
<div class="trait">
<button type="roll" name="roll_output" class="output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{name}}} {{source=@{source}: @{source_type}}} {{description=@{description}}}">w</button>
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<input class="display-flag" type="checkbox" name="attr_display_flag">
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name" style="width: 120px;">
</div>
<div class="sheet-row">
<span data-i18n="source:-u">SOURCE:</span>
<select name="attr_source">
<option selected="selected" data-i18n="racial">Racial</option>
<option data-i18n="class">Class</option>
<option data-i18n="feat">Feat</option>
<option data-i18n="background">Background</option>
<option data-i18n="other">Other</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="source-type:-u">SOURCE TYPE:</span>
<input type="text" name="attr_source_type" style="width: 160px;" placeholder="Bothan/Fighter/4th Level">
</div>
<div class="sheet-row">
<textarea name="attr_description" style="min-height: 200px; height: 200px;"></textarea>
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span class="title" name="attr_name"></span>
<span class="subheader">
<span name="attr_source"></span><span>: </span><span name="attr_source_type"></span>
</span>
<span class="desc" name="attr_description"></span>
</div>
</div>
</fieldset>
</div>
<span class="label" data-i18n="feats-traits-u" style="margin-top: 0px; position: absolute; bottom: 0px;">FEATURES & TRAITS</span>
</div>
<input type="hidden" class="missing-info-flag" name="attr_missing_info">
<div class="missing-info">
<span><span class="info-popup pictos">i</span> Looking for missing data?</span>
<span class="missing-info-desc">Your data is in the simple version that can be re-enabled from the Settings(gear) tab of the character sheet. Under GENERAL OPTIONS and then FEATS & TRAITS. Set the section to be 'Simple'.</span>
</div>
</div>
</div>
</div>
<div class="tab bio">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="char-name-u">CHARACTER NAME</span>
</div>
<div class="header-info">
<div class="top" style="position: relative; top: 10px;">
<div class="hlabel-container">
<input type="text" name="attr_age" style="width: 120px;">
<span class="label" data-i18n="age-u">AGE</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_size" style="width: 120px;">
<span class="label" data-i18n="size-u">SIZE</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_height" style="width: 120px;">
<span class="label" data-i18n="height-u">HEIGHT</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_weight" style="width: 120px;">
<span class="label" data-i18n="weight-u">WEIGHT</span>
</div>
</div>
<div class="bottom">
<div class="hlabel-container">
<input type="text" name="attr_eyes" style="width: 160px;">
<span class="label" data-i18n="eye-u">EYES</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_skin" style="width: 160px;">
<span class="label" data-i18n="skin-u">SKIN</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_hair" style="width: 160px;">
<span class="label" data-i18n="hair-u">HAIR</span>
</div>
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="pc-btn-group">
<input type="hidden" name="attr_tab">
<button type="action" name="act_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_tab_bio"><span data-i18n="bio-u">BIO</span></button>
<button type="action" name="act_tab_powers"><span data-i18n="powers-u">POWERS</span></button>
<button type="action" name="act_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-4">
<div class="textbox">
<textarea name="attr_character_appearance" style="min-height: 300px; height: 300px;"></textarea>
<span class="label" data-i18n="char-appearance-u">CHARACTER APPEARANCE</span>
</div>
<div class="textbox">
<textarea name="attr_character_backstory" style="min-height: 623px; height: 623px;"></textarea>
<span class="label" data-i18n="char-backstory-u">CHARACTER BACKSTORY</span>
</div>
<div class="textbox">
<textarea name="attr_miscellaneous" style="min-height: 300px; height: 300px;"></textarea>
<span class="label" data-i18n="miscellaneous-u">MISCELLANEOUS</span>
</div>
</div>
<div class="flex-column flex-w-8">
<div class="textbox">
<textarea name="attr_allies_and_organizations" style="min-height: 288px; height: 300px;"></textarea>
<span class="label" data-i18n="allies-orgs-u">ALLIES & ORGANIZATIONS</span>
</div>
<div class="textbox">
<textarea name="attr_additional_feature_and_traits" style="min-height: 289px; height: 300px;"></textarea>
<span class="label" data-i18n="add-feats-traits-u">ADDITIONAL FEATURES & TRAITS</span>
</div>
<div class="textbox">
<textarea name="attr_treasure" style="min-height: 300px; height: 300px;"></textarea>
<span class="label" data-i18n="treasure-u">LOOT</span>
</div>
<div class="textbox">
<textarea name="attr_storage" style="min-height: 300px; height: 300px;"></textarea>
<span class="label" data-i18n="storage-u">STORAGE</span>
</div>
</div>
</div>
</div>
<div class="tab powers">
<div class="header flex-row">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="char-name-u">CHARACTER NAME</span>
</div>
<div class="header-info flex flex-row flex-justify-sa">
<div class="part flex-w-4">
<select name="attr_powercasting_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
<span class="label break-lang" data-i18n="power-ability-u">POWERCASTING ABILITY</span>
</div>
<div class="part flex-w-4">
<span class="display" name="attr_power_save_dc"></span>
<span class="label break-lang" data-i18n="power-save-dc-u">POWER SAVE DC</span>
</div>
<div class="part flex-w-4">
<span class="display" name="attr_power_attack_bonus"></span>
<span class="label break-lang" data-i18n="power-atk-bonus-u">POWER ATTACK BONUS</span>
</div>
</div>
</div>
<input type="hidden" class="powericon_flag" name="attr_powericon_flag" value="all">
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="pc-btn-group">
<input type="hidden" name="attr_tab">
<button type="action" name="act_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_tab_bio"><span data-i18n="bio-u">BIO</span></button>
<button type="action" name="act_tab_powers"><span data-i18n="powers-u">POWERS</span></button>
<button type="action" name="act_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-4">
<div class="power-labels">
<span data-i18n="force_slots_total-u">FORCE TOTAL</span>
<span data-i18n="force_slots_remaining-u">FORCE REMAINING</span>
</div>
<div class="power-level">
<div class="level">
<span>FP</span>
</div>
<div class="total">
<input type="number" name="attr_force_power_points_total" value="0">
</div>
<div class="expended">
<input type="number" name="attr_force_power_points_expended" value="0">
</div>
</div>
<div class="power-labels">
<span data-i18n="tech_slots_total-u">TECH TOTAL</span>
<span data-i18n="tech_slots_remaining-u">TECH REMAINING</span>
</div>
<div class="power-level">
<div class="level">
<span>TP</span>
</div>
<div class="total">
<input type="number" name="attr_tech_power_points_total" value="0">
</div>
<div class="expended">
<input type="number" name="attr_tech_power_points_expended" value="0">
</div>
</div>
<br>
<div class="power-level">
<div class="level">
<span>0</span>
</div>
<div class="cantrips">
<span data-i18n="cantrips-u">AT-WILL</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-cantrip">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="cantrip-progression:-u">AT-WILL PROGRESSION</span>
<select name="attr_power_damage_progression">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Cantrip Dice" data-i18n="cantrip-dice-u">AT-WILL DICE</option>
<option value="Cantrip Beam" data-i18n="cantrip-beam-u">AT-WILL BEAM</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="cantrip">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>1</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-1">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="1">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>2</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-2">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="2">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="power-level">
<div class="level">
<span>3</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-3">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="3">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>4</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-4">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="4">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<!-- Edited Spell Adding here ppl -->
<div class="power-level">
<div class="level">
<span>5</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-5">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="5">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<!-- Removed Components Here -->
</div>
<div class="flex-column flex-w-4">
<div class="power-level">
<div class="level">
<span>6</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-6">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="6">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>7</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-7">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="7">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>8</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-8">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="8">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
<div class="power-level">
<div class="level">
<span>9</span>
</div>
</div>
<div class="power-container">
<fieldset class="repeating_power-9">
<div class="power">
<input class="options-flag" type="checkbox" name="attr_options-flag"
checked="checked"><span>y</span>
<div class="options">
<div class="flex-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_powername">
</div>
<div class="flex-row">
<span data-i18n="school:-u">SCHOOL:</span>
<select name="attr_powerschool">
<option value="force" data-i18n="force">Force</option>
<option value="tech" data-i18n="tech">Tech</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="casting-time:-u">CASTING TIME:</span>
<input type="text" name="attr_powercastingtime">
</div>
<div class="flex-row">
<span data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_powerrange">
</div>
<div class="flex-row">
<span data-i18n="target:-u">TARGET:</span>
<input type="text" name="attr_powertarget">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerconcentration" value="{{concentration=1}}">
<span data-i18n="concentration-u">CONCENTRATION</span>
</div>
<div class="flex-row">
<span data-i18n="duration:-u">DURATION:</span>
<input type="text" name="attr_powerduration">
</div>
<div class="flex-row">
<span data-i18n="power-ability-u">POWERCASTING ABILITY</span>
<select name="attr_power_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="innate:-u">INNATE:</span>
<input type="text" name="attr_innate" placeholder="1/day" value="">
</div>
<div class="flex-row">
<span data-i18n="output:-u">OUTPUT:</span>
<select name="attr_poweroutput">
<option value="POWERCARD" data-i18n="powercard-u">POWERCARD</option>
<option value="ATTACK" data-i18n="attack-u">ATTACK</option>
</select>
</div>
<input type="hidden" class="powerattackinfoflag" name="attr_poweroutput">
<div class="powerattackinfo">
<div class="flex-row">
<span data-i18n="power-atk:-u">POWER ATTACK:</span>
<select name="attr_powerattack">
<option value="None" data-i18n="none">None</option>
<option value="Melee" data-i18n="melee">Melee</option>
<option value="Ranged" data-i18n="ranged">Ranged</option>
</select>
</div>
<div class="flex-row">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_powerdamage" style="width: 50px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_powerdamage2" style="width: 45px;">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_powerdamagetype2" style="width: 103px;">
</div>
<div class="flex-row">
<span data-i18n="healing:-u">HEALING:</span>
<input type="text" name="attr_powerhealing" style="width: 45px;">
</div>
<div class="flex-row">
<input type="checkbox" name="attr_powerdmgmod" value="Yes">
<span data-i18n="add-ability-mod-u">ADD ABILITY MOD TO DAMAGE OR HEALING</span>
</div>
<div class="flex-row">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_powersave">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="effect:-u">EFFECT:</span>
<input type="text" name="attr_powersavesuccess" style="width: 78px;"
placeholder="Half damage" data-i18n-placeholder="half-dmg-place">
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl-dmg:-u">HIGHER LVL CAST DMG:</span>
<input type="text" name="attr_powerhldie" placeholder="1"
style="width: 15px; text-align: right;">
<select name="attr_powerhldietype">
<option value="" selected="selected" data-i18n="none-u">NONE</option>
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<span>+</span>
<input type="text" name="attr_powerhlbonus" placeholder="0"
style="width: 15px; text-align: center;">
</div>
<div class="flex-row">
<span data-i18n="include_power_desc:-u">INCLUDE POWER DESCRIPTION IN ATTACK:</span>
<select name="attr_includedesc">
<option value="off" selected="selected" data-i18n="off">Off</option>
<option value="partial" data-i18n="partial">Partial</option>
<option value="on" data-i18n="on">On</option>
</select>
</div>
</div>
<div class="flex-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerdescription"></textarea>
</div>
<div class="flex-row">
<span data-i18n="at-higher-lvl:-u">AT HIGHER LEVELS:</span>
</div>
<div class="flex-row">
<textarea name="attr_powerathigherlevels"
style="height: 36px; min-height: 36px;"></textarea>
</div>
<input type="hidden" name="attr_powerattackid">
<input type="hidden" name="attr_powerlevel" value="9">
</div>
<div class="flex-row display">
<input type="hidden" name="attr_rollcontent"
value="@{wtype}&{template:power} {{level=@{powerschool} @{powerlevel}}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}">
<input type="checkbox" name="attr_powerprepared" value="1" class="prep-box"><span
class="prep"></span>
<button class="powercard" type="roll" name="roll_power" value="@{rollcontent}">
<span class="powername" name="attr_powername"></span>
<input class="innate_flag" type="hidden" name="attr_innate" value="">
<span class="innate" name="attr_innate"></span>
</button>
<input type="hidden" class="powerconcentration" name="attr_powerconcentration" value="0">
<span class="powerconcentration" data-i18n="power-concentration">C</span>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="tab options">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="char-name-u">CHARACTER NAME</span>
</div>
<input class="options-flag" type="checkbox" name="attr_options-class-selection" checked="checked"><span>y</span>
<div class="header-info options">
<div class="sheet-row" style="border-top: 2px dashed gold;">
<span data-i18n="class:-u">CLASS:</span>
<input type="hidden" name="attr_custom_class" class="flag">
<select class="hiding class" name="attr_class">
<option value="" data-i18n="choose">Choose</option>
<option value="Berserker" data-i18n="berserker">Berserker</option>
<option value="Consular" data-i18n="consular">Consular</option>
<option value="Engineer" data-i18n="engineer">Engineer</option>
<option value="Fighter" data-i18n="fighter">Fighter</option>
<option value="Guardian" data-i18n="guardian">Guardian</option>
<option value="Monk" data-i18n="monk">Monk</option>
<option value="Operative" data-i18n="operative">Operative</option>
<option value="Scholar" data-i18n="scholar">Scholar</option>
<option value="Scout" data-i18n="scout">Scout</option>
<option value="Sentinel" data-i18n="sentinel">Sentinel</option>
</select>
<input type="text" class="showing" name="attr_cust_classname" style="width: 90px;">
<span data-i18n="subclass:-u">SUBCLASS:</span>
<input type="text" name="attr_subclass">
<span data-i18n="lvl:-u">LEVEL:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_level" value="1">
</div>
<div class="sheet-row">
<span data-i18n="race:-u">RACE:</span>
<input type="text" name="attr_race">
<span data-i18n="subrace:-u">SUBRACE:</span>
<input type="text" name="attr_subrace">
</div>
</div>
<div class="header-info display">
<div class="top">
<div class="hlabel-container">
<input type="text" name="attr_class_display" class="class-display no_events">
<span class="label" data-i18n="class-level-u">CLASS & LEVEL</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_background" style="width: 182px;">
<span class="label" data-i18n="background-u">BACKGROUND</span>
</div>
</div>
<div class="bottom">
<div class="hlabel-container">
<input type="text" name="attr_race_display" class="no_events">
<span class="label" data-i18n="race-u">RACE</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_alignment">
<span class="label" data-i18n="alignment-u">ALIGNMENT</span>
</div>
<div class="hlabel-container">
<input type="text" name="attr_experience">
<span class="label" data-i18n="exp-pts-u">EXPERIENCE POINTS</span>
</div>
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="pc-btn-group">
<input type="hidden" name="attr_tab">
<button type="action" name="act_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_tab_bio"><span data-i18n="bio-u">BIO</span></button>
<button type="action" name="act_tab_powers"><span data-i18n="powers-u">POWERS</span></button>
<button type="action" name="act_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-4">
<div class="class_options">
<div class="sheet-row">
<span data-i18n="hit-die:-u">HIT DIE:</span>
<select name="attr_hitdietype">
<option value="4">D4</option>
<option value="6">D6</option>
<option value="8">D8</option>
<option value="10">D10</option>
<option value="12">D12</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="carrying-capacity-mod:-u">CARRYING CAPACITY MODIFIER:</span>
<input type="text" class="num" name="attr_carrying_capacity_mod" placeholder="*2">
</div>
<div class="sheet-row">
<span data-i18n="glob-atk-mod:-u">GLOBAL POWER ATTACK MODIFIER:</span>
<input type="text" class="num" name="attr_globalpowermod" placeholder="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="power-caster-lvl:-u">POWER CASTER LEVEL:</span>
<input type="text" class="num" name="attr_caster_level">
</div>
<div class="sheet-row">
<span data-i18n="power_dc_mod:-u">POWER SAVE DC MOD:</span>
<input type="text" class="num" name="attr_power_dc_mod" placeholde="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="power-icons:-u">POWER ICONS:</span>
<select name="attr_powericon_flag">
<option value="all" data-i18n="show_all">Show All</option>
<option value="cp" data-i18n="cr_only">C&R Only</option>
<option value="none" data-i18n="none">None</option>
</select>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_precognition_flag" value="1">
<span data-i18n="precognition-u">PRECOGNITION (REROLL ONES)</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_tech_fighter" value="1">
<span data-i18n="tech-fighter-u">TECH FIGHTER</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_tech_operative" value="1">
<span data-i18n="tech-operative-u">TECH OPERATIVE</span>
</div>
<div class="sheet-row title">
<span data-i18n="class-options-u">CLASS OPTIONS</span>
</div>
</div>
<div class="class_options">
<div class="sheet-row">
<input type="checkbox" name="attr_multiclass1_flag" value="1">
<span data-i18n="2nd-class:-u">2ND CLASS:</span>
<select name="attr_multiclass1" style="width: 64px;">
<option value="berserker" data-i18n="berserker">Berserker</option>
<option value="scholar" data-i18n="scholar">Scholar</option>
<option value="engineer" data-i18n="engineer">Engineer</option>
<option value="fighter" data-i18n="fighter">Fighter</option>
<option value="monk" data-i18n="monk">Monk</option>
<option value="guardian" data-i18n="guardian">Guardian</option>
<option value="scout" data-i18n="scout">Scout</option>
<option value="operative" data-i18n="operative">Operative</option>
<option value="sentinel" data-i18n="sentinel">Sentinel</option>
<option value="consular" data-i18n="consular">Consular</option>
</select>
<span data-i18n="lvl:-u">LEVEL:</span>
<input type="text" name="attr_multiclass1_lvl" value="1" style="width: 28px; text-align: center;">
<span data-i18n="subclass:-u" class="subclass">SUBCLASS:</span>
<input type="text" name="attr_multiclass1_subclass">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_multiclass2_flag" value="1">
<span data-i18n="3rd-class:-u">3RD CLASS:</span>
<select name="attr_multiclass2" style="width: 64px;">
<option value="berserker" data-i18n="berserker">Berszerker</option>
<option value="scholar" data-i18n="scholar">Scholar</option>
<option value="engineer" data-i18n="engineer">Engineer</option>
<option value="fighter" data-i18n="fighter">Fighter</option>
<option value="monk" data-i18n="monk">Monk</option>
<option value="guardian" data-i18n="guardian">Guardian</option>
<option value="scout" data-i18n="scout">Scout</option>
<option value="operative" data-i18n="operative">Operative</option>
<option value="sentinel" data-i18n="sentinel">Sentinel</option>
<option value="consular" data-i18n="consular">Consular</option>
</select>
<span data-i18n="lvl:-u">LEVEL:</span>
<input type="text" name="attr_multiclass2_lvl" value="1" style="width: 28px; text-align: center;">
<span data-i18n="subclass:-u" class="subclass">SUBCLASS:</span>
<input type="text" name="attr_multiclass2_subclass">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_multiclass3_flag" value="1">
<span data-i18n="4th-class:-u">4TH CLASS:</span>
<select name="attr_multiclass3" style="width: 64px;">
<option value="berserker" data-i18n="berserker">Berserker</option>
<option value="scholar" data-i18n="scholar">Scholar</option>
<option value="engineer" data-i18n="engineer">Engineer</option>
<option value="fighter" data-i18n="fighter">Fighter</option>
<option value="monk" data-i18n="monk">Monk</option>
<option value="guardian" data-i18n="guardian">Guardian</option>
<option value="scout" data-i18n="scout">Scout</option>
<option value="operative" data-i18n="operative">Operative</option>
<option value="sentinel" data-i18n="sentinel">Sentinel</option>
<option value="consular" data-i18n="consular">Consular</option>
</select>
<span data-i18n="lvl:-u">LEVEL:</span>
<input type="text" name="attr_multiclass3_lvl" value="1" style="width: 28px; text-align: center;">
<span data-i18n="subclass:-u" class="subclass">SUBCLASS:</span>
<input type="text" name="attr_multiclass3_subclass">
</div>
<div class="sheet-row title">
<span data-i18n="mutliclass-opts-u">MULTICLASS OPTIONS</span>
</div>
</div>
<div class="class_options">
<div class="sheet-row">
<input type="checkbox" name="attr_custom_class" value="1">
<span data-i18n="use-cust-class-u">USE CUSTOM CLASS</span>
</div>
<div class="sheet-row">
<span data-i18n="class-name:-u">CLASS NAME:</span>
<input type="text" name="attr_cust_classname">
</div>
<div class="sheet-row">
<span data-i18n="hit-die:-u">HIT DIE:</span>
<select name="attr_cust_hitdietype">
<option value="4">D4</option>
<option value="6">D6</option>
<option value="8">D8</option>
<option value="10">D10</option>
<option value="12">D12</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="powercasting-ability:-u">POWERCASTING ABILITY:</span>
<select name="attr_cust_powercasting_ability">
<option value="0*" data-i18n="none-u">NONE</option>
<option value="@{strength_mod}+" data-i18n="strength-u">STRENGTH</option>
<option value="@{dexterity_mod}+" data-i18n="dexterity-u">DEXTERITY</option>
<option value="@{constitution_mod}+" data-i18n="constitution-u">CONSTITUTION</option>
<option value="@{intelligence_mod}+" data-i18n="intelligence-u">INTELLIGENCE</option>
<option value="@{wisdom_mod}+" data-i18n="wisdom-u">WISDOM</option>
<option value="@{charisma_mod}+" data-i18n="charisma-u">CHARISMA</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="power-slots:-u">POWER SLOTS:</span>
<select name="attr_cust_powerslots">
<option value="none" data-i18n="none-u">NONE</option>
<option value="full" data-i18n="power-full-u">FULL (Engineer, Druid, Consular)</option>
<option value="half" data-i18n="power-half-u">HALF (Guardian, Scout)</option>
<option value="third" data-i18n="power-third-u">THIRD (Tech Fighter/Operative)</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="saves-u">SAVES</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_cust_strength_save_prof" value="(@{pb})">
<span data-i18n="strength">Strength</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_cust_dexterity_save_prof" value="(@{pb})">
<span data-i18n="dexterity">Dexterity</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_cust_constitution_save_prof" value="(@{pb})">
<span data-i18n="constitution">Constitution</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_cust_intelligence_save_prof" value="(@{pb})">
<span data-i18n="intelligence">Intelligence</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_cust_wisdom_save_prof" value="(@{pb})">
<span data-i18n="wisdom">Wisdom</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_cust_charisma_save_prof" value="(@{pb})">
<span data-i18n="charisma">Charisma</span>
</div>
<div class="sheet-row title">
<span data-i18n="cust-class-opts">CUSTOM CLASS OPTIONS</span>
</div>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="attribute_options" style="width: 234px;">
<div class="sheet-row skill">
<span data-i18n="strength-u">STRENGTH</span>
<span>+</span><input type="text" class="num" name="attr_strength_bonus" value="0" placeholder="0" title="@{strength_bonus}">
</div>
<div class="sheet-row skill">
<span data-i18n="dexterity-u">DEXTERITY</span>
<span>+</span><input type="text" class="num" name="attr_dexterity_bonus" value="0" placeholder="0" title="@{dexterity_bonus}">
</div>
<div class="sheet-row skill">
<span data-i18n="constitution-u">CONSTITUTION</span>
<span>+</span><input type="text" class="num" name="attr_constitution_bonus" value="0" placeholder="0" title="@{constitution_bonus}">
</div>
<div class="sheet-row skill">
<span data-i18n="intelligence-u">INTELLIGENCE</span>
<span>+</span><input type="text" class="num" name="attr_intelligence_bonus" value="0" placeholder="0" title="@{intelligence_bonus}">
</div>
<div class="sheet-row skill">
<span data-i18n="wisdom-u">WISDOM</span>
<span>+</span><input type="text" class="num" name="attr_wisdom_bonus" value="0" placeholder="0" title="@{wisdom_bonus}">
</div>
<div class="sheet-row skill">
<span data-i18n="charisma-u">CHARISMA</span>
<span>+</span><input type="text" class="num" name="attr_charisma_bonus" value="0" placeholder="0" title="@{charisma_bonus}">
</div>
<div class="sheet-row">
<span data-i18n="initiative-mod:-u">INITIATIVE MODIFIER:</span>
<input type="text" class="num" name="attr_initmod" placeholder="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="initiative-style:-u">INITIATIVE STYLE:</span>
<select name="attr_initiative_style">
<option value="@{d20}" selected="selected" data-i18n="norm">Normal</option>
<option value="{@{d20},@{d20}}kh1" data-i18n="adv">Advantage</option>
<option value="{@{d20},@{d20}}kl1" data-i18n="disadv">Disadvantage</option>
<!-- <option value="?{Advantage?|Normal Roll,&#64;&#123;d20&#125;|Advantage,&#123;&#64;&#123;d20&#125;&#44;&#64;&#123;d20&#125;&#125;kh1|Disadvantage,&#123;&#64;&#123;d20&#125;&#44;&#64;&#123;d20&#125;&#125;kl1}" data-i18n="query-roll-adv">Query Advantage</option> -->
<!-- Pajellen was here -->
</select>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_init_tiebreaker" value="@{dexterity}/100">
<span data-i18n="add-dex-tiebreaker-u">ADD DEX TIEBREAKER TO INITIATIVE</span>
</div>
<div class="sheet-row">
<span data-i18n="glob-ac-mod:-u">GLOBAL ARMOR CLASS MODIFIER:</span>
<input type="text" class="num" name="attr_globalacmod" placeholder="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="armor-class-tracking:-u">ARMOR CLASS TRACKING:</span>
<select name="attr_custom_ac_flag">
<option value="0" selected="selected" data-i18n="automatic">Automatic</option>
<option value="1" data-i18n="custom">Custom</option>
<option value="2" data-i18n="off">Off</option>
</select>
</div>
<input class="toggleflag" type="hidden" name="attr_custom_ac_flag">
<div class="sheet-row conditional-visibility">
<span data-i18n="custom_ac:-u">CUSTOM AC:</span>
<input type="text" class="num" name="attr_custom_ac_base" placeholder="10" value="10">
<span>+</span>
<select name="attr_custom_ac_part1">
<option value="none" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span>+</span>
<select name="attr_custom_ac_part2">
<option value="none" selected="selected" data-i18n="none-u">NONE</option>
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
</div>
<div class="sheet-row title">
<span data-i18n="attribute-opts-u">ATTRIBUTE OPTIONS</span>
</div>
</div>
<div class="save_options" style="width: 234px;">
<div class="sheet-row skill">
<span data-i18n="strength-save-u">Strength Save</span>
<span>+</span><input type="text" class="num" name="attr_strength_save_mod" value="0" placeholder="0" title="@{strength_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="dexterity-save-u">Dexterity Save</span>
<span>+</span><input type="text" class="num" name="attr_dexterity_save_mod" value="0" placeholder="0" title="@{dexterity_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="constitution-save-u">Constitution Save</span>
<span>+</span><input type="text" class="num" name="attr_constitution_save_mod" value="0" placeholder="0" title="@{constitution_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="intelligence-save-u">Intelligence Save</span>
<span>+</span><input type="text" class="num" name="attr_intelligence_save_mod" value="0" placeholder="0" title="@{intelligence_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="wisdom-save-u">Wisdom Save</span>
<span>+</span><input type="text" class="num" name="attr_wisdom_save_mod" value="0" placeholder="0" title="@{wisdom_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="charisma-save-u">Charisma Save</span>
<span>+</span><input type="text" class="num" name="attr_charisma_save_mod" value="0" placeholder="0" title="@{charisma_save_mod}">
</div>
<div class="sheet-row">
<span data-i18n="death-save-mod:-u">DEATH SAVE MODIFIER:</span>
<input type="text" class="num" name="attr_death_save_mod" placeholder="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="glob-saving-mod:-u">GLOBAL SAVING THROW MODIFIER:</span>
<input type="text" class="num" name="attr_globalsavemod" placeholder="0" value="0">
</div>
<div class="sheet-row title">
<span data-i18n="save-opts-u">SAVE OPTIONS</span>
</div>
</div>
<div class="skill_options" style="width: 234px;">
<div data-i18n-list="skills-list">
<div class="sheet-row skill" data-i18n-list-item="acrobatics">
<select name="attr_acrobatics_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="acrobatics-core">Acrobatics <span>(Dex)</span></span>
<span>+</span><input type="text" class="num" name="attr_acrobatics_flat" value="0" placeholder="0" title="@{acrobatics_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="animal_handling">
<select name="attr_animal_handling_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="animal_handling-core">Animal Handling <span>(Wis)</span></span>
<span>+</span><input type="text" class="num" name="attr_animal_handling_flat" value="0" placeholder="0" title="@{animal_handling_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="technology">
<select name="attr_technology_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="technology-core">Technology <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_technology_flat" value="0" placeholder="0" title="@{technology_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="athletics">
<select name="attr_athletics_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="athletics-core">Athletics <span>(Str)</span></span>
<span>+</span><input type="text" class="num" name="attr_athletics_flat" value="0" placeholder="0" title="@{athletics_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="deception">
<select name="attr_deception_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="deception-core">Deception <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_deception_flat" value="0" placeholder="0" title="@{deception_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="lore">
<select name="attr_lore_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="lore-core">Lore <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_lore_flat" value="0" placeholder="0" title="@{lore_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="insight">
<select name="attr_insight_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="insight-core">Insight <span>(Wis)</span></span>
<span>+</span><input type="text" class="num" name="attr_insight_flat" value="0" placeholder="0" title="@{insight_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="intimidation">
<select name="attr_intimidation_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="intimidation-core">Intimidation <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_intimidation_flat" value="0" placeholder="0" title="@{intimidation_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="investigation">
<select name="attr_investigation_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="investigation-core">Investigation <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_investigation_flat" value="0" placeholder="0" title="@{investigation_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="medicine">
<select name="attr_medicine_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="medicine-core">Medicine <span>(Wis)</span></span>
<span>+</span><input type="text" class="num" name="attr_medicine_flat" value="0" placeholder="0" title="@{medicine_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="nature">
<select name="attr_nature_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="nature-core">Nature <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_nature_flat" value="0" placeholder="0" title="@{nature_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="perception">
<select name="attr_perception_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="perception-core">Perception <span>(Wis)</span></span>
<span>+</span><input type="text" class="num" name="attr_perception_flat" value="0" placeholder="0" title="@{perception_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="performance">
<select name="attr_performance_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="performance-core">Performance <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_performance_flat" value="0" placeholder="0" title="@{performance_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="persuasion">
<select name="attr_persuasion_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="persuasion-core">Persuasion <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_persuasion_flat" value="0" placeholder="0" title="@{persuasion_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="piloting">
<select name="attr_piloting_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="piloting-core">Piloting <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_piloting_flat" value="0" placeholder="0" title="@{piloting_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="sleight_of_hand">
<select name="attr_sleight_of_hand_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="sleight_of_hand-core">Sleight of Hand <span>(Dex)</span></span>
<span>+</span><input type="text" class="num" name="attr_sleight_of_hand_flat" value="0" placeholder="0" title="@{sleight_of_hand_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="stealth">
<select name="attr_stealth_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="stealth-core">Stealth <span>(Dex)</span></span>
<span>+</span><input type="text" class="num" name="attr_stealth_flat" value="0" placeholder="0" title="@{stealth_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="survival">
<select name="attr_survival_type"><option value="1" selected="selected" data-i18n="normal">Normal</option><option value="2" data-i18n="expirtise">Expertise</option></select>
<span data-i18n="survival-core">Survival <span>(Wis)</span></span>
<span>+</span><input type="text" class="num" name="attr_survival_flat" value="0" placeholder="0" title="@{survival_flat}">
</div>
</div>
<div class="sheet-row" style="margin-top:10px;">
<input type="checkbox" name="attr_jack_of_all_trades" value="@{jack}">
<span data-i18n="jack-of-all-u">JACK OF ALL TRADES</span>
</div>
<div class="sheet-row">
<span data-i18n="pass-perc-mod:-u">PASSIVE PERCEPTION MODIFIER:</span>
<input type="text" class="num" name="attr_passiveperceptionmod" placeholder="0" value="0">
</div>
<div class="sheet-row title">
<span data-i18n="skill-opts-u">SKILL OPTIONS</span>
</div>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="general_options">
<div class="version">
<span data-i18n="version">v</span>
<input type="text" name="attr_version">
</div>
<div class="sheet-row">
<span>SHEET TYPE:</span>
<select name="attr_npc">
<option value="0">PC</option>
<option value="1">NPC</option>
<option value="2">Ship</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="roll-queries:-u">ROLL QUERIES:</span>
<select name="attr_rtype">
<option value="{{always=1}} {{r2=[[@{d20}" data-i18n="always-roll-adv">Always Roll Advantage</option>
<option value="@{advantagetoggle}" data-i18n="toggle-roll-adv">Advantage Toggle</option>
<option value="{{query=1}} ?{Advantage?|Normal Roll,&#123&#123normal=1&#125&#125 &#123&#123r2=[[0d20|Advantage,&#123&#123advantage=1&#125&#125 &#123&#123r2=[[@{d20}|Disadvantage,&#123&#123disadvantage=1&#125&#125 &#123&#123r2=[[@{d20}}" data-i18n="query-roll-adv">Query Advantage</option>
<option value="{{normal=1}} {{r2=[[0d20" data-i18n="never-roll-adv">Never Roll Advantage</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="whisp-rolls-gm:-u">WHISPER ROLLS TO GM:</span>
<select name="attr_wtype">
<option value="" data-i18n="never-whisper-roll">Never Whisper Rolls</option>
<option value="@{whispertoggle}" data-i18n="toggle-roll-whisper">Whisper Toggle</option>
<option value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }" data-i18n="query-whisper-roll">Query Whisper</option>
<option value="/w gm " data-i18n="always-whisper-roll">Always Whisper Rolls</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="auto-dmg-roll:-u">AUTO DAMAGE ROLL:</span>
<select class="dtype" name="attr_dtype">
<option value="pick" data-i18n="never-roll-dmg">Don't Auto Roll Damage</option>
<option value="full" data-i18n="always-roll-dmg">Auto Roll Damage & Crit</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="core-die-roll:-u">CORE DIE ROLL:</span>
<input type="text" name="attr_core_die" value="1d20" placeholder="1d20" title="@{core_die}">
</div>
<div class="sheet-row">
<span data-i18n="prof-bonus:-u">PROFICIENCY BONUS:</span>
<select class="dtype" name="attr_pb_type">
<option value="level" data-i18n="by-level">By Level (Default)</option>
<option value="die" data-i18n="prof-die">Proficency Die (DMG)</option>
<option value="custom" data-i18n="custom">Custom</option>
</select>
<input type="hidden" name="attr_pb_type">
<input class="pb_custom" type="text" style="float:right;" name="attr_pb_custom" placeholder="2d10">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_global_save_mod_flag" value="1">
<span data-i18n="show-global-save-field-u">SHOW GLOBAL SAVE MODIFIER FIELD</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_global_skill_mod_flag" value="1">
<span data-i18n="show-global-skill-field-u">SHOW GLOBAL SKILL MODIFIER FIELD</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_global_attack_mod_flag" value="1">
<span data-i18n="show-global-attack-field-u">SHOW GLOBAL ATTACK MODIFIER FIELD</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_global_damage_mod_flag" value="1">
<span data-i18n="show-global-damage-field-u">SHOW GLOBAL DAMAGE MODIFIER FIELD</span>
</div>
<div class="sheet-row">
<span data-i18n="add-char-to-templates:-u">ADD CHARACTER NAME TO TEMPLATES:</span>
<select class="dtype" name="attr_charname_output">
<option value="{{charname=@{character_name}}}" data-i18n="on">On</option>
<option value="charname=@{character_name}" selected="selected" data-i18n="off">Off</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="level-calculations:-u">LEVEL CALCULATIONS:</span>
<select class="dtype" name="attr_level_calculations">
<option value="on" selected="selected" data-i18n="on">On</option>
<option value="off" data-i18n="off">Off</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="encumbrance:-u">ENCUMBRANCE:</span>
<select name="attr_encumberance_setting">
<option value="off" data-i18n="simple">Simple</option>
<option value="on" data-i18n="variant-phb">Variant (PHB p176)</option>
<option value="disabled" data-i18n="off">Off</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="inventory:-u">INVENTORY:</span>
<select name="attr_simpleinventory">
<option value="complex" data-i18n="compendium-compatible">Compendium Compatible</option>
<option value="simple" data-i18n="simple">Simple</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="feats-traits-u">FEATURES AND TRAITS</span><span>:</span>
<select name="attr_simpletraits">
<option value="complex" data-i18n="compendium-compatible">Compendium Compatible</option>
<option value="simple" data-i18n="simple">Simple</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="prof-langs-u">PROFICENCIES AND LANGUAGES</span><span>:</span>
<select name="attr_simpleproficencies">
<option value="complex" data-i18n="compendium-compatible">Compendium Compatible</option>
<option value="simple" data-i18n="simple">Simple</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="ammo-tracking:-u">AMMO TRACKING:</span>
<select name="attr_ammotracking">
<option value="on" data-i18n="on">On</option>
<option value="off" selected="selected" data-i18n="off">Off</option>
</select>
<span data-i18n-title="api-required-title" data-i18n="api-required-u" title="Try it now with easy one click API installation available with your Pro subscription." style="color:#666; cursor:help;">(API REQUIRED)</span>
</div>
<div class="sheet-row">
<span data-i18n="exhaustion-setting-u">SHOW EXHAUSTION TRACKING:</span>
<select name="attr_exhaustion_toggle">
<option value="1" data-i18n="on">On</option>
<option value="0" data-i18n="off" selected="selected">Off</option>
</select>
</div>
<div class="sheet-row title">
<span data-i18n="general-opts-u">GENERAL OPTIONS</span>
</div>
</div>
<div class="general_options">
<div class="flex-column">
<span>Json Value</span>
<textarea name="attr_json_value" title></textarea>
</div>
<div class="flex-row flex-justify-sa">
<button type="action" name="act_import-json" >Import From Json</button>
<button type="action" name="act_export-json" >Export To Json</button>
</div>
<div class="sheet-row title">
<span >IMPORT / EXPORT</span>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<div style="margin-right: 50px; margin-left: 10px;">
<span data-i18n="portions-sheet-utilize">
Portions of this sheet utilize content from the System Reference Document 5.0 under the OGL License. View OGL License and Copyright Notice. https://sw5e.com/
</span>
</div>
<div>
<span data-i18n="footer-wiki-link">
For more information about this character sheet, its functionality, or uses, please check out the Roll20 Wiki for official documentation. https://wiki.roll20.net/5th_Edition_OGL_by_Roll20
</span>
</div>
</div>
</div>
<!-- SHIP -->
<div class="container ship">
<input type="hidden" name="attr_ship_tab" value="ship-core">
<div class="tab ship-suites">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="ship-name-u">SHIP NAME</span>
</div>
<div class="header-info options">
<div class="flex-row flex-align-center">
<span data-i18n="ship-size:-u">SIZE:</span>
<select class="hiding class" name="attr_ship_size">
<option value="" data-i18n="choose">Choose</option>
<option value="Tiny" data-i18n="tiny">Tiny</option>
<option value="Small" data-i18n="small">Small</option>
<option value="Medium" data-i18n="medium">Medium</option>
<option value="Large" data-i18n="large">Large</option>
<option value="Huge" data-i18n="huge">Huge</option>
<option value="Gargantuan" data-i18n="gargantuan">Gargantuan</option>
</select>
<span data-i18n="ship-tier:-u">TIER:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_ship_tier" value="0">
<span data-i18n="role-specialization:-u">ROLE:</span>
<input type="text" class="class-level" name="attr_ship_role" value="">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-manufacturer:-u">MANUFACTURER/LINE/CLASS:</span>
<input type="text" name="attr_ship_manufacturer">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-credits-next-tier:-u">CREDITS NEEDED TO UPGRADE TO NEXT TIER:</span>
<input type="number" style="width:90px" name="attr_ship_cr_next">
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="ship-btn-group">
<input type="hidden" name="attr_ship_tab">
<button type="action" name="act_ship_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_ship_tab_cargo"><span data-i18n="ship-cargo-tab-u">CARGO</span></button>
<button type="action" name="act_ship_tab_mods"><span data-i18n="ship-mods-tab-u">MODS</span></button>
<button type="action" name="act_ship_tab_suites"><span data-i18n="ship-suites-tab-u">SUITES</span></button>
<button type="action" name="act_ship_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-8">
<div class="textbox traits" style="min-height: 84px; width:480px; display:inline-block;">
<input type="hidden" class="inventoryflag" name="attr_simpletraits" value="complex">
<textarea class="simple" name="attr_features_and_traits" style="min-height: 260px; height: 260px;"></textarea>
<div class="complex" style="width: 475px;">
<fieldset class="repeating_suites">
<div class="trait">
<button type="roll" name="roll_output" class="output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{suite_name}}} {{source=@{suite_source}: @{suite_source_type}}} {{description=@{suite_description}}}">w</button>
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<input class="display-flag" type="checkbox" name="attr_display_flag">
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_suite_name" style="width: 120px;">
</div>
<div class="sheet-row">
<span data-i18n="source:-u">SOURCE:</span>
<select name="attr_suite_source">
<option selected="selected" data-i18n="base">Base</option>
<option data-i18n="upgrade">Upgrade</option>
<option data-i18n="other">Other</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_suite_source_type" style="width: 160px;" value="Suite System">
</div>
<div class="sheet-row">
<span data-i18n="grade:-u">GRADE:</span>
<input type="number" name="attr_suite_grade" style="width: 160px;" placeholder=0>
</div>
<div class="sheet-row">
<span data-i18n="cost:-u">Cost:</span>
<input type="number" name="attr_suite_mod_cost" style="width: 160px;" placeholder=0>
</div>
<div class="sheet-row">
<textarea name="attr_suite_description" style="min-height: 200px; height: 200px;"></textarea>
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span class="title" name="attr_suite_name"></span>
<span class="subheader">
Grade: <span name="attr_suite_grade"></span>: <span name="attr_suite_source"></span><span>: </span><span name="attr_suite_source_type"></span>: <span name="attr_suite_mod_cost"></span> cr
</span>
<span class="desc" name="attr_suite_description"></span>
</div>
</div>
</fieldset>
</div>
<span class="label" data-i18n="modifications-suites-u" style="margin-top: 0px; position: absolute; bottom: 0px;">SUITE MODIFICATIONS</span>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="hp">
<div class="top">
<span data-i18n="ship-mod-max">Modification Capacity</span>
<input type="text" name="attr_ship_mod_max" title="@{ship_mod_max}">
</div>
<input type="number" name="attr_ship_mod_current" title="@{ship_mod_current}">
<span class="label" data-i18n="ship-mod-current-u">TOTAL MODIFICATIONS</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-suites-max">Maximum Suites</span>
<input type="text" name="attr_ship_suites_max" title="@{ship_suites_max}">
</div>
<input type="number" name="attr_ship_suites_current" title="@{ship_suites_current}">
<span class="label" data-i18n="ship-suites-current-u">TOTAL SUITES</span>
</div>
</div>
</div>
</div>
<div class="tab ship-mods">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="ship-name-u">SHIP NAME</span>
</div>
<div class="header-info options">
<div class="flex-row flex-align-center">
<span data-i18n="ship-size:-u">SIZE:</span>
<select class="hiding class" name="attr_ship_size">
<option value="" data-i18n="choose">Choose</option>
<option value="Tiny" data-i18n="tiny">Tiny</option>
<option value="Small" data-i18n="small">Small</option>
<option value="Medium" data-i18n="medium">Medium</option>
<option value="Large" data-i18n="large">Large</option>
<option value="Huge" data-i18n="huge">Huge</option>
<option value="Gargantuan" data-i18n="gargantuan">Gargantuan</option>
</select>
<span data-i18n="ship-tier:-u">TIER:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_ship_tier" value="0">
<span data-i18n="role-specialization:-u">ROLE:</span>
<input type="text" class="class-level" name="attr_ship_role" value="">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-manufacturer:-u">MANUFACTURER/LINE/CLASS:</span>
<input type="text" name="attr_ship_manufacturer">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-credits-next-tier:-u">CREDITS NEEDED TO UPGRADE TO NEXT TIER:</span>
<input type="number" style="width:90px" name="attr_ship_cr_next">
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="ship-btn-group">
<input type="hidden" name="attr_ship_tab">
<button type="action" name="act_ship_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_ship_tab_cargo"><span data-i18n="ship-cargo-tab-u">CARGO</span></button>
<button type="action" name="act_ship_tab_mods"><span data-i18n="ship-mods-tab-u">MODS</span></button>
<button type="action" name="act_ship_tab_suites"><span data-i18n="ship-suites-tab-u">SUITES</span></button>
<button type="action" name="act_ship_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-8">
<div class="textbox traits" style="min-height: 84px; width:480px; display:inline-block;">
<input type="hidden" class="inventoryflag" name="attr_simpletraits" value="complex">
<textarea class="simple" name="attr_features_and_traits" style="min-height: 260px; height: 260px;"></textarea>
<div class="complex" style="width: 475px;">
<fieldset class="repeating_modifications">
<div class="trait">
<button type="roll" name="roll_output" class="output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{name}}} {{source=@{source}: @{source_type}}} {{description=@{description}}}">w</button>
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<input class="display-flag" type="checkbox" name="attr_display_flag">
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name" style="width: 120px;">
</div>
<div class="sheet-row">
<span data-i18n="source:-u">SOURCE:</span>
<select name="attr_source">
<option selected="selected" data-i18n="base">Base</option>
<option data-i18n="upgrade">Upgrade</option>
<option data-i18n="other">Other</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_source_type" style="width: 160px;" placeholder="Universal, Engineering...">
</div>
<div class="sheet-row">
<span data-i18n="grade:-u">GRADE:</span>
<input type="number" name="attr_mod_grade" style="width: 160px;" placeholder=0>
</div>
<div class="sheet-row">
<span data-i18n="cost:-u">Cost:</span>
<input type="number" name="attr_mod_cost" style="width: 160px;" placeholder=0>
</div>
<div class="sheet-row">
<textarea name="attr_description" style="min-height: 200px; height: 200px;"></textarea>
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span class="title" name="attr_name"></span>
<span class="subheader">
Grade: <span name="attr_mod_grade"></span>: <span name="attr_source"></span><span>: </span><span name="attr_source_type"></span> : <span name="attr_mod_cost"></span> cr
</span>
<span class="desc" name="attr_description"></span>
</div>
</div>
</fieldset>
</div>
<span class="label" data-i18n="modifications-u" style="margin-top: 0px; position: absolute; bottom: 0px;">MODIFICATIONS</span>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="hp">
<div class="top">
<span data-i18n="ship-mod-max">Modification Capacity</span>
<input type="text" name="attr_ship_mod_max" title="@{ship_mod_max}">
</div>
<input type="number" name="attr_ship_mod_current" title="@{ship_mod_current}">
<span class="label" data-i18n="ship-mod-current-u">TOTAL MODIFICATIONS</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-hardpoints-max">Fixed Hardpoints</span>
<input type="text" name="attr_ship_hardpoints_max" title="@{ship_hardpoints_max}">
</div>
<input type="number" name="attr_ship_hardpoints_current" title="@{ship_hardpoints_current}">
<span class="label" data-i18n="ship-hardpoints-current-u">HARDPOINTS USED</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-t-hardpoints-max">Turret Hardpoints</span>
<input type="text" name="attr_ship_t_hardpoints_max" title="@{ship_t_hardpoints_max}">
</div>
<input type="number" name="attr_ship_t_hardpoints_current" title="@{ship_t_hardpoints_current}">
<span class="label" data-i18n="ship-t-hardpoints-current-u">TURRET HARDPOINTS USED</span>
</div>
</div>
</div>
</div>
<div class="tab ship-cargo">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="ship-name-u">SHIP NAME</span>
</div>
<div class="header-info options">
<div class="flex-row flex-align-center">
<span data-i18n="ship-size:-u">SIZE:</span>
<select class="hiding class" name="attr_ship_size">
<option value="" data-i18n="choose">Choose</option>
<option value="Tiny" data-i18n="tiny">Tiny</option>
<option value="Small" data-i18n="small">Small</option>
<option value="Medium" data-i18n="medium">Medium</option>
<option value="Large" data-i18n="large">Large</option>
<option value="Huge" data-i18n="huge">Huge</option>
<option value="Gargantuan" data-i18n="gargantuan">Gargantuan</option>
</select>
<span data-i18n="ship-tier:-u">TIER:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_ship_tier" value="0">
<span data-i18n="role-specialization:-u">ROLE:</span>
<input type="text" class="class-level" name="attr_ship_role" value="">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-manufacturer:-u">MANUFACTURER/LINE/CLASS:</span>
<input type="text" name="attr_ship_manufacturer">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-credits-next-tier:-u">CREDITS NEEDED TO UPGRADE TO NEXT TIER:</span>
<input type="number" style="width:90px" name="attr_ship_cr_next">
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="ship-btn-group">
<input type="hidden" name="attr_ship_tab">
<button type="action" name="act_ship_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_ship_tab_cargo"><span data-i18n="ship-cargo-tab-u">CARGO</span></button>
<button type="action" name="act_ship_tab_mods"><span data-i18n="ship-mods-tab-u">MODS</span></button>
<button type="action" name="act_ship_tab_suites"><span data-i18n="ship-suites-tab-u">SUITES</span></button>
<button type="action" name="act_ship_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-8">
<div class="flex-row">
<div style="display:inline-block" class="equipment flex-w-6">
<div class="money">
<div class="coin">
<span class="label" data-i18n="credit-piece-u">CR</span>
<input type="text" name="attr_cr" title="@{cr}">
</div>
</div>
<input type="hidden" class="inventoryflag" name="attr_simpleinventory" value="complex">
<textarea class="simple" name="attr_equipment"></textarea>
<div class="complex">
<input type="hidden" class="warningflag" name="attr_armorwarningflag">
<div class="warning">
<span data-i18n="warning-armor-sets-u">
<input type="checkbox" name="attr_armorwarning" value="hide">
WARNING - MULTIPLE SETS OF ARMOR OR SHIELDS HAVE BEEN ADDED AND AC IS NOT CORRECTLY CALCULATED. UNEQUIP THE ARMOR PIECE FROM THE ITEM DETAILS.
</span>
</div>
<div class="header" style="height: auto;">
<span class="pictos" style="width: 25px; font-size: 15px;">*</span>
<span style="width: 100px; text-align: left;" data-i18n="item-name-u">ITEM NAME</SPAN>
<span style="width: 25px;"><img
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/5th%20Edition%20OGL%20by%20Roll20/images/weight_lbs.png"
style="width: 15px; margin-bottom: -3px;"></span>
</div>
<fieldset class="repeating_inventory">
<input type="hidden" class="equippedflag" name="attr_equipped">
<div class="item">
<input class="weight" type="text" name="attr_itemcount" value="1">
<input class="name" type="text" name="attr_itemname">
<input class="weight" type="text" name="attr_itemweight">
<input class="inventorysubflag" type="checkbox" name="attr_inventorysubflag"><span>i</span>
<div class="subitem">
<input class="equipped" type="checkbox" name="attr_equipped" value="1"
checked="checked">
<span class="equippedlabel" data-i18n="equipped-u">EQUIPPED</span>
<input class="equipped" type="checkbox" name="attr_useasresource" value="1">
<span class="equippedlabel" data-i18n="use-as-resource-u">USE AS A RESOURCE</span>
<input class="equipped" type="checkbox" name="attr_hasattack" value="1">
<span class="equippedlabel" data-i18n="has-attack-u">HAS AN ATTACK</span>
<span class="label" data-i18n="prop:-u">PROP:</span>
<input class="subfield" type="text" name="attr_itemproperties">
<span class="label" data-i18n="mods:-u">MODS:</span>
<input class="subfield" type="text" name="attr_itemmodifiers">
<textarea class="subtextarea" name="attr_itemcontent"></textarea>
</div>
<input type="hidden" name="attr_itemattackid">
<input type="hidden" name="attr_itemresourceid">
</div>
</fieldset>
<div class="weighttotal">
<span class="label break-lang" data-i18n="total-cargo-tons-u">TOTAL CARGO (TONS)</span>
<input type="text" name="attr_weighttotal" value="0">
</div>
</div>
<span class="label" style="margin-top: 0px; position: absolute; bottom: 0px;"
data-i18n="cargo-u">CARGO</span>
</div>
<div style="display:inline-block" class="equipment flex-w-6">
<div class="money">
<div class="coin">
<span class="label" data-i18n="credit-piece-u">CR</span>
<input type="text" name="attr_hiddencr" title="@{hiddencr}">
</div>
</div>
<input type="hidden" class="inventoryflag" name="attr_simpleinventory" value="complex">
<textarea class="simple" name="attr_equipment"></textarea>
<div class="complex">
<input type="hidden" class="warningflag" name="attr_armorwarningflag">
<div class="warning">
<span data-i18n="warning-armor-sets-u">
<input type="checkbox" name="attr_armorwarning" value="hide">
WARNING - MULTIPLE SETS OF ARMOR OR SHIELDS HAVE BEEN ADDED AND AC IS NOT CORRECTLY CALCULATED. UNEQUIP THE ARMOR PIECE FROM THE ITEM DETAILS.
</span>
</div>
<div class="header" style="height: auto;">
<span class="pictos" style="width: 25px; font-size: 15px;">*</span>
<span style="width: 100px; text-align: left;" data-i18n="item-name-u">ITEM NAME</SPAN>
<span style="width: 25px;"><img
src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/5th%20Edition%20OGL%20by%20Roll20/images/weight_lbs.png"
style="width: 15px; margin-bottom: -3px;"></span>
</div>
<fieldset class="repeating_hiddeninventory">
<input type="hidden" class="equippedflag" name="attr_equipped">
<div class="item">
<input class="weight" type="text" name="attr_itemcount" value="1">
<input class="name" type="text" name="attr_itemname">
<input class="weight" type="text" name="attr_itemweight">
<input class="inventorysubflag" type="checkbox" name="attr_inventorysubflag"><span>i</span>
<div class="subitem">
<input class="equipped" type="checkbox" name="attr_equipped" value="1"
checked="checked">
<span class="equippedlabel" data-i18n="equipped-u">EQUIPPED</span>
<input class="equipped" type="checkbox" name="attr_useasresource" value="1">
<span class="equippedlabel" data-i18n="use-as-resource-u">USE AS A RESOURCE</span>
<input class="equipped" type="checkbox" name="attr_hasattack" value="1">
<span class="equippedlabel" data-i18n="has-attack-u">HAS AN ATTACK</span>
<span class="label" data-i18n="prop:-u">PROP:</span>
<input class="subfield" type="text" name="attr_itemproperties">
<span class="label" data-i18n="mods:-u">MODS:</span>
<input class="subfield" type="text" name="attr_itemmodifiers">
<textarea class="subtextarea" name="attr_itemcontent"></textarea>
</div>
<input type="hidden" name="attr_itemattackid">
<input type="hidden" name="attr_itemresourceid">
</div>
</fieldset>
<div class="weighttotal">
<span class="label break-lang" data-i18n="total-hidden-cargo-tons-u">TOTAL HIDDEN CARGO (TONS)</span>
<input type="text" name="attr_hiddenweighttotal" value="0">
</div>
</div>
<span class="label" style="margin-top: 0px; position: absolute; bottom: 0px;"
data-i18n="hidden-cargo-u">HIDDEN CARGO</span>
</div>
</div>
<div class="textbox">
<span class="label" data-i18n="ship-notes-u">SHIP NOTES AND MISC</span>
<textarea name="attr_ship_notes" style="min-height: 400px; height: 400px;"></textarea>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="hp">
<div class="top">
<span data-i18n="ship-fuel-max">Ship Fuel Capacity</span>
<input type="text" name="attr_ship_fuel_max" title="@{ship_fuel_max}">
</div>
<input type="number" name="attr_ship_fuel_current" title="@{ship_fuel_current}">
<span class="label" data-i18n="ship-fuel-current-label">CURRENT FUEL (UNITS)</span>
</div>
<div class="hp">
<input type="number" name="attr_ship_fuel_cost" title="@{ship_fuel_cost}">
<span class="label" data-i18n="ship-fuel-cost-label">FUEL COST (CR)</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-food-max">Ship Food Capacity</span>
<input type="text" name="attr_ship_food_max" title="@{food_max}">
</div>
<input type="number" name="attr_ship_food_current" title="@{ship_food_current}">
<span class="label" data-i18n="ship-food-current-label">CURRENT FOOD (PORTIONS)</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-reg-cargo-max">Regular Cargo Capacity</span>
<input type="text" name="attr_ship_reg_cargo_max" title="@{ship_reg_cargo_max}">
</div>
<input type="number" name="attr_weighttotal" title="@{weighttotal}">
<span class="label" data-i18n="total-cargo-tons-u">CURRENT CARGO (TONS)</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-hidden-cargo-max">Hidden Cargo Capacity</span>
<input type="text" name="attr_ship_hidden_cargo_max" title="@{ship_hidden_cargo_max}" style="width:115px">
</div>
<input type="number" name="attr_hiddenweighttotal" title="@{hiddenweighttotal}">
<span class="label" data-i18n="total-hidden-cargo-tons-u">HIDDEN CARGO (TONS)</span>
</div>
</div>
</div>
</div>
<div class="tab ship-core">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="ship-name-u">SHIP NAME</span>
</div>
<div class="header-info options">
<div class="flex-row flex-align-center">
<span data-i18n="ship-size:-u">SIZE:</span>
<select class="hiding class" name="attr_ship_size">
<option value="" data-i18n="choose">Choose</option>
<option value="Tiny" data-i18n="tiny">Tiny</option>
<option value="Small" data-i18n="small">Small</option>
<option value="Medium" data-i18n="medium">Medium</option>
<option value="Large" data-i18n="large">Large</option>
<option value="Huge" data-i18n="huge">Huge</option>
<option value="Gargantuan" data-i18n="gargantuan">Gargantuan</option>
</select>
<span data-i18n="ship-tier:-u">TIER:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_ship_tier" value="0">
<span data-i18n="role-specialization:-u">ROLE:</span>
<input type="text" class="class-level" name="attr_ship_role" value="">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-manufacturer:-u">MANUFACTURER/LINE/CLASS:</span>
<input type="text" name="attr_ship_manufacturer">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-credits-next-tier:-u">CREDITS NEEDED TO UPGRADE TO NEXT TIER:</span>
<input type="number" style="width:90px" name="attr_ship_cr_next">
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="ship-btn-group">
<input type="hidden" name="attr_ship_tab">
<button type="action" name="act_ship_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_ship_tab_cargo"><span data-i18n="ship-cargo-tab-u">CARGO</span></button>
<button type="action" name="act_ship_tab_mods"><span data-i18n="ship-mods-tab-u">MODS</span></button>
<button type="action" name="act_ship_tab_suites"><span data-i18n="ship-suites-tab-u">SUITES</span></button>
<button type="action" name="act_ship_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-8">
<div class="flex-row">
<div style="display:inline" class="flex-column flex-w-6">
<div class="attributes-container" style="margin-top: 10px;">
<div class="attr-container">
<button type="roll" name="roll_strength"
value="@{wtype}&{template:simple} {{rname=^{strength-u}}} {{mod=@{strength_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{strength_mod}@{jack_attr}[STR]]]}} @{rtype}+@{strength_mod}@{jack_attr}[STR]]]}} @{charname_output}"
data-i18n="strength-u">STRENGTH
</button>
<span class="attr" name="attr_strength_mod" title="@{strength_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_strength_base" title="@{strength}"
value="10">
<input type="hidden" name="attr_strength" value="10">
<input class="attr-flag" type="hidden" name="attr_strength_flag" value="0">
<span class="finalattr" name="attr_strength"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_dexterity"
value="@{wtype}&{template:simple} {{rname=^{dexterity-u}}} {{mod=@{dexterity_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{dexterity_mod}@{jack_attr}[DEX]]]}} @{rtype}+@{dexterity_mod}@{jack_attr}[DEX]]]}} @{charname_output}"
data-i18n="dexterity-u">DEXTERITY
</button>
<span class="attr" name="attr_dexterity_mod" title="@{dexterity_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_dexterity_base" title="@{dexterity}"
value="10">
<input type="hidden" name="attr_dexterity" value="10">
<input class="attr-flag" type="hidden" name="attr_dexterity_flag" value="0">
<span class="finalattr" name="attr_dexterity"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_constitution"
value="@{wtype}&{template:simple} {{rname=^{constitution-u}}} {{mod=@{constitution_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{constitution_mod}@{jack_attr}[CON]]]}} @{rtype}+@{constitution_mod}@{jack_attr}[CON]]]}} @{charname_output}"
data-i18n="constitution-u">CONSTITUTION
</button>
<span class="attr" name="attr_constitution_mod" title="@{constitution_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_constitution_base" title="@{constitution}"
value="10">
<input type="hidden" name="attr_constitution" value="10">
<input class="attr-flag" type="hidden" name="attr_constitution_flag" value="0">
<span class="finalattr" name="attr_constitution"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_intelligence"
value="@{wtype}&{template:simple} {{rname=^{intelligence-u}}} {{mod=@{intelligence_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{intelligence_mod}@{jack_attr}[INT]]]}} @{rtype}+@{intelligence_mod}@{jack_attr}[INT]]]}} @{charname_output}"
data-i18n="intelligence-u">INTELLIGENCE
</button>
<span class="attr" name="attr_intelligence_mod" title="@{intelligence_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_intelligence_base" title="@{intelligence}"
value="10">
<input type="hidden" name="attr_intelligence" value="10">
<input class="attr-flag" type="hidden" name="attr_intelligence_flag" value="0">
<span class="finalattr" name="attr_intelligence"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_wisdom"
value="@{wtype}&{template:simple} {{rname=^{wisdom-u}}} {{mod=@{wisdom_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{wisdom_mod}@{jack_attr}[WIS]]]}} @{rtype}+@{wisdom_mod}@{jack_attr}[WIS]]]}} @{charname_output}"
data-i18n="wisdom-u">WISDOM
</button>
<span class="attr" name="attr_wisdom_mod" title="@{wisdom_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_wisdom_base" title="@{wisdom}" value="10">
<input type="hidden" name="attr_wisdom" value="10">
<input class="attr-flag" type="hidden" name="attr_wisdom_flag" value="0">
<span class="finalattr" name="attr_wisdom"></span>
</div>
</div>
<div class="attr-container">
<button type="roll" name="roll_charisma"
value="@{wtype}&{template:simple} {{rname=^{charisma-u}}} {{mod=@{charisma_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{charisma_mod}@{jack_attr}[CHA]]]}} @{rtype}+@{charisma_mod}@{jack_attr}[CHA]]]}} @{charname_output}"
data-i18n="charisma-u">CHARISMA
</button>
<span class="attr" name="attr_charisma_mod" title="@{charisma_mod}">0</span>
<div class="attr-mod">
<input class="baseattr" type="text" name="attr_charisma_base" title="@{charisma}"
value="10">
<input type="hidden" name="attr_charisma" value="10">
<input class="attr-flag" type="hidden" name="attr_charisma_flag" value="0">
<span class="finalattr" name="attr_charisma"></span>
</div>
</div>
</div>
<div class="skills-saves-container">
<div class="flex-row insp-prof-container">
<div class="value">
<input type="number" name="attr_hyperdrive_class">
</div>
<div class="label">
<span data-i18n="hyperdrive_class-u">HYPERDRIVE CLASS</span>
</div>
</div>
<div class="flex-row insp-prof-container">
<div class="value">
<input type="number" name="attr_navcomputer_bonus">
</div>
<div class="label">
<span class="break-lang" data-i18n="navcomputer_bonus-u">NAVCOMPUTER BONUS</span>
</div>
</div>
<div class="flex-row insp-prof-container">
<div class="value">
<input type="number" value="0" name="attr_pb">
</div>
<div class="label">
<span data-i18n="pilot_prof_bonus-u">PILOT PROF BONUS</span>
</div>
</div>
<div class="flex-row insp-prof-container">
<div class="value">
<input type="number" value="0" name="attr_pilot_skill">
</div>
<div class="label">
<span data-i18n="pilot_proficiency-u">PILOT INT(PILOTING)</span>
</div>
</div>
<div class="saving-throw-container">
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_strength_save_prof" title="@{strength_save_prof}"
value="(@{pb})">
<span name="attr_strength_save_bonus" title="@{strength_save_bonus}">0</span>
<button type="roll" name="roll_strength_save"
value="@{wtype}&{template:simple} {{rname=^{strength-save-u}}} {{mod=@{strength_save_bonus}}} {{r1=[[@{d20}+@{strength_save_bonus}@{pbd_safe}]]}} @{rtype}+@{strength_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="strength">Strength
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_dexterity_save_prof" title="@{dexterity_save_prof}"
value="(@{pb})">
<span name="attr_dexterity_save_bonus" title="@{dexterity_save_bonus}">0</span>
<button type="roll" name="roll_dexterity_save"
value="@{wtype}&{template:simple} {{rname=^{dexterity-save-u}}} {{mod=@{dexterity_save_bonus}}} {{r1=[[@{d20}+@{dexterity_save_bonus}@{pbd_safe}]]}} @{rtype}+@{dexterity_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="dexterity">Dexterity
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_constitution_save_prof" title="@{constitution_save_prof}"
value="(@{pb})">
<span name="attr_constitution_save_bonus" title="@{constitution_save_bonus}">0</span>
<button type="roll" name="roll_constitution_save"
value="@{wtype}&{template:simple} {{rname=^{constitution-save-u}}} {{mod=@{constitution_save_bonus}}} {{r1=[[@{d20}+@{constitution_save_bonus}@{pbd_safe}]]}} @{rtype}+@{constitution_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="constitution">Constitution
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_intelligence_save_prof" title="@{intelligence_save_prof}"
value="(@{pb})">
<span name="attr_intelligence_save_bonus" title="@{intelligence_save_bonus}">0</span>
<button type="roll" name="roll_intelligence_save"
value="@{wtype}&{template:simple} {{rname=^{intelligence-save-u}}} {{mod=@{intelligence_save_bonus}}} {{r1=[[@{d20}+@{intelligence_save_bonus}@{pbd_safe}]]}} @{rtype}+@{intelligence_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="intelligence">Intelligence
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_wisdom_save_prof" title="@{wisdom_save_prof}"
value="(@{pb})">
<span name="attr_wisdom_save_bonus" title="@{wisdom_save_bonus}">0</span>
<button type="roll" name="roll_wisdom_save"
value="@{wtype}&{template:simple} {{rname=^{wisdom-save-u}}} {{mod=@{wisdom_save_bonus}}} {{r1=[[@{d20}+@{wisdom_save_bonus}@{pbd_safe}]]}} @{rtype}+@{wisdom_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="wisdom">Wisdom
</button>
</div>
<div class="flex-row flex-justify-sa flex-align-center saving-throw">
<input type="checkbox" name="attr_charisma_save_prof" title="@{charisma_save_prof}"
value="(@{pb})">
<span name="attr_charisma_save_bonus" title="@{charisma_save_bonus}">0</span>
<button type="roll" name="roll_charisma_save"
value="@{wtype}&{template:simple} {{rname=^{charisma-save-u}}} {{mod=@{charisma_save_bonus}}} {{r1=[[@{d20}+@{charisma_save_bonus}@{pbd_safe}]]}} @{rtype}+@{charisma_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="charisma">Charisma
</button>
</div>
<input type="hidden" class="toggleflag" name="attr_global_save_mod_flag">
<div class="conditional-visibility textarea globalattack">
<span class="label" data-i18n="global-save-u">GLOBAL SAVE MODIFIER</span>
<fieldset class="repeating_savemod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag"
checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_save_active_flag" value="1"
class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_save_rollstring"
placeholder="1d4[BLESS]" style="width: 125px;"></textarea>
</div>
<div class="display">
<span class="title" name="attr_global_save_rollstring"></span>
</div>
</div>
</fieldset>
</div>
<div class="label">
<span data-i18n="saving-throws-u">SAVING THROWS</span>
</div>
</div>
<div class="skills-container skills-list">
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_boost">
<input type="checkbox" name="attr_ship_boost_prof" title="@{ship_boost_prof}"
value="(@{pb}*@{ship_boost_type})">
<span name='attr_ship_boost_bonus' title='@{ship_boost_bonus}'>0</span>
<button type='roll' name='roll_ship_boost'
value='@{wtype}&{template:simple} {{rname=^{ship_boost-u}}} {{mod=@{ship_boost_bonus}}} {{r1=[[@{d20}+@{ship_boost_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_boost_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_boost-core'>Boost <span>(Str)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_ram">
<input type="checkbox" name="attr_ship_ram_prof" title="@{ship_ram_prof}"
value="(@{pb}*@{ship_ram_type})">
<span name='attr_ship_ram_bonus' title='@{ship_ram_bonus}'>0</span>
<button type='roll' name='roll_ship_ram'
value='@{wtype}&{template:simple} {{rname=^{ship_ram-u}}} {{mod=@{ship_ram_bonus}}} {{r1=[[@{d20}+@{ship_ram_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_ram_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_ram-core'>Ram <span>(Str)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_hide">
<input type="checkbox" name="attr_ship_hide_prof" title="@{ship_hide_prof}"
value="(@{pb}*@{ship_hide_type})">
<span name='attr_ship_hide_bonus' title='@{ship_hide_bonus}'>0</span>
<button type='roll' name='roll_ship_hide'
value='@{wtype}&{template:simple} {{rname=^{ship_hide-u}}} {{mod=@{ship_hide_bonus}}} {{r1=[[@{d20}+@{ship_hide_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_hide_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_hide-core'>Hide <span>(Dex)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_maneuvering">
<input type="checkbox" name="attr_ship_maneuvering_prof" title="@{ship_maneuvering_prof}"
value="(@{pb}*@{ship_maneuvering_type})">
<span name='attr_ship_maneuvering_bonus' title='@{ship_maneuvering_bonus}'>0</span>
<button type='roll' name='roll_ship_maneuvering'
value='@{wtype}&{template:simple} {{rname=^{ship_maneuvering-u}}} {{mod=@{ship_maneuvering_bonus}}} {{r1=[[@{d20}+@{ship_maneuvering_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_maneuvering_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_maneuvering-core'>Maneuvering <span>(Dex)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_patch">
<input type="checkbox" name="attr_ship_patch_prof" title="@{ship_patch_prof}"
value="(@{pb}*@{ship_patch_type})">
<span name='attr_ship_patch_bonus' title='@{ship_patch_bonus}'>0</span>
<button type='roll' name='roll_ship_patch'
value='@{wtype}&{template:simple} {{rname=^{ship_patch-u}}} {{mod=@{ship_patch_bonus}}} {{r1=[[@{d20}+@{ship_patch_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_patch_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_patch-core'>Patch <span>(Con)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_regulation">
<input type="checkbox" name="attr_ship_regulation_prof" title="@{ship_regulation_prof}"
value="(@{pb}*@{ship_regulation_type})">
<span name='attr_ship_regulation_bonus' title='@{ship_regulation_bonus}'>0</span>
<button type='roll' name='roll_ship_regulation'
value='@{wtype}&{template:simple} {{rname=^{ship_regulation-u}}} {{mod=@{ship_regulation_bonus}}} {{r1=[[@{d20}+@{ship_regulation_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_regulation_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_regulation-core'>Regulation <span>(Con)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_astrogation">
<input type="checkbox" name="attr_ship_astrogation_prof" title="@{ship_astrogation_prof}"
value="(@{pb}*@{ship_astrogation_type})">
<span name='attr_ship_astrogation_bonus' title='@{ship_astrogation_bonus}'>0</span>
<button type='roll' name='roll_ship_astrogation'
value='@{wtype}&{template:simple} {{rname=^{ship_astrogation-u}}} {{mod=@{ship_astrogation_bonus}}} {{r1=[[@{d20}+@{ship_astrogation_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_astrogation_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_astrogation-core'>Astrogation <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_data">
<input type="checkbox" name="attr_ship_data_prof" title="@{ship_data_prof}"
value="(@{pb}*@{ship_data_type})">
<span name='attr_ship_data_bonus' title='@{ship_data_bonus}'>0</span>
<button type='roll' name='roll_ship_data'
value='@{wtype}&{template:simple} {{rname=^{ship_data-u}}} {{mod=@{ship_data_bonus}}} {{r1=[[@{d20}+@{ship_data_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_data_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_data-core'>Data <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_probe">
<input type="checkbox" name="attr_ship_probe_prof" title="@{ship_probe_prof}"
value="(@{pb}*@{ship_probe_type})">
<span name='attr_ship_probe_bonus' title='@{ship_probe_bonus}'>0</span>
<button type='roll' name='roll_ship_probe'
value='@{wtype}&{template:simple} {{rname=^{ship_probe-u}}} {{mod=@{ship_probe_bonus}}} {{r1=[[@{d20}+@{ship_probe_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_probe_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_probe-core'>Probe <span>(Int)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_scan">
<input type="checkbox" name="attr_ship_scan_prof" title="@{ship_scan_prof}"
value="(@{pb}*@{ship_scan_type})">
<span name='attr_ship_scan_bonus' title='@{ship_scan_bonus}'>0</span>
<button type='roll' name='roll_ship_scan'
value='@{wtype}&{template:simple} {{rname=^{ship_scan-u}}} {{mod=@{ship_scan_bonus}}} {{r1=[[@{d20}+@{ship_scan_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_scan_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_scan-core'>Scan <span>(Wis)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_impress">
<input type="checkbox" name="attr_ship_impress_prof" title="@{ship_impress_prof}"
value="(@{pb}*@{ship_impress_type})">
<span name='attr_ship_impress_bonus' title='@{ship_impress_bonus}'>0</span>
<button type='roll' name='roll_ship_impress'
value='@{wtype}&{template:simple} {{rname=^{ship_impress-u}}} {{mod=@{ship_impress_bonus}}} {{r1=[[@{d20}+@{ship_impress_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_impress_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_impress-core'>Impress <span>(Cha)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_interfere">
<input type="checkbox" name="attr_ship_interfere_prof" title="@{ship_interfere_prof}"
value="(@{pb}*@{ship_interfere_type})">
<span name='attr_ship_interfere_bonus' title='@{ship_interfere_bonus}'>0</span>
<button type='roll' name='roll_ship_interfere'
value='@{wtype}&{template:simple} {{rname=^{ship_interfere-u}}} {{mod=@{ship_interfere_bonus}}} {{r1=[[@{d20}+@{ship_interfere_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_interfere_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_interfere-core'>Interfere <span>(Cha)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_menace">
<input type="checkbox" name="attr_ship_menace_prof" title="@{ship_menace_prof}"
value="(@{pb}*@{ship_menace_type})">
<span name='attr_ship_menace_bonus' title='@{ship_menace_bonus}'>0</span>
<button type='roll' name='roll_ship_menace'
value='@{wtype}&{template:simple} {{rname=^{ship_menace-u}}} {{mod=@{ship_menace_bonus}}} {{r1=[[@{d20}+@{ship_menace_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_menace_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_menace-core'>Menace <span>(Cha)</span></button>
</div>
<div class="flex-row flex-justify-sa flex-align-center skill" data-i18n-list-item="ship_swindle">
<input type="checkbox" name="attr_ship_swindle_prof" title="@{ship_swindle_prof}"
value="(@{pb}*@{ship_swindle_type})">
<span name='attr_ship_swindle_bonus' title='@{ship_swindle_bonus}'>0</span>
<button type='roll' name='roll_ship_swindle'
value='@{wtype}&{template:simple} {{rname=^{ship_swindle-u}}} {{mod=@{ship_swindle_bonus}}} {{r1=[[@{d20}+@{ship_swindle_bonus}@{pbd_safe}]]}} @{rtype}+@{ship_swindle_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'
data-i18n='ship_swindle-core'>Swindle <span>(Cha)</span></button>
</div>
<div class="label">
<span data-i18n="skills-u">SKILLS</span>
</div>
</div>
</div>
</div>
<div style="display:inline-block" class="flex-column flex-w-6">
<div class="ac-init-speed-container flex-row flex-justify-sb">
<div class="ac">
<input type="text" name="attr_ac">
<span class="label pc-ac" data-i18n="armor-class-u">ARMOR CLASS</span>
</div>
<div class="speed">
<input type="text" name="attr_ship_turnspeed">
<span class="label break-lang" data-i18n="ship_turnspeed-u">TURNING SPEED</span>
</div>
<div class="speed">
<input type="text" name="attr_ship_flyspeed">
<span class="label break-lang" data-i18n="ship_flyspeed-u">FLYING SPEED</span>
</div>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-hp-max">Hull Point Maximum</span>
<input type="text" style="width:40px" name="attr_hp_max" title="@{hp_max}">
<input type="text" style="float:right; width:40px;" name="attr_ship_dmg_reduction">
<span style="float:right; width:50px;" data-i18n="ship-dr">Dmg Red.</span>
</div>
<input type="number" name="attr_hp" title="@{hp}">
<span class="label" data-i18n="ship-hp-current-u">CURRENT HULL POINTS</span>
</div>
<div class="hp">
<div class="top">
<span data-i18n="ship-shield-max">Shield Point Maximum</span>
<input type="text" style="width:40px" name="attr_ship_shield_max">
<input type="text" style="float:right; width:40px;" name="attr_ship_shield_regen_rate">
<span style="float:right; width:50px;" data-i18n="ship-regen-rate">Regen Rate</span>
</div>
<input type="number" name="attr_ship_shield_points">
<span class="label" data-i18n="ship-shield-u">CURRENT SHIELD POINTS</span>
</div>
<div class="hp">
<div class="top">
<span class="label" data-i18n="ship-armor-label:">Armor: </span>
<select name="attr_ship_armor">
<option value="none" selected="selected" data-i18n="option-select-none-u">None</option>
<option value="deflection" data-i18n="deflection-shield-u">Deflection Armor</option>
<option value="lightweight" data-i18n="lightweight-shield-u">Fortress Armor</option>
<option value="reinforced" data-i18n="reinforced-shield-u">Reinforced Armor</option>
<option value="customshiparmor" data-i18n="custom-ship-armor-u">Custom Armor</option>
</select>
</div>
<div class="top">
<span class="label" data-i18n="ship-shield-label:">Shields: </span>
<select name="attr_ship_shield">
<option value="none" selected="selected" data-i18n="option-select-none-u">None</option>
<option value="directional" data-i18n="directional-shield-u">Directional Shield</option>
<option value="fortress" data-i18n="fortress-shield-u">Fortress Shield</option>
<option value="quickcharge" data-i18n="quick-charge-shield-u">Quick Charge Shield</option>
<option value="customshipshield" data-i18n="custom-ship-shield-u">Custom Shield</option>
</select>
</div>
<span class="label" data-i18n="armor-shields-label-u">ARMOR &amp; SHIELDS</span>
</div>
<div class="hdice-dsaves-container flex-row flex-justify-sb" style="width: 242px;">
<div class="subcontainer">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_hull_dice_max" title="@{hull_dice_max}">
</div>
<input type="number" name="attr_hull_dice" title="@{hull_dice}" style="margin-bottom: -6px;">
<button type="roll" name="roll_hull_dice"
value="@{wtype}&{template:simple} {{rname=^{hull-dice-u}}} {{mod=D@{hulldie_final}}} {{r1=[[1d@{hulldie_final}]]}} {{normal=1}} @{charname_output}"
data-i18n="hull-dice-u">HULL DICE
</button>
</div>
<div class="subcontainer">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_shield_dice_max" title="@{shield_dice_max}">
</div>
<input type="number" name="attr_shield_dice" title="@{shield_dice}"
style="margin-bottom: -6px;">
<button type="roll" name="roll_shield_dice"
value="@{wtype}&{template:simple} {{rname=^{shield-dice-u}}} {{mod=D@{shielddie_final}}} {{r1=[[1d@{shielddie_final}]]}} {{normal=1}} @{charname_output}"
data-i18n="shield-dice-u">SHIELD DICE
</button>
</div>
</div>
<div class="hdice-dsaves-container flex-row flex-justify-sb" style="width: 242px;">
<div class="subcontainer">
<div class="row-container" style="float:right;margin-top:10px;">
<span data-i18n="successes-u">SUCCESSES</span>
<input type="checkbox" name="attr_deathsave_succ1">
<input type="checkbox" name="attr_deathsave_succ2">
<input type="checkbox" name="attr_deathsave_succ3">
</div>
<button style="margin-top:8px;" class="break-lang" type="roll" name="roll_death_save"
value="@{wtype}&{template:simple} {{rname=^{destruction-save-u}}} {{mod=@{death_save_bonus}}} {{r1=[[@{d20}+@{death_save_bonus}[MOD]@{globalsavingthrowbonus}]]}} {{normal=1}} {{global=@{global_save_mod}}} @{charname_output}"
data-i18n="destruction-saves-u">DESTRUCTION SAVES
</button>
</div>
<div class="subcontainer">
<div class="sheet-row options" style="text-align:center;">
<button type="roll" name="roll_system_damage" data-i18n="system-dmg-lvl:-u"
style="width:86px;" class="break-lang"
value="@{wtype}&{template:traits} @{charname_output} {{name=System Damage}} {{source=Level: @{system_dmg_lvl}}} {{description=@{system_dmg}}}">
SYSTEM DMG LEVEL:
</button>
</div>
<div class="sheet-row options" style="text-align:center; font-size: 20px;">
<select name="attr_system_dmg_lvl" style="margin-left:3px;">
<option value="0" selected="selected">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
</div>
</div>
</div>
<div class="hp">
<div class="top">
<span class="label" data-i18n="reactor-u">Reactor: </span>
<select name="attr_ship_reactor">
<option value="none" selected="selected" data-i18n="option-select-none-u">None</option>
<option value="fuelcell" data-i18n="fuel-cell-reactor-u">Fuel Cell Reactor</option>
<option value="ionization" data-i18n="ionization-reactor-u">Ionization Reactor</option>
<option value="powercore" data-i18n="pwr-core-reactor-u">Power Core Reactor</option>
</select>
</div>
<div class="top">
<span data-i18n="pwrcoupling-u">Power Coupling: </span>
<select name="attr_ship_pwr_coupling">
<option value="none" selected="selected" data-i18n="option-select-none-u">None</option>
<option value="direct" data-i18n="direct-pwr-coup-u">Direct Power Coupling</option>
<option value="distributed" data-i18n="dist-pwr-coup-u">Distributed Power Coupling</option>
<option value="hubspoke" data-i18n="hub-spoke-pwr-coup-u">Hub Spoke Power Coupling</option>
</select>
</div>
<span class="label" data-i18n="reactor-pwr-couple-u">REACTOR &amp; POWER COUPLING</span>
</div>
<div class="flex-row insp-prof-container">
<div class="value">
<!-- <span name="attr_passive_wisdom"></span> -->
<input type="number" value="@{wisdom}" name="attr_passive_ship_scan">
</div>
<div class="label">
<span data-i18n="passive-ship-scan-u">PASSIVE SCAN (WISDOM)</span>
</div>
</div>
</div>
</div>
<input type="hidden" class="ammoflag" name="attr_ammotracking">
<div class="attacks" style="position: relative;min-height:100px;min-width:500px">
<div class="top" style="margin-left:5px;">
<span class="label" style="width:50px;margin:0 10px 0 0;padding:0" data-i18n="ship-weapon-category-u">CATEGORY</span>
<span class="label lang-long" style="width:50px;margin:0 9px 0 0;padding:0" data-i18n="ship-weapon-facing-u">FACING</span>
<span class="label" style="width:140px;margin:0 8px 0 0;padding:0" data-i18n="name-u">NAME</span>
<span class="label" style="width:50px;margin:0 9px 0 0;padding:0" data-i18n="ship-weapon-range-u">RANGE</span>
<span class="label" style="width:35px;margin:0 2px 0 0;padding:0" data-i18n="atk-u">ATK</span>
<span class="label" style="width:75px;margin:0 2px 0 0;padding:0" data-i18n="dmg-type-u">DAMAGE/TYPE</span>
<span class="label lang-long" style="width:30px;margin:0;padding:0" data-i18n="attacks-per-round-u">ATKS</span>
</div>
<fieldset class="repeating_attack">
<div class="attack">
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<div class="options">
<div class="sheet-row">
<span data-i18n="ship-weapon-category:-u">WEAPON CATEGORY</span>
<select name="attr_ship_weapon_category">
<option value="PRIMARY" selected="selected" data-i18n="primary-u">PRIMARY</option>
<option value="SECONDARY" data-i18n="secondary-u">SECONDARY</option>
<option value="TERTIARY" data-i18n="tertiary-u">TERTIARY</option>
<option value="QUATERNARY" data-i18n="quaternary-u">QUATERNARY</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="ship-weapon-facing:-u">WEAPON FACING:</span>
<select name="attr_ship_weapon_facing">
<option value="TURRETED" selected="selected" data-i18n="turreted-u">TURRETED</option>
<option value="FRONT" data-i18n="bow-front-u">FRONT</option>
<option value="BACK" data-i18n="stern-back-u">BACK</option>
<option value="LEFT" data-i18n="port-left-u">LEFT</option>
<option value="RIGHT" data-i18n="starboard-right-u">RIGHT</option>
<option value="BROADSIDED" data-i18n="broadsided-u">BROADSIDED</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_atkname">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_atkflag" value="{{attack=1}}" checked="checked">
<span data-i18n="attack:-u">ATTACK:</span>
<select name="attr_atkattr_base">
<option value="@{strength_mod}" data-i18n="str-u">STR</option>
<option value="@{dexterity_mod}" selected="selected" data-i18n="dex-u">DEX</option>
<option value="@{constitution_mod}" data-i18n="con-u">CON</option>
<option value="@{intelligence_mod}" data-i18n="int-u">INT</option>
<option value="@{wisdom_mod}" data-i18n="wis-u">WIS</option>
<option value="@{charisma_mod}" data-i18n="cha-u">CHA</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="0">-</option>
</select>
<span>+</span>
<input type="text" class="num" name="attr_atkmod" placeholder="0">
<input type="hidden" name="attr_atkprofflag" value="">
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="range:-u">RANGE:</span>
<input type="text" name="attr_atkrange" placeholder="Self (60-foot cone)" style="width: 170px;" data-i18n-placeholder="range-place">
</div>
<div class="sheet-row">
<span data-i18n="crit-range-u">CRIT RANGE:</span>
<input type="text" class="num" name="attr_atkcritrange" value="20" placeholder="20">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_dmgflag" value="{{damage=1}} {{dmg1flag=1}}" checked="checked">
<span data-i18n="damage:-u">DAMAGE:</span>
<input type="text" name="attr_dmgbase" placeholder="1d6" style="width: 50px;">
<span>+</span>
<select name="attr_dmgattr">
<option value="@{strength_mod}" data-i18n="str-u">STR</option>
<option value="@{dexterity_mod}" selected="selected" data-i18n="dex-u">DEX</option>
<option value="@{constitution_mod}" data-i18n="con-u">CON</option>
<option value="@{intelligence_mod}" data-i18n="int-u">INT</option>
<option value="@{wisdom_mod}" data-i18n="wis-u">WIS</option>
<option value="@{charisma_mod}" data-i18n="cha-u">CHA</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="0">-</option>
</select>
<span>+</span>
<input type="text" class="num" name="attr_dmgmod" placeholder="0">
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_dmgtype" placeholder="Energy" style="width: 50px;" data-i18n-placeholder="Energy">
<span data-i18n="crit:-u">CRIT:</span>
<input type="text" name="attr_dmgcustcrit" placeholder="1d6" style="width: 80px;">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_dmg²2flag" value="{{damage=1}} {{dmg2flag=1}}">
<span data-i18n="damage2:-u">DAMAGE2:</span>
<input type="text" name="attr_dmg2base" placeholder="1d6" style="width: 50px;">
<span>+</span>
<select name="attr_dmg2attr">
<option value="@{strength_mod}" data-i18n="str-u">STR</option>
<option value="@{dexterity_mod}" data-i18n="dex-u">DEX</option>
<option value="@{constitution_mod}" data-i18n="con-u">CON</option>
<option value="@{intelligence_mod}" data-i18n="int-u">INT</option>
<option value="@{wisdom_mod}" data-i18n="wis-u">WIS</option>
<option value="@{charisma_mod}" data-i18n="cha-u">CHA</option>
<option value="power" data-i18n="power-u">POWER</option>
<option value="0" selected="selected">-</option>
</select>
<span>+</span>
<input type="text" class="num" name="attr_dmg2mod" placeholder="0">
</div>
<div class="sheet-row">
<span style="margin-left: 17px;" data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_dmg2type" placeholder="Energy" style="width: 50px;" data-i18n-placeholder="Energy">
<span data-i18n="crit:-u">CRIT:</span>
<input type="text" name="attr_dmg2custcrit" placeholder="1d6" style="width: 80px;">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_saveflag" value="{{save=1}} {{saveattr=@{saveattr}}} {{savedesc=@{saveeffect}}} {{savedc=[[[[@{savedc}]][SAVE]]]}}">
<span data-i18n="saving-throw:-u">SAVING THROW:</span>
<select name="attr_saveattr">
<option value="Strength" data-i18n="str-u">STR</option>
<option value="Dexterity" selected="selected" data-i18n="dex-u">DEX</option>
<option value="Constitution" data-i18n="con-u">CON</option>
<option value="Intelligence" data-i18n="int-u">INT</option>
<option value="Wisdom" data-i18n="wis-u">WIS</option>
<option value="Charisma" data-i18n="cha-u">CHA</option>
</select>
<span data-i18n="vs-dc:-u">VS DC:</span>
<select name="attr_savedc">
<option value="(@{power_save_dc})" selected="selected" data-i18n="power-u">POWER</option>
<option value="(@{strength_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="str-u">STR</option>
<option value="(@{dexterity_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="dex-u">DEX</option>
<option value="(@{constitution_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="con-u">CON</option>
<option value="(@{intelligence_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="int-u">INT</option>
<option value="(@{wisdom_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="wis-u">WIS</option>
<option value="(@{charisma_mod}+8+@{power_dc_mod}+@{pb})" data-i18n="cha-u">CHA</option>
<option value="(@{saveflat})" data-i18n="flat-u">FLAT</option>
</select>
<input class="flatflag" type="hidden" name="attr_savedc" value="saveflat">
<input class="num flat" type="text" name="attr_saveflat" placeholder="8" value="8">
</div>
<div class="sheet-row">
<span data-i18n="save-effect:-u">SAVE EFFECT:</span>
<input type="text" name="attr_saveeffect" placeholder="half damage" style="width: 160px;" data-i18n-placeholder="save-effect-place" value="half damage">
</div>
<div class="sheet-row ammo">
<span data-i18n="ammunition:-u">AMMUNITION:</span>
<input type="text" name="attr_ammo" placeholder="Arrows" style="width: 160px;" data-i18n-placeholder="ammunition-place">
</div>
<div class="sheet-row">
<span data-i18n="attacks-per-round:-u">ATK/ROUND:</span>
<input type="text" name="attr_atk_per_round" placeholder="1" style="width: 160px;">
</div>
<div class="sheet-row">
<span data-i18n="description:-u">DESCRIPTION:</span>
<textarea name="attr_atk_desc" placeholder="Up to 2 creatures within 5 feet" data-i18n-placeholder="description-place"></textarea>
</div>
</div>
<div class="display">
<button type="roll" name="roll_attack" value="@{rollbase}">
<span name="attr_ship_weapon_category" style="width: 50px;"></span>
<span name="attr_ship_weapon_facing" style="width:50px;"></span>
<span name="attr_atkname" style="width: 140px;"></span>
<span name="attr_atkrange" style="width: 50px"></span>
<input type="text" name="attr_atkbonus" style="width: 35px; text-align: center;" value="">
<input type="text" name="attr_atkdmgtype" style="width: 75px;" value="">
<input type="text" name="attr_atk_per_round" style="width: 30px;" value="">
</button>
</div>
</div>
<input type="hidden" name="attr_rollbase">
<input type="hidden" name="attr_rollbase_dmg">
<input type="hidden" name="attr_rollbase_crit">
<input type="hidden" name="attr_hldmg">
<input type="hidden" name="attr_powerlevel">
<input type="hidden" name="attr_itemid">
<input type="hidden" name="attr_powerid">
<input type="hidden" name="attr_power_innate">
<input type="hidden" name="attr_versatile_alt">
<button type="roll" name="roll_attack_dmg" style="display: none;" value="@{rollbase_dmg}"></button>
<button type="roll" name="roll_attack_crit" style="display: none;" value="@{rollbase_crit}"></button>
</fieldset>
<span class="label" style="margin-top: 0px; position: absolute; bottom: 0px;" data-i18n="ship-weapons-u">Ship Weapon Attacks</span>
</div>
<input type="hidden" class="toggleflag" name="attr_global_attack_mod_flag">
<div class="conditional-visibility textbox globalattack">
<span class="label" data-i18n="global-attack-u">GLOBAL ATTACK MODIFIER</span>
<fieldset class="repeating_tohitmod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_attack_active_flag" value="1" class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_attack_rollstring" placeholder="1d4[BLESS]"></textarea>
</div>
<div class="display">
<span class="title" name="attr_global_attack_rollstring"></span>
</div>
</div>
</fieldset>
</div>
<input type="hidden" class="toggleflag" name="attr_global_damage_mod_flag">
<div class="conditional-visibility textbox globalattack">
<span class="label" data-i18n="global-damage-u">GLOBAL DAMAGE MODIFIER</span>
<fieldset class="repeating_damagemod">
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_global_damage_active_flag" value="1" class="active-flag">
<div class="options">
<textarea type="textarea" name="attr_global_damage_rollstring" placeholder="1d6[SNEAK ATTACK]"></textarea>
<div class="sheet-row" style="margin-bottom: 5px;">
<span style="display: inline; margin-left: 25px;" data-i18n="type:-u">TYPE:</span>
<input type="text" name="attr_global_damage_type" value="">
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span class="title" name="attr_global_damage_rollstring" style="width: 110px; padding-right: 0px;"></span>
<span class="subheader" name="attr_global_damage_type" style="padding-right: 0px;"></span>
</div>
</div>
</fieldset>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="pwr-dice-container">
<div class="label">
<span data-i18n="ship-pwr-die-label-u">POWER DIE CAPACITY STORAGE</span>
</div>
<div class="pwr-die-system">
<button type="roll" name="roll_pwr_dice" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-cen-u}}} {{mod=D@{pwrdie_final}}} {{r1=[[1d@{pwrdie_final}]]}} {{normal=1}} @{charname_output}" data-i18n="central-system-u">Central System Power Die</button>
<input type="text" name="attr_pwr_c_storage" value="0"><span> &#47; </span>
<input type="text" name="attr_pwr_c_storage_actual" value="0">
</div>
<div class="pwr-die-system">
<button type="roll" name="roll_pwr_dice" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-com-u}}} {{mod=D@{pwrdie_final}}} {{r1=[[1d@{pwrdie_final}]]}} {{normal=1}} @{charname_output}" data-i18n="comms-system-u">Communication System Power Die</button>
<input type="text" name="attr_pwr_s_storage" value="0"><span> &#47; </span>
<input type="text" name="attr_pwr_comm_storage_actual" value="0">
</div>
<div class="pwr-die-system">
<button type="roll" name="roll_pwr_dice" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-eng-u}}} {{mod=D@{pwrdie_final}}} {{r1=[[1d@{pwrdie_final}]]}} {{normal=1}} @{charname_output}" data-i18n="engines-system-u">Engines System Power Die</button>
<input type="text" name="attr_pwr_s_storage" value="0"><span> &#47; </span>
<input type="text" name="attr_pwr_engine_storage_actual" value="0">
</div>
<div class="pwr-die-system">
<button type="roll" name="roll_pwr_dice" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-shi-u}}} {{mod=D@{pwrdie_final}}} {{r1=[[1d@{pwrdie_final}]]}} {{normal=1}} @{charname_output}" data-i18n="shields-system-u">Shields System Power Die</button>
<input type="text" name="attr_pwr_s_storage" value="0"><span> &#47; </span>
<input type="text" name="attr_pwr_shields_storage_actual" value="0">
</div>
<div class="pwr-die-system">
<button type="roll" name="roll_pwr_dice" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-sen-u}}} {{mod=D@{pwrdie_final}}} {{r1=[[1d@{pwrdie_final}]]}} {{normal=1}} @{charname_output}" data-i18n="sensors-system-u">Sensors System Power Die</button>
<input type="text" name="attr_pwr_s_storage" value="0"><span> &#47; </span>
<input type="text" name="attr_pwr_sensors_storage_actual" value="0">
</div>
<div class="pwr-die-system">
<button type="roll" name="roll_pwr_dice" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-wea-u}}} {{mod=D@{pwrdie_final}}} {{r1=[[1d@{pwrdie_final}]]}} {{normal=1}} @{charname_output}" data-i18n="weapons-system-u">Weapons System Power Die</button>
<input type="text" name="attr_pwr_s_storage" value="0"><span> &#47; </span><input type="text" name="attr_pwr_weapons_storage_actual" value="0">
</div>
<div class="pwr-die-system" style="margin-top:10px;">
<button type="roll" name="roll_pwr_dice_recovery" value="@{wtype}&{template:simple} {{rname=^{pwr-dice-recovery-u}}} {{mod=D@{pwrdie_recovery}}} {{r1=[[1d@{pwrdie_recovery}-@{pwrdie_mod}]]}} {{normal=1}} @{charname_output}" data-i18n="pwr-dice-recovery-u"></button>
</div>
</div>
<div class="resources">
<div class="hdice-dsaves-container" style="width: 246px; margin-top: 10px;">
<div class="subcontainer" style="min-height: 64px; min-width: 119px;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_class_resource_max" title="@{class_resource_max}">
</div>
<input type="number" name="attr_class_resource" title="@{class_resource}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_class_resource_name" title="@{class_resource_name}" placeholder="CLASS RESOURCE" data-i18n-placeholder="class-resource-u">
</div>
<div class="subcontainer" style="min-height: 64px; min-width: 119px; float: right;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_other_resource_max" title="@{other_resource_max}">
</div>
<input type="number" name="attr_other_resource" title="@{other_resource}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_other_resource_name" title="@{other_resource_name}" placeholder="OTHER RESOURCE" data-i18n-placeholder="other-resource-u">
<input type="hidden" name="attr_other_resource_itemid">
</div>
</div>
<fieldset class="repeating_resource">
<div class="hdice-dsaves-container" style="width: 246px; margin-top: 10px;">
<div class="subcontainer" style="height: 64px; width: 119px;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_resource_left_max" title="@{repeating_resource_left_max}">
</div>
<input type="number" name="attr_resource_left" title="@{repeating_resource_left}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_resource_left_name" title="@{repeating_resource_left_name}" placeholder="OTHER RESOURCE" data-i18n-placeholder="other-resource-u">
<input type="hidden" name="attr_resource_left_itemid">
</div>
<div class="subcontainer" style="height: 64px; width: 119px;">
<div class="top">
<span data-i18n="total">Total</span>
<input type="text" name="attr_resource_right_max" title="@{repeating_resource_right_max}">
</div>
<input type="number" name="attr_resource_right" title="@{repeating_resource_right}" style="margin-bottom: -6px;">
<input type="text" class="label" name="attr_resource_right_name" title="@{repeating_resource_right_name}" placeholder="OTHER RESOURCE" data-i18n-placeholder="other-resource-u">
<input type="hidden" name="attr_resource_right_itemid">
</div>
</div>
</fieldset>
</div>
<div class="textbox traits" style="min-height: 250px;">
<input type="hidden" class="inventoryflag" name="attr_simpletraits" value="complex">
<textarea class="simple" name="attr_features_and_traits" style="min-height: 461px; height: 461px;"></textarea>
<div class="complex">
<fieldset class="repeating_shiptraits">
<div class="trait">
<button type="roll" name="roll_output" class="output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{name}}} {{source=@{source}: @{source_type}}} {{description=@{description}}}">w</button>
<input class="options-flag" type="checkbox" name="attr_options-flag" checked="checked"><span>y</span>
<input class="display-flag" type="checkbox" name="attr_display_flag">
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_name" style="width: 120px;">
</div>
<div class="sheet-row">
<span data-i18n="source:-u">SOURCE:</span>
<select name="attr_source">
<option selected="selected" data-i18n="tier">Tier</option>
<option data-i18n="other">Other</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="source-type:-u">SOURCE TYPE:</span>
<input type="text" name="attr_source_type" style="width: 160px;" placeholder="Tier 1">
</div>
<div class="sheet-row">
<textarea name="attr_description" style="min-height: 200px; height: 200px;"></textarea>
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span class="title" name="attr_name"></span>
<span class="subheader">
<span name="attr_source"></span><span>: </span><span name="attr_source_type"></span>
</span>
<span class="desc" name="attr_description"></span>
</div>
</div>
</fieldset>
</div>
<span class="label" data-i18n="feats-traits-u" style="margin-top: 0px; position: absolute; bottom: 0px;">FEATURES & TRAITS</span>
</div>
</div>
</div>
</div>
<div class="tab options">
<div class="header">
<div class="name-container">
<img src="https://s22.postimg.cc/jnlp8fqc1/Star_Wars_5_E_Logo_Shrunk.png" style="padding-bottom: 10px;">
<input type="text" name="attr_character_name" style="width: 100%;">
<span class="label" data-i18n="ship-name-u">SHIP NAME</span>
</div>
<div class="header-info options">
<div class="flex-row flex-align-center">
<span data-i18n="ship-size:-u">SIZE:</span>
<select class="hiding class" name="attr_ship_size">
<option value="" data-i18n="choose">Choose</option>
<option value="Tiny" data-i18n="tiny">Tiny</option>
<option value="Small" data-i18n="small">Small</option>
<option value="Medium" data-i18n="medium">Medium</option>
<option value="Large" data-i18n="large">Large</option>
<option value="Huge" data-i18n="huge">Huge</option>
<option value="Gargantuan" data-i18n="gargantuan">Gargantuan</option>
</select>
<span data-i18n="ship-tier:-u">TIER:</span>
<input type="number" class="class-level" style="width: 40px" name="attr_base_ship_tier" value="0">
<span data-i18n="role-specialization:-u">ROLE:</span>
<input type="text" class="class-level" name="attr_ship_role" value="">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-manufacturer:-u">MANUFACTURER/LINE/CLASS:</span>
<input type="text" name="attr_ship_manufacturer">
</div>
<div class="flex-row flex-align-center">
<span data-i18n="ship-credits-next-tier:-u">CREDITS NEEDED TO UPGRADE TO NEXT TIER:</span>
<input type="number" style="width:90px" name="attr_ship_cr_next">
</div>
</div>
</div>
<div class="button-row flex-row flex-justify-sb">
<input type="hidden" class="toggleflag" name="attr_wtype">
<div class="gm-btn-group">
<input name="attr_whispertoggle" type="hidden" value="">
<button type="action" name="act_wtype_public"><span data-i18n="public:-u">PUBLIC</span></button>
<button type="action" name="act_wtype_whisper"><span data-i18n="to-gm:-u">TO <span class="togm">GM</span></button>
</div>
<input type="hidden" name="attr_rtype">
<div class="adv-btn-group">
<input type="hidden" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20">
<button type="action" name="act_adv_advantage"><span data-i18n="adv-u">ADVANTAGE</span></button>
<button type="action" name="act_adv_normal"><span data-i18n="norm-u">NORMAL</span></button>
<button type="action" name="act_adv_disadvantage"><span data-i18n="disadv-u">DISADVANTAGE</span></button>
</div>
<div class="ship-btn-group">
<input type="hidden" name="attr_ship_tab">
<button type="action" name="act_ship_tab_core"><span data-i18n="core-u">CORE</span></button>
<button type="action" name="act_ship_tab_cargo"><span data-i18n="ship-cargo-tab-u">CARGO</span></button>
<button type="action" name="act_ship_tab_mods"><span data-i18n="ship-mods-tab-u">MODS</span></button>
<button type="action" name="act_ship_tab_suites"><span data-i18n="ship-suites-tab-u">SUITES</span></button>
<button type="action" name="act_ship_tab_options"><span style="font-family: pictos">y</span></button>
</div>
</div>
<div class="flex-row body">
<div class="flex-column flex-w-4">
<div class="general_options">
<div class="version">
<span data-i18n="version">v</span>
<input type="text" name="attr_version">
</div>
<div class="sheet-row">
<span>SHEET TYPE:</span>
<select name="attr_npc">
<option value="0">PC</option>
<option value="1">NPC</option>
<option value="2">Ship</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="roll-queries:-u">ROLL QUERIES:</span>
<select name="attr_rtype">
<option value="{{always=1}} {{r2=[[@{d20}" data-i18n="always-roll-adv">Always Roll Advantage</option>
<option value="@{advantagetoggle}" data-i18n="toggle-roll-adv">Advantage Toggle</option>
<option value="{{query=1}} ?{Advantage?|Normal Roll,&#123&#123normal=1&#125&#125 &#123&#123r2=[[0d20|Advantage,&#123&#123advantage=1&#125&#125 &#123&#123r2=[[@{d20}|Disadvantage,&#123&#123disadvantage=1&#125&#125 &#123&#123r2=[[@{d20}}" data-i18n="query-roll-adv">Query Advantage</option>
<option value="{{normal=1}} {{r2=[[0d20" data-i18n="never-roll-adv">Never Roll Advantage</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="whisp-rolls-gm:-u">WHISPER ROLLS TO GM:</span>
<select name="attr_wtype">
<option value="" data-i18n="never-whisper-roll">Never Whisper Rolls</option>
<option value="@{whispertoggle}" data-i18n="toggle-roll-whisper">Whisper Toggle</option>
<option value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }" data-i18n="query-whisper-roll">Query Whisper</option>
<option value="/w gm " data-i18n="always-whisper-roll">Always Whisper Rolls</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="auto-dmg-roll:-u">AUTO DAMAGE ROLL:</span>
<select class="dtype" name="attr_dtype">
<option value="pick" data-i18n="never-roll-dmg">Don't Auto Roll Damage</option>
<option value="full" data-i18n="always-roll-dmg">Auto Roll Damage & Crit</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="core-die-roll:-u">CORE DIE ROLL:</span>
<input type="text" name="attr_core_die" value="1d20" placeholder="1d20" title="@{core_die}">
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_global_attack_mod_flag" value="1">
<span data-i18n="show-global-attack-field-u">SHOW GLOBAL ATTACK MODIFIER FIELD</span>
</div>
<div class="sheet-row">
<input type="checkbox" name="attr_global_damage_mod_flag" value="1">
<span data-i18n="show-global-damage-field-u">SHOW GLOBAL DAMAGE MODIFIER FIELD</span>
</div>
<div class="sheet-row">
<span data-i18n="add-char-to-templates:-u">ADD CHARACTER NAME TO TEMPLATES:</span>
<select class="dtype" name="attr_charname_output">
<option value="{{charname=@{character_name}}}" data-i18n="on">On</option>
<option value="charname=@{character_name}" selected="selected" data-i18n="off">Off</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="feats-traits-u">FEATURES AND TRAITS</span><span>:</span>
<select name="attr_simpletraits">
<option value="complex" data-i18n="compendium-compatible">Compendium Compatible</option>
<option value="simple" data-i18n="simple">Simple</option>
</select>
</div>
<div class="sheet-row">
<span data-i18n="ammo-tracking:-u">AMMO TRACKING:</span>
<select name="attr_ammotracking">
<option value="on" data-i18n="on">On</option>
<option value="off" selected="selected" data-i18n="off">Off</option>
</select>
<span data-i18n-title="api-required-title" data-i18n="api-required-u" title="Try it now with easy one click API installation available with your Pro subscription." style="color:#666; cursor:help;">(API REQUIRED)</span>
</div>
<div class="sheet-row">
<span data-i18n="armor-class-tracking:-u">ARMOR CLASS TRACKING:</span>
<select name="attr_custom_ac_flag">
<option value="0" selected="selected" data-i18n="automatic">Automatic</option>
<option value="2" data-i18n="off">Off</option>
</select>
</div>
<div class="sheet-row title">
<span data-i18n="general-opts-u">GENERAL OPTIONS</span>
</div>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="save_options" style="width: 234px;">
<div class="sheet-row skill">
<span data-i18n="strength-save-u">Strength Save</span>
<span>+</span><input type="text" class="num" name="attr_strength_save_mod" value="0" placeholder="0" title="@{strength_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="dexterity-save-u">Dexterity Save</span>
<span>+</span><input type="text" class="num" name="attr_dexterity_save_mod" value="0" placeholder="0" title="@{dexterity_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="constitution-save-u">Constitution Save</span>
<span>+</span><input type="text" class="num" name="attr_constitution_save_mod" value="0" placeholder="0" title="@{constitution_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="intelligence-save-u">Intelligence Save</span>
<span>+</span><input type="text" class="num" name="attr_intelligence_save_mod" value="0" placeholder="0" title="@{intelligence_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="wisdom-save-u">Wisdom Save</span>
<span>+</span><input type="text" class="num" name="attr_wisdom_save_mod" value="0" placeholder="0" title="@{wisdom_save_mod}">
</div>
<div class="sheet-row skill">
<span data-i18n="charisma-save-u">Charisma Save</span>
<span>+</span><input type="text" class="num" name="attr_charisma_save_mod" value="0" placeholder="0" title="@{charisma_save_mod}">
</div>
<div class="sheet-row">
<span data-i18n="death-save-mod:-u">DEATH SAVE MODIFIER:</span>
<input type="text" class="num" name="attr_death_save_mod" placeholder="0" value="0">
</div>
<div class="sheet-row">
<span data-i18n="glob-saving-mod:-u">GLOBAL SAVING THsheet-row MODIFIER:</span>
<input type="text" class="num" name="attr_globalsavemod" placeholder="0" value="0">
</div>
<div class="sheet-row title">
<span data-i18n="save-opts-u">SAVE OPTIONS</span>
</div>
</div>
<div class="skill_options" style="width: 234px;">
<div data-i18n-list="skills-list">
<div class="sheet-row skill" data-i18n-list-item="ship_boost">
<select name="attr_ship_boost_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_boost-core">Boost <span>(Str)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_boost_flat" value="0" placeholder="0" title="@{ship_boost_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_ram">
<select name="attr_ship_ram_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_ram-core">Ram <span>(Str)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_ram_flat" value="0" placeholder="0" title="@{ship_ram_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_hide">
<select name="attr_ship_hide_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_hide-core">Hide <span>(Dex)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_hide_flat" value="0" placeholder="0" title="@{ship_hide_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_maneuvering">
<select name="attr_ship_maneuvering_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_maneuvering-core">Maneuvering <span>(Dex)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_maneuvering_flat" value="0" placeholder="0" title="@{ship_maneuvering_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_patch">
<select name="attr_ship_patch_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_patch-core">Patch <span>(Con)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_patch_flat" value="0" placeholder="0" title="@{ship_patch_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_regulation">
<select name="attr_ship_regulation_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_regulation-core">Regulation <span>(Con)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_regulation_flat" value="0" placeholder="0" title="@{ship_regulation_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_astrogation">
<select name="attr_ship_astrogation_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_astrogation-core">Astrogation<span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_astrogation_flat" value="0" placeholder="0" title="@{ship_astrogation_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_data">
<select name="attr_ship_data_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_data-core">Data <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_data_flat" value="0" placeholder="0" title="@{ship_data_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_probe">
<select name="attr_ship_probe_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_probe-core">Probe <span>(Int)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_probe_flat" value="0" placeholder="0" title="@{ship_probe_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_scan">
<select name="attr_ship_scan_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_scan-core">Scan <span>(Wis)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_scan_flat" value="0" placeholder="0" title="@{ship_scan_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_impress">
<select name="attr_ship_impress_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_impress-core">Impress <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_impress_flat" value="0" placeholder="0" title="@{ship_impress_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_interfere">
<select name="attr_ship_interfere_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_interfere-core">Interfere <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_interfere_flat" value="0" placeholder="0" title="@{ship_interfere_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_menace">
<select name="attr_ship_menace_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_menace-core">Menace <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_menace_flat" value="0" placeholder="0" title="@{ship_menace_flat}">
</div>
<div class="sheet-row skill" data-i18n-list-item="ship_swindle">
<select name="attr_ship_swindle_type"><option value="1" selected="selected" data-i18n="proficiently">Proficiently</option><option value="2" data-i18n="expertly">Expertly</option></select>
<span data-i18n="ship_swindle-core">Swindle <span>(Cha)</span></span>
<span>+</span><input type="text" class="num" name="attr_ship_swindle_flat" value="0" placeholder="0" title="@{ship_swindle_flat}">
</div>
</div>
<div class="sheet-row" style="margin-top:10px;">
<input type="checkbox" name="attr_jack_of_all_trades" value="@{jack}">
<span data-i18n="jack-of-all-u">JACK OF ALL TRADES</span>
</div>
<div class="sheet-row">
<span data-i18n="pass-perc-mod:-u">PASSIVE PERCEPTION MODIFIER:</span>
<input type="text" class="num" name="attr_passiveperceptionmod" placeholder="0" value="0">
</div>
<div class="sheet-row title">
<span data-i18n="skill-opts-u">SKILL OPTIONS</span>
</div>
</div>
</div>
<div class="flex-column flex-w-4">
<div class="attacks" style="position: relative;min-height:100px;">
<div class="globalattack">
<span class="label" data-i18n="armor-u" style="border:none">ARMOR</span>
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_ship_armor_active_flag" value="1" class="active-flag">
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_ship_armor_name">
</div>
<div class="sheet-row">
<span data-i18n="ac-bonus:-u">AC BONUS:</span>
<input type="number" name="attr_ship_armor_ac_bonus">
</div>
<div class="sheet-row">
<span data-i18n="hp-slash-hit-die:-u">HP/HIT DIE:</span>
<input type="number" name="attr_ship_armor_hp_per_hit_die">
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span name="attr_ship_armor_name" style="width:120px; padding-right: 0px;"></span>
<span name="attr_ship_armor_ac_bonus" style="width:20px; padding-right: 0px;"></span>
<span name="attr_ship_armor_hp_per_hit_die" style="width:20px; padding-right: 0px;"></span>
</div>
</div>
</div>
<div class="globalattack">
<span class="label" data-i18n="shield-u">SHIELD</span>
<div class="global-mod">
<input type="checkbox" name="attr_options-flag" class="options-flag" checked="checked" style="top: -15px;"><span>y</span>
<input type="checkbox" name="attr_ship_shield_active_flag" value="1" class="active-flag">
<div class="options">
<div class="sheet-row">
<span data-i18n="name:-u">NAME:</span>
<input type="text" name="attr_ship_shield_name">
</div>
<div class="sheet-row">
<span data-i18n="shield-capacity-x:-u">SHIELD CAPACITY X:</span>
<input type="number" style="width:100px;" name="attr_ship_shield_capacity">
</div>
<div class="sheet-row">
<span data-i18n="regen-rate-x:-u">REGEN RATE X:</span>
<input type="number" style="width:100px;" name="attr_ship_shield_regen_rate_coefficient">
</div>
</div>
<div class="display" style="margin-bottom: 2px;">
<span name="attr_ship_shield_name" style="width:120px; padding-right: 0px;"></span>
<span name="attr_ship_shield_capacity" style="width:20px; padding-right: 0px;"></span>
<span name="attr_ship_shield_regen_rate_coefficient" style="width:20px; padding-right: 0px;"></span>
</div>
</div>
</div>
<span class="label" style="margin-top: 0px; position: absolute; bottom: 0px;" >ARMOR &amp; SHIELD (legacy)</span>
</div>
</div>
</div>
</div>
<div class="footer">
<div style="margin-right: 50px; margin-left: 10px;">
<span data-i18n="portions-sheet-utilize">
Portions of this sheet utilize content from the System Reference Document 5.0 under the OGL License. View OGL License and Copyright Notice. https://sw5e.com/
</span>
</div>
<div>
<span data-i18n="footer-wiki-link">
For more information about this character sheet, its functionality, or uses, please check out the Roll20 Wiki for official documentation. https://wiki.roll20.net/5th_Edition_OGL_by_Roll20
</span>
</div>
</div>
</div>
<!-- HIDDEN FIELDS -->
<input type="hidden" name="attr_d20" value="1d20">
<input type="hidden" name="attr_level" value="1">
<input type="hidden" name="attr_pb" value="2">
<input type="hidden" name="attr_pbd_safe" value="">
<input type="hidden" name="attr_jack" value="1">
<input type="hidden" name="attr_jack_attr" value="">
<input type="hidden" name="attr_jack_bonus" value="">
<input type="hidden" name="attr_passive_wisdom" value="10">
<input type="hidden" name="attr_hitdie_final" value="">
<input type="hidden" name="attr_globalsavingthrowbonus" value="">
<input type="hidden" name="attr_death_save_bonus" value="0">
<input type="hidden" name="attr_initiative_bonus" value="0">
<input type="hidden" name="attr_power_save_dc" value="0">
<input type="hidden" name="attr_power_attack_bonus" value="0">
<input type="hidden" name="attr_power_attack_mod" value="0">
<input type="hidden" name="attr_npc_legendary_actions_desc" value="">
<input type="hidden" name="attr_global_damage_mod_crit" value="0">
<input type="hidden" name="attr_global_damage_mod_roll" value="0">
<input type="hidden" name="attr_global_damage_mod_type" value="">
<input type="hidden" name="attr_global_attack_mod" value="">
<input type="hidden" name="attr_global_save_mod" value="">
<input type="hidden" name="attr_global_skill_mod" value="">
<input type="hidden" name="attr_exhaustion_1" value="">
<input type="hidden" name="attr_exhaustion_2" value="">
<input type="hidden" name="attr_exhaustion_3" value="">
<input type="hidden" name="attr_exhaustion_4" value="">
<input type="hidden" name="attr_exhaustion_5" value="">
<input type="hidden" name="attr_exhaustion_6" value="">
<input type="hidden" name="attr_strength_mod" value="0">
<input type="hidden" name="attr_dexterity_mod" value="0">
<input type="hidden" name="attr_constitution_mod" value="0">
<input type="hidden" name="attr_intelligence_mod" value="0">
<input type="hidden" name="attr_wisdom_mod" value="0">
<input type="hidden" name="attr_charisma_mod" value="0">
<input type="hidden" name="attr_strength_save_bonus" value="0">
<input type="hidden" name="attr_dexterity_save_bonus" value="0">
<input type="hidden" name="attr_constitution_save_bonus" value="0">
<input type="hidden" name="attr_intelligence_save_bonus" value="0">
<input type="hidden" name="attr_wisdom_save_bonus" value="0">
<input type="hidden" name="attr_charisma_save_bonus" value="0">
<input type='hidden' name='attr_acrobatics_bonus' value='0'>
<input type='hidden' name='attr_animal_handling_bonus' value='0'>
<input type='hidden' name='attr_technology_bonus' value='0'>
<input type='hidden' name='attr_athletics_bonus' value='0'>
<input type='hidden' name='attr_deception_bonus' value='0'>
<input type='hidden' name='attr_lore_bonus' value='0'>
<input type='hidden' name='attr_insight_bonus' value='0'>
<input type='hidden' name='attr_intimidation_bonus' value='0'>
<input type='hidden' name='attr_investigation_bonus' value='0'>
<input type='hidden' name='attr_medicine_bonus' value='0'>
<input type='hidden' name='attr_nature_bonus' value='0'>
<input type='hidden' name='attr_perception_bonus' value='0'>
<input type='hidden' name='attr_performance_bonus' value='0'>
<input type='hidden' name='attr_persuasion_bonus' value='0'>
<input type='hidden' name='attr_piloting_bonus' value='0'>
<input type='hidden' name='attr_sleight_of_hand_bonus' value='0'>
<input type='hidden' name='attr_stealth_bonus' value='0'>
<input type='hidden' name='attr_survival_bonus' value='0'>
<input type='hidden' name='attr_lvl1_slots_total' value='0'>
<input type='hidden' name='attr_lvl2_slots_total' value='0'>
<input type='hidden' name='attr_lvl3_slots_total' value='0'>
<input type='hidden' name='attr_lvl4_slots_total' value='0'>
<input type='hidden' name='attr_lvl5_slots_total' value='0'>
<input type='hidden' name='attr_lvl6_slots_total' value='0'>
<input type='hidden' name='attr_lvl7_slots_total' value='0'>
<input type='hidden' name='attr_lvl8_slots_total' value='0'>
<input type='hidden' name='attr_lvl9_slots_total' value='0'>
<input type='hidden' name='attr_l1mancer_status' value='completed'>
<input type='hidden' name='attr_pilot_skill' value='0'>
<input type='hidden' name='attr_ship_size' value='0'>
<input type='hidden' name='attr_system_dmg_lvl' value='0'>
<input type='hidden' name='attr_system_dmg' value='None.'>
<input type='hidden' name='attr_ship_boost_bonus' value='0'>
<input type='hidden' name='attr_ship_ram_bonus' value='0'>
<input type='hidden' name='attr_ship_hide_bonus' value='0'>
<input type='hidden' name='attr_ship_maneuvering_bonus' value='0'>
<input type='hidden' name='attr_ship_patch_bonus' value='0'>
<input type='hidden' name='attr_ship_regulation_bonus' value='0'>
<input type='hidden' name='attr_ship_astrogation_bonus' value='0'>
<input type='hidden' name='attr_ship_data_bonus' value='0'>
<input type='hidden' name='attr_ship_probe_bonus' value='0'>
<input type='hidden' name='attr_ship_scan_bonus' value='0'>
<input type='hidden' name='attr_ship_impress_bonus' value='0'>
<input type='hidden' name='attr_ship_interfere_bonus' value='0'>
<input type='hidden' name='attr_ship_menace_bonus' value='0'>
<input type='hidden' name='attr_ship_swindle_bonus' value='0'>
<input type="hidden" name="attr_hulldie_final" value="">
<input type="hidden" name="attr_shielddie_final" value="">
<input type="hidden" name="attr_pwrdie_final" value="">
<input type="hidden" name="attr_pwrdie_recovery" value="">
<input type="hidden" name="attr_pwrdie_mod" value="">
<input type="hidden" name="attr_ship_mod_max" value="">
<input type="hidden" name="attr_ship_mod_current" value="">
<input type="hidden" name="attr_ship_hardpoints_max" value="">
<input type="hidden" name="attr_ship_hardpoints_current" value="">
<input type="hidden" name="attr_ship_t_hardpoints_max" value="">
<input type="hidden" name="attr_ship_t_hardpoints_current" value="">
<input type="hidden" name="attr_ship_suites_max" value="">
<input type="hidden" name="attr_ship_suites_current" value="">
<!-- ROLL TEMPLATES -->
<div class="rolltemplates">
<rolltemplate class="sheet-rolltemplate-simple">
<div class="sheet-container">
<div class="sheet-result">
{{#always}}
<div class="sheet-adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/always}}
{{#normal}}
<div class="sheet-solo">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/normal}}
{{#advantage}}
{{#rollLess() r1 r2}}
<div class="sheet-adv">
<span class="sheet-grey">{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-grey">{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-grey">{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="sheet-adv">
<span class="sheet-grey">{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
<div class="sheet-label">
<span>{{rname}}{{#mod}} <span>({{mod}})</span>{{/mod}}</span>
</div>
{{#charname}}
<div class="sheet-charname">
<span>{{charname}}</span>
</div>
{{/charname}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-atk">
<div class="sheet-container">
<div class="sheet-result">
{{#always}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/always}}
{{#normal}}
<div class="sheet-solo">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/normal}}
{{#advantage}}
{{#rollLess() r1 r2}}
<div class="sheet-adv">
<span class="sheet-grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="sheet-adv">
<span class="sheet-grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#range}}
<div class="sheet-sublabel">
<span>{{range}}</span>
</div>
{{/range}}
<div class="sheet-label">
{{#normal}}
{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}
{{#^rollWasCrit() r1}}<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollTotal() r1 r2}}{{#^rollWasCrit() r1}}<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollLess() r1 r2}}<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollLess() r1 r2}}
{{#rollGreater() r1 r2}}<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#charname}}
<div class="sheet-charname">
<span>{{charname}}</span>
</div>
{{/charname}}
</div>
{{#desc}}
<div class="sheet-desc sheet-info">
<span><span class="sheet-top"></span><span class="sheet-middle">{{desc}}</span><span class="sheet-bottom"></span></span>
</div>
{{/desc}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-dmg">
{{#save}}
{{#attack}}
<div class="sheet-desc sheet-save">
{{/attack}}
{{^attack}}
<div class="sheet-atk sheet-save">
{{/attack}}
<div class="sheet-savedc">
<span class="sheet-rolltemplate-inline" data-i18n="difficulty-class-abv">DC</span><span class="sheet-rolltemplate-inline">{{savedc}}</span>
</div>
{{#savedesc}}
<div class="sheet-sublabel">
<span>{{savedesc}}</span>
</div>
{{/savedesc}}
<div class="sheet-label">
<span class="sheet-rolltemplate-inline">{{saveattr}}</span> <span class="sheet-rolltemplate-inline" data-i18n="save">Save</span>
</div>
</div>
{{/save}}
{{^attack}}
{{#desc}}
<div class="sheet-desc sheet-info">
<span><span class="sheet-top"></span><span class="sheet-middle">{{desc}}</span><span class="sheet-bottom"></span></span>
</div>
{{/desc}}
{{/attack}}
{{#globaldamage}}
{{#^rollTotal() globaldamage 0}}
<div class="sheet-desc">
<span>{{globaldamage}}{{#globaldamagecrit}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/globaldamagecrit}}</span>
<span class="sheet-sublabel">{{globaldamagetype}}</span>
</div>
{{/^rollTotal() globaldamage 0}}
{{/globaldamage}}
{{#hldmg}}
{{#^rollTotal() hldmg 0}}
<div class="sheet-desc">
<span>{{hldmg}}{{#hldmgcrit}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/hldmgcrit}}</span>
<span class="sheet-sublabel">{{dmg1type}}</span>
<div class="sheet-label">
<span data-i18n="higher-lvl-cast">Higher Level Cast</span>
</div>
</div>
{{/^rollTotal() hldmg 0}}
{{/hldmg}}
<div class="sheet-container sheet-damagetemplate">
<div class="sheet-result">
{{#dmg1flag}}
{{^dmg2flag}}
<div class="sheet-solo">
<span class="sheet-damage">{{dmg1}}{{#crit}} + {{crit1}}{{/crit}}</span>
<span class="sheet-sublabel">{{dmg1type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
{{#dmg2flag}}
{{^dmg1flag}}
<div class="sheet-solo">
<span class="sheet-damage">{{dmg2}}{{#crit}} + {{crit2}}{{/crit}}</span>
<span class="sheet-sublabel">{{dmg2type}}</span>
</div>
{{/dmg1flag}}
{{/dmg2flag}}
{{#dmg1flag}}
{{#dmg2flag}}
<div class="sheet-adv">
<span class="sheet-damage">{{dmg1}}{{#crit}} + {{crit1}}{{/crit}}</span>
<span class="sheet-sublabel">{{dmg1type}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-damage">{{dmg2}}{{#crit}} + {{crit2}}{{/crit}}</span>
<span class="sheet-sublabel">{{dmg2type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
</div>
{{^attack}}
{{#range}}
<div class="sheet-sublabel" style="color: black;">
<span>{{range}}</span>
</div>
{{/range}}
<div class="sheet-label">
<span>{{rname}}</span>{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}}
</div>
{{#charname}}
<div class="sheet-charname">
<span>{{charname}}</span>
</div>
{{/charname}}
{{/attack}}
</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-atkdmg">
{{#attack}}
<div class="sheet-container sheet-atk">
<div class="sheet-result">
{{#always}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/always}}
{{#normal}}
<div class="sheet-solo">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/normal}}
{{#advantage}}
{{#rollLess() r1 r2}}
<div class="sheet-adv">
<span class="sheet-grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span class="sheet-grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="sheet-adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="sheet-adv">
<span class="sheet-grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#range}}
<div class="sheet-sublabel">
<span>{{range}}</span>
</div>
{{/range}}
<div class="sheet-label">
<span>{{rname}}{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}}{{#attack}} <span>({{mod}})</span>{{/attack}}</span>
</div>
{{#charname}}
<div class="sheet-charname">
<span>{{charname}}</span>
</div>
{{/charname}}
</div>
{{/attack}}
{{#save}}
{{#attack}}
<div class="sheet-container sheet-desc sheet-save">
{{/attack}}
{{^attack}}
<div class="sheet-container sheet-atk sheet-save">
{{/attack}}
<div class="sheet-savedc">
<span class="sheet-rolltemplate-inline" data-i18n="difficulty-class-abv">DC</span><span class="sheet-rolltemplate-inline">{{savedc}}</span>
</div>
{{#savedesc}}
<div class="sheet-sublabel">
<span>{{savedesc}}</span>
</div>
{{/savedesc}}
<div class="sheet-label">
<span class="sheet-rolltemplate-inline">{{saveattr}}</span> <span class="sheet-rolltemplate-inline" data-i18n="save">Save</span>
</div>
</div>
{{/save}}
{{#desc}}
<div class="sheet-desc sheet-info">
<span><span class="sheet-top"></span><span class="sheet-middle">{{desc}}</span><span class="sheet-bottom"></span></span>
</div>
{{/desc}}
{{#globaldamage}}
{{#^rollTotal() globaldamage 0}}
<div class="sheet-desc">
<span>
{{globaldamage}}
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sheet-sublabel">{{globaldamagetype}}</span>
</div>
{{/^rollTotal() globaldamage 0}}
{{/globaldamage}}
{{#hldmg}}
{{#^rollTotal() hldmg 0}}
<div class="sheet-desc">
<span>
{{hldmg}}
<!-- {{#hldmgcrit}} + {{hldmgcrit}}{{/hldmgcrit}} -->
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sheet-sublabel">{{dmg1type}}</span>
<div class="sheet-label">
<span data-i18n="higher-lvl-cast">Higher Level Cast</span>
</div>
</div>
{{/^rollTotal() hldmg 0}}
{{/hldmg}}
{{#damage}}
<div class="sheet-container sheet-damagetemplate">
<div class="sheet-result">
{{#dmg1flag}}
{{^dmg2flag}}
<div class="sheet-solo">
<span class="sheet-damage">
{{dmg1}}
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit1}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit1}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sheet-sublabel">{{dmg1type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
{{#dmg2flag}}
{{^dmg1flag}}
<div class="sheet-solo">
<span class="sheet-damage">
{{dmg2}}
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit2}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit2}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sheet-sublabel">{{dmg2type}}</span>
</div>
{{/dmg1flag}}
{{/dmg2flag}}
{{#dmg1flag}}
{{#dmg2flag}}
<div class="sheet-adv">
<span class="sheet-damage">
{{dmg1}}
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit1}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit1}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sheet-sublabel">{{dmg1type}}</span>
</div>
<div class="sheet-advspacer"></div>
<div class="sheet-adv">
<span>
{{dmg2}}
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit2}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}+ {{crit2}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}+ {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sheet-sublabel">{{dmg2type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
</div>
{{^attack}}
{{#range}}
<div class="sheet-sublabel">
<span>{{range}}</span>
</div>
{{/range}}
<div class="sheet-label">
<span>{{rname}}</span>{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}}
</div>
{{#charname}}
<div class="sheet-charname">
<span>{{charname}}</span>
</div>
{{/charname}}
{{/attack}}
</div>
{{/damage}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-desc">
<div class="sheet-desc sheet-info">
<span><span class="sheet-top"></span><span class="sheet-middle">{{desc}}</span><span class="sheet-bottom"></span></span>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-power">
<div class="sheet-container">
<div class="sheet-title sheet-row">
<span>{{name}}</span>{{#innate}}<span class="sheet-grey">, {{innate}}</span>{{/innate}}
</div>
<div class="sheet-spacer"></div>
{{#castingtime}}
<div class="sheet-row">
<span class="sheet-bold" data-i18n="casting-time:">Casting Time:</span> <span>{{castingtime}}</span>
</div>
{{/castingtime}}
{{#range}}
<div class="sheet-row">
<span class="sheet-bold" data-i18n="range:">Range:</span> <span>{{range}}</span>
</div>
{{/range}}
{{#target}}
<div class="sheet-row">
<span class="sheet-bold" data-i18n="target:">Target:</span> <span>{{target}}<></span>
</div>
{{/target}}
{{#duration}}
<div class="sheet-row">
<span class="sheet-bold" data-i18n="duration:">Duration:</span> <span>{{#concentration}}<span data-i18n="concentration">Concentration</span> {{/concentration}}{{duration}}</span>
</div>
{{/duration}}
<div class="sheet-spacer"></div>
{{#description}}
<div class="sheet-row">
<span class="sheet-description">{{description}}</span>
</div>
{{/description}}
{{#athigherlevels}}
<div class="sheet-row">
<span class="sheet-bold sheet-italics" data-i18n="at-higher-lvl">At Higher Levels</span>. <span class="sheet-description">{{athigherlevels}}</span>
</div>
{{/athigherlevels}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-traits">
<div class="sheet-row sheet-header">
<span>{{name}}</span>
</div>
{{#source}}
<div class="sheet-row sheet-subheader">
<span class="sheet-italics">{{#charname}}{{charname}} {{/charname}}{{source}}</span>
</div>
{{/source}}
{{#description}}
<div class="sheet-row">
<span class="sheet-desc">{{description}}</span>
</div>
{{/description}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npc">
<div class="sheet-row sheet-header">
<span>{{rname}}</span>
</div>
{{#name}}
<div class="sheet-row sheet-subheader">
<span class="sheet-italics">{{name}}</span>
</div>
{{/name}}
<div class="sheet-arrow-right"></div>
<div class="sheet-row">
{{#normal}}
<span class="sheet-italics">{{type}}: </span><span>{{r1}}</span>
{{/normal}}
{{#always}}
<span class="sheet-italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}
<span class="sheet-italics">{{type}}: </span><span class="sheet-grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="sheet-italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="sheet-italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span class="sheet-grey">{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<span class="sheet-italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span class="sheet-grey">{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="sheet-italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="sheet-italics">{{type}}: </span><span class="sheet-grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npcatk">
<div class="sheet-row sheet-header">
{{#normal}}
{{#rollWasCrit() r1}}{{rnamec}}{{/rollWasCrit() r1}}
{{#^rollWasCrit() r1}}{{rname}}{{/^rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}{{rnamec}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}{{rnamec}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}{{rnamec}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}{{rname}}{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}{{rnamec}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}{{rnamec}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}{{rnamec}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}{{rname}}{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}{{rnamec}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollTotal() r1 r2}}{{#^rollWasCrit() r1}}{{rname}}{{/^rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollLess() r1 r2}}{{rname}}{{/rollLess() r1 r2}}
{{#rollGreater() r1 r2}}{{rnamec}}{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#name}}
<div class="sheet-row sheet-subheader">
<span class="sheet-italics">{{name}}</span>
</div>
{{/name}}
<div class="sheet-arrow-right"></div>
<div class="sheet-row">
{{#normal}}
{{#rollWasCrit() r1}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r1}}
{{#^rollWasCrit() r1}}<span class="sheet-italics">{{type}}: </span>{{/^rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span class="sheet-italics">{{type}}: </span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="sheet-italics">[{{typec}}: </span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span class="sheet-italics">{{type}}: </span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="sheet-italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollTotal() r1 r2}}{{#^rollWasCrit() r1}}<span class="sheet-italics">{{type}}: </span>{{/^rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollLess() r1 r2}}<span class="sheet-italics">{{type}}: </span>{{/rollLess() r1 r2}}
{{#rollGreater() r1 r2}}<span class="sheet-italics">{{typec}}: </span>{{/rollGreater() r1 r2}}
{{/disadvantage}}
{{#normal}}
<span>{{r1}}</span>
{{/normal}}
{{#always}}
<span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}
<span class="sheet-grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span>{{r1}}</span><span> | </span><span class="sheet-grey">{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<span>{{r1}}</span><span> | </span><span class="sheet-grey">{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="sheet-grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#description}}
<div class="sheet-row">
<span class="sheet-desc">{{description}}</span>
</div>
{{/description}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npcdmg">
<div class="sheet-container sheet-dmgcontainer sheet-damagetemplate">
<span class="sheet-italics">Damage: </span>
<span>
{{#dmg1flag}}
{{dmg1}}{{#crit}} + {{crit1}}{{/crit}}{{dmg1type}}
{{/dmg1flag}}
{{#dmg1flag}}{{#dmg2flag}}+{{/dmg2flag}}{{/dmg1flag}}
{{#dmg2flag}}
{{dmg2}}{{#crit}} + {{crit2}}{{/crit}}{{dmg2type}}
{{/dmg2flag}}
</span>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npcaction">
<div class="sheet-container">
<div class="sheet-row sheet-header">
<span>{{rname}}</span>
</div>
{{#name}}
<div class="sheet-row sheet-subheader">
<span class="sheet-italics">{{name}}</span>
</div>
{{/name}}
<div class="sheet-arrow-right"></div>
{{#attack}}
<div class="sheet-row">
{{#normal}}
<span class="sheet-italics">Attack: </span><span>{{r1}}</span>
{{/normal}}
{{#always}}
<span class="sheet-italics">Attack: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}
<span class="sheet-italics">Attack: </span><span class="sheet-grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="sheet-italics">Attack: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="sheet-italics">Attack: </span><span>{{r1}}</span><span> | </span><span class="sheet-grey">{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<span class="sheet-italics">Attack: </span><span>{{r1}}</span><span> | </span><span class="sheet-grey">{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="sheet-italics">Attack: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="sheet-italics">Attack: </span><span class="sheet-grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{/attack}}
{{#description}}
<span class="sheet-desc">{{description}}</span>
{{/description}}
</div>
{{#damage}}
<div class="sheet-container sheet-dmgcontainer sheet-damagetemplate">
<span class="sheet-italics">Damage: </span>
<span>
{{#dmg1flag}}
{{dmg1}}
{{#normal}}
{{#rollWasCrit() r1}} + {{crit1}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}} + {{crit1}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}} + {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}} + {{crit1}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}} + {{crit1}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}} + {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}} + {{crit1}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}} + {{crit1}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{dmg1type}}
{{/dmg1flag}}
{{#dmg1flag}}{{#dmg2flag}}+{{/dmg2flag}}{{/dmg1flag}}
{{#dmg2flag}}
{{dmg2}}
{{#normal}}
{{#rollWasCrit() r1}} + {{crit2}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}} + {{crit2}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}} + {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}} + {{crit2}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}} + {{crit2}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}} + {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}} + {{crit2}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}} + {{crit2}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{dmg2type}}
{{/dmg2flag}}
</span>
</div>
{{/damage}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-mancerroll">
<div class="sheet-container">
<div class="sheet-row sheet-header">
<span>{{title}}</span>
</div>
{{#r1}}
<div class="sheet-row">
<span class="sheet-desc">Roll 1: </span>
<span class="sheet-result">{{r1}}</span>
</div>
{{/r1}}
{{#r2}}
<div class="sheet-row">
<span class="sheet-desc">Roll 2: </span>
<span class="sheet-result">{{r2}}</span>
</div>
{{/r2}}
{{#r3}}
<div class="sheet-row">
<span class="sheet-desc">Roll 3: </span>
<span class="sheet-result">{{r3}}</span>
</div>
{{/r3}}
{{#r4}}
<div class="sheet-row">
<span class="sheet-desc">Roll 4: </span>
<span class="sheet-result">{{r4}}</span>
</div>
{{/r4}}
{{#r5}}
<div class="sheet-row">
<span class="sheet-desc">Roll 5: </span>
<span class="sheet-result">{{r5}}</span>
</div>
{{/r5}}
{{#r6}}
<div class="sheet-row">
<span class="sheet-desc">Roll 6: </span>
<span class="sheet-result">{{r6}}</span>
</div>
{{/r6}}
</div>
</rolltemplate>
</div>
</div>
<!-- WORKERS -->
<script type="text/worker">
let flag_debug = 1;
let debug_msg = (msg) => {
if(flag_debug){
console.log(msg);
}
}
let getUniqueRowId = (currentIds) =>{
let id;
do {
id = generateRowID();
}while(id in currentIds);
return id;
}
var update_attr = function(attr) {
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_attr_change("repeating_inventory_", idarray, attr);
});
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_attr_change("repeating_hiddeninventory_", idarray, attr);
});
};
var update_inventory_from_attr_change = function(inventory, idarray, attr) {
var update = {};
var attr_fields = [attr + "_base",attr + "_bonus"];
_.each(idarray, function(currentID, i) {
attr_fields.push(inventory + currentID + "_equipped");
attr_fields.push(inventory + currentID + "_itemmodifiers");
});
getAttrs(attr_fields, function(v) {
var base = v[attr + "_base"] && !isNaN(parseInt(v[attr + "_base"], 10)) ? parseInt(v[attr + "_base"], 10) : 10;
var bonus = v[attr + "_bonus"] && !isNaN(parseInt(v[attr + "_bonus"], 10)) ? parseInt(v[attr + "_bonus"], 10) : 0;
var item_base = 0;
var item_bonus = 0;
_.each(idarray, function(currentID) {
if((!v[inventory + currentID + "_equipped"] || v[inventory + currentID + "_equipped"] === "1") && v[inventory + currentID + "_itemmodifiers"] && v[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf(attr > -1)) {
var mods = v[inventory + currentID + "_itemmodifiers"].toLowerCase().split(",");
_.each(mods, function(mod) {
if(mod.indexOf(attr) > -1 && mod.indexOf("save") === -1) {
if(mod.indexOf(":") > -1) {
var new_base = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
item_base = new_base && new_base > item_base ? new_base : item_base;
}
else if(mod.indexOf("-") > -1) {
var new_mod = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
item_bonus = new_mod ? item_bonus - new_mod : item_bonus;
}
else {
var new_mod = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
item_bonus = new_mod ? item_bonus + new_mod : item_bonus;
}
};
});
}
});
update[attr + "_flag"] = bonus > 0 || item_bonus > 0 || item_base > base ? 1 : 0;
base = base > item_base ? base : item_base;
update[attr] = base + bonus + item_bonus;
setAttrs(update);
});
};
var update_mod = function (attr) {
getAttrs([attr], function(v) {
var attr_abr = attr.substring(0,3);
var finalattr = v[attr] && isNaN(v[attr]) === false ? Math.floor((parseInt(v[attr], 10) - 10) / 2) : 0;
var update = {};
update[attr + "_mod"] = finalattr;
update["npc_" + attr_abr + "_negative"] = v[attr] && !isNaN(v[attr]) && parseInt(v[attr], 10) < 10 ? 1 : 0;
setAttrs(update);
});
};
var update_save = function (attr) {
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_save_change("repeating_inventory_", idarray, attr);
});
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_save_change("repeating_hiddeninventory_", idarray, attr);
});
};
var update_inventory_from_save_change = function(inventory, idarray, attr) {
var save_attrs = [attr + "_mod", attr + "_save_prof", attr + "_save_mod","pb","globalsavemod","pb_type"];
_.each(idarray, function(currentID, i) {
save_attrs.push(inventory + currentID + "_equipped");
save_attrs.push(inventory + currentID + "_itemmodifiers");
});
getAttrs(save_attrs, function(v) {
var attr_mod = v[attr + "_mod"] ? parseInt(v[attr + "_mod"], 10) : 0;
var prof = v[attr + "_save_prof"] && v[attr + "_save_prof"] != 0 && !isNaN(v["pb"]) ? parseInt(v["pb"], 10) : 0;
var save_mod = v[attr + "_save_mod"] && !isNaN(parseInt(v[attr + "_save_mod"], 10)) ? parseInt(v[attr + "_save_mod"], 10) : 0;
var global = v["globalsavemod"] && !isNaN(v["globalsavemod"]) ? parseInt(v["globalsavemod"], 10) : 0;
var items = 0;
_.each(idarray, function(currentID) {
if(v[inventory + currentID + "_equipped"] && v[inventory + currentID + "_equipped"] === "1" && v[inventory + currentID + "_itemmodifiers"] && (v[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf("saving throws") > -1 || v[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf(attr + " save") > -1)) {
var mods = v[inventory + currentID + "_itemmodifiers"].toLowerCase().split(",");
_.each(mods, function(mod) {
if(mod.indexOf(attr + " save") > -1) {
var substr = mod.slice(mod.lastIndexOf(attr + " save") + attr.length + " save".length);
var bonus = substr && substr.length > 0 && !isNaN(parseInt(substr,10)) ? parseInt(substr,10) : 0;
}
else if(mod.indexOf("saving throws") > -1) {
var substr = mod.slice(mod.lastIndexOf("saving throws") + "saving throws".length);
var bonus = substr && substr.length > 0 && !isNaN(parseInt(substr,10)) ? parseInt(substr,10) : 0;
};
if(bonus && bonus != 0) {
items = items + bonus;
};
});
}
});
var total = attr_mod + prof + save_mod + global + items;
if(v["pb_type"] && v["pb_type"] === "die" && v[attr + "_save_prof"] != 0 && attr != "death") {
total = total + "+" + v["pb"];
};
var update = {};
update[attr + "_save_bonus"] = total;
setAttrs(update, {silent: true});
});
};
var update_all_saves = function() {
update_save("strength");
update_save("dexterity");
update_save("constitution");
update_save("intelligence");
update_save("wisdom");
update_save("charisma");
update_save("death");
};
var update_all_ability_checks = function(){
update_initiative();
update_skills(["athletics", "acrobatics", "sleight_of_hand", "stealth", "technology", "lore", "investigation", "nature", "piloting", "animal_handling", "insight", "medicine", "perception", "survival", "deception", "intimidation", "performance", "persuasion", "ship_boost", "ship_ram", "ship_hide", "ship_maneuvering", "ship_patch", "ship_regulation", "ship_astrogation", "ship_data", "ship_probe", "ship_scan", "ship_impress", "ship_interfere", "ship_menace", "ship_swindle"]);
};
var update_skills = function (skills_array) {
var skill_parent = {
athletics: "strength",
acrobatics: "dexterity",
sleight_of_hand: "dexterity",
stealth: "dexterity",
ship_hide: "dexterity",
technology: "intelligence",
lore: "intelligence",
investigation: "intelligence",
nature: "intelligence",
piloting: "intelligence",
animal_handling: "wisdom",
insight: "wisdom",
medicine: "wisdom",
perception: "wisdom",
survival: "wisdom",
deception: "charisma",
intimidation: "charisma",
performance: "charisma",
persuasion: "charisma",
ship_boost: "strength",
ship_ram: "strength",
ship_maneuvering: "dexterity",
ship_patch: "constitution",
ship_regulation: "constitution",
ship_astrogation: "intelligence",
ship_data: "intelligence",
ship_probe: "intelligence",
ship_scan: "wisdom",
ship_impress: "charisma",
ship_interfere: "charisma",
ship_menace: "charisma",
ship_swindle: "charisma"};
var attrs_to_get = ["pb","pb_type","jack_of_all_trades","jack"];
var callbacks = [];
if(skills_array.indexOf("perception") > -1) {
callbacks.push( function() {update_passive_perception();} )
};
_.each(skills_array, function(s) {
if(skill_parent[s] && attrs_to_get.indexOf(skill_parent[s]) === -1) {attrs_to_get.push(skill_parent[s] + "_mod")};
attrs_to_get.push(s + "_prof");
attrs_to_get.push(s + "_type");
attrs_to_get.push(s + "_flat");
});
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_skill_change("repeating_inventory_", idarray, callbacks, attrs_to_get, skill_parent, skills_array);
});
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_skill_change("repeating_hiddeninventory_", idarray, callbacks, attrs_to_get, skill_parent, skills_array);
});
};
var update_inventory_from_skill_change = function(inventory, idarray, callbacks, attrs_to_get, skill_parent, skills_array) {
var update = {};
_.each(idarray, function(currentID, i) {
attrs_to_get.push(inventory + currentID + "_equipped");
attrs_to_get.push(inventory + currentID + "_itemmodifiers");
});
getAttrs(attrs_to_get, function(v) {
_.each(skills_array, function(s) {
console.log("UPDATING SKILL: " + s);
var attr_mod = v[skill_parent[s] + "_mod"] ? parseInt(v[skill_parent[s] + "_mod"], 10) : 0;
var prof = v[s + "_prof"] != 0 && !isNaN(v["pb"]) ? parseInt(v["pb"], 10) : 0;
var flat = v[s + "_flat"] && !isNaN(parseInt(v[s + "_flat"], 10)) ? parseInt(v[s + "_flat"], 10) : 0;
var type = v[s + "_type"] && !isNaN(parseInt(v[s + "_type"], 10)) ? parseInt(v[s + "_type"], 10) : 1;
var jack = v["jack_of_all_trades"] && v["jack_of_all_trades"] != 0 && v["jack"] ? v["jack"] : 0;
var item_bonus = 0;
_.each(idarray, function(currentID) {
if(v[inventory + currentID + "_equipped"] && v[inventory + currentID + "_equipped"] === "1" && v[inventory + currentID + "_itemmodifiers"] && (v[inventory + currentID + "_itemmodifiers"].toLowerCase().replace(/ /g,"_").indexOf(s) > -1 || v[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf("ability checks") > -1)) {
var mods = v[inventory + currentID + "_itemmodifiers"].toLowerCase().split(",");
_.each(mods, function(mod) {
if(mod.replace(/ /g,"_").indexOf(s) > -1 || mod.indexOf("ability checks") > -1) {
if(mod.indexOf("-") > -1) {
var new_mod = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
item_bonus = new_mod ? item_bonus - new_mod : item_bonus;
}
else {
var new_mod = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
item_bonus = new_mod ? item_bonus + new_mod : item_bonus;
}
};
});
};
});
var total = attr_mod + flat + item_bonus;
if(v["pb_type"] && v["pb_type"] === "die") {
if(v[s + "_prof"] != 0) {
type === 1 ? "" : "2"
total = total + "+" + type + v["pb"];
}
else if(v[s + "_prof"] == 0 && jack != 0) {
total = total + "+" + jack;
};
}
else {
if(v[s + "_prof"] != 0) {
total = total + (prof * type);
}
else if(v[s + "_prof"] == 0 && jack != 0) {
total = total + parseInt(jack, 10);
};
};
update[s + "_bonus"] = total;
});
setAttrs(update, {silent: true}, function() {callbacks.forEach(function(callback) {callback(); })} );
});
};
var update_tool = function(tool_id) {
if(tool_id.substring(0,1) === "-" && tool_id.length === 20) {
do_update_tool([tool_id]);
}
else if(tool_id === "all") {
getSectionIDs("repeating_tool", function(idarray) {
do_update_tool(idarray);
});
}
else {
getSectionIDs("repeating_tool", function(idarray) {
var tool_attribs = [];
_.each(idarray, function(id) {
tool_attribs.push("repeating_tool_" + id + "_toolattr_base");
});
getAttrs(tool_attribs, function(v) {
var attr_tool_ids = [];
_.each(idarray, function(id) {
if(v["repeating_tool_" + id + "_toolattr_base"] && v["repeating_tool_" + id + "_toolattr_base"].indexOf(tool_id) > -1) {
attr_tool_ids.push(id);
}
});
if(attr_tool_ids.length > 0) {
do_update_tool(attr_tool_ids);
}
});
});
};
};
var do_update_tool = function(tool_array) {
var tool_attribs = ["pb","pb_type","jack","strength_mod","dexterity_mod","constitution_mod","intelligence_mod","wisdom_mod","charisma_mod"];
var update = {};
_.each(tool_array, function(tool_id) {
tool_attribs.push("repeating_tool_" + tool_id + "_toolbonus_base");
tool_attribs.push("repeating_tool_" + tool_id + "_tool_mod");
tool_attribs.push("repeating_tool_" + tool_id + "_toolattr_base");
});
getAttrs(tool_attribs, function(v) {
_.each(tool_array, function(tool_id) {
console.log("UPDATING TOOL: " + tool_id);
var query = false;
if(v["repeating_tool_" + tool_id + "_toolattr_base"] && v["repeating_tool_" + tool_id + "_toolattr_base"].substring(0,2) === "?{") {
update["repeating_tool_" + tool_id + "_toolattr"] = "QUERY";
var mod = "?{Attribute?|Strength,@{strength_mod}|Dexterity,@{dexterity_mod}|Constitution,@{constitution_mod}|Intelligence,@{intelligence_mod}|Wisdom,@{wisdom_mod}|Charisma,@{charisma_mod}}";
if(v["repeating_tool_" + tool_id + "_tool_mod"]) {
mod = mod + "+" + v["repeating_tool_" + tool_id + "_tool_mod"];
}
query = true;
}
else {
var attr = v["repeating_tool_" + tool_id + "_toolattr_base"].substring(0, v["repeating_tool_" + tool_id + "_toolattr_base"].length - 5).substr(2);
var attr_mod = v[attr + "_mod"] ? parseInt(v[attr + "_mod"], 10) : 0;
var tool_mod = v["repeating_tool_" + tool_id + "_tool_mod"] && !isNaN(parseInt(v["repeating_tool_" + tool_id + "_tool_mod"], 10)) ? parseInt(v["repeating_tool_" + tool_id + "_tool_mod"], 10) : 0;
var mod = attr_mod + tool_mod;
update["repeating_tool_" + tool_id + "_toolattr"] = attr.toUpperCase();
if(v["repeating_tool_" + tool_id + "_tool_mod"] && v["repeating_tool_" + tool_id + "_tool_mod"].indexOf("@{") > -1) {
update["repeating_tool_" + tool_id + "_toolbonus"] = update["repeating_tool_" + tool_id + "_toolbonus"] + "+" + v["repeating_tool_" + tool_id + "_tool_mod"];
}
if(!v["repeating_tool_" + tool_id + "_tool_mod"]) {
update["repeating_tool_" + tool_id + "_tool_mod"] = 0;
}
};
if(v["pb_type"] && v["pb_type"] === "die" ) {
if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(@{pb})") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + "+" + v.pb}
else if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(@{pb}*2)") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + "+2" + v.pb}
else if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(floor(@{pb}/2))") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + "+" + v.jack};
}
else if(v["repeating_tool_" + tool_id + "_toolattr_base"] && v["repeating_tool_" + tool_id + "_toolattr_base"].substring(0,2) === "?{") {
if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(@{pb})") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + "+" + parseInt(v.pb, 10)}
else if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(@{pb}*2)") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + "+" + (parseInt(v.pb, 10)*2)}
else if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(floor(@{pb}/2))") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + "+" + parseInt(v.jack, 10)};
}
else {
if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(@{pb})") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + parseInt(v.pb, 10)}
else if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(@{pb}*2)") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + (parseInt(v.pb, 10)*2)}
else if(v["repeating_tool_" + tool_id + "_toolbonus_base"] === "(floor(@{pb}/2))") {update["repeating_tool_" + tool_id + "_toolbonus"] = mod + parseInt(v.jack, 10)};
};
if(query) {
update["repeating_tool_" + tool_id + "_toolbonus_display"] = "?";
}
else {
update["repeating_tool_" + tool_id + "_toolbonus_display"] = update["repeating_tool_" + tool_id + "_toolbonus"];
};
});
setAttrs(update, {silent: true});
});
};
var check_itemmodifiers = function(modifiers, previousValue) {
var mods = modifiers.toLowerCase().split(",");
if(previousValue) {
prevmods = previousValue.toLowerCase().split(",");
mods = _.union(mods, prevmods);
};
_.each(mods, function(mod) {
if(mod.indexOf("ac:") > -1 || mod.indexOf("ac +") > -1 || mod.indexOf("ac -") > -1) {update_ac();};
if(mod.indexOf("power") > -1) {update_power_info();};
if(mod.indexOf("saving throws") > -1) {update_all_saves();};
if(mod.indexOf("strength save") > -1) {update_save("strength");} else if(mod.indexOf("strength") > -1) {update_attr("strength");};
if(mod.indexOf("dexterity save") > -1) {update_save("dexterity");} else if(mod.indexOf("dexterity") > -1) {update_attr("dexterity");};
if(mod.indexOf("constitution save") > -1) {update_save("constitution");} else if(mod.indexOf("constitution") > -1) {update_attr("constitution");};
if(mod.indexOf("intelligence save") > -1) {update_save("intelligence");} else if(mod.indexOf("intelligence") > -1) {update_attr("intelligence");};
if(mod.indexOf("wisdom save") > -1) {update_save("wisdom");} else if(mod.indexOf("wisdom") > -1) {update_attr("wisdom");};
if(mod.indexOf("charisma save") > -1) {update_save("charisma");} else if(mod.indexOf("charisma") > -1) {update_attr("charisma");};
if(mod.indexOf("ability checks") > -1) {update_all_ability_checks();};
if(mod.indexOf("acrobatics") > -1) {update_skills(["acrobatics"]);};
if(mod.indexOf("animal handling") > -1) {update_skills(["animal_handling"]);};
if(mod.indexOf("technology") > -1) {update_skills(["technology"]);};
if(mod.indexOf("athletics") > -1) {update_skills(["athletics"]);};
if(mod.indexOf("deception") > -1) {update_skills(["deception"]);};
if(mod.indexOf("lore") > -1) {update_skills(["lore"]);};
if(mod.indexOf("insight") > -1) {update_skills(["insight"]);};
if(mod.indexOf("intimidation") > -1) {update_skills(["intimidation"]);};
if(mod.indexOf("investigation") > -1) {update_skills(["investigation"]);};
if(mod.indexOf("medicine") > -1) {update_skills(["medicine"]);};
if(mod.indexOf("nature") > -1) {update_skills(["nature"]);};
if(mod.indexOf("perception") > -1) {update_skills(["perception"]);};
if(mod.indexOf("performance") > -1) {update_skills(["performance"]);};
if(mod.indexOf("persuasion") > -1) {update_skills(["persuasion"]);};
if(mod.indexOf("piloting") > -1) {update_skills(["piloting"]);};
if(mod.indexOf("sleight of hand") > -1) {update_skills(["sleight_of_hand"]);};
if(mod.indexOf("stealth") > -1) {update_skills(["stealth"]);};
if(mod.indexOf("survival") > -1) {update_skills(["survival"]);};
if(mod.indexOf("ship boost") > -1) {update_skills(["ship_boost"]);};
if(mod.indexOf("ship ram") > -1) {update_skills(["ship_ram"]);};
if(mod.indexOf("ship hide") > -1) {update_skills(["ship_hide"]);};
if(mod.indexOf("ship maneuvering") > -1) {update_skills(["ship_maneuvering"]);};
if(mod.indexOf("ship patch") > -1) {update_skills(["ship_patch"]);};
if(mod.indexOf("ship regulation") > -1) {update_skills(["ship_regulation"]);};
if(mod.indexOf("ship astrogation") > -1) {update_skills(["ship_astrogation"]);};
if(mod.indexOf("ship data") > -1) {update_skills(["ship_data"]);};
if(mod.indexOf("ship probe") > -1) {update_skills(["ship_probe"]);};
if(mod.indexOf("ship scan") > -1) {update_skills(["ship_scan"]);};
if(mod.indexOf("ship impress") > -1) {update_skills(["ship_impress"]);};
if(mod.indexOf("ship interfere") > -1) {update_skills(["ship_interfere"]);};
if(mod.indexOf("ship menace") > -1) {update_skills(["ship_menace"]);};
if(mod.indexOf("ship swindle") > -1) {update_skills(["ship_swindle"]);};
});
};
var create_attack_from_item = function(itemid, options) {
var inventory = "repeating_inventory_";
var isHidden = false;
if(options && options.hidden) {
inventory = "repeating_hiddeninventory_";
isHidden = true;
}
var update = {};
var newrowid = generateRowID();
update[inventory + itemid + "_itemattackid"] = newrowid;
if(options && options.versatile) {
var newrowid2 = generateRowID();
update[inventory + itemid + "_itemattackid"] += "," + newrowid2;
setAttrs(update, {}, function() {
update_attack_from_item(itemid, newrowid, {newattack: true, versatile: "primary", hidden: isHidden});
update_attack_from_item(itemid, newrowid2, {newattack: true, versatile: "secondary", hidden: isHidden});
});
}
else {
setAttrs(update, {}, update_attack_from_item(itemid, newrowid, {newattack: true, hidden: isHidden}));
}
};
var update_attack_from_item = function(itemid, attackid, options) {
var inventory = "repeating_inventory_";
var isHidden = false;
if(options && options.hidden) {
inventory = "repeating_hiddeninventory_";
isHidden = true;
}
getAttrs([inventory + itemid + "_itemname",inventory + itemid + "_itemproperties",inventory + itemid + "_itemmodifiers", "strength", "dexterity"], function(v) {
var update = {}; var itemtype; var damage; var damagetype; var damage2; var damagetype2; var attackmod; var damagemod; var range;
var alt = {};
if(options && options.newattack) {
update["repeating_attack_" + attackid + "_options-flag"] = "0";
update["repeating_attack_" + attackid + "_itemid"] = itemid;
}
if(v[inventory + itemid + "_itemmodifiers"] && v[inventory + itemid + "_itemmodifiers"] != "") {
var mods = v[inventory + itemid + "_itemmodifiers"].split(",");
_.each(mods, function(mod) {
if(mod.indexOf("Item Type:") > -1) {itemtype = mod.split(":")[1].trim()}
else if(mod.indexOf("Alternate Secondary Damage Type:") > -1) {alt.damagetype2 = mod.split(":")[1].trim();}
else if(mod.indexOf("Alternate Secondary Damage:") > -1) {alt.damage2 = mod.split(":")[1].trim();}
else if(mod.indexOf("Alternate Damage Type:") > -1) {alt.damagetype = mod.split(":")[1].trim();}
else if(mod.indexOf("Alternate Damage:") > -1) {alt.damage = mod.split(":")[1].trim();}
else if(mod.indexOf("Secondary Damage Type:") > -1) {damagetype2 = mod.split(":")[1].trim()}
else if(mod.indexOf("Secondary Damage:") > -1) {damage2 = mod.split(":")[1].trim()}
else if(mod.indexOf("Damage Type:") > -1) {damagetype = mod.split(":")[1].trim()}
else if(mod.indexOf("Damage:") > -1) {damage = mod.split(":")[1].trim()}
else if(mod.indexOf("Range:") > -1) {range = mod.split(":")[1].trim()}
else if(mod.indexOf(" Attacks ") > -1) {attackmod = mod.split(" Attacks ")[1].trim()}
else if(mod.indexOf(" Damage ") > -1) {damagemod = mod.split(" Damage ")[1].trim()}
});
}
if(v[inventory + itemid + "_itemname"] && v[inventory + itemid + "_itemname"] != "") {
update["repeating_attack_" + attackid + "_atkname"] = v[inventory + itemid + "_itemname"];
if(options && options.versatile === "primary") {
update["repeating_attack_" + attackid + "_atkname"] += " (One-Handed)";
} else if(options && options.versatile === "secondary") {
update["repeating_attack_" + attackid + "_atkname"] += " (Two-Handed)";
}
}
if(options && options.versatile === "secondary") {
if(alt.damage) {
update["repeating_attack_" + attackid + "_dmgbase"] = alt.damage;
}
if(alt.damagetype) {
update["repeating_attack_" + attackid + "_dmgtype"] = alt.damagetype;
}
if(alt.damage2) {
update["repeating_attack_" + attackid + "_dmg2base"] = alt.damage2;
update["repeating_attack_" + attackid + "_dmg2attr"] = 0;
update["repeating_attack_" + attackid + "_dmg2flag"] = "{{damage=1}} {{dmg2flag=1}}";
}
if(alt.damagetype2) {
update["repeating_attack_" + attackid + "_dmg2type"] = alt.damagetype2;
}
update["repeating_attack_" + attackid + "_versatile_alt"] = "1";
}
else {
if(damage) {
update["repeating_attack_" + attackid + "_dmgbase"] = damage;
}
if(damagetype) {
update["repeating_attack_" + attackid + "_dmgtype"] = damagetype;
}
if(damage2) {
update["repeating_attack_" + attackid + "_dmg2base"] = damage2;
update["repeating_attack_" + attackid + "_dmg2attr"] = 0;
update["repeating_attack_" + attackid + "_dmg2flag"] = "{{damage=1}} {{dmg2flag=1}}";
}
if(damagetype2) {
update["repeating_attack_" + attackid + "_dmg2type"] = damagetype2;
}
}
if(range) {
update["repeating_attack_" + attackid + "_atkrange"] = range;
}
var finesse = v[inventory + itemid + "_itemproperties"] && /finesse/i.test(v[inventory + itemid + "_itemproperties"]);
if( (itemtype && itemtype.indexOf("Ranged") > -1) || (finesse && +v.dexterity > +v.strength)) {
update["repeating_attack_" + attackid + "_atkattr_base"] = "@{dexterity_mod}";
update["repeating_attack_" + attackid + "_dmgattr"] = "@{dexterity_mod}";
}
else {
update["repeating_attack_" + attackid + "_atkattr_base"] = "@{strength_mod}";
update["repeating_attack_" + attackid + "_dmgattr"] = "@{strength_mod}";
}
if(attackmod && damagemod && attackmod == damagemod) {
update["repeating_attack_" + attackid + "_atkpower"] = parseInt(attackmod, 10);
update["repeating_attack_" + attackid + "_atkmod"] = "";
update["repeating_attack_" + attackid + "_dmgmod"] = "";
}
else {
if(attackmod) {
update["repeating_attack_" + attackid + "_atkmod"] = parseInt(attackmod, 10);
}
if(damagemod) {
update["repeating_attack_" + attackid + "_dmgmod"] = parseInt(damagemod, 10);
}
update["repeating_attack_" + attackid + "_atkpower"] = "";
}
var callback = function() {update_attacks(attackid, "item")};
setAttrs(update, {silent: true}, callback);
});
};
var create_resource_from_item = function(itemid, options) {
var update = {};
var newrowid = generateRowID();
var inventory = "repeating_inventory_";
var isHidden = false;
if(options && options.hidden){
inventory = "repeating_hiddeninventory_";
isHidden = true;
}
getAttrs(["other_resource_name"], function(x) {
if(!x.other_resource_name || x.other_resource_name == "") {
update[inventory + itemid + "_itemresourceid"] = "other_resource";
setAttrs(update, {}, update_resource_from_item(itemid, "other_resource", true, {hidden: isHidden}));
}
else {
getSectionIDs("repeating_resource", function(idarray) {
if(idarray.length == 0) {
update[inventory + itemid + "_itemresourceid"] = newrowid + "_resource_left";
setAttrs(update, {}, update_resource_from_item(itemid, newrowid + "_resource_left", true, {hidden: isHidden}));
}
else {
var resource_names = [];
_.each(idarray, function(currentID, i) {
resource_names.push("repeating_resource_" + currentID + "_resource_left_name");
resource_names.push("repeating_resource_" + currentID + "_resource_right_name");
});
getAttrs(resource_names, function(y) {
var existing = false;
_.each(idarray, function(currentID, i) {
if((!y["repeating_resource_" + currentID + "_resource_left_name"] || y["repeating_resource_" + currentID + "_resource_left_name"] === "") && existing == false) {
update[inventory + itemid + "_itemresourceid"] = currentID + "_resource_left";
setAttrs(update, {}, update_resource_from_item(itemid, currentID + "_resource_left", true, {hidden:isHidden}));
existing = true;
}
else if((!y["repeating_resource_" + currentID + "_resource_right_name"] || y["repeating_resource_" + currentID + "_resource_right_name"] === "") && existing == false) {
update[inventory + itemid + "_itemresourceid"] = currentID + "_resource_right";
setAttrs(update, {}, update_resource_from_item(itemid, currentID + "_resource_right", true, {hidden:isHidden}));
existing = true;
};
});
if(!existing) {
update[inventory + itemid + "_itemresourceid"] = newrowid + "_resource_left";
setAttrs(update, {}, update_resource_from_item(itemid, newrowid + "_resource_left", true, {hidden:isHidden}));
}
});
};
});
};
});
};
var update_resource_from_item = function(itemid, resourceid, newresource, options) {
var inventory = "repeating_inventory_";
if(options && options.hidden) {
inventory = "repeating_hiddeninventory_";
}
getAttrs([inventory + itemid + "_itemname",inventory + itemid + "_itemcount"], function(v) {
var update = {}; var id;
if(resourceid && resourceid == "other_resource") {
id = resourceid;
}
else {
id = "repeating_resource_" + resourceid;
};
if(newresource) {
update[id + "_itemid"] = itemid;
} ;
if(!v[inventory + itemid + "_itemname"]) {
update[inventory + itemid + "_useasresource"] = 0;
update[inventory + itemid + "_itemresourceid"] = "";
remove_resource(resourceid);
};
if(v[inventory + itemid + "_itemname"] && v[inventory + itemid + "_itemname"] != "") {
update[id + "_name"] = v[inventory + itemid + "_itemname"];
};
if(v[inventory + itemid + "_itemcount"] && v[inventory + itemid + "_itemcount"] != "") {
update[id] = v[inventory + itemid + "_itemcount"];
};
setAttrs(update, {silent: true});
});
};
var update_item_from_resource = function(resourceid, itemid) {
var update = {};
var inventory = "repeating_inventory_";
getAttrs(["repeating_hiddeninventory_" + itemid + "_itemname"], function(x) {
if(x["repeating_hiddeninventory_" + itemid + "_itemname"]) {
inventory = "repeating_hiddeninventory_";
}
});
getAttrs([resourceid, resourceid + "_name"], function(v) {
update[inventory + itemid + "_itemcount"] = v[resourceid];
update[inventory + itemid + "_itemname"] = v[resourceid + "_name"];
setAttrs(update, {silent: true}, function() {update_weight()});
});
};
var create_attack_from_power = function(lvl, powerid, character_id) {
var update = {};
var newrowid = generateRowID();
update["repeating_power-" + lvl + "_" + powerid + "_powerattackid"] = newrowid;
update["repeating_power-" + lvl + "_" + powerid + "_rollcontent"] = "%{" + character_id + "|repeating_attack_" + newrowid + "_attack}";
setAttrs(update, {}, update_attack_from_power(lvl, powerid, newrowid, true));
}
var update_attack_from_power = function(lvl, powerid, attackid, newattack) {
getAttrs(["repeating_power-" + lvl + "_" + powerid + "_powername",
"repeating_power-" + lvl + "_" + powerid + "_powerrange",
"repeating_power-" + lvl + "_" + powerid + "_powertarget",
"repeating_power-" + lvl + "_" + powerid + "_powerattack",
"repeating_power-" + lvl + "_" + powerid + "_powerdamage",
"repeating_power-" + lvl + "_" + powerid + "_powerdamage2",
"repeating_power-" + lvl + "_" + powerid + "_powerdamagetype",
"repeating_power-" + lvl + "_" + powerid + "_powerdamagetype2",
"repeating_power-" + lvl + "_" + powerid + "_powerhealing",
"repeating_power-" + lvl + "_" + powerid + "_powerdmgmod",
"repeating_power-" + lvl + "_" + powerid + "_powersave",
"repeating_power-" + lvl + "_" + powerid + "_powersavesuccess",
"repeating_power-" + lvl + "_" + powerid + "_powerhldie",
"repeating_power-" + lvl + "_" + powerid + "_powerhldietype",
"repeating_power-" + lvl + "_" + powerid + "_powerhlbonus",
"repeating_power-" + lvl + "_" + powerid + "_powerlevel",
"repeating_power-" + lvl + "_" + powerid + "_includedesc",
"repeating_power-" + lvl + "_" + powerid + "_powerdescription",
"repeating_power-" + lvl + "_" + powerid + "_powerathigherlevels",
"repeating_power-" + lvl + "_" + powerid + "_power_damage_progression",
"repeating_power-" + lvl + "_" + powerid + "_innate",
"repeating_power-" + lvl + "_" + powerid + "_power_ability",
"powercasting_ability",
"character_id"], function(v) {
var update = {};
var description = "";
var powerAbility = v["repeating_power-" + lvl + "_" + powerid + "_power_ability"] != "power" ? v["repeating_power-" + lvl + "_" + powerid + "_power_ability"].slice(0, -1) : "power";
update["repeating_attack_" + attackid + "_atkattr_base"] = powerAbility;
if(newattack) {
update["repeating_attack_" + attackid + "_options-flag"] = "0";
update["repeating_attack_" + attackid + "_powerid"] = powerid;
update["repeating_attack_" + attackid + "_powerlevel"] = lvl;
} else {
update["repeating_power-" + lvl + "_" + powerid + "_rollcontent"] = "%{" + v["character_id"] + "|repeating_attack_" + attackid + "_attack}";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_power_ability"] == "power") {
update["repeating_attack_" + attackid + "_savedc"] = "(@{power_save_dc})";
} else if (v["repeating_power-" + lvl + "_" + powerid + "_power_ability"]) {
update["repeating_attack_" + attackid + "_savedc"] = "(" + powerAbility + "+8+@{power_dc_mod}+@{pb})";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powername"] && v["repeating_power-" + lvl + "_" + powerid + "_powername"] != "") {
update["repeating_attack_" + attackid + "_atkname"] = v["repeating_power-" + lvl + "_" + powerid + "_powername"];
}
if(!v["repeating_power-" + lvl + "_" + powerid + "_powerattack"] || v["repeating_power-" + lvl + "_" + powerid + "_powerattack"] === "None") {
update["repeating_attack_" + attackid + "_atkflag"] = "0";
}
else {
update["repeating_attack_" + attackid + "_atkflag"] = "{{attack=1}}";
description = description + v["repeating_power-" + lvl + "_" + powerid + "_powerattack"] + " Power Attack. ";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerdamage"] && v["repeating_power-" + lvl + "_" + powerid + "_powerdamage"] != "") {
update["repeating_attack_" + attackid + "_dmgflag"] = "{{damage=1}} {{dmg1flag=1}}";
if(v["repeating_power-" + lvl + "_" + powerid + "_power_damage_progression"] && v["repeating_power-" + lvl + "_" + powerid + "_power_damage_progression"] === "Cantrip Dice") {
update["repeating_attack_" + attackid + "_dmgbase"] = "[[round((@{level} + 1) / 6 + 0.5)]]" + v["repeating_power-" + lvl + "_" + powerid + "_powerdamage"].substring(1);
}
else {
update["repeating_attack_" + attackid + "_dmgbase"] = v["repeating_power-" + lvl + "_" + powerid + "_powerdamage"];
}
}
else {
update["repeating_attack_" + attackid + "_dmgflag"] = "0"
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerdmgmod"] && v["repeating_power-" + lvl + "_" + powerid + "_powerdmgmod"] === "Yes") {
update["repeating_attack_" + attackid + "_dmgattr"] = powerAbility;
}
else {
update["repeating_attack_" + attackid + "_dmgattr"] = "0";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype"]) {
update["repeating_attack_" + attackid + "_dmgtype"] = v["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype"];
}
else {
update["repeating_attack_" + attackid + "_dmgtype"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerdamage2"]) {
update["repeating_attack_" + attackid + "_dmg2base"] = v["repeating_power-" + lvl + "_" + powerid + "_powerdamage2"];
update["repeating_attack_" + attackid + "_dmg2attr"] = 0;
update["repeating_attack_" + attackid + "_dmg2flag"] = "{{damage=1}} {{dmg2flag=1}}";
}
else {
update["repeating_attack_" + attackid + "_dmg2base"] = "";
update["repeating_attack_" + attackid + "_dmg2attr"] = 0;
update["repeating_attack_" + attackid + "_dmg2flag"] = "0";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype2"]) {
update["repeating_attack_" + attackid + "_dmg2type"] = v["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype2"];
}
else {
update["repeating_attack_" + attackid + "_dmg2type"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerrange"]) {
update["repeating_attack_" + attackid + "_atkrange"] = v["repeating_power-" + lvl + "_" + powerid + "_powerrange"];
}
else {
update["repeating_attack_" + attackid + "_atkrange"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerrange"]) {
update["repeating_attack_" + attackid + "_atkrange"] = v["repeating_power-" + lvl + "_" + powerid + "_powerrange"];
}
else {
update["repeating_attack_" + attackid + "_atkrange"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powersave"]) {
update["repeating_attack_" + attackid + "_saveflag"] = "{{save=1}} {{saveattr=@{saveattr}}} {{savedesc=@{saveeffect}}} {{savedc=[[[[@{savedc}]][SAVE]]]}}";
update["repeating_attack_" + attackid + "_saveattr"] = v["repeating_power-" + lvl + "_" + powerid + "_powersave"];
}
else {
update["repeating_attack_" + attackid + "_saveflag"] = "0";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powersavesuccess"]) {
update["repeating_attack_" + attackid + "_saveeffect"] = v["repeating_power-" + lvl + "_" + powerid + "_powersavesuccess"];
}
else {
update["repeating_attack_" + attackid + "_saveeffect"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerhldie"] && v["repeating_power-" + lvl + "_" + powerid + "_powerhldie"] != "" && v["repeating_power-" + lvl + "_" + powerid + "_powerhldietype"] && v["repeating_power-" + lvl + "_" + powerid + "_powerhldietype"] != "") {
var bonus = "";
var powerlevel = v["repeating_power-" + lvl + "_" + powerid + "_powerlevel"];
var query = "?{Cast at what level?";
for(i = 0; i < 10-powerlevel; i++) {
query = query + "|Level " + (parseInt(i, 10) + parseInt(powerlevel, 10)) + "," + i;
}
query = query + "}";
if(v["repeating_power-" + lvl + "_" + powerid + "_powerhlbonus"] && v["repeating_power-" + lvl + "_" + powerid + "_powerhlbonus"] != "") {
bonus = "+(" + v["repeating_power-" + lvl + "_" + powerid + "_powerhlbonus"] + "*" + query + ")";
}
update["repeating_attack_" + attackid + "_hldmg"] = "{{hldmg=[[(" + v["repeating_power-" + lvl + "_" + powerid + "_powerhldie"] + "*" + query + ")" + v["repeating_power-" + lvl + "_" + powerid + "_powerhldietype"] + bonus + "]]}}";
}
else {
update["repeating_attack_" + attackid + "_hldmg"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powerhealing"] && v["repeating_power-" + lvl + "_" + powerid + "_powerhealing"] != "") {
if(!v["repeating_power-" + lvl + "_" + powerid + "_powerdamage"] || v["repeating_power-" + lvl + "_" + powerid + "_powerdamage"] === "") {
update["repeating_attack_" + attackid + "_dmgbase"] = v["repeating_power-" + lvl + "_" + powerid + "_powerhealing"];
update["repeating_attack_" + attackid + "_dmgflag"] = "{{damage=1}} {{dmg1flag=1}}";
update["repeating_attack_" + attackid + "_dmgtype"] = "Healing";
}
else if(!v["repeating_power-" + lvl + "_" + powerid + "_powerdamage2"] || v["repeating_power-" + lvl + "_" + powerid + "_powerdamage2"] === "") {
update["repeating_attack_" + attackid + "_dmg2base"] = v["repeating_power-" + lvl + "_" + powerid + "_powerhealing"];
update["repeating_attack_" + attackid + "_dmg2flag"] = "{{damage=1}} {{dmg2flag=1}}";
update["repeating_attack_" + attackid + "_dmg2type"] = "Healing";
}
}
if(v["repeating_power-" + lvl + "_" + powerid + "_innate"]) {
update["repeating_attack_" + attackid + "_power_innate"] = v["repeating_power-" + lvl + "_" + powerid + "_innate"];
}
else {
update["repeating_attack_" + attackid + "_power_innate"] = "";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_powertarget"]) {
description = description + v["repeating_power-" + lvl + "_" + powerid + "_powertarget"] + ". ";
}
if(v["repeating_power-" + lvl + "_" + powerid + "_includedesc"] && v["repeating_power-" + lvl + "_" + powerid + "_includedesc"] === "on") {
description = v["repeating_power-" + lvl + "_" + powerid + "_powerdescription"];
if(v["repeating_power-" + lvl + "_" + powerid + "_powerathigherlevels"] && v["repeating_power-" + lvl + "_" + powerid + "_powerathigherlevels"] != "") {
description = description + "\n\nAt Higher Levels: " + v["repeating_power-" + lvl + "_" + powerid + "_powerathigherlevels"];
}
}
else if(v["repeating_power-" + lvl + "_" + powerid + "_includedesc"] && v["repeating_power-" + lvl + "_" + powerid + "_includedesc"] === "off") {
description = "";
};
update["repeating_attack_" + attackid + "_atk_desc"] = description;
var callback = function() {update_attacks(attackid, "power")};
setAttrs(update, {silent: true}, callback);
});
};
var update_attacks = function(update_id, source) {
console.log("DOING UPDATE_ATTACKS: " + update_id);
if(update_id.substring(0,1) === "-" && update_id.length === 20) {
do_update_attack([update_id], source);
}
else if(["strength","dexterity","constitution","intelligence","wisdom","charisma","powers","all"].indexOf(update_id) > -1) {
getSectionIDs("repeating_attack", function(idarray) {
if(update_id === "all") {
do_update_attack(idarray);
}
else if(update_id === "powers") {
var attack_attribs = [];
_.each(idarray, function(id) {
attack_attribs.push("repeating_attack_" + id + "_powerid", "repeating_attack_" + id + "_powerlevel");
});
getAttrs(attack_attribs, function(v) {
var filteredIds = _.filter(idarray, function(id) {
return v["repeating_attack_" + id + "_powerid"] && v["repeating_attack_" + id + "_powerid"] != "";
});
var power_attacks = {};
_.each(filteredIds, function(attack_id) {
power_attacks[attack_id] = {
power_id: v["repeating_attack_" + attack_id + "_powerid"],
power_lvl: v["repeating_attack_" + attack_id + "_powerlevel"]
};
});
_.each(power_attacks, function(data, attack_id) { update_attack_from_power(data.power_lvl, data.power_id, attack_id); });
});
}
else {
var attack_attribs = ["powercasting_ability"];
_.each(idarray, function(id) {
attack_attribs.push("repeating_attack_" + id + "_atkattr_base");
attack_attribs.push("repeating_attack_" + id + "_dmgattr");
attack_attribs.push("repeating_attack_" + id + "_dmg2attr");
attack_attribs.push("repeating_attack_" + id + "_savedc");
});
getAttrs(attack_attribs, function(v) {
var attr_attack_ids = [];
_.each(idarray, function(id) {
if((v["repeating_attack_" + id + "_atkattr_base"] && v["repeating_attack_" + id + "_atkattr_base"].indexOf(update_id) > -1) || (v["repeating_attack_" + id + "_dmgattr"] && v["repeating_attack_" + id + "_dmgattr"].indexOf(update_id) > -1) || (v["repeating_attack_" + id + "_dmg2attr"] && v["repeating_attack_" + id + "_dmg2attr"].indexOf(update_id) > -1) || (v["repeating_attack_" + id + "_savedc"] && v["repeating_attack_" + id + "_savedc"].indexOf(update_id) > -1) || (v["repeating_attack_" + id + "_savedc"] && v["repeating_attack_" + id + "_savedc"] === "(@{power_save_dc})" && v["powercasting_ability"] && v["powercasting_ability"].indexOf(update_id) > -1)) {
attr_attack_ids.push(id);
}
});
if(attr_attack_ids.length > 0) {
do_update_attack(attr_attack_ids);
}
});
};
});
};
};
var do_update_attack = function(attack_array, source) {
var attack_attribs = ["level","d20","pb","pb_type","pbd_safe","dtype","globalpowermod","strength_mod","dexterity_mod","constitution_mod","intelligence_mod","wisdom_mod","charisma_mod","powercasting_ability","power_save_dc","power_attack_mod", "power_dc_mod", "global_damage_mod_roll", "global_damage_mod_crit"];
_.each(attack_array, function(attackid) {
attack_attribs.push("repeating_attack_" + attackid + "_atkflag");
attack_attribs.push("repeating_attack_" + attackid + "_atkname");
attack_attribs.push("repeating_attack_" + attackid + "_atkattr_base");
attack_attribs.push("repeating_attack_" + attackid + "_atkmod");
attack_attribs.push("repeating_attack_" + attackid + "_atkprofflag");
attack_attribs.push("repeating_attack_" + attackid + "_atkpower");
attack_attribs.push("repeating_attack_" + attackid + "_dmgflag");
attack_attribs.push("repeating_attack_" + attackid + "_dmgbase");
attack_attribs.push("repeating_attack_" + attackid + "_dmgattr");
attack_attribs.push("repeating_attack_" + attackid + "_dmgmod");
attack_attribs.push("repeating_attack_" + attackid + "_dmgtype");
attack_attribs.push("repeating_attack_" + attackid + "_dmg2flag");
attack_attribs.push("repeating_attack_" + attackid + "_dmg2base");
attack_attribs.push("repeating_attack_" + attackid + "_dmg2attr");
attack_attribs.push("repeating_attack_" + attackid + "_dmg2mod");
attack_attribs.push("repeating_attack_" + attackid + "_dmg2type");
attack_attribs.push("repeating_attack_" + attackid + "_dmgcustcrit");
attack_attribs.push("repeating_attack_" + attackid + "_dmg2custcrit");
attack_attribs.push("repeating_attack_" + attackid + "_saveflag");
attack_attribs.push("repeating_attack_" + attackid + "_savedc");
attack_attribs.push("repeating_attack_" + attackid + "_saveeffect");
attack_attribs.push("repeating_attack_" + attackid + "_saveflat");
attack_attribs.push("repeating_attack_" + attackid + "_hldmg");
attack_attribs.push("repeating_attack_" + attackid + "_powerid");
attack_attribs.push("repeating_attack_" + attackid + "_powerlevel");
attack_attribs.push("repeating_attack_" + attackid + "_atkrange");
attack_attribs.push("repeating_attack_" + attackid + "_itemid");
attack_attribs.push("repeating_attack_" + attackid + "_ammo");
attack_attribs.push("repeating_attack_" + attackid + "_global_damage_mod_field");
attack_attribs.push("npc");
});
getAttrs(attack_attribs, function(v) {
var isShipAttack = v.npc === "2";
_.each(attack_array, function(attackid) {
console.log("UPDATING ATTACK: " + attackid);
var callbacks = [];
var update = {};
var hbonus = "";
var hdmg1 = "";
var hdmg2 = "";
var dmg = "";
var dmg2 = "";
var rollbase = "";
var powerattack = false;
var powerattackmod = 0;
var powersavemod = 0;
var atkattr_abrev = "";
var dmgattr_abrev = "";
var dmg2attr_abrev = "";
var pbd_safe = v["pbd_safe"] ? v["pbd_safe"] : "";
var global_crit = v["repeating_attack_" + attackid + "_global_damage_mod_field"] && v["repeating_attack_" + attackid + "_global_damage_mod_field"] != "" ? "@{global_damage_mod_crit}" : "";
var hldmgcrit = v["repeating_attack_" + attackid + "_hldmg"] && v["repeating_attack_" + attackid + "_hldmg"] != "" ? v["repeating_attack_" + attackid + "_hldmg"].slice(0, 7) + "crit" + v["repeating_attack_" + attackid + "_hldmg"].slice(7) : "";
if(v["repeating_attack_" + attackid + "_powerid"] && v["repeating_attack_" + attackid + "_powerid"] != "") {
powerattack = true;
powerattackmod = v["power_attack_mod"] && !isNaN(parseInt(v["power_attack_mod"],10)) ? parseInt(v["power_attack_mod"],10) : 0;
powersavemod = v["power_dc_mod"] && !isNaN(parseInt(v["power_dc_mod"],10)) ? parseInt(v["power_dc_mod"],10) : 0;
};
if(!v["repeating_attack_" + attackid + "_atkattr_base"] || v["repeating_attack_" + attackid + "_atkattr_base"] === "0") {
atkattr_base = 0
} else if(v["repeating_attack_" + attackid + "_atkattr_base"] && v["repeating_attack_" + attackid + "_atkattr_base"] === "power") {
atkattr_base = parseInt(v[v["powercasting_ability"].substring(2, v["powercasting_ability"].length - 2)], 10);
atkattr_abrev = v["powercasting_ability"].substring(2, 5).toUpperCase();
} else {
atkattr_base = parseInt(v[v["repeating_attack_" + attackid + "_atkattr_base"].substring(2, v["repeating_attack_" + attackid + "_atkattr_base"].length - 1)], 10);
atkattr_abrev = v["repeating_attack_" + attackid + "_atkattr_base"].substring(2, 5).toUpperCase();
};
if(!v["repeating_attack_" + attackid + "_dmgattr"] || v["repeating_attack_" + attackid + "_dmgattr"] === "0") {
dmgattr = 0;
} else if(v["repeating_attack_" + attackid + "_dmgattr"] && v["repeating_attack_" + attackid + "_dmgattr"] === "power") {
dmgattr = parseInt(v[v["powercasting_ability"].substring(2, v["powercasting_ability"].length - 2)], 10);
dmgattr_abrev = v["powercasting_ability"].substring(2, 5).toUpperCase();
} else {
dmgattr = parseInt(v[v["repeating_attack_" + attackid + "_dmgattr"].substring(2, v["repeating_attack_" + attackid + "_dmgattr"].length - 1)], 10);
dmgattr_abrev =v["repeating_attack_" + attackid + "_dmgattr"].substring(2, 5).toUpperCase();
};
if(!v["repeating_attack_" + attackid + "_dmg2attr"] || v["repeating_attack_" + attackid + "_dmg2attr"] === "0") {
dmg2attr = 0;
} else if(v["repeating_attack_" + attackid + "_dmg2attr"] && v["repeating_attack_" + attackid + "_dmg2attr"] === "power") {
dmg2attr = parseInt(v[v["powercasting_ability"].substring(2, v["powercasting_ability"].length - 2)], 10);
dmg2attr_abrev = v["powercasting_ability"].substring(2, 5).toUpperCase();
} else {
dmg2attr = parseInt(v[v["repeating_attack_" + attackid + "_dmg2attr"].substring(2, v["repeating_attack_" + attackid + "_dmg2attr"].length - 1)], 10);
dmg2attr_abrev =v["repeating_attack_" + attackid + "_dmg2attr"].substring(2, 5).toUpperCase();
};
var dmgbase = v["repeating_attack_" + attackid + "_dmgbase"] && v["repeating_attack_" + attackid + "_dmgbase"] != "" ? v["repeating_attack_" + attackid + "_dmgbase"] : 0;
var dmg2base = v["repeating_attack_" + attackid + "_dmg2base"] && v["repeating_attack_" + attackid + "_dmg2base"] != "" ? v["repeating_attack_" + attackid + "_dmg2base"] : 0;
var dmgmod = v["repeating_attack_" + attackid + "_dmgmod"] && isNaN(parseInt(v["repeating_attack_" + attackid + "_dmgmod"],10)) === false ? parseInt(v["repeating_attack_" + attackid + "_dmgmod"],10) : 0;
var dmg2mod = v["repeating_attack_" + attackid + "_dmg2mod"] && isNaN(parseInt(v["repeating_attack_" + attackid + "_dmg2mod"],10)) === false ? parseInt(v["repeating_attack_" + attackid + "_dmg2mod"],10) : 0;
var dmgtype = v["repeating_attack_" + attackid + "_dmgtype"] ? v["repeating_attack_" + attackid + "_dmgtype"] + " " : "";
var dmg2type = v["repeating_attack_" + attackid + "_dmg2type"] ? v["repeating_attack_" + attackid + "_dmg2type"] + " " : "";
var pb = v["repeating_attack_" + attackid + "_atkprofflag"] && v["repeating_attack_" + attackid + "_atkprofflag"] != 0 && v.pb ? v.pb : 0;
/* if(isShipAttack) {
pb = 0;
} */
var atkmod = v["repeating_attack_" + attackid + "_atkmod"] && v["repeating_attack_" + attackid + "_atkmod"] != "" ? parseInt(v["repeating_attack_" + attackid + "_atkmod"],10) : 0;
var atkmag = v["repeating_attack_" + attackid + "_atkpower"] && v["repeating_attack_" + attackid + "_atkpower"] != "" ? parseInt(v["repeating_attack_" + attackid + "_atkpower"],10) : 0;
var dmgmag = isNaN(atkmag) === false && atkmag != 0 && ((v["repeating_attack_" + attackid + "_dmgflag"] && v["repeating_attack_" + attackid + "_dmgflag"] != 0) || (v["repeating_attack_" + attackid + "_dmg2flag"] && v["repeating_attack_" + attackid + "_dmg2flag"] != 0)) ? "+ " + atkmag + " Power Bonus" : "";
if(v["repeating_attack_" + attackid + "_atkflag"] && v["repeating_attack_" + attackid + "_atkflag"] != 0) {
bonus_mod = atkattr_base + atkmod + atkmag + powerattackmod;
if(v["pb_type"] && v["pb_type"] === "die") {
plus_minus = bonus_mod > -1 ? "+" : "";
bonus = bonus_mod + "+" + pb;
}
else {
bonus_mod = bonus_mod + parseInt(pb, 10);
plus_minus = bonus_mod > -1 ? "+" : "";
bonus = plus_minus + bonus_mod;
};
}
else if(v["repeating_attack_" + attackid + "_saveflag"] && v["repeating_attack_" + attackid + "_saveflag"] != 0) {
if(!v["repeating_attack_" + attackid + "_savedc"] || (v["repeating_attack_" + attackid + "_savedc"] && v["repeating_attack_" + attackid + "_savedc"] === "(@{power_save_dc})")) {
var tempdc = v["power_save_dc"];
}
else if(v["repeating_attack_" + attackid + "_savedc"] && v["repeating_attack_" + attackid + "_savedc"] === "(@{saveflat})") {
var tempdc = isNaN(parseInt(v["repeating_attack_" + attackid + "_saveflat"])) === false ? parseInt(v["repeating_attack_" + attackid + "_saveflat"]) : "0";
}
else {
var savedcattr = v["repeating_attack_" + attackid + "_savedc"].replace(/^[^{]*{/,"").replace(/\_.*$/,"");
var safe_pb = v["pb_type"] && v["pb_type"] === "die" ? parseInt(pb.substring(1), 10) / 2 : parseInt(pb,10);
var safe_attr = v[savedcattr + "_mod"] ? parseInt(v[savedcattr + "_mod"],10) : 0;
var tempdc = 8 + safe_attr + safe_pb + powersavemod;
};
bonus = "DC" + tempdc;
}
else {
bonus = "-";
}
if(v["repeating_attack_" + attackid + "_dmgflag"] && v["repeating_attack_" + attackid + "_dmgflag"] != 0) {
if(powerattack === true && dmgbase.indexOf("[[round((@{level} + 1) / 6 + 0.5)]]") > -1) {
// SPECIAL CANTRIP DAMAGE
dmgdiestring = Math.round(((parseInt(v["level"], 10) + 1) / 6) + 0.5).toString()
dmg = dmgdiestring + dmgbase.substring(dmgbase.lastIndexOf("d"));
if(dmgattr + dmgmod != 0) {
dmg = dmg + "+" + (dmgattr + dmgmod);
}
dmg = dmg + " " + dmgtype;
}
else {
if(dmgbase === 0 && (dmgattr + dmgmod === 0)){
dmg = 0;
}
if(dmgbase != 0) {
dmg = dmgbase;
}
if(dmgbase != 0 && (dmgattr + dmgmod != 0)){
dmg = dmgattr + dmgmod > 0 ? dmg + "+" : dmg;
}
if(dmgattr + dmgmod != 0) {
dmg = dmg + (dmgattr + dmgmod);
}
dmg = dmg + " " + dmgtype;
}
}
else {
dmg = "";
};
if(v["repeating_attack_" + attackid + "_dmg2flag"] && v["repeating_attack_" + attackid + "_dmg2flag"] != 0) {
if(dmg2base === 0 && (dmg2attr + dmg2mod === 0)){
dmg2 = 0;
}
if(dmg2base != 0) {
dmg2 = dmg2base;
}
if(dmg2base != 0 && (dmg2attr + dmg2mod != 0)){
dmg2 = dmg2attr + dmg2mod > 0 ? dmg2 + "+" : dmg2;
}
if(dmg2attr + dmg2mod != 0) {
dmg2 = dmg2 + (dmg2attr + dmg2mod);
}
dmg2 = dmg2 + " " + dmg2type;
}
else {
dmg2 = "";
};
dmgspacer = v["repeating_attack_" + attackid + "_dmgflag"] && v["repeating_attack_" + attackid + "_dmgflag"] != 0 && v["repeating_attack_" + attackid + "_dmg2flag"] && v["repeating_attack_" + attackid + "_dmg2flag"] != 0 ? "+ " : "";
crit1 = v["repeating_attack_" + attackid + "_dmgcustcrit"] && v["repeating_attack_" + attackid + "_dmgcustcrit"] != "" ? v["repeating_attack_" + attackid + "_dmgcustcrit"] : dmgbase;
crit2 = v["repeating_attack_" + attackid + "_dmg2custcrit"] && v["repeating_attack_" + attackid + "_dmg2custcrit"] != "" ? v["repeating_attack_" + attackid + "_dmg2custcrit"] : dmg2base;
r1 = v["repeating_attack_" + attackid + "_atkflag"] && v["repeating_attack_" + attackid + "_atkflag"] != 0 ? "@{d20}" : "0d20";
r2 = v["repeating_attack_" + attackid + "_atkflag"] && v["repeating_attack_" + attackid + "_atkflag"] != 0 ? "@{rtype}" : "{{r2=[[0d20";
if(v["repeating_attack_" + attackid + "_atkflag"] && v["repeating_attack_" + attackid + "_atkflag"] != 0) {
if(powerattackmod != 0) {hbonus = " + " + powerattackmod + "[POWERATK]" + hbonus};
if(atkmag != 0) {hbonus = " + " + atkmag + "[POWER]" + hbonus};
if(pb != 0) {hbonus = " + " + pb + pbd_safe + "[PROF]" + hbonus};
if(atkmod != 0) {hbonus = " + " + atkmod + "[MOD]" + hbonus};
if(atkattr_base != 0) {hbonus = " + " + atkattr_base + "[" + atkattr_abrev + "]" + hbonus};
}
else {
hbonus = "";
}
if(v["repeating_attack_" + attackid + "_dmgflag"] && v["repeating_attack_" + attackid + "_dmgflag"] != 0) {
if(atkmag != 0) {hdmg1 = " + " + atkmag + "[POWER]" + hdmg1};
if(dmgmod != 0) {hdmg1 = " + " + dmgmod + "[MOD]" + hdmg1};
if(dmgattr != 0) {hdmg1 = " + " + dmgattr + "[" + dmgattr_abrev + "]" + hdmg1};
hdmg1 = dmgbase + hdmg1;
}
else {
hdmg1 = "0";
}
if(v["repeating_attack_" + attackid + "_dmg2flag"] && v["repeating_attack_" + attackid + "_dmg2flag"] != 0) {
if(dmg2mod != 0) {hdmg2 = " + " + dmg2mod + "[MOD]" + hdmg2};
if(dmg2attr != 0) {hdmg2 = " + " + dmg2attr + "[" + dmg2attr_abrev + "]" + hdmg2};
hdmg2 = dmg2base + hdmg2;
}
else {
hdmg2 = "0";
}
var globaldamage = `[[${v.global_damage_mod_roll && v.global_damage_mod_roll !== "" ? v.global_damage_mod_roll : "0"}]]`;
var globaldamagecrit = `[[${v.global_damage_mod_crit && v.global_damage_mod_crit !== "" ? v.global_damage_mod_crit : "0"}]]`;
if(v.dtype === "full") {
pickbase = "full";
rollbase = "@{wtype}&{template:atkdmg} {{mod=@{atkbonus}}} {{rname=@{atkname}}} {{r1=[[" + r1 + "cs>@{atkcritrange}" + hbonus + "]]}} " + r2 + "cs>@{atkcritrange}" + hbonus + "]]}} @{atkflag} {{range=@{atkrange}}} @{dmgflag} {{dmg1=[[" + hdmg1 + "]]}} {{dmg1type=" + dmgtype + "}} @{dmg2flag} {{dmg2=[[" + hdmg2 + "]]}} {{dmg2type=" + dmg2type + "}} {{crit1=[[" + crit1 + "[CRIT]]]}} {{crit2=[[" + crit2 + "[CRIT]]]}} @{saveflag} {{desc=@{atk_desc}}} @{hldmg} " + hldmgcrit + " {{powerlevel=@{powerlevel}}} {{innate=@{power_innate}}} {{globalattack=@{global_attack_mod}}} {{globaldamage=" + globaldamage + "}} {{globaldamagecrit=" + globaldamagecrit + "}} {{globaldamagetype=@{global_damage_mod_type}}} ammo=@{ammo} @{charname_output}";
}
else if(v["repeating_attack_" + attackid + "_atkflag"] && v["repeating_attack_" + attackid + "_atkflag"] != 0) {
pickbase = "pick";
rollbase = "@{wtype}&{template:atk} {{mod=@{atkbonus}}} {{rname=[@{atkname}](~repeating_attack_attack_dmg)}} {{rnamec=[@{atkname}](~repeating_attack_attack_crit)}} {{r1=[[" + r1 + "cs>@{atkcritrange}" + hbonus + "]]}} " + r2 + "cs>@{atkcritrange}" + hbonus + "]]}} {{range=@{atkrange}}} {{desc=@{atk_desc}}} {{powerlevel=@{powerlevel}}} {{innate=@{power_innate}}} {{globalattack=@{global_attack_mod}}} ammo=@{ammo} @{charname_output}";
}
else if(v["repeating_attack_" + attackid + "_dmgflag"] && v["repeating_attack_" + attackid + "_dmgflag"] != 0) {
pickbase = "dmg";
rollbase = "@{wtype}&{template:dmg} {{rname=@{atkname}}} @{atkflag} {{range=@{atkrange}}} @{dmgflag} {{dmg1=[[" + hdmg1 + "]]}} {{dmg1type=" + dmgtype + "}} @{dmg2flag} {{dmg2=[[" + hdmg2 + "]]}} {{dmg2type=" + dmg2type + "}} @{saveflag} {{desc=@{atk_desc}}} @{hldmg} {{powerlevel=@{powerlevel}}} {{innate=@{power_innate}}} {{globaldamage=" + globaldamage + "}} {{globaldamagetype=@{global_damage_mod_type}}} ammo=@{ammo} @{charname_output}"
}
else {
pickbase = "empty";
rollbase = "@{wtype}&{template:dmg} {{rname=@{atkname}}} @{atkflag} {{range=@{atkrange}}} @{saveflag} {{desc=@{atk_desc}}} {{powerlevel=@{powerlevel}}} {{innate=@{power_innate}}} ammo=@{ammo} @{charname_output}"
}
update["repeating_attack_" + attackid + "_rollbase_dmg"] = "@{wtype}&{template:dmg} {{rname=@{atkname}}} @{atkflag} {{range=@{atkrange}}} @{dmgflag} {{dmg1=[[" + hdmg1 + "]]}} {{dmg1type=" + dmgtype + "}} @{dmg2flag} {{dmg2=[[" + hdmg2 + "]]}} {{dmg2type=" + dmg2type + "}} @{saveflag} {{desc=@{atk_desc}}} @{hldmg} {{powerlevel=@{powerlevel}}} {{innate=@{power_innate}}} {{globaldamage=" + globaldamage + "}} {{globaldamagetype=@{global_damage_mod_type}}} @{charname_output}";
update["repeating_attack_" + attackid + "_rollbase_crit"] = "@{wtype}&{template:dmg} {{crit=1}} {{rname=@{atkname}}} @{atkflag} {{range=@{atkrange}}} @{dmgflag} {{dmg1=[[" + hdmg1 + "]]}} {{dmg1type=" + dmgtype + "}} @{dmg2flag} {{dmg2=[[" + hdmg2 + "]]}} {{dmg2type=" + dmg2type + "}} {{crit1=[[" + crit1 + "]]}} {{crit2=[[" + crit2 + "]]}} @{saveflag} {{desc=@{atk_desc}}} @{hldmg} " + hldmgcrit + " {{powerlevel=@{powerlevel}}} {{innate=@{power_innate}}} {{globaldamage=" + globaldamage + "}} {{globaldamagecrit=" + globaldamagecrit + "}} {{globaldamagetype=@{global_damage_mod_type}}} @{charname_output}"
update["repeating_attack_" + attackid + "_atkbonus"] = bonus;
update["repeating_attack_" + attackid + "_atkdmgtype"] = dmg + dmgspacer + dmg2 + dmgmag + " ";
update["repeating_attack_" + attackid + "_rollbase"] = rollbase;
if(v["repeating_attack_" + attackid + "_powerid"] && v["repeating_attack_" + attackid + "_powerid"] != "" && (!source || source && source != "power") && v["repeating_attack_" + attackid + "_powerid"].length == 20) {
var powerid = v["repeating_attack_" + attackid + "_powerid"];
var lvl = v["repeating_attack_" + attackid + "_powerlevel"];
callbacks.push( function() {update_power_from_attack(lvl, powerid, attackid);} );
}
if(v["repeating_attack_" + attackid + "_itemid"] && v["repeating_attack_" + attackid + "_itemid"] != "" && (!source || source && source != "item")) {
var itemid = v["repeating_attack_" + attackid + "_itemid"];
callbacks.push( function() {update_item_from_attack(itemid, attackid);} );
}
setAttrs(update, {silent: true}, function() {callbacks.forEach(function(callback) {callback(); })} );
});
});
};
var update_power_from_attack = function(lvl, powerid, attackid) {
var update = {};
getAttrs(["repeating_attack_" + attackid + "_atkname", "repeating_attack_" + attackid + "_atkrange", "repeating_attack_" + attackid + "_atkflag", "repeating_attack_" + attackid + "_atkattr_base", "repeating_attack_" + attackid + "_dmgbase", "repeating_attack_" + attackid + "_dmgtype", "repeating_attack_" + attackid + "_dmg2base", "repeating_attack_" + attackid + "_dmg2type", "repeating_attack_" + attackid + "_saveflag", "repeating_attack_" + attackid + "_saveattr", "repeating_attack_" + attackid + "_saveeffect"], function(v) {
update["repeating_power-" + lvl + "_" + powerid + "_powername"] = v["repeating_attack_" + attackid + "_atkname"];
if(v["repeating_attack_" + attackid + "_atkrange"] && v["repeating_attack_" + attackid + "_atkrange"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerrange"] = v["repeating_attack_" + attackid + "_atkrange"];
}
else {
update["repeating_power-" + lvl + "_" + powerid + "_powerrange"] = "";
};
if(v["repeating_attack_" + attackid + "_dmgtype"] && v["repeating_attack_" + attackid + "_dmgtype"].toLowerCase() == "healing") {
if(v["repeating_attack_" + attackid + "_dmgbase"] && v["repeating_attack_" + attackid + "_dmgbase"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerhealing"] = v["repeating_attack_" + attackid + "_dmgbase"];
}
}
else {
if(v["repeating_attack_" + attackid + "_dmgbase"] && v["repeating_attack_" + attackid + "_dmgbase"] != "" && v["repeating_attack_" + attackid + "_dmgbase"].indexOf("[[round((@{level} + 1) / 6 + 0.5)]]") === -1) {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamage"] = v["repeating_attack_" + attackid + "_dmgbase"];
}
else if(!v["repeating_attack_" + attackid + "_dmgbase"] || v["repeating_attack_" + attackid + "_dmgbase"] === "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamage"] = "";
}
if(v["repeating_attack_" + attackid + "_dmgtype"] && v["repeating_attack_" + attackid + "_dmgtype"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype"] = v["repeating_attack_" + attackid + "_dmgtype"];
}
else {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype"] = "";
}
};
if(v["repeating_attack_" + attackid + "_dmg2type"] && v["repeating_attack_" + attackid + "_dmg2type"].toLowerCase() == "healing") {
if(v["repeating_attack_" + attackid + "_dmgbase"] && v["repeating_attack_" + attackid + "_dmgbase"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerhealing"] = v["repeating_attack_" + attackid + "_dmgbase"];
}
}
else {
if(v["repeating_attack_" + attackid + "_dmg2base"] && v["repeating_attack_" + attackid + "_dmg2base"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamage2"] = v["repeating_attack_" + attackid + "_dmg2base"];
}
else {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamage2"] = "";
}
if(v["repeating_attack_" + attackid + "_dmg2type"] && v["repeating_attack_" + attackid + "_dmg2type"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype2"] = v["repeating_attack_" + attackid + "_dmg2type"];
}
else {
update["repeating_power-" + lvl + "_" + powerid + "_powerdamagetype2"] = "";
}
};
if(v["repeating_attack_" + attackid + "_saveflag"] && v["repeating_attack_" + attackid + "_saveflag"] != "0") {
update["repeating_power-" + lvl + "_" + powerid + "_powersave"] = v["repeating_attack_" + attackid + "_saveattr"];
}
else {
update["repeating_power-" + lvl + "_" + powerid + "_powersave"] = "";
};
if(v["repeating_attack_" + attackid + "_saveeffect"] && v["repeating_attack_" + attackid + "_saveeffect"] != "") {
update["repeating_power-" + lvl + "_" + powerid + "_powersavesuccess"] = v["repeating_attack_" + attackid + "_saveeffect"];
}
else {
update["repeating_power-" + lvl + "_" + powerid + "_powersavesuccess"] = "";
};
setAttrs(update, {silent: true});
});
};
var update_item_from_attack = function(itemid, attackid) {
var inventory = "repeating_inventory_";
getAttrs(["repeating_hiddeninventory_" + itemid + "_itemname"], function(x){
if(x["repeating_hiddeninventory_" + itemid + "_itemname"]) {
inventory = "repeating_hiddeninventory_";
}
});
getAttrs(["repeating_attack_" + attackid + "_atkname", "repeating_attack_" + attackid + "_dmgbase", "repeating_attack_" + attackid + "_dmg2base", "repeating_attack_" + attackid + "_dmgtype", "repeating_attack_" + attackid + "_dmg2type", "repeating_attack_" + attackid + "_atkrange", "repeating_attack_" + attackid + "_atkmod", "repeating_attack_" + attackid + "_dmgmod", inventory + itemid + "_itemmodifiers", "repeating_attack_" + attackid + "_versatile_alt", inventory + itemid + "_itemproperties", "repeating_attack_" + attackid + "_atkpower"], function(v) {
var update = {};
var mods = v[inventory + itemid + "_itemmodifiers"];
var damage = v["repeating_attack_" + attackid + "_dmgbase"] ? v["repeating_attack_" + attackid + "_dmgbase"] : 0;
var damage2 = v["repeating_attack_" + attackid + "_dmg2base"] ? v["repeating_attack_" + attackid + "_dmg2base"] : 0;
var damagetype = v["repeating_attack_" + attackid + "_dmgtype"] ? v["repeating_attack_" + attackid + "_dmgtype"] : 0;
var damagetype2 = v["repeating_attack_" + attackid + "_dmg2type"] ? v["repeating_attack_" + attackid + "_dmg2type"] : 0;
var range = v["repeating_attack_" + attackid + "_atkrange"] ? v["repeating_attack_" + attackid + "_atkrange"] : 0;
var attackmod = v["repeating_attack_" + attackid + "_atkmod"] ? v["repeating_attack_" + attackid + "_atkmod"] : 0;
var damagemod = v["repeating_attack_" + attackid + "_dmgmod"] ? v["repeating_attack_" + attackid + "_dmgmod"] : 0;
var powermod = v["repeating_attack_" + attackid + "_atkpower"] ? v["repeating_attack_" + attackid + "_atkpower"] : 0;
var atktype = "";
var altprefix = v["repeating_attack_" + attackid + "_versatile_alt"] === "1" ? "Alternate " : "";
if(/Alternate Damage:/i.test(v[inventory + itemid + "_itemmodifiers"])) {
update[inventory + itemid + "_itemname"] = v["repeating_attack_" + attackid + "_atkname"].replace(/\s*(?:\(One-Handed\)|\(Two-Handed\))/, "");
} else {
update[inventory + itemid + "_itemname"] = v["repeating_attack_" + attackid + "_atkname"];
}
var attack_type_regex = /(?:^|,)\s*Item Type: (Melee|Ranged) Weapon(?:,|$)/i;
var attack_type_results = attack_type_regex.exec(v[inventory + itemid + "_itemmodifiers"]);
atktype = attack_type_results ? attack_type_results[1] : "";
if(mods) {
mods = mods.split(",");
} else {
mods = [];
}
var damage_regex = new RegExp("^\\s*" + altprefix + "Damage:\\s*(.+)$", "i");
var damage_found = false;
for(var i = 0; i < mods.length; i++) {
if(damage_found = damage_regex.exec(mods[i])) {
if(damage !== 0) {
mods[i] = mods[i].replace(damage_found[1], damage);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!damage_found && damage !== 0) {
mods.push(altprefix + "Damage: " + damage);
}
var damage2_regex = new RegExp("^\\s*" + altprefix + "Secondary Damage:\\s*(.+)$", "i");
var damage2_found = false;
for(var i = 0; i < mods.length; i++) {
if(damage2_found = damage2_regex.exec(mods[i])) {
if(damage2 !== 0) {
mods[i] = mods[i].replace(damage2_found[1], damage2);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!damage2_found && damage2 !== 0) {
mods.push(altprefix + "Secondary Damage: " + damage2);
}
var dmgtype_regex = new RegExp("^\\s*" + altprefix + "Damage Type:\\s*(.+)$", "i");
var dmgtype_found = false;
for(var i = 0; i < mods.length; i++) {
if(dmgtype_found = dmgtype_regex.exec(mods[i])) {
if(damagetype !== 0) {
mods[i] = mods[i].replace(dmgtype_found[1], damagetype);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!dmgtype_found && damagetype !== 0) {
mods.push(altprefix + "Damage Type: " + damagetype);
}
var dmgtype2_regex = new RegExp("^\\s*" + altprefix + "Secondary Damage Type:\\s*(.+)$", "i");
var dmgtype2_found = false;
for(var i = 0; i < mods.length; i++) {
if(dmgtype2_found = dmgtype2_regex.exec(mods[i])) {
if(damagetype2 !== 0) {
mods[i] = mods[i].replace(dmgtype_found[1], damagetype);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!dmgtype2_found && damagetype2 !== 0) {
mods.push(altprefix + "Secondary Damage Type: " + damagetype2);
}
var range_found = false;
for(var i = 0; i < mods.length; i++) {
if(range_found = /^\s*Range:\s*(.+)$/i.exec(mods[i])) {
if(range !== 0) {
mods[i] = mods[i].replace(range_found[1], range);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!range_found && range !== 0) {
mods.push("Range: " + range);
}
var attackmod_regex = new RegExp("^\\s*(?:" + (atktype !== "" ? atktype + "|" : "") + "Weapon) Attacks \\+?(.+)$", "i");
var attackmod_found = false;
for(var i = 0; i < mods.length; i++) {
if(attackmod_found = attackmod_regex.exec(mods[i])) {
if(powermod !== 0 || attackmod !== 0) {
mods[i] = mods[i].replace(attackmod_found[1], powermod !== 0 ? powermod : attackmod);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!attackmod_found && (powermod !== 0 || attackmod !== 0)) {
var properties = v[inventory + itemid + "_itemproperties"];
if(properties && /Thrown/i.test(properties)) {
mods.push("Weapon Attacks: " + (powermod !== 0 ? powermod : attackmod));
}
else {
mods.push(atktype + " Attacks: " + (powermod !== 0 ? powermod : attackmod));
}
}
var damagemod_regex = new RegExp("^\\s*(?:" + (atktype !== "" ? atktype + "|" : "") + "Weapon) Damage \\+?(.+)$", "i");
var damagemod_found = false;
for(var i = 0; i < mods.length; i++) {
if(damagemod_found = damagemod_regex.exec(mods[i])) {
if(powermod !== 0 || damagemod !== 0) {
mods[i] = mods[i].replace(damagemod_found[1], powermod !== 0 ? powermod : attackmod);
} else {
mods.splice(i, 1);
}
break;
}
}
if(!damagemod_found && (powermod !== 0 || damagemod !== 0)) {
var properties = v[inventory + itemid + "_itemproperties"];
if(properties && /Thrown/i.test(properties)) {
mods.push("Weapon Damage: " + (powermod !== 0 ? powermod : damagemod));
}
else {
mods.push(atktype + " Damage: " + (powermod !== 0 ? powermod : damagemod));
}
}
update[inventory + itemid + "_itemmodifiers"] = mods.join(",");
setAttrs(update, {silent: true});
});
};
var remove_attack = function(attackid) {
removeRepeatingRow("repeating_attack_" + attackid);
};
var remove_resource = function(id) {
var update = {};
getAttrs([id + "_itemid"], function(v) {
var itemid = v[id + "_itemid"];
if(itemid) {
var inventory = "repeating_inventory_";
getAttrs(["repeating_hiddeninventory_" + itemid + "_itemname"], function(x){
if(x["repeating_hiddeninventory_" + itemid + "_itemname"]) {
inventory = "repeating_hiddeninventory_";
}
});
update[inventory + itemid + "_useasresource"] = 0;
update[inventory + itemid + "_itemresourceid"] = "";
};
if(id == "other_resource") {
update["other_resource"] = "";
update["other_resource_name"] = "";
update["other_resource_itemid"] = "";
setAttrs(update, {silent: true});
}
else {
var baseid = id.replace("repeating_resource_", "").substring(0,20);
var resource_names = ["repeating_resource_" + baseid + "_resource_left_name", "repeating_resource_" + baseid + "_resource_right_name"];
getAttrs(resource_names, function(v) {
if((id.indexOf("left") > -1 && !v["repeating_resource_" + baseid + "_resource_right_name"]) || (id.indexOf("right") > -1 && !v["repeating_resource_" + baseid + "_resource_left_name"])) {
removeRepeatingRow("repeating_resource_" + baseid);
}
else {
update["repeating_resource_" + id.replace("repeating_resource_", "")] = "";
update["repeating_resource_" + id.replace("repeating_resource_", "") + "_name"] = "";
};
setAttrs(update, {silent: true});
});
};
});
};
var update_weight = function() {
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_weight_change("repeating_inventory_", idarray, "weighttotal");
});
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_weight_change("repeating_hiddeninventory_", idarray, "hiddenweighttotal");
});
};
var update_inventory_from_weight_change = function (inventory, idarray, weightAttrToUpdate){
var update = {};
var wtotal = 0;
var weight_attrs = ["cp","sp","ep","gp","pp","encumberance_setting","strength","size","carrying_capacity_mod"];
_.each(idarray, function(currentID, i) {
weight_attrs.push(inventory + currentID + "_itemweight");
weight_attrs.push(inventory + currentID + "_itemcount");
});
getAttrs(weight_attrs, function(v) {
cp = isNaN(parseInt(v.cp, 10)) === false ? parseInt(v.cp, 10) : 0;
sp = isNaN(parseInt(v.sp, 10)) === false ? parseInt(v.sp, 10) : 0;
ep = isNaN(parseInt(v.ep, 10)) === false ? parseInt(v.ep, 10) : 0;
gp = isNaN(parseInt(v.gp, 10)) === false ? parseInt(v.gp, 10) : 0;
pp = isNaN(parseInt(v.pp, 10)) === false ? parseInt(v.pp, 10) : 0;
wtotal = wtotal + ((cp + sp + ep + gp + pp) / 50);
_.each(idarray, function(currentID, i) {
if(v[inventory + currentID + "_itemweight"] && isNaN(parseInt(v[inventory + currentID + "_itemweight"], 10)) === false) {
count = v[inventory + currentID + "_itemcount"] && isNaN(parseFloat(v[inventory + currentID + "_itemcount"])) === false ? parseFloat(v[inventory + currentID + "_itemcount"]) : 1;
wtotal = wtotal + (parseFloat(v[inventory + currentID + "_itemweight"]) * count);
}
});
update[weightAttrToUpdate] = wtotal;
var str_base = parseInt(v.strength, 10);
var size_multiplier = 1;
if(v["size"] && v["size"] != "") {
if(v["size"].toLowerCase().trim() == "tiny") {size_multiplier = .5}
else if(v["size"].toLowerCase().trim() == "large") {size_multiplier = 2}
else if(v["size"].toLowerCase().trim() == "huge") {size_multiplier = 4}
else if(v["size"].toLowerCase().trim() == "gargantuan") {size_multiplier = 8}
}
var str = str_base*size_multiplier;
if(v.carrying_capacity_mod) {
var operator = v.carrying_capacity_mod.substring(0,1);
var value = v.carrying_capacity_mod.substring(1);
if(["*","x","+","-"].indexOf(operator) > -1 && isNaN(parseInt(value,10)) === false) {
if(operator == "*" || operator == "x") {str = str*parseInt(value,10);}
else if(operator == "+") {str = str+parseInt(value,10);}
else if(operator == "-") {str = str-parseInt(value,10);}
}
}
if(!v.encumberance_setting || v.encumberance_setting === "off") {
if(wtotal > str*15) {
update["encumberance"] = "OVER CARRYING CAPACITY";
}
else {
update["encumberance"] = " ";
}
}
else if(v.encumberance_setting === "on") {
if(wtotal > str*15) {
update["encumberance"] = "IMMOBILE";
}
else if(wtotal > str*10) {
update["encumberance"] = "HEAVILY ENCUMBERED";
}
else if(wtotal > str*5) {
update["encumberance"] = "ENCUMBERED";
}
else {
update["encumberance"] = " ";
}
}
else {
update["encumberance"] = " ";
}
setAttrs(update, {silent: true});
});
};
var update_shield_points = function() {
getAttrs(["hp_max", "ship_shield_capacity", "ship_shield_max", "ship_shield_active_flag"], function(attrs) {
if(attrs.ship_shield_active_flag == "1") {
var tryParseShieldCapacity = parseFloat(attrs.ship_shield_capacity);
if(!isNaN(tryParseShieldCapacity)) {
var update = {};
update.ship_shield_max = Math.ceil(tryParseShieldCapacity * attrs.hp_max);
setAttrs(update, {silent: true});
}
}
});
}
var update_shield_regen = function() {
getAttrs(["ship_size", "ship_shield_regen_rate_coefficient", "ship_shield_active_flag"], function(attrs) {
if(attrs.ship_shield_active_flag == "1") {
var tryParseShieldCoefficient = isNaN(parseFloat(attrs.ship_shield_regen_rate_coefficient)) == false ? parseFloat(attrs.ship_shield_regen_rate_coefficient) : 0;
var shipSizeHitDie = 0;
switch(attrs.ship_size) {
case "Tiny":
shipSizeHitDie = 4;
break;
case "Small":
shipSizeHitDie = 6;
break;
case "Medium":
shipSizeHitDie = 8;
break;
case "Large":
shipSizeHitDie = 10;
break;
case "Huge":
shipSizeHitDie = 12;
break;
case "Gargantuan":
shipSizeHitDie = 20;
break;
}
setAttrs({
ship_shield_regen_rate: Math.ceil(tryParseShieldCoefficient * shipSizeHitDie)
}, {silent: true});
}
})
}
var update_ship_dice = function() {
getAttrs(["ship_size", "hulldie_final", "hull_dice_max", "shielddie_final", "shield_dice_max", "base_ship_tier", "pwrdie_final", "hp_max", "hp", "constitution_mod", "strength_mod", "ship_shield", "ship_shield_points", "ship_shield_max", "ship_armor", "ship_armor_active_flag", "ship_armor_hp_per_hit_die", "ship_shield_capacity", "ship_shield_regen_rate_coefficient", "ship_shield_active_flag", "ship_shield_regen_rate"], function(attrs) {
if(true) {
var shipSizeDie = 0;
var shipSizeDiceMax = 0;
var shipSizeHullPoints = 0;
var shipSizeShieldPoints = 0;
var shipHullPointsAfterFirst = 0;
var armorHpPerHitDieMod = 0;
var shieldCapacity = 0;
var shieldRegenRate = 0;
var tierDieMultiplier = 0;
var shipPwrDie = 0;
var sTier = isNaN(parseInt(attrs.base_ship_tier)) == false ? parseInt(attrs.base_ship_tier) : 0;
var localCon = isNaN(parseInt(attrs.constitution_mod)) == false ? parseInt(attrs.constitution_mod) : 0;
var localStr = isNaN(parseInt(attrs.strength_mod)) == false ? parseInt(attrs.strength_mod) : 0;
switch(attrs.ship_size) {
case "Tiny":
shipSizeDie = 4;
shipSizeDiceMax = 1;
tierDieMultiplier = 1;
shipHullPointsAfterFirst = 3;
break;
case "Small":
shipSizeDie = 6;
shipSizeDiceMax = 3;
tierDieMultiplier = 1;
shipHullPointsAfterFirst = 4;
break;
case "Medium":
shipSizeDie = 8;
shipSizeDiceMax = 5;
tierDieMultiplier = 1;
shipHullPointsAfterFirst = 5;
break;
case "Large":
shipSizeDie = 10;
shipSizeDiceMax = 7;
tierDieMultiplier = 1;
shipHullPointsAfterFirst = 6;
break;
case "Huge":
shipSizeDie = 12;
shipSizeDiceMax = 9;
tierDieMultiplier = 2;
shipHullPointsAfterFirst = 7;
break;
case "Gargantuan":
shipSizeDie = 20;
shipSizeDiceMax = 11;
tierDieMultiplier = 2;
shipHullPointsAfterFirst = 11;
break;
}
switch(sTier){
case 0:
shipPwrDie = 1;
break;
case 1:
shipPwrDie = 4;
break;
case 2:
shipPwrDie = 6;
break;
case 3:
shipPwrDie = 8;
break;
case 4:
shipPwrDie = 10;
break;
case 5:
shipPwrDie = 12;
break;
}
switch(attrs.ship_armor){
case "none":
break;
case "deflection":
break;
case "lightweight":
armorHpPerHitDieMod = -1
break;
case "reinforced":
armorHpPerHitDieMod = 1
break;
case "customshiparmor":
if(attrs.ship_armor_active_flag == "1") {
var tempHpAttrBonus = attrs["ship_armor_hp_per_hit_die"]
var tryParseHpBonus = parseInt(tempHpAttrBonus);
if(!isNaN(tryParseHpBonus)) {
armorHpPerHitDieMod = tryParseHpBonus;
}
}
break;
}
switch(attrs.ship_shield){
case "none":
break;
case "directional":
shieldCapacity = 1;
shieldRegenRate = 1;
break;
case "fortress":
shieldCapacity = 3/2;
shieldRegenRate = 2/3;
break;
case "quickcharge":
shieldCapacity = 2/3;
shieldRegenRate = 3/2;
break;
case "customshipshield":
if(attrs.ship_shield_active_flag == "1") {
shieldCapacity = isNaN(parseFloat(attrs.ship_shield_capacity)) == false ? parseFloat(attrs.ship_shield_capacity) : 0;
shieldRegenRate = isNaN(parseFloat(attrs.ship_shield_regen_rate_coefficient)) == false ? parseFloat(attrs.ship_shield_regen_rate_coefficient) : 0;
}
break;
}
var adjustedTierDies = shipSizeDiceMax + (sTier * tierDieMultiplier);
shipSizeHullPoints = shipSizeDie + localCon + ((adjustedTierDies-1) * shipHullPointsAfterFirst) + ((adjustedTierDies-1) * localCon) + (adjustedTierDies * armorHpPerHitDieMod);
shipSizeShieldPoints = Math.floor(((shipSizeDie + localStr) + ((adjustedTierDies-1) * shipHullPointsAfterFirst) + ((adjustedTierDies-1) * localStr)) * shieldCapacity);
var shipSizeShieldRegen = Math.floor(shipSizeDie * shieldRegenRate);
setAttrs({hulldie_final: shipSizeDie}, {silent: true});
setAttrs({hull_dice_max: adjustedTierDies}, {silent: true});
setAttrs({shielddie_final: shipSizeDie}, {silent: true});
setAttrs({shield_dice_max: adjustedTierDies}, {silent: true});
setAttrs({pwrdie_final: shipPwrDie}, {silent: true});
setAttrs({hp_max: shipSizeHullPoints}, {silent: true});
setAttrs({hp: shipSizeHullPoints}, {silent: true});
setAttrs({ship_shield_max: shipSizeShieldPoints}, {silent: true});
setAttrs({ship_shield_points: shipSizeShieldPoints}, {silent: true});
setAttrs({ship_shield_regen_rate: shipSizeShieldRegen}, {silent: true});
}
else {
setAttrs({hull_dice_max: 0}, {silent: true});
}
})
};
var update_pwr_die_recovery = function() {
getAttrs(["pwrdie_recovery", "ship_reactor", "pwrdie_mod"], function(attrs) {
if(true) {
var pwrDieRecov = 0;
var pwrDieMod = 0;
switch(attrs.ship_reactor) {
case "none":
pwrDieRecov = 0;
break;
case "fuelcell":
pwrDieRecov = 1;
break;
case "ionization":
pwrDieRecov = 2;
pwrDieMod = 1;
break;
case "powercore":
pwrDieRecov = 2;
break;
}
setAttrs({pwrdie_recovery: pwrDieRecov}, {silent: true});
setAttrs({pwrdie_mod: pwrDieMod}, {silent: true});
}
else {
setAttrs({pwrdie_recovery: 0}, {silent: true});
setAttrs({pwrdie_mod: 0}, {silent: true});
}
})
};
var update_pwr_die_capacity = function() {
getAttrs(["ship_pwr_coupling", "pwr_s_storage", "pwr_c_storage"], function(attrs) {
if(true) {
var pwrCentralStore = 0;
var pwrSystemStore = 0;
switch(attrs.ship_pwr_coupling) {
case "none":
pwrCentralStore = 0;
pwrSystemStore = 0;
break;
case "direct":
pwrCentralStore = 4;
pwrSystemStore = 0;
break;
case "distributed":
pwrCentralStore = 0;
pwrSystemStore = 2;
break;
case "hubspoke":
pwrCentralStore = 2;
pwrSystemStore = 1;
break;
}
setAttrs({pwr_s_storage: pwrSystemStore}, {silent: true});
setAttrs({pwr_c_storage: pwrCentralStore}, {silent: true});
}
else {
setAttrs({pwr_s_storage: 0}, {silent: true});
setAttrs({pwr_c_storage: 0}, {silent: true});
}
})
};
var update_ship_capacity = function() {
getAttrs(["ship_size", "ship_fuel_max", "ship_food_max", "ship_reg_cargo_max", "ship_fuel_cost", "ship_reactor"], function(attrs) {
if(true) {
var shipCargoCap = 0;
var shipFuelCap = 0;
var shipFoodCap = 0;
var shipFuelCost = 0;
var shipFuelMod = 0;
switch(attrs.ship_reactor) {
case "none":
shipFuelMod = 1;
break;
case "fuelcell":
shipFuelMod = 1;
break;
case "ionization":
shipFuelMod = 2/3;
break;
case "powercore":
shipFuelMod = 3/2;
break;
}
switch(attrs.ship_size) {
case "Tiny":
shipCargoCap = 0;
shipFoodCap = 0;
shipFuelCap = 5;
shipFuelCost = 25;
break;
case "Small":
shipCargoCap = 2;
shipFoodCap = 10;
shipFuelCap = 10;
shipFuelCost = 50;
break;
case "Medium":
shipCargoCap = 25;
shipFoodCap = 120;
shipFuelCap = 30;
shipFuelCost = 100;
break;
case "Large":
shipCargoCap = 500;
shipFoodCap = 240000;
shipFuelCap = 300;
shipFuelCost = 1000;
break;
case "Huge":
shipCargoCap = 10000;
shipFoodCap = 9600000;
shipFuelCap = 600;
shipFuelCost = 10000;
break;
case "Gargantuan":
shipCargoCap = 200000;
shipFoodCap = 576000000;
shipFuelCap = 1800;
shipFuelCost = 100000;
break;
}
setAttrs({ship_fuel_max: shipFuelCap}, {silent: true});
setAttrs({ship_food_max: shipFoodCap}, {silent: true});
setAttrs({ship_reg_cargo_max: shipCargoCap}, {silent: true});
setAttrs({ship_fuel_cost: Math.ceil(shipFuelCost * shipFuelMod)}, {silent: true})
}
else {
setAttrs({ship_fuel_max: 0}, {silent: true});
setAttrs({ship_food_max: 0}, {silent: true});
setAttrs({ship_reg_cargo_max: 0}, {silent: true});
setAttrs({ship_fuel_cost: 0}, {silent: true})
}
})
};
var update_ship_suite_capacity = function() {
getAttrs(["ship_size", "attr_ship_suites_max", "attr_ship_mod_max", "constitution_mod"], function(attrs) {
if(true) {
var shipModCap = 0;
var shipSuiteCap = 0;
var cons_mod = attrs.constitution_mod
switch(attrs.ship_size) {
case "Tiny":
shipModCap = 10;
shipSuiteCap = 0;
break;
case "Small":
shipModCap = 20;
shipSuiteCap = -1 + cons_mod;
break;
case "Medium":
shipModCap = 30;
shipSuiteCap = 3 + cons_mod;
break;
case "Large":
shipModCap = 50;
shipSuiteCap = 3 + (2*cons_mod);
break;
case "Huge":
shipModCap = 60;
shipSuiteCap = 6 + (3*cons_mod);
break;
case "Gargantuan":
shipModCap = 70;
shipSuiteCap = 10 + (4*cons_mod);
break;
}
setAttrs({ship_suites_max: shipSuiteCap}, {silent: true});
setAttrs({ship_mod_max: shipModCap}, {silent: true});
}
else {
setAttrs({ship_suites_max: 0}, {silent: true});
setAttrs({ship_mod_max: 0}, {silent: true});
}
})
};
var update_ship_tier_cost = function() {
getAttrs(["ship_size", "base_ship_tier", "ship_cr_next"], function(attrs) {
if(true) {
var sTier = isNaN(parseInt(attrs.base_ship_tier)) == false ? parseInt(attrs.base_ship_tier) : 0;
var shipTierCostMod = 0;
var shipTierCostFinal = 0;
switch(attrs.ship_size) {
case "Tiny":
shipTierCostMod = 1/2;
break;
case "Small":
shipTierCostMod = 1;
break;
case "Medium":
shipTierCostMod = 2;
break;
case "Large":
shipTierCostMod = 10;
break;
case "Huge":
shipTierCostMod = 100;
break;
case "Gargantuan":
shipTierCostMod = 1000;
break;
}
switch(sTier) {
case 0:
shipTierCostFinal = 3900*shipTierCostMod;
break;
case 1:
shipTierCostFinal = 77500*shipTierCostMod;
break;
case 2:
shipTierCostFinal = 297000*shipTierCostMod;
break;
case 3:
shipTierCostFinal = 620000*shipTierCostMod;
break;
case 4:
shipTierCostFinal = 1150000*shipTierCostMod;
break;
case 5:
shipTierCostFinal = "N/A";
}
setAttrs({ship_cr_next: shipTierCostFinal}, {silent: true});
}
else {
setAttrs({ship_cr_next: 0}, {silent: true});
}
})
};
var update_ac = function() {
getAttrs(["custom_ac_flag","npc"], function(v) {
if(v.custom_ac_flag === "2") {
return;
}
else if(v.custom_ac_flag === "1" && v.npc !== "2") {
getAttrs(["custom_ac_base","custom_ac_part1","custom_ac_part2","strength_mod","dexterity_mod","constitution_mod","intelligence_mod","wisdom_mod","charisma_mod"], function(b) {
var base = isNaN(parseInt(b.custom_ac_base, 10)) === false ? parseInt(b.custom_ac_base, 10) : 10;
var part1attr = b.custom_ac_part1.toLowerCase();
var part2attr = b.custom_ac_part2.toLowerCase();
var part1 = part1attr === "none" ? 0 : b[part1attr + "_mod"];
var part2 = part2attr === "none" ? 0 : b[part2attr + "_mod"];
var total = base + part1 + part2;
setAttrs({ac: total});
});
}
else {
var ac_attrs = ["simpleinventory","dexterity_mod","globalacmod","npc","ship_size","pilot_skill", "ship_armor_ac_bonus", "ship_armor_active_flag", "ship_armor"];
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_ac_change("repeating_inventory_", idarray, ac_attrs);
});
if(v.npc === "2") {
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_ac_change("repeating_hiddeninventory_", idarray, ac_attrs);
});
}
};
});
};
var update_inventory_from_ac_change = function(inventory, idarray, ac_attrs) {
var update = {};
_.each(idarray, function(currentID, i) {
ac_attrs.push(inventory + currentID + "_equipped");
ac_attrs.push(inventory + currentID + "_itemmodifiers");
});
getAttrs(ac_attrs, function(b) {
var globalacmod = isNaN(parseInt(b.globalacmod, 10)) === false ? parseInt(b.globalacmod, 10) : 0;
var dexmod = +b["dexterity_mod"];
var total = 10 + dexmod;
var armorcount = 0;
var shieldcount = 0;
var armoritems = [];
if(b.simpleinventory === "complex") {
_.each(idarray, function(currentID, i) {
if(b[inventory + currentID + "_equipped"] && b[inventory + currentID + "_equipped"] === "1" && b[inventory + currentID + "_itemmodifiers"] && b[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf("ac") > -1) {
var mods = b[inventory + currentID + "_itemmodifiers"].split(",");
var ac = 0;
var type = "mod";
_.each(mods, function(mod) {
if(mod.substring(0,10) === "Item Type:") {
type = mod.substring(11, mod.length).trim().toLowerCase();
}
if(mod.toLowerCase().indexOf("ac:") > -1 || mod.toLowerCase().indexOf("ac +") > -1 || mod.toLowerCase().indexOf("ac+") > -1) {
var regex = mod.replace(/[^0-9]/g, "");
var bonus = regex && regex.length > 0 && isNaN(parseInt(regex,10)) === false ? parseInt(regex,10) : 0;
ac = ac + bonus;
}
if(mod.toLowerCase().indexOf("ac -") > -1 || mod.toLowerCase().indexOf("ac-") > -1) {
var regex = mod.replace(/[^0-9]/g, "");
var bonus = regex && regex.length > 0 && isNaN(parseInt(regex,10)) === false ? parseInt(regex,10) : 0;
ac = ac - bonus;
}
});
armoritems.push({type: type, ac: ac});
}
});
armorcount = armoritems.filter(function(item){ return item["type"].indexOf("armor") > -1 }).length;
shieldcount = armoritems.filter(function(item){ return item["type"].indexOf("shield") > -1 }).length;
if(b.npc === "2") {
var modac = 0;
_.each(armoritems, function(item) {
modac = modac + item["ac"];
})
switch(b.ship_armor){
case "none":
break;
case "deflection":
break;
case "lightweight":
modac += 2
break;
case "reinforced":
modac += -2
break;
case "customshiparmor":
if(b.ship_armor_active_flag == "1") {
var acArmor = b["ship_armor_ac_bonus"]
var tryParseAcBonus = parseInt(acArmor, 10);
if(!isNaN(tryParseAcBonus)) {
modac += tryParseAcBonus;
}
}
break;
}
var pilotSkill = isNaN(parseInt(b.pilot_skill, 10)) === false ? parseInt(b.pilot_skill, 10) : 0;
var shipSizeACBase = 0;
switch(b.ship_size) {
case "Tiny":
shipSizeACBase = 10;
break;
case "Small":
shipSizeACBase = 9;
break;
case "Medium":
shipSizeACBase = 8;
break;
case "Large":
shipSizeACBase = 7;
break;
case "Huge":
shipSizeACBase = 6;
break;
case "Gargantuan":
shipSizeACBase = 5;
break;
default:
shipSizeACBase = 0;
break;
}
total = shipSizeACBase + pilotSkill + modac;
}
else {
var base = dexmod;
var armorac = 10;
var shieldac = 0;
var modac = 0;
_.each(armoritems, function(item) {
if(item["type"].indexOf("light armor") > -1) {
armorac = item["ac"];
base = dexmod;
}
else if(item["type"].indexOf("medium armor") > -1) {
armorac = item["ac"];
base = Math.min(dexmod, 2);
}
else if(item["type"].indexOf("heavy armor") > -1) {
armorac = item["ac"];
base = 0;
}
else if(item["type"].indexOf("shield") > -1) {
shieldac = item["ac"];
}
else {
modac = modac + item["ac"];
}
})
total = base + armorac + shieldac + modac;
}
};
if(armorcount > 1 || shieldcount > 1) {
update["armorwarningflag"] = "show";
update["armorwarning"] = "0";
}
else {
update["armorwarningflag"] = "hide";
update["armorwarning"] = "0";
}
console.log("total: " + total);
update["ac"] = total + globalacmod;
setAttrs(update, {silent: true});
});
};
var check_customac = function(attr) {
getAttrs(["custom_ac_flag","custom_ac_part1","custom_ac_part2"], function(v) {
if(v["custom_ac_flag"] && v["custom_ac_flag"] === "1" && ((v["custom_ac_part1"] && v["custom_ac_part1"] === attr) || (v["custom_ac_part2"] && v["custom_ac_part2"] === attr))) {
update_ac();
}
});
};
/* Todo, there is a bug here... for a pc, hiddeninventory does not exist and overwrite the correct value of inventory...
* Do player really uses the mod field?*/
var update_initiative = function() {
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_initiative_change("repeating_inventory_", idarray);
});
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_initiative_change("repeating_hiddeninventory_", idarray);
});
};
var update_inventory_from_initiative_change = function(inventory, idarray) {
var attrs_to_get = ["dexterity","dexterity_mod","initmod","jack_of_all_trades","jack","init_tiebreaker","pb_type"];
_.each(idarray, function(currentID, i) {
attrs_to_get.push(inventory + currentID + "_equipped");
attrs_to_get.push(inventory + currentID + "_itemmodifiers");
});
getAttrs(attrs_to_get, function(v) {
var update = {};
var final_init = parseInt(v["dexterity_mod"], 10);
if(v["initmod"] && !isNaN(parseInt(v["initmod"], 10))) {
final_init = final_init + parseInt(v["initmod"], 10);
}
if(v["init_tiebreaker"] && v["init_tiebreaker"] != 0) {
final_init = final_init + (parseInt(v["dexterity"], 10)/100);
}
if(v["jack_of_all_trades"] && v["jack_of_all_trades"] != 0) {
if(v["pb_type"] && v["pb_type"] === "die" && v["jack"]) {
// final_init = final_init + Math.floor(parseInt(v["jack"].substring(1),10)/2);
final_init = final_init + "+" + v["jack"];
}
else if(v["jack"] && !isNaN(parseInt(v["jack"], 10))) {
final_init = final_init + parseInt(v["jack"], 10);
}
}
_.each(idarray, function(currentID){
if(v[inventory + currentID + "_equipped"] && v[inventory + currentID + "_equipped"] === "1" && v[inventory + currentID + "_itemmodifiers"] && v[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf("ability checks") > -1) {
var mods = v[inventory + currentID + "_itemmodifiers"].toLowerCase().split(",");
_.each(mods, function(mod) {
if(mod.indexOf("ability checks") > -1) {
if(mod.indexOf("-") > -1) {
var new_mod = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
final_init = new_mod ? final_init - new_mod : final_init;
}
else {
var new_mod = !isNaN(parseInt(mod.replace(/[^0-9]/g, ""), 10)) ? parseInt(mod.replace(/[^0-9]/g, ""), 10) : false;
final_init = new_mod ? final_init + new_mod : final_init;
}
}
});
}
});
if(final_init % 1 != 0) {
final_init = parseFloat(final_init.toPrecision(12)); // ROUNDING ERROR BUGFIX
}
update["initiative_bonus"] = final_init;
setAttrs(update, {silent: true});
});
};
var update_class = function() {
getAttrs(["class","base_level","custom_class","cust_classname","cust_hitdietype","cust_powercasting_ability","cust_strength_save_prof","cust_dexterity_save_prof","cust_constitution_save_prof","cust_intelligence_save_prof","cust_wisdom_save_prof","cust_charisma_save_prof","strength_save_prof","dexterity_save_prof","constitution_save_prof","intelligence_save_prof","wisdom_save_prof","charisma_save_prof","subclass","multiclass1","multiclass1_subclass","multiclass2","multiclass2_subclass","multiclass3","multiclass3_subclass","npc"], function(v) {
if(v.npc && v.npc == "1") {
return;
}
if(v.custom_class && v.custom_class != "0") {
setAttrs({
hitdietype: v.cust_hitdietype,
powercasting_ability: v.cust_powercasting_ability,
strength_save_prof: v.cust_strength_save_prof,
dexterity_save_prof: v.cust_dexterity_save_prof,
constitution_save_prof: v.cust_constitution_save_prof,
intelligence_save_prof: v.cust_intelligence_save_prof,
wisdom_save_prof: v.cust_wisdom_save_prof,
charisma_save_prof: v.cust_charisma_save_prof
});
}
else {
update = {};
switch(v.class) {
case "":
update["hitdietype"] = 6;
update["powercasting_ability"] = "0*";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "";
break;
case "Berserker":
update["hitdietype"] = 12;
update["powercasting_ability"] = "0*";
update["strength_save_prof"] = "(@{pb})";
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = "(@{pb})";
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "Rage";
break;
case "Scholar":
update["hitdietype"] = 8;
update["powercasting_ability"] = "@{intelligence_mod}+";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = "(@{pb})";
update["wisdom_save_prof"] = "(@{pb})";
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "Superiority Dice";
break;
case "Engineer":
update["hitdietype"] = 8;
update["powercasting_ability"] = "@{intelligence_mod}+";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = "(@{pb})";
update["intelligence_save_prof"] = "(@{pb})";
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "Potent Aptitude";
break;
case "Fighter":
update["hitdietype"] = 10;
update["powercasting_ability"] = "0*";
update["strength_save_prof"] = "(@{pb})";
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = "(@{pb})";
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "Second Wind";
break;
case "Monk":
update["hitdietype"] = 8;
update["powercasting_ability"] = "0*";
update["strength_save_prof"] = "(@{pb})";
update["dexterity_save_prof"] = "(@{pb})";
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "Ki";
break;
case "Guardian":
update["hitdietype"] = 10;
update["powercasting_ability"] = "@{wisdom_mod}+";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = "(@{pb})";
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = "(@{pb})";
update["class_resource_name"] = "Channel The Force";
break;
case "Scout":
update["hitdietype"] = 10;
update["powercasting_ability"] = "@{intelligence_mod}+";
update["strength_save_prof"] = "(@{pb})";
update["dexterity_save_prof"] = "(@{pb})";
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "";
break;
case "Operative":
update["hitdietype"] = 8;
update["powercasting_ability"] = "0*";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = "(@{pb})";
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = "(@{pb})";
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = 0;
update["class_resource_name"] = "";
break;
case "Sentinel":
update["hitdietype"] = 8;
update["powercasting_ability"] = "@{wisdom_mod}+";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = "(@{pb})";
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = 0;
update["charisma_save_prof"] = "(@{pb})";
update["class_resource_name"] = "Force Points";
break;
case "Consular":
update["hitdietype"] = 6;
update["powercasting_ability"] = "@{wisdom_mod}+";
update["strength_save_prof"] = 0;
update["dexterity_save_prof"] = 0;
update["constitution_save_prof"] = 0;
update["intelligence_save_prof"] = 0;
update["wisdom_save_prof"] = "(@{pb})";
update["charisma_save_prof"] = "(@{pb})";
update["class_resource_name"] = "";
break;
}
setAttrs(update, {silent: true});
};
});
set_level();
};
var set_level = function() {
getAttrs(["base_level","multiclass1_flag","multiclass2_flag","multiclass3_flag","multiclass1_lvl","multiclass2_lvl","multiclass3_lvl","class","multiclass1","multiclass2","multiclass3", "tech_fighter", "tech_operative", "custom_class", "cust_powerslots", "cust_classname", "level_calculations", "class", "subclass", "multiclass1_subclass","multiclass2_subclass","multiclass3_subclass"], function(v) {
var update = {};
var callbacks = [];
var multiclass = (v.multiclass1_flag && v.multiclass1_flag === "1") || (v.multiclass2_flag && v.multiclass2_flag === "1") || (v.multiclass3_flag && v.multiclass3_flag === "1") ? true : false;
var finalclass = v["custom_class"] && v["custom_class"] != "0" ? v["cust_powerslots"] : v["class"];
var finallevel = (v.base_level && v.base_level > 0) ? parseInt(v.base_level,10) : 1;
var charclass = v.custom_class && v.custom_class != "0" ? v["cust_classname"] : v["class"];
var hitdie_final = multiclass ? "?{Hit Die Class|" + charclass + ",@{hitdietype}" : "@{hitdietype}";
var subclass = v.subclass ? v.subclass + " " : "";
var class_display = subclass + charclass + " " + finallevel;
// This nested array is used to determine the overall powercasting level for the character.
var classes = [ [finalclass.toLowerCase(), v["base_level"]] ];
if(v.multiclass1_flag && v.multiclass1_flag === "1") {
var multiclasslevel = (v["multiclass1_lvl"] && v["multiclass1_lvl"] > 0) ? parseInt(v["multiclass1_lvl"], 10) : 1;
finallevel = finallevel + multiclasslevel;
hitdie_final = hitdie_final + "|" + v["multiclass1"].charAt(0).toUpperCase() + v["multiclass1"].slice(1) + "," + checkHitDie(v["multiclass1"]);
classes.push([ v["multiclass1"], multiclasslevel ]);
var subclass = v.multiclass1_subclass ? v.multiclass1_subclass + " " : "";
class_display = class_display + ", " + subclass + v.multiclass1 + " " + multiclasslevel;
};
if(v.multiclass2_flag && v.multiclass2_flag === "1") {
var multiclasslevel = (v["multiclass2_lvl"] && v["multiclass2_lvl"] > 0) ? parseInt(v["multiclass2_lvl"], 10) : 1;
finallevel = finallevel + multiclasslevel;
hitdie_final = hitdie_final + "|" + v["multiclass2"].charAt(0).toUpperCase() + v["multiclass2"].slice(1) + "," + checkHitDie(v["multiclass2"]);
classes.push([ v["multiclass2"], multiclasslevel ]);
var subclass = v.multiclass2_subclass ? v.multiclass2_subclass + " " : "";
class_display = class_display + ", " + subclass + v.multiclass2 + " " + multiclasslevel;
};
if(v.multiclass3_flag && v.multiclass3_flag === "1") {
var multiclasslevel = (v["multiclass3_lvl"] && v["multiclass3_lvl"] > 0) ? parseInt(v["multiclass3_lvl"], 10) : 1;
finallevel = finallevel + multiclasslevel;
hitdie_final = hitdie_final + "|" + v["multiclass3"].charAt(0).toUpperCase() + v["multiclass3"].slice(1) + "," + checkHitDie(v["multiclass3"]);
classes.push([ v["multiclass3"], multiclasslevel ]);
var subclass = v.multiclass3_subclass ? v.multiclass3_subclass + " " : "";
class_display = class_display + ", " + subclass + v.multiclass3 + " " + multiclasslevel;
};
var casterlevel = checkCasterLevel(classes, v["tech_fighter"], v["tech_operative"]);
update["hitdie_final"] = multiclass ? hitdie_final + "}" : hitdie_final;
update["level"] = finallevel;
update["caster_level"] = casterlevel;
update["class_display"] = class_display;
if(!v["level_calculations"] || v["level_calculations"] == "on") {
update["hit_dice_max"] = finallevel;
callbacks.push( function() {update_power_slots();} );
}
callbacks.push( function() {update_pb();} );
setAttrs(update, {silent: true}, function() {callbacks.forEach(function(callback) {callback(); })} );
});
};
var isMultiCaster = function(classes, tech_fighter, tech_operative) {
var singlecaster = false;
var multicaster = false;
_.each(classes, function(multiclass) {
var caster = getCasterType(multiclass[0], multiclass[1], tech_fighter, tech_operative) > 0;
if(caster && singlecaster) {
multicaster = true;
} else if(caster) {
singlecaster = true;
}
});
return multicaster;
};
var getCasterType = function(class_string, levels, tech_fighter, tech_operative) {
var full = ["scholar","engineer","druid","sorcerer","consular","full"];
var half = ["guardian","scout","half"];
if(full.indexOf(class_string) != -1) {
return 1;
} else if(half.indexOf(class_string) != -1) {
return (levels == 1) ? 0 : (1/2);
} else if(class_string === "third" || (class_string === "fighter" && tech_fighter === "1") || (class_string === "operative" && tech_operative === "1")) {
return (levels == 1 || levels == 2) ? 0 : (1/3);
} else {
return 0;
}
};
var checkCasterLevel = function(classes, tech_fighter, tech_operative) {
console.log("CHECKING CASTER LEVEL");
var multicaster = isMultiCaster(classes, tech_fighter, tech_operative);
var totalcasterlevel = 0;
_.each(classes, function(multiclass) {
var casterlevel = parseInt(multiclass[1], 10) * getCasterType(multiclass[0], multiclass[1], tech_fighter, tech_operative);
// Characters with multiple powercasting classes round down the casting level for that class
// Character with a single powercasting class round up the casting level
totalcasterlevel = totalcasterlevel + (multicaster ? Math.floor(casterlevel) : Math.ceil(casterlevel));
});
return totalcasterlevel;
};
var checkHitDie = function(class_string) {
var d10class = ["fighter","guardian","scout"];
var d8class = ["scholar","engineer","druid","monk","operative","sentinel"];
var d6class = ["sorcerer","consular"];
if(class_string === "berserker") {return "12"}
else if (d10class.indexOf(class_string) != -1) {return "10"}
else if (d8class.indexOf(class_string) != -1) {return "8"}
else if (d6class.indexOf(class_string) != -1) {return "6"}
else {return "0"};
};
var update_power_slots = function() {
getAttrs(["lvl1_slots_mod","lvl2_slots_mod","lvl3_slots_mod","lvl4_slots_mod","lvl5_slots_mod","lvl6_slots_mod","lvl7_slots_mod","lvl8_slots_mod","lvl9_slots_mod","caster_level"], function(v) {
var update = {};
var lvl = v["caster_level"] && !isNaN(parseInt(v["caster_level"], 10)) ? parseInt(v["caster_level"], 10) : 0;
var l1 = v["lvl1_slots_mod"] && !isNaN(parseInt(v["lvl1_slots_mod"], 10)) ? parseInt(v["lvl1_slots_mod"], 10) : 0;
var l2 = v["lvl2_slots_mod"] && !isNaN(parseInt(v["lvl2_slots_mod"], 10)) ? parseInt(v["lvl2_slots_mod"], 10) : 0;
var l3 = v["lvl3_slots_mod"] && !isNaN(parseInt(v["lvl3_slots_mod"], 10)) ? parseInt(v["lvl3_slots_mod"], 10) : 0;
var l4 = v["lvl4_slots_mod"] && !isNaN(parseInt(v["lvl4_slots_mod"], 10)) ? parseInt(v["lvl4_slots_mod"], 10) : 0;
var l5 = v["lvl5_slots_mod"] && !isNaN(parseInt(v["lvl5_slots_mod"], 10)) ? parseInt(v["lvl5_slots_mod"], 10) : 0;
var l6 = v["lvl6_slots_mod"] && !isNaN(parseInt(v["lvl6_slots_mod"], 10)) ? parseInt(v["lvl6_slots_mod"], 10) : 0;
var l7 = v["lvl7_slots_mod"] && !isNaN(parseInt(v["lvl7_slots_mod"], 10)) ? parseInt(v["lvl7_slots_mod"], 10) : 0;
var l8 = v["lvl8_slots_mod"] && !isNaN(parseInt(v["lvl8_slots_mod"], 10)) ? parseInt(v["lvl8_slots_mod"], 10) : 0;
var l9 = v["lvl9_slots_mod"] && !isNaN(parseInt(v["lvl9_slots_mod"], 10)) ? parseInt(v["lvl9_slots_mod"], 10) : 0;
if(lvl > 0) {
l1 = l1 + Math.min((lvl + 1),4);
if(lvl < 3) {l2 = l2 + 0;} else if(lvl === 3) {l2 = l2 + 2;} else {l2 = l2 + 3;};
if(lvl < 5) {l3 = l3 + 0;} else if(lvl === 5) {l3 = l3 + 2;} else {l3 = l3 + 3;};
if(lvl < 7) {l4 = l4 + 0;} else if(lvl === 7) {l4 = l4 + 1;} else if(lvl === 8) {l4 = l4 + 2;} else {l4 = l4 + 3;};
if(lvl < 9) {l5 = l5 + 0;} else if(lvl === 9) {l5 = l5 + 1;} else if(lvl < 18) {l5 = l5 + 2;} else {l5 = l5 + 3;};
if(lvl < 11) {l6 = l6 + 0;} else if(lvl < 19) {l6 = l6 + 1;} else {l6 = l6 + 2;};
if(lvl < 13) {l7 = l7 + 0;} else if(lvl < 20) {l7 = l7 + 1;} else {l7 = l7 + 2;};
if(lvl < 15) {l8 = l8 + 0;} else {l8 = l8 + 1;};
if(lvl < 17) {l9 = l9 + 0;} else {l9 = l9 + 1;};
};
update["lvl1_slots_total"] = l1;
update["lvl2_slots_total"] = l2;
update["lvl3_slots_total"] = l3;
update["lvl4_slots_total"] = l4;
update["lvl5_slots_total"] = l5;
update["lvl6_slots_total"] = l6;
update["lvl7_slots_total"] = l7;
update["lvl8_slots_total"] = l8;
update["lvl9_slots_total"] = l9;
setAttrs(update, {silent: true});
});
};
var update_pb = function() {
callbacks = [];
getAttrs(["level","pb_type","pb_custom","npc"], function(v) {
if(v.npc !== "2") {
var update = {};
var pb = 2;
var lvl = parseInt(v["level"],10);
if(lvl < 5) {pb = "2"} else if(lvl < 9) {pb = "3"} else if(lvl < 13) {pb = "4"} else if(lvl < 17) {pb = "5"} else {pb = "6"}
var jack = Math.floor(pb/2);
if(v["pb_type"] === "die") {
update["jack"] = "d" + pb;
update["pb"] = "d" + pb*2;
update["pbd_safe"] = "cs0cf0";
}
else if(v["pb_type"] === "custom" && v["pb_custom"] && v["pb_custom"] != "") {
update["pb"] = v["pb_custom"]
update["jack"] = !isNaN(parseInt(v["pb_custom"],10)) ? Math.floor(parseInt(v["pb_custom"],10)/2) : jack;
update["pbd_safe"] = "";
}
else {
update["pb"] = pb;
update["jack"] = jack;
update["pbd_safe"] = "";
};
}
callbacks.push( function() {update_attacks("all");} );
callbacks.push( function() {update_power_info();} );
callbacks.push( function() {update_jack_attr();} );
callbacks.push( function() {update_initiative();} );
callbacks.push( function() {update_tool("all");} );
callbacks.push( function() {update_all_saves();} );
callbacks.push( function() {update_skills(["athletics", "acrobatics", "sleight_of_hand", "stealth", "technology", "lore", "investigation", "nature", "piloting", "animal_handling", "insight", "medicine", "perception", "survival","deception", "intimidation", "performance", "persuasion", "ship_boost", "ship_ram", "ship_hide", "ship_maneuvering", "ship_patch", "ship_regulation", "ship_astrogation", "ship_data", "ship_probe", "ship_scan", "ship_impress", "ship_interfere", "ship_menace", "ship_swindle"]);} );
setAttrs(update, {silent: true}, function() {callbacks.forEach(function(callback) {callback(); })} );
});
};
var update_jack_attr = function() {
var update = {};
getAttrs(["jack_of_all_trades","jack"], function(v) {
if(v["jack_of_all_trades"] && v["jack_of_all_trades"] != 0) {
update["jack_bonus"] = "+" + v["jack"];
update["jack_attr"] = "+" + v["jack"] + "@{pbd_safe}";
}
else {
update["jack_bonus"] = "";
update["jack_attr"] = "";
}
setAttrs(update, {silent: true});
});
};
var update_power_info = function(attr) {
var update = {};
getAttrs(["powercasting_ability","power_dc_mod","globalpowermod","strength_mod","dexterity_mod","constitution_mod","intelligence_mod","wisdom_mod","charisma_mod"], function(v) {
if(attr && v["powercasting_ability"] && v["powercasting_ability"].indexOf(attr) === -1) {
return
};
if(!v["powercasting_ability"] || (v["powercasting_ability"] && v["powercasting_ability"] === "0*")) {
update["power_attack_bonus"] = "0";
update["power_save_dc"] = "0";
var callback = function() {update_attacks("powers")};
setAttrs(update, {silent: true}, callback);
return
};
var attr = attr ? attr : "";
console.log("UPDATING POWER INFO: " + attr);
var ability = parseInt(v[v["powercasting_ability"].substring(2,v["powercasting_ability"].length-2)],10);
var power_mod = v["globalpowermod"] && !isNaN(parseInt(v["globalpowermod"], 10)) ? parseInt(v["globalpowermod"], 10) : 0;
var atk = v["globalpowermod"] && !isNaN(parseInt(v["globalpowermod"], 10)) ? ability + parseInt(v["globalpowermod"], 10) : ability;
var dc = v["power_dc_mod"] && !isNaN(parseInt(v["power_dc_mod"], 10)) ? 8 + ability + parseInt(v["power_dc_mod"], 10) : 8 + ability;
var itemfields = ["pb_type","pb"];
getSectionIDs("repeating_inventory", function(idarray) {
update_inventory_from_power_info_change("repeating_inventory_", idarray, power_mod, atk, dc, itemfields, update);
});
getSectionIDs("repeating_hiddeninventory", function(idarray) {
update_inventory_from_power_info_change("repeating_hiddeninventory_", idarray, power_mod, atk, dc, itemfields, update);
});
});
};
var update_inventory_from_power_info_change = function(inventory, idarray, power_mod, atk, dc, itemfields, update) {
_.each(idarray, function(currentID, i) {
itemfields.push(inventory + currentID + "_equipped");
itemfields.push(inventory + currentID + "_itemmodifiers");
});
getAttrs(itemfields, function(v) {
_.each(idarray, function(currentID) {
if((!v[inventory + currentID + "_equipped"] || v[inventory + currentID + "_equipped"] === "1") && v[inventory + currentID + "_itemmodifiers"] && v[inventory + currentID + "_itemmodifiers"].toLowerCase().indexOf("power" > -1)) {
var mods = v[inventory + currentID + "_itemmodifiers"].toLowerCase().split(",");
_.each(mods, function(mod) {
if(mod.indexOf("power attack") > -1) {
var substr = mod.slice(mod.lastIndexOf("power attack") + "power attack".length);
atk = substr && substr.length > 0 && !isNaN(parseInt(substr,10)) ? atk + parseInt(substr,10) : atk;
power_mod = substr && substr.length > 0 && !isNaN(parseInt(substr,10)) ? power_mod + parseInt(substr,10) : power_mod;
};
if(mod.indexOf("power dc") > -1) {
var substr = mod.slice(mod.lastIndexOf("power dc") + "power dc".length);
dc = substr && substr.length > 0 && !isNaN(parseInt(substr,10)) ? dc + parseInt(substr,10) : dc;
};
});
};
});
if(v["pb_type"] && v["pb_type"] === "die") {
atk = atk + "+" + v["pb"];
dc = dc + parseInt(v["pb"].substring(1), 10) / 2;
}
else {
atk = parseInt(atk, 10) + parseInt(v["pb"], 10);
dc = parseInt(dc, 10) + parseInt(v["pb"], 10);
};
update["power_attack_mod"] = power_mod;
update["power_attack_bonus"] = atk;
update["power_save_dc"] = dc;
var callback = function() {update_attacks("powers")};
setAttrs(update, {silent: true}, callback);
});
};
var update_passive_perception = function() {
getAttrs(["pb_type","passiveperceptionmod","perception_bonus"], function(v) {
var passive_perception = 10;
var mod = !isNaN(parseInt(v["passiveperceptionmod"],10)) ? parseInt(v["passiveperceptionmod"],10) : 0;
var bonus = !isNaN(parseInt(v["perception_bonus"],10)) ? parseInt(v["perception_bonus"],10) : 0;
if(v["pb_type"] && v["pb_type"] === "die" && v["perception_bonus"] && isNaN(v["perception_bonus"]) && v["perception_bonus"].indexOf("+") > -1) {
var pieces = v["perception_bonus"].split(/\+|d/);
var base = !isNaN(parseInt(pieces[0],10)) ? parseInt(pieces[0],10) : 0;
var num_dice = !isNaN(parseInt(pieces[1],10)) ? parseInt(pieces[1],10) : 1;
var half_pb_die = !isNaN(parseInt(pieces[2],10)) ? parseInt(pieces[2],10)/2 : 2;
bonus = base + (num_dice * half_pb_die);
}
passive_perception = passive_perception + bonus + mod;
setAttrs({passive_wisdom: passive_perception})
});
};
var update_race_display = function() {
getAttrs(["race", "subrace"], function(v) {
var final_race = "";
final_race = v.subrace ? v.subrace : v.race;
if(v.race.toLowerCase() === "dragonborn") { final_race = v.race; };
setAttrs({race_display: final_race});
});
};
var organize_section_proficiencies = function() {
getSectionIDs("proficiencies", function(ids) {
var attribs = ["_reporder_repeating_proficiencies"];
_.each(ids, function(id) {
attribs.push("repeating_proficiencies_" + id + "_prof_type");
attribs.push("repeating_proficiencies_" + id + "_name");
});
getAttrs(attribs, function(v) {
var final_array = _(ids).chain().sortBy(function(id) {
return v["repeating_proficiencies_" + id + "_name"];
}).sortBy(function(id) {
return v["repeating_proficiencies_" + id + "_prof_type"];
}).value();
_.each(final_array, function(id) {
});
if(final_array && final_array.length > 0) {
setSectionOrder("proficiencies", final_array);
};
});
});
};
var update_challenge = function() {
getAttrs(["npc_challenge"], function(v) {
var update = {};
var xp = 0;
var pb = 0;
switch(v.npc_challenge) {
case "0":
xp = "10";
pb = 2;
break;
case "1/8":
xp = "25";
pb = 2;
break;
case "1/4":
xp = "50";
pb = 2;
break;
case "1/2":
xp = "100";
pb = 2;
break;
case "1":
xp = "200";
pb = 2;
break;
case "2":
xp = "450";
pb = 2;
break;
case "3":
xp = "700";
pb = 2;
break;
case "4":
xp = "1100";
pb = 2;
break;
case "5":
xp = "1800";
pb = 3;
break;
case "6":
xp = "2300";
pb = 3;
break;
case "7":
xp = "2900";
pb = 3;
break;
case "8":
xp = "3900";
pb = 3;
break;
case "9":
xp = "5000";
pb = 4;
break;
case "10":
xp = "5900";
pb = 4;
break;
case "11":
xp = "7200";
pb = 4;
break;
case "12":
xp = "8400";
pb = 4;
break;
case "13":
xp = "10000";
pb = 5;
break;
case "14":
xp = "11500";
pb = 5;
break;
case "15":
xp = "13000";
pb = 5;
break;
case "16":
xp = "15000";
pb = 5;
break;
case "17":
xp = "18000";
pb = 6;
break;
case "18":
xp = "20000";
pb = 6;
break;
case "19":
xp = "22000";
pb = 6;
break;
case "20":
xp = "25000";
pb = 6;
break;
case "21":
xp = "33000";
pb = 7;
break;
case "22":
xp = "41000";
pb = 7;
break;
case "23":
xp = "50000";
pb = 7;
break;
case "24":
xp = "62000";
pb = 7;
break;
case "25":
xp = "75000";
pb = 8;
break;
case "26":
xp = "90000";
pb = 8;
break;
case "27":
xp = "105000";
pb = 8;
break;
case "28":
xp = "120000";
pb = 8;
break;
case "29":
xp = "";
pb = 9;
break;
case "30":
xp = "155000";
pb = 9;
break;
}
update["npc_xp"] = xp;
update["pb_custom"] = pb;
update["pb_type"] = "custom";
setAttrs(update, {silent: true}, function() {update_pb()});
});
};
var update_npc_saves = function() {
getAttrs(["npc_str_save_base","npc_dex_save_base","npc_con_save_base","npc_int_save_base","npc_wis_save_base","npc_cha_save_base"], function(v) {
var update = {};
var last_save = 0; var cha_save_flag = 0; var cha_save = ""; var wis_save_flag = 0; var wis_save = ""; var int_save_flag = 0; var int_save = ""; var con_save_flag = 0; var con_save = ""; var dex_save_flag = 0; var dex_save = ""; var str_save_flag = 0; var str_save = "";
// 1 = Positive, 2 = Last, 3 = Negative, 4 = Last Negative
if(v.npc_cha_save_base && v.npc_cha_save_base != "@{charisma_mod}") {cha_save = parseInt(v.npc_cha_save_base, 10); if(last_save === 0) {last_save = 1; cha_save_flag = cha_save < 0 ? 4 : 2;} else {cha_save_flag = cha_save < 0 ? 3 : 1;} } else {cha_save_flag = 0; cha_save = "";};
if(v.npc_wis_save_base && v.npc_wis_save_base != "@{wisdom_mod}") {wis_save = parseInt(v.npc_wis_save_base, 10); if(last_save === 0) {last_save = 1; wis_save_flag = wis_save < 0 ? 4 : 2;} else {wis_save_flag = wis_save < 0 ? 3 : 1;} } else {wis_save_flag = 0; wis_save = "";};
if(v.npc_int_save_base && v.npc_int_save_base != "@{intelligence_mod}") {int_save = parseInt(v.npc_int_save_base, 10); if(last_save === 0) {last_save = 1; int_save_flag = int_save < 0 ? 4 : 2;} else {int_save_flag = int_save < 0 ? 3 : 1;} } else {int_save_flag = 0; int_save = "";};
if(v.npc_con_save_base && v.npc_con_save_base != "@{constitution_mod}") {con_save = parseInt(v.npc_con_save_base, 10); if(last_save === 0) {last_save = 1; con_save_flag = con_save < 0 ? 4 : 2;} else {con_save_flag = con_save < 0 ? 3 : 1;} } else {con_save_flag = 0; con_save = "";};
if(v.npc_dex_save_base && v.npc_dex_save_base != "@{dexterity_mod}") {dex_save = parseInt(v.npc_dex_save_base, 10); if(last_save === 0) {last_save = 1; dex_save_flag = dex_save < 0 ? 4 : 2;} else {dex_save_flag = dex_save < 0 ? 3 : 1;} } else {dex_save_flag = 0; dex_save = "";};
if(v.npc_str_save_base && v.npc_str_save_base != "@{strength_mod}") {str_save = parseInt(v.npc_str_save_base, 10); if(last_save === 0) {last_save = 1; str_save_flag = str_save < 0 ? 4 : 2;} else {str_save_flag = str_save < 0 ? 3 : 1;} } else {str_save_flag = 0; str_save = "";};
update["npc_saving_flag"] = "" + cha_save + wis_save + int_save + con_save + dex_save + str_save;
update["npc_str_save"] = str_save;
update["npc_str_save_flag"] = str_save_flag;
update["npc_dex_save"] = dex_save;
update["npc_dex_save_flag"] = dex_save_flag;
update["npc_con_save"] = con_save;
update["npc_con_save_flag"] = con_save_flag;
update["npc_int_save"] = int_save;
update["npc_int_save_flag"] = int_save_flag;
update["npc_wis_save"] = wis_save;
update["npc_wis_save_flag"] = wis_save_flag;
update["npc_cha_save"] = cha_save;
update["npc_cha_save_flag"] = cha_save_flag;
setAttrs(update, {silent: true});
});
};
var update_npc_skills = function() {
getAttrs(["npc_acrobatics_base","npc_animal_handling_base","npc_technology_base","npc_athletics_base","npc_deception_base","npc_lore_base","npc_insight_base","npc_intimidation_base","npc_investigation_base","npc_medicine_base","npc_nature_base","npc_perception_base","npc_performance_base","npc_persuasion_base","npc_piloting_base","npc_sleight_of_hand_base","npc_stealth_base","npc_survival_base"], function(v) {
var update = {};
var last_skill = 0;
var survival_flag = 0; var survival = ""; var stealth_flag = 0; var stealth = ""; var sleight_of_hand_flag = 0; var sleight_of_hand = ""; var piloting_flag = 0; var piloting = ""; var persuasion_flag = 0; var persuasion = ""; var performance_flag = 0; var sperformance = ""; var perception_flag = 0; var perception = ""; var perception_flag = 0; var perception = ""; var nature_flag = 0; var nature = ""; var medicine_flag = 0; var medicine = ""; var investigation_flag = 0; var investigation = ""; var intimidation_flag = 0; var intimidation = ""; var insight_flag = 0; var insight = ""; var lore_flag = 0; var lore = ""; var deception_flag = 0; var deception = ""; var athletics_flag = 0; var athletics = ""; var technology_flag = 0; var technology = ""; var animal_handling_flag = 0; var animal_handling = ""; var acrobatics_flag = 0; var acrobatics = "";
// 1 = Positive, 2 = Last, 3 = Negative, 4 = Last Negative
if(v.npc_survival_base && v.npc_survival_base != "@{wisdom_mod}") {survival = parseInt(v.npc_survival_base, 10); if(last_skill === 0) {last_skill = 1; survival_flag = survival < 0 ? 4 : 2;} else {survival_flag = survival < 0 ? 3 : 1;} } else {survival_flag = 0; survival = "";};
if(v.npc_stealth_base && v.npc_stealth_base != "@{dexterity_mod}") {stealth = parseInt(v.npc_stealth_base, 10); if(last_skill === 0) {last_skill = 1; stealth_flag = stealth < 0 ? 4 : 2;} else {stealth_flag = stealth < 0 ? 3 : 1;} } else {stealth_flag = 0; stealth = "";};
if(v.npc_sleight_of_hand_base && v.npc_sleight_of_hand_base != "@{dexterity_mod}") {sleight_of_hand = parseInt(v.npc_sleight_of_hand_base, 10); if(last_skill === 0) {last_skill = 1; sleight_of_hand_flag = sleight_of_hand < 0 ? 4 : 2;} else {sleight_of_hand_flag = sleight_of_hand < 0 ? 3 : 1;} } else {sleight_of_hand_flag = 0; sleight_of_hand = "";};
if(v.npc_piloting_base && v.npc_piloting_base != "@{intelligence_mod}") {piloting = parseInt(v.npc_piloting_base, 10); if(last_skill === 0) {last_skill = 1; piloting_flag = piloting < 0 ? 4 : 2;} else {piloting_flag = piloting < 0 ? 3 : 1;} } else {piloting_flag = 0; piloting = "";};
if(v.npc_persuasion_base && v.npc_persuasion_base != "@{charisma_mod}") {persuasion = parseInt(v.npc_persuasion_base, 10); if(last_skill === 0) {last_skill = 1; persuasion_flag = persuasion < 0 ? 4 : 2;} else {persuasion_flag = persuasion < 0 ? 3 : 1;} } else {persuasion_flag = 0; persuasion = "";};
if(v.npc_performance_base && v.npc_performance_base != "@{charisma_mod}") {sperformance = parseInt(v.npc_performance_base, 10); if(last_skill === 0) {last_skill = 1; performance_flag = sperformance < 0 ? 4 : 2;} else {performance_flag = sperformance < 0 ? 3 : 1;} } else {performance_flag = 0; sperformance = "";};
if(v.npc_perception_base && v.npc_perception_base != "@{wisdom_mod}") {perception = parseInt(v.npc_perception_base, 10); if(last_skill === 0) {last_skill = 1; perception_flag = perception < 0 ? 4 : 2;} else {perception_flag = perception < 0 ? 3 : 1;} } else {perception_flag = 0; perception = "";};
if(v.npc_nature_base && v.npc_nature_base != "@{intelligence_mod}") {nature = parseInt(v.npc_nature_base, 10); if(last_skill === 0) {last_skill = 1; nature_flag = nature < 0 ? 4 : 2;} else {nature_flag = nature < 0 ? 3 : 1;} } else {nature_flag = 0; nature = "";};
if(v.npc_medicine_base && v.npc_medicine_base != "@{wisdom_mod}") {medicine = parseInt(v.npc_medicine_base, 10); if(last_skill === 0) {last_skill = 1; medicine_flag = medicine < 0 ? 4 : 2;} else {medicine_flag = medicine < 0 ? 3 : 1;} } else {medicine_flag = 0; medicine = "";};
if(v.npc_investigation_base && v.npc_investigation_base != "@{intelligence_mod}") {investigation = parseInt(v.npc_investigation_base, 10); if(last_skill === 0) {last_skill = 1; investigation_flag = investigation < 0 ? 4 : 2;} else {investigation_flag = investigation < 0 ? 3 : 1;} } else {investigation_flag = 0; investigation = "";};
if(v.npc_intimidation_base && v.npc_intimidation_base != "@{charisma_mod}") {intimidation = parseInt(v.npc_intimidation_base, 10); if(last_skill === 0) {last_skill = 1; intimidation_flag = intimidation < 0 ? 4 : 2;} else {intimidation_flag = intimidation < 0 ? 3 : 1;} } else {intimidation_flag = 0; intimidation = "";};
if(v.npc_insight_base && v.npc_insight_base != "@{wisdom_mod}") {insight = parseInt(v.npc_insight_base, 10); if(last_skill === 0) {last_skill = 1; insight_flag = insight < 0 ? 4 : 2;} else {insight_flag = insight < 0 ? 3 : 1;} } else {insight_flag = 0; insight = "";};
if(v.npc_lore_base && v.npc_lore_base != "@{intelligence_mod}") {lore = parseInt(v.npc_lore_base, 10); if(last_skill === 0) {last_skill = 1; lore_flag = lore < 0 ? 4 : 2;} else {lore_flag = lore < 0 ? 3 : 1;} } else {lore_flag = 0; lore = "";};
if(v.npc_deception_base && v.npc_deception_base != "@{charisma_mod}") {deception = parseInt(v.npc_deception_base, 10); if(last_skill === 0) {last_skill = 1; deception_flag = deception < 0 ? 4 : 2;} else {deception_flag = deception < 0 ? 3 : 1;} } else {deception_flag = 0; deception = "";};
if(v.npc_athletics_base && v.npc_athletics_base != "@{strength_mod}") {athletics = parseInt(v.npc_athletics_base, 10); if(last_skill === 0) {last_skill = 1; athletics_flag = athletics < 0 ? 4 : 2;} else {athletics_flag = athletics < 0 ? 3 : 1;} } else {athletics_flag = 0; athletics = "";};
if(v.npc_technology_base && v.npc_technology_base != "@{intelligence_mod}") {technology = parseInt(v.npc_technology_base, 10); if(last_skill === 0) {last_skill = 1; technology_flag = technology < 0 ? 4 : 2;} else {technology_flag = technology < 0 ? 3 : 1;} } else {technology_flag = 0; technology = "";};
if(v.npc_animal_handling_base && v.npc_animal_handling_base != "@{wisdom_mod}") {animal_handling = parseInt(v.npc_animal_handling_base, 10); if(last_skill === 0) {last_skill = 1; animal_handling_flag = animal_handling < 0 ? 4 : 2;} else {animal_handling_flag = animal_handling < 0 ? 3 : 1;} } else {animal_handling_flag = 0; animal_handling = "";};
if(v.npc_acrobatics_base && v.npc_acrobatics_base != "@{dexterity_mod}") {acrobatics = parseInt(v.npc_acrobatics_base, 10); if(last_skill === 0) {last_skill = 1; acrobatics_flag = acrobatics < 0 ? 4 : 2;} else {acrobatics_flag = acrobatics < 0 ? 3 : 1;} } else {acrobatics_flag = 0; acrobatics = "";};
update["npc_skills_flag"] = "" + acrobatics + animal_handling + technology + athletics + deception + lore + insight + intimidation + investigation + medicine + nature + perception + sperformance + persuasion + piloting + sleight_of_hand + stealth + survival;
update["npc_stealth_flag"] = stealth_flag;
update["npc_survival"] = survival;;
update["npc_acrobatics"] = acrobatics;
update["npc_acrobatics_flag"] = acrobatics_flag;
update["npc_animal_handling"] = animal_handling;
update["npc_animal_handling_flag"] = animal_handling_flag;
update["npc_technology"] = technology;
update["npc_technology_flag"] = technology_flag;
update["npc_athletics"] = athletics;
update["npc_athletics_flag"] = athletics_flag;
update["npc_deception"] = deception;
update["npc_deception_flag"] = deception_flag;
update["npc_lore"] = lore;
update["npc_lore_flag"] = lore_flag;
update["npc_insight"] = insight;
update["npc_insight_flag"] = insight_flag;
update["npc_intimidation"] = intimidation;
update["npc_intimidation_flag"] = intimidation_flag;
update["npc_investigation"] = investigation;
update["npc_investigation_flag"] = investigation_flag;
update["npc_medicine"] = medicine;
update["npc_medicine_flag"] = medicine_flag;
update["npc_nature"] = nature;
update["npc_nature_flag"] = nature_flag;
update["npc_perception"] = perception;
update["npc_perception_flag"] = perception_flag;
update["npc_performance"] = sperformance;
update["npc_performance_flag"] = performance_flag;
update["npc_persuasion"] = persuasion;
update["npc_persuasion_flag"] = persuasion_flag;
update["npc_piloting"] = piloting;
update["npc_piloting_flag"] = piloting_flag;
update["npc_sleight_of_hand"] = sleight_of_hand;
update["npc_sleight_of_hand_flag"] = sleight_of_hand_flag;
update["npc_stealth"] = stealth;
update["npc_stealth_flag"] = stealth_flag;
update["npc_survival"] = survival;
update["npc_survival_flag"] = survival_flag;
setAttrs(update, {silent: true});
});
};
var update_npc_action = function(update_id, legendary) {
if(update_id.substring(0,1) === "-" && update_id.length === 20) {
do_update_npc_action([update_id], legendary);
}
else if(update_id === "all") {
var legendary_array = [];
var actions_array = [];
getSectionIDs("repeating_npcaction-l", function(idarray) {
legendary_array = idarray;
if(legendary_array.length > 0) {
do_update_npc_action(legendary_array, true);
}
getSectionIDs("repeating_npcaction", function(idarray) {
actions_array = idarray.filter(function(i) {return legendary_array.indexOf(i) < 0;});
if(actions_array.length > 0) {
do_update_npc_action(actions_array, false);
};
});
});
};
};
var do_update_npc_action = function(action_array, legendary) {
var repvar = legendary ? "repeating_npcaction-l_" : "repeating_npcaction_";
var action_attribs = ["dtype"];
_.each(action_array, function(actionid) {
action_attribs.push(repvar + actionid + "_attack_flag");
action_attribs.push(repvar + actionid + "_attack_type");
action_attribs.push(repvar + actionid + "_attack_range");
action_attribs.push(repvar + actionid + "_attack_target");
action_attribs.push(repvar + actionid + "_attack_tohit");
action_attribs.push(repvar + actionid + "_attack_damage");
action_attribs.push(repvar + actionid + "_attack_damagetype");
action_attribs.push(repvar + actionid + "_attack_damage2");
action_attribs.push(repvar + actionid + "_attack_damagetype2");
});
getAttrs(action_attribs, function(v) {
_.each(action_array, function(actionid) {
console.log("UPDATING NPC ACTION: " + actionid);
var callbacks = [];
var update = {};
var onhit = "";
var damage_flag = "";
var range = "";
var attack_flag = v[repvar + actionid + "_attack_flag"] && v[repvar + actionid + "_attack_flag"] != "0" ? "{{attack=1}}" : "";
var tohit = v[repvar + actionid + "_attack_tohit"] && isNaN(parseInt(v[repvar + actionid + "_attack_tohit"], 10)) === false ? parseInt(v[repvar + actionid + "_attack_tohit"], 10) : 0;
if(v[repvar + actionid + "_attack_type"] && v[repvar + actionid + "_attack_range"]) {
if(v[repvar + actionid + "_attack_type"] === "Melee") {var rangetype = "Reach";} else {var rangetype = "Range";};
range = ", " + rangetype + " " + v[repvar + actionid + "_attack_range"];
}
var target = v[repvar + actionid + "_attack_target"] && v[repvar + actionid + "_attack_target"] != "" ? ", " + v[repvar + actionid + "_attack_target"] : ""
var attack_tohitrange = "+" + tohit + range + target;
var dmg1 = v[repvar + actionid + "_attack_damage"] && v[repvar + actionid + "_attack_damage"] != "" ? v[repvar + actionid + "_attack_damage"] : "";
var dmg1type = v[repvar + actionid + "_attack_damagetype"] && v[repvar + actionid + "_attack_damagetype"] != "" ? " " + v[repvar + actionid + "_attack_damagetype"] : "";
var dmg2 = v[repvar + actionid + "_attack_damage2"] && v[repvar + actionid + "_attack_damage2"] != "" ? v[repvar + actionid + "_attack_damage2"] : "";
var dmg2type = v[repvar + actionid + "_attack_damagetype2"] && v[repvar + actionid + "_attack_damagetype2"] != "" ? " " + v[repvar + actionid + "_attack_damagetype2"] : "";
var dmgspacer = dmg1 != "" && dmg2 != "" ? " plus " : "";
var parsed_dmg1 = parse_roll_string(dmg1);
var parsed_dmg2 = parse_roll_string(dmg2);
if(dmg1 != "") {
onhit = onhit + parsed_dmg1.avg + " (" + dmg1 + ")" + dmg1type + " damage";
};
dmgspacer = dmg1 != "" && dmg2 != "" ? " plus " : "";
onhit = onhit + dmgspacer;
if(dmg2 != "") {
onhit = onhit + parsed_dmg2.avg + " (" + dmg2 + ")" + dmg2type + " damage";
};
if(dmg1 != "" || dmg2 != "") {damage_flag = damage_flag + "{{damage=1}} "};
if(dmg1 != "") {damage_flag = damage_flag + "{{dmg1flag=1}} "};
if(dmg2 != "") {damage_flag = damage_flag + "{{dmg2flag=1}} "};
var crit1 = "";
if(parsed_dmg1.rolls.length > 0){
parsed_dmg1.rolls.forEach(function(value) {
crit1 += parsed_dmg1.array[value] + "+";
});
crit1 = crit1.substring(0, crit1.length - 1);
}
var crit2 = "";
if(parsed_dmg2.rolls.length > 0){
parsed_dmg2.rolls.forEach(function(value) {
crit2 += parsed_dmg2.array[value] + "+";
});
crit2 = crit2.substring(0, crit2.length - 1);
}
var rollbase = "";
if(v.dtype === "full") {
rollbase = "@{wtype}&{template:npcaction} " + attack_flag + " @{damage_flag} @{npc_name_flag} {{rname=@{name}}} {{r1=[[@{d20}+(@{attack_tohit}+0)]]}} @{rtype}+(@{attack_tohit}+0)]]}} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}} {{crit1=[[@{attack_crit}+0]]}} {{crit2=[[@{attack_crit2}+0]]}} {{description=@{show_desc}}} @{charname_output}";
}
else if(v[repvar + actionid + "_attack_flag"] && v[repvar + actionid + "_attack_flag"] != "0") {
if(legendary) {
rollbase = "@{wtype}&{template:npcatk} " + attack_flag + " @{damage_flag} @{npc_name_flag} {{rname=[@{name}](~repeating_npcaction-l_npc_dmg)}} {{rnamec=[@{name}](~repeating_npcaction-l_npc_crit)}} {{type=[Attack](~repeating_npcaction-l_npc_dmg)}} {{typec=[Attack](~repeating_npcaction-l_npc_crit)}} {{r1=[[@{d20}+(@{attack_tohit}+0)]]}} @{rtype}+(@{attack_tohit}+0)]]}} {{description=@{show_desc}}} @{charname_output}"
}
else {
rollbase = "@{wtype}&{template:npcatk} " + attack_flag + " @{damage_flag} @{npc_name_flag} {{rname=[@{name}](~repeating_npcaction_npc_dmg)}} {{rnamec=[@{name}](~repeating_npcaction_npc_crit)}} {{type=[Attack](~repeating_npcaction_npc_dmg)}} {{typec=[Attack](~repeating_npcaction_npc_crit)}} {{r1=[[@{d20}+(@{attack_tohit}+0)]]}} @{rtype}+(@{attack_tohit}+0)]]}} {{description=@{show_desc}}} @{charname_output}";
}
}
else if(dmg1 || dmg2) {
rollbase = "@{wtype}&{template:npcdmg} @{damage_flag} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}} {{crit1=[[@{attack_crit}+0]]}} {{crit2=[[@{attack_crit2}+0]]}} @{charname_output}"
}
else {
rollbase = "@{wtype}&{template:npcaction} @{npc_name_flag} {{rname=@{name}}} {{description=@{show_desc}}} @{charname_output}"
}
update[repvar + actionid + "_attack_tohitrange"] = attack_tohitrange;
update[repvar + actionid + "_attack_onhit"] = onhit;
update[repvar + actionid + "_damage_flag"] = damage_flag;
update[repvar + actionid + "_attack_crit"] = crit1;
update[repvar + actionid + "_attack_crit2"] = crit2;
update[repvar + actionid + "_rollbase"] = rollbase;
setAttrs(update, {silent: true});
});
});
};
var parse_roll_string = function(rollstring) {
var out = {array: [], avg: 0, rolls: []};
if(!rollstring || rollstring === "") {
return out;
}
var rs_regex_initial = /(\-?\d+(?:d\d+)?)/ig;
var rs_regex_repeating = /([\+\-])(\-?\d+(?:d\d+)?)/ig;
var rs_nospace = rollstring.replace(/\s/g, '');
var rs_initial = rs_regex_initial.exec(rs_nospace);
if(rs_initial) {
out.array.push(rs_initial[1]);
rs_regex_repeating.lastIndex = rs_regex_initial.lastIndex;
var rs_repeating;
while(rs_repeating = rs_regex_repeating.exec(rs_nospace)) {
out.array.push(rs_repeating[1], rs_repeating[2]);
}
}
var add = true;
var dice_regex = /(\d+)d(\d+)/i;
var dice;
out.array.forEach(function(value, index, array) {
if(value === "+") {
add = true;
} else if(value === "-") {
add = false;
} else if(dice = dice_regex.exec(value)){
// this value is a die roll
var dice_avg = Math.floor(+dice[1] * (+dice[2] / 2 + 0.5));
out.avg += add ? dice_avg : -dice_avg;
out.rolls.push(index);
} else {
// this value is a number
out.avg += add ? +value : -+value;
}
})
return out;
};
var get_class_level = function(class_name, callback) {
getAttrs(["class", "base_level", "multiclass1_flag", "multiclass1", "multiclass1_lvl", "multiclass2_flag", "multiclass2", "multiclass2_lvl", "multiclass3_flag", "multiclass3", "multiclass3_lvl"], function(attrs) {
var regex = new RegExp(class_name, "i");
if(regex.test(attrs["class"])) {
callback(attrs.base_level);
} else if(attrs.multiclass1_flag && attrs.multiclass1_flag !== "0" && regex.test(attrs.multiclass1)) {
callback(attrs.multiclass1_lvl);
} else if(attrs.multiclass2_flag && attrs.multiclass2_flag !== "0" && regex.test(attrs.multiclass2)) {
callback(attrs.multiclass2_lvl);
} else if(attrs.multiclass3_flag && attrs.multiclass3_flag !== "0" && regex.test(attrs.multiclass3)) {
callback(attrs.multiclass3_lvl);
} else {
callback("0");
}
});
};
var update_globaldamage = function(callback) {
getSectionIDs("damagemod", function(ids) {
if(ids) {
var fields = {};
var attr_name_list = [];
ids.forEach(function(id) {
fields[id] = {};
attr_name_list.push(`repeating_damagemod_${id}_global_damage_active_flag`, `repeating_damagemod_${id}_global_damage_rollstring`, `repeating_damagemod_${id}_global_damage_type`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_damagemod_(.+)_global_damage_(active_flag|rollstring|type)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if(r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {global_damage_mod_roll: "", global_damage_mod_crit: "", global_damage_mod_type: ""};
_.each(fields, function(element) {
if(element.active_flag != "0") {
if(element.rollstring && element.rollstring !== "") { update["global_damage_mod_roll"] += element.rollstring + "+"; }
if(element.type && element.type !== "") { update["global_damage_mod_type"] += element.type + "/"; }
}
});
update["global_damage_mod_roll"] = update["global_damage_mod_roll"].replace(/\+(?=$)/, '');
update["global_damage_mod_type"] = update["global_damage_mod_type"].replace(/\/(?=$)/, '');
// Remove any non-roll damage modifiers from the global damage modifier for the crit rolls
// Will also remove any labels attached to these non-roll damage modifiers
update["global_damage_mod_crit"] = update["global_damage_mod_roll"].replace(/(?:[+\-*\/%]|\*\*|^)\s*\d+(?:\[.*?])?(?!d\d+)/gi, '')
// If what was just replace removed the first damage modifier, remove any now precending plus signs
.replace(/(?:^\+)/i, '');
setAttrs(update, {silent:true}, function() {
update_attacks("all");
if(typeof callback == "function") callback();
});
});
}
});
};
var update_globalattack = function(callback) {
getSectionIDs("tohitmod", function(ids) {
if(ids) {
var fields = {};
var attr_name_list = [];
ids.forEach(function(id) {
fields[id] = {};
attr_name_list.push(`repeating_tohitmod_${id}_global_attack_active_flag`, `repeating_tohitmod_${id}_global_attack_rollstring`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_tohitmod_(.+)_global_attack_(active_flag|rollstring)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if(r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {global_attack_mod: ""};
_.each(fields, function(element) {
if(element.active_flag != "0") {
if(element.rollstring && element.rollstring !== "") { update["global_attack_mod"] += element.rollstring + "+"; }
}
});
if(update["global_attack_mod"] !== "") {
update["global_attack_mod"] = "[[" + update["global_attack_mod"].replace(/\+(?=$)/, '') + "]]";
}
setAttrs(update, {silent:true}, function() {
if(typeof callback == "function") callback();
});
});
}
});
};
var update_globalsaves = function(callback) {
getSectionIDs("savemod", function(ids) {
if(ids) {
var fields = {};
var attr_name_list = [];
ids.forEach(function(id) {
fields[id] = {};
attr_name_list.push(`repeating_savemod_${id}_global_save_active_flag`, `repeating_savemod_${id}_global_save_rollstring`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_savemod_(.+)_global_save_(active_flag|rollstring)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if(r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {global_save_mod: ""};
_.each(fields, function(element) {
if(element.active_flag != "0") {
if(element.rollstring && element.rollstring !== "") { update["global_save_mod"] += element.rollstring + "+"; }
}
});
if(update["global_save_mod"] !== "") {
update["global_save_mod"] = "[[" + update["global_save_mod"].replace(/\+(?=$)/, '') + "]]";
}
setAttrs(update, {silent:true}, function() {
if(typeof callback == "function") callback();
});
});
}
});
};
var update_globalskills = function(callback) {
getSectionIDs("skillmod", function(ids) {
if(ids) {
var fields = {};
var attr_name_list = [];
ids.forEach(function(id) {
fields[id] = {};
attr_name_list.push(`repeating_skillmod_${id}_global_skill_active_flag`, `repeating_skillmod_${id}_global_skill_rollstring`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_skillmod_(.+)_global_skill_(active_flag|rollstring)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if(r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {global_skill_mod: ""};
_.each(fields, function(element) {
if(element.active_flag != "0") {
if(element.rollstring && element.rollstring !== "") { update["global_skill_mod"] += element.rollstring + "+"; }
}
});
if(update["global_skill_mod"] !== "") {
update["global_skill_mod"] = "[[" + update["global_skill_mod"].replace(/\+(?=$)/, '') + "]]";
}
setAttrs(update, {silent:true}, function() {
if(typeof callback == "function") callback();
});
});
}
});
};
on("change:strength_base change:strength_bonus", function() {
update_attr("strength");
});
on("change:strength", function() {
update_mod("strength");
check_customac("Strength");
update_weight();
});
on("change:dexterity_base change:dexterity_bonus", function() {
update_attr("dexterity");
update_initiative();
});
on("change:dexterity", function() {
update_mod("dexterity");
check_customac("Dexterity");
});
on("change:constitution_base change:constitution_bonus", function() {
update_attr("constitution");
});
on("change:constitution", function() {
update_mod("constitution");
check_customac("Constitution");
});
on("change:intelligence_base change:intelligence_bonus", function() {
update_attr("intelligence");
});
on("change:intelligence", function() {
update_mod("intelligence");
check_customac("Intelligence");
});
on("change:wisdom_base change:wisdom_bonus", function() {
update_attr("wisdom");
});
on("change:wisdom", function() {
update_mod("wisdom");
check_customac("Wisdom");
});
on("change:charisma_base change:charisma_bonus", function() {
update_attr("charisma");
});
on("change:charisma", function() {
update_mod("charisma");
check_customac("Charisma");
});
on("change:strength_mod", function() {
update_save("strength");
update_skills(["athletics"]);
update_attacks("strength");
update_tool("strength");
update_power_info("strength");
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_boost", "ship_ram"]);
update_ship_dice();
}
else {
return;
}
});
});
on("change:dexterity_mod", function() {
update_save("dexterity");
update_skills(["acrobatics", "sleight_of_hand", "stealth", "ship_hide", "ship_maneuvering"]);
update_attacks("dexterity");
update_tool("dexterity");
update_power_info("dexterity");
update_ac();
update_initiative();
});
on("change:constitution_mod", function() {
update_save("constitution");
update_attacks("constitution");
update_tool("constitution");
update_power_info("constitution");
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_patch", "ship_regulation"]);
update_ship_suite_capacity();
update_ship_dice();
}
else {
return;
}
});
});
on("change:intelligence_mod", function() {
update_save("intelligence");
update_skills(["technology", "lore", "investigation", "nature", "piloting", "ship_astrogation", "ship_data", "ship_probe"]);
update_attacks("intelligence");
update_tool("intelligence");
update_power_info("intelligence");
});
on("change:wisdom_mod", function() {
update_save("wisdom");
update_skills(["animal_handling", "insight", "medicine", "perception", "survival", "ship_scan"]);
update_attacks("wisdom");
update_tool("wisdom");
update_power_info("wisdom");
});
on("change:charisma_mod", function() {
update_save("charisma");
update_skills(["deception", "intimidation", "performance", "persuasion", "ship_impress", "ship_interfere", "ship_menace", "ship_swindle"]);
update_attacks("charisma");
update_tool("charisma");
update_power_info("charisma");
});
on("change:strength_save_prof change:strength_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("strength");
});
on("change:dexterity_save_prof change:dexterity_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("dexterity");
});
on("change:constitution_save_prof change:constitution_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("constitution");
});
on("change:intelligence_save_prof change:intelligence_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("intelligence");
});
on("change:wisdom_save_prof change:wisdom_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("wisdom");
});
on("change:charisma_save_prof change:charisma_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("charisma");
});
on("change:globalsavemod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_all_saves();
});
on("change:death_save_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
update_save("death");
});
on("change:acrobatics_prof change:acrobatics_type change:acrobatics_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["acrobatics"]);
}
});
});
on("change:animal_handling_prof change:animal_handling_type change:animal_handling_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["animal_handling"]);
}
});
});
on("change:technology_prof change:technology_type change:technology_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["technology"]);
}
});
});
on("change:athletics_prof change:athletics_type change:athletics_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["athletics"]);
}
});
});
on("change:deception_prof change:deception_type change:deception_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["deception"]);
}
});
});
on("change:lore_prof change:lore_type change:lore_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["lore"]);
}
});
});
on("change:insight_prof change:insight_type change:insight_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["insight"]);
}
});
});
on("change:intimidation_prof change:intimidation_type change:intimidation_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["intimidation"]);
}
});
});
on("change:investigation_prof change:investigation_type change:investigation_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["investigation"]);
}
});
});
on("change:medicine_prof change:medicine_type change:medicine_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["medicine"]);
}
});
});
on("change:nature_prof change:nature_type change:nature_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["nature"]);
}
});
});
on("change:perception_prof change:perception_type change:perception_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["perception"]);
}
});
});
on("change:performance_prof change:performance_type change:performance_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["performance"]);
}
});
});
on("change:persuasion_prof change:persuasion_type change:persuasion_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["persuasion"]);
}
});
});
on("change:piloting_prof change:piloting_type change:piloting_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["piloting"]);
}
});
});
on("change:sleight_of_hand_prof change:sleight_of_hand_type change:sleight_of_hand_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["sleight_of_hand"]);
}
});
});
on("change:stealth_prof change:stealth_type change:stealth_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["stealth"]);
}
});
});
on("change:survival_prof change:survival_type change:survival_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_skills(["survival"]);
}
});
});
//Begin ship based skill proficency change CATCHERS
on("change:ship_boost_prof change:ship_boost_type change:ship_boost_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_boost"]);
}
else {
return;
}
});
});
on("change:ship_ram_prof change:ship_ram_type change:ship_ram_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_ram"]);
}
else {
return;
}
});
});
on("change:ship_maneuvering_prof change:ship_maneuvering_type change:ship_maneuvering_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_maneuvering"]);
}
else {
return;
}
});
});
on("change:ship_patch_prof change:ship_patch_type change:ship_patch_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_patch"]);
}
else {
return;
}
});
});
on("change:ship_hide_prof change:ship_hide_type change:ship_hide_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_hide"]);
}
else {
return;
}
});
});
on("change:ship_regulation_prof change:ship_regulation_type change:ship_regulation_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_regulation"]);
}
else {
return;
}
});
});
on("change:ship_astrogation_prof change:ship_astrogation_type change:ship_astrogation_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_astrogation"]);
}
else {
return;
}
});
});
on("change:ship_data_prof change:ship_data_type change:ship_data_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_data"]);
}
else {
return;
}
});
});
on("change:ship_probe_prof change:ship_probe_type change:ship_probe_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_probe"]);
}
else {
return;
}
});
});
on("change:ship_scan_prof change:ship_scan_type change:ship_scan_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_scan"]);
}
else {
return;
}
});
});
on("change:ship_impress_prof change:ship_impress_type change:ship_impress_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_impress"]);
}
else {
return;
}
});
});
on("change:ship_interfere_prof change:ship_interfere_type change:ship_interfere_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_interfere"]);
}
else {
return;
}
});
});
on("change:ship_menace_prof change:ship_menace_type change:ship_menace_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_menace"]);
}
else {
return;
}
});
});
on("change:ship_swindle_prof change:ship_swindle_type change:ship_swindle_flat", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_skills(["ship_swindle"]);
}
else {
return;
}
});
});
on("change:ship_reactor", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_pwr_die_recovery();
update_ship_capacity();
}
else {
return;
}
});
});
on("change:ship_pwr_coupling", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {return;};
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
update_pwr_die_capacity();
}
else {
return;
}
});
});
on("change:repeating_tool:toolname change:repeating_tool:toolbonus_base change:repeating_tool:toolattr_base change:repeating_tool:tool_mod", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {
return;
}
var tool_id = eventinfo.sourceAttribute.substring(15, 35);
update_tool(tool_id);
});
on("change:repeating_attack:atkname change:repeating_attack:atkflag change:repeating_attack:atkattr_base change:repeating_attack:atkmod change:repeating_attack:atkpower change:repeating_attack:atkprofflag change:repeating_attack:dmgflag change:repeating_attack:dmgbase change:repeating_attack:dmgattr change:repeating_attack:dmgmod change:repeating_attack:dmgtype change:repeating_attack:dmg2flag change:repeating_attack:dmg2base change:repeating_attack:dmg2attr change:repeating_attack:dmg2mod change:repeating_attack:dmg2type change:repeating_attack:saveflag change:repeating_attack:savedc change:repeating_attack:saveflat change:repeating_attack:dmgcustcrit change:repeating_attack:dmg2custcrit change:repeating_attack:ammo change:repeating_attack:saveattr change:repeating_attack:atkrange", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {
return;
}
var source = eventinfo.sourceAttribute.substr(38);
var attackid = eventinfo.sourceAttribute.substring(17, 37);
if(source == "atkattr_base" || source == "savedc") {
getAttrs(["repeating_attack_powerid", "repeating_attack_powerlevel"], function(v) {
set = {};
if(v.repeating_attack_powerid && v.repeating_attack_powerid != "" && v.repeating_attack_powerlevel && v.repeating_attack_powerlevel != "") {
var newVal = eventinfo.newValue == "power" ? "power" : _.last(eventinfo.newValue.split("_")[0].split("{"));
set["repeating_attack_atkattr_base"] = newVal == "power" ? "power" : "@{" + newVal + "_mod}";
set["repeating_attack_savedc"] = newVal == "power" ? "power" : "(@{" + newVal + "_mod}+8+@{pb})";
set["repeating_power-" + v.repeating_attack_powerlevel + "_" + v.repeating_attack_powerid + "_power_ability"] = newVal == "power" ? "power" : "@{" + newVal + "_mod}+";
}
setAttrs(set, function() {
update_attacks(attackid);
});
});
} else {
update_attacks(attackid);
}
});
on("change:repeating_damagemod remove:repeating_damagemod", function(eventinfo) {
update_globaldamage();
});
on("change:global_damage_mod_flag", function(eventinfo) {
if(eventinfo.newValue === "1") {
getSectionIDs("damagemod", function(ids) {
if(!ids || ids.length === 0) {
var update = {};
var rowid = generateRowID();
update[`repeating_damagemod_${rowid}_global_damage_active_flag`] = "1";
update[`repeating_damagemod_${rowid}_global_damage_rollstring`] = "1d6[SNEAK ATTACK]";
update[`repeating_damagemod_${rowid}_global_damage_type`] = "Sneak";
setAttrs(update);
}
});
}
});
on("change:exhaustion_toggle", function(eventinfo) {
if(eventinfo.newValue !== "0") {
getAttrs(["exhaustion_level"], function(attrs) {
if(!attrs.exhaustion_level || attrs.exhaustion_level === "") {
var update = {};
update.exhaustion_level = "0";
setAttrs(update);
}
});
}
});
on("change:exhaustion_level", function() {
var update = {
"exhaustion_1": "",
"exhaustion_2": "",
"exhaustion_3": "",
"exhaustion_4": "",
"exhaustion_5": "",
"exhaustion_6": ""
};
getAttrs(["exhaustion_level"], function(attrs) {
switch(attrs["exhaustion_level"]) {
case "6":
update["exhaustion_6"] = "• " + getTranslationByKey("exhaustion-6");
case "5":
update["exhaustion_5"] = "• " + getTranslationByKey("exhaustion-5");
case "4":
update["exhaustion_4"] = "• " + getTranslationByKey("exhaustion-4");
case "3":
update["exhaustion_3"] = "• " + getTranslationByKey("exhaustion-3");
case "2":
update["exhaustion_2"] = "• " + getTranslationByKey("exhaustion-2");
case "1":
update["exhaustion_1"] = "• " + getTranslationByKey("exhaustion-1");
break;
default:
update["exhaustion_1"] = "• " + getTranslationByKey("exhaustion-0");
break;
}
setAttrs(update, {silent: true});
});
});
on("change:race change:subrace", function(eventinfo) {
update_race_display();
});
on("change:repeating_inventory:hasattack", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_inventory_" + itemid + "_hasattack", "repeating_inventory_" + itemid + "_itemattackid"], function(v) {
var attackid = v["repeating_inventory_" + itemid + "_itemattackid"];
var hasattack = v["repeating_inventory_" + itemid + "_hasattack"];
if(attackid && attackid != "" && hasattack == 0) {
remove_attack(attackid);
}
else if(hasattack == 1) {
create_attack_from_item(itemid);
};
});
})
on("change:repeating_hiddeninventory:hasattack", function(eventinfo) {
if(eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_hiddeninventory_" + itemid + "_hasattack", "repeating_hiddeninventory_" + itemid + "_itemattackid"], function(v) {
var attackid = v["repeating_hiddeninventory_" + itemid + "_itemattackid"];
var hasattack = v["repeating_hiddeninventory_" + itemid + "_hasattack"];
if(attackid && attackid != "" && hasattack == 0) {
remove_attack(attackid);
}
else if(hasattack == 1) {
create_attack_from_item(itemid, {hidden: true});
};
});
})
on("change:repeating_hiddeninventory:itemname change:repeating_hiddeninventory:itemproperties change:repeating_hiddeninventory:itemmodifiers change:repeating_hiddeninventory:itemcount", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_hiddeninventory_" + itemid + "_itemattackid", "repeating_hiddeninventory_" + itemid + "_itemresourceid"], function(v) {
var attackid = v["repeating_hiddeninventory_" + itemid + "_itemattackid"];
var resourceid = v["repeating_hiddeninventory_" + itemid + "_itemresourceid"];
if(attackid) {
update_attack_from_item(itemid, attackid, {hidden: true});
}
if(resourceid) {
update_resource_from_item(itemid, resourceid, false, {hidden: true});
}
});
});
on("change:repeating_hiddeninventory:useasresource", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_hiddeninventory_" + itemid + "_useasresource", "repeating_hiddeninventory_" + itemid + "_itemresourceid"], function(v) {
var useasresource = v["repeating_hiddeninventory_" + itemid + "_useasresource"];
var resourceid = v["repeating_hiddeninventory_" + itemid + "_itemresourceid"];
if(useasresource == 1) {
create_resource_from_item(itemid, {hidden: true});
}
else {
remove_resource(resourceid);
};
});
});
on("change:repeating_inventory:itemname change:repeating_inventory:itemproperties change:repeating_inventory:itemmodifiers change:repeating_inventory:itemcount", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_inventory_" + itemid + "_itemattackid", "repeating_inventory_" + itemid + "_itemresourceid"], function(v) {
var attackid = v["repeating_inventory_" + itemid + "_itemattackid"];
var resourceid = v["repeating_inventory_" + itemid + "_itemresourceid"];
if(attackid) {
update_attack_from_item(itemid, attackid);
}
if(resourceid) {
update_resource_from_item(itemid, resourceid);
}
});
});
on("change:repeating_inventory:useasresource", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_inventory_" + itemid + "_useasresource", "repeating_inventory_" + itemid + "_itemresourceid"], function(v) {
var useasresource = v["repeating_inventory_" + itemid + "_useasresource"];
var resourceid = v["repeating_inventory_" + itemid + "_itemresourceid"];
if(useasresource == 1) {
create_resource_from_item(itemid);
}
else {
remove_resource(resourceid);
};
});
});
on("change:other_resource change:other_resource_name change:repeating_resource:resource_left change:repeating_resource:resource_left_name change:repeating_resource:resource_right change:repeating_resource:resource_right_name", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var resourceid = eventinfo.sourceAttribute;
if(eventinfo.sourceAttribute.indexOf("other") > -1) {
resourceid = "other_resource";
}
else if(eventinfo.sourceAttribute.substring(eventinfo.sourceAttribute.length - 5) == "_name") {
resourceid = eventinfo.sourceAttribute.substring(0, eventinfo.sourceAttribute.length - 5);
};
getAttrs([resourceid, resourceid + "_name", resourceid + "_itemid"], function(v) {
if(!v[resourceid + "_name"]) {
remove_resource(resourceid);
}
else if(v[resourceid + "_itemid"] && v[resourceid + "_itemid"] != ""){
update_item_from_resource(resourceid, v[resourceid + "_itemid"]);
};
});
});
on("change:repeating_inventory:itemweight change:repeating_inventory:itemcount change:cp change:sp change:ep change:gp change:pp change:encumberance_setting change:size change:carrying_capacity_mod change:repeating_hiddeninventory:itemweight change:repeating_hiddeninventory:itemcount", function() {
update_weight();
});
on("change:repeating_inventory:itemmodifiers change:repeating_inventory:equipped", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_inventory_" + itemid + "_itemmodifiers"], function(v) {
if(v["repeating_inventory_" + itemid + "_itemmodifiers"]) {
check_itemmodifiers(v["repeating_inventory_" + itemid + "_itemmodifiers"], eventinfo.previousValue);
};
});
});
on("change:repeating_hiddeninventory:itemmodifiers change:repeating_hiddeninventory:equipped", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs(["repeating_hiddeninventory_" + itemid + "_itemmodifiers"], function(v) {
if(v["repeating_hiddeninventory_" + itemid + "_itemmodifiers"]) {
check_itemmodifiers(v["repeating_hiddeninventory_" + itemid + "_itemmodifiers"], eventinfo.previousValue);
};
});
});
on("change:globalacmod change:custom_ac_flag change:custom_ac_base change:custom_ac_part1 change:custom_ac_part2", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ac();
});
on("change:repeating_power-cantrip:powername change:repeating_power-1:powername change:repeating_power-1:powerprepared change:repeating_power-2:powername change:repeating_power-2:powerprepared change:repeating_power-3:powername change:repeating_power-3:powerprepared change:repeating_power-4:powername change:repeating_power-4:powerprepared change:repeating_power-5:powername change:repeating_power-5:powerprepared change:repeating_power-6:powername change:repeating_power-6:powerprepared change:repeating_power-7:powername change:repeating_power-7:powerprepared change:repeating_power-8:powername change:repeating_power-8:powerprepared change:repeating_power-9:powername change:repeating_power-9:powerprepared change:repeating_power-cantrip:powerrange change:repeating_power-1:powerrange change:repeating_power-2:powerrange change:repeating_power-3:powerrange change:repeating_power-4:powerrange change:repeating_power-5:powerrange change:repeating_power-6:powerrange change:repeating_power-7:powerrange change:repeating_power-8:powerrange change:repeating_power-9:powerrange change:repeating_power-cantrip:powertarget change:repeating_power-1:powertarget change:repeating_power-2:powertarget change:repeating_power-3:powertarget change:repeating_power-4:powertarget change:repeating_power-5:powertarget change:repeating_power-6:powertarget change:repeating_power-7:powertarget change:repeating_power-8:powertarget change:repeating_power-9:powertarget change:repeating_power-cantrip:powerdamage change:repeating_power-1:powerdamage change:repeating_power-2:powerdamage change:repeating_power-3:powerdamage change:repeating_power-4:powerdamage change:repeating_power-5:powerdamage change:repeating_power-6:powerdamage change:repeating_power-7:powerdamage change:repeating_power-8:powerdamage change:repeating_power-9:powerdamage change:repeating_power-cantrip:powerdamagetype change:repeating_power-1:powerdamagetype change:repeating_power-2:powerdamagetype change:repeating_power-3:powerdamagetype change:repeating_power-4:powerdamagetype change:repeating_power-5:powerdamagetype change:repeating_power-6:powerdamagetype change:repeating_power-7:powerdamagetype change:repeating_power-8:powerdamagetype change:repeating_power-9:powerdamagetype change:repeating_power-cantrip:powerdamage2 change:repeating_power-1:powerdamage2 change:repeating_power-2:powerdamage2 change:repeating_power-3:powerdamage2 change:repeating_power-4:powerdamage2 change:repeating_power-5:powerdamage2 change:repeating_power-6:powerdamage2 change:repeating_power-7:powerdamage2 change:repeating_power-8:powerdamage2 change:repeating_power-9:powerdamage2 change:repeating_power-cantrip:powerdamagetype2 change:repeating_power-1:powerdamagetype2 change:repeating_power-2:powerdamagetype2 change:repeating_power-3:powerdamagetype2 change:repeating_power-4:powerdamagetype2 change:repeating_power-5:powerdamagetype2 change:repeating_power-6:powerdamagetype2 change:repeating_power-7:powerdamagetype2 change:repeating_power-8:powerdamagetype2 change:repeating_power-9:powerdamagetype2 change:repeating_power-cantrip:powerhealing change:repeating_power-1:powerhealing change:repeating_power-2:powerhealing change:repeating_power-3:powerhealing change:repeating_power-4:powerhealing change:repeating_power-5:powerhealing change:repeating_power-6:powerhealing change:repeating_power-7:powerhealing change:repeating_power-8:powerhealing change:repeating_power-9:powerhealing change:repeating_power-cantrip:powerdmgmod change:repeating_power-1:powerdmgmod change:repeating_power-2:powerdmgmod change:repeating_power-3:powerdmgmod change:repeating_power-4:powerdmgmod change:repeating_power-5:powerdmgmod change:repeating_power-6:powerdmgmod change:repeating_power-7:powerdmgmod change:repeating_power-8:powerdmgmod change:repeating_power-9:powerdmgmod change:repeating_power-cantrip:powersave change:repeating_power-1:powersave change:repeating_power-2:powersave change:repeating_power-3:powersave change:repeating_power-4:powersave change:repeating_power-5:powersave change:repeating_power-6:powersave change:repeating_power-7:powersave change:repeating_power-8:powersave change:repeating_power-9:powersave change:repeating_power-cantrip:powersavesuccess change:repeating_power-1:powersavesuccess change:repeating_power-2:powersavesuccess change:repeating_power-3:powersavesuccess change:repeating_power-4:powersavesuccess change:repeating_power-5:powersavesuccess change:repeating_power-6:powersavesuccess change:repeating_power-7:powersavesuccess change:repeating_power-8:powersavesuccess change:repeating_power-9:powersavesuccess change:repeating_power-cantrip:powerhldie change:repeating_power-1:powerhldie change:repeating_power-2:powerhldie change:repeating_power-3:powerhldie change:repeating_power-4:powerhldie change:repeating_power-5:powerhldie change:repeating_power-6:powerhldie change:repeating_power-7:powerhldie change:repeating_power-8:powerhldie change:repeating_power-9:powerhldie change:repeating_power-cantrip:powerhldietype change:repeating_power-1:powerhldietype change:repeating_power-2:powerhldietype change:repeating_power-3:powerhldietype change:repeating_power-4:powerhldietype change:repeating_power-5:powerhldietype change:repeating_power-6:powerhldietype change:repeating_power-7:powerhldietype change:repeating_power-8:powerhldietype change:repeating_power-9:powerhldietype change:repeating_power-cantrip:power_updateflag change:repeating_power-1:power_updateflag change:repeating_power-2:power_updateflag change:repeating_power-3:power_updateflag change:repeating_power-4:power_updateflag change:repeating_power-5:power_updateflag change:repeating_power-6:power_updateflag change:repeating_power-7:power_updateflag change:repeating_power-8:power_updateflag change:repeating_power-9:power_updateflag change:repeating_power-cantrip:powerattack change:repeating_power-1:powerattack change:repeating_power-2:powerattack change:repeating_power-3:powerattack change:repeating_power-4:powerattack change:repeating_power-5:powerattack change:repeating_power-6:powerattack change:repeating_power-7:powerattack change:repeating_power-8:powerattack change:repeating_power-9:powerattack change:repeating_power-cantrip:powerhlbonus change:repeating_power-1:powerhlbonus change:repeating_power-2:powerhlbonus change:repeating_power-3:powerhlbonus change:repeating_power-4:powerhlbonus change:repeating_power-5:powerhlbonus change:repeating_power-6:powerhlbonus change:repeating_power-7:powerhlbonus change:repeating_power-8:powerhlbonus change:repeating_power-9:powerhlbonus change:repeating_power-cantrip:includedesc change:repeating_power-1:includedesc change:repeating_power-2:includedesc change:repeating_power-3:includedesc change:repeating_power-4:includedesc change:repeating_power-5:includedesc change:repeating_power-6:includedesc change:repeating_power-7:includedesc change:repeating_power-8:includedesc change:repeating_power-9:includedesc change:repeating_power-cantrip:powerathigherlevels change:repeating_power-1:powerathigherlevels change:repeating_power-2:powerathigherlevels change:repeating_power-3:powerathigherlevels change:repeating_power-4:powerathigherlevels change:repeating_power-5:powerathigherlevels change:repeating_power-6:powerathigherlevels change:repeating_power-7:powerathigherlevels change:repeating_power-8:powerathigherlevels change:repeating_power-9:powerathigherlevels change:repeating_power-cantrip:powerdescription change:repeating_power-1:powerdescription change:repeating_power-2:powerdescription change:repeating_power-3:powerdescription change:repeating_power-4:powerdescription change:repeating_power-5:powerdescription change:repeating_power-6:powerdescription change:repeating_power-7:powerdescription change:repeating_power-8:powerdescription change:repeating_power-9:powerdescription change:repeating_power-cantrip:innate change:repeating_power-1:innate change:repeating_power-2:innate change:repeating_power-3:innate change:repeating_power-4:innate change:repeating_power-5:innate change:repeating_power-6:innate change:repeating_power-7:innate change:repeating_power-8:innate change:repeating_power-9:innate change:repeating_power-cantrip:power_ability change:repeating_power-1:power_ability change:repeating_power-2:power_ability change:repeating_power-3:power_ability change:repeating_power-4:power_ability change:repeating_power-5:power_ability change:repeating_power-6:power_ability change:repeating_power-7:power_ability change:repeating_power-8:power_ability change:repeating_power-9:power_ability", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var regex_result = /^(repeating_power-(?:cantrip|\d)_[^_]+)_.+$/.exec(eventinfo.sourceAttribute);
if(regex_result) {
var repeating_source = regex_result[1];
getAttrs([repeating_source + "_powerattackid", repeating_source + "_powerlevel"], function(v) {
var powerid = repeating_source.slice(-20);
var attackid = v[repeating_source + "_powerattackid"];
var lvl = v[repeating_source + "_powerlevel"];
if(attackid && lvl && powerid) {
update_attack_from_power(lvl, powerid, attackid)
}
});
}
});
on("change:repeating_power-cantrip:poweroutput change:repeating_power-1:poweroutput change:repeating_power-2:poweroutput change:repeating_power-3:poweroutput change:repeating_power-4:poweroutput change:repeating_power-5:poweroutput change:repeating_power-6:poweroutput change:repeating_power-7:poweroutput change:repeating_power-8:poweroutput change:repeating_power-9:poweroutput", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var repeating_source = eventinfo.sourceAttribute.substring(0, eventinfo.sourceAttribute.lastIndexOf('_'));
getAttrs([repeating_source + "_powerattackid", repeating_source + "_powerlevel", repeating_source + "_poweroutput", repeating_source + "_powerattackid", repeating_source + "_powerathigherlevels","character_id"], function(v) {
var update = {};
var poweroutput = v[repeating_source + "_poweroutput"];
var powerid = repeating_source.slice(-20);
var attackid = v[repeating_source + "_powerattackid"];
var lvl = v[repeating_source + "_powerlevel"];
if(poweroutput && poweroutput === "ATTACK") {
create_attack_from_power(lvl, powerid, v["character_id"]);
}
else if(poweroutput && poweroutput === "POWERCARD" && attackid && attackid != "") {
remove_attack(attackid);
var powerlevel = "@{powerlevel}";
if(v[repeating_source + "_powerathigherlevels"]) {
var lvl = parseInt(v[repeating_source + "_powerlevel"],10);
powerlevel = "?{Cast at what level?";
for(i = 0; i < 10-lvl; i++) {
powerlevel = powerlevel + "|Level " + (parseInt(i, 10) + parseInt(lvl, 10)) + "," + (parseInt(i, 10) + parseInt(lvl, 10));
}
powerlevel = powerlevel + "}";
}
update[repeating_source + "_rollcontent"] = "@{wtype}&{template:power} {{level=@{powerschool} " + powerlevel + "}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}";
}
setAttrs(update, {silent: true});
});
});
on("change:repeating_power-cantrip:powerathigherlevels change:repeating_power-1:powerathigherlevels change:repeating_power-2:powerathigherlevels change:repeating_power-3:powerathigherlevels change:repeating_power-4:powerathigherlevels change:repeating_power-5:powerathigherlevels change:repeating_power-6:powerathigherlevels change:repeating_power-7:powerathigherlevels change:repeating_power-8:powerathigherlevels change:repeating_power-9:powerathigherlevels", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
var repeating_source = eventinfo.sourceAttribute.substring(0, eventinfo.sourceAttribute.lastIndexOf('_'));
getAttrs([repeating_source + "_powerlevel", repeating_source + "_poweroutput", repeating_source + "_powerathigherlevels"], function(v) {
var update = {};
var poweroutput = v[repeating_source + "_poweroutput"];
var lvl = v[repeating_source + "_powerlevel"];
if(poweroutput && poweroutput === "POWERCARD") {
var powerlevel = "@{powerlevel}";
if(v[repeating_source + "_powerathigherlevels"]) {
var lvl = parseInt(v[repeating_source + "_powerlevel"],10);
powerlevel = "?{Cast at what level?";
for(i = 0; i < 10-lvl; i++) {
powerlevel = powerlevel + "|Level " + (parseInt(i, 10) + parseInt(lvl, 10)) + "," + (parseInt(i, 10) + parseInt(lvl, 10));
}
powerlevel = powerlevel + "}";
}
update[repeating_source + "_rollcontent"] = "@{wtype}&{template:power} {{level=@{powerschool} " + powerlevel + "}} {{name=@{powername}}} {{castingtime=@{powercastingtime}}} {{range=@{powerrange}}} {{target=@{powertarget}}} {{duration=@{powerduration}}} {{description=@{powerdescription}}} {{athigherlevels=@{powerathigherlevels}}} {{innate=@{innate}}} @{powerconcentration} @{charname_output}";
}
setAttrs(update, {silent: true});
});
});
on("change:class change:custom_class change:cust_classname change:cust_hitdietype change:cust_powercasting_ability change:cust_powerslots change:cust_strength_save_prof change:cust_dexterity_save_prof change:cust_constitution_save_prof change:cust_intelligence_save_prof change:cust_wisdom_save_prof change:cust_charisma_save_prof change:subclass change:multiclass1 change:multiclass1_subclass change:multiclass2 change:multiclass2_subclass change:multiclass3 change:multiclass3_subclass" , function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
getAttrs(["npc"], function(v) {
if(v.npc === "2") {
return;
}
else {
update_class();
}
});
});
on("change:base_level change:multiclass1_flag change:multiclass1 change:multiclass1_lvl change:multiclass2_flag change:multiclass2 change:multiclass2_lvl change:multiclass3_flag change:multiclass3 change:multiclass3_lvl change:tech_fighter change:tech_operative", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
set_level();
});
on("change:level_calculations change:caster_level change:lvl1_slots_mod change:lvl2_slots_mod change:lvl3_slots_mod change:lvl4_slots_mod change:lvl5_slots_mod change:lvl6_slots_mod change:lvl7_slots_mod change:lvl8_slots_mod change:lvl9_slots_mod", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
getAttrs(["level_calculations"], function(v) {
if(!v["level_calculations"] || v["level_calculations"] == "on") {
update_power_slots();
};
});
});
on("change:caster_level", function(eventinfo) {
getAttrs(["caster_level","npc"], function(v) {
var casterlvl = v["caster_level"] && !isNaN(parseInt(v["caster_level"], 10)) ? parseInt(v["caster_level"], 10) : 0;
if(v["npc"] && v["npc"] == 1 && casterlvl > 0) {
setAttrs({level: casterlvl})
};
});
});
on("change:pb", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
getAttrs(["npc"], function(v) {
if(v.npc === "2"){
update_pb();
}
});
});
on("change:pb_type change:pb_custom", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
getAttrs(["npc"], function(v) {
if(v.npc !== "2"){
update_pb();
}
});
});
on("change:dtype", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_attacks("all");
update_npc_action("all");
});
on("change:jack_of_all_trades", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_jack_attr();
update_all_ability_checks();
});
on("change:initmod change:init_tiebreaker", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_initiative();
});
on("change:powercasting_ability change:power_dc_mod change:globalpowermod", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_power_info();
});
on("change:npc_challenge", function() {
update_challenge();
});
on("change:npc_str_save_base change:npc_dex_save_base change:npc_con_save_base change:npc_int_save_base change:npc_wis_save_base change:npc_cha_save_base", function(eventinfo) {
update_npc_saves();
});
on("change:npc_acrobatics_base change:npc_animal_handling_base change:npc_technology_base change:npc_athletics_base change:npc_deception_base change:npc_lore_base change:npc_insight_base change:npc_intimidation_base change:npc_investigation_base change:npc_medicine_base change:npc_nature_base change:npc_perception_base change:npc_performance_base change:npc_persuasion_base change:npc_piloting_base change:npc_sleight_of_hand_base change:npc_stealth_base change:npc_survival_base", function(eventinfo) {
update_npc_skills();
});
on("change:repeating_npcaction:attack_flag change:repeating_npcaction:attack_type change:repeating_npcaction:attack_range change:repeating_npcaction:attack_target change:repeating_npcaction:attack_tohit change:repeating_npcaction:attack_damage change:repeating_npcaction:attack_damagetype change:repeating_npcaction:attack_damage2 change:repeating_npcaction:attack_damagetype2 change:repeating_npcaction-l:attack_flag change:repeating_npcaction-l:attack_type change:repeating_npcaction-l:attack_range change:repeating_npcaction-l:attack_target change:repeating_npcaction-l:attack_tohit change:repeating_npcaction-l:attack_damage change:repeating_npcaction-l:attack_damagetype change:repeating_npcaction-l:attack_damage2 change:repeating_npcaction-l:attack_damagetype2 change:repeating_npcaction:show_desc change:repeating_npcaction-l:show_desc change:repeating_npcaction:description change:repeating_npcaction-l:description", function(eventinfo) {
var actionid = eventinfo.sourceAttribute.substring(20, 40);
var legendary = eventinfo.sourceAttribute.indexOf("npcaction-l") > -1 ? true : false;
if(legendary) {
actionid = eventinfo.sourceAttribute.substring(22, 42);
}
update_npc_action(actionid, legendary);
});
on("change:core_die change:precognition_flag", function() {
getAttrs(["core_die","precognition_flag"], function(v) {
core = v.core_die && v.core_die != "" ? v.core_die : "1d20";
luck = v.precognition_flag && v.precognition_flag === "1" ? "ro<1" : "";
update = {};
update["d20"] = core + luck;
if(!v.core_die || v.core_die === "") {
update["core_die"] = "1d20";
}
setAttrs(update);
});
});
on("change:repeating_skillmod", function(eventinfo) {
update_globalskills();
});
on("change:global_skill_mod_flag", function(eventinfo) {
if(eventinfo.newValue === "1") {
getSectionIDs("skillmod", function(ids) {
if(!ids || ids.length === 0) {
var update = {};
var rowid = generateRowID();
update[`repeating_skillmod_${rowid}_global_skill_rollstring`] = "1d4[GUIDANCE]";
update[`repeating_skillmod_${rowid}_global_skill_active_flag`] = "1";
setAttrs(update);
}
});
}
});
on("change:repeating_savemod", function(eventinfo) {
update_globalsaves();
});
on("change:global_save_mod_flag", function(eventinfo) {
if(eventinfo.newValue === "1") {
getSectionIDs("savemod", function(ids) {
if(!ids || ids.length === 0) {
var update = {};
var rowid = generateRowID();
update[`repeating_savemod_${rowid}_global_save_rollstring`] = "1d4[BLESS]";
update[`repeating_savemod_${rowid}_global_save_active_flag`] = "1";
setAttrs(update);
}
});
}
});
on("change:repeating_tohitmod", function(eventinfo) {
update_globalattack();
});
on("change:global_attack_mod_flag", function(eventinfo) {
if(eventinfo.newValue === "1") {
getSectionIDs("tohitmod", function(ids) {
if(!ids || ids.length === 0) {
var update = {};
var rowid = generateRowID();
update[`repeating_tohitmod_${rowid}_global_attack_rollstring`] = "1d4[BLESS]";
update[`repeating_tohitmod_${rowid}_global_attack_active_flag`] = "1";
setAttrs(update);
}
});
}
});
on("change:passiveperceptionmod", function(eventinfo) {
update_passive_perception();
});
on("remove:repeating_inventory", function(eventinfo) {
var itemid = eventinfo.sourceAttribute.substring(20, 40);
var attackids = eventinfo.removedInfo && eventinfo.removedInfo["repeating_inventory_" + itemid + "_itemattackid"] ? eventinfo.removedInfo["repeating_inventory_" + itemid + "_itemattackid"] : undefined;
var resourceid = eventinfo.removedInfo && eventinfo.removedInfo["repeating_inventory_" + itemid + "_itemresourceid"] ? eventinfo.removedInfo["repeating_inventory_" + itemid + "_itemresourceid"] : undefined;
if(attackids) {
_.each(attackids.split(","), function(value) { remove_attack(value); });
}
if(resourceid) {
remove_resource(resourceid);
}
if(eventinfo.removedInfo && eventinfo.removedInfo["repeating_inventory_" + itemid + "_itemmodifiers"]) {
check_itemmodifiers(eventinfo.removedInfo["repeating_inventory_" + itemid + "_itemmodifiers"]);
}
update_weight();
});
on("remove:repeating_hiddeninventory", function(eventinfo) {
var itemid = eventinfo.sourceAttribute.substring(20, 40);
var attackids = eventinfo.removedInfo && eventinfo.removedInfo["repeating_hiddeninventory_" + itemid + "_itemattackid"] ? eventinfo.removedInfo["repeating_hiddeninventory_" + itemid + "_itemattackid"] : undefined;
var resourceid = eventinfo.removedInfo && eventinfo.removedInfo["repeating_hiddeninventory_" + itemid + "_itemresourceid"] ? eventinfo.removedInfo["repeating_hiddeninventory_" + itemid + "_itemresourceid"] : undefined;
if(attackids) {
_.each(attackids.split(","), function(value) { remove_attack(value); });
}
if(resourceid) {
remove_resource(resourceid);
}
if(eventinfo.removedInfo && eventinfo.removedInfo["repeating_hiddeninventory_" + itemid + "_itemmodifiers"]) {
check_itemmodifiers(eventinfo.removedInfo["repeating_hiddeninventory_" + itemid + "_itemmodifiers"]);
}
update_weight();
});
on("remove:repeating_attack", function(eventinfo) {
var attackid = eventinfo.sourceAttribute.substring(17, 37);
var itemid = eventinfo.removedInfo["repeating_attack_" + attackid + "_itemid"];
var powerid = eventinfo.removedInfo["repeating_attack_" + attackid + "_powerid"];
var powerlvl = eventinfo.removedInfo["repeating_attack_" + attackid + "_powerlevel"];
if(itemid) {
getAttrs(["repeating_inventory_" + itemid + "_hasattack"], function(v) {
if(v["repeating_inventory_" + itemid + "_hasattack"] && v["repeating_inventory_" + itemid + "_hasattack"] == 1) {
var update = {};
update["repeating_inventory_" + itemid + "_itemattackid"] = "";
update["repeating_inventory_" + itemid + "_hasattack"] = 0;
setAttrs(update, {silent: true});
}
});
getAttrs(["repeating_hiddeninventory_" + itemid + "_hasattack"], function(v) {
if(v["repeating_hiddeninventory_" + itemid + "_hasattack"] && v["repeating_hiddeninventory_" + itemid + "_hasattack"] == 1) {
var update = {};
update["repeating_hiddeninventory_" + itemid + "_itemattackid"] = "";
update["repeating_hiddeninventory_" + itemid + "_hasattack"] = 0;
setAttrs(update, {silent: true});
}
});
};
if(powerid && powerlvl) {
getAttrs(["repeating_power-" + powerlvl + "_" + powerid + "_poweroutput"], function(v) {
if(v["repeating_power-" + powerlvl + "_" + powerid + "_poweroutput"] && v["repeating_power-" + powerlvl + "_" + powerid + "_poweroutput"] == "ATTACK") {
var update = {};
update["repeating_power-" + powerlvl + "_" + powerid + "_powerattackid"] = "";
update["repeating_power-" + powerlvl + "_" + powerid + "_poweroutput"] = "POWERCARD";
setAttrs(update, {silent: true});
}
});
};
});
on("remove:repeating_resource", function(eventinfo) {
var resourceid = eventinfo.sourceAttribute.substring(19, 39);
var inventory = "repeating_inventory_";
var update = {};
var left_itemid = eventinfo.removedInfo["repeating_resource_" + resourceid + "_resource_left_itemid"];
getAttrs(["repeating_hiddeninventory_" + left_itemid + "_itemname"], function(x) {
if(x["repeating_hiddeninventory_" + left_itemid + "_itemname"]) {
inventory = "repeating_hiddeninventory_";
}
});
if(left_itemid) {
update[inventory + left_itemid + "_useasresource"] = 0;
update[inventory + left_itemid + "_itemresourceid"] = "";
}
inventory = "repeating_inventory_";
var right_itemid = eventinfo.removedInfo["repeating_resource_" + resourceid + "_resource_right_itemid"];
getAttrs(["repeating_hiddeninventory_" + right_itemid + "_itemname"], function(y) {
if(y["repeating_hiddeninventory_" + right_itemid + "_itemname"]) {
inventory = "repeating_hiddeninventory_";
}
});
if(right_itemid) {
update[inventory + right_itemid + "_useasresource"] = 0;
update[inventory + right_itemid + "_itemresourceid"] = "";
}
setAttrs(update, {silent: true});
});
on("remove:repeating_power-cantrip remove:repeating_power-1 remove:repeating_power-2 remove:repeating_power-3 remove:repeating_power-4 remove:repeating_power-5 remove:repeating_power-6 remove:repeating_power-7 remove:repeating_power-8 remove:repeating_power-9", function(eventinfo) {
var attackid = eventinfo.removedInfo[eventinfo.sourceAttribute + "_powerattackid"];
if(attackid) {
remove_attack(attackid);
}
});
on("change:ship_size", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ac();
update_ship_speeds();
update_ship_dice();
update_ship_capacity();
update_ship_suite_capacity();
update_ship_tier_cost();
});
on("change:base_ship_tier", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ship_dice();
update_ship_tier_cost();
});
on("change:pilot_skill", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ac();
});
on("change:system_dmg_lvl", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
switch(eventinfo.newValue) {
case "0":
setAttrs({system_dmg: "None"});
break;
case "1":
setAttrs({system_dmg: "Disadvantage on ability checks."});
break;
case "2":
setAttrs({system_dmg: "Flying speed halved and turning speed doubled."});
break;
case "3":
setAttrs({system_dmg: "Disadvantage on attack rolls and saving throws."});
break;
case "4":
setAttrs({system_dmg: "Hit point maximum, shield point maximum, and shield regeneration rate halved."});
break;
case "5":
setAttrs({system_dmg: "Ship becomes permanently \"used\"."});
break;
case "6":
setAttrs({system_dmg: "Ship suffers catastrophic power failure. All primary systems fail."});
break;
default:
setAttrs({system_dmg: "None"});
break;
}
});
on("change:ship_armor_active_flag change:ship_armor_ac_bonus", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ac();
});
on("change:ship_shield_active_flag change:ship_shield_capacity change:hp_max", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_shield_points();
});
on("change:ship_shield_active_flag change:ship_shield_regen_rate_coefficient change:ship_size", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_shield_regen();
});
on("change:ship_armor change:ship_size", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ac();
update_ship_dice();
});
on("change:ship_shield change:ship_size", function(eventinfo) {
if(eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ship_dice();
});
on("sheet:opened",(eventInfo) =>{
getAttrs(["version"], function(attrs) {
let version = attrs["version"];
update(version);
});
});
/* Update method, will call itself asynchronously to do upgrade of the sheet if needed
Logic is the following :
- Execute the
*/
let update = (fromVersion) => {
let newVersion
switch (fromVersion){
case "2.5":
case "3.0b":
case "3.0-beta":
//Upgrade from 2.5 to 3.0
setAttrs({version:"3.0"},false,update("3.0"))
return;
case "3.0":
default:
console.log("Sw5e sheet updated itself");
return;
}
}
on("clicked:adv_advantage", () =>{
setAttrs({"advantagetoggle":"{{query=1}} {{advantage=1}} {{r2=[[@{d20}"});
});
on("clicked:adv_normal", () =>{
setAttrs({"advantagetoggle":"{{query=1}} {{normal=1}} {{r2=[[0d20"});
});
on("clicked:adv_disadvantage", () =>{
setAttrs({"advantagetoggle":"{{query=1}} {{disadvantage=1}} {{r2=[[@{d20}"});
});
on("clicked:wtype_public", () =>{
setAttrs({"whispertoggle":""});
});
on("clicked:wtype_whisper", () =>{
setAttrs({"whispertoggle":"/w gm"});
});
on("clicked:tab_core", () => {
setAttrs({"tab":"core"});
});
on("clicked:tab_bio", () => {
setAttrs({"tab":"bio"});
});
on("clicked:tab_powers", () => {
setAttrs({"tab":"powers"});
});
on("clicked:tab_options", () => {
setAttrs({"tab":"options"});
});
on("clicked:ship_tab_options", () => {
setAttrs({"ship_tab":"ship-options"});
});
on("clicked:ship_tab_core", () => {
setAttrs({"ship_tab":"ship-core"});
});
on("clicked:ship_tab_mods", () => {
setAttrs({"ship_tab":"ship-mods"});
});
on("clicked:ship_tab_cargo", () => {
setAttrs({"ship_tab":"ship-cargo"});
});
on("clicked:ship_tab_suites", () => {
setAttrs({"ship_tab":"ship-suites"});
});
const pc_attrs = [
];
const pc_repeating = [
];
const npc_attrs = [
"npc_name","npc_type","npc_ac", "npc_actype", "hp_max", "npc_hpformula", "npc_speed",
"strength_base", "dexterity_base", "constitution_base", "intelligence_base", "wisdom_base", "charisma_base",
"npc_str_save_base", "npc_dex_save_base", "npc_con_save_base",
"npc_int_save_base", "npc_wis_save_base", "npc_cha_save_base",
"npc_str_save", "npc_dex_save", "npc_con_save", "npc_int_save",
"npc_wis_save", "npc_cha_save",
"npc_acrobatics_base", "npc_animal_handling_base", "npc_athletics_base", "npc_deception_base",
"npc_insight_base", "npc_intimidation_base", "npc_investigation_base", "npc_lore_base", "npc_medicine_base",
"npc_nature_base", "npc_perception_base", "npc_performance_base", "npc_persuasion_base", "npc_piloting_base",
"npc_sleight_of_hand_base", "npc_stealth_base", "npc_survival_base", "npc_technology_base",
"npc_acrobatics", "npc_animal_handling", "npc_athletics", "npc_deception", "npc_insight", "npc_intimidation",
"npc_investigation", "npc_lore", "npc_medicine", "npc_nature", "npc_perception", "npc_performance",
"npc_persuasion", "npc_piloting", "npc_sleight_of_hand", "npc_stealth", "npc_survival", "npc_technology",
"npc_vulnerabilities", "npc_resistances", "npc_immunities", "npc_condition_immunities", "npc_senses",
"npc_languages", "npc_challenge", "npc_xp", "token_size",
"npcpowercastingflag", "powercasting_ability", "globalpowermod", "caster_level", "power_dc_mod",
"npcreactionsflag", "npc_legendary_actions", "rtype", "wtype", "dtype", "npc_name_flag", "init_tiebreaker"
];
const npc_repeating = [
{
section_name:"repeating_npctrait",
attributes:["npc_options-flag","name","desc"]
},
{
section_name:"repeating_npcaction",
attributes:["npc_options-flag","name",
"attack_flag","attack_type","attack_range","attack_tohit","attack_target","damage_flag","attack_damage",
"attack_damagetype","attack_crit","attack_damage2","attack_damagetype2","attack_crit2","show_desc",
"description","attack_tohitrange","attack_onhit"
]
},
{
section_name:"repeating_npcreaction",
attributes:["npc_options-flag","name","desc"]
},
{
section_name:"repeating_legendary",
attributes:["npc_options-flag","name",
"attack_flag","attack_type","attack_range", "attack_tohit", "attack_target", "damage_flag", "attack_damage",
"attack_damagetype", "attack_crit", "attack_damage2", "attack_damagetype2", "attack_crit2", "show_desc",
"description", "attack_tohitrange", "attack_onhit" ]
}
];
const ship_attrs = [
];
const ship_repeating = [
];
/* CLEANING */
let clean_attributes = (attributesToClean, callback) => {
if(!attributesToClean?.length){
return callback();
}
let update = {}
for(let attribute of attributesToClean) {
update[attribute] = "";
}
setAttrs(update, false,callback);
}
/* Recursive method, will clean repeating section at index i, then will call this method for index i + 1 */
let clean_sections = (sectionsToClean,index,callback) =>{
if(index >= sectionsToClean.length){
return callback();
}
getSectionIDs(sectionsToClean[index].section_name, (sectionIds) => {
for(let id of sectionIds){
const toRemove = `${sectionsToClean[index].section_name}_${id}`;
removeRepeatingRow(toRemove);
}
clean_sections(sectionsToClean,index + 1,callback);
});
}
/* IMPORT */
let import_legacy = (importDto) =>{
let toUpdate = {};
toUpdate["character_name"] = importDto.name;
for (let attribute of importDto.attribs) {
if (!attribute) {
continue;
}
const name = attribute.name;
toUpdate[name] = attribute.current;
if (!!attribute.max) {
toUpdate[`${name}_max`] = attribute.max;
}
}
setAttrs(toUpdate, false, () => {
update(toUpdate["version"]);
});
}
let import_all = () => {
getAttrs(["json_value"], (jsonValueContainer) => {
const importDto = JSON.parse(jsonValueContainer["json_value"]);
if(typeof importDto.schema_version !== 'string'){
return import_legacy(importDto);
}
let toUpdate = {};
toUpdate["character_name"] = importDto.name;
for (let attribute of importDto.attribs) {
if (!attribute) {
continue;
}
const name = attribute.name;
toUpdate[name] = attribute.current;
if (!!attribute.max) {
toUpdate[`${name}_max`] = attribute.max;
}
}
for(let section of importDto.sections){
let ids = []
for(let row of section.rows){
let id = getUniqueRowId(ids);
ids.push(id);
for(let attribute in row){
toUpdate[`${section.section_name}_${id}_${attribute}`] = row[attribute];
}
}
}
setAttrs(toUpdate, false, () => {
update(toUpdate["version"]);
});
});
}
/* EXPORT */
let export_attributes = (attributesToExport,exportDto,callback) => {
//Get the values of the attributes
getAttrs(attributesToExport, (attributesValues) => {
for (let attributeName of attributesToExport) {
//Maximum Attributes handled already, should ignore
if (attributeName.endsWith("_max")) {
continue;
}
//Set name of export
if (attributeName === "character_name" && !export_value.name) {
exportDto.name = attributesValues[attributeName];
continue;
}
if (attributeName === "npc_name") {
exportDto.name = attributesValues[attributeName];
}
let exportedAttribute = {
name: attributeName,
current: attributesValues[attributeName],
max: attributesValues[`${attributeName}_max`] ? attributesValues[`${attributeName}_max`] : "",
id: ""
}
//Don't add empty ones
if(!exportedAttribute.current && !exportedAttribute.max){
continue;
}
exportDto.attribs.push(exportedAttribute);
}
callback();
});
}
let export_sections = (sectionsToExport,index,exportDto, callback) =>{
if(index >= sectionsToExport.length){
return callback();
}
//Get all row for section
getSectionIDs(sectionsToExport[index].section_name, (sectionIds) => {
//Build the list of attributes to retrieve
let attributesToRetrieve = [];
for(let id of sectionIds) {
for (let attr of sectionsToExport[index].attributes) {
attributesToRetrieve.push(`${sectionsToExport[index].section_name}_${id}_${attr}`)
}
}
getAttrs(attributesToRetrieve, (attributesValues) => {
//Initialize the section Export
let exportedSection = {
section_name : sectionsToExport[index].section_name,
rows:[]
};
//for each Id
for(let id of sectionIds){
//Calculate the prefix
const prefix = `${sectionsToExport[index].section_name}_${id}_`;
let exportedRow = {};
//Filter Attributes for only this row
let rowAttributes = Object.keys(attributesValues).filter( key => key.startsWith(prefix));
for(let attributeName of rowAttributes){
const value = attributesValues[attributeName];
//Ignore unset attributes
if(!!value || typeof value === "number"){} {
exportedRow[attributeName.replace(prefix, "")] = value;
}
}
exportedSection.rows.push(exportedRow);
}
exportDto.sections.push(exportedSection);
export_sections(sectionsToExport,index + 1,exportDto,callback);
});
});
}
/* NPC */
let clean_npc = (callback) => {
clean_sections(npc_repeating,0,() => {
clean_attributes(npc_attrs, () => {
console.log("NPC Sheet Cleaned");
callback();
});
});
}
let import_npc = () => {
//Import is quite easy, clean the npc sheet then do import.
clean_npc(() => {
import_all();
});
}
let export_npc = () => {
const exportDto = {
"schema_version": "Sheet-3.1",
"exportedBy": "Roll20 Sw5E Sheet",
"name": "",
"attribs": [],
"sections": []
};
export_attributes(npc_attrs,exportDto, () => {
export_sections(npc_repeating,0,exportDto,() => {
const export_string = JSON.stringify(exportDto, null, 3);
setAttrs({"json_value":export_string});
});
});
}
on("clicked:import-json", import_npc);
on("clicked:export-json", export_npc);
on("clicked:clean-npc", clean_npc);
</script>