Files
roll20-character-sheets/Talessya/Talessya.html
T
2022-11-27 20:23:20 +01:00

13875 lines
769 KiB
HTML

<div class="sheet-talessya">
<div class="sheet-form-group">
<label class="sheet-form-checkbox sheet_npc_options" title="@{npc}">
<input type="checkbox" name="attr_npc" value="1">
<span>PNJ</span>
</label>
</div>
<select name="attr_charname_output" title="@{charname_output}" style="display:none;">
<option value="{{charname=@{character_name}}}" selected>Activado</option>
<option value="charname=@{character_name}" selected="selected">Desactivado</option>
</select>
<div class="sheet-section-roll2">
<input type="hidden" name="attr_rtype" class="sheet-roll-toggle">
<div class="sheet-section-roll-advantage">
<label class="sheet-radio">
<input type="radio" name="attr_advantagetoggle" value="{{query=1}} {{advantage=1}} {{r2=[[@{d20}">
<span title="@{advantagetoggle}">Ventaja</span>
</label>
<label class="sheet-radio">
<input type="radio" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20" checked="checked">
<span title="@{advantagetoggle}">Normal</span>
</label>
<label class="sheet-radio">
<input type="radio" name="attr_advantagetoggle" value="{{query=1}} {{disadvantage=1}} {{r2=[[@{d20}">
<span title="@{advantagetoggle}">Desventaja</span>
</label>
</div>
<input type="hidden" name="attr_wtype" class="sheet-roll-toggle">
<div class="sheet-section-roll-whisper">
<label class="sheet-radio">
<input type="radio" name="attr_whispertoggle" value="" checked>
<span title="@{whispertoggle}">Pública</span>
</label>
<label class="sheet-radio">
<input type="radio" name="attr_whispertoggle" value="/w gm ">
<span title="@{whispertoggle}">Susurrar al DM</span>
</label>
</div>
</div>
<input class="monster_confirm_flag" type="hidden" name="attr_monster_confirm_flag">
<div class="licensecontainer compendium-drop-target monsters">
<input class="sheet-toggle-npc" name="attr_npc" type="hidden" value="0">
<input class="sheet-toggle-npc-spells" name="attr_npcspellcastingflag" type="checkbox" value="1" hidden>
<input class="sheet-toggle-npc-edit" name="attr_npc_options-flag" type="checkbox" hidden>
<div class="sheet-section-npc">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_npc_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_npc_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked sheet-section-npc-edit">
<div class="sheet-form sheet-form-sm">
<div class="sheet-form-header">Opciones de PNJ</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre</label>
<input type="text" name="attr_npc_name">
</div>
<div class="sheet-form-group">
<label>Tipo de PNJ</label>
<input type="text" name="attr_npc_type">
</div>
<div class="sheet-form-group">
<label>Clase de Armadura</label>
<input type="text" name="attr_npc_ac">
<label>Tipo</label>
<input type="text" name="attr_npc_actype" value="">
</div>
<div class="sheet-form-group">
<label>Puntos de Golpe</label>
<input type="text" name="attr_hp_max">
<label>Fórmula</label>
<input type="text" name="attr_npc_hpformula">
</div>
<div class="sheet-form-group">
<label>Velocidad</label>
<input type="text" name="attr_npc_speed">
</div>
<div class="sheet-form-fieldset sheet-form-fieldset-npc-attributes">
<div class="sheet-form-fieldset-header">Attributes</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label>Fue</label>
<input type="text" name="attr_strength_base" value="10" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Des</label>
<input type="text" name="attr_dexterity_base" value="10" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Con</label>
<input type="text" name="attr_constitution_base" value="10" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Int</label>
<input type="text" name="attr_intelligence_base" value="10" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Sab</label>
<input type="text" name="attr_wisdom_base" value="10" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Car</label>
<input type="text" name="attr_charisma_base" value="10" class="sheet-text-center">
</div>
</div>
</div>
<div class="sheet-form-fieldset sheet-form-fieldset-npc-saves">
<div class="sheet-form-fieldset-header">Salvaciones</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label>Fue</label>
<input type="text" name="attr_npc_str_save_base" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Des</label>
<input type="text" name="attr_npc_dex_save_base" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Con</label>
<input type="text" name="attr_npc_con_save_base" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Int</label>
<input type="text" name="attr_npc_int_save_base" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Sab</label>
<input type="text" name="attr_npc_wis_save_base" class="sheet-text-center">
</div>
<div class="sheet-form-group">
<label>Car</label>
<input type="text" name="attr_npc_cha_save_base" class="sheet-text-center">
</div>
</div>
<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="sheet-form-fieldset sheet-form-fieldset-npc-skills">
<div class="sheet-form-fieldset-header">Habilidades</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label>Acrobacias</label>
<input type="text" name="attr_npc_acrobatics_base">
</div>
<div class="sheet-form-group">
<label>T. con Animales</label>
<input type="text" name="attr_npc_animal_handling_base">
</div>
<div class="sheet-form-group">
<label>C. Arcano</label>
<input type="text" name="attr_npc_arcana_base">
</div>
<div class="sheet-form-group">
<label>Atletismo</label>
<input type="text" name="attr_npc_athletics_base">
</div>
<div class="sheet-form-group">
<label>Engaño</label>
<input type="text" name="attr_npc_deception_base">
</div>
<div class="sheet-form-group">
<label>Historia</label>
<input type="text" name="attr_npc_history_base">
</div>
<div class="sheet-form-group">
<label>Perspicacia</label>
<input type="text" name="attr_npc_insight_base">
</div>
<div class="sheet-form-group">
<label>Intimidación</label>
<input type="text" name="attr_npc_intimidation_base">
</div>
<div class="sheet-form-group">
<label>Investigación</label>
<input type="text" name="attr_npc_investigation_base">
</div>
<div class="sheet-form-group">
<label>Medicina</label>
<input type="text" name="attr_npc_medicine_base">
</div>
<div class="sheet-form-group">
<label>Naturaleza</label>
<input type="text" name="attr_npc_nature_base">
</div>
<div class="sheet-form-group">
<label>Percepción</label>
<input type="text" name="attr_npc_perception_base">
</div>
<div class="sheet-form-group">
<label>Interpretación</label>
<input type="text" name="attr_npc_performance_base">
</div>
<div class="sheet-form-group">
<label>Persuasión</label>
<input type="text" name="attr_npc_persuasion_base">
</div>
<div class="sheet-form-group">
<label>Religión</label>
<input type="text" name="attr_npc_religion_base">
</div>
<div class="sheet-form-group">
<label>Juego de manos</label>
<input type="text" name="attr_npc_sleight_of_hand_base">
</div>
<div class="sheet-form-group">
<label>Sigilo</label>
<input type="text" name="attr_npc_stealth_base">
</div>
<div class="sheet-form-group">
<label>Supervivencia</label>
<input type="text" name="attr_npc_survival_base">
</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_arcana" value="@{intelligence_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_Historia" value="@{intelligence_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_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_religion" 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}">
</div>
</div>
<div class="sheet-form-group">
<label>Vulnerabilidad a daño</label>
<input type="text" name="attr_npc_vulnerabilities">
</div>
<div class="sheet-form-group">
<label>Resistencia a daño</label>
<input type="text" name="attr_npc_resistances">
</div>
<div class="sheet-form-group">
<label>Inmunidad a daño</label>
<input type="text" name="attr_npc_immunities">
</div>
<div class="sheet-form-group">
<label>Inmunidad a estados</label>
<input type="text" name="attr_npc_condition_immunities">
</div>
<div class="sheet-form-group">
<label>Sentidos</label>
<input type="text" name="attr_npc_senses">
</div>
<div class="sheet-form-group">
<label>Idiomas</label>
<input type="text" name="attr_npc_languages" value="—">
</div>
<div class="sheet-form-group">
<label>Desafío</label>
<input type="text" name="attr_npc_challenge">
<label>PX</label>
<input type="text" name="attr_npc_xp">
</div>
<div class="sheet-form-group">
<label>Tamaño del token</label>
<input name="attr_token_size" value="1">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_npcspellcastingflag" value="1">
<span>PNJ Lanzador de conjuros</span>
</label>
</div>
<input type="checkbox" name="attr_npcspellcastingflag" value="1" class="sheet-toggle" hidden>
<div class="sheet-form-group sheet-toggle-checked">
<div class="sheet-form-fieldset">
<div class="sheet-form-fieldset-header">Lanzamiento de conjuros</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spellcasting_ability">
<option value="0*">Ninguno</option>
<option value="@{strength_mod}+">Fuerza</option>
<option value="@{dexterity_mod}+">Destreza</option>
<option value="@{constitution_mod}+">Constitución</option>
<option value="@{intelligence_mod}+">Inteligencia</option>
<option value="@{wisdom_mod}+">Sabiduría</option>
<option value="@{charisma_mod}+">Carisma</option>
</select>
</div>
<div class="sheet-form-group">
<label>Modificador general de ataques mágicos</label>
<input type="text" name="attr_globalmagicmod" value="0">
</div>
<div class="sheet-form-group">
<label>Nivel de Lanzador de Conjuros</label>
<input type="text" name="attr_caster_level">
</div>
<div class="sheet-form-group">
<label>Mod CD Salvación de Conjuros</label>
<input type="text" name="attr_spell_dc_mod" value="0">
</div>
</div>
</div>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_npcreactionsflag" value="1">
<span>Tiene Reacciones</span>
</label>
</div>
<div class="sheet-form-group">
<label>Acciones Legendarias</label>
<input type="text" name="attr_npc_legendary_actions" value="0">
</div>
<div class="sheet-form-fieldset">
<div class="sheet-form-fieldset-header">Opciones Generales</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_npc" value="1">
<span>PNJ</span>
</label>
</div>
<!--<div class="sheet-form-group">
<label>Tiradas</label>
<select name="attr_rtype">
<option value="{{always=1}} {{r2=[[@{d20}">Siempre Tirar con Ventaja</option>
<option value="@{advantagetoggle}" selected>Usar Filtro de Ventaja</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}}">Preguntar Ventaja</option>
<option value="{{normal=1}} {{r2=[[0d20">Nunca Tirar con Ventaja</option>
</select>
</div>
<div class="sheet-form-group">
<label>Susurrar Tiradas al DM</label>
<select name="attr_wtype">
<option value="">Nunca Susurrar Tiradas</option>
<option value="@{whispertoggle}">Filtro de Susurros</option>
<option value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }">Preguntar Susurro</option>
<option value="/w gm ">Siempre Susurrar Tiradas</option>
</select>
</div>-->
<div class="sheet-form-group">
<label>Tirar Daño Automáticamente</label>
<select name="attr_dtype">
<option value="pick">No Tirar Daño Automáticamente</option>
<option value="full">No Tirar Daño y Críticos Automáticamente</option>
</select>
</div>
<div class="sheet-form-group">
<label>Nombre del PNJ en las Tiradas</label>
<select name="attr_npc_name_flag">
<option value="{{name=@{npc_name}}}">Mostrar</option>
<option value="0">Ocultar</option>
</select>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_init_tiebreaker" value="@{dexterity}/100">
<span>Añadir el Desempate de Destreza a la Iniciativa</span>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked sheet-section-npc-display">
<div class="sheet-npc-header">
<div class="sheet-npc-header-name">
<button type="roll" name="roll_npc_init" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Initiative}} {{mod=[[[[@{initiative_bonus}]][DEX]]]}} {{r1=[[@{d20}+[[@{initiative_bonus}]][DEX] &{tracker}]]}} {{normal=1}} {{type=Initiative}}" class="sheet-btn-text">
<span name="attr_npc_name"></span>
</button>
</div>
<span name="attr_npc_type"></span>
</div>
<div class="sheet-npc-body">
<div class="sheet-npc-section sheet-npc-section-hp">
<button type="roll" name="roll_npc_init" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Initiative}} {{mod=[[[[@{initiative_bonus}]][DEX]]]}} {{r1=[[@{d20}+[[@{initiative_bonus}]][DEX] &{tracker}]]}} {{normal=1}} {{type=Initiative}}" class="sheet-btn-npc-initiative">
<span>t</span>
<span>INI</span>
</button>
<div>
<label>Clase de Armadura</label>
<span name="attr_npc_ac"></span>
<input type="hidden" name="attr_npc_actype" value="">
<span name="attr_npc_actype" class="sheet-display-brackets"></span>
</div>
<div>
<label>Puntos de Golpe</label>
<span 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=Hit Points}} {{mod=@{npc_hpformula}}} {{r1=[[@{npc_hpformula}]]}} charname=@{character_name}" class="sheet-btn-inline">
<span name="attr_npc_hpformula" class="sheet-display-brackets"></span>
</button>
</div>
<div>
<label>Velocidad</label>
<span name="attr_npc_speed"></span>
</div>
</div>
<div class="sheet-npc-section sheet-npc-section-abilities">
<button type="roll" name="roll_npc_str" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Fuerza}} {{mod=[[[[@{strength_mod}]][STR]]]}} {{r1=[[@{d20}+[[@{strength_mod}]][STR]]]}} @{rtype}+[[@{strength_mod}]][STR]]]}} {{type=Ability}}" class="sheet-btn-npc-ability">
<span class="sheet-btn-npc-ability-title">FUE</span>
<span name="attr_strength" class="sheet-btn-npc-ability-base"></span>
<input type="hidden" name="attr_npc_str_negative" value="0" class="sheet-value-negative">
<span name="attr_strength_mod" class="sheet-btn-npc-ability-mod"></span>
</button>
<button type="roll" name="roll_npc_dex" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Destreza}} {{mod=[[[[@{dexterity_mod}]][DEX]]]}} {{r1=[[@{d20}+[[@{dexterity_mod}]][DEX]]]}} @{rtype}+[[@{dexterity_mod}]][DEX]]]}} {{type=Ability}}" class="sheet-btn-npc-ability">
<span class="sheet-btn-npc-ability-title">DES</span>
<span name="attr_dexterity" class="sheet-btn-npc-ability-base"></span>
<input type="hidden" name="attr_npc_dex_negative" value="0" class="sheet-value-negative">
<span name="attr_dexterity_mod" class="sheet-btn-npc-ability-mod"></span>
</button>
<button type="roll" name="roll_npc_con" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Constitución}} {{mod=[[[[@{constitution_mod}]][CON]]]}} {{r1=[[@{d20}+[[@{constitution_mod}]][CON]]]}} @{rtype}+[[@{constitution_mod}]][CON]]]}} {{type=Ability}}" class="sheet-btn-npc-ability">
<span class="sheet-btn-npc-ability-title">CON</span>
<span name="attr_constitution" class="sheet-btn-npc-ability-base"></span>
<input type="hidden" name="attr_npc_con_negative" value="0" class="sheet-value-negative">
<span name="attr_constitution_mod" class="sheet-btn-npc-ability-mod"></span>
</button>
<button type="roll" name="roll_npc_int" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Inteligencia}} {{mod=[[[[@{intelligence_mod}]][INT]]]}} {{r1=[[@{d20}+[[@{intelligence_mod}]][INT]]]}} @{rtype}+[[@{intelligence_mod}]][INT]]]}} {{type=Ability}}" class="sheet-btn-npc-ability">
<span class="sheet-btn-npc-ability-title">INT</span>
<span name="attr_intelligence" class="sheet-btn-npc-ability-base"></span>
<input type="hidden" name="attr_npc_int_negative" value="0" class="sheet-value-negative">
<span name="attr_intelligence_mod" class="sheet-btn-npc-ability-mod"></span>
</button>
<button type="roll" name="roll_npc_wis" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Sabiduría}} {{mod=[[[[@{wisdom_mod}]][WIS]]]}} {{r1=[[@{d20}+[[@{wisdom_mod}]][WIS]]]}} @{rtype}+[[@{wisdom_mod}]][WIS]]]}} {{type=Ability}}" class="sheet-btn-npc-ability">
<span class="sheet-btn-npc-ability-title">SAB</span>
<span name="attr_wisdom" class="sheet-btn-npc-ability-base"></span>
<input type="hidden" name="attr_npc_wis_negative" value="0" class="sheet-value-negative">
<span name="attr_wisdom_mod" class="sheet-btn-npc-ability-mod"></span>
</button>
<button type="roll" name="roll_npc_cha" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Carisma}} {{mod=[[[[@{charisma_mod}]][CHA]]]}} {{r1=[[@{d20}+[[@{charisma_mod}]][CHA]]]}} @{rtype}+[[@{charisma_mod}]][CHA]]]}} {{type=Ability}}" class="sheet-btn-npc-ability">
<span class="sheet-btn-npc-ability-title">CAR</span>
<span name="attr_charisma" class="sheet-btn-npc-ability-base"></span>
<input type="hidden" name="attr_npc_cha_negative" value="0" class="sheet-value-negative">
<span name="attr_charisma_mod" class="sheet-btn-npc-ability-mod"></span>
</button>
</div>
<div class="sheet-npc-section sheet-npc-section-details">
<input type="hidden" name="attr_npc_saving_flag" value="" class="sheet-field-toggle">
<div class="sheet-npc-section-saving-throws">
<label>Tiradas de Salvación</label>
<input type="hidden" name="attr_npc_str_save_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_str_save" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Fuerza Salvación}} {{mod=[[[[@{npc_str_save}]][STR SAVE]]]}} {{r1=[[@{d20}+[[@{npc_str_save}]][STR SAVE]]]}} @{rtype}+[[@{npc_str_save}]][STR SAVE]]]}} {{type=Save}}">
<span>Fue</span>
<span name="attr_npc_str_save"></span>
</button>
<input type="hidden" name="attr_npc_dex_save_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_dex_save" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Destreza Salvación}} {{mod=[[[[@{npc_dex_save}]][DEX SAVE]]]}} {{r1=[[@{d20}+[[@{npc_dex_save}]][DEX SAVE]]]}} @{rtype}+[[@{npc_dex_save}]][DEX SAVE]]]}} {{type=Save}}">
<span>Des</span>
<span name="attr_npc_dex_save"></span>
</button>
<input type="hidden" name="attr_npc_con_save_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_con_save" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Constitución Salvación}} {{mod=[[[[@{npc_con_save}]][CON SAVE]]]}} {{r1=[[@{d20}+[[@{npc_con_save}]][CON SAVE]]]}} @{rtype}+[[@{npc_con_save}]][CON SAVE]]]}} {{type=Save}}">
<span>Con</span>
<span name="attr_npc_con_save"></span>
</button>
<input type="hidden" name="attr_npc_int_save_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_int_save" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Inteligencia Salvación}} {{mod=[[[[@{npc_int_save}]][INT SAVE]]]}} {{r1=[[@{d20}+[[@{npc_int_save}]][INT SAVE]]]}} @{rtype}+[[@{npc_int_save}]][INT SAVE]]]}} {{type=Save}}">
<span>Int</span>
<span name="attr_npc_int_save"></span>
</button>
<input type="hidden" name="attr_npc_wis_save_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_wis_save" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Sabiduría Salvación}} {{mod=[[[[@{npc_wis_save}]][WIS SAVE]]]}} {{r1=[[@{d20}+[[@{npc_wis_save}]][WIS SAVE]]]}} @{rtype}+[[@{npc_wis_save}]][WIS SAVE]]]}} {{type=Save}}">
<span>Sab</span>
<span name="attr_npc_wis_save"></span>
</button>
<input type="hidden" name="attr_npc_cha_save_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_cha_save" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Carisma Salvación}} {{mod=[[[[@{npc_cha_save}]][CHA SAVE]]]}} {{r1=[[@{d20}+[[@{npc_cha_save}]][CHA SAVE]]]}} @{rtype}+[[@{npc_cha_save}]][CHA SAVE]]]}} {{type=Save}}">
<span>Car</span>
<span name="attr_npc_cha_save"></span>
</button>
</div>
<input type="hidden" name="attr_npc_skills_flag" value="" class="sheet-field-toggle">
<div class="sheet-npc-section-skills">
<label>Habilidades</label>
<span>
<input type="hidden" name="attr_npc_acrobatics_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_acrobatics" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Acrobacias}} {{mod=@{npc_acrobatics}}} {{r1=[[@{d20}+@{npc_acrobatics}]]}} @{rtype}+@{npc_acrobatics}]]}} {{type=Skill}}">
<span>Acrobacias</span>
<span name="attr_npc_acrobatics"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_animal_handling_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_animal_handling" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=T. con Animales}} {{mod=@{npc_animal_handling}}} {{r1=[[@{d20}+@{npc_animal_handling}]]}} @{rtype}+@{npc_animal_handling}]]}} {{type=Skill}}">
<span>T. con Animales</span>
<span name="attr_npc_animal_handling"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_arcana_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_arcana" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=C. Arcano}} {{mod=@{npc_arcana}}} {{r1=[[@{d20}+@{npc_arcana}]]}} @{rtype}+@{npc_arcana}]]}} {{type=Skill}}">
<span>C. Arcano</span>
<span name="attr_npc_arcana"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_athletics_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_athletics" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Atletismo}} {{mod=@{npc_athletics}}} {{r1=[[@{d20}+@{npc_athletics}]]}} @{rtype}+@{npc_athletics}]]}} {{type=Skill}}">
<span>Atletismo</span>
<span name="attr_npc_athletics"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_deception_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_deception" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Engaño}} {{mod=@{npc_deception}}} {{r1=[[@{d20}+@{npc_deception}]]}} @{rtype}+@{npc_deception}]]}} {{type=Skill}}">
<span>Engaño</span>
<span name="attr_npc_deception"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_history_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_Historia" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Historia}} {{mod=@{npc_Historia}}} {{r1=[[@{d20}+@{npc_Historia}]]}} @{rtype}+@{npc_Historia}]]}} {{type=Skill}}">
<span>Historia</span>
<span name="attr_npc_Historia"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_insight_flag" value="0" class="sheet-field-toggle">
<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>Perspicacia</span>
<span name="attr_npc_insight"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_intimidation_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_intimidation" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Intimidación}} {{mod=@{npc_intimidation}}} {{r1=[[@{d20}+@{npc_intimidation}]]}} @{rtype}+@{npc_intimidation}]]}} {{type=Skill}}">
<span>Intimidación</span>
<span name="attr_npc_intimidation"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_investigation_flag" value="0" class="sheet-field-toggle">
<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>Investigación</span>
<span name="attr_npc_investigation"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_medicine_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_medicine" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Medicina}} {{mod=@{npc_medicine}}} {{r1=[[@{d20}+@{npc_medicine}]]}} @{rtype}+@{npc_medicine}]]}} {{type=Skill}}">
<span>Medicina</span>
<span name="attr_npc_medicine"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_nature_flag" value="0" class="sheet-field-toggle">
<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>Naturaleza</span>
<span name="attr_npc_nature"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_perception_flag" value="0" class="sheet-field-toggle">
<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>Percepción</span>
<span name="attr_npc_perception"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_performance_flag" value="0" class="sheet-field-toggle">
<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>Interpretar</span>
<span name="attr_npc_performance"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_persuasion_flag" value="0" class="sheet-field-toggle">
<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>Persuasión</span>
<span name="attr_npc_persuasion"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_religion_flag" value="0" class="sheet-field-toggle">
<button type="roll" name="roll_npc_religion" value="@{wtype}&{template:npc} @{npc_name_flag} {{rname=Religion}} {{mod=@{npc_religion}}} {{r1=[[@{d20}+@{npc_religion}]]}} @{rtype}+@{npc_religion}]]}} {{type=Skill}}">
<span>Religión</span>
<span name="attr_npc_religion"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_sleight_of_hand_flag" value="0" class="sheet-field-toggle">
<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>Juego de manos</span>
<span name="attr_npc_sleight_of_hand"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_stealth_flag" value="0" class="sheet-field-toggle">
<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>Sigilo</span>
<span name="attr_npc_stealth"></span>
</button>
</span>
<span>
<input type="hidden" name="attr_npc_survival_flag" value="0" class="sheet-field-toggle">
<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>Supervivencia</span>
<span name="attr_npc_survival"></span>
</button>
</span>
</div>
<input type="hidden" name="attr_npc_vulnerabilities" class="sheet-field-toggle">
<div>
<label>Vulnerabilidad a daño</label>
<span name="attr_npc_vulnerabilities"></span>
</div>
<input type="hidden" name="attr_npc_resistances" class="sheet-field-toggle">
<div>
<label>Resistencia a daño</label>
<span name="attr_npc_resistances"></span>
</div>
<input type="hidden" name="attr_npc_immunities" class="sheet-field-toggle">
<div>
<label>Inmunidad a daño</label>
<span name="attr_npc_immunities"></span>
</div>
<input type="hidden" name="attr_npc_condition_immunities" class="sheet-field-toggle">
<div>
<label>Inmunidad a estados</label>
<span name="attr_npc_condition_immunities"></span>
</div>
<div>
<label>Sentidos</label>
<span name="attr_npc_senses"></span>
</div>
<div>
<label>Idiomas</label>
<span name="attr_npc_languages" value="—"></span>
</div>
<div>
<label>Desafío</label>
<span name="attr_npc_challenge"></span>
<span name="attr_npc_xp" class="sheet-display-brackets-xp"></span>
</div>
</div>
<div class="sheet-container-well">
<div class="sheet-container-panel sheet-npc-traits">
<div class="sheet-container-header">Rasgos</div>
<div class="sheet-container-body">
<fieldset class="repeating_npctrait">
<div class="sheet-fieldset-item sheet-fieldset-item-npctrait">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_npc_options-flag" checked="checked" value="on">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_npc_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Rasgo</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_name">
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_desc"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-npc-trait">
<div class="sheet-npc-trait-name">
<span name="attr_name"></span>
</div>
<div class="sheet-npc-trait-desc">
<span name="attr_desc"></span>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" name="attr_dflag" value="pick">
<div class="sheet-container-panel sheet-npc-actions">
<div class="sheet-container-header">Acciones</div>
<div class="sheet-container-body">
<fieldset class="repeating_npcaction">
<div class="sheet-fieldset-item sheet-fieldset-item-npcaction">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_npc_options-flag" checked="checked" value="on">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_npc_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Acción</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_name">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_attack_flag" value="on">
<span>ATAQUE</span>
</label>
</div>
<input type="checkbox" name="attr_attack_flag" value="on" class="sheet-toggle" hidden>
<div class="sheet-form-group sheet-toggle-checked">
<div class="sheet-form-fieldset">
<div class="sheet-form-fieldset-header">ATAQUE</div>
<div class="sheet-form-fieldset-body">
<input type="hidden" name="attr_damage_flag">
<div class="sheet-form-group">
<label>Tipo:</label>
<select name="attr_attack_type">
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Rango/Alcance:</label>
<input type="text" name="attr_attack_range">
</div>
<div class="sheet-form-group">
<label>Para Golpear:</label>
<input type="text" name="attr_attack_tohit" value="0">
<label>Objetivo:</label>
<input type="text" name="attr_attack_target">
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_attack_damage">
<label>Tipo:</label>
<input type="text" name="attr_attack_damagetype">
<input type="hidden" name="attr_attack_crit">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_attack_damage2">
<label>Tipo:</label>
<input type="text" name="attr_attack_damagetype2">
<input type="hidden" name="attr_attack_crit2">
</div>
</div>
</div>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<select name="attr_show_desc">
<option value="@{descrition}">Mostrar</option>
<option value=" ">Ocultar</option>
</select>
</div>
<div class="sheet-form-group">
<textarea name="attr_descrition"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-npc-action">
<button type="roll" name="roll_npc_action" value="@{rollbase}" class="sheet-fieldset-item-npcaction-checked-roll sheet-btn-text">
<div class="sheet-fieldset-item-npcaction-checked-name">
<span name="attr_name"></span>
</div>
<input type="checkbox" name="attr_attack_flag" value="on" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-fieldset-item-npcaction-checked-attack">
<span name="attr_attack_type"></span><span> Ataque con Arma: </span><span name="attr_attack_tohitrange"></span>
</div>
<div class="sheet-fieldset-item-npcaction-checked-onhit">
<span>Hit: </span><span name="attr_attack_onhit"></span>
</div>
</div>
<div class="sheet-fieldset-item-npcaction-checked-descrition">
<span name="attr_descrition"></span>
</div>
</button>
<input type="hidden" name="attr_rollbase">
<button type="roll" name="roll_npc_dmg" value="@{wtype}&{template:npcdmg} @{damage_flag} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}}" class="sheet-hidden"></button>
<button type="roll" 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]]}}" class="sheet-hidden"></button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" name="attr_npcreactionsflag" value="0" class="sheet-field-toggle">
<div class="sheet-container-panel sheet-npc-reactions">
<div class="sheet-container-header">Reacciones</div>
<div class="sheet-container-body">
<fieldset class="repeating_npcreaction">
<div class="sheet-fieldset-item sheet-fieldset-item-npcreaction">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_npc_options-flag" checked="checked" value="on">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_npc_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Reacción</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_name">
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_desc"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-npc-reaction">
<button type="roll" name="roll_npc_action" value="@{wtype}&{template:npcaction} @{npc_name_flag} {{rname=@{name}}} {{descrition=@{desc}}} @{charname_output}" class="sheet-fieldset-item-npcaction-checked-roll sheet-btn-text">
<div class="sheet-npc-reaction-name">
<span name="attr_name"></span>
</div>
<div class="sheet-npc-reaction-descrition">
<span name="attr_desc"></span>
</div>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" name="attr_npc_legendary_actions" value="0" class="sheet-field-toggle">
<div class="sheet-container-panel sheet-npc-legendary-actions">
<div class="sheet-container-header">Acciones Legendarias</div>
<div class="sheet-container-body">
<input type="hidden" name="attr_npc_legendary_actions_desc" class="sheet-field-toggle">
<div class="sheet-npc-legendary-actions-descrition">
<span name="attr_npc_legendary_actions_desc"></span>
</div>
<fieldset class="repeating_npcaction-l">
<div class="sheet-fieldset-item sheet-fieldset-item-npcaction">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_npc_options-flag" checked="checked" value="on">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_npc_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Acciones Legendarias</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_name">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_attack_flag" value="on">
<span>ATAQUE</span>
</label>
</div>
<input type="checkbox" name="attr_attack_flag" value="on" class="sheet-toggle" hidden>
<div class="sheet-form-group sheet-toggle-checked">
<div class="sheet-form-fieldset">
<div class="sheet-form-fieldset-header">ATAQUE</div>
<div class="sheet-form-fieldset-body">
<input type="hidden" name="attr_damage_flag">
<div class="sheet-form-group">
<label>Tipo:</label>
<select name="attr_attack_type">
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Rango/Alcance:</label>
<input type="text" name="attr_attack_range">
</div>
<div class="sheet-form-group">
<label>Para Golpear:</label>
<input type="text" name="attr_attack_tohit" value="0">
<label>Objetivo:</label>
<input type="text" name="attr_attack_target">
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_attack_damage">
<label>Tipo:</label>
<input type="text" name="attr_attack_damagetype">
<input type="hidden" name="attr_attack_crit">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_attack_damage2">
<label>Tipo:</label>
<input type="text" name="attr_attack_damagetype2">
<input type="hidden" name="attr_attack_crit2">
</div>
</div>
</div>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<select name="attr_show_desc">
<option value="@{descrition}">Mostrar</option>
<option value=" ">Ocultar</option>
</select>
</div>
<div class="sheet-form-group">
<textarea name="attr_descrition"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-npc-legendary-action">
<button type="roll" name="roll_npc_action" value="@{rollbase}" class="sheet-fieldset-item-npcaction-checked-roll sheet-btn-text">
<div class="sheet-fieldset-item-npcaction-checked-name">
<span name="attr_name"></span>
</div>
<input type="checkbox" name="attr_attack_flag" value="on" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-fieldset-item-npcaction-checked-attack">
<span name="attr_attack_type"></span><span> Ataque con Arma: </span><span name="attr_attack_tohitrange"></span>
</div>
<div class="sheet-fieldset-item-npcaction-checked-onhit">
<span>Hit: </span><span name="attr_attack_onhit"></span>
</div>
</div>
<div class="sheet-fieldset-item-npcaction-checked-descrition">
<span name="attr_descrition"></span>
</div>
</button>
<input type="hidden" name="attr_rollbase">
<button type="roll" name="roll_npc_dmg" value="@{wtype}&{template:npcdmg} @{damage_flag} {{dmg1=[[@{attack_damage}+0]]}} {{dmg1type=@{attack_damagetype}}} {{dmg2=[[@{attack_damage2}+0]]}} {{dmg2type=@{attack_damagetype2}}}" class="sheet-hidden"></button>
<button type="roll" 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]]}}" class="sheet-hidden"></button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
</div><!-- CLOSE NPC SECTION -->
<div class="sheet-section-pc">
<div class="sheet-section-pc-header">
<div class="sheet-section-pc-header-logo">
<div></div>
</div>
<div class="sheet-section-pc-header-name">
<input type="text" name="attr_character_name" title="@{character_name}">
</div>
<!--<div class="sheet-section-roll2">
<input type="hidden" name="attr_rtype" class="sheet-roll-toggle">
<div class="sheet-section-roll-advantage">
<label class="sheet-radio">
<input type="radio" name="attr_advantagetoggle" value="{{query=1}} {{advantage=1}} {{r2=[[@{d20}">
<span title="@{advantagetoggle}">Ventaja</span>
</label>
<label class="sheet-radio">
<input type="radio" name="attr_advantagetoggle" value="{{query=1}} {{normal=1}} {{r2=[[0d20" checked="checked">
<span title="@{advantagetoggle}">Normal</span>
</label>
<label class="sheet-radio">
<input type="radio" name="attr_advantagetoggle" value="{{query=1}} {{disadvantage=1}} {{r2=[[@{d20}">
<span title="@{advantagetoggle}">Desventaja</span>
</label>
</div>
<input type="hidden" name="attr_wtype" class="sheet-roll-toggle">
<div class="sheet-section-roll-whisper">
<label class="sheet-radio">
<input type="radio" name="attr_whispertoggle" value="" checked>
<span title="@{whispertoggle}">Pública</span>
</label>
<label class="sheet-radio">
<input type="radio" name="attr_whispertoggle" value="/w gm ">
<span title="@{whispertoggle}">Susurrar al DM</span>
</label>
</div>
</div>-->
<div class="sheet-section-pc-header-details">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-class-selection"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-class-selection" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Personaje</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Clase:</label>
<select name="attr_class">
<option value="">Elige</option>
<option value="Barbarian">Bárbaro</option>
<option value="Bard">Bardo</option>
<option value="Cleric">Clérigo</option>
<option value="Druid">Druida</option>
<option value="Fighter">Guerrero</option>
<option value="Monk">Monje</option>
<option value="Paladin">Paladín</option>
<option value="Ranger">Explorador</option>
<option value="Rogue">Pícaro</option>
<option value="Sorcerer">Hechicero</option>
<option value="Warlock">Brujo</option>
<option value="Wizard">Mago</option>
</select>
<input type="hidden" name="attr_custom_class" class="sheet-field-toggle">
<input type="text" name="attr_cust_classname">
<label>Subclase:</label>
<input type="text" name="attr_subclass">
</div>
<div class="sheet-form-group">
<label>Nivel:</label>
<input type="number" name="attr_base_level" value="1">
<label>Raza:</label>
<input type="text" name="attr_race">
<label>Subraza:</label>
<input type="text" name="attr_subrace">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-section-pc-header-details-panel">
<div>
<label>Clase y Nivel</label>
<input type="text" name="attr_class_display" title="@{class_display}">
</div>
<div>
<label>Trasfondo</label>
<input type="text" name="attr_background" title="@{background}">
</div>
<div>
<label>Raza</label>
<input type="text" name="attr_race_display" title="@{race_display}">
</div>
<div>
<label>Alineamiento</label>
<input type="text" name="attr_alignment" title="@{alignment}">
</div>
</div>
</div>
</div>
</div><!-- close .sheet-section-pc-header -->
<div class="sheet-section-pc-body">
<div class="sheet-tabs">
<div class="sheet-tab sheet-tab-core">
<input type="radio" name="attr_tab" value="core" checked="checked">
<span class="sheet-tab-label">Principal</span>
<div class="sheet-tab-content">
<div class="sheet-container-well sheet-container-well-attributes">
<div class="sheet-pc-attributes">
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<span name="attr_strength_mod" title="@{strength_mod}">0</span>
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_strength_base" title="@{Fuerza}" value="10">
<input type="hidden" name="attr_strength" value="10">
<input type="hidden" name="attr_strength_flag" value="0" class="sheet-field-toggle">
<span name="attr_strength"></span>
</div>
<div class="sheet-container-header">
<button type="roll" name="roll_strength" value="@{wtype}&{template:simple} {{rname=Fuerza}} {{mod=@{strength_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{strength_mod}@{jack_attr}[STR]]]}} @{rtype}+@{strength_mod}@{jack_attr}[STR]]]}} @{charname_output}">Fuerza</button>
</div>
</div>
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<span name="attr_dexterity_mod" title="@{dexterity_mod}">0</span>
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_dexterity_base" title="@{dexterity}" value="10">
<input type="hidden" name="attr_dexterity" value="10">
<input type="hidden" name="attr_dexterity_flag" value="0" class="sheet-field-toggle">
<span name="attr_dexterity"></span>
</div>
<div class="sheet-container-header">
<button type="roll" name="roll_dexterity" value="@{wtype}&{template:simple} {{rname=Destreza}} {{mod=@{dexterity_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{dexterity_mod}@{jack_attr}[DEX]]]}} @{rtype}+@{dexterity_mod}@{jack_attr}[DEX]]]}} @{charname_output}">Destreza</button>
</div>
</div>
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<span name="attr_constitution_mod" title="@{constitution_mod}">0</span>
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_constitution_base" title="@{Constitución}" value="10">
<input type="hidden" name="attr_constitution" value="10">
<input type="hidden" name="attr_constitution_flag" value="0" class="sheet-field-toggle">
<span name="attr_constitution"></span>
</div>
<div class="sheet-container-header">
<button type="roll" name="roll_constitution" value="@{wtype}&{template:simple} {{rname=Constitución}} {{mod=@{constitution_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{constitution_mod}@{jack_attr}[CON]]]}} @{rtype}+@{constitution_mod}@{jack_attr}[CON]]]}} @{charname_output}">Constitución</button>
</div>
</div>
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<span name="attr_intelligence_mod" title="@{intelligence_mod}">0</span>
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_intelligence_base" title="@{Inteligencia}" value="10">
<input type="hidden" name="attr_intelligence" value="10">
<input type="hidden" name="attr_intelligence_flag" value="0" class="sheet-field-toggle">
<span name="attr_intelligence"></span>
</div>
<div class="sheet-container-header">
<button type="roll" name="roll_intelligence" value="@{wtype}&{template:simple} {{rname=Inteligencia}} {{mod=@{intelligence_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{intelligence_mod}@{jack_attr}[INT]]]}} @{rtype}+@{intelligence_mod}@{jack_attr}[INT]]]}} @{charname_output}">Inteligencia</button>
</div>
</div>
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<span name="attr_wisdom_mod" title="@{wisdom_mod}">0</span>
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_wisdom_base" title="@{Sabiduría}" value="10">
<input type="hidden" name="attr_wisdom" value="10">
<input type="hidden" name="attr_wisdom_flag" value="0" class="sheet-field-toggle">
<span name="attr_wisdom"></span>
</div>
<div class="sheet-container-header">
<button type="roll" name="roll_wisdom" value="@{wtype}&{template:simple} {{rname=Sabiduría}} {{mod=@{wisdom_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{wisdom_mod}@{jack_attr}[WIS]]]}} @{rtype}+@{wisdom_mod}@{jack_attr}[WIS]]]}} @{charname_output}">Sabiduría</button>
</div>
</div>
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<span name="attr_charisma_mod" title="@{charisma_mod}">0</span>
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_charisma_base" title="@{charisma}" value="10">
<input type="hidden" name="attr_charisma" value="10">
<input type="hidden" name="attr_charisma_flag" value="0" class="sheet-field-toggle">
<span name="attr_charisma"></span>
</div>
<div class="sheet-container-header">
<button type="roll" name="roll_charisma" value="@{wtype}&{template:simple} {{rname=Carisma}} {{mod=@{charisma_mod}@{jack_bonus}}} {{r1=[[@{d20}+@{charisma_mod}@{jack_attr}[CHA]]]}} @{rtype}+@{charisma_mod}@{jack_attr}[CHA]]]}} @{charname_output}">Carisma</button>
</div>
</div>
</div>
<div>
<div class="sheet-pc-combat">
<div class="sheet-container-box sheet-pc-armor">
<div class="sheet-container-header">
<button type="roll" name="roll_defence" value="@{wtype}&{template:simple} {{rname=Defence Roll}} {{mod=@{ac}}} {{r1=[[@{d20}+@{ac}]]}} @{rtype}+@{ac}]]}} @{charname_output}">Armadura</button>
</div>
<div class="sheet-container-body">
<input type="text" name="attr_ac" title="@{ac}">
</div>
</div>
<div class="sheet-container-box sheet-pc-initiative">
<div class="sheet-container-header">
<button type="roll" name="roll_initiative" value="@{wtype}&{template:simple} {{rname=Initiative}} {{mod=@{initiative_bonus}}} {{r1=[[@{initiative_style}+@{initiative_bonus}@{pbd_safe}[INIT] &{tracker}]]}} {{normal=1}} @{charname_output}">Iniciativa</button>
</div>
<div class="sheet-container-body">
<span name="attr_initiative_bonus" title="@{initiative_bonus}"></span>
</div>
</div>
<div class="sheet-container-box sheet-pc-speed">
<div class="sheet-container-header">Velocidad</div>
<div class="sheet-container-body">
<input type="text" name="attr_speed" title="@{speed}">
</div>
</div>
</div>
<div class="sheet-container-well-health">
<div class="sheet-container-attribute">
<div class="sheet-container-body">
<input type="text" name="attr_hp_max" title="@{hp_max}">
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_hp" title="@{hp}">
</div>
<div class="sheet-container-header">
PG
</div>
</div>
<div class="sheet-container-hitdice">
<div class="sheet-container-header">
<button type="roll" name="roll_hit_dice" value="@{wtype}&{template:simple} {{rname=Hit Dice}} {{mod=D@{hitdie_final}+[[@{constitution_mod}[CON]]]}} {{r1=[[1d@{hitdie_final}+[[@{constitution_mod}]][CON]]]}} {{normal=1}} @{charname_output}">Dados de golpe</button>
</div>
<div class="sheet-container-box sheet-pc-hit-dice">
<div class="sheet-container-body">
<input type="text" name="attr_hit_dice_max" title="@{hit_dice_max}">
</div>
<div class="sheet-container-footer">
<input type="text" name="attr_hit_dice" title="@{hit_dice}">
</div>
</div>
<div class="sheet-container-box sheet-pc-death">
<div class="sheet-container-header">
<button type="roll" name="roll_death_save" value="@{wtype}&{template:simple} {{rname=Death Salvación}} {{mod=@{death_save_bonus}}} {{r1=[[@{d20}+@{death_save_bonus}[MOD]@{globalsavingthrowbonus}]]}} {{normal=1}} {{global=@{global_save_mod}}} @{charname_output}">
Salvación muerte
</button>
</div>
<div class="sheet-container-body">
<!--<input type="hidden" name="attr_show_death_failures_flag" value="1" class="sheet-field-untoggle">-->
<div class="sheet-death-save-success">
<!--<input type="hidden" name="attr_show_death_failures_flag" value="1" class="sheet-field-untoggle">-->
<div class="sheet-checkbox-image">
<span class="mas"></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deathsave_success1" title="@{deathsave_success1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deathsave_success2" title="@{deathsave_success2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deathsave_success3" title="@{deathsave_success3}">
<span></span>
</div>
</div>
<div class="sheet-death-save-fail">
<!--<input type="hidden" name="attr_show_death_failures_flag" value="1" class="sheet-field-untoggle">-->
<div class="sheet-checkbox-image">
<span class="menos"></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deathsave_fail1" title="@{deathsave_fail1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deathsave_fail2" title="@{deathsave_fail2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deathsave_fail3" title="@{deathsave_fail3}">
<span></span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-attacks">
<div class="sheet-container-header">Ataques y Conjuros</div>
<div class="sheet-container-body">
<fieldset class="repeating_attack">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Ataque</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_atkname">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_atkflag" value="{{attack=1}}" checked="checked">
<span>Ataque:</span>
</label>
</div>
<div class="sheet-form-group">
<select name="attr_atkattr_base">
<option value="@{strength_mod}" selected="selected">FUE</option>
<option value="@{dexterity_mod}">DES</option>
<option value="@{constitution_mod}">CON</option>
<option value="@{intelligence_mod}">INT</option>
<option value="@{wisdom_mod}">SAB</option>
<option value="@{charisma_mod}">CAR</option>
<option value="spell">CONJ</option>
<option value="0">-</option>
</select>
<span>+</span>
<input type="text" name="attr_atkmod" placeholder="0">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_atkprofflag" value="(@{pb})" checked="checked">
<span>Competente</span>
</label>
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_atkrange">
</div>
<div class="sheet-form-group">
<label>Bono Mágico:</label>
<input type="text" name="attr_atkmagic">
<label>Rango Crit:</label>
<input type="text" name="attr_atkcritrange" value="20">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_dmgflag" value="{{damage=1}} {{dmg1flag=1}}" checked="checked">
<span>Daño 1</span>
</label>
</div>
<div class="sheet-form-group">
<label>Daño</label>
<input type="text" name="attr_dmgbase">
<span>+</span>
<select name="attr_dmgattr">
<option value="@{strength_mod}" selected="selected">FUE</option>
<option value="@{dexterity_mod}">DES</option>
<option value="@{constitution_mod}">CON</option>
<option value="@{intelligence_mod}">INT</option>
<option value="@{wisdom_mod}">SAB</option>
<option value="@{charisma_mod}">CAR</option>
<option value="spell">CONJ</option>
<option value="0">-</option>
</select>
<span>+</span>
<label>Mod</label>
<input type="text" name="attr_dmgmod">
</div>
<div class="sheet-form-group">
<label>Tipo:</label>
<input type="text" name="attr_dmgtype">
<label>Crit:</label>
<input type="text" name="attr_dmgcustcrit">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_dmg2flag" value="{{damage=1}} {{dmg2flag=1}}">
<span>Daño 2</span>
</label>
</div>
<div class="sheet-form-group">
<label>Daño</label>
<input type="text" name="attr_dmg2base">
<span>+</span>
<select name="attr_dmg2attr">
<option value="@{strength_mod}">FUE</option>
<option value="@{dexterity_mod}">DES</option>
<option value="@{constitution_mod}">CON</option>
<option value="@{intelligence_mod}">INT</option>
<option value="@{wisdom_mod}">SAB</option>
<option value="@{charisma_mod}">CAR</option>
<option value="spell">CONJ</option>
<option value="0" selected="selected">-</option>
</select>
<span>+</span>
<label>Mod</label>
<input type="text" name="attr_dmg2mod">
</div>
<div class="sheet-form-group">
<label>Tipo:</label>
<input type="text" name="attr_dmg2type">
<label>Crit:</label>
<input type="text" name="attr_dmg2custcrit">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_saveflag" value="{{save=1}} {{saveattr=@{saveattr}}} {{savedesc=@{saveeffect}}} {{savedc=[[[[@{savedc}]][SAVE]]]}}">
<span>Tirada Salvación</span>
</label>
</div>
<div class="sheet-form-group">
<select name="attr_saveattr">
<option value="Strength" selected="selected">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>vs DC:</label>
<select name="attr_savedc">
<option value="(@{spell_save_dc})" selected="selected">CONJ</option>
<option value="(@{strength_mod}+8+@{spell_dc_mod}+@{pb})">FUE</option>
<option value="(@{dexterity_mod}+8+@{spell_dc_mod}+@{pb})">DES</option>
<option value="(@{constitution_mod}+8+@{spell_dc_mod}+@{pb})">CON</option>
<option value="(@{intelligence_mod}+8+@{spell_dc_mod}+@{pb})">INT</option>
<option value="(@{wisdom_mod}+8+@{spell_dc_mod}+@{pb})">SAB</option>
<option value="(@{charisma_mod}+8+@{spell_dc_mod}+@{pb})">CAR</option>
<option value="(@{saveflat})">BASE</option>
</select>
<input type="hidden" name="attr_savedc">
<input type="text" name="attr_saveflat" value="10">
</div>
<div class="sheet-form-group">
<label>Efecto Salvación:</label>
<input type="text" name="attr_saveeffect">
</div>
<div class="sheet-form-group">
<label>Munición:</label>
<input type="text" name="attr_ammo">
</div>
<div class="sheet-form-group sheet-form-group-column">
<label>Descripción:</label>
<textarea name="attr_atk_desc"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-attack">
<input type="text" name="attr_atkbonus" class="sheet-hidden" value="">
<input type="text" name="attr_atkdmgtype" class="sheet-hidden" value="">
<button type="roll" name="roll_attack" value="@{rollbase}" class="sheet-attack-button">
<span name="attr_atkname"></span>
<span name="attr_atkbonus"></span>
<span name="attr_atkdmgtype"></span>
</button>
</div>
</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_spelllevel">
<input type="hidden" name="attr_itemid">
<input type="hidden" name="attr_spellid">
<input type="hidden" name="attr_spell_innate">
<input type="hidden" name="attr_versatile_alt">
<button type="roll" name="roll_attack_dmg" value="@{rollbase_dmg}" class="sheet-hidden"></button>
<button type="roll" name="roll_attack_crit" value="@{rollbase_crit}" class="sheet-hidden"></button>
</fieldset>
<input type="hidden" name="attr_global_attack_mod_flag" class="sheet-field-toggle">
<div class="sheet-form sheet-form-inline">
<div class="sheet-form-header">Global Attack Modifiers</div>
<div class="sheet-form-body">
<fieldset class="repeating_tohitmod">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Modifier</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_global_attack_active_flag" value="1">
</label>
<input type="text" name="attr_global_attack_name">
</div>
<div class="sheet-form-group">
<label>Roll:</label>
<input type="text" name="attr_global_attack_roll">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-attack-modifier">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_global_attack_active_flag" value="1">
<span></span>
</div>
<span name="attr_global_attack_name"></span>
<span name="attr_global_attack_roll"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" name="attr_global_damage_mod_flag" class="sheet-field-toggle">
<div class="sheet-form sheet-form-inline">
<div class="sheet-form-header">Global Damage Modifiers</div>
<div class="sheet-form-body">
<fieldset class="repeating_damagemod">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Modifier</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_global_damage_active_flag" value="1">
</label>
<input type="text" name="attr_global_damage_name">
</div>
<div class="sheet-form-group">
<label>Damage:</label>
<input type="text" name="attr_global_damage_damage" value="">
</div>
<div class="sheet-form-group">
<label>Tipo:</label>
<input type="text" name="attr_global_damage_type" value="">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-attack-damage-modifier">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_global_damage_active_flag" value="1">
<span></span>
</div>
<span name="attr_global_damage_name"></span>
<span name="attr_global_damage_damage"></span>
<span name="attr_global_damage_type"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<input type="hidden" name="attr_global_ac_mod_flag" class="sheet-field-toggle">
<div class="sheet-form sheet-form-inline">
<div class="sheet-form-header">Global AC Modifiers</div>
<div class="sheet-form-body">
<fieldset class="repeating_acmod">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Modifier</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_global_ac_active_flag" value="1">
</label>
<input type="text" name="attr_global_ac_name">
</div>
<div class="sheet-form-group">
<label>Value:</label>
<input type="text" name="attr_global_ac_val" value="">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-ac-modifier">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_global_ac_active_flag" value="1">
<span></span>
</div>
<span name="attr_global_ac_name"></span>
<span name="attr_global_ac_val"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div><!-- close .sheet-pc-attacks -->
<div class="sheet-container-well sheet-container-well-personality sheet-equipo">
<div class="sheet-container-box sheet-pc-personality">
<div class="sheet-container-header more-padding">Monedas y equipo</div>
<div class="sheet-container-body">
<textarea name="attr_monedas_equipo" title="@{equipo}" rows="14"></textarea>
</div>
</div>
</div>
</div> <!-- close pc 2nd column -->
<div class="sheet-container-inspiration">
<div class="sheet-pc-combat">
<div class="sheet-container-box sheet-pc-armor">
<div class="sheet-container-body">
<input type="checkbox" name="attr_inspiration_1" title="@{inspiration_1}">
<span></span>
</div>
<div class="sheet-container-header">Inspiración</div>
</div>
<div class="sheet-container-box sheet-container-bar-left">
<div class="sheet-container-body">
<span name="attr_pb" title="@{pb}"></span>
</div>
<div class="sheet-container-header">Competencia</div>
</div>
<div class="sheet-container-box sheet-pc-speed">
<div class="sheet-container-body">
<input type="text" name="attr_passive_wisdom" title="@{passive_wisdom}" value="(10+@{perception_bonus}+@{passiveperceptionmod})" disabled="true" hidden>
<span name="attr_passive_wisdom" title="@{passive_wisdom}"></span>
</div>
<div class="sheet-container-header">Sab. Pasiva</div>
</div>
</div>
</div>
<div class="sheet-container-well sheet-herramientas">
<div class="sheet-container-panel">
<div class="sheet-container-header">Competencias en herramientas</div>
<div class="sheet-container-body">
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span>Modificador</span>
<span>Herramienta/Habilidad</span>
</div>
<fieldset class="repeating_tool">
<div class="sheet-fieldset-item sheet-fieldset-item-tool">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Competencia</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_toolname">
</div>
<div class="sheet-form-group">
<label>Bono de Competencia:</label>
<select name="attr_toolbonus_base">
<option value="(@{pb})" selected="selected">Competente</option>
<option value="(@{pb}*2)">Pericia</option>
<option value="(floor(@{pb}/2))">Aprendiz de mucho</option>
</select>
</div>
<div class="sheet-form-group">
<label>Atributo:</label>
<select name="attr_toolattr_base">
<option value="@{strength_mod}" selected="selected">Fue</option>
<option value="@{dexterity_mod}">Des</option>
<option value="@{constitution_mod}">Con</option>
<option value="@{intelligence_mod}">Int</option>
<option value="@{wisdom_mod}">Sab</option>
<option value="@{charisma_mod}">Car</option>
<option value="?{Attribute?|Fuerza,@{strength_mod}|Destreza,@{dexterity_mod}|Constitución,@{constitution_mod}|Inteligencia,@{intelligence_mod}|Sabiduría,@{wisdom_mod}|Carisma,@{charisma_mod}}">Query</option>
</select>
<label>Mods:</label>
<input type="text" name="attr_tool_mod" title="@{tool_mod}" value="0">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-tool">
<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></span>
<span name="attr_toolname"></span>
<span name="attr_toolbonus_display"></span>
<input type="hidden" name="attr_toolbonus">
</button>
</div>
</div>
</div>
</fieldset>
<input type="hidden" name="attr_global_skill_mod_flag" class="sheet-field-toggle">
<div class="sheet-form sheet-form-inline">
<div class="sheet-form-header">Global Tool Modifiers</div>
<div class="sheet-form-body">
<fieldset class="repeating_skillmod">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Modifier</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<div class="sheet-form-checkbox">
<input type="checkbox" name="attr_global_skill_active_flag" value="1">
</div>
<input type="text" name="attr_global_skill_name">
</div>
<div class="sheet-form-group">
<label>Roll:</label>
<input type="text" name="attr_global_skill_roll">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-tool-modifier">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_global_skill_active_flag" value="1">
<span></span>
</div>
<span name="attr_global_skill_name"></span>
<span name="attr_global_skill_roll"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!--<div class="sheet-container-box sheet-pc-personality">
<div class="sheet-container-header">Competencias en habilidades e idiomas</div>
<div class="sheet-container-body">
<textarea name="attr_idiomas" title="@{equipo}" rows="5"></textarea>
</div>
</div>-->
</div>
<!--
<div class="sheet-container-panel sheet-pc-tools">
<div class="sheet-container-header">Tools & Custom Skills</div>
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span>Mod</span>
<span>Tool/Skill</span>
</div>
<fieldset class="repeating_tool">
<div class="sheet-fieldset-item sheet-fieldset-item-tool">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Proficiency</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_toolname">
</div>
<div class="sheet-form-group">
<label>Proficiency Bonus:</label>
<select name="attr_toolbonus_base">
<option value="(@{pb})" selected="selected">PROFICIENT</option>
<option value="(@{pb}*2)">EXPERTISE</option>
<option value="(floor(@{pb}/2))">JACK OF ALL TRADES</option>
</select>
</div>
<div class="sheet-form-group">
<label>Attribute:</label>
<select name="attr_toolattr_base">
<option value="@{strength_mod}" selected="selected">Fue</option>
<option value="@{dexterity_mod}">Des</option>
<option value="@{constitution_mod}">Con</option>
<option value="@{intelligence_mod}">Int</option>
<option value="@{wisdom_mod}">Sab</option>
<option value="@{charisma_mod}">Car</option>
<option value="?{Attribute?|Fuerza,@{strength_mod}|Destreza,@{dexterity_mod}|Constitución,@{constitution_mod}|Inteligencia,@{intelligence_mod}|Sabiduría,@{wisdom_mod}|Carisma,@{charisma_mod}}">Query</option>
</select>
<label>Mods:</label>
<input type="text" name="attr_tool_mod" title="@{tool_mod}" value="0">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-tool">
<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></span>
<span name="attr_toolbonus_display"></span>
<span name="attr_toolname"></span>
<input type="hidden" name="attr_toolbonus">
<span name="attr_toolattr"></span>
</button>
</div>
</div>
</div>
</fieldset>
<input type="hidden" name="attr_global_skill_mod_flag" class="sheet-field-toggle">
<div class="sheet-form sheet-form-inline">
<div class="sheet-form-header">Global Tool Modifiers</div>
<div class="sheet-form-body">
<fieldset class="repeating_skillmod">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Modifier</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<div class="sheet-form-checkbox">
<input type="checkbox" name="attr_global_skill_active_flag" value="1">
</div>
<input type="text" name="attr_global_skill_name">
</div>
<div class="sheet-form-group">
<label>Roll:</label>
<input type="text" name="attr_global_skill_roll">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-tool-modifier">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_global_skill_active_flag" value="1">
<span></span>
</div>
<span name="attr_global_skill_name"></span>
<span name="attr_global_skill_roll"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-proficiencies">
<div class="sheet-container-header">Proficiencies & Languages</div>
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span>Type</span>
<span>Proficiency</span>
</div>
<input type="hidden" name="attr_simpleproficencies" value="complex">
<textarea name="attr_other_proficiencies_and_languages" hidden></textarea>
<fieldset class="repeating_proficiencies">
<div class="sheet-fieldset-item sheet-fieldset-item-proficiency">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Proficiency</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<select name="attr_prof_type">
<option value="LANGUAGE" selected="selected">Language</option>
<option value="WEAPON">Weapon</option>
<option value="ARMOR">Armor</option>
<option value="OTHER">Other</option>
</select>
<input type="text" name="attr_name">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-proficiency">
<button type="roll" name="roll_output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{prof_type} PROFICIENCY}} {{descrition=@{name}}}">
<span name="attr_prof_type"></span>
<span name="attr_name"></span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>-->
</div>
<div>
<div class="sheet-container-well sheet-container-well-personality">
<div class="sheet-container-box sheet-pc-personality">
<div class="sheet-container-header more-padding">Rasgos de personalidad</div>
<div class="sheet-container-body">
<textarea name="attr_personality_traits" title="@{personality_traits}" rows="5"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-ideals">
<div class="sheet-container-header">Ideales</div>
<div class="sheet-container-body">
<textarea name="attr_ideals" title="@{ideals}" rows="5"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-bonds">
<div class="sheet-container-header">Vínculos</div>
<div class="sheet-container-body">
<textarea name="attr_bonds" title="@{bonds}" rows="5"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-flaws">
<div class="sheet-container-header">Defectos</div>
<div class="sheet-container-body">
<textarea name="attr_flaws" title="@{flaws}" rows="5"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-flaws">
<div class="sheet-container-header">Singularidad</div>
<div class="sheet-container-body">
<textarea name="attr_singularidad" title="@{singularidad}" rows="5"></textarea>
</div>
</div>
</div>
<div class="sheet-container-well sheet-container-well-skills">
<div class="sheet-container-header">Habilidades</div>
<div class="sheet-container-body">
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_acrobatics_prof" title="@{acrobatics_prof}" value="(@{pb}*@{acrobatics_type})">
<span></span>
</div>
<span name="attr_acrobatics_bonus" title="@{acrobatics_bonus}">0</span>
<button type="roll" name="roll_acrobatics" value="@{wtype}&{template:simple} {{rname=@{acrobatics_attribute} (Acrobacias)}} {{mod=@{acrobatics_bonus}}} {{r1=[[@{d20}+@{acrobatics_bonus}@{pbd_safe}]]}} @{rtype}+@{acrobatics_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}">Acrobacias</button>
<select name="attr_acrobatics_attribute" title="@{acrobatics_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity" selected="selected">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_athletics_prof" title="@{athletics_prof}" value="(@{pb}*@{athletics_type})">
<span></span>
</div>
<span name='attr_athletics_bonus' title='@{athletics_bonus}'>0</span>
<button type='roll' name='roll_athletics' value='@{wtype}&{template:simple} {{rname=@{athletics_attribute} (Atletismo)}} {{mod=@{athletics_bonus}}} {{r1=[[@{d20}+@{athletics_bonus}@{pbd_safe}]]}} @{rtype}+@{athletics_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Atletismo</button>
<select name="attr_athletics_attribute" title="@{athletics_attribute}">
<option value="Strength" selected="selected">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_arcana_prof" title="@{arcana_prof}" value="(@{pb}*@{arcana_type})">
<span></span>
</div>
<span name='attr_arcana_bonus' title='@{arcana_bonus}'>0</span>
<button type='roll' name='roll_arcana' value='@{wtype}&{template:simple} {{rname=@{arcana_attribute} (C. Arcano)}} {{mod=@{arcana_bonus}}} {{r1=[[@{d20}+@{arcana_bonus}@{pbd_safe}]]}} @{rtype}+@{arcana_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>C. Arcano</button>
<select name="attr_arcana_attribute" title="@{arcana_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence" selected="selected">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_deception_prof" title="@{deception_prof}" value="(@{pb}*@{deception_type})">
<span></span>
</div>
<span name='attr_deception_bonus' title='@{deception_bonus}'>0</span>
<button type='roll' name='roll_deception' value='@{wtype}&{template:simple} {{rname=@{deception_attribute} (Engaño)}} {{mod=@{deception_bonus}}} {{r1=[[@{d20}+@{deception_bonus}@{pbd_safe}]]}} @{rtype}+@{deception_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Engaño</button>
<select name="attr_deception_attribute" title="@{deception_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma" selected="selected">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_history_prof" title="@{history_prof}" value="(@{pb}*@{history_type})">
<span></span>
</div>
<span name='attr_history_bonus' title='@{history_bonus}'>0</span>
<button type='roll' name='roll_Historia' value='@{wtype}&{template:simple} {{rname=@{history_attribute} (Historia)}} {{mod=@{history_bonus}}} {{r1=[[@{d20}+@{history_bonus}@{pbd_safe}]]}} @{rtype}+@{history_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Historia</button>
<select name="attr_history_attribute" title="@{history_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence" selected="selected">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_performance_prof" title="@{performance_prof}" value="(@{pb}*@{performance_type})">
<span></span>
</div>
<span name='attr_performance_bonus' title='@{performance_bonus}'>0</span>
<button type='roll' name='roll_performance' value='@{wtype}&{template:simple} {{rname=@{performance_attribute} (Interpretación)}} {{mod=@{performance_bonus}}} {{r1=[[@{d20}+@{performance_bonus}@{pbd_safe}]]}} @{rtype}+@{performance_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Interpretación</button>
<select name="attr_performance_attribute" title="@{performance_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma" selected="selected">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_intimidation_prof" title="@{intimidation_prof}" value="(@{pb}*@{intimidation_type})">
<span></span>
</div>
<span name='attr_intimidation_bonus' title='@{intimidation_bonus}'>0</span>
<button type='roll' name='roll_intimidation' value='@{wtype}&{template:simple} {{rname=@{intimidation_attribute} (Intimidación)}} {{mod=@{intimidation_bonus}}} {{r1=[[@{d20}+@{intimidation_bonus}@{pbd_safe}]]}} @{rtype}+@{intimidation_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Intimidación</button>
<select name="attr_intimidation_attribute" title="@{intimidation_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma" selected="selected">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_investigation_prof" title="@{investigation_prof}" value="(@{pb}*@{investigation_type})">
<span></span>
</div>
<span name='attr_investigation_bonus' title='@{investigation_bonus}'>0</span>
<button type='roll' name='roll_investigation' value='@{wtype}&{template:simple} {{rname=@{investigation_attribute} (Investigation)}} {{mod=@{investigation_bonus}}} {{r1=[[@{d20}+@{investigation_bonus}@{pbd_safe}]]}} @{rtype}+@{investigation_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Investigación</button>
<select name="attr_investigation_attribute" title="@{investigation_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence" selected="selected">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill sheet-pc-skill-sleight-of-hand">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_sleight_of_hand_prof" title="@{sleight_of_hand_prof}" value="(@{pb}*@{sleight_of_hand_type})">
<span></span>
</div>
<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_attribute} (Juego de Manos)}} {{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}'>Juego de Manos</button>
<select name="attr_sleight_of_hand_attribute" title="@{sleight_of_hand_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity" selected="selected">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_medicine_prof" title="@{medicine_prof}" value="(@{pb}*@{medicine_type})">
<span></span>
</div>
<span name='attr_medicine_bonus' title='@{medicine_bonus}'>0</span>
<button type='roll' name='roll_medicine' value='@{wtype}&{template:simple} {{rname=@{medicine_attribute} (Medicina)}} {{mod=@{medicine_bonus}}} {{r1=[[@{d20}+@{medicine_bonus}@{pbd_safe}]]}} @{rtype}+@{medicine_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Medicina</button>
<select name="attr_medicine_attribute" title="@{medicine_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom" selected="selected">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_nature_prof" title="@{nature_prof}" value="(@{pb}*@{nature_type})">
<span></span>
</div>
<span name='attr_nature_bonus' title='@{nature_bonus}'>0</span>
<button type='roll' name='roll_nature' value='@{wtype}&{template:simple} {{rname=@{nature_attribute} (Nature)}} {{mod=@{nature_bonus}}} {{r1=[[@{d20}+@{nature_bonus}@{pbd_safe}]]}} @{rtype}+@{nature_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Naturaleza</button>
<select name="attr_nature_attribute" title="@{nature_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence" selected="selected">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_perception_prof" title="@{perception_prof}" value="(@{pb}*@{perception_type})">
<span></span>
</div>
<span name='attr_perception_bonus' title='@{perception_bonus}'>0</span>
<button type='roll' name='roll_perception' value='@{wtype}&{template:simple} {{rname=@{perception_attribute} (Percepción)}} {{mod=@{perception_bonus}}} {{r1=[[@{d20}+@{perception_bonus}@{pbd_safe}]]}} @{rtype}+@{perception_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Percepción</button>
<select name="attr_perception_attribute" title="@{perception_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom" selected="selected">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_insight_prof" title="@{insight_prof}" value="(@{pb}*@{insight_type})">
<span></span>
</div>
<span name='attr_insight_bonus' title='@{insight_bonus}'>0</span>
<button type='roll' name='roll_insight' value='@{wtype}&{template:simple} {{rname=@{insight_attribute} (Perspicacia)}} {{mod=@{insight_bonus}}} {{r1=[[@{d20}+@{insight_bonus}@{pbd_safe}]]}} @{rtype}+@{insight_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Perspicacia</button>
<select name="attr_insight_attribute" title="@{insight_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom" selected="selected">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_persuasion_prof" title="@{persuasion_prof}" value="(@{pb}*@{persuasion_type})">
<span></span>
</div>
<span name='attr_persuasion_bonus' title='@{persuasion_bonus}'>0</span>
<button type='roll' name='roll_persuasion' value='@{wtype}&{template:simple} {{rname=@{persuasion_attribute} (Persuasión)}} {{mod=@{persuasion_bonus}}} {{r1=[[@{d20}+@{persuasion_bonus}@{pbd_safe}]]}} @{rtype}+@{persuasion_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Persuasión</button>
<select name="attr_persuasion_attribute" title="@{persuasion_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma" selected="selected">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_religion_prof" title="@{religion_prof}" value="(@{pb}*@{religion_type})">
<span></span>
</div>
<span name='attr_religion_bonus' title='@{religion_bonus}'>0</span>
<button type='roll' name='roll_religion' value='@{wtype}&{template:simple} {{rname=@{religion_attribute} (Religión)}} {{mod=@{religion_bonus}}} {{r1=[[@{d20}+@{religion_bonus}@{pbd_safe}]]}} @{rtype}+@{religion_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Religión</button>
<select name="attr_religion_attribute" title="@{religion_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence" selected="selected">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_stealth_prof" title="@{stealth_prof}" value="(@{pb}*@{stealth_type})">
<span></span>
</div>
<span name='attr_stealth_bonus' title='@{stealth_bonus}'>0</span>
<button type='roll' name='roll_stealth' value='@{wtype}&{template:simple} {{rname=@{stealth_attribute} (Sigilo)}} {{mod=@{stealth_bonus}}} {{r1=[[@{d20}+@{stealth_bonus}@{pbd_safe}]]}} @{rtype}+@{stealth_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Sigilo</button>
<select name="attr_stealth_attribute" title="@{stealth_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity" selected="selected">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_survival_prof" title="@{survival_prof}" value="(@{pb}*@{survival_type})">
<span></span>
</div>
<span name='attr_survival_bonus' title='@{survival_bonus}'>0</span>
<button type='roll' name='roll_survival' value='@{wtype}&{template:simple} {{rname=@{survival_attribute} (Supervivencia)}} {{mod=@{survival_bonus}}} {{r1=[[@{d20}+@{survival_bonus}@{pbd_safe}]]}} @{rtype}+@{survival_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>Supervivencia</button>
<select name="attr_survival_attribute" title="@{survival_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom" selected="selected">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
<div class="sheet-pc-skill sheet-pc-skill-animal-handling">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_animal_handling_prof" title="@{animal_handling_prof}" value="(@{pb}*@{animal_handling_type})">
<span></span>
</div>
<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_attribute} (T. con Animales)}} {{mod=@{animal_handling_bonus}}} {{r1=[[@{d20}+@{animal_handling_bonus}@{pbd_safe}]]}} @{rtype}+@{animal_handling_bonus}@{pbd_safe}]]}} {{global=@{global_skill_mod}}} @{charname_output}'>T. con Animales</button>
<select name="attr_animal_handling_attribute" title="@{animal_handling_attribute}">
<option value="Strength">Fue</option>
<option value="Dexterity">Des</option>
<option value="Constitution">Con</option>
<option value="Intelligence">Int</option>
<option value="Wisdom" selected="selected">Sab</option>
<option value="Charisma">Car</option>
</select>
</div>
</div>
</div>
<div class="sheet-container-well sheet-container-well-skills">
<div class="sheet-container-header">Tiradas de Salvación</div>
<div class="sheet-container-body">
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_strength_save_prof" title="@{strength_save_prof}" value="(@{pb})">
<span></span>
</div>
<span name="attr_strength_save_bonus" title="@{strength_save_bonus}">0</span>
<button type="roll" name="roll_strength_save" value="@{wtype}&{template:simple} {{rname=Fuerza Salvación}} {{mod=@{strength_save_bonus}}} {{r1=[[@{d20}+@{strength_save_bonus}@{pbd_safe}]]}} @{rtype}+@{strength_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}">Fuerza</button>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_dexterity_save_prof" title="@{dexterity_save_prof}" value="(@{pb})">
<span></span>
</div>
<span name="attr_dexterity_save_bonus" title="@{dexterity_save_bonus}">0</span>
<button type="roll" name="roll_dexterity_save" value="@{wtype}&{template:simple} {{rname=Destreza Salvación}} {{mod=@{dexterity_save_bonus}}} {{r1=[[@{d20}+@{dexterity_save_bonus}@{pbd_safe}]]}} @{rtype}+@{dexterity_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}">Destreza</button>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_constitution_save_prof" title="@{constitution_save_prof}" value="(@{pb})">
<span></span>
</div>
<span name="attr_constitution_save_bonus" title="@{constitution_save_bonus}">0</span>
<button type="roll" name="roll_constitution_save" value="@{wtype}&{template:simple} {{rname=Constitución Salvación}} {{mod=@{constitution_save_bonus}}} {{r1=[[@{d20}+@{constitution_save_bonus}@{pbd_safe}]]}} @{rtype}+@{constitution_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}">Constitución</button>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_intelligence_save_prof" title="@{intelligence_save_prof}" value="(@{pb})">
<span></span>
</div>
<span name="attr_intelligence_save_bonus" title="@{intelligence_save_bonus}">0</span>
<button type="roll" name="roll_intelligence_save" value="@{wtype}&{template:simple} {{rname=Inteligencia Salvación}} {{mod=@{intelligence_save_bonus}}} {{r1=[[@{d20}+@{intelligence_save_bonus}@{pbd_safe}]]}} @{rtype}+@{intelligence_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}">Inteligencia</button>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_wisdom_save_prof" title="@{wisdom_save_prof}" value="(@{pb})">
<span></span>
</div>
<span name="attr_wisdom_save_bonus" title="@{wisdom_save_bonus}">0</span>
<button type="roll" name="roll_wisdom_save" value="@{wtype}&{template:simple} {{rname=Sabiduría Salvación}} {{mod=@{wisdom_save_bonus}}} {{r1=[[@{d20}+@{wisdom_save_bonus}@{pbd_safe}]]}} @{rtype}+@{wisdom_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}">Sabiduría</button>
</div>
<div class="sheet-pc-skill">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_charisma_save_prof" title="@{charisma_save_prof}" value="(@{pb})">
<span></span>
</div>
<span name="attr_charisma_save_bonus" title="@{charisma_save_bonus}">0</span>
<button type="roll" name="roll_charisma_save" value="@{wtype}&{template:simple} {{rname=Carisma Salvación}} {{mod=@{charisma_save_bonus}}} {{r1=[[@{d20}+@{charisma_save_bonus}@{pbd_safe}]]}} @{rtype}+@{charisma_save_bonus}@{pbd_safe}]]}} {{global=@{global_save_mod}}} @{charname_output}">Carisma</button>
</div>
<input type="hidden" name="attr_global_save_mod_flag" class="sheet-field-toggle">
<div class="sheet-form sheet-form-inline">
<div class="sheet-form-header">Global Salvación Modifiers</div>
<div class="sheet-form-body">
<fieldset class="repeating_savemod">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Modifier</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_global_save_active_flag" value="1">
</label>
<input type="text" name="attr_global_save_name">
</div>
<div class="sheet-form-group">
<label>Roll:</label>
<input type="text" name="attr_global_save_roll">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-saving-throw-modifier">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_global_save_active_flag" value="1">
<span></span>
</div>
<span name="attr_global_save_name"></span><span name="attr_global_save_roll"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<!--<div class="sheet-container-well sheet-container-well-trackers">
<div class="sheet-container-box sheet-pc-perception">
<div class="sheet-container-header">Passive Perception</div>
<div class="sheet-container-body">
<input type="text" name="attr_passive_wisdom" title="@{passive_wisdom}" value="(10+@{perception_bonus}+@{passiveperceptionmod})" disabled="true" hidden>
<span name="attr_passive_wisdom" title="@{passive_wisdom}"></span>
</div>
</div>
<div class="sheet-container-bar sheet-pc-fate">
<div class="sheet-container-header">Fate</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_fate_1" title="@{fate_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_fate_2" title="@{fate_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_fate_3" title="@{fate_3}">
<span></span>
</div>
</div>
</div>
<div class="sheet-container-bar sheet-pc-inspiration">
<div class="sheet-container-header">Inspiration</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_inspiration_1" title="@{inspiration_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_inspiration_2" title="@{inspiration_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_inspiration_3" title="@{inspiration_3}">
<span></span>
</div>
</div>
</div>
</div>-->
<div class="sheet-grouping-pc-health-conditions">
<!--<div class="sheet-container-panel sheet-pc-health">
<div class="sheet-container-header">Health</div>
<div class="sheet-container-body">
<ul class="sheet-list-conditions">
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="0" title="@{condition_health}">
<span title="@{condition_health}">Robust</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="1" title="@{condition_health}">
<span title="@{condition_health}">Healthy</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="2" checked="checked" title="@{condition_health}">
<span title="@{condition_health}">Ok</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="3" title="@{condition_health}">
<span title="@{condition_health}">Hit</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="4" title="@{condition_health}">
<span title="@{condition_health}">Bloodied</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="5" title="@{condition_health}">
<span title="@{condition_health}">Hurt</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_health" value="6" title="@{condition_health}">
<span title="@{condition_health}">Critical</span>
</label>
</li>
</ul>
</div>
</div>-->
<!--<div class="sheet-container-panel sheet-pc-wounds">
<div class="sheet-container-header">Wounds & Injuries</div>
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span></span>
<span>Description</span>
</div>
<span name="attr_wounds_exhaustion_mod" class="sheet-calculated sheet-hidden">0</span>
<fieldset class="repeating_wounds">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Wound/Injury</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<input type="text" name="attr_wound_descrition">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_wound_untreated" value="1" checked="checked">
<span>Is untreated</span>
</label>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-wound">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_wound_untreated" value="1" checked="checked">
<span></span>
</div>
<span name="attr_wound_descrition"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>-->
</div>
<!--<input type="hidden" name="attr_show_survival_conditions" value="1" class="sheet-field-toggle">
<div class="sheet-container-well sheet-container-well-conditions">
<div class="sheet-container-panel sheet-pc-conditions">
<div class="sheet-container-header">
<span>Hunger</span>
<span>Thirst</span>
<span>Fatigue</span>
<span>Temperature</span>
</div>
<div class="sheet-container-body">
<ul class="sheet-list-conditions">
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="0" title="@{condition_hunger}">
<span title="@{condition_hunger}">Stuffed</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="1" title="@{condition_hunger}">
<span title="@{condition_hunger}">Well-fed</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="2" checked="checked" title="@{condition_hunger}">
<span title="@{condition_hunger}">Ok</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="3" title="@{condition_hunger}">
<span title="@{condition_hunger}">Peckish</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="4" title="@{condition_hunger}">
<span title="@{condition_hunger}">Hungry</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="5" title="@{condition_hunger}">
<span title="@{condition_hunger}">Ravenous</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_hunger" value="6" title="@{condition_hunger}">
<span title="@{condition_hunger}">Starving</span>
</label>
</li>
</ul>
<ul class="sheet-list-conditions">
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="0" title="@{condition_thirst}">
<span title="@{condition_thirst}">Quenched</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="1" title="@{condition_thirst}">
<span title="@{condition_thirst}">Refreshed</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="2" checked="checked" title="@{condition_thirst}">
<span title="@{condition_thirst}">Ok</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="3" title="@{condition_thirst}">
<span title="@{condition_thirst}">Parched</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="4" title="@{condition_thirst}">
<span title="@{condition_thirst}">Thirsty</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="5" title="@{condition_thirst}">
<span title="@{condition_thirst}">Dry</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_thirst" value="6" title="@{condition_thirst}">
<span title="@{condition_thirst}">Dehydrated</span>
</label>
</li>
</ul>
<ul class="sheet-list-conditions">
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="0" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Energised</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="1" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Well-rested</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="2" checked="checked" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Ok</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="3" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Tired</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="4" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Sleepy</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="5" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Very sleepy</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_fatigue" value="6" title="@{condition_fatigue}">
<span title="@{condition_fatigue}">Barely awake</span>
</label>
</li>
</ul>
<ul class="sheet-list-conditions">
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="0" title="@{condition_temperature}">
<span title="@{condition_temperature}">Perfect</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="1" title="@{condition_temperature}">
<span title="@{condition_temperature}">Comfortable</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="2" checked="checked" title="@{condition_temperature}">
<span title="@{condition_temperature}">Ok</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="3" title="@{condition_temperature}">
<span title="@{condition_temperature}">Noticable</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="4" title="@{condition_temperature}">
<span title="@{condition_temperature}">Uncomfortable</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="5" title="@{condition_temperature}">
<span title="@{condition_temperature}">Overwhelming</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_condition_temperature" value="6" title="@{condition_temperature}">
<span title="@{condition_temperature}">Unbearable</span>
</label>
</li>
</ul>
</div>
</div>
<div class="sheet-container-bar sheet-pc-rations">
<div class="sheet-container-header">Rations</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_1" title="@{ration_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_2" title="@{ration_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_3" title="@{ration_3}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_4" title="@{ration_4}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_5" title="@{ration_5}">
<span></span>
</div>
</div>
</div>
<div class="sheet-container-bar sheet-pc-water">
<div class="sheet-container-header">Waterskin</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_1" title="@{waterskin_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_2" title="@{waterskin_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_3" title="@{waterskin_3}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_4" title="@{waterskin_4}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_5" title="@{waterskin_5}">
<span></span>
</div>
</div>
</div>
<div class="sheet-container-box sheet-pc-exhaustion">
<div class="sheet-container-header">Exhaustion</div>
<div class="sheet-container-body">
<input type="text" name="attr_exhaustion_base" title="@{exhaustion_base}" value="0">
<span name="attr_exhaustion_wounds" title="@{exhaustion_wounds}"></span>
<span name="attr_exhaustion_conditions" title="@{exhaustion_conditions}"></span>
<span name="attr_exhaustion_total" title="@{exhaustion_total}"></span>
</div>
<div class="sheet-container-footer">
<span>Base</span>
<span>Wounds</span>
<span>Cond.</span>
<span>Total</span>
</div>
</div>
</div>
</div>-->
<!--<div class="sheet-container-well sheet-container-well-attacks">
<div class="sheet-container-box sheet-pc-spell-ability">
<div class="sheet-container-header">Habilidad de Lanzamiento de Conjuros</div>
<div class="sheet-container-body">
<select name="attr_spellcasting_ability" title="@{spellcasting_ability}">
<option value="0*"></option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
</div>
<div class="sheet-container-box sheet-pc-spell-dc">
<div class="sheet-container-header">
<button type="roll" name="roll_burnout" value="@{wtype}&{template:simple} {{rname=Saving Throw Attack}} {{mod=@{spell_save_dc}}} {{r1=[[@{d20}+[[@{spell_save_dc}]]]]}} {{normal=1}} @{charname_output}">Spell Salvación DC</button>
</div>
<div class="sheet-container-body">
<span name="attr_spell_save_dc" title="@{spell_save_dc}"></span>
</div>
</div>
<div class="sheet-container-box sheet-pc-spell-attack">
<div class="sheet-container-header">Spell Attack Bonus</div>
<div class="sheet-container-body">
<span name="attr_spell_attack_bonus" title="@{spell_attack_bonus}"></span>
</div>
</div>
<div class="sheet-container-box sheet-pc-resource-class">
<div class="sheet-container-header">
<input type="text" name="attr_class_resource_name" title="@{class_resource_name}" class="sheet-input-overlay">
<span name="attr_class_resource_name" title="@{class_resource_name}">Class Resource</span>
</div>
<div class="sheet-container-body">
<input type="text" name="attr_class_resource" title="@{class_resource}">
<span>/</span>
<input type="text" name="attr_class_resource_max" title="@{class_resource_max}">
</div>
</div>
<div class="sheet-container-box sheet-pc-resource-other">
<div class="sheet-container-header">
<input type="text" name="attr_other_resource_name" title="@{other_resource_name}" class="sheet-input-overlay">
<span name="attr_other_resource_name">Other Resource</span>
</div>
<div class="sheet-container-body">
<input type="text" name="attr_other_resource" title="@{other_resource}">
<span>/</span>
<input type="text" name="attr_other_resource_max" title="@{other_resource_max}">
</div>
</div>
<div class="sheet-container-box sheet-pc-burnout">
<div class="sheet-container-header">
<button type="roll" name="roll_burnout" value="@{wtype}&{template:simple} {{rname=Spell Burnout}} {{mod=@{spell_burnout}}} {{r1=[[@{spell_burnout}]]}} {{normal=1}} @{charname_output}">Spell Burnout</button>
</div>
<div class="sheet-container-body">
<select name="attr_spell_burnout" title="@{spell_burnout}">
<option value=""></option>
<option value="d12">d12</option>
<option value="d10">d10</option>
<option value="d8">d8</option>
<option value="d6">d6</option>
<option value="d4">d4</option>
</select>
</div>
</div>
<div class="sheet-container-panel sheet-pc-resources">
<div class="sheet-container-header">Other Resources</div>
<div class="sheet-container-body">
<fieldset class="repeating_resource">
<div class="sheet-fieldset-item sheet-fieldset-item-resource">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Resource</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_resourcename">
</div>
<div class="sheet-form-group">
<label>Amount:</label>
<input type="text" name="attr_resourceamount">
<label>Max:</label>
<input type="text" name="attr_resourcemax">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-resource">
<span name="attr_resourcename"></span>
<span name="attr_resourceamount"></span>
<span name="attr_resourcemax"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>-->
<!--<div class="sheet-container-effects">
<input type="hidden" name="attr_show_stress_flag" value="1" class="sheet-field-toggle">
<div class="sheet-container-well sheet-container-well-stress">
<div class="sheet-container-box sheet-pc-stress">
<div class="sheet-container-header">Stress</div>
<div class="sheet-container-body">
<span name="attr_stress_max" class="sheet-calculated sheet-hidden">40</span>
<input type="text" name="attr_stress" title="@{stress}" value="0">
</div>
</div>
<div class="sheet-container-panel sheet-pc-stress-levels">
<div class="sheet-container-header">Stress Levels</div>
<div class="sheet-container-body">
<ul>
<li>
<label class="sheet-checkbox">
<input type="checkbox" name="attr_stress_state_20" value="1" title="@{stress_state_20}">
<span title="@{stress_state_20}"><strong>20:</strong> Affliction</span>
</label>
</li>
<li>
<label class="sheet-checkbox">
<input type="checkbox" name="attr_stress_state_30" value="1" title="@{stress_state_30}">
<span title="@{stress_state_30}"><strong>30:</strong> Affliction</span>
</label>
</li>
<li>
<label class="sheet-checkbox">
<input type="checkbox" name="attr_stress_state_35" value="1" title="@{stress_state_35}">
<span title="@{stress_state_35}"><strong>35:</strong> Affliction</span>
</label>
</li>
<li>
<label class="sheet-checkbox">
<input type="checkbox" name="attr_stress_state_40" value="1" title="@{stress_state_40}">
<span title="@{stress_state_40}"><strong>40:</strong> Breakpoint</span>
</label>
</li>
</ul>
</div>
</div>
<div class="sheet-container-panel sheet-pc-afflictions">
<div class="sheet-container-header">Afflictions</div>
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span>Affliction</span>
<span>Effect</span>
</div>
<fieldset class="repeating_afflictions">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Affliction</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<select name="attr_affliction">
<option value="Acute: Advantage on INT checks/saves">Acute</option>
<option value="Anxiety: Disadvantage on Stress checks">Anxiety</option>
<option value="Courageous: Advantage on CHA checks/saves">Courageous</option>
<option value="Fearful: Disadvantage on WIS checks/saves">Fearful</option>
<option value="Focused: +2 to all attack rolls">Focused</option>
<option value="Hopelessness: Disadvantage on STR checks/saves">Hopelessness</option>
<option value="Hypochondria: Hit point maximum is halved">Hypochondria</option>
<option value="Irrational: Disadvantage on INT checks/saves">Irrational</option>
<option value="Lethargic: +1 exhaustion until removed">Lethargic</option>
<option value="Mania: Disadvantage on attack rolls">Mania</option>
<option value="Masochistic: Disadvantage on CON checks/saves">Masochistic</option>
<option value="Narcissistic: Disadvantage on ability checks">Narcissistic</option>
<option value="Panic: Disadvantage on DEX checks/saves">Panic</option>
<option value="Paranoid: Speed is halved">Paranoid</option>
<option value="Perceptive: Advantage on WIS checks/saves">Perceptive</option>
<option value="Powerful: +2 to all damage rolls">Powerful</option>
<option value="Selfish: Disadvantage on CHA checks/saves">Selfish</option>
<option value="Stalwart: +2 AC">Stalwart</option>
</select>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-affliction">
<span name="attr_affliction"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="sheet-container-well sheet-container-well-effects">
<input type="hidden" name="attr_show_exhaustion_flag" value="1" class="sheet-field-toggle">
<div class="sheet-container-panel sheet-pc-exhaustion-details">
<div class="sheet-container-header">Exhaustion Effects</div>
<div class="sheet-container-body">
<ul>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="0" checked="true" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>0:</strong> None</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="1" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>1:</strong> Disadvantage on Ability Checks</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="2" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>2:</strong>Speed halved</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="3" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>3:</strong>Disadvantage on Attacks and Salvacións</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="4" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>4:</strong>Hit point maximum halved</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="5" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>5:</strong>Speed reduced to 0</span>
</label>
</li>
<li>
<label class="sheet-radio">
<input type="radio" name="attr_exhaustion_status" value="6" title="@{exhaustion_status}">
<span title="@{exhaustion_status}"><span class="sheet-pc-exhaustion-dot"></span><strong>6:</strong>Death</span>
</label>
</li>
</ul>
</div>
</div>
<div class="sheet-container-panel sheet-pc-effects">
<div class="sheet-container-header">Effects & Conditions</div>
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span></span>
<span>Description</span>
</div>
<fieldset class="repeating_effects-conditions">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Effect</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<input type="text" name="attr_descrition">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_active" value="1" checked="checked">
<span>Active</span>
</label>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-effect">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_active" value="1" checked="checked">
<span></span>
</div>
<span name="attr_descrition"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>-->
</div>
</div>
<div class="sheet-tab sheet-tab-features">
<input type="radio" name="attr_tab" value="features">
<span class="sheet-tab-label">Detalles</span>
<div class="sheet-tab-content">
<div class="sheet-container-well sheet-container-well-details">
<div class="sheet-container-panel sheet-pc-details">
<div class="sheet-container-header">Biografía</div>
<div class="sheet-container-body">
<div class="sheet-pc-detail sheet-biografia">
<textarea name="attr_otheritem-descrition"></textarea>
</div>
<!--<div class="sheet-pc-detail">
<label>Age</label>
<select name="attr_character_age" title="@{character_age}">
<option value=""></option>
<option value="young_adult">Young adult</option>
<option value="early_middle">Early-mid age</option>
<option value="late_middle">Late-mid age</option>
<option value="old">Old</option>
<option value="very_old">Very old</option>
</select>
<input type="text" name="attr_character_age_detail" title="@{character_age_detail}">
</div>
<div class="sheet-pc-detail">
<label>Size</label>
<select name="attr_size" title="@{size}">
<option value="tiny">Tiny</option>
<option value="small">Small</option>
<option value="medium" selected>Medium</option>
<option value="large">Large</option>
<option value="huge">Huge</option>
<option value="gargantuan">Gargantuan</option>
</select>
</div>
<div class="sheet-pc-detail">
<label>Height</label>
<select name="attr_character_height" title="@{character_height}">
<option value=""></option>
<option value="very_short">Very short</option>
<option value="short">Short</option>
<option value="average">Average</option>
<option value="tall">Tall</option>
<option value="very_tall">Very tall</option>
</select>
<input type="text" name="attr_character_height_detail" title="@{character_height_detail}">
</div>
<div class="sheet-pc-detail">
<label>Peso</label>
<select name="attr_character_weight" title="@{character_weight}">
<option value=""></option>
<option value="very_thin">Very thin</option>
<option value="thin">Thin</option>
<option value="average">Average</option>
<option value="fat">Fat</option>
<option value="very_fat">Very fat</option>
</select>
<input type="text" name="attr_character_weight_detail" title="@{character_weight_detail}">
</div>
<div class="sheet-pc-detail sheet-pc-detail-feature">
<label>Feature</label>
<div class="sheet-pc-detail-column">
<select name="attr_character_feature" title="@{character_feature}">
<option value=""></option>
<option value="scar">Scar</option>
<option value="tattoo">Tattoo</option>
<option value="Piercing">Piercing</option>
<option value="birthmark">Birthmark</option>
<option value="accent">Accent</option>
</select>
<input type="text" name="attr_character_feature_detail" title="@{character_feature_detail}">
</div>
</div>
<div class="sheet-pc-detail sheet-pc-detail-motivation">
<label>Motivation</label>
<div class="sheet-pc-detail-column">
<select name="attr_character_motivation" title="@{character_motivation}">
<option value=""></option>
<option value="achievement">To become the best</option>
<option value="acquisition">To obtain possessions or wealth</option>
<option value="balance">To bring all things into harmony</option>
<option value="beneficence">To protect, heal, and mend</option>
<option value="creation">To build or make new</option>
<option value="discovery">To explore, uncover, and pioneer</option>
<option value="education">To inform, teach, or train</option>
<option value="hedonism">To enjoy all things sensuous</option>
<option value="liberation">To free the self and/or others</option>
<option value="nobility">To be virtuous, honest, and brave</option>
<option value="order">To organize and reduce chaos</option>
<option value="play">To have fun, to enjoy life</option>
<option value="power">To control and lead others</option>
<option value="recognition">To gain approval, status, or fame</option>
<option value="service">To follow a person or group</option>
<option value="understanding">To seek knowledge or Sabiduría</option>
</select>
<input type="text" name="attr_character_motivation_detail" title="@{character_motivation_detail}">
</div>
</div>
<div class="sheet-pc-detail sheet-pc-detail-habit">
<label>Habit</label>
<div class="sheet-pc-detail-column">
<select name="attr_character_habit" title="@{character_habit}">
<option value=""></option>
<option value="humming">Humming</option>
<option value="dancing">Dancing</option>
<option value="sleepwalking">Sleepwalking</option>
<option value="fingernail">Fingernail biting</option>
<option value="daydreaming">Daydreaming</option>
<option value="talking">Talking in sleep</option>
<option value="whistling">Whistling</option>
<option value="name">Name dropping</option>
<option value="grooming">Constant grooming</option>
<option value="tapping">Foot tapping</option>
<option value="biting">Lip biting/licking</option>
<option value="coin">Coin flipping</option>
<option value="chewing">Chewing</option>
<option value="cracking">Knuckle cracking</option>
<option value="collects">Collects odd things</option>
<option value="singing">Singing</option>
<option value="snacking">Snacking</option>
<option value="pacing">Pacing</option>
<option value="counting">Counting</option>
<option value="snoring">Snoring</option>
<option value="beard">Beard/hair stroking</option>
<option value="nose_picking">Nose picking</option>
<option value="exaggeration">Exaggeration</option>
<option value="superstitious">Superstitious</option>
<option value="belching">Belching</option>
<option value="repeating">Repeating others</option>
<option value="smelling">Smelling things</option>
<option value="teeth">Teeth picking</option>
<option value="swearing">Swearing</option>
<option value="secrets">Telling secrets</option>
<option value="repeating_yourself">Repeating yourself</option>
</select>
<input type="text" name="attr_character_habit_detail" title="@{character_habit_detail}">
</div>
</div>
<div class="sheet-pc-detail">
<label>Family</label>
<select name="attr_character_family" title="@{character_family}">
<option value=""></option>
<option value="none">Ninguno</option>
<option value="small">Small</option>
<option value="average">Average</option>
<option value="large">Large</option>
<option value="disowned">Disowned</option>
</select>
</div>
<div class="sheet-pc-detail">
<label>Raised By</label>
<select name="attr_character_raised_by" title="@{character_raised_by}">
<option value=""></option>
<option value="natural_parents">Natural parent(s)</option>
<option value="close_family">Close family</option>
<option value="adopted">Adopted parent(s)</option>
<option value="institution">An institution</option>
<option value="yourself">Yourself</option>
</select>
</div>
<div class="sheet-pc-detail sheet-pc-detail-quest">
<label>Quest</label>
<textarea name="attr_character_quest" title="@{character_quest}"></textarea>
</div>-->
</div>
</div>
<!--<div class="sheet-container-box sheet-pc-personality">
<div class="sheet-container-header">Personality Traits</div>
<div class="sheet-container-body">
<textarea name="attr_personality_traits" title="@{personality_traits}"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-ideals">
<div class="sheet-container-header">Ideals</div>
<div class="sheet-container-body">
<textarea name="attr_ideals" title="@{ideals}"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-bonds">
<div class="sheet-container-header">Bonds</div>
<div class="sheet-container-body">
<textarea name="attr_bonds" title="@{bonds}"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-flaws">
<div class="sheet-container-header">Flaws</div>
<div class="sheet-container-body">
<textarea name="attr_flaws" title="@{flaws}"></textarea>
</div>
</div>-->
</div>
<div class="sheet-container-well sheet-container-well-memories">
<div class="sheet-container-bar sheet-pc-xp">
<div class="sheet-container-header">Experiencia</div>
<div class="sheet-container-body">
<input type="text" name="attr_experience" title="@{experience}">
</div>
</div>
<!--<div class="sheet-container-bar sheet-pc-training">
<div class="sheet-container-header">Training</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_1" title="@{training_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_2" title="@{training_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_3" title="@{training_3}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_4" title="@{training_4}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_5" title="@{training_5}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_6" title="@{training_6}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_7" title="@{training_7}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_8" title="@{training_8}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_9" title="@{training_9}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_training_10" title="@{training_10}">
<span></span>
</div>
</div>
</div>-->
<!--<div class="sheet-container-panel sheet-pc-memories">
<div class="sheet-container-header">Memories & Events</div>
<div class="sheet-container-body">
<fieldset class="repeating_memories">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Memory</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_memory_name">
</div>
<div class="sheet-form-group">
<textarea name="attr_memory_descrition"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-memory">
<span name="attr_memory_name"></span>
<span name="attr_memory_descrition"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>-->
<div class="sheet-container-panel sheet-pc-notes">
<div class="sheet-container-header">Notas Adicionales</div>
<div class="sheet-container-body">
<fieldset class="repeating_notes">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Nota</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_note_name">
</div>
<div class="sheet-form-group">
<textarea name="attr_note_descrition"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-note">
<span name="attr_note_name"></span>
<span name="attr_note_descrition"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="sheet-container-well sheet-container-well-features">
<div class="sheet-container-panel sheet-pc-features">
<div class="sheet-container-header">Características & Rasgos</div>
<div class="sheet-container-body">
<fieldset class="repeating_traits">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Rasgo</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_name">
</div>
<div class="sheet-form-group">
<label>Origen:</label>
<select name="attr_source">
<option selected="selected">Racial</option>
<option>Clase</option>
<option>Dote</option>
<option>Trasfondo</option>
<option>Otros</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tipo de Origen:</label>
<input type="text" name="attr_source_type">
</div>
<div class="sheet-form-group">
<textarea name="attr_descrition"></textarea>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_hide_details" value="1">
<span>Ocultar Detalles</span>
</label>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-feature">
<button type="roll" name="roll_output" value="@{wtype}&{template:traits} @{charname_output} {{name=@{name}}} {{source=@{source}: @{source_type}}} {{descrition=@{descrition}}}">
<div class="sheet-pc-feature-name">
<span name="attr_name"></span>
</div>
<input type="hidden" name="attr_hide_details" class="sheet-field-untoggle">
<div class="sheet-pc-feature-details">
<span class="sheet-pc-feature-source">
<span name="attr_source"></span>
<span name="attr_source_type"></span>
</span>
<span name="attr_descrition"></span>
</div>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-panel sheet-pc-proficiencies">
<div class="sheet-container-header">Competencias & Idiomas</div>
<div class="sheet-container-body">
<div class="sheet-container-body-header">
<span>Tipo</span>
<span>Competencia</span>
</div>
<input type="hidden" name="attr_simpleproficencies" value="complex">
<textarea name="attr_other_proficiencies_and_languages" hidden></textarea>
<fieldset class="repeating_proficiencies">
<div class="sheet-fieldset-item sheet-fieldset-item-proficiency">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Competencia</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<select name="attr_prof_type">
<option value="Idioma" selected="selected">Idioma</option>
<option value="Arma">Arma</option>
<option value="Armadura">Armadura</option>
<option value="Otros">Otros</option>
</select>
<input type="text" name="attr_name">
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-proficiency">
<button type="roll" name="roll_output" value="@{wtype}&{template:traits} @{charname_output} {{name=COMPETENCIA EN @{prof_type}}} {{descrition=@{name}}}">
<span name="attr_prof_type"></span>
<span name="attr_name"></span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div> <!-- Detalles -->
<!--<div class="sheet-tab sheet-tab-notes">
<input type="radio" name="attr_tab" value="notes">
<span class="sheet-tab-label">Notes</span>
<div class="sheet-tab-content">
<div class="sheet-container-well sheet-pc-notes">
<div class="sheet-container-box sheet-pc-notes-features">
<div class="sheet-container-header">Additional Features & Traits</div>
<div class="sheet-container-body">
<textarea name="attr_additional_feature_and_traits"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-notes-backstory">
<div class="sheet-container-header">Character Backstory</div>
<div class="sheet-container-body">
<textarea name="attr_character_backstory"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-notes-allies">
<div class="sheet-container-header">Allies & Organisations</div>
<div class="sheet-container-body">
<textarea name="attr_allies_and_organizations"></textarea>
</div>
</div>
<div class="sheet-container-box sheet-pc-notes-treasure">
<div class="sheet-container-header">Treasure</div>
<div class="sheet-container-body">
<textarea name="attr_treasure"></textarea>
</div>
</div>
</div>
</div>
</div>-->
<div class="sheet-tab sheet-tab-equipment">
<input type="radio" name="attr_tab" value="equipment">
<span class="sheet-tab-label">Equipo</span>
<div class="sheet-tab-content">
<!--<div class="sheet-container-well sheet-container-well-equipment-supplies">
<div class="sheet-container-bar sheet-pc-rations">
<div class="sheet-container-header">Rations</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_1" title="@{ration_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_2" title="@{ration_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_3" title="@{ration_3}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_4" title="@{ration_4}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_ration_5" title="@{ration_5}">
<span></span>
</div>
</div>
</div>
<div class="sheet-container-bar sheet-pc-water">
<div class="sheet-container-header">Waterskin</div>
<div class="sheet-container-body">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_1" title="@{waterskin_1}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_2" title="@{waterskin_2}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_3" title="@{waterskin_3}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_4" title="@{waterskin_4}">
<span></span>
</div>
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_waterskin_5" title="@{waterskin_5}">
<span></span>
</div>
</div>
</div>
</div>-->
<!--<div class="sheet-container-well sheet-container-well-equipment-general">
<div class="sheet-container-panel sheet-pc-equipment-other">
<div class="sheet-container-header">Other Items</div>
<div class="sheet-container-body">
<fieldset class="repeating_otheritems">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked"><span></span>
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" hidden class="sheet-toggle">
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Edit Item</div>
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_otheritem-name">
</div>
<div class="sheet-form-group">
<textarea name="attr_otheritem-descrition"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-otheritem">
<span name="attr_otheritem-name"></span><span name="attr_otheritem-descrition"></span>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>-->
<div class="sheet-container-well sheet-container-well-equipment-purse">
<div class="sheet-coinage">
<div class="sheet-coin sheet-reino1"></div>
<div class="sheet-coin sheet-reino2"></div>
<div class="sheet-coin sheet-reino3"></div>
<div class="sheet-coin sheet-reino4"></div>
<div class="sheet-coin sheet-reino5"></div>
<div class="sheet-coin sheet-reino6"></div>
<div class="sheet-coin sheet-reino7"></div>
<div class="sheet-coin sheet-reino8"></div>
<div class="sheet-coin sheet-reino9"></div>
</div>
<div class="sheet-container-bar sheet-pc-purse-cp">
<div class="sheet-container-header">
<input type="text" name="attr_cp_title" title="@{cp_title}" value="COBRE">
</div>
<div class="sheet-container-body">
<input type="text" name="attr_cp" title="@{cp}">
</div>
</div>
<div class="sheet-container-bar sheet-pc-purse-sp">
<div class="sheet-container-header">
<input type="text" name="attr_sp_title" title="@{sp_title}" value="PLATA">
</div>
<div class="sheet-container-body">
<input type="text" name="attr_sp" title="@{sp}">
</div>
</div>
<div class="sheet-container-bar sheet-pc-purse-gp">
<div class="sheet-container-header">
<input type="text" name="attr_gp_title" title="@{gp_title}" value="ORO">
</div>
<div class="sheet-container-body">
<input type="text" name="attr_gp" title="@{gp}">
</div>
</div>
<div class="sheet-container-bar sheet-pc-purse-pp">
<div class="sheet-container-header">
<input type="text" name="attr_pp_title" title="@{pp_title}" value="PLATINO">
</div>
<div class="sheet-container-body">
<input type="text" name="attr_pp" title="@{pp}">
</div>
</div>
</div>
<div class="sheet-container-well sheet-container-well-equipment-encumberance">
<input type="hidden" name="attr_use_inventory_slots" value="0" class="sheet-field-untoggle">
<div class="sheet-container-box sheet-pc-weight">
<div class="sheet-container-header">Peso transportado</div>
<div class="sheet-container-body">
<input type="text" name="attr_weighttotal" title="@{weighttotal}">
<span>/</span>
<span name="attr_weightmaximum" title="@{weightmaximum}"></span>
</div>
<div class="sheet-container-footer">
<span>Actual</span>
<span>Máximo</span>
</div>
</div>
<!--<input type="hidden" name="attr_use_inventory_slots" value="0" class="sheet-field-toggle">
<div class="sheet-container-box sheet-pc-slots">
<div class="sheet-container-header">Inventory Slots</div>
<div class="sheet-container-body">
<input type="text" name="attr_slotstotal" title="@{slotstotal}">
<span>/</span>
<span name="attr_slotsmaximum" title="@{slotsmaximum}"></span>
</div>
<div class="sheet-container-footer">
<span>Actual</span>
<span>Máximo</span>
</div>
</div>-->
<div class="sheet-pc-carrying-status">
<input type="hidden" class="sheet-pc-encumberance" name="attr_encumberance">
<span class="sheet-pc-unencumbered">Sin estorbo</span>
<span class="sheet-pc-encumbered">Cargado</span>
<span class="sheet-pc-heavily">Muy cargado</span>
<span class="sheet-pc-immobile">Inmóvil</span>
<span class="sheet-pc-over">Por encima de la capacidad de carga</span>
</div>
</div>
<div class="sheet-container-well sheet-container-well-equipment">
<div class="sheet-container-panel sheet-pc-equipment">
<div class="sheet-container-header">Equipo & Pertenencias</div>
<div class="sheet-container-body">
<input type="hidden" name="attr_use_inventory_slots" class="sheet-toggle-slots" value="1">
<input type="hidden" name="attr_armorwarningflag" class="sheet-field-toggle">
<div class="sheet-alert-warning">
ADVERTENCIA: Hay varias armaduras o escudos equipados y tu CA no está calculada correctamente.
</div>
<fieldset class="repeating_inventory">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form sheet-form-item">
<div class="sheet-form-header">Editar Objeto</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_equipped">
<input type="hidden" name="attr_carried">
<input type="hidden" name="attr_inventorysubflag">
<input type="hidden" name="attr_itemattackid">
<input type="hidden" name="attr_itemresourceid">
<div class="sheet-item-contents">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_itemname">
</div>
<input type="checkbox" name="attr_itemcontainer" value="1" class="sheet-toggle" hidden>
<div class="sheet-toggle-unchecked">
<div class="sheet-form-group">
<label>Cantidad</label>
<input type="text" name="attr_itemcount" value="1">
</div>
<div class="sheet-form-group">
<label>Peso:</label>
<input type="text" name="attr_itemweight">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_itemweightfixed" value="1">
<span>Fijo (Ignorar cantidad)</span>
</label>
</div>
<!--<div class="sheet-form-group">
<label>Tamaño:</label>
<select name="attr_itemsize">
<option value="0.2">Diminuto (0.2 dos )</option>
<option value="1" selected>Small (1 slot)</option>
<option value="2">Medium (2 slots)</option>
<option value="3">Large (3 slots)</option>
<option value="6">X-Large (6 slots)</option>
<option value="9">XX-Large (9 slots)</option>
<option value="12">XXX-Large (12 slots)</option>
<option value="15">XXXX-Large (15 slots)</option>
<option value="18">XXXXX-Large (18 slots)</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_itemslotsfixed" value="1">
<span>Fixed (Ignore quantity)</span>
</label>
</div>-->
<!--<div class="sheet-form-group sheet-item-columns-2">
<div class="sheet-form-group">
<label>Notches:</label>
<input type="text" name="attr_itemnotches" value="0">
</div>
<div class="sheet-form-group">
<label>Quality:</label>
<select name="attr_itemquality">
<option value="" selected="selected"></option>
<option value="pristine">Pristine</option>
<option value="worn">Worn</option>
<option value="wellworn">Well-worn</option>
<option value="scarred">Scarred</option>
<option value="broken">Broken</option>
</select>
</div>
</div>-->
<div class="sheet-form-group">
<label>Propiedades:</label>
<input type="text" name="attr_itemproperties">
</div>
<div class="sheet-form-group">
<label>Modificadores:</label>
<input type="text" name="attr_itemmodifiers">
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_itemcontent"></textarea>
</div>
</div>
<div class="sheet-toggle-checked">
<div class="sheet-item-columns-2">
<!--<div class="sheet-form-group">
<label>Tipo:</label>
<select name="attr_itemcontainer_type">
<option value="bag" selected="selected">Bag</option>
<option value="belt">Belt</option>
<option value="pouch">Pouch</option>
<option value="quiver">Quiver</option>
<option value="sheath">Sheath</option>
<option value="stash">Stash</option>
<option value="property">Property</option>
<option value="vehicle">Vehicle</option>
<option value="worn">Worn</option>
</select>
</div>-->
<!--<div class="sheet-form-group">
<label>Max. Capacity (Slots):</label>
<input type="text" name="attr_itemcontainer_slots" value="3">
</div>-->
</div>
<!--<div class="sheet-form-group">
<label>Inventory Slots Modifier:</label>
<input type="text" name="attr_itemcontainer_slots_modifier">
</div>-->
</div>
</div>
<div class="sheet-item-options">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_equipped" value="1" checked="checked">
<span>Equipado</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_carried" value="1" checked="checked">
<span>Transportado</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_itemcontainer" value="1">
<span>Contenedor</span>
</label>
</div>
<input type="checkbox" name="attr_itemcontainer" value="1" class="sheet-toggle" hidden>
<!--<div class="sheet-toggle-unchecked">
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_useasresource" value="1">
<span>Usar como recurso</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_hasattack" value="1">
<span>Has an Attack</span>
</label>
</div>
</div>-->
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<input type="checkbox" name="attr_itemcontainer" value="1" class="sheet-toggle" hidden>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-item">
<div class="sheet-pc-item-header">
<span>Nombre del Objeto</span>
<span>Cantidad</span>
<span>Peso</span>
<span>huecos</span>
<span>Muescas</span>
</div>
<div class="sheet-pc-item-content">
<span class="sheet-pc-item-name">
<input type="hidden" name="attr_equipped" value="1" class="sheet-field-toggle">
<span class="sheet-pc-item-equipped"><strong>E</strong></span>
<input type="hidden" name="attr_carried" value="1" class="sheet-field-toggle">
<span class="sheet-pc-item-carried"><strong>C</strong></span>
<span name="attr_itemname"></span>
</span>
<span class="sheet-pc-item-quantity">
<input type="text" name="attr_itemcount">
</span>
<span class="sheet-pc-item-weight">
<input type="text" name="attr_itemweight">
<span name="attr_itemweight"></span>
</span>
<span class="sheet-pc-item-slots">
<input type="text" name="attr_itemsize">
</span>
<span class="sheet-pc-item-notches">
<input type="text" name="attr_itemnotches">
</span>
</div>
</div>
</div>
<div class="sheet-toggle-checked">
<div class="sheet-pc-equipment-container">
<input type="hidden" name="attr_equipped" value="1" class="sheet-field-toggle">
<span class="sheet-pc-item-equipped"><strong>E</strong></span>
<input type="hidden" name="attr_carried" value="1" class="sheet-field-toggle">
<span class="sheet-pc-item-carried"><strong>C</strong></span>
<span name="attr_itemname"></span>
<span class="sheet-pc-equipment-container-slots">
(
<span name="attr_itemcontainer_type"></span>
<input type="hidden" name="attr_itemcontainer_slots" class="sheet-field-toggle">
<span>· capacity <span name="attr_itemcontainer_slots"></span></span>
<input type="hidden" name="attr_itemcontainer_slots_modifier" class="sheet-field-toggle">
<span>· extra slots <span name="attr_itemcontainer_slots_modifier"></span></span>
)
</span>
</div>
<div class="sheet-pc-equipment-container-footer">
<span>Nombre del Objeto</span>
<span>Cantidad</span>
<span>Peso</span>
<span>huecos</span>
<span>Muescas</span>
</div>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-tab sheet-tab-spells">
<input type="radio" name="attr_tab" value="spells">
<span class="sheet-tab-label">Conjuros</span>
<div class="sheet-tab-content">
<div class="sheet-container-well sheet-container-well-spell-attributes">
<div class="sheet-container-box sheet-pc-spell-ability">
<div class="sheet-container-header">Habilidad de Lanzamiento de Conjuros</div>
<div class="sheet-container-body">
<select name="attr_spellcasting_ability" title="@{spellcasting_ability}">
<option value="0*"></option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
</div>
<div class="sheet-container-box sheet-pc-spell-dc">
<div class="sheet-container-header">
<button type="roll" name="roll_burnout" value="@{wtype}&{template:simple} {{rname=Saving Throw Attack}} {{mod=@{spell_save_dc}}} {{r1=[[@{d20}+[[@{spell_save_dc}]]]]}} {{normal=1}} @{charname_output}">CD Salvación de Conjuro</button>
</div>
<div class="sheet-container-body">
<span name="attr_spell_save_dc" title="@{spell_save_dc}"></span>
</div>
</div>
<div class="sheet-container-box sheet-pc-spell-attack">
<div class="sheet-container-header">Bono Ataque de Conjuro</div>
<div class="sheet-container-body">
<span name="attr_spell_attack_bonus" title="@{spell_attack_bonus}"></span>
</div>
</div>
<div class="sheet-container-box sheet-pc-resource-class">
<div class="sheet-container-header">
<input type="text" name="attr_class_resource_name" title="@{class_resource_name}" class="sheet-input-overlay">
<span name="attr_class_resource_name">Recurso de Clase</span>
</div>
<div class="sheet-container-body">
<input type="text" name="attr_class_resource" title="@{class_resource}">
<span>/</span>
<input type="text" name="attr_class_resource_max" title="@{class_resource_max}">
</div>
</div>
<!--<div class="sheet-container-box sheet-pc-resource-other">
<div class="sheet-container-header">
<input type="text" name="attr_other_resource_name" title="@{other_resource_name}" class="sheet-input-overlay">
<span name="attr_other_resource_name">Otro Recurso</span>
</div>
<div class="sheet-container-body">
<input type="text" name="attr_other_resource" title="@{other_resource}">
<span>/</span>
<input type="text" name="attr_other_resource_max" title="@{other_resource_max}">
</div>
</div>-->
<!--<div class="sheet-container-box sheet-pc-burnout">
<div class="sheet-container-header">
<button type="roll" name="roll_burnout" value="@{wtype}&{template:simple} {{rname=Spell Burnout}} {{mod=@{spell_burnout}}} {{r1=[[@{spell_burnout}]]}} {{normal=1}} @{charname_output}">Spell Burnout</button>
</div>
<div class="sheet-container-body">
<select name="attr_spell_burnout" title="@{spell_burnout}">
<option value=""></option>
<option value="d12">d12</option>
<option value="d10">d10</option>
<option value="d8">d8</option>
<option value="d6">d6</option>
<option value="d4">d4</option>
</select>
</div>
</div>-->
<div class="sheet-container-box sheet-pc-spell-symbols">
<div class="sheet-container-header">Componentes de Conjuro</div>
<div class="sheet-container-body">
<ul>
<li><strong>Verbal (V):</strong> Ha de ser capaz de hablar con claridad.</li>
<li><strong>Somático (S):</strong> Ha de tener una mano libre.</li>
<li><strong>Material (M):</strong> Ha de tener los componentes necesarios.</li>
</ul>
</div>
</div>
</div>
<div class="sheet-container-well sheet-container-well-spells">
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">0</span>
<span class="sheet-spells-slots sheet-spells-slots-cantrip">Trucos</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-cantrip">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="cantrip">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Progresión del truco:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">Dado del Truco</option>
<option value="Cantrip Beam">Rayos del truco</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">1</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl1_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl1_slots_expended}">
<span>/</span><span name="attr_lvl1_slots_total" class="sheet-spells-total" title="@{lvl1_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-1">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="1">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">2</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl2_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl2_slots_expended}">
<span>/</span><span name="attr_lvl2_slots_total" class="sheet-spells-total" title="@{lv2_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-2">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="2">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">3</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl3_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl3_slots_expended}">
<span>/</span><span name="attr_lvl3_slots_total" class="sheet-spells-total" title="@{lv3_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-3">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="3">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Característica de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Progresión del Truco:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">Dado del Truco</option>
<option value="Cantrip Beam">Rayos del Truco</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">4</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl4_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl4_slots_expended}">
<span>/</span><span name="attr_lvl4_slots_total" class="sheet-spells-total" title="@{lv4_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-4">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="4">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">5</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl5_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl5_slots_expended}">
<span>/</span><span name="attr_lvl5_slots_total" class="sheet-spells-total" title="@{lv5_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-5">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="5">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">6</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl6_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl6_slots_expended}">
<span>/</span><span name="attr_lvl6_slots_total" class="sheet-spells-total" title="@{lvl6_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-6">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="6">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">7</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl7_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl7_slots_expended}">
<span>/</span><span name="attr_lvl7_slots_total" class="sheet-spells-total" title="@{lvl7_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-7">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="7">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-spells-8-9">
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">8</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl8_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl8_slots_expended}">
<span>/</span><span name="attr_lvl8_slots_total" class="sheet-spells-total" title="@{lvl8_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-8">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="8">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
<div class="sheet-container-spell">
<div class="sheet-container-header">
<span class="sheet-spells-level">9</span>
<span class="sheet-spells-slots">
<input type="text" name="attr_lvl9_slots_expended" value="0" class="sheet-spells-expended" title="@{lvl9_slots_expended}">
<span>/</span><span name="attr_lvl9_slots_total" class="sheet-spells-total" title="@{lvl9_slots_total}">0</span><span>huecos</span>
</span>
</div>
<div class="sheet-container-body">
<fieldset class="repeating_spell-9">
<div class="sheet-fieldset-item">
<div class="sheet-checkbox-cog">
<input type="checkbox" name="attr_options-flag" checked="checked">
<span class="sheet-toggle-icon"></span>
</div>
<input type="checkbox" name="attr_options-flag" checked="checked" class="sheet-toggle" hidden>
<div class="sheet-toggle-checked">
<div class="sheet-form">
<div class="sheet-form-header">Editar Conjuro</div>
<div class="sheet-form-body">
<input type="hidden" name="attr_spellattackid">
<input type="hidden" name="attr_spelllevel" value="9">
<input type="hidden" name="attr_spelloutput">
<input type="hidden" name="attr_spellcomp">
<div class="sheet-form-group">
<label>Nombre:</label>
<input type="text" name="attr_spellname">
</div>
<div class="sheet-form-group">
<label>Escuela:</label>
<select name="attr_spellschool">
<option value="abjuration">Abjuración</option>
<option value="conjuration">Conjuración</option>
<option value="divination">Adivinación</option>
<option value="enchantment">Encantamiento</option>
<option value="evocation">Evocación</option>
<option value="illusion">Ilusión</option>
<option value="necromancy">Necromancia</option>
<option value="transmutation">Transmutación</option>
</select>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellritual" value="{{ritual=1}}">
<span>Ritual</span>
</label>
</div>
<div class="sheet-form-group">
<label>Tiempo de Lanzamiento:</label>
<input type="text" name="attr_spellcastingtime">
</div>
<div class="sheet-form-group">
<label>Alcance:</label>
<input type="text" name="attr_spellrange">
</div>
<div class="sheet-form-group">
<label>Objetivo:</label>
<input type="text" name="attr_spelltarget">
</div>
<div class="sheet-form-group">
<label>Componentes:</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_v" value="{{v=1}}" checked="checked">
<span>V</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_s" value="{{s=1}}" checked="checked">
<span>S</span>
</label>
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellcomp_m" value="{{m=1}}" checked="checked">
<span>M</span>
</label>
<input type="text" name="attr_spellcomp_materials">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spellconcentration" value="{{concentration=1}}">
<span>Concentración</span>
</label>
</div>
<div class="sheet-form-group">
<label>Duración:</label>
<input type="text" name="attr_spellduration">
</div>
<div class="sheet-form-group">
<label>Habilidad de Lanzamiento de Conjuros</label>
<select name="attr_spell_ability">
<option value="0*">&mdash;</option>
<option value="spell">CONJURO</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Innato:</label>
<input type="text" name="attr_innate" value="">
</div>
<div class="sheet-form-group">
<label>Salida:</label>
<select name="attr_spelloutput">
<option value="SPELLCARD">CARTA DE CONJURO</option>
<option value="ATTACK">ATAQUE</option>
</select>
</div>
<div class="sheet-form-group">
<label>Ataque de Conjuro:</label>
<select name="attr_spellattack">
<option value="None">Ninguno</option>
<option value="Melee">Cuerpo a Cuerpo</option>
<option value="Ranged">A Distancia</option>
</select>
</div>
<div class="sheet-form-group">
<label>Daño 1:</label>
<input type="text" name="attr_spelldamage">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype">
</div>
<div class="sheet-form-group">
<label>Daño 2:</label>
<input type="text" name="attr_spelldamage2">
<label>Tipo:</label>
<input type="text" name="attr_spelldamagetype2">
</div>
<div class="sheet-form-group">
<label>Curación:</label>
<input type="text" name="attr_spellhealing">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_spelldmgmod" value="Yes">
<span>Sumar Bono de Característica al Daño o la Curación</span>
</label>
</div>
<div class="sheet-form-group">
<label>Cantrip Progression:</label>
<select name="attr_spell_damage_progression">
<option value="" selected="selected">&mdash;</option>
<option value="Cantrip Dice">CANTRIP DICE</option>
<option value="Cantrip Beam">CANTRIP BEAM</option>
</select>
</div>
<div class="sheet-form-group">
<label>Tirada de Salvación:</label>
<select name="attr_spellsave">
<option value="" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<label>Efecto:</label>
<input type="text" name="attr_spellsavesuccess">
</div>
<div class="sheet-form-group">
<label>Daño Lanzamiento Nv. Sup.:</label>
<input type="text" name="attr_spellhldie" placeholder="1">
<select name="attr_spellhldietype">
<option value="" selected="selected">&mdash;</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_spellhlbonus" placeholder="0">
</div>
<div class="sheet-form-group">
<label>Incluir la Descripción del Conjuro en el Ataque:</label>
<select name="attr_includedesc">
<option value="off" selected="selected">Desactivado</option>
<option value="partial">Parcial</option>
<option value="on">Activado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Descripción:</label>
<textarea name="attr_spelldescrition"></textarea>
</div>
<div class="sheet-form-group">
<label>A Niveles más Altos:</label>
<textarea name="attr_spellathigherlevels"></textarea>
</div>
</div>
</div>
</div>
<div class="sheet-toggle-unchecked">
<div class="sheet-pc-spell">
<div class="sheet-checkbox-image">
<input type="checkbox" name="attr_spellprepared" value="1">
<span></span>
</div>
<input type="hidden" name="attr_rollcontent" value="@{wtype}&{template:spell} {{level=@{spellschool} @{spelllevel}}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}">
<button type="roll" name="roll_spell" value="@{rollcontent}" class="sheet-pc-spell-button">
<span class="sheet-pc-spell-name">
<span name="attr_spellname"></span>
<input type="hidden" name="attr_innate" value="" class="sheet-field-toggle">
<span name="attr_innate" class="sheet-display-brackets"></span>
</span>
<span class="sheet-pc-spell-components">
<input type="hidden" name="attr_spellritual" value="0" class="sheet-field-toggle">
<span>R</span>
<input type="hidden" name="attr_spellconcentration" value="0" class="sheet-field-toggle">
<span>C</span>
<input type="hidden" name="attr_spellcomp_v" value="{{v=1}}" class="sheet-field-toggle">
<span>V</span>
<input type="hidden" name="attr_spellcomp_s" value="{{s=1}}" class="sheet-field-toggle">
<span>S</span>
<input type="hidden" name="attr_spellcomp_m" value="{{m=1}}" class="sheet-field-toggle">
<span>M</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
<input type="hidden" name="attr_spellicon_flag" value="all">
</div>
</div>
<div class="sheet-tab sheet-tab-options" style="display: none;">
<input type="radio" name="attr_tab" value="options">
<span class="sheet-tab-label">Options</span>
<div class="sheet-tab-content">
<div class="sheet-container-well sheet-pc-options">
<div class="sheet-container-panel sheet-pc-option-class">
<div class="sheet-container-header">Class Options (<span name="attr_class"></span>)</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Hit Die:</label>
<select name="attr_hitdietype" title="@{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-form-group">
<label>Carrying Capacity Modifier:</label>
<input type="text" name="attr_carrying_capacity_mod" placeholder="*2/+2/-2" title="@{carrying_capacity_mod}">
</div>
<div class="sheet-form-group">
<label>Global Magic Attack Modifier:</label>
<input type="text" name="attr_globalmagicmod" placeholder="0" title="@{globalmagicmod}">
</div>
<div class="sheet-form-group">
<label>Magic Caster Level:</label>
<input type="text" name="attr_caster_level" title="@{caster_level}">
</div>
<div class="sheet-form-group">
<label>Spell Salvación DC Modifier:</label>
<input type="text" name="attr_spell_dc_mod" placeholder="0" title="@{spell_dc_mod}">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{halflingluck_flag}">
<input type="checkbox" name="attr_halflingluck_flag" value="1">
<span>Halfling Luck</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{arcane_fighter}">
<input type="checkbox" name="attr_arcane_fighter" value="1">
<span>Arcane Fighter</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{arcane_rogue}">
<input type="checkbox" name="attr_arcane_rogue" value="1">
<span>Arcane Rogue</span>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-multiclass">
<div class="sheet-container-header">Multiclass Options</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{multiclass1_flag}">
<input type="checkbox" name="attr_multiclass1_flag" value="1">
<span>2nd Class:</span>
</label>
<select name="attr_multiclass1" title="@{multiclass1}">
<option value="barbarian">Barbarian</option>
<option value="bard">Bard</option>
<option value="cleric">Cleric</option>
<option value="druid">Druid</option>
<option value="fighter">Fighter</option>
<option value="monk">Monk</option>
<option value="paladin">Paladin</option>
<option value="ranger">Ranger</option>
<option value="rogue">Rogue</option>
<option value="sorcerer">Sorcerer</option>
<option value="warlock">Warlock</option>
<option value="wizard">Wizard</option>
</select>
<label>Level:</label>
<input type="text" name="attr_multiclass1_lvl" value="1" title="@{multiclass1_lvl}">
</div>
<div class="sheet-form-group">
<label>Subclass:</label>
<input type="text" name="attr_multiclass1_subclass" title="@{multiclass1_subclass}">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{multiclass2_flag}">
<input type="checkbox" name="attr_multiclass2_flag" value="1">
<span>3rd Class:</span>
</label>
<select name="attr_multiclass2">
<option value="barbarian">Barbarian</option>
<option value="bard">Bard</option>
<option value="cleric">Cleric</option>
<option value="druid">Druid</option>
<option value="fighter">Fighter</option>
<option value="monk">Monk</option>
<option value="paladin">Paladin</option>
<option value="ranger">Ranger</option>
<option value="rogue">Rogue</option>
<option value="sorcerer">Sorcerer</option>
<option value="warlock">Warlock</option>
<option value="wizard">Wizard</option>
</select>
<label>Level:</label>
<input type="text" name="attr_multiclass2_lvl" value="1" title="@{multiclass2_lvl}">
</div>
<div class="sheet-form-group">
<label>Subclass:</label>
<input type="text" name="attr_multiclass2_subclass" title="@{multiclass2_subclass}">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox">
<input type="checkbox" name="attr_multiclass3_flag" value="1" title="@{multiclass3_flag}">
<span>4th Class:</span>
</label>
<select name="attr_multiclass3">
<option value="barbarian">Barbarian</option>
<option value="bard">Bard</option>
<option value="cleric">Cleric</option>
<option value="druid">Druid</option>
<option value="fighter">Fighter</option>
<option value="monk">Monk</option>
<option value="paladin">Paladin</option>
<option value="ranger">Ranger</option>
<option value="rogue">Rogue</option>
<option value="sorcerer">Sorcerer</option>
<option value="warlock">Warlock</option>
<option value="wizard">Wizard</option>
</select>
<label>Level:</label>
<input type="text" name="attr_multiclass3_lvl" value="1" title="@{multiclass3_lvl}">
</div>
<div class="sheet-form-group">
<label>Subclass:</label>
<input type="text" name="attr_multiclass3_subclass" title="@{multiclass3_subclass}">
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-spell">
<div class="sheet-container-header">Spell Slot Modifiers</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Level 1:</label>
<input type="text" name="attr_lvl1_slots_mod" placeholder="0" title="@{lvl1_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 2:</label>
<input type="text" name="attr_lvl2_slots_mod" placeholder="0" title="@{lvl2_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 3:</label>
<input type="text" name="attr_lvl3_slots_mod" placeholder="0" title="@{lvl3_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 4:</label>
<input type="text" name="attr_lvl4_slots_mod" placeholder="0" title="@{lvl4_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 5:</label>
<input type="text" name="attr_lvl5_slots_mod" placeholder="0" title="@{lvl5_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 6:</label>
<input type="text" name="attr_lvl6_slots_mod" placeholder="0" title="@{lvl6_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 7:</label>
<input type="text" name="attr_lvl7_slots_mod" placeholder="0" title="@{lvl7_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 8:</label>
<input type="text" name="attr_lvl8_slots_mod" placeholder="0" title="@{lvl8_slots_mod}">
</div>
<div class="sheet-form-group">
<label>Level 9:</label>
<input type="text" name="attr_lvl9_slots_mod" placeholder="0" title="@{lvl9_slots_mod}">
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-class-custom">
<div class="sheet-container-header">Custom Class</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{custom_class}">
<input type="checkbox" name="attr_custom_class" value="1">
<span>Use Custom Class</span>
</label>
</div>
<div class="sheet-form-group">
<label>Class Name:</label>
<input type="text" name="attr_cust_classname" title="@{cust_classname}">
</div>
<div class="sheet-form-group">
<label>Hit Die:</label>
<select name="attr_cust_hitdietype" title="@{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-form-group">
<label>Spellcasting Ability:</label>
<select name="attr_cust_spellcasting_ability" title="@{cust_spellcasting_ability}">
<option value="0*">&mdash;</option>
<option value="@{strength_mod}+">FUE</option>
<option value="@{dexterity_mod}+">DES</option>
<option value="@{constitution_mod}+">CON</option>
<option value="@{intelligence_mod}+">INT</option>
<option value="@{wisdom_mod}+">SAB</option>
<option value="@{charisma_mod}+">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label>Spell Slots:</label>
<select name="attr_cust_spellslots" title="@{cust_spellslots}">
<option value="none">&mdash;</option>
<option value="full">FULL (Cleric, Druid, Wizard)</option>
<option value="half">HALF (Paladin, Ranger)</option>
<option value="third">THIRD (Arcane Fighter/Rogue)</option>
</select>
</div>
<div class="sheet-form-fieldset">
<div class="sheet-form-fieldset-header">Saving Throws</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{cust_strength_save_prof}">
<input type="checkbox" name="attr_cust_strength_save_prof" value="(@{pb})">
<span>Fuerza</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{cust_dexterity_save_prof}">
<input type="checkbox" name="attr_cust_dexterity_save_prof" value="(@{pb})">
<span>Destreza</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{cust_constitution_save_prof}">
<input type="checkbox" name="attr_cust_constitution_save_prof" value="(@{pb})">
<span>Constitución</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{cust_intelligence_save_prof}">
<input type="checkbox" name="attr_cust_intelligence_save_prof" value="(@{pb})">
<span>Inteligencia</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{cust_wisdom_save_prof}">
<input type="checkbox" name="attr_cust_wisdom_save_prof" value="(@{pb})">
<span>Sabiduría</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{cust_charisma_save_prof}">
<input type="checkbox" name="attr_cust_charisma_save_prof" value="(@{pb})">
<span>Carisma</span>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-general">
<div class="sheet-container-header">General Options</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Version:</label>
<input type="text" name="attr_version" value="2.2" hidden disabled>
<span name="attr_version"></span>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{npc}">
<input type="checkbox" name="attr_npc" value="1">
<span>NPC</span>
</label>
</div>
<!--<div class="sheet-form-group">
<label>Roll Queries:</label>
<select name="attr_rtype" title="@{rtype}">
<option value="{{always=1}} {{r2=[[@{d20}">Always Roll Advantage</option>
<option value="@{advantagetoggle}" selected>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}}">Query Advantage</option>
<option value="{{normal=1}} {{r2=[[0d20">Never Roll Advantage</option>
</select>
</div>
<div class="sheet-form-group">
<label>Whisper Rolls to GM:</label>
<select name="attr_wtype" title="@{wtype}">
<option value="">Never Whisper Rolls</option>
<option value="@{whispertoggle}" selected>Whisper Toggle</option>
<option value="?{Whisper?|Public Roll,|Whisper Roll,/w gm }">Query Whisper</option>
<option value="/w gm ">Always Whisper Rolls</option>
</select>
</div>-->
<div class="sheet-form-group">
<label>Auto Damage Roll:</label>
<select name="attr_dtype" title="@{dtype}">
<option value="pick">Don't Auto Roll Damage</option>
<option value="full" selected="selected">Auto Roll Damage & Crit</option>
</select>
</div>
<div class="sheet-form-group">
<label>Core Die Roll:</label>
<input type="text" name="attr_core_die" value="1d20" placeholder="1d20" title="@{core_die}">
</div>
<div class="sheet-form-group">
<label>Proficiency Bonus:</label>
<select name="attr_pb_type" title="@{pb_type}">
<option value="level">By Level (Default)</option>
<option value="die">Proficency Die (DMG)</option>
<option value="custom">Custom</option>
</select>
<input type="hidden" name="attr_pb_type">
<input type="text" name="attr_pb_custom" placeholder="2d10" title="@{pb_custom}">
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{global_save_mod_flag}">
<input type="checkbox" name="attr_global_save_mod_flag" value="1">
<span>Show Global Salvación Modifier Field</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{global_skill_mod_flag}">
<input type="checkbox" name="attr_global_skill_mod_flag" value="1">
<span>Show Global Skill Modifier Field</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{global_attack_mod_flag}">
<input type="checkbox" name="attr_global_attack_mod_flag" value="1">
<span>Show Global Attack Modifier Field</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{global_damage_mod_flag}">
<input type="checkbox" name="attr_global_damage_mod_flag" value="1">
<span>Show Global Damage Modifier Field</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{attr_global_ac_mod_flag}">
<input type="checkbox" name="attr_global_ac_mod_flag" value="1">
<span>Show Global AC Modifier Field</span>
</label>
</div>
<div class="sheet-form-group">
<label>Add Character Name to Templates:</label>
<select name="attr_charname_output" title="@{charname_output}">
<option value="{{charname=@{character_name}}}" selected="selected">Activado</option>
<option value="charname=@{character_name}">Desactivado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Level Calculations:</label>
<select name="attr_level_calculations" title="@{level_calculations}">
<option value="on" selected="selected">Activado</option>
<option value="off">Desactivado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Encumberance:</label>
<select name="attr_encumberance_setting" title="@{encumberance_setting}">
<option value="off">Simple</option>
<option value="on" selected="selected">Variant (PHB p176)</option>
<option value="disabled">Desactivado</option>
</select>
</div>
<div class="sheet-form-group">
<label>Inventory:</label>
<select name="attr_simpleinventory" title="@{simpleinventory}">
<option value="complex">Compendium Compatible</option>
<option value="simple">Simple</option>
</select>
</div>
<div class="sheet-form-group">
<label>Features and Traits:</label>
<select name="attr_simpletraits" title="@{simpletraits}">
<option value="complex">Compendium Compatible</option>
<option value="simple">Simple</option>
</select>
</div>
<div class="sheet-form-group">
<label>Proficiencies and Languages:</label>
<select name="attr_simpleproficencies" title="@{simpleproficencies}">
<option value="complex">Compendium Compatible</option>
<option value="simple">Simple</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-gdd">
<div class="sheet-container-header">Giffyglyph's Darker Dungeons</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{show_death_failures_flag}">
<input type="checkbox" name="attr_show_death_failures_flag" value="1" checked="checked">
<span>Show Death Salvación Failures Only</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{show_exhaustion_flag}">
<input type="checkbox" name="attr_show_exhaustion_flag" value="1" checked="checked">
<span>Show Exhaustion Table</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{show_stress_flag}">
<input type="checkbox" name="attr_show_stress_flag" value="1" checked="checked">
<span>Show Stress & Afflictions</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{show_survival_conditions}">
<input type="checkbox" name="attr_show_survival_conditions" value="1" checked="checked">
<span>Show Survival Conditions</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{use_intelligent_initiative}">
<input type="checkbox" name="attr_use_intelligent_initiative" value="0" checked="checked">
<span>Use Inteligencia for Initiative</span>
</label>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{use_inventory_slots}">
<input type="checkbox" name="attr_use_inventory_slots" value="1" checked="checked">
<span>Use Inventory Slots</span>
</label>
</div>
<div class="sheet-form-group">
<label>Inventory Slots Modifier</label>
<input type="text" name="attr_inventory_slots_mod" placeholder="*2/+2/-2" title="@{inventory_slots_mod}">
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-attribute">
<div class="sheet-container-header">Attribute Options</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Fuerza Modifier:</label>
<input type="text" name="attr_strength_bonus" placeholder="0" title="@{strength_bonus}">
</div>
<div class="sheet-form-group">
<label>Destreza Modifier:</label>
<input type="text" name="attr_dexterity_bonus" placeholder="0" title="@{dexterity_bonus}">
</div>
<div class="sheet-form-group">
<label>Constitución Modifier:</label>
<input type="text" name="attr_constitution_bonus" placeholder="0" title="@{constitution_bonus}">
</div>
<div class="sheet-form-group">
<label>Inteligencia Modifier:</label>
<input type="text" name="attr_intelligence_bonus" placeholder="0" title="@{intelligence_bonus}">
</div>
<div class="sheet-form-group">
<label>Sabiduría Modifier:</label>
<input type="text" name="attr_wisdom_bonus" placeholder="0" title="@{wisdom_bonus}">
</div>
<div class="sheet-form-group">
<label>Carisma Modifier:</label>
<input type="text" name="attr_charisma_bonus" placeholder="0" title="@{charisma_bonus}">
</div>
<div class="sheet-form-group">
<label>Initiative Modifier:</label>
<input type="text" name="attr_initmod" placeholder="0" title="@{initmod}">
</div>
<div class="sheet-form-group">
<label>Initiative Style:</label>
<select name="attr_initiative_style" title="@{initiative_style}">
<option value="@{d20}" selected="selected">Normal</option>
<option value="{@{d20},@{d20}}kh1">Advantage</option>
<option value="{@{d20},@{d20}}kl1">Disadvantage</option>
</select>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{init_tiebreaker}">
<input type="checkbox" name="attr_init_tiebreaker" value="@{dexterity}/100">
<span>Add Dex Tiebreaker to Initiative</span>
</label>
</div>
<div class="sheet-form-group">
<label>Armor Class Tracking:</label>
<select name="attr_custom_ac_flag" title="@{custom_ac_flag}">
<option value="0" selected="selected">Automatic</option>
<option value="1">Custom</option>
<option value="2">Desactivado</option>
</select>
</div>
<input type="hidden" name="attr_custom_ac_flag" class="sheet-field-toggle">
<div class="sheet-form-fieldset sheet-form-fieldset-custom-ac">
<div class="sheet-form-fieldset-header">CUSTOM AC</div>
<div class="sheet-form-fieldset-body">
<div class="sheet-form-group">
<label>AC:</label>
<input type="text" name="attr_custom_ac_base" placeholder="10" value="10" title="@{custom_ac_base}">
<span>+</span>
<select name="attr_custom_ac_part1" title="@{custom_ac_part1}">
<option value="none" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
<span>+</span>
<select name="attr_custom_ac_part2" title="@{custom_ac_part2}">
<option value="none" selected="selected">&mdash;</option>
<option value="Strength">FUE</option>
<option value="Dexterity">DES</option>
<option value="Constitution">CON</option>
<option value="Intelligence">INT</option>
<option value="Wisdom">SAB</option>
<option value="Charisma">CAR</option>
</select>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{custom_ac_shield}">
<input type="checkbox" name="attr_custom_ac_shield" value="yes" checked>
<span>Allow shields?</span>
</label>
</div>
</div>
</div>
<div class="sheet-form-fieldset sheet-form-fieldset-hp-modifiers">
<div class="sheet-form-fieldset-header">HP MODIFIERS</div>
<div class="sheet-form-fieldset-body">
<fieldset class="repeating_hpmod">
<div class="sheet-fieldset-item">
<div class="sheet-form-group">
<label>Level:</label>
<select name="attr_levels">
<option value="total" selected="selected">Total level</option>
<option value="base">Main class level</option>
<option value="multiclass1">Class 2 level</option>
<option value="multiclass2">Class 3 level</option>
<option value="multiclass3">Class 4 level</option>
</select>
</div>
<div class="sheet-form-group">
<label>Source:</label>
<input type="text" name="attr_source">
<label>Mod:</label>
<input type="text" name="attr_mod">
</div>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-save">
<div class="sheet-container-header">Saving Throw Options</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-body">
<div class="sheet-form-group">
<label>Fuerza Salvación Modifier:</label>
<input type="text" name="attr_strength_save_mod" placeholder="0" title="@{strength_save_mod}">
</div>
<div class="sheet-form-group">
<label>Destreza Salvación Modifier:</label>
<input type="text" name="attr_dexterity_save_mod" placeholder="0" title="@{dexterity_save_mod}">
</div>
<div class="sheet-form-group">
<label>Constitución Salvación Modifier:</label>
<input type="text" name="attr_constitution_save_mod" placeholder="0" title="@{constitution_save_mod}">
</div>
<div class="sheet-form-group">
<label>Inteligencia Salvación Modifier:</label>
<input type="text" name="attr_intelligence_save_mod" placeholder="0" title="@{intelligence_save_mod}">
</div>
<div class="sheet-form-group">
<label>Sabiduría Salvación Modifier:</label>
<input type="text" name="attr_wisdom_save_mod" placeholder="0" title="@{wisdom_save_mod}">
</div>
<div class="sheet-form-group">
<label>Carisma Salvación Modifier:</label>
<input type="text" name="attr_charisma_save_mod" placeholder="0" title="@{charisma_save_mod}">
</div>
<div class="sheet-form-group">
<label>Death Salvación Modifier:</label>
<input type="text" name="attr_death_save_mod" placeholder="0" title="@{death_save_mod}">
</div>
<div class="sheet-form-group">
<label>Global Saving Throw Modifier:</label>
<input type="text" name="attr_globalsavemod" placeholder="0" title="@{globalsavemod}">
</div>
</div>
</div>
</div>
</div>
<div class="sheet-container-panel sheet-pc-option-skill">
<div class="sheet-container-header">Skill Options</div>
<div class="sheet-container-body">
<div class="sheet-form sheet-form-borderless">
<div class="sheet-form-borderless">
<div class="sheet-form-group">
<label>Acrobacias Modifier:</label>
<input type="text" name="attr_acrobatics_flat" placeholder="0" title="@{acrobatics_flat}">
<select name="attr_acrobatics_type" title="@{acrobatics_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>T. con Animales Modifier:</label>
<input type="text" name="attr_animal_handling_flat" placeholder="0" title="@{animal_handling_flat}">
<select name="attr_animal_handling_type" title="@{animal_handling_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>C. Arcano Modifier:</label>
<input type="text" name="attr_arcana_flat" placeholder="0" title="@{arcana_flat}">
<select name="attr_arcana_type" title="@{arcana_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Atletismo Modifier:</label>
<input type="text" name="attr_athletics_flat" placeholder="0" title="@{athletics_flat}">
<select name="attr_athletics_type" title="@{athletics_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Engaño Modifier:</label>
<input type="text" name="attr_deception_flat" placeholder="0" title="@{deception_flat}">
<select name="attr_deception_type" title="@{deception_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Historia Modifier:</label>
<input type="text" name="attr_history_flat" placeholder="0" title="@{history_flat}">
<select name="attr_history_type" title="@{history_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Insight Modifier:</label>
<input type="text" name="attr_insight_flat" placeholder="0" title="@{insight_flat}">
<select name="attr_insight_type" title="@{insight_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Intimidación Modifier:</label>
<input type="text" name="attr_intimidation_flat" placeholder="0" title="@{intimidation_flat}">
<select name="attr_intimidation_type" title="@{intimidation_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Investigation Modifier:</label>
<input type="text" name="attr_investigation_flat" placeholder="0" title="@{investigation_flat}">
<select name="attr_investigation_type" title="@{investigation_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Medicina Modifier:</label>
<input type="text" name="attr_medicine_flat" placeholder="0" title="@{medicine_flat}">
<select name="attr_medicine_type" title="@{medicine_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Nature Modifier:</label>
<input type="text" name="attr_nature_flat" placeholder="0" title="@{nature_flat}">
<select name="attr_nature_type" title="@{nature_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Perception Modifier:</label>
<input type="text" name="attr_perception_flat" placeholder="0" title="@{perception_flat}">
<select name="attr_perception_type" title="@{perception_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Performance Modifier:</label>
<input type="text" name="attr_performance_flat" placeholder="0" title="@{performance_flat}">
<select name="attr_performance_type" title="@{performance_typ}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Persuasion Modifier:</label>
<input type="text" name="attr_persuasion_flat" placeholder="0" title="@{persuasion_flat}">
<select name="attr_persuasion_type" title="@{persuasion_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Religion Modifier:</label>
<input type="text" name="attr_religion_flat" placeholder="0" title="@{religion_flat}">
<select name="attr_religion_type" title="@{religion_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Sleight of Hand Modifier:</label>
<input type="text" name="attr_sleight_of_hand_flat" placeholder="0" title="@{sleight_of_hand_flat}">
<select name="attr_sleight_of_hand_type" title="@{sleight_of_hand_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Stealth Modifier:</label>
<input type="text" name="attr_stealth_flat" placeholder="0" title="@{stealth_flat}">
<select name="attr_stealth_type" title="@{stealth_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label>Survival Modifier:</label>
<input type="text" name="attr_survival_flat" placeholder="0" title="@{survival_flat}">
<select name="attr_survival_type" title="@{survival_type}">
<option value="1" selected="selected">Normal</option>
<option value="2">Expertise</option>
</select>
</div>
<div class="sheet-form-group">
<label class="sheet-form-checkbox" title="@{jack_of_all_trades}">
<input type="checkbox" name="attr_jack_of_all_trades" value="@{jack}">
<span>Jack of all Trade</span>
</label>
</div>
<div class="sheet-form-group">
<label>Passive Perception Modifier:</label>
<input type="text" name="attr_passiveperceptionmod" placeholder="0" title="@{passiveperceptionmod}">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div><!-- CLOSE PC OPTIONS -->
</div>
<!--<div class="sheet-section-pc-footer">
<p>Giffyglyph's D&D 5e Character Sheet & Trackers</p>
</div>-->
</div>
<div class="sheet-section-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_spell_save_dc" value="0">
<input type="hidden" name="attr_spell_attack_bonus" value="0">
<input type="hidden" name="attr_spell_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_exhaustion_base" value="0">
<input type="hidden" name="attr_exhaustion_wounds" value="0">
<input type="hidden" name="attr_exhaustion_conditions" value="0">
<input type="hidden" name="attr_exhaustion_total" value="0">
<input type="hidden" name="attr_exhaustion_status" value="0">
<input type="hidden" name="attr_stress" value="0">
<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_strength_maximum" value="20">
<input type="hidden" name="attr_dexterity_maximum" value="20">
<input type="hidden" name="attr_constitution_maximum" value="20">
<input type="hidden" name="attr_intelligence_maximum" value="20">
<input type="hidden" name="attr_wisdom_maximum" value="20">
<input type="hidden" name="attr_charisma_maximum" value="20">
<input type='hidden' name='attr_acrobatics_bonus' value='0'>
<input type='hidden' name='attr_animal_handling_bonus' value='0'>
<input type='hidden' name='attr_arcana_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_history_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_religion_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_show_death_failures_flag' value='1'>
<input type='hidden' name='attr_show_exhaustion_flag' value='1'>
<input type='hidden' name='attr_show_stress_flag' value='1'>
<input type='hidden' name='attr_show_survival_conditions' value='1'>
<input type='hidden' name='attr_use_inventory_slots' value='1'>
<input type='hidden' name='attr_use_intelligent_initiative' value='0'>
<!-- COMPENDIUM DROP CATCHERS -->
<input type="hidden" name="attr_drop_category" accept="Category">
<input type="hidden" name="attr_drop_name" accept="Name">
<input type="hidden" name="attr_drop_data" accept="data">
<input type="hidden" name="attr_drop_content" accept="Content">
</div>
<div class="sheet-section-templates">
<div class="sheet-rolltemplates">
<rolltemplate class="sheet-rolltemplate-atk">
<div class="container">
<div class="result">
{{#always}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/always}}
{{#normal}}
<div class="solo">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/normal}}
{{#advantage}}
{{#rollLess() r1 r2}}
<div class="adv">
<span class="grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="adv">
<span class="grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#range}}
<div class="sublabel">
<span>{{range}}</span>
</div>
{{/range}}
<div class="label">
{{#normal}}
{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}
{{#^rollWasCrit() r1}}<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span>{{rnamec}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollTotal() r1 r2}}{{#^rollWasCrit() r1}}<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/^rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollLess() r1 r2}}<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollLess() r1 r2}}
{{#rollGreater() r1 r2}}<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}} <span>({{mod}})</span></span>{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#charname}}
<div class="charname">
<span>{{charname}}</span>
</div>
{{/charname}}
</div>
{{#desc}}
<div class="desc info">
<span>
<span class="top"></span><span class="middle">{{desc}}</span><span class="bottom"></span>
</span>
</div>
{{/desc}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-atkdmg">
{{#attack}}
<div class="container atk">
<div class="result">
{{#always}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/always}}
{{#normal}}
<div class="solo">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/normal}}
{{#advantage}}
{{#rollLess() r1 r2}}
<div class="adv">
<span class="grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="grey">{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="adv">
<span>{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="adv">
<span class="grey">{{r1}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#globalattack}} + {{globalattack}}{{/globalattack}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#range}}
<div class="sublabel">
<span>{{range}}</span>
</div>
{{/range}}
<div class="label">
<span>{{rname}}{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}}{{#attack}} <span>({{mod}})</span>{{/attack}}</span>
</div>
{{#charname}}
<div class="charname">
<span>{{charname}}</span>
</div>
{{/charname}}
</div>
{{/attack}}
{{#save}}
<div class="container {{#attack}}desc{{/attack}}{{^attack}}atk{{/attack}} save">
<div class="savedc">
<span class="rolltemplate-inline">DC</span><span class="rolltemplate-inline">{{savedc}}</span>
</div>
{{#savedesc}}
<div class="sublabel">
<span>{{savedesc}}</span>
</div>
{{/savedesc}}
<div class="label">
<span class="rolltemplate-inline">{{saveattr}}</span> <span class="rolltemplate-inline">Save</span>
</div>
</div>
{{/save}}
{{#desc}}
<div class="desc info">
<span>
<span class="top"></span><span class="middle">{{desc}}</span><span class="bottom"></span>
</span>
</div>
{{/desc}}
{{#globaldamage}}
{{#^rollTotal() globaldamage 0}}
<div class="desc">
<span>
{{globaldamage}}
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{globaldamagecrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sublabel">{{globaldamagetype}}</span>
</div>
{{/^rollTotal() globaldamage 0}}
{{/globaldamage}}
{{#hldmg}}
{{#^rollTotal() hldmg 0}}
<div class="desc">
<span>
{{hldmg}}
<!-- {{#hldmgcrit}} + {{hldmgcrit}}{{/hldmgcrit}} -->
{{#attack}}
{{#normal}}
{{#rollWasCrit() r1}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="plus"> + </span>{{hldmgcrit}}{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{/disadvantage}}
{{/attack}}
</span>
<span class="sublabel">{{dmg1type}}</span>
<div class="label">
<span>Higher Level Cast</span>
</div>
</div>
{{/^rollTotal() hldmg 0}}
{{/hldmg}}
{{#damage}}
<div class="container damagetemplate">
<div class="result">
{{#dmg1flag}}
{{^dmg2flag}}
<div class="solo">
<span class="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="sublabel">{{dmg1type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
{{#dmg2flag}}
{{^dmg1flag}}
<div class="solo">
<span class="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="sublabel">{{dmg2type}}</span>
</div>
{{/dmg1flag}}
{{/dmg2flag}}
{{#dmg1flag}}
{{#dmg2flag}}
<div class="adv">
<span class="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="sublabel">{{dmg1type}}</span>
</div>
<div class="advspacer"></div>
<div class="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="sublabel">{{dmg2type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
</div>
{{^attack}}
{{#range}}
<div class="sublabel">
<span>{{range}}</span>
</div>
{{/range}}
<div class="label">
<span>{{rname}}</span>{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}}
</div>
{{#charname}}
<div class="charname">
<span>{{charname}}</span>
</div>
{{/charname}}
{{/attack}}
</div>
{{/damage}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-desc">
<div class="desc info">
<span>
<span class="top"></span><span class="middle">{{desc}}</span><span class="bottom"></span>
</span>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-dmg">
{{#save}}
<div class="{{#attack}}desc{{/attack}}{{^attack}}atk{{/attack}} save">
<div class="savedc">
<span class="rolltemplate-inline">DC</span><span class="rolltemplate-inline">{{savedc}}</span>
</div>
{{#savedesc}}
<div class="sublabel">
<span>{{savedesc}}</span>
</div>
{{/savedesc}}
<div class="label">
<span class="rolltemplate-inline">{{saveattr}}</span> <span class="rolltemplate-inline">Save</span>
</div>
</div>
{{/save}}
{{^attack}}
{{#desc}}
<div class="desc info">
<span>
<span class="top"></span><span class="middle">{{desc}}</span><span class="bottom"></span>
</span>
</div>
{{/desc}}
{{/attack}}
{{#globaldamage}}
{{#^rollTotal() globaldamage 0}}
<div class="desc">
<span>{{globaldamage}}{{#globaldamagecrit}}<span class="plus"> + </span>{{globaldamagecrit}}{{/globaldamagecrit}}</span>
<span class="sublabel">{{globaldamagetype}}</span>
</div>
{{/^rollTotal() globaldamage 0}}
{{/globaldamage}}
{{#hldmg}}
{{#^rollTotal() hldmg 0}}
<div class="desc">
<span>{{hldmg}}{{#hldmgcrit}}<span class="plus"> + </span>{{hldmgcrit}}{{/hldmgcrit}}</span>
<span class="sublabel">{{dmg1type}}</span>
<div class="label">
<span>Higher Level Cast</span>
</div>
</div>
{{/^rollTotal() hldmg 0}}
{{/hldmg}}
<div class="container damagetemplate">
<div class="result">
{{#dmg1flag}}
{{^dmg2flag}}
<div class="solo">
<span class="damage">{{dmg1}}{{#crit}} + {{crit1}}{{/crit}}</span>
<span class="sublabel">{{dmg1type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
{{#dmg2flag}}
{{^dmg1flag}}
<div class="solo">
<span class="damage">{{dmg2}}{{#crit}} + {{crit2}}{{/crit}}</span>
<span class="sublabel">{{dmg2type}}</span>
</div>
{{/dmg1flag}}
{{/dmg2flag}}
{{#dmg1flag}}
{{#dmg2flag}}
<div class="adv">
<span class="damage">{{dmg1}}{{#crit}} + {{crit1}}{{/crit}}</span>
<span class="sublabel">{{dmg1type}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="damage">{{dmg2}}{{#crit}} + {{crit2}}{{/crit}}</span>
<span class="sublabel">{{dmg2type}}</span>
</div>
{{/dmg2flag}}
{{/dmg1flag}}
</div>
{{^attack}}
{{#range}}
<div class="sublabel" style="color: #000;">
<span>{{range}}</span>
</div>
{{/range}}
<div class="label">
<span>{{rname}}</span>{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}}
</div>
{{#charname}}
<div class="charname">
<span>{{charname}}</span>
</div>
{{/charname}}
{{/attack}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npc">
<div class="row header">
<span>{{rname}}</span>
</div>
{{#name}}
<div class="row subheader">
<span class="italics">{{name}}</span>
</div>
{{/name}}
<div class="arrow-right"></div>
<div class="row">
{{#normal}}
<span class="italics">{{type}}: </span><span>{{r1}}</span>
{{/normal}}
{{#always}}
<span class="italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}
<span class="italics">{{type}}: </span><span class="grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span class="grey">{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<span class="italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span class="grey">{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="italics">{{type}}: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="italics">{{type}}: </span><span class="grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npcaction">
<div class="container">
<div class="row header">
<span>{{rname}}</span>
</div>
{{#name}}
<div class="row subheader">
<span class="italics">{{name}}</span>
</div>
{{/name}}
<div class="arrow-right"></div>
{{#attack}}
<div class="row">
{{#normal}}
<span class="italics">Attack: </span><span>{{r1}}</span>
{{/normal}}
{{#always}}
<span class="italics">Attack: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}
<span class="italics">Attack: </span><span class="grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="italics">Attack: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="italics">Attack: </span><span>{{r1}}</span><span> | </span><span class="grey">{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<span class="italics">Attack: </span><span>{{r1}}</span><span> | </span><span class="grey">{{r2}}</span>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<span class="italics">Attack: </span><span>{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<span class="italics">Attack: </span><span class="grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{/attack}}
{{#descrition}}
<span class="desc">{{descrition}}</span>
{{/descrition}}
</div>
{{#damage}}
<div class="container dmgcontainer damagetemplate">
<span class="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-npcatk">
<div class="row 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="row subheader">
<span class="italics">{{name}}</span>
</div>
{{/name}}
<div class="arrow-right"></div>
<div class="row">
{{#normal}}
{{#rollWasCrit() r1}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r1}}
{{#^rollWasCrit() r1}}<span class="italics">{{type}}: </span>{{/^rollWasCrit() r1}}
{{/normal}}
{{#always}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span class="italics">{{type}}: </span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/always}}
{{#advantage}}
{{#rollLess() r1 r2}}{{#rollWasCrit() r2}}<span class="italics">[{{typec}}: </span>{{/rollWasCrit() r2}}{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}{{#rollWasCrit() r1}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollGreater() r1 r2}}
{{#^rollWasCrit() r1}}{{#^rollWasCrit() r2}}<span class="italics">{{type}}: </span>{{/^rollWasCrit() r2}}{{/^rollWasCrit() r1}}
{{/advantage}}
{{#disadvantage}}
{{#rollTotal() r1 r2}}{{#rollWasCrit() r1}}<span class="italics">{{typec}}: </span>{{/rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollTotal() r1 r2}}{{#^rollWasCrit() r1}}<span class="italics">{{type}}: </span>{{/^rollWasCrit() r1}}{{/rollTotal() r1 r2}}
{{#rollLess() r1 r2}}<span class="italics">{{type}}: </span>{{/rollLess() r1 r2}}
{{#rollGreater() r1 r2}}<span class="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="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="grey">{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<span>{{r1}}</span><span> | </span><span class="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="grey">{{r1}}</span><span> | </span><span>{{r2}}</span>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
{{#descrition}}
<div class="row">
<span class="desc">{{descrition}}</span>
</div>
{{/descrition}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-npcdmg">
<div class="container dmgcontainer damagetemplate">
<span class="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-simple">
<div class="container">
<div class="result">
{{#always}}
<div class="adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/always}}
{{#normal}}
<div class="solo">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/normal}}
{{#advantage}}
{{#rollLess() r1 r2}}
<div class="adv">
<span class="grey">{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="grey">{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/advantage}}
{{#disadvantage}}
{{#rollLess() r1 r2}}
<div class="adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span class="grey">{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollLess() r1 r2}}
{{#rollTotal() r1 r2}}
<div class="adv">
<span>{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollTotal() r1 r2}}
{{#rollGreater() r1 r2}}
<div class="adv">
<span class="grey">{{r1}}{{#global}} + {{global}}{{/global}}</span>
</div>
<div class="advspacer"></div>
<div class="adv">
<span>{{r2}}{{#global}} + {{global}}{{/global}}</span>
</div>
{{/rollGreater() r1 r2}}
{{/disadvantage}}
</div>
<div class="label">
<span>{{rname}}{{#mod}} <span>({{mod}})</span>{{/mod}}</span>
</div>
{{#charname}}
<div class="charname">
<span>{{charname}}</span>
</div>
{{/charname}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-spell">
<div class="container">
<div class="title row">
<span>{{name}}</span>{{#innate}}<span class="grey">, {{innate}}</span>{{/innate}}
</div>
<div class="italics row">
<span>{{level}}{{#ritual}} (<span></span>){{/ritual}}</span>
</div>
<div class="spacer"></div>
{{#castingtime}}
<div class="row">
<span class="bold">Tiempo de Lanzamiento:</span> <span>{{castingtime}}</span>
</div>
{{/castingtime}}
{{#range}}
<div class="row">
<span class="bold">Alcance:</span> <span>{{range}}</span>
</div>
{{/range}}
{{#target}}
<div class="row">
<span class="bold">Target:</span> <span>{{target}}</span>
</div>
{{/target}}
<div class="row">
<span class="bold">Components:</span>
<span>
{{#v}}V{{#s}}, {{/s}}{{^s}}{{#m}}, {{/m}}{{/s}}{{/v}}
{{#s}}S{{#m}}, {{/m}}{{/s}}
{{#m}}M {{#material}}({{material}}){{/material}}{{/m}}
</span>
</div>
{{#duration}}
<div class="row">
<span class="bold">Duración:</span> <span>{{#concentration}}<span>Concentración</span> {{/concentration}}{{duration}}</span>
</div>
{{/duration}}
<div class="spacer"></div>
{{#descrition}}
<div class="row">
<span class="descrition">{{descrition}}</span>
</div>
{{/descrition}}
{{#athigherlevels}}
<div class="row">
<span class="bold italics">At Higher Levels</span>. <span class="descrition">{{athigherlevels}}</span>
</div>
{{/athigherlevels}}
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-traits">
<div class="row header">
<span>{{name}}</span>
</div>
{{#source}}
<div class="row subheader">
<span class="italics">{{#charname}}{{charname}} {{/charname}}{{source}}</span>
</div>
{{/source}}
{{#descrition}}
<div class="row">
<span class="desc">{{descrition}}</span>
</div>
{{/descrition}}
</rolltemplate>
</div>
</div>
<script type="text/worker">
on("sheet:opened", function(){
getAttrs(["wtype", "rtype"], function(atts){
var set = {};
set["rtype"] = "@{advantagetoggle}";
set["wtype"] = "@{whispertoggle}";
setAttrs(set, function() {});
});
});
on("sheet:compendium-drop", function() {
getAttrs(["hp_max", "npc_senses", "token_size", "cd_bar1_v", "cd_bar1_m", "cd_bar1_l", "cd_bar2_v", "cd_bar2_m", "cd_bar2_l", "cd_bar3_v", "cd_bar3_m", "cd_bar3_l"], function(v) {
var default_attr = {};
default_attr["width"] = 70;
default_attr["height"] = 70;
if (v["npc_senses"].toLowerCase().match(/(darkvision|blindsight|tremorsense|truesight)/)) {
default_attr["light_radius"] = Math.max.apply(Math, v["npc_senses"].match(/\d+/g));
}
if (v["token_size"]) {
var squarelength = 70;
if (v["token_size"].toString().indexOf(",") > -1) {
var setwidth = !isNaN(v["token_size"].split(",")[0]) ? v["token_size"].split(",")[0] : 1;
var setheight = !isNaN(v["token_size"].split(",")[1]) ? v["token_size"].split(",")[1] : 1;
default_attr["width"] = setwidth * squarelength;
default_attr["height"] = setheight * squarelength;
} else {
default_attr["width"] = squarelength * v["token_size"]
default_attr["height"] = squarelength * v["token_size"]
};
}
var getList = {};
for (x = 1; x <= 3; x++) {
_.each(["v", "m"], function(letter) {
var keyname = "cd_bar" + x + "_" + letter;
if (v[keyname] != undefined && isNaN(v[keyname])) {
getList[keyname] = v[keyname];
}
});
}
getAttrs(_.values(getList), function(values) {
_.each(_.keys(getList), function(keyname) {
v[keyname] = values[getList[keyname]] == undefined ? "" : values[getList[keyname]];
});
if (v["cd_bar1_l"]) {
default_attr["bar1_link"] = v["cd_bar1_l"];
} else if (v["cd_bar1_v"] || v["cd_bar1_m"]) {
if (v["cd_bar1_v"]) {
default_attr["bar1_value"] = v["cd_bar1_v"];
}
if (v["cd_bar1_m"]) {
default_attr["bar1_max"] = v["cd_bar1_m"];
}
} else {
default_attr["bar1_value"] = v["hp_max"];
default_attr["bar1_max"] = v["hp_max"];
}
if (v["cd_bar2_l"]) {
default_attr["bar2_link"] = v["cd_bar2_l"];
} else if (v["cd_bar2_v"] || v["cd_bar2_m"]) {
if (v["cd_bar2_v"]) {
default_attr["bar2_value"] = v["cd_bar2_v"];
}
if (v["cd_bar2_m"]) {
default_attr["bar2_max"] = v["cd_bar2_m"];
}
} else {
default_attr["bar2_link"] = "npc_ac";
}
if (v["cd_bar3_l"]) {
default_attr["bar3_link"] = v["cd_bar3_l"];
} else if (v["cd_bar3_v"] || v["cd_bar3_m"]) {
if (v["cd_bar3_v"]) {
default_attr["bar3_value"] = v["cd_bar3_v"];
}
if (v["cd_bar3_m"]) {
default_attr["bar3_max"] = v["cd_bar3_m"];
}
}
setDefaultToken(default_attr);
});
});
});
['strength', 'dexterity', 'constitution', 'intelligence', 'wisdom', 'charisma'].forEach(attr => {
on(`change:${attr}_base change:${attr}_bonus`, function() {
update_attr(`${attr}`);
});
});
['strength', 'dexterity', 'constitution', 'intelligence', 'wisdom', 'charisma'].forEach(attr => {
on(`change:${attr}`, function() {
update_mod(`${attr}`);
const cap = attr.charAt(0).toUpperCase() + attr.slice(1);
check_customac(cap);
(attr === "strength") ? update_weight(): false;
(attr === "dexterity") ? update_initiative(): false;
(attr === "intelligence") ? update_initiative(): false;
});
});
['strength', 'dexterity', 'constitution', 'intelligence', 'wisdom', 'charisma'].forEach(attr => {
on(`change:${attr}_mod`, function() {
update_save(`${attr}`);
update_attacks(`${attr}`);
update_tool(`${attr}`);
update_spell_info(`${attr}`);
switch (`${attr}`) {
case "strength":
update_skills(["athletics"]);
break;
case "dexterity":
update_skills(["acrobatics", "sleight_of_hand", "stealth"]);
update_ac();
update_initiative();
break;
case "intelligence":
update_skills(["arcana", "history", "investigation", "nature", "religion"]);
update_initiative();
break;
case "wisdom":
update_skills(["animal_handling", "insight", "medicine", "perception", "survival"]);
break;
case "charisma":
update_skills(["deception", "intimidation", "performance", "persuasion"]);
break;
default:
false;
}
});
});
['strength', 'dexterity', 'constitution', 'intelligence', 'wisdom', 'charisma'].forEach(attr => {
on(`change:${attr}_save_prof change:${attr}_save_mod`, function(eventinfo) {
if (eventinfo.sourceType === "sheetworker") {
return;
};
update_save(`${attr}`);
});
});
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");
});
['acrobatics', 'animal_handling', 'arcana', 'athletics', 'deception', 'history', 'insight', 'intimidation', 'investigation', 'medicine', 'nature', 'perception', 'performance', 'persuasion', 'religion', 'sleight_of_hand', 'stealth', 'survival'].forEach(attr => {
on(`change:${attr}_prof change:${attr}_type change:${attr}_flat change:${attr}_attribute`, function(eventinfo) {
if (eventinfo.sourceType === "sheetworker") {
return;
};
update_skills([`${attr}`]);
});
});
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:atkmagic 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_spellid", "repeating_attack_spelllevel"], function(v) {
set = {};
if (v.repeating_attack_spellid && v.repeating_attack_spellid != "" && v.repeating_attack_spelllevel && v.repeating_attack_spelllevel != "") {
var newVal = eventinfo.newValue == "spell" ? "spell" : _.last(eventinfo.newValue.split("_")[0].split("{"));
set["repeating_attack_atkattr_base"] = newVal == "spell" ? "spell" : "@{" + newVal + "_mod}";
set["repeating_attack_savedc"] = newVal == "spell" ? "spell" : "(@{" + newVal + "_mod}+8+@{pb})";
set["repeating_spell-" + v.repeating_attack_spelllevel + "_" + v.repeating_attack_spellid + "_spell_ability"] = newVal == "spell" ? "spell" : "@{" + 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) {
getSectionIDs("damagemod", function(ids) {
var update = {};
if (eventinfo.newValue === "1") {
if (!ids || ids.length === 0) {
var rowid = generateRowID();
update[`repeating_damagemod_${rowid}_global_damage_active_flag`] = "1";
}
} else {
_.each(ids, function(rowid) {
update[`repeating_damagemod_${rowid}_global_damage_active_flag`] = "0";
});
}
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(eventinfo) {
const newValue = parseInt(eventinfo.newValue) || 0,
previousValue = parseInt(eventinfo.previousValue) || 0;
let update = {};
if (newValue === 0) {
//If exhaustion is 0 the reset exhaustion_1 to "No Effect" and blank the other spans
for (let i = 2; i <= 6; i++) {
update[`exhaustion_${i}`] = ""
}
update[`exhaustion_1`] = "• " + getTranslationByKey(`exhaustion-0`)
} else if (newValue > previousValue) {
//If exhaustion increase then add text to the spans
for (let i = previousValue; i <= newValue; i++) {
update[`exhaustion_${i}`] = "• " + getTranslationByKey(`exhaustion-${i}`)
}
} else {
//If exhaustion decrease remove text from spans
for (let i = newValue + 1; i <= previousValue; i++) {
update[`exhaustion_${i}`] = ""
}
};
setAttrs(update, {
silent: true
});
});
on("change:race change:subrace", function(eventinfo) {
update_race_display();
});
on("change:drop_category", function(eventinfo) {
if (eventinfo.newValue === "Monsters") {
getAttrs(["class", "race", "speed", "hp"], function(v) {
if (v["class"] != "" || v["race"] != "" || v["speed"] != "" || v["hp"] != "") {
setAttrs({
monster_confirm_flag: 1
});
} else {
handle_drop(eventinfo.newValue);
}
});
} else {
handle_drop(eventinfo.newValue);
}
});
on(`change:repeating_inventory:hasattack`, function(eventinfo) {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
};
const itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs([`repeating_inventory_${itemid}_itemattackid`], function(v) {
const hasattack = eventinfo.newValue,
itemattackid = v[`repeating_inventory_${itemid}_itemattackid`];
(hasattack == 1) ? create_attack_from_item(itemid): remove_attack(itemattackid);
});
});
on(`change:repeating_inventory:useasresource`, function(eventinfo) {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
};
const itemid = eventinfo.sourceAttribute.substring(20, 40);
getAttrs([`repeating_inventory_${itemid}_itemresourceid`], function(v) {
const useasresource = eventinfo.newValue,
itemresourceid = v[`repeating_inventory_${itemid}_itemresourceid`];
(useasresource == 1) ? create_resource_from_item(itemid): remove_resource(itemresourceid);
});
});
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: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:itemcontainer change:repeating_inventory:equipped change:repeating_inventory:carried change:repeating_inventory:itemweight change:repeating_inventory:itemcount change:cp change:sp change:ep change:gp change:pp change:currency_other change:encumberance_setting change:size change:carrying_capacity_mod change:use_inventory_slots change:inventory_slots_mod change:repeating_inventory:itemweightfixed change:repeating_inventory:itemslotsfixed change:repeating_inventory:itemsize change:repeating_inventory:itemcontainer_slots_modifier", function() {
update_weight();
});
on("change:repeating_inventory:itemmodifiers change:repeating_inventory:equipped change:repeating_inventory:carried", 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:custom_ac_flag change:custom_ac_base change:custom_ac_part1 change:custom_ac_part2 change:custom_ac_shield", function(eventinfo) {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_ac();
});
['spell-cantrip', 'spell-1', 'spell-2', 'spell-3', 'spell-4', 'spell-5', 'spell-6', 'spell-7', 'spell-8', 'spell-9'].forEach(attr => {
on(`change:repeating_${attr}:includedesc change:repeating_${attr}:innate change:repeating_${attr}:spell_ability change:repeating_${attr}:spell_updateflag change:repeating_${attr}:spellathigherlevels change:repeating_${attr}:spellattack change:repeating_${attr}:spelldamage change:repeating_${attr}:spelldamage2 change:repeating_${attr}:spelldamagetype change:repeating_${attr}:spelldamagetype2 change:repeating_${attr}:spelldescrition change:repeating_${attr}:spelldmgmod change:repeating_${attr}:spellhealing change:repeating_${attr}:spellhlbonus change:repeating_${attr}:spellhldie change:repeating_${attr}:spellhldietype change:repeating_${attr}:spellname change:repeating_${attr}:spellprepared change:repeating_${attr}:spellrange change:repeating_${attr}:spellsave change:repeating_${attr}:spellsavesuccess change:repeating_${attr}:spelltarget change:repeating_${attr}:spell_damage_progression`, (eventinfo) => {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
const spellid = eventinfo.sourceAttribute.split("_")[2],
repeating_source = `repeating_${attr}_${spellid}`;
getAttrs([repeating_source + "_spellattackid", repeating_source + "_spelllevel"], function(v) {
var attackid = v[repeating_source + "_spellattackid"];
var lvl = v[repeating_source + "_spelllevel"];
if (attackid && lvl && spellid) {
update_attack_from_spell(lvl, spellid, attackid)
}
});
});
});
['spell-cantrip', 'spell-1', 'spell-2', 'spell-3', 'spell-4', 'spell-5', 'spell-6', 'spell-7', 'spell-8', 'spell-9'].forEach(attr => {
on(`change:repeating_${attr}:spelloutput`, (eventinfo) => {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
const spellid = eventinfo.sourceAttribute.split("_")[2],
repeating_source = `repeating_${attr}_${spellid}`;
getAttrs([`${repeating_source}_spellattackid`, `${repeating_source}_spelllevel`, `${repeating_source}_spellathigherlevels`, "character_id"], function(v) {
const attackid = v[repeating_source + "_spellattackid"];
const higherlevels = v[repeating_source + "_spellathigherlevels"];
const spelloutput = eventinfo.newValue;
let lvl = v[repeating_source + "_spelllevel"];
if (spelloutput && spelloutput === "ATTACK") {
create_attack_from_spell(lvl, spellid, v["character_id"]);
} else if (spelloutput && spelloutput === "SPELLCARD" && attackid && attackid != "") {
let lvl = parseInt(v[repeating_source + "_spelllevel"], 10);
remove_attack(attackid);
update_spelloutput(higherlevels, lvl, repeating_source, spelloutput);
}
});
});
});
['spell-cantrip', 'spell-1', 'spell-2', 'spell-3', 'spell-4', 'spell-5', 'spell-6', 'spell-7', 'spell-8', 'spell-9'].forEach(attr => {
on(`change:repeating_${attr}:spellathigherlevels`, (eventinfo) => {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
const spellid = eventinfo.sourceAttribute.split("_")[2],
repeating_source = `repeating_${attr}_${spellid}`;
getAttrs([`${repeating_source}_spelllevel`, `${repeating_source}_spelloutput`], function(v) {
const higherlevels = eventinfo.newValue;
const lvl = parseInt(v[repeating_source + "_spelllevel"], 10);
const spelloutput = v[repeating_source + "_spelloutput"];
if (spelloutput && spelloutput === "SPELLCARD") {
update_spelloutput(higherlevels, lvl, repeating_source, spelloutput);
}
});
});
});
const update_spelloutput = (higherlevels, lvl, repeating_source, spelloutput) => {
let spelllevel = "@{spelllevel}";
let update = {};
if (higherlevels) {
for (i = 0; i < 10 - lvl; i++) {
let tot = parseInt(i, 10) + parseInt(lvl, 10);
spelllevel = spelllevel + "|Level " + tot + "," + tot;
}
spelllevel = `?{Cast at what level? ${spelllevel}}`;
}
update[repeating_source + "_rollcontent"] = "@{wtype}&{template:spell} {{level=@{spellschool} " + spelllevel + "}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}";
setAttrs(update, {
silent: true
});
};
on("change:class change:custom_class change:cust_classname change:cust_hitdietype change:cust_spellcasting_ability change:cust_spellslots 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;
}
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:arcane_fighter change:arcane_rogue", 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_spell_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_type change:pb_custom", function(eventinfo) {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
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 change:use_intelligent_initiative", function(eventinfo) {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_initiative();
});
on("change:spellcasting_ability change:spell_dc_mod change:globalmagicmod", function(eventinfo) {
if (eventinfo.sourceType && eventinfo.sourceType === "sheetworker") {
return;
}
update_spell_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_arcana_base change:npc_athletics_base change:npc_deception_base change:npc_history_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_religion_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:descrition change:repeating_npcaction-l:descrition", 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:halflingluck_flag", function() {
getAttrs(["core_die", "halflingluck_flag"], function(v) {
core = v.core_die && v.core_die != "" ? v.core_die : "1d20";
luck = v.halflingluck_flag && v.halflingluck_flag === "1" ? "ro<1" : "";
update = {};
update["d20"] = core + luck;
if (!v.core_die || v.core_die === "") {
update["core_die"] = "1d20";
}
setAttrs(update);
});
});
[`ac`, `attack`, 'save', 'skill', ].forEach(attr => {
on(`change:global_${attr}_mod_flag`, (eventinfo) => {
const mod = (attr === "attack") ? "tohitmod" : `${attr}mod`;
if (eventinfo.newValue === "1") {
const firstAttr = (attr === "ac") ? "val" : "roll";
const firstAttrValue = (attr === "ac") ? 1 : "1d4";
const secondAttrValue = (attr === "ac") ? "Defense" : (attr === "skill") ? "GUIDANCE" : "BLESS";
getSectionIDs(mod, (ids) => {
if (!ids || ids.length === 0) {
var update = {};
var rowid = generateRowID();
update[`repeating_${mod}_${rowid}_global_${attr}_${firstAttr}`] = `${firstAttrValue}`;
update[`repeating_${mod}_${rowid}_global_${attr}_name`] = `${secondAttrValue}`;
update[`repeating_${mod}_${rowid}_global_${attr}_active_flag`] = "1";
setAttrs(update);
}
});
} else {
getSectionIDs(mod, function(ids) {
var update = {};
var rowid = generateRowID();
_.each(ids, function(rowid) {
update[`repeating_${mod}_${rowid}_global_${attr}_active_flag`] = "0";
});
setAttrs(update);
});
}
});
});
on("change:repeating_skillmod remove:repeating_skillmod", function(eventinfo) {
update_globalskills();
});
on("change:repeating_savemod remove:repeating_savemod", function(eventinfo) {
update_globalsaves();
});
on("change:repeating_tohitmod remove:repeating_tohitmod", function(eventinfo) {
update_globalattack();
});
on("change:repeating_acmod remove:repeating_acmod", function(eventinfo) {
update_ac();
});
on("change:confirm", function(eventinfo) {
setAttrs({
monster_confirm_flag: ""
});
getAttrs(["drop_category"], function(v) {
if (v["drop_category"]) {
handle_drop(v["drop_category"]);
}
});
});
on("change:cancel", function(eventinfo) {
setAttrs({
monster_confirm_flag: ""
});
var update = {};
update["drop_category"] = "";
update["drop_name"] = "";
update["drop_data"] = "";
update["drop_content"] = "";
setAttrs(update, {
silent: true
});
});
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_attack", function(eventinfo) {
var attackid = eventinfo.sourceAttribute.substring(17, 37);
var itemid = eventinfo.removedInfo["repeating_attack_" + attackid + "_itemid"];
var spellid = eventinfo.removedInfo["repeating_attack_" + attackid + "_spellid"];
var spelllvl = eventinfo.removedInfo["repeating_attack_" + attackid + "_spelllevel"];
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
});
}
});
};
if (spellid && spelllvl) {
getAttrs(["repeating_spell-" + spelllvl + "_" + spellid + "_spelloutput"], function(v) {
if (v["repeating_spell-" + spelllvl + "_" + spellid + "_spelloutput"] && v["repeating_spell-" + spelllvl + "_" + spellid + "_spelloutput"] == "ATTACK") {
var update = {};
update["repeating_spell-" + spelllvl + "_" + spellid + "_spellattackid"] = "";
update["repeating_spell-" + spelllvl + "_" + spellid + "_spelloutput"] = "SPELLCARD";
setAttrs(update, {
silent: true
});
}
});
};
});
on("remove:repeating_resource", function(eventinfo) {
var resourceid = eventinfo.sourceAttribute.substring(19, 39);
var left_itemid = eventinfo.removedInfo["repeating_resource_" + resourceid + "_resource_left_itemid"];
var right_itemid = eventinfo.removedInfo["repeating_resource_" + resourceid + "_resource_right_itemid"];
var update = {};
if (left_itemid) {
update["repeating_inventory_" + left_itemid + "_useasresource"] = 0;
update["repeating_inventory_" + left_itemid + "_itemresourceid"] = "";
}
if (right_itemid) {
update["repeating_inventory_" + right_itemid + "_useasresource"] = 0;
update["repeating_inventory_" + right_itemid + "_itemresourceid"] = "";
}
setAttrs(update, {
silent: true
});
});
on("remove:repeating_spell-cantrip remove:repeating_spell-1 remove:repeating_spell-2 remove:repeating_spell-3 remove:repeating_spell-4 remove:repeating_spell-5 remove:repeating_spell-6 remove:repeating_spell-7 remove:repeating_spell-8 remove:repeating_spell-9", function(eventinfo) {
var attackid = eventinfo.removedInfo[eventinfo.sourceAttribute + "_spellattackid"];
if (attackid) {
remove_attack(attackid);
}
});
on("change:experience", function(eventinfo) {
update_leveler_display();
});
var update_attr = function(attr) {
var update = {};
var attr_fields = [attr + "_base", attr + "_bonus"];
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
attr_fields.push("repeating_inventory_" + currentID + "_equipped");
attr_fields.push("repeating_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["repeating_inventory_" + currentID + "_equipped"] || v["repeating_inventory_" + currentID + "_equipped"] === "1") && v["repeating_inventory_" + currentID + "_itemmodifiers"] && v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf(attr > -1)) {
var mods = v["repeating_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) {
var save_attrs = [attr + "_mod", attr + "_save_prof", attr + "_save_mod", "pb", "globalsavemod", "pb_type"];
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
save_attrs.push("repeating_inventory_" + currentID + "_equipped");
save_attrs.push("repeating_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["repeating_inventory_" + currentID + "_equipped"] && v["repeating_inventory_" + currentID + "_equipped"] === "1" && v["repeating_inventory_" + currentID + "_itemmodifiers"] && (v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf("saving throws") > -1 || v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf(attr + " save") > -1)) {
var mods = v["repeating_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", "arcana", "history", "investigation", "nature", "religion", "animal_handling", "insight", "medicine", "perception", "survival", "deception", "intimidation", "performance", "persuasion"]);
};
var update_skills = function(skills_array) {
var attrs_to_get = ["pb", "pb_type", "jack_of_all_trades", "jack", "strength_mod", "dexterity_mod", "constitution_mod", "intelligence_mod", "wisdom_mod", "charisma_mod"];
var update = {};
var callbacks = [];
if (skills_array.indexOf("perception") > -1) {
callbacks.push(function() {
update_passive_perception();
})
};
_.each(skills_array, function(s) {
attrs_to_get.push(s + "_attribute")
attrs_to_get.push(s + "_prof");
attrs_to_get.push(s + "_type");
attrs_to_get.push(s + "_flat");
});
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
attrs_to_get.push("repeating_inventory_" + currentID + "_equipped");
attrs_to_get.push("repeating_inventory_" + currentID + "_itemmodifiers");
});
getAttrs(attrs_to_get, function(v) {
_.each(skills_array, function(s) {
console.log("UPDATING SKILL: " + s);
var attr_mod = 0;
if (v[s + "_attribute"]) {
var attribute = v[s + "_attribute"].toLowerCase() + "_mod";
attr_mod = parseInt(v[attribute], 10);
}
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["repeating_inventory_" + currentID + "_equipped"] && v["repeating_inventory_" + currentID + "_equipped"] === "1" && v["repeating_inventory_" + currentID + "_itemmodifiers"] && (v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().replace(/ /g, "_").indexOf(s) > -1 || v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf("ability checks") > -1)) {
var mods = v["repeating_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 get_repeating_data = function(callback) {
var getallrepeating = function(getobj, thiscallback, attrlist) {
attrlist = attrlist || [];
var thisget = getobj.pop();
getSectionIDs(thisget.name, function(ids) {
_.each(ids, function(sectionId) {
_.each(thisget.list, function(attr) {
attrlist.push("repeating_" + thisget.name + "_" + sectionId + "_" + attr);
});
});
if (getobj.length > 0) {
getallrepeating(getobj, thiscallback, attrlist);
} else {
getAttrs(attrlist, function(vals) {
thiscallback(vals);
});
};
});
};
var getList = [{
name: "proficiencies",
list: ["name"]
},
{
name: "tool",
list: ["toolname", "toolattr_base"]
},
{
name: "traits",
list: ["name", "source", "source_type"]
},
{
name: "resource",
list: ["resource_left_name", "resource_right_name"]
},
{
name: "spell-cantrip",
list: ["spellname", "spellattackid", "spellsource", "spellattackid"]
},
{
name: "savemod",
list: ["global_save_name"]
},
{
name: "tohitmod",
list: ["global_attack_name"]
},
{
name: "damagemod",
list: ["global_damage_name"]
},
{
name: "acmod",
list: ["global_ac_name"]
},
{
name: "skillmod",
list: ["global_skill_name"]
},
{
name: "attack",
list: ["atkname", "spellid"]
},
{
name: "hpmod",
list: ["levels", "source", "mod"]
}
];
for (var x = 1; x <= 9; x++) {
getList.push({
name: "spell-" + x,
list: ["spellname", "spellattackid", "spellsource", "spellattackid"]
});
}
var repeating = {
prof_names: [],
traits: []
};
_.each(getList, function(section) {
if (!["proficiencies", "traits"].includes(section.name)) {
repeating[section.name] = {};
}
});
getallrepeating(getList, function(vals) {
var traitstemp = {};
_.each(vals, function(value, name) {
if (name.split("_")[1] == "proficiencies") {
repeating.prof_names.push(value.toLowerCase());
} else if (name.split("_")[1] == "tool") {
repeating.tool[name.split("_")[2]] = repeating.tool[name.split("_")[2]] || {};
let attr = _.last(name.split("_"));
repeating.tool[name.split("_")[2]][attr] = value.toLowerCase();
if (attr == "toolname") repeating.prof_names.push(value.toLowerCase());
} else if (name.split("_")[1] == "traits") {
traitstemp[name.split("_")[2]] = traitstemp[name.split("_")[2]] ? traitstemp[name.split("_")[2]] : {};
traitstemp[name.split("_")[2]][_.last(name.split("_"))] = value;
} else if (name.split("_")[1] == "resource") {
repeating.resource[name.split("_")[2]] = repeating.resource[name.split("_")[2]] || {};
repeating.resource[name.split("_")[2]][name.split("_")[4]] = value;
} else if (name.split("_")[1] == "hpmod") {
repeating.hpmod[name.split("_")[2]] = repeating.hpmod[name.split("_")[2]] || {};
repeating.hpmod[name.split("_")[2]][name.split("_")[3]] = value;
} else if (name.split("_")[1].split("-")[0] == "spell") {
repeating[name.split("_")[1]][name.split("_")[2]] = repeating[name.split("_")[1]][name.split("_")[2]] || {};
repeating[name.split("_")[1]][name.split("_")[2]][name.split("_")[3]] = value;
} else if (name.split("_")[1] == "attack") {
repeating[name.split("_")[1]][name.split("_")[2]] = repeating[name.split("_")[1]][name.split("_")[2]] || {};
repeating[name.split("_")[1]][name.split("_")[2]][name.split("_")[3]] = value;
} else {
repeating[name.split("_")[1]][name.split("_")[2]] = value;
}
});
_.each(traitstemp, function(v, k) {
var trait = _.clone(v);
trait.id = k;
repeating.traits.push(trait);
});
callback(repeating);
});
};
var handle_drop = function(category, eventinfo) {
getAttrs(["speed", "drop_name", "drop_data", "drop_content", "character_id", "npc_legendary_actions", "strength_mod", "dexterity_mod", "npc", "base_level", "strength_base", "dexterity_base", "constitution_base", "wisdom_base", "intelligence_base", "charisma_base", "class_resource_name", "other_resource_name", "multiclass1_lvl", "multiclass2_lvl", "multiclass3_lvl"], function(v) {
var pagedata = {};
try {
pagedata = JSON.parse(v.drop_data);
} catch (e) {
pagedata = v.drop_data;
}
var page = {
name: v.drop_name,
data: pagedata,
content: v.drop_content
};
var category = page.data["Category"];
get_repeating_data(function(repeating) {
var results = processDrop(page, v, repeating);
setAttrs(results.update, {
silent: true
}, function() {
results.callbacks.forEach(function(callback) {
callback();
})
});
});
});
};
var processDrop = function(page, currentData, repeating, looped) {
var jsonparse = function(data) {
var result = {};
try {
result = JSON.parse(data);
} catch (e) {
result = data;
}
return result;
};
var modStringToAttrib = function(modString) {
var finalAttrib = "";
if (modString == "FIN") {
if (parseInt(currentData.strength_base) > parseInt(currentData.dexterity_base)) {
finalAttrib = "@{strength_mod}";
} else {
finalAttrib = "@{dexterity_mod}";
}
} else {
switch (modString) {
case "STR":
finalAttrib = "@{strength_mod}";
break;
case "DEX":
finalAttrib = "@{dexterity_mod}";
break;
case "CON":
finalAttrib = "@{constitution_mod}";
break;
case "WIS":
finalAttrib = "@{wisdom_mod}";
break;
case "INT":
finalAttrib = "@{intelligence_mod}";
break;
case "CHA":
finalAttrib = "@{charisma_mod}";
break;
}
}
return finalAttrib;
};
var numUses = function(uses_string) {
uses_string = parseValues(uses_string);
var terms = uses_string.split("+");
var total = 0;
_.each(terms, function(term) {
total += parseInt(term);
});
return uses_string === "" || uses_string === "-" ? uses_string : total;
};
var parseValues = function(uses_string) {
var attribs = ["strength", "dexterity", "constitution", "wisdom", "intelligence", "charisma"];
uses_string = uses_string ? uses_string.toLowerCase() : "";
_.each(attribs, function(attrib) {
var attribMod = Math.floor((parseInt(currentData[attrib + "_base"]) - 10) / 2);
if (attribMod < 0 || isNaN(attribMod)) attribMod = 0;
uses_string = uses_string.replace(attrib, attribMod);
});
uses_string = uses_string.replace(/half_level/g, Math.floor(classlevel / 2));
return uses_string.replace(/level/g, classlevel);
};
var category = page.data["Category"];
var callbacks = [];
var update = {};
var id = generateRowID();
var blobs = {};
var classlevel = currentData.base_level ? parseInt(currentData.base_level) : 1;
repeating.traits = repeating.traits ? repeating.traits : [];
update["drop_category"] = "";
update["drop_name"] = "";
update["drop_data"] = "";
update["drop_content"] = "";
if (category === "Items") {
if (currentData.npc === "0") {
update["tab"] = "equipment";
if (page.name) {
update["repeating_inventory_" + id + "_itemname"] = page.name
};
if (page.data["itemcount"]) {
update["repeating_inventory_" + id + "_itemcount"] = page.data["itemcount"]
};
if (page.data["Weight"]) {
update["repeating_inventory_" + id + "_itemweight"] = page.data["Weight"]
};
if (page.data["Properties"]) {
update["repeating_inventory_" + id + "_itemproperties"] = page.data["Properties"]
};
if (page.content) {
update["repeating_inventory_" + id + "_itemcontent"] = page.content
};
if (!page.data["Item Type"] || page.data["Item Type"] == "") {
page.data["Item Type"] = category
};
var mods = "Item Type: " + page.data["Item Type"];
if (page.data["AC"] && page.data["AC"] != "") {
mods += ", AC: " + page.data["AC"];
if (!looped) {
callbacks.push(function() {
update_ac();
})
}
};
if (page.data["Damage"] && page.data["Damage"] != "") {
mods += ", Damage: " + page.data["Damage"]
};
if (page.data["Damage Type"] && page.data["Damage Type"] != "") {
mods += ", Damage Type: " + page.data["Damage Type"]
};
if (page.data["Secondary Damage"] && page.data["Secondary Damage"] != "") {
mods += ", Secondary Damage: " + page.data["Secondary Damage"]
};
if (page.data["Secondary Damage Type"] && page.data["Secondary Damage Type"] != "") {
mods += ", Secondary Damage Type: " + page.data["Secondary Damage Type"]
};
if (page.data["Alternate Damage"] && page.data["Alternate Damage"] != "") {
mods += ", Alternate Damage: " + page.data["Alternate Damage"]
};
if (page.data["Alternate Damage Type"] && page.data["Alternate Damage Type"] != "") {
mods += ", Alternate Damage Type: " + page.data["Alternate Damage Type"]
};
if (page.data["Alternate Secondary Damage"] && page.data["Alternate Secondary Damage"] != "") {
mods += ", Alternate Secondary Damage: " + page.data["Alternate Secondary Damage"]
};
if (page.data["Alternate Secondary Damage Type"] && page.data["Alternate Secondary Damage Type"] != "") {
mods += ", Alternate Secondary Damage Type: " + page.data["Alternate Secondary Damage Type"]
};
if (page.data["Range"] && page.data["Range"] != "") {
mods += ", Range: " + page.data["Range"]
};
if (page.data["Modifiers"] && page.data["Modifiers"] != "") {
mods += ", " + page.data["Modifiers"]
};
update["repeating_inventory_" + id + "_itemmodifiers"] = mods;
if (page.data["Item Type"].indexOf("Weapon") > -1) {
update["repeating_inventory_" + id + "_hasattack"] = 1;
callbacks.push(function() {
if (page.data["Alternate Damage"] && page.data["Alternate Damage"] !== "") {
create_attack_from_item(id, {
versatile: true
});
} else {
create_attack_from_item(id);
}
});
} else if (page.data["Item Type"].indexOf("Ammunition") > -1) {
update["repeating_inventory_" + id + "_useasresource"] = 1;
callbacks.push(function() {
create_resource_from_item(id);
});
};
if (page.data["Modifiers"]) {
callbacks.push(function() {
check_itemmodifiers(page.data["Modifiers"]);
});
};
if (!looped) {
callbacks.push(function() {
update_weight();
});
}
} else {
if (page.data["Item Type"] && new RegExp('\\bweapon\\b', 'i').test(page.data["Item Type"])) {
var make_npc_attack_from_item = function(rowid, options) {
update["repeating_npcaction_" + rowid + "_npc_options-flag"] = "0";
update["repeating_npcaction_" + rowid + "_attack_flag"] = "on";
if (page.name) {
update["repeating_npcaction_" + rowid + "_name"] = page.name;
if (options && options.versatile) {
update["repeating_npcaction_" + rowid + "_name"] += " (" + (options.versatile === 1 ? "One-Handed" : "Two-Handed") + ")";
} else if (options && options.thrown) {
update["repeating_npcaction_" + rowid + "_name"] += " (Thrown)";
}
}
if (page.content) {
update["repeating_npcaction_" + rowid + "_descrition"] = page.content;
}
update["repeating_npcaction_" + rowid + "_attack_display_flag"] = "{{attack=1}}";
update["repeating_npcaction_" + rowid + "_attack_options"] = "{{attack=1}}";
update["repeating_npcaction_" + rowid + "_attack_type"] = page.data["Item Type"].substring(0, page.data["Item Type"].indexOf(" "));
var thrown = page.data["Properties"] && new RegExp('\\bthrown\\b', 'i').test(page.data["Properties"]);
if (page.data["Range"] && page.data["Range"] != "" && (!thrown || (options && options.thrown))) {
update["repeating_npcaction_" + rowid + "_attack_range"] = page.data["Range"];
} else if (page.data["Properties"] && new RegExp('\\breach\\b', 'i').test(page.data["Properties"])) {
update["repeating_npcaction_" + rowid + "_attack_range"] = "10 ft";
} else {
update["repeating_npcaction_" + rowid + "_attack_range"] = "5 ft";
}
update["repeating_npcaction_" + rowid + "_attack_target"] = "one target";
var isFinesse = page.data["Properties"] && new RegExp('\\bfinesse\\b', 'i').test(page.data["Properties"]);
var attack_type = update[`repeating_npcaction_${id}_attack_type`].toLowerCase();
var use_dex_mod = attack_type === "ranged" || (isFinesse && currentData.dexterity_mod > currentData.strength_mod);
var weapon_attr_mod = use_dex_mod ? currentData.dexterity_mod : currentData.strength_mod;
update["repeating_npcaction_" + rowid + "_attack_tohit"] = weapon_attr_mod;
if (options && options.versatile === 2) {
if (page.data["Alternate Damage"]) {
update["repeating_npcaction_" + rowid + "_attack_damage"] = page.data["Alternate Damage"] + "+" + weapon_attr_mod;
}
if (page.data["Alternate Damage Type"]) {
update["repeating_npcaction_" + rowid + "_attack_damagetype"] = page.data["Alternate Damage Type"];
}
if (page.data["Alternate Secondary Damage"]) {
update["repeating_npcaction_" + rowid + "_attack_damage2"] = page.data["Alternate Secondary Damage"];
}
if (page.data["Alternate Secondary Damage Type"]) {
update["repeating_npcaction_" + rowid + "_attack_damagetype2"] = page.data["Alternate Secondary Damage Type"];
}
} else {
if (page.data["Damage"]) {
update["repeating_npcaction_" + rowid + "_attack_damage"] = page.data["Damage"] + "+" + weapon_attr_mod;
}
if (page.data["Damage Type"]) {
update["repeating_npcaction_" + rowid + "_attack_damagetype"] = page.data["Damage Type"];
}
if (page.data["Secondary Damage"]) {
update["repeating_npcaction_" + rowid + "_attack_damage2"] = page.data["Secondary Damage"];
}
if (page.data["Secondary Damage Type"]) {
update["repeating_npcaction_" + rowid + "_attack_damagetype2"] = page.data["Secondary Damage Type"];
}
}
if (page.data["Modifiers"]) {
if (attack_type === "melee") {
var tohit_regex = /(?:melee|weapon) *attacks? *([\\+\\-] *[0-9]+)/i;
var melee_damage_regex = /(?:melee|weapon) *damage *([\\+\\-] *[0-9]+)/i;
var tohit_match = tohit_regex.exec(page.data["Modifiers"]);
var damage_match = melee_damage_regex.exec(page.data["Modifiers"]);
if (tohit_match && tohit_match[1]) {
update[`repeating_npcaction_${rowid}_attack_tohit`] = +update[`repeating_npcaction_${rowid}_attack_tohit`] + +tohit_match[1];
}
if (page.data["Damage"] && damage_match && damage_match[1]) {
update[`repeating_npcaction_${rowid}_attack_damage`] += damage_match[1];
}
} else if (attack_type === "ranged") {
var tohit_regex = /(?:ranged|weapon) *attacks? *([\\+\\-] *[0-9]+)/i;
var ranged_damage_regex = /(?:ranged|weapon) *damage *([\\+\\-] *[0-9]+)/i;
var tohit_match = tohit_regex.exec(page.data["Modifiers"]);
var damage_match = ranged_damage_regex.exec(page.data["Modifiers"]);
if (tohit_match && tohit_match[1]) {
update[`repeating_npcaction_${rowid}_attack_tohit`] = +update[`repeating_npcaction_${rowid}_attack_tohit`] + +tohit_match[1];
}
if (page.data["Damage"] && damage_match && damage_match[1]) {
update[`repeating_npcaction_${rowid}_attack_damage`] += damage_match[1];
}
}
}
};
var versatile = page.data["Properties"] && new RegExp('\\bversatile\\b', 'i').test(page.data["Properties"]) ? 1 : undefined;
make_npc_attack_from_item(id, {
versatile: versatile
});
if (page.data["Properties"] && new RegExp('\\bthrown\\b', 'i').test(page.data["Properties"])) {
make_npc_attack_from_item(generateRowID(), {
thrown: true
});
}
if (versatile && page.data["Alternate Damage"]) {
make_npc_attack_from_item(generateRowID(), {
versatile: 2
})
}
callbacks.push(function() {
check_itemmodifiers(page.data["Modifiers"]);
}, function() {
update_npc_action("all");
});
}
}
};
if (category === "Spells") {
let existing = {};
var lvl = page.data["Level"] && page.data["Level"] > 0 ? page.data["Level"] : "cantrip";
if (repeating["spell-" + lvl]) {
_.each(repeating["spell-" + lvl], function(spell, spellid) {
if (spell.spellname.toLowerCase() === page.name.toLowerCase()) {
id = spellid;
existing = spell;
}
});
}
update["repeating_spell-" + lvl + "_" + id + "_spelllevel"] = lvl;
if (page.data["spellcasting_ability"]) {
update["repeating_spell-" + lvl + "_" + id + "_spell_ability"] = "@{" + page.data["spellcasting_ability"].toLowerCase() + "_mod}+";
} else {
update["repeating_spell-" + lvl + "_" + id + "_spell_ability"] = "spell";
}
if (page.data["spellclass"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellclass"] = page.data["spellclass"];
}
if (page.data["spellsource"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellsource"] = page.data["spellsource"];
}
if (page.name) {
update["repeating_spell-" + lvl + "_" + id + "_spellname"] = page.name
};
if (page.data["Ritual"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellritual"] = "{{ritual=1}}"
};
if (page.data["School"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellschool"] = page.data["School"].toLowerCase()
};
if (page.data["Casting Time"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellcastingtime"] = page.data["Casting Time"]
};
if (page.data["Range"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellrange"] = page.data["Range"]
};
if (page.data["Target"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelltarget"] = page.data["Target"]
};
if (page.data["Components"]) {
if (page.data["Components"].toLowerCase().indexOf("v") === -1) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_v"] = "0"
};
if (page.data["Components"].toLowerCase().indexOf("s") === -1) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_s"] = "0"
};
if (page.data["Components"].toLowerCase().indexOf("m") === -1) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_m"] = "0"
};
};
if (page.data["Material"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_materials"] = page.data["Material"]
};
if (page.data["Concentration"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellconcentration"] = "{{concentration=1}}"
};
if (page.data["Duration"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellduration"] = page.data["Duration"]
};
if (page.data["Damage"] || page.data["Healing"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelloutput"] = "ATTACK";
if (!existing.spellattackid) callbacks.push(function() {
create_attack_from_spell(lvl, id, currentData.character_id);
});
} else if (page.data["Higher Spell Slot Desc"] && page.data["Higher Spell Slot Desc"] != "") {
var spelllevel = "?{Cast at what level?";
for (i = 0; i < 10 - lvl; i++) {
spelllevel = spelllevel + "|Level " + (parseInt(i, 10) + parseInt(lvl, 10)) + "," + (parseInt(i, 10) + parseInt(lvl, 10));
}
spelllevel = spelllevel + "}";
update["repeating_spell-" + lvl + "_" + id + "_rollcontent"] = "@{wtype}&{template:spell} {{level=@{spellschool} " + spelllevel + "}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}";
};
if (page.data["Spell Attack"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellattack"] = page.data["Spell Attack"]
};
if (page.data["Damage"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamage"] = page.data["Damage"]
};
if (page.data["Damage Type"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamagetype"] = page.data["Damage Type"]
};
if (page.data["Secondary Damage"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamage2"] = page.data["Secondary Damage"]
};
if (page.data["Secondary Damage Type"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamagetype2"] = page.data["Secondary Damage Type"]
};
if (page.data["Healing"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhealing"] = page.data["Healing"];
};
if (page.data["Add Casting Modifier"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldmgmod"] = page.data["Add Casting Modifier"]
};
if (page.data["Save"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellsave"] = page.data["Save"]
};
if (page.data["Save Success"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellsavesuccess"] = page.data["Save Success"]
};
if (page.data["Higher Spell Slot Dice"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhldie"] = page.data["Higher Spell Slot Dice"]
};
if (page.data["Higher Spell Slot Die"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhldietype"] = page.data["Higher Spell Slot Die"]
};
if (page.data["Higher Spell Slot Bonus"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhlbonus"] = page.data["Higher Spell Slot Bonus"]
};
if (page.data["Higher Spell Slot Desc"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellathigherlevels"] = page.data["Higher Spell Slot Desc"]
};
if (page.data["data-Cantrip Scaling"] && lvl == "cantrip") {
update["repeating_spell-" + lvl + "_" + id + "_spell_damage_progression"] = "Cantrip " + page.data["data-Cantrip Scaling"].charAt(0).toUpperCase() + page.data["data-Cantrip Scaling"].slice(1);
};
if (page.data["data-descrition"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldescrition"] = page.data["data-descrition"]
};
update["repeating_spell-" + lvl + "_" + id + "_options-flag"] = "0";
};
if (category === "Monsters") {
update["npc"] = "1";
update["npc_options-flag"] = "0";
if (page.name && page.name != "") {
update["npc_name"] = page.name
};
update["npc_speed"] = page.data["Speed"] ? page.data["Speed"] : "";
update["strength_base"] = page.data["STR"] ? page.data["STR"] : "";
update["dexterity_base"] = page.data["DEX"] ? page.data["DEX"] : "";
update["constitution_base"] = page.data["CON"] ? page.data["CON"] : "";
update["intelligence_base"] = page.data["INT"] ? page.data["INT"] : "";
update["wisdom_base"] = page.data["WIS"] ? page.data["WIS"] : "";
update["charisma_base"] = page.data["CHA"] ? page.data["CHA"] : "";
callbacks.push(function() {
update_attr("strength");
});
callbacks.push(function() {
update_attr("dexterity");
});
callbacks.push(function() {
update_attr("constitution");
});
callbacks.push(function() {
update_attr("intelligence");
});
callbacks.push(function() {
update_attr("wisdom");
});
callbacks.push(function() {
update_attr("charisma");
});
update["npc_vulnerabilities"] = page.data["Vulnerabilities"] ? page.data["Vulnerabilities"] : "";
update["npc_resistances"] = page.data["Resistances"] ? page.data["Resistances"] : "";
update["npc_immunities"] = page.data["Immunities"] ? page.data["Immunities"] : "";
update["npc_condition_immunities"] = page.data["Condition Immunities"] ? page.data["Condition Immunities"] : "";
update["npc_languages"] = page.data["Languages"] ? page.data["Languages"] : "";
update["token_size"] = page.data["Token Size"] ? page.data["Token Size"] : "";
if (page.data["Challenge Rating"] && page.data["Challenge Rating"] != "") {
callbacks.push(function() {
update_challenge();
});
update["npc_challenge"] = page.data["Challenge Rating"];
} else {
update["npc_challenge"] = "";
}
if (page.data["data-XP"]) {
update["npc_xp"] = page.data["data-XP"].toString().replace(",", "");
}
var type = "";
if (page.data["Size"]) {
type = page.data["Size"]
};
if (page.data["Type"]) {
if (type.length > 0) {
type = type + " " + page.data["Type"].toLowerCase();
} else {
type = page.data["Type"].toLowerCase();
}
};
if (page.data["Alignment"]) {
if (type.length > 0) {
type = type + ", " + page.data["Alignment"];
} else {
type = page.data["Alignment"];
}
};
update["npc_type"] = type;
if (page.data["HP"]) {
if (page.data["HP"].toString().indexOf("(") > -1) {
update["hp_max"] = page.data["HP"].toString().split(" (")[0];
update["npc_hpformula"] = page.data["HP"].toString().split(" (")[1].slice(0, -1);
} else {
update["hp_max"] = page.data["HP"]
update["npc_hpformula"] = ""
};
} else {
update["hp_max"] = ""
update["npc_hpformula"] = ""
};
if (page.data["AC"]) {
if (page.data["AC"].toString().indexOf("(") > -1) {
update["npc_ac"] = page.data["AC"].toString().split(" (")[0];
update["npc_actype"] = page.data["AC"].toString().split(" (")[1].slice(0, -1);
} else {
update["npc_ac"] = page.data["AC"];
update["npc_actype"] = "";
};
} else {
update["npc_ac"] = "";
update["npc_actype"] = "";
};
var senses = page.data["Senses"] ? page.data["Senses"] : "";
if (page.data["Passive Perception"]) {
if (senses.length > 0) {
senses = senses + ", Percepción pasiva " + page.data["Passive Perception"];
} else {
senses = "Percepción pasiva " + page.data["Passive Perception"];
}
}
update["npc_senses"] = senses;
update["npc_str_save_base"] = "";
update["npc_dex_save_base"] = "";
update["npc_con_save_base"] = "";
update["npc_int_save_base"] = "";
update["npc_wis_save_base"] = "";
update["npc_cha_save_base"] = "";
if (page.data["Saving Throws"] && page.data["Saving Throws"] != "") {
var savearray = page.data["Saving Throws"].split(", ");
_.each(savearray, function(save) {
kv = save.indexOf("-") > -1 ? save.split(" ") : save.split(" +");
update["npc_" + kv[0].toLowerCase() + "_save_base"] = parseInt(kv[1], 10);
});
callbacks.push(function() {
update_npc_saves();
});
};
update["npc_acrobatics_base"] = "";
update["npc_animal_handling_base"] = "";
update["npc_arcana_base"] = "";
update["npc_athletics_base"] = "";
update["npc_deception_base"] = "";
update["npc_history_base"] = "";
update["npc_insight_base"] = "";
update["npc_intimidation_base"] = "";
update["npc_investigation_base"] = "";
update["npc_medicine_base"] = "";
update["npc_nature_base"] = "";
update["npc_perception_base"] = "";
update["npc_performance_base"] = "";
update["npc_persuasion_base"] = "";
update["npc_religion_base"] = "";
update["npc_sleight_of_hand_base"] = "";
update["npc_stealth_base"] = "";
update["npc_survival_base"] = "";
if (page.data["Skills"] && page.data["Skills"] != "") {
skillarray = page.data["Skills"].split(", ");
_.each(skillarray, function(skill) {
kv = skill.indexOf("-") > -1 ? skill.split(" ") : skill.split(" +");
update["npc_" + kv[0].toLowerCase().replace(/ /g, '_') + "_base"] = parseInt(kv[1], 10);
});
callbacks.push(function() {
update_npc_skills();
});
}
getSectionIDs("repeating_npcaction-l", function(idarray) {
_.each(idarray, function(currentID, i) {
removeRepeatingRow("repeating_npcaction-l_" + currentID);
});
});
getSectionIDs("repeating_npcreaction", function(idarray) {
_.each(idarray, function(currentID, i) {
removeRepeatingRow("repeating_npcreaction_" + currentID);
});
});
getSectionIDs("repeating_npcaction", function(idarray) {
_.each(idarray, function(currentID, i) {
removeRepeatingRow("repeating_npcaction_" + currentID);
});
});
getSectionIDs("repeating_npctrait", function(idarray) {
_.each(idarray, function(currentID, i) {
removeRepeatingRow("repeating_npctrait_" + currentID);
});
});
var contentarray = page.content;
if (page.data["data-Legendary Actions"]) {
var legendaryactionsarray = jsonparse(page.data["data-Legendary Actions"]);
update["npc_legendary_actions"] = 1;
if (page.data["Legendary Actions Desc"]) {
update["npc_legendary_actions_desc"] = page.data["Legendary Actions Desc"];
} else if (currentData.npc_legendary_actions > 0) {
update["npc_legendary_actions_desc"] = `The ${page.name} can take ${currentData.npc_legendary_actions}, choosing from the options below. Only one legendary option can be used at a time and only at the end of another creature's turn. The ${page.name} regains spent legendary actions at the start of its turn.`;
} else {
update["npc_legendary_actions_desc"] = "";
}
} else if (contentarray && contentarray.indexOf("Legendary Actions") > -1) {
if (contentarray.indexOf(/\n Legendary Actions\n/) > -1) {
temp = contentarray.split(/\n Legendary Actions\n/)
} else {
temp = contentarray.split(/Legendary Actions\n/)
}
var legendaryactionsarray = temp[1];
contentarray = temp[0];
}
if (page.data["data-Reactions"]) {
var reactionsarray = jsonparse(page.data["data-Reactions"]);
} else if (contentarray && contentarray.indexOf("Reactions") > -1) {
if (contentarray.indexOf(/\n Reactions\n/) > -1) {
temp = contentarray.split(/\n Reactions\n/)
} else {
temp = contentarray.split(/Reactions\n/)
}
var reactionsarray = temp[1];
contentarray = temp[0];
}
if (page.data["data-Actions"]) {
var actionsarray = jsonparse(page.data["data-Actions"]);
} else if (contentarray && contentarray.indexOf("Actions") > -1) {
if (contentarray.indexOf("Lair Actions") > -1) {
contentarray = contentarray.replace("Lair Actions", "Lair Action");
}
if (contentarray.indexOf(/\n Actions\n/) > -1) {
temp = contentarray.split(/\n Actions\n/)
} else {
temp = contentarray.split(/Actions\n/)
}
var actionsarray = temp[1];
contentarray = temp[0];
}
if (page.data["data-Traits"]) {
var traitsarray = jsonparse(page.data["data-Traits"]);
} else if (contentarray && contentarray.indexOf("Traits") > -1) {
if (contentarray.indexOf("Lair Traits") > -1) {
contentarray = contentarray.replace("Lair Traits", "Lair Trait");
}
if (contentarray.indexOf(/\n Traits\n/) > -1) {
temp = contentarray.split(/\n Traits\n/)
} else {
temp = contentarray.split(/Traits\n/)
}
var traitsarray = temp[1];
contentarray = temp[0];
}
if (traitsarray) {
if (page.data["data-Traits"]) {
var traitsobj = {};
traitsarray.forEach(function(val) {
traitsobj[val.Name] = val.Desc;
});
} else {
traitsarray = traitsarray.split("**");
traitsarray.shift();
var traitsobj = {};
traitsarray.forEach(function(val, i) {
if (i % 2 === 1) return;
traitsobj[val] = traitsarray[i + 1];
});
}
_.each(traitsobj, function(desc, name) {
newrowid = generateRowID();
update["repeating_npctrait_" + newrowid + "_name"] = name + ".";
if (desc.substring(0, 2) === ": " || encodeURI(desc.substring(0, 2)) === ":%C2%A0") {
desc = desc.substring(2);
}
update["repeating_npctrait_" + newrowid + "_desc"] = desc.trim();
// SPELLCASTING NPCS
if (name === "Spellcasting") {
var lvl = parseInt(desc.substring(desc.indexOf("-level") - 4, desc.indexOf("-level") - 2).trim(), 10);
lvl = !isNaN(lvl) ? lvl : 1;
var ability = desc.match(/casting ability is (.*?) /);
ability = ability && ability.length > 1 ? ability[1] : false;
ability = ability ? "@{" + ability.toLowerCase() + "_mod}+" : "0*";
update["npcspellcastingflag"] = 1;
update["spellcasting_ability"] = ability;
update["caster_level"] = lvl;
update["class"] = "Wizard";
update["base_level"] = lvl;
update["level"] = lvl;
callbacks.push(function() {
update_pb();
});
callbacks.push(function() {
update_spell_slots();
});
}
});
}
if (actionsarray) {
if (page.data["data-Actions"]) {
var actionsobj = {};
actionsarray.forEach(function(val) {
actionsobj[val.Name] = val;
});
_.each(actionsobj, function(action, name) {
newrowid = generateRowID();
update["repeating_npcaction_" + newrowid + "_npc_options-flag"] = "0";
update["repeating_npcaction_" + newrowid + "_name"] = name;
if (action["Desc"]) {
update["repeating_npcaction_" + newrowid + "_descrition"] = action["Desc"];
}
if (action["Type Attack"]) {
update["repeating_npcaction_" + newrowid + "_attack_flag"] = "on";
update["repeating_npcaction_" + newrowid + "_attack_display_flag"] = "{{attack=1}}";
update["repeating_npcaction_" + newrowid + "_attack_options"] = "{{attack=1}}";
if (action["Type"]) {
update["repeating_npcaction_" + newrowid + "_attack_type"] = action["Type"];
}
if (action["Reach"]) {
update["repeating_npcaction_" + newrowid + "_attack_range"] = action["Reach"];
}
if (action["Hit Bonus"]) {
update["repeating_npcaction_" + newrowid + "_attack_tohit"] = action["Hit Bonus"];
}
if (action["Target"]) {
update["repeating_npcaction_" + newrowid + "_attack_target"] = action["Target"];
}
if (action["Damage"]) {
update["repeating_npcaction_" + newrowid + "_attack_damage"] = action["Damage"];
}
if (action["Damage Type"]) {
update["repeating_npcaction_" + newrowid + "_attack_damagetype"] = action["Damage Type"];
}
if (action["Damage 2"] && action["Damage 2 Type"]) {
update["repeating_npcaction_" + newrowid + "_attack_damage2"] = action["Damage 2"];
update["repeating_npcaction_" + newrowid + "_attack_damagetype2"] = action["Damage 2 Type"];
}
}
})
} else {
actionsarray = actionsarray.split("**");
actionsarray.shift();
var actionsobj = {};
actionsarray.forEach(function(val, i) {
if (i % 2 === 1) return;
actionsobj[val] = actionsarray[i + 1];
});
_.each(actionsobj, function(desc, name) {
newrowid = generateRowID();
update["repeating_npcaction_" + newrowid + "_npc_options-flag"] = "0";
update["repeating_npcaction_" + newrowid + "_name"] = name;
if (desc.substring(0, 2) === ": " || encodeURI(desc.substring(0, 2)) === ":%C2%A0") {
desc = desc.substring(2);
}
if (desc.indexOf(" Attack:") > -1) {
update["repeating_npcaction_" + newrowid + "_attack_flag"] = "on";
update["repeating_npcaction_" + newrowid + "_attack_display_flag"] = "{{attack=1}}";
update["repeating_npcaction_" + newrowid + "_attack_options"] = "{{attack=1}}";
if (desc.indexOf(" Weapon Attack:") > -1) {
attacktype = desc.split(" Weapon Attack:")[0];
} else if (desc.indexOf(" Spell Attack:") > -1) {
attacktype = desc.split(" Spell Attack:")[0];
} else {
console.log("FAILED TO IMPORT ATTACK - NO ATTACK TYPE FOUND (Weapon Attack/Spell Attack)");
return;
}
update["repeating_npcaction_" + newrowid + "_attack_type"] = attacktype;
if (attacktype === "Melee") {
update["repeating_npcaction_" + newrowid + "_attack_range"] = (desc.match(/reach (.*?),/) || ["", ""])[1];
} else {
update["repeating_npcaction_" + newrowid + "_attack_range"] = (desc.match(/range (.*?),/) || ["", ""])[1];
}
update["repeating_npcaction_" + newrowid + "_attack_tohit"] = (desc.match(/\+(.*) to hit/) || ["", ""])[1];
update["repeating_npcaction_" + newrowid + "_attack_target"] = (desc.match(/\.,(?!.*\.,)(.*)\. Hit:/) || ["", ""])[1];
if (desc.toLowerCase().indexOf("damage") > -1) {
update["repeating_npcaction_" + newrowid + "_attack_damage"] = (desc.match(/\(([^)]+)\)/) || ["", ""])[1];
update["repeating_npcaction_" + newrowid + "_attack_damagetype"] = (desc.match(/\) (.*?) damage/) || ["", ""])[1];
if ((desc.match(/\(/g) || []).length > 1 && desc.match(/\((?!.*\()([^)]+)\)/)) {
var second_match = desc.match(/\((?!.*\()([^)]+)\)/);
if (second_match[1] && second_match[1].indexOf(" DC") === -1) {
update["repeating_npcaction_" + newrowid + "_attack_damage2"] = (desc.match(/\((?!.*\()([^)]+)\)/) || ["", ""])[1];
update["repeating_npcaction_" + newrowid + "_attack_damagetype2"] = (desc.match(/\)(?!.*\)) (.*?) damage/) || ["", ""])[1];
};
};
ctest1 = desc.split("damage.")[1];
ctest2 = desc.split("damage, ")[1];
if (ctest1 && ctest1.length > 0) {
update["repeating_npcaction_" + newrowid + "_descrition"] = ctest1.trim();
} else if (ctest2 && ctest2.length > 0) {
update["repeating_npcaction_" + newrowid + "_descrition"] = ctest2.trim();
}
} else {
update["repeating_npcaction_" + newrowid + "_descrition"] = desc.split("Hit:")[1].trim();
}
} else {
update["repeating_npcaction_" + newrowid + "_descrition"] = desc;
}
});
}
callbacks.push(function() {
update_npc_action("all");
});
}
if (reactionsarray) {
update["npcreactionsflag"] = 1;
if (page.data["data-Reactions"]) {
var reactionsobj = {};
reactionsarray.forEach(function(val) {
reactionsobj[val.Name] = val.Desc;
});
} else {
reactionsarray = reactionsarray.split("**");
reactionsarray.shift();
var reactionsobj = {};
reactionsarray.forEach(function(val, i) {
if (i % 2 === 1) return;
reactionsobj[val] = reactionsarray[i + 1];
});
}
_.each(reactionsobj, function(desc, name) {
newrowid = generateRowID();
update["repeating_npcreaction_" + newrowid + "_name"] = name + ".";
if (desc.substring(0, 2) === ": " || encodeURI(desc.substring(0, 2)) === ":%C2%A0") {
desc = desc.substring(2);
}
update["repeating_npcreaction_" + newrowid + "_desc"] = desc.trim();
});
}
if (legendaryactionsarray) {
if (page.data["data-Legendary Actions"]) {
var actionsobj = {};
legendaryactionsarray.forEach(function(val) {
actionsobj[val.Name] = val;
});
_.each(actionsobj, function(action, name) {
newrowid = generateRowID();
update["repeating_npcaction-l_" + newrowid + "_npc_options-flag"] = "0";
update["repeating_npcaction-l_" + newrowid + "_name"] = name;
update["repeating_npcaction-l_" + newrowid + "_descrition"] = action["Desc"];
if (action["Type Attack"]) {
update["repeating_npcaction-l_" + newrowid + "_attack_flag"] = "on";
update["repeating_npcaction-l_" + newrowid + "_attack_display_flag"] = "{{attack=1}}";
update["repeating_npcaction-l_" + newrowid + "_attack_options"] = "{{attack=1}}";
update["repeating_npcaction-l_" + newrowid + "_attack_type"] = action["Type Attack"];
update["repeating_npcaction-l_" + newrowid + "_attack_range"] = action["Reach"];
update["repeating_npcaction-l_" + newrowid + "_attack_tohit"] = action["Hit Bonus"];
update["repeating_npcaction-l_" + newrowid + "_attack_target"] = action["Target"];
update["repeating_npcaction-l_" + newrowid + "_attack_damage"] = action["Damage"];
update["repeating_npcaction-l_" + newrowid + "_attack_damagetype"] = action["Damage Type"];
if (action["Damage 2"] && action["Damage 2 Type"]) {
update["repeating_npcaction-l_" + newrowid + "_attack_damage2"] = action["Damage 2"];
update["repeating_npcaction-l_" + newrowid + "_attack_damagetype2"] = action["Damage 2 Type"];
}
}
});
} else {
var numlegendaryactions = (legendaryactionsarray.match(/\d+/) || [""])[0];
update["npc_legendary_actions"] = numlegendaryactions;
update["npc_legendary_actions_desc"] = `The ${page.name} can take ${numlegendaryactions}, choosing from the options below. Only one legendary option can be used at a time and only at the end of another creature's turn. The ${page.name} regains spent legendary actions at the start of its turn.`;
legendaryactionsarray = legendaryactionsarray.split("**");
legendaryactionsarray.shift();
var actionsobj = {};
legendaryactionsarray.forEach(function(val, i) {
if (i % 2 === 1) return;
actionsobj[val] = legendaryactionsarray[i + 1];
});
_.each(actionsobj, function(desc, name) {
newrowid = generateRowID();
update["repeating_npcaction-l_" + newrowid + "_npc_options-flag"] = "0";
update["repeating_npcaction-l_" + newrowid + "_name"] = name;
if (desc.substring(0, 2) === ": " || encodeURI(desc.substring(0, 2)) === ":%C2%A0") {
desc = desc.substring(2);
}
if (desc.indexOf(" Attack:") > -1) {
update["repeating_npcaction-l_" + newrowid + "_attack_flag"] = "on";
update["repeating_npcaction-l_" + newrowid + "_attack_display_flag"] = "{{attack=1}}";
update["repeating_npcaction-l_" + newrowid + "_attack_options"] = "{{attack=1}}";
if (desc.indexOf(" Weapon Attack:") > -1) {
attacktype = desc.split(" Weapon Attack:")[0];
} else if (desc.indexOf(" Spell Attack:") > -1) {
attacktype = desc.split(" Spell Attack:")[0];
} else {
console.log("FAILED TO IMPORT ATTACK - NO ATTACK TYPE FOUND (Weapon Attack/Spell Attack)");
return;
}
update["repeating_npcaction-l_" + newrowid + "_attack_type"] = attacktype;
if (attacktype === "Melee") {
update["repeating_npcaction-l_" + newrowid + "_attack_range"] = (desc.match(/reach (.*?),/) || ["", ""])[1];
} else {
update["repeating_npcaction-l_" + newrowid + "_attack_range"] = (desc.match(/range (.*?),/) || ["", ""])[1];
}
update["repeating_npcaction-l_" + newrowid + "_attack_tohit"] = (desc.match(/\+(.*) to hit/) || ["", ""])[1];
update["repeating_npcaction-l_" + newrowid + "_attack_target"] = (desc.match(/\.,(?!.*\.,)(.*)\. Hit:/) || ["", ""])[1];
update["repeating_npcaction-l_" + newrowid + "_attack_damage"] = (desc.match(/\(([^)]+)\)/) || ["", ""])[1];
update["repeating_npcaction-l_" + newrowid + "_attack_damagetype"] = (desc.match(/\) (.*?) damage/) || ["", ""])[1];
if ((desc.match(/\(/g) || []).length > 1 && (!desc.match(/\((?!.*\()([^)]+)\)/).indexOf(" DC")[1] || desc.match(/\((?!.*\()([^)]+)\)/).indexOf(" DC")[1] === -1)) {
update["repeating_npcaction-l_" + newrowid + "_attack_damage2"] = (desc.match(/\((?!.*\()([^)]+)\)/) || ["", ""])[1];
update["repeating_npcaction-l_" + newrowid + "_attack_damagetype2"] = (desc.match(/\)(?!.*\)) (.*?) damage/) || ["", ""])[1];
}
} else {
update["repeating_npcaction-l_" + newrowid + "_descrition"] = desc;
}
});
}
}
};
if (category === "Feats") {
update["tab"] = "features";
var match = {
name: page.name
};
var existing = _.findWhere(repeating.traits, match);
var newrowid = generateRowID();
if (existing) {
newrowid = existing.id;
existing.name = page.name;
existing.source = "Feat";
existing.type = page.data["Properties"] ? page.data["Properties"] : "";
} else {
var newtrait = {};
newtrait.id = newrowid;
newtrait.name = page.name;
newtrait.source = "Feat";
newtrait.type = page.data["Properties"] ? page.data["Properties"] : "";
repeating.traits.push(newtrait);
}
if (page.name) {
update["repeating_traits_" + newrowid + "_name"] = page.name
};
if (page.content) {
update["repeating_traits_" + newrowid + "_descrition"] = page.content
};
update["repeating_traits_" + newrowid + "_source"] = "Feat";
update["repeating_traits_" + newrowid + "_source_type"] = page.data["Properties"] ? page.data["Properties"] : "";
update["repeating_traits_" + newrowid + "_options-flag"] = "0";
update["repeating_traits_" + newrowid + "_display_flag"] = "on";
};
if (category === "Proficiencies") {
var newrowid = generateRowID();
var type = page.data["Type"] || "";
if (type.toLowerCase() === "language" || type.toLowerCase() === "armor" ||
type.toLowerCase() === "weapon" || type.toLowerCase() === "other") {
if (repeating.prof_names.indexOf(page.name.toLowerCase()) == -1) {
update["repeating_proficiencies_" + newrowid + "_prof_type"] = type.replace("custom", "").toUpperCase();
update["repeating_proficiencies_" + newrowid + "_name"] = page.name;
update["repeating_proficiencies_" + newrowid + "_options-flag"] = 0;
repeating.prof_names.push(page.name.toLowerCase());
};
} else if (type.toLowerCase() === "tool" || type.toLowerCase() === "skillcustom") {
let existing = {};
_.each(repeating.tool, function(tool, id) {
if (tool.toolname == page.name.toLowerCase()) {
newrowid = id;
existing = tool;
}
});
if (!existing.toolname) repeating.tool[newrowid] = {
toolname: page.name.toLowerCase()
}
update["repeating_tool_" + newrowid + "_toolname"] = page.name;
if (!existing.base) update["repeating_tool_" + newrowid + "_toolattr_base"] = "?{Attribute?|Strength,@{strength_mod}|Dexterity,@{dexterity_mod}|Constitution,@{constitution_mod}|Intelligence,@{intelligence_mod}|Wisdom,@{wisdom_mod}|Charisma,@{charisma_mod}}";
update["repeating_tool_" + newrowid + "_options-flag"] = 0;
if (page.data["toolbonus_base"]) update["repeating_tool_" + newrowid + "_toolbonus_base"] = "(@{pb}*2)";
repeating.prof_names.push(page.name.toLowerCase());
callbacks.push(function() {
update_tool(newrowid);
});
}
if (type.toLowerCase() === "skill") {
var skill_string = page.name.toLowerCase().replace(/ /g, '_');
update[skill_string + "_prof"] = "(@{pb}*@{" + skill_string + "_type})";
};
};
if (category === "Classes") {
update["tab"] = "core";
if (page.data.multiclass) {
if (page.name && page.name !== "") {
update[page.data.multiclass] = page.name;
}
update[page.data.multiclass + "_flag"] = "1";
classlevel = parseInt(currentData[page.data.multiclass + "_lvl"]);
} else {
if (page.name && page.name !== "") {
update["class"] = page.name;
}
if (page.data["Hit Die"] && page.data["Hit Die"] !== "") {
update["base_level"] = currentData.base_level ? currentData.base_level : "1";
update["hit_dice_max"] = update["base_level"] + page.data["Hit Die"];
update["hit_dice"] = update["base_level"];
}
if (page.data["Spellcasting Ability"] && page.data["Spellcasting Ability"] !== "") {
update["spellcasting_ability"] = "@{" + page.data["Spellcasting Ability"].toLowerCase() + "_mod}+";
}
}
if (page.data["data-Saving Throws"] && !page.data.multiclass) {
var saves = jsonparse(page.data["data-Saving Throws"]);
_.each(saves, function(value) {
update[value.toLowerCase() + "_save_prof"] = "(@{pb})";
});
}
if (!looped) {
callbacks.push(update_class);
}
};
if (category === "Subclasses") {
if (page.data.multiclass) {
if (page.name && page.name !== "") {
update[page.data.multiclass + "_subclass"] = page.name;
}
classlevel = parseInt(currentData[page.data.multiclass + "_lvl"]);
} else {
if (page.name && page.name !== "") {
update["subclass"] = page.name;
};
}
if (page.data["Spellcasting Ability"]) {
if (page.data.Class == "Fighter") {
update["arcane_fighter"] = "1";
} else if (page.data.Class == "Rogue") {
update["arcane_rogue"] = "1";
}
}
if (!looped) {
callbacks.push(update_class);
};
};
if (category === "Races" || category === "Subraces") {
update["tab"] = "core";
if (category === "Races") {
update["race"] = page.name;
if (page.name == "Halfling") {
update["halflingluck_flag"] = "1";
}
} else {
update["subrace"] = page.name;
};
if (page.data["Speed"]) {
update["speed"] = page.data["Speed"]
};
if (page.data["Size"]) {
update["size"] = page.data["Size"]
};
if (!looped) {
callbacks.push(update_race_display);
}
};
if (category === "Backgrounds") {
update["tab"] = "features";
if (page.name && page.name !== "") {
update["background"] = page.name;
};
};
if (page.data.theseblobs) {
_.each(page.data.theseblobs, function(blobname) {
if (page.data.blobs[blobname]) blobs[blobname] = page.data.blobs[blobname];
});
} else {
blobs = filterBlobs(page.data.blobs, {
"Level": "1"
});
}
_.each(blobs, function(blob, blobname) {
if (blob["Traits"]) {
var traitsource = "";
switch (category) {
case "Races":
case "Subraces":
traitsource = "Racial";
break;
case "Classes":
case "Subclasses":
traitsource = "Class";
break;
default:
traitsource = "Background";
}
var trait_array = jsonparse(blob["Traits"]);
if (trait_array && trait_array.length) {
_.each(trait_array, function(trait) {
if (!trait.Input) {
var match = {
name: trait["Name"],
type: page.name
};
if (trait["Replace"]) {
match = {
name: trait["Replace"]
};
}
var existing = _.findWhere(repeating.traits, match);
if (existing) {
newrowid = existing.id;
existing.name = trait["Name"];
existing.source = traitsource;
existing.type = page.name;
} else {
var newtrait = {};
newrowid = generateRowID();
newtrait.id = newrowid;
newtrait.name = trait["Name"];
newtrait.source = traitsource;
newtrait.type = page.name;
repeating.traits.push(newtrait);
}
update["repeating_traits_" + newrowid + "_name"] = trait["Name"].replace(/{{Input}}/g, "");
update["repeating_traits_" + newrowid + "_descrition"] = trait["Desc"] ? trait["Desc"].replace(/{{Input}}/g, "") : "";
update["repeating_traits_" + newrowid + "_source"] = traitsource;
update["repeating_traits_" + newrowid + "_source_type"] = page.name ? page.name : "";
update["repeating_traits_" + newrowid + "_options-flag"] = 0;
update["repeating_traits_" + newrowid + "_display_flag"] = "on";
}
});
};
};
if (blob["Language Proficiency"] || blob["Weapon Proficiency"] || blob["Armor Proficiency"] || blob["Tool Proficiency"]) {
if (blob["Language Proficiency"]) {
var lang_array = jsonparse(blob["Language Proficiency"]);
if (lang_array["Proficiencies"] && lang_array["Proficiencies"].length) {
_.each(lang_array["Proficiencies"], function(prof) {
if (repeating.prof_names.indexOf(prof.toLowerCase()) == -1) {
newrowid = generateRowID();
update["repeating_proficiencies_" + newrowid + "_prof_type"] = "LANGUAGE";
update["repeating_proficiencies_" + newrowid + "_name"] = prof;
update["repeating_proficiencies_" + newrowid + "_options-flag"] = 0;
repeating.prof_names.push(prof.toLowerCase());
}
});
}
};
if (blob["Weapon Proficiency"]) {
var weap_array = jsonparse(blob["Weapon Proficiency"]);
if (weap_array["Proficiencies"] && weap_array["Proficiencies"].length) {
_.each(weap_array["Proficiencies"], function(prof) {
if (repeating.prof_names.indexOf(prof.toLowerCase()) == -1) {
newrowid = generateRowID();
update["repeating_proficiencies_" + newrowid + "_prof_type"] = "WEAPON";
update["repeating_proficiencies_" + newrowid + "_name"] = prof;
update["repeating_proficiencies_" + newrowid + "_options-flag"] = 0;
repeating.prof_names.push(prof.toLowerCase());
}
});
}
};
if (blob["Armor Proficiency"]) {
var armor_array = jsonparse(blob["Armor Proficiency"]);
if (armor_array["Proficiencies"] && armor_array["Proficiencies"].length) {
_.each(armor_array["Proficiencies"], function(prof) {
if (repeating.prof_names.indexOf(prof.toLowerCase()) == -1) {
newrowid = generateRowID();
update["repeating_proficiencies_" + newrowid + "_prof_type"] = "ARMOR";
update["repeating_proficiencies_" + newrowid + "_name"] = prof;
update["repeating_proficiencies_" + newrowid + "_options-flag"] = 0;
repeating.prof_names.push(prof.toLowerCase());
}
});
}
};
if (blob["Tool Proficiency"]) {
var tool_array = jsonparse(blob["Tool Proficiency"]);
if (tool_array["Proficiencies"] && tool_array["Proficiencies"].length) {
_.each(tool_array["Proficiencies"], function(prof) {
let existing = {};
_.each(repeating.tool, function(tool, id) {
if (tool.toolname == prof.toLowerCase()) {
newrowid = id;
existing = tool;
}
});
if (!existing.toolname) repeating.tool[newrowid] = {
toolname: prof.toLowerCase()
}
update["repeating_tool_" + newrowid + "_toolname"] = prof;
if (!existing.base) update["repeating_tool_" + newrowid + "_toolattr_base"] = "?{Attribute?|Strength,@{strength_mod}|Dexterity,@{dexterity_mod}|Constitution,@{constitution_mod}|Intelligence,@{intelligence_mod}|Wisdom,@{wisdom_mod}|Charisma,@{charisma_mod}}";
update["repeating_tool_" + newrowid + "_options-flag"] = 0;
repeating.prof_names.push(page.name.toLowerCase());
callbacks.push(function() {
update_tool(newrowid);
});
});
}
};
};
if (blob["Skill Proficiency"]) {
var skill_array = jsonparse(blob["Skill Proficiency"]);
if (skill_array["Proficiencies"] && skill_array["Proficiencies"].length) {
_.each(skill_array["Proficiencies"], function(prof) {
var skill_string = prof.toLowerCase().replace(/ /g, '_');
update[skill_string + "_prof"] = "(@{pb}*@{" + skill_string + "_type})";
});
};
};
if (blob["Actions"]) {
var actionsobj = {};
jsonparse(blob["Actions"]).forEach(function(val) {
actionsobj[val.Name] = val;
});
_.each(actionsobj, function(action, name) {
newrowid = generateRowID();
_.each(repeating.attack, function(atk, atkid) {
if (atk.atkname === name) newrowid = atkid;
});
update["repeating_attack_" + newrowid + "_options-flag"] = "0";
update["repeating_attack_" + newrowid + "_atkname"] = name;
if (action["Desc"]) {
update["repeating_attack_" + newrowid + "_atk_desc"] = action["Desc"];
}
if (action["Type Attack"]) {
if (action["Type"] == "Spell") {
update["repeating_attack_" + newrowid + "_atkflag"] = "0";
update["repeating_attack_" + newrowid + "_attack_options"] = "";
update["repeating_attack_" + newrowid + "_saveflag"] = "{{save=1}} {{saveattr=@{saveattr}}} {{savedesc=@{saveeffect}}} {{savedc=[[[[@{savedc}]][SAVE]]]}}"
} else {
update["repeating_attack_" + newrowid + "_attack_flag"] = "on";
update["repeating_attack_" + newrowid + "_atkflag"] = "{{attack=1}}";
update["repeating_attack_" + newrowid + "_attack_options"] = "{{attack=1}}";
}
if (action["Reach"]) {
update["repeating_attack_" + newrowid + "_atkrange"] = action["Reach"];
}
if (action["Damage"]) {
update["repeating_attack_" + newrowid + "_dmgbase"] = action["Damage"];
}
if (action["Damage Type"]) {
update["repeating_attack_" + newrowid + "_dmgtype"] = action["Damage Type"];
}
if (action["Modifier"]) {
update["repeating_attack_" + newrowid + "_dmgattr"] = modStringToAttrib(action["Modifier"]);
update["repeating_attack_" + newrowid + "_atkattr_base"] = modStringToAttrib(action["Modifier"]);
} else {
update["repeating_attack_" + newrowid + "_dmgattr"] = "0";
}
if (action["Save"]) {
update["repeating_attack_" + newrowid + "_saveattr"] = action["Save"]
}
if (action["Save DC"]) {
update["repeating_attack_" + newrowid + "_savedc"] = "(" + modStringToAttrib(action["Save DC"]) + "+8+@{pb})"
}
if (action["Save Effect"]) {
update["repeating_attack_" + newrowid + "_saveeffect"] = action["Save Effect"]
}
if (action["Damage 2"] && action["Damage 2 Type"]) {
update["repeating_attack_" + newrowid + "_dmg2flag"] = "{{damage=1}} {{dmg2flag=1}}";
update["repeating_attack_" + newrowid + "_atk_dmg2base"] = action["Damage 2"];
update["repeating_attack_" + newrowid + "_attack_damagetype2"] = action["Damage 2 Type"];
if (action["Modifier 2"]) {
update["repeating_attack_" + newrowid + "_dmg2attr"] = modStringToAttrib(action["Modifier 2"]);
} else {
update["repeating_attack_" + newrowid + "_dmgattr"] = "0";
}
}
}
});
};
if (blob["Global Damage"]) {
var dmgmod = jsonparse(blob["Global Damage"]);
var id = generateRowID();
_.each(repeating.damagemod, function(name, rowid) {
if (name.toLowerCase() === dmgmod["Name"].toLowerCase()) id = rowid;
});
update["repeating_damagemod_" + id + "_global_damage_name"] = `${dmgmod["Name"]}`;
update["repeating_damagemod_" + id + "_global_damage_damage"] = `${parseValues(dmgmod["Damage"])}`;
if (dmgmod["Active"] == "true") update["repeating_damagemod_" + id + "_global_damage_active_flag"] = "1";
update["repeating_damagemod_" + id + "_options-flag"] = "0";
update["repeating_damagemod_" + id + "_global_damage_type"] = dmgmod["Type"] ? dmgmod["Type"] : dmgmod["Name"];
update["global_damage_mod_flag"] = "1";
repeating.damagemod[id] = dmgmod["Name"];
};
if (blob["Resources"]) {
var resources = jsonparse(blob["Resources"]);
_.each(resources, function(value) {
var section = "";
if (currentData["class_resource_name"] == "" || currentData["class_resource_name"] == value["Name"]) {
section = "class_resource";
} else if (currentData["other_resource_name"] == "" || currentData["other_resource_name"] == value["Name"]) {
section = "other_resource";
} else {
_.each(repeating.resource, function(resource, id) {
if (resource.left == "" && section == "" || resource.left == value["Name"]) {
section = "repeating_resource_" + id + "_resource_left";
}
if (resource.right == "" && section == "" || resource.right == value["Name"]) {
section = "repeating_resource_" + id + "_resource_right";
}
})
}
if (section === "") {
var id = generateRowID();
section = "repeating_resource_" + id + "_resource_left";
repeating.resource[id] = {
left: value["Name"],
right: ""
};
}
update[section + "_name"] = value["Name"];
if (value["Uses"]) update[section] = numUses(value["Uses"]);
update[section + "_max"] = value["Max"] ? numUses(value["Max"]) : numUses(value["Uses"]);
});
};
if (blob["Custom AC"]) {
var customac = jsonparse(blob["Custom AC"]);
update["custom_ac_flag"] = "1";
update["custom_ac_base"] = customac.Base;
update["custom_ac_part1"] = customac["Attribute 1"];
update["custom_ac_part2"] = customac["Attribute 2"] ? customac["Attribute 2"] : "";
update["custom_ac_shield"] = customac.Shields;
if (!looped) {
callbacks.push(function() {
update_ac();
})
}
};
if (blob["Hit Points Per Level"]) {
var id = generateRowID();
update["repeating_hpmod_" + id + "_mod"] = blob["Hit Points Per Level"];
update["repeating_hpmod_" + id + "_source"] = page.name ? page.name : "Subclass";
if (category === "Races" || category === "Subraces") {
update["repeating_hpmod_" + id + "_levels"] = "total";
} else {
update["repeating_hpmod_" + id + "_levels"] = "base";
}
};
if (blob["Global AC Mod"]) {
var globalac = jsonparse(blob["Global AC Mod"]);
var id = generateRowID();
_.each(repeating.acmod, function(name, rowid) {
if (name.toLowerCase() === globalac["Name"].toLowerCase()) id = rowid;
});
update["repeating_acmod_" + id + "_global_ac_val"] = globalac.Bonus;
if (globalac["Active"] !== "false") update["repeating_acmod_" + id + "_global_ac_active_flag"] = "1";
update["repeating_acmod_" + id + "_options-flag"] = "0";
update["repeating_acmod_" + id + "_global_ac_name"] = globalac.Name;
update["global_ac_mod_flag"] = "1";
};
if (blob["Global Save"]) {
var globalsave = jsonparse(blob["Global Save Mod"]);
var id = generateRowID();
_.each(repeating.savemod, function(name, rowid) {
if (name.toLowerCase() === globalsave["Name"].toLowerCase()) id = rowid;
});
update["repeating_savemod_" + id + "_global_save_roll"] = globalsave.Bonus;
if (globalsave["Active"] !== "false") update["repeating_savemod_" + id + "_global_save_active_flag"] = "1";
update["repeating_savemod_" + id + "_options-flag"] = "0";
update["repeating_savemod_" + id + "_global_save_name"] = globalsave.Name;
update["global_save_mod_flag"] = "1";
}
if (blob["Global Attack"]) {
var globalattack = jsonparse(blob["Global Attack"]);
var id = generateRowID();
_.each(repeating.tohitmod, function(name, rowid) {
if (name.toLowerCase() === globalattack["Name"].toLowerCase()) id = rowid;
});
update["repeating_tohitmod_" + id + "_global_attack_rollstring"] = `${globalattack["Bonus"]}[${globalattack["Name"]}]`;
if (globalattack["Active"] !== "false") update["repeating_tohitmod_" + id + "_global_attack_active_flag"] = "1";
update["repeating_tohitmod_" + id + "_options-flag"] = "0";
update["global_attack_mod_flag"] = "1";
};
if (blob["Initiative"]) {
if (blob["Initiative"].toLowerCase() === "advantage") {
update["initiative_style"] = "{@{d20},@{d20}}kh1";
} else if (blob["Initiative"].toLowerCase() === "disadvantage") {
update["initiative_style"] = "{@{d20},@{d20}}kl1";
} else {
update.initmod = numUses(blob["Initiative"]);
}
};
if (blob["Carry Multiplier"]) {
update["carrying_capacity_mod"] = "*" + blob["Carry Multiplier"];
};
if (blob["Speed"]) {
if (blob["Speed"][0] === "+") {
let prevspeed = update["speed"] || currentData["speed"];
prevspeed = prevspeed && !isNaN(parseInt(prevspeed)) ? parseInt(prevspeed) : 0;
update["speed"] = prevspeed + parseInt(blob["Speed"]);
} else {
update["speed"] = parseInt(blob["Speed"]);
}
};
if (blob["Jack of All Trades"]) {
update["jack_of_all_trades"] = "@{jack}";
};
if (blob["Saving Throws"]) {
var saves = jsonparse(blob["Saving Throws"]);
_.each(saves, function(value) {
update[value.toLowerCase() + "_save_prof"] = "(@{pb})";
});
};
if (blob["Custom Spells"]) {
let spells = jsonparse(blob["Custom Spells"]);
_.each(spells, function(spell) {
var lvl = spell["Level"] && spell["Level"] > 0 ? spell["Level"] : "cantrip";
let id = generateRowID();
if (repeating["spell-" + lvl]) {
_.each(repeating["spell-" + lvl], function(spell, spellid) {
if (spell.spellname.toLowerCase() === page.name.toLowerCase()) {
id = spellid;
}
});
}
update["repeating_spell-" + lvl + "_" + id + "_spelllevel"] = lvl;
if (spell["spellcasting_ability"]) {
update["repeating_spell-" + lvl + "_" + id + "_spell_ability"] = "@{" + spell["spellcasting_ability"].toLowerCase() + "_mod}+";;
} else {
update["repeating_spell-" + lvl + "_" + id + "_spell_ability"] = "spell";
}
if (spell["spellclass"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellclass"] = spell["spellclass"];
}
if (spell["spellsource"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellsource"] = spell["spellsource"];
}
update["repeating_spell-" + lvl + "_" + id + "_spellname"] = spell.Name;
if (spell["Ritual"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellritual"] = "{{ritual=1}}"
};
if (spell["School"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellschool"] = spell["School"].toLowerCase()
};
if (spell["Casting Time"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellcastingtime"] = spell["Casting Time"]
};
if (spell["Range"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellrange"] = spell["Range"]
};
if (spell["Target"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelltarget"] = spell["Target"]
};
if (spell["Components"]) {
if (spell["Components"].toLowerCase().indexOf("v") === -1) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_v"] = "0"
};
if (spell["Components"].toLowerCase().indexOf("s") === -1) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_s"] = "0"
};
if (spell["Components"].toLowerCase().indexOf("m") === -1) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_m"] = "0"
};
};
if (spell["Material"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellcomp_materials"] = spell["Material"]
};
if (spell["Concentration"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellconcentration"] = "{{concentration=1}}"
};
if (spell["Duration"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellduration"] = spell["Duration"]
};
if (spell["Damage"] || spell["Healing"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelloutput"] = "ATTACK";
callbacks.push(function() {
create_attack_from_spell(lvl, id, currentData.character_id);
});
} else if (spell["Higher Spell Slot Desc"] && spell["Higher Spell Slot Desc"] != "") {
var spelllevel = "?{Cast at what level?";
for (i = 0; i < 10 - lvl; i++) {
spelllevel = spelllevel + "|Level " + (parseInt(i, 10) + parseInt(lvl, 10)) + "," + (parseInt(i, 10) + parseInt(lvl, 10));
}
spelllevel = spelllevel + "}";
update["repeating_spell-" + lvl + "_" + id + "_rollcontent"] = "@{wtype}&{template:spell} {{level=@{spellschool} " + spelllevel + "}} {{name=@{spellname}}} {{castingtime=@{spellcastingtime}}} {{range=@{spellrange}}} {{target=@{spelltarget}}} @{spellcomp_v} @{spellcomp_s} @{spellcomp_m} {{material=@{spellcomp_materials}}} {{duration=@{spellduration}}} {{descrition=@{spelldescrition}}} {{athigherlevels=@{spellathigherlevels}}} @{spellritual} {{innate=@{innate}}} @{spellconcentration} @{charname_output}";
};
if (spell["Spell Attack"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellattack"] = spell["Spell Attack"]
};
if (spell["Damage"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamage"] = spell["Damage"]
};
if (spell["Damage Type"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamagetype"] = spell["Damage Type"]
};
if (spell["Secondary Damage"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamage2"] = spell["Secondary Damage"]
};
if (spell["Secondary Damage Type"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldamagetype2"] = spell["Secondary Damage Type"]
};
if (spell["Healing"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhealing"] = spell["Healing"];
};
if (spell["Add Casting Modifier"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldmgmod"] = spell["Add Casting Modifier"]
};
if (spell["Save"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellsave"] = spell["Save"]
};
if (spell["Save Success"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellsavesuccess"] = spell["Save Success"]
};
if (spell["Higher Spell Slot Dice"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhldie"] = spell["Higher Spell Slot Dice"]
};
if (spell["Higher Spell Slot Die"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhldietype"] = spell["Higher Spell Slot Die"]
};
if (spell["Higher Spell Slot Bonus"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellhlbonus"] = spell["Higher Spell Slot Bonus"]
};
if (spell["Higher Spell Slot Desc"]) {
update["repeating_spell-" + lvl + "_" + id + "_spellathigherlevels"] = spell["Higher Spell Slot Desc"]
};
if (spell["data-Cantrip Scaling"] && lvl == "cantrip") {
update["repeating_spell-" + lvl + "_" + id + "_spell_damage_progression"] = "Cantrip " + spell["data-Cantrip Scaling"].charAt(0).toUpperCase() + spell["data-Cantrip Scaling"].slice(1);
};
if (spell["data-descrition"]) {
update["repeating_spell-" + lvl + "_" + id + "_spelldescrition"] = spell["data-descrition"]
};
update["repeating_spell-" + lvl + "_" + id + "_options-flag"] = "0";
})
};
if (blob["Global Save Mod"]) {
update["globalsavemod"] = numUses(blob["Global Save Mod"]);
};
if (blob["Proficiency Bonus"]) {
var bonus = jsonparse(blob["Proficiency Bonus"]);
_.each(bonus, function(value, prof) {
update[prof.replace(/ /g, "_").toLowerCase() + "_flat"] = numUses(value);
});
};
/**/
});
return {
update: update,
repeating: repeating,
callbacks: callbacks
};
};
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("spell") > -1) {
update_spell_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("arcana") > -1) {
update_skills(["arcana"]);
};
if (mod.indexOf("athletics") > -1) {
update_skills(["athletics"]);
};
if (mod.indexOf("deception") > -1) {
update_skills(["deception"]);
};
if (mod.indexOf("history") > -1) {
update_skills(["history"]);
};
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("religion") > -1) {
update_skills(["religion"]);
};
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"]);
};
});
};
var create_attack_from_item = function(itemid, options) {
var update = {};
var newrowid = generateRowID();
update["repeating_inventory_" + itemid + "_itemattackid"] = newrowid;
if (options && options.versatile) {
var newrowid2 = generateRowID();
update["repeating_inventory_" + itemid + "_itemattackid"] += "," + newrowid2;
setAttrs(update, {}, function() {
update_attack_from_item(itemid, newrowid, {
newattack: true,
versatile: "primary"
});
update_attack_from_item(itemid, newrowid2, {
newattack: true,
versatile: "secondary"
});
});
} else {
setAttrs(update, {}, update_attack_from_item(itemid, newrowid, {
newattack: true
}));
}
};
var update_attack_from_item = function(itemid, attackid, options) {
getAttrs(["repeating_inventory_" + itemid + "_itemname", "repeating_inventory_" + itemid + "_itemproperties", "repeating_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["repeating_inventory_" + itemid + "_itemmodifiers"] && v["repeating_inventory_" + itemid + "_itemmodifiers"] != "") {
var mods = v["repeating_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["repeating_inventory_" + itemid + "_itemname"] && v["repeating_inventory_" + itemid + "_itemname"] != "") {
update["repeating_attack_" + attackid + "_atkname"] = v["repeating_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["repeating_inventory_" + itemid + "_itemproperties"] && /finesse/i.test(v["repeating_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 + "_atkmagic"] = 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 + "_atkmagic"] = "";
}
var callback = function() {
update_attacks(attackid, "item")
};
setAttrs(update, {
silent: true
}, callback);
});
};
var create_resource_from_item = function(itemid) {
var update = {};
var newrowid = generateRowID();
getAttrs(["other_resource_name"], function(x) {
if (!x.other_resource_name || x.other_resource_name == "") {
update["repeating_inventory_" + itemid + "_itemresourceid"] = "other_resource";
setAttrs(update, {}, update_resource_from_item(itemid, "other_resource", true));
} else {
getSectionIDs("repeating_resource", function(idarray) {
if (idarray.length == 0) {
update["repeating_inventory_" + itemid + "_itemresourceid"] = newrowid + "_resource_left";
setAttrs(update, {}, update_resource_from_item(itemid, newrowid + "_resource_left", true));
} 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["repeating_inventory_" + itemid + "_itemresourceid"] = currentID + "_resource_left";
setAttrs(update, {}, update_resource_from_item(itemid, currentID + "_resource_left", true));
existing = true;
} else if ((!y["repeating_resource_" + currentID + "_resource_right_name"] || y["repeating_resource_" + currentID + "_resource_right_name"] === "") && existing == false) {
update["repeating_inventory_" + itemid + "_itemresourceid"] = currentID + "_resource_right";
setAttrs(update, {}, update_resource_from_item(itemid, currentID + "_resource_right", true));
existing = true;
};
});
if (!existing) {
update["repeating_inventory_" + itemid + "_itemresourceid"] = newrowid + "_resource_left";
setAttrs(update, {}, update_resource_from_item(itemid, newrowid + "_resource_left", true));
}
});
};
});
};
});
};
var update_resource_from_item = function(itemid, resourceid, newresource) {
getAttrs(["repeating_inventory_" + itemid + "_itemname", "repeating_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["repeating_inventory_" + itemid + "_itemname"]) {
update["repeating_inventory_" + itemid + "_useasresource"] = 0;
update["repeating_inventory_" + itemid + "_itemresourceid"] = "";
remove_resource(resourceid);
};
if (v["repeating_inventory_" + itemid + "_itemname"] && v["repeating_inventory_" + itemid + "_itemname"] != "") {
update[id + "_name"] = v["repeating_inventory_" + itemid + "_itemname"];
};
if (v["repeating_inventory_" + itemid + "_itemcount"] && v["repeating_inventory_" + itemid + "_itemcount"] != "") {
update[id] = v["repeating_inventory_" + itemid + "_itemcount"];
};
setAttrs(update, {
silent: true
});
});
};
var update_item_from_resource = function(resourceid, itemid) {
var update = {};
getAttrs([resourceid, resourceid + "_name"], function(v) {
update["repeating_inventory_" + itemid + "_itemcount"] = v[resourceid];
update["repeating_inventory_" + itemid + "_itemname"] = v[resourceid + "_name"];
setAttrs(update, {
silent: true
}, function() {
update_weight()
});
});
};
var create_attack_from_spell = function(lvl, spellid, character_id) {
var update = {};
var newrowid = generateRowID();
update["repeating_spell-" + lvl + "_" + spellid + "_spellattackid"] = newrowid;
update["repeating_spell-" + lvl + "_" + spellid + "_rollcontent"] = "%{" + character_id + "|repeating_attack_" + newrowid + "_attack}";
setAttrs(update, {}, update_attack_from_spell(lvl, spellid, newrowid, true));
}
var update_attack_from_spell = function(lvl, spellid, attackid, newattack) {
getAttrs(["repeating_spell-" + lvl + "_" + spellid + "_spellname",
"repeating_spell-" + lvl + "_" + spellid + "_spellrange",
"repeating_spell-" + lvl + "_" + spellid + "_spelltarget",
"repeating_spell-" + lvl + "_" + spellid + "_spellattack",
"repeating_spell-" + lvl + "_" + spellid + "_spelldamage",
"repeating_spell-" + lvl + "_" + spellid + "_spelldamage2",
"repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype",
"repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype2",
"repeating_spell-" + lvl + "_" + spellid + "_spellhealing",
"repeating_spell-" + lvl + "_" + spellid + "_spelldmgmod",
"repeating_spell-" + lvl + "_" + spellid + "_spellsave",
"repeating_spell-" + lvl + "_" + spellid + "_spellsavesuccess",
"repeating_spell-" + lvl + "_" + spellid + "_spellhldie",
"repeating_spell-" + lvl + "_" + spellid + "_spellhldietype",
"repeating_spell-" + lvl + "_" + spellid + "_spellhlbonus",
"repeating_spell-" + lvl + "_" + spellid + "_spelllevel",
"repeating_spell-" + lvl + "_" + spellid + "_includedesc",
"repeating_spell-" + lvl + "_" + spellid + "_spelldescrition",
"repeating_spell-" + lvl + "_" + spellid + "_spellathigherlevels",
"repeating_spell-" + lvl + "_" + spellid + "_spell_damage_progression",
"repeating_spell-" + lvl + "_" + spellid + "_innate",
"repeating_spell-" + lvl + "_" + spellid + "_spell_ability",
"spellcasting_ability"
], function(v) {
var update = {};
var descrition = "";
var spellAbility = v["repeating_spell-" + lvl + "_" + spellid + "_spell_ability"] != "spell" ? v["repeating_spell-" + lvl + "_" + spellid + "_spell_ability"].slice(0, -1) : "spell";
update["repeating_attack_" + attackid + "_atkattr_base"] = spellAbility;
if (newattack) {
update["repeating_attack_" + attackid + "_options-flag"] = "0";
update["repeating_attack_" + attackid + "_spellid"] = spellid;
update["repeating_attack_" + attackid + "_spelllevel"] = lvl;
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spell_ability"] == "spell") {
update["repeating_attack_" + attackid + "_savedc"] = "(@{spell_save_dc})";
} else if (v["repeating_spell-" + lvl + "_" + spellid + "_spell_ability"]) {
update["repeating_attack_" + attackid + "_savedc"] = "(" + spellAbility + "+8+@{spell_dc_mod}+@{pb})";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellname"] && v["repeating_spell-" + lvl + "_" + spellid + "_spellname"] != "") {
update["repeating_attack_" + attackid + "_atkname"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellname"];
}
if (!v["repeating_spell-" + lvl + "_" + spellid + "_spellattack"] || v["repeating_spell-" + lvl + "_" + spellid + "_spellattack"] === "None") {
update["repeating_attack_" + attackid + "_atkflag"] = "0";
} else {
update["repeating_attack_" + attackid + "_atkflag"] = "{{attack=1}}";
descrition = descrition + v["repeating_spell-" + lvl + "_" + spellid + "_spellattack"] + " Spell Attack. ";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"] && v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"] != "") {
update["repeating_attack_" + attackid + "_dmgflag"] = "{{damage=1}} {{dmg1flag=1}}";
if (v["repeating_spell-" + lvl + "_" + spellid + "_spell_damage_progression"] && v["repeating_spell-" + lvl + "_" + spellid + "_spell_damage_progression"] === "Cantrip Dice") {
update["repeating_attack_" + attackid + "_dmgbase"] = "[[round((@{level} + 1) / 6 + 0.5)]]" + v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"].substring(1);
} else {
update["repeating_attack_" + attackid + "_dmgbase"] = v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"];
}
} else {
update["repeating_attack_" + attackid + "_dmgflag"] = "0"
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spelldmgmod"] && v["repeating_spell-" + lvl + "_" + spellid + "_spelldmgmod"] === "Yes") {
update["repeating_attack_" + attackid + "_dmgattr"] = spellAbility;
} else {
update["repeating_attack_" + attackid + "_dmgattr"] = "0";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype"]) {
update["repeating_attack_" + attackid + "_dmgtype"] = v["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype"];
} else {
update["repeating_attack_" + attackid + "_dmgtype"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage2"]) {
update["repeating_attack_" + attackid + "_dmg2base"] = v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage2"];
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_spell-" + lvl + "_" + spellid + "_spelldamagetype2"]) {
update["repeating_attack_" + attackid + "_dmg2type"] = v["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype2"];
} else {
update["repeating_attack_" + attackid + "_dmg2type"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellrange"]) {
update["repeating_attack_" + attackid + "_atkrange"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellrange"];
} else {
update["repeating_attack_" + attackid + "_atkrange"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellrange"]) {
update["repeating_attack_" + attackid + "_atkrange"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellrange"];
} else {
update["repeating_attack_" + attackid + "_atkrange"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellsave"]) {
update["repeating_attack_" + attackid + "_saveflag"] = "{{save=1}} {{saveattr=@{saveattr}}} {{savedesc=@{saveeffect}}} {{savedc=[[[[@{savedc}]][SAVE]]]}}";
update["repeating_attack_" + attackid + "_saveattr"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellsave"];
} else {
update["repeating_attack_" + attackid + "_saveflag"] = "0";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellsavesuccess"]) {
update["repeating_attack_" + attackid + "_saveeffect"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellsavesuccess"];
} else {
update["repeating_attack_" + attackid + "_saveeffect"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellhldie"] && v["repeating_spell-" + lvl + "_" + spellid + "_spellhldie"] != "" && v["repeating_spell-" + lvl + "_" + spellid + "_spellhldietype"] && v["repeating_spell-" + lvl + "_" + spellid + "_spellhldietype"] != "") {
var bonus = "";
var spelllevel = v["repeating_spell-" + lvl + "_" + spellid + "_spelllevel"];
var query = "?{Cast at what level?";
for (i = 0; i < 10 - spelllevel; i++) {
query = query + "|Level " + (parseInt(i, 10) + parseInt(spelllevel, 10)) + "," + i;
}
query = query + "}";
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellhlbonus"] && v["repeating_spell-" + lvl + "_" + spellid + "_spellhlbonus"] != "") {
bonus = "+(" + v["repeating_spell-" + lvl + "_" + spellid + "_spellhlbonus"] + "*" + query + ")";
}
update["repeating_attack_" + attackid + "_hldmg"] = "{{hldmg=[[(" + v["repeating_spell-" + lvl + "_" + spellid + "_spellhldie"] + "*" + query + ")" + v["repeating_spell-" + lvl + "_" + spellid + "_spellhldietype"] + bonus + "]]}}";
} else {
update["repeating_attack_" + attackid + "_hldmg"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellhealing"] && v["repeating_spell-" + lvl + "_" + spellid + "_spellhealing"] != "") {
if (!v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"] || v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"] === "") {
update["repeating_attack_" + attackid + "_dmgbase"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellhealing"];
update["repeating_attack_" + attackid + "_dmgflag"] = "{{damage=1}} {{dmg1flag=1}}";
update["repeating_attack_" + attackid + "_dmgtype"] = "Healing";
} else if (!v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage2"] || v["repeating_spell-" + lvl + "_" + spellid + "_spelldamage2"] === "") {
update["repeating_attack_" + attackid + "_dmg2base"] = v["repeating_spell-" + lvl + "_" + spellid + "_spellhealing"];
update["repeating_attack_" + attackid + "_dmg2flag"] = "{{damage=1}} {{dmg2flag=1}}";
update["repeating_attack_" + attackid + "_dmg2type"] = "Healing";
}
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_innate"]) {
update["repeating_attack_" + attackid + "_spell_innate"] = v["repeating_spell-" + lvl + "_" + spellid + "_innate"];
} else {
update["repeating_attack_" + attackid + "_spell_innate"] = "";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_spelltarget"]) {
descrition = descrition + v["repeating_spell-" + lvl + "_" + spellid + "_spelltarget"] + ". ";
}
if (v["repeating_spell-" + lvl + "_" + spellid + "_includedesc"] && v["repeating_spell-" + lvl + "_" + spellid + "_includedesc"] === "on") {
descrition = v["repeating_spell-" + lvl + "_" + spellid + "_spelldescrition"];
if (v["repeating_spell-" + lvl + "_" + spellid + "_spellathigherlevels"] && v["repeating_spell-" + lvl + "_" + spellid + "_spellathigherlevels"] != "") {
descrition = descrition + "\n\nAt Higher Levels: " + v["repeating_spell-" + lvl + "_" + spellid + "_spellathigherlevels"];
}
} else if (v["repeating_spell-" + lvl + "_" + spellid + "_includedesc"] && v["repeating_spell-" + lvl + "_" + spellid + "_includedesc"] === "off") {
descrition = "";
};
update["repeating_attack_" + attackid + "_atk_desc"] = descrition;
var callback = function() {
update_attacks(attackid, "spell")
};
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", "spells", "all"].indexOf(update_id) > -1) {
getSectionIDs("repeating_attack", function(idarray) {
if (update_id === "all") {
do_update_attack(idarray);
} else if (update_id === "spells") {
var attack_attribs = [];
_.each(idarray, function(id) {
attack_attribs.push("repeating_attack_" + id + "_spellid", "repeating_attack_" + id + "_spelllevel");
});
getAttrs(attack_attribs, function(v) {
var filteredIds = _.filter(idarray, function(id) {
return v["repeating_attack_" + id + "_spellid"] && v["repeating_attack_" + id + "_spellid"] != "";
});
var spell_attacks = {};
_.each(filteredIds, function(attack_id) {
spell_attacks[attack_id] = {
spell_id: v["repeating_attack_" + attack_id + "_spellid"],
spell_lvl: v["repeating_attack_" + attack_id + "_spelllevel"]
};
});
_.each(spell_attacks, function(data, attack_id) {
update_attack_from_spell(data.spell_lvl, data.spell_id, attack_id);
});
});
} else {
var attack_attribs = ["spellcasting_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"] === "(@{spell_save_dc})" && v["spellcasting_ability"] && v["spellcasting_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", "globalmagicmod", "strength_mod", "dexterity_mod", "constitution_mod", "intelligence_mod", "wisdom_mod", "charisma_mod", "spellcasting_ability", "spell_save_dc", "spell_attack_mod", "spell_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 + "_atkmagic");
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 + "_spellid");
attack_attribs.push("repeating_attack_" + attackid + "_spelllevel");
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");
});
getAttrs(attack_attribs, function(v) {
_.each(attack_array, function(attackid) {
var callbacks = [];
var update = {};
var hbonus = "";
var hdmg1 = "";
var hdmg2 = "";
var dmg = "";
var dmg2 = "";
var rollbase = "";
var spellattack = false;
var magicattackmod = 0;
var magicsavemod = 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 + "_spellid"] && v["repeating_attack_" + attackid + "_spellid"] != "") {
spellattack = true;
magicattackmod = v["spell_attack_mod"] && !isNaN(parseInt(v["spell_attack_mod"], 10)) ? parseInt(v["spell_attack_mod"], 10) : 0;
magicsavemod = v["spell_dc_mod"] && !isNaN(parseInt(v["spell_dc_mod"], 10)) ? parseInt(v["spell_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"] === "spell") {
atkattr_base = parseInt(v[v["spellcasting_ability"].substring(2, v["spellcasting_ability"].length - 2)], 10);
atkattr_abrev = v["spellcasting_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"] === "spell") {
dmgattr = parseInt(v[v["spellcasting_ability"].substring(2, v["spellcasting_ability"].length - 2)], 10);
dmgattr_abrev = v["spellcasting_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"] === "spell") {
dmg2attr = parseInt(v[v["spellcasting_ability"].substring(2, v["spellcasting_ability"].length - 2)], 10);
dmg2attr_abrev = v["spellcasting_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;
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 + "_atkmagic"] && v["repeating_attack_" + attackid + "_atkmagic"] != "" ? parseInt(v["repeating_attack_" + attackid + "_atkmagic"], 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 + " Magic Bonus" : "";
if (v["repeating_attack_" + attackid + "_atkflag"] && v["repeating_attack_" + attackid + "_atkflag"] != 0) {
bonus_mod = atkattr_base + atkmod + atkmag + magicattackmod;
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"] === "(@{spell_save_dc})")) {
var tempdc = v["spell_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 + magicsavemod;
};
bonus = "DC" + tempdc;
} else {
bonus = "-";
}
if (v["repeating_attack_" + attackid + "_dmgflag"] && v["repeating_attack_" + attackid + "_dmgflag"] != 0) {
if (spellattack === 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 (magicattackmod != 0) {
hbonus = " + " + magicattackmod + "[SPELLATK]" + hbonus
};
if (atkmag != 0) {
hbonus = " + " + atkmag + "[MAGIC]" + 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 + "[MAGIC]" + 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 + " {{spelllevel=@{spelllevel}}} {{innate=@{spell_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}}} {{spelllevel=@{spelllevel}}} {{innate=@{spell_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} {{spelllevel=@{spelllevel}}} {{innate=@{spell_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}}} {{spelllevel=@{spelllevel}}} {{innate=@{spell_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} {{spelllevel=@{spelllevel}}} {{innate=@{spell_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 + " {{spelllevel=@{spelllevel}}} {{innate=@{spell_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 + "_spellid"] && v["repeating_attack_" + attackid + "_spellid"] != "" && (!source || source && source != "spell") && v["repeating_attack_" + attackid + "_spellid"].length == 20) {
var spellid = v["repeating_attack_" + attackid + "_spellid"];
var lvl = v["repeating_attack_" + attackid + "_spelllevel"];
callbacks.push(function() {
update_spell_from_attack(lvl, spellid, 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_spell_from_attack = function(lvl, spellid, 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_spell-" + lvl + "_" + spellid + "_spellname"] = v["repeating_attack_" + attackid + "_atkname"];
if (v["repeating_attack_" + attackid + "_atkrange"] && v["repeating_attack_" + attackid + "_atkrange"] != "") {
update["repeating_spell-" + lvl + "_" + spellid + "_spellrange"] = v["repeating_attack_" + attackid + "_atkrange"];
} else {
update["repeating_spell-" + lvl + "_" + spellid + "_spellrange"] = "";
};
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_spell-" + lvl + "_" + spellid + "_spellhealing"] = 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_spell-" + lvl + "_" + spellid + "_spelldamage"] = v["repeating_attack_" + attackid + "_dmgbase"];
} else if (!v["repeating_attack_" + attackid + "_dmgbase"] || v["repeating_attack_" + attackid + "_dmgbase"] === "") {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamage"] = "";
}
if (v["repeating_attack_" + attackid + "_dmgtype"] && v["repeating_attack_" + attackid + "_dmgtype"] != "") {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype"] = v["repeating_attack_" + attackid + "_dmgtype"];
} else {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype"] = "";
}
};
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_spell-" + lvl + "_" + spellid + "_spellhealing"] = v["repeating_attack_" + attackid + "_dmgbase"];
}
} else {
if (v["repeating_attack_" + attackid + "_dmg2base"] && v["repeating_attack_" + attackid + "_dmg2base"] != "") {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamage2"] = v["repeating_attack_" + attackid + "_dmg2base"];
} else {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamage2"] = "";
}
if (v["repeating_attack_" + attackid + "_dmg2type"] && v["repeating_attack_" + attackid + "_dmg2type"] != "") {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype2"] = v["repeating_attack_" + attackid + "_dmg2type"];
} else {
update["repeating_spell-" + lvl + "_" + spellid + "_spelldamagetype2"] = "";
}
};
if (v["repeating_attack_" + attackid + "_saveflag"] && v["repeating_attack_" + attackid + "_saveflag"] != "0") {
update["repeating_spell-" + lvl + "_" + spellid + "_spellsave"] = v["repeating_attack_" + attackid + "_saveattr"];
} else {
update["repeating_spell-" + lvl + "_" + spellid + "_spellsave"] = "";
};
if (v["repeating_attack_" + attackid + "_saveeffect"] && v["repeating_attack_" + attackid + "_saveeffect"] != "") {
update["repeating_spell-" + lvl + "_" + spellid + "_spellsavesuccess"] = v["repeating_attack_" + attackid + "_saveeffect"];
} else {
update["repeating_spell-" + lvl + "_" + spellid + "_spellsavesuccess"] = "";
};
setAttrs(update, {
silent: true
});
});
};
var update_item_from_attack = function(itemid, attackid) {
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", "repeating_inventory_" + itemid + "_itemmodifiers", "repeating_attack_" + attackid + "_versatile_alt", "repeating_inventory_" + itemid + "_itemproperties", "repeating_attack_" + attackid + "_atkmagic"], function(v) {
var update = {};
var mods = v["repeating_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 magicmod = v["repeating_attack_" + attackid + "_atkmagic"] ? v["repeating_attack_" + attackid + "_atkmagic"] : 0;
var atktype = "";
var altprefix = v["repeating_attack_" + attackid + "_versatile_alt"] === "1" ? "Alternate " : "";
if (/Alternate Damage:/i.test(v["repeating_inventory_" + itemid + "_itemmodifiers"])) {
update["repeating_inventory_" + itemid + "_itemname"] = v["repeating_attack_" + attackid + "_atkname"].replace(/\s*(?:\(One-Handed\)|\(Two-Handed\))/, "");
} else {
update["repeating_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["repeating_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 (magicmod !== 0 || attackmod !== 0) {
mods[i] = mods[i].replace(attackmod_found[1], magicmod !== 0 ? magicmod : attackmod);
} else {
mods.splice(i, 1);
}
break;
}
}
if (!attackmod_found && (magicmod !== 0 || attackmod !== 0)) {
var properties = v["repeating_inventory_" + itemid + "_itemproperties"];
if (properties && /Thrown/i.test(properties)) {
mods.push("Weapon Attacks: " + (magicmod !== 0 ? magicmod : attackmod));
} else {
mods.push(atktype + " Attacks: " + (magicmod !== 0 ? magicmod : 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 (magicmod !== 0 || damagemod !== 0) {
mods[i] = mods[i].replace(damagemod_found[1], magicmod !== 0 ? magicmod : attackmod);
} else {
mods.splice(i, 1);
}
break;
}
}
if (!damagemod_found && (magicmod !== 0 || damagemod !== 0)) {
var properties = v["repeating_inventory_" + itemid + "_itemproperties"];
if (properties && /Thrown/i.test(properties)) {
mods.push("Weapon Damage: " + (magicmod !== 0 ? magicmod : damagemod));
} else {
mods.push(atktype + " Damage: " + (magicmod !== 0 ? magicmod : damagemod));
}
}
update["repeating_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) {
update["repeating_inventory_" + itemid + "_useasresource"] = 0;
update["repeating_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() {
var update = {};
var wtotal = 0;
var stotal = 0; // ITEM SLOTS
var weight_attrs = ["cp", "sp", "ep", "gp", "pp", "currency_value", "encumberance_setting", "strength", "strength_mod", "size", "carrying_capacity_mod", "inventory_slots_mod", "use_inventory_slots", "itemweightfixed", "itemslotsfixed"];
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
weight_attrs.push("repeating_inventory_" + currentID + "_itemweight");
weight_attrs.push("repeating_inventory_" + currentID + "_itemcount");
weight_attrs.push("repeating_inventory_" + currentID + "_itemsize");
weight_attrs.push("repeating_inventory_" + currentID + "_equipped");
weight_attrs.push("repeating_inventory_" + currentID + "_carried");
weight_attrs.push("repeating_inventory_" + currentID + "_itemcontainer");
weight_attrs.push("repeating_inventory_" + currentID + "_itemweightfixed");
weight_attrs.push("repeating_inventory_" + currentID + "_itemslotsfixed");
weight_attrs.push("repeating_inventory_" + currentID + "_itemcontainer_slots_modifier");
});
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;
currencyOther = isNaN(parseInt(v.currency_value, 10)) === false ? parseInt(v.currency_value, 10) : 0;
wtotal = wtotal + ((cp + sp + ep + gp + pp + currencyOther) / 50);
stotal += Math.floor(Math.max(0, cp + sp + ep + gp + pp + currencyOther - 1) / 100);
var slots_modifier = 0;
_.each(idarray, function(currentID, i) {
if (v["repeating_inventory_" + currentID + "_equipped"] == 1 || v["repeating_inventory_" + currentID + "_carried"] == 1) {
if (v["repeating_inventory_" + currentID + "_itemcontainer"] == 1) {
// GET SLOTS MODIFIER IF EQUIPPED
if (v["repeating_inventory_" + currentID + "_equipped"] == 1) {
var field_id = "repeating_inventory_" + currentID + "_itemcontainer_slots_modifier";
if (v[field_id]) {
if (["+", "-"].indexOf(v[field_id]) > -1) {
var operator = v[field_id].substring(0, 1);
var value = v[field_id].substring(1);
if (isNaN(parseInt(value, 10)) === false) {
if (operator == "+") {
slots_modifier += parseInt(value, 10);
} else if (operator == "-") {
slots_modifier -= parseInt(value, 10);
}
}
} else {
if (isNaN(parseInt(v[field_id], 10)) === false) {
slots_modifier += parseInt(v[field_id], 10);
}
}
}
}
} else {
// UPDATE WEIGHT
if (v["repeating_inventory_" + currentID + "_itemweight"] && isNaN(parseInt(v["repeating_inventory_" + currentID + "_itemweight"], 10)) === false) {
if (v["repeating_inventory_" + currentID + "_itemweightfixed"] == 1) {
wtotal += parseFloat(v["repeating_inventory_" + currentID + "_itemweight"]);
} else {
count = v["repeating_inventory_" + currentID + "_itemcount"] && isNaN(parseFloat(v["repeating_inventory_" + currentID + "_itemcount"])) === false ? parseFloat(v["repeating_inventory_" + currentID + "_itemcount"]) : 1;
wtotal = wtotal + (parseFloat(v["repeating_inventory_" + currentID + "_itemweight"]) * count);
}
}
// UPDATE SLOTS
if (v["repeating_inventory_" + currentID + "_itemsize"] && isNaN(parseInt(v["repeating_inventory_" + currentID + "_itemsize"], 10)) === false) {
if (v["repeating_inventory_" + currentID + "_itemslotsfixed"] == 1) {
stotal += parseFloat(v["repeating_inventory_" + currentID + "_itemsize"]);
} else {
count = v["repeating_inventory_" + currentID + "_itemcount"] && isNaN(parseFloat(v["repeating_inventory_" + currentID + "_itemcount"])) === false ? parseFloat(v["repeating_inventory_" + currentID + "_itemcount"]) : 1;
stotal = stotal + (parseFloat(v["repeating_inventory_" + currentID + "_itemsize"]) * count);
}
}
}
}
});
// CAP TOTALS AT 2 DECIMAL PLACES
wtotal = Math.round(wtotal * 100) / 100;
stotal = Math.round(stotal * 100) / 100;
update["weighttotal"] = wtotal;
update["slotstotal"] = stotal;
if (v["use_inventory_slots"] == 1) {
var size_slots = 18;
if (v["size"] && v["size"] != "") {
if (v["size"].toLowerCase().trim() == "tiny") {
size_slots = 9
} else if (v["size"].toLowerCase().trim() == "small") {
size_slots = 15
} else if (v["size"].toLowerCase().trim() == "large") {
size_slots = 21
} else if (v["size"].toLowerCase().trim() == "huge") {
size_slots = 27
} else if (v["size"].toLowerCase().trim() == "gargantuan") {
size_slots = 39
}
}
size_slots += parseInt(v.strength_mod, 10);
if (v.inventory_slots_mod) {
var operator = v.inventory_slots_mod.substring(0, 1);
var value = v.inventory_slots_mod.substring(1);
if (["*", "x", "+", "-"].indexOf(operator) > -1 && isNaN(parseInt(value, 10)) === false) {
if (operator == "*" || operator == "x") {
size_slots *= parseInt(value, 10);
} else if (operator == "+") {
size_slots += parseInt(value, 10);
} else if (operator == "-") {
size_slots -= parseInt(value, 10);
}
}
}
size_slots += slots_modifier;
update["slotsmaximum"] = size_slots;
if (stotal > size_slots) {
update["encumberance"] = "OVER CARRYING CAPACITY";
} else {
update["encumberance"] = " ";
}
} else {
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 *= parseInt(value, 10);
} else if (operator == "+") {
str += parseInt(value, 10);
} else if (operator == "-") {
str -= parseInt(value, 10);
}
}
}
update["weightmaximum"] = str * 15;
if (!v.encumberance_setting || v.encumberance_setting === "off") {
if (wtotal > str * 15) {
update["encumberance"] = "CARGA POR ENCIMA DE CAPACIDAD";
} else {
update["encumberance"] = " ";
}
} else if (v.encumberance_setting === "on") {
if (wtotal > str * 15) {
update["encumberance"] = "INMÓVIL";
} else if (wtotal > str * 10) {
update["encumberance"] = "MUY CARGADO";
} else if (wtotal > str * 5) {
update["encumberance"] = "CARGADO";
} else {
update["encumberance"] = " ";
}
} else {
update["encumberance"] = " ";
}
}
setAttrs(update, {
silent: true
});
});
});
};
var update_ac = function() {
getAttrs(["custom_ac_flag"], function(v) {
if (v.custom_ac_flag === "2") {
return;
} else {
var update = {};
var ac_attrs = ["simpleinventory", "custom_ac_base", "custom_ac_part1", "custom_ac_part2", "strength_mod", "dexterity_mod", "constitution_mod", "intelligence_mod", "wisdom_mod", "charisma_mod", "custom_ac_shield"];
getSectionIDs("repeating_acmod", function(acidarray) {
_.each(acidarray, function(currentID, i) {
ac_attrs.push("repeating_acmod_" + currentID + "_global_ac_val");
ac_attrs.push("repeating_acmod_" + currentID + "_global_ac_active_flag");
});
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
ac_attrs.push("repeating_inventory_" + currentID + "_equipped");
ac_attrs.push("repeating_inventory_" + currentID + "_itemmodifiers");
});
getAttrs(ac_attrs, function(b) {
var custom_total = 0;
if (v.custom_ac_flag === "1") {
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 : parseInt(b[part1attr + "_mod"], 10);
var part2 = part2attr === "none" ? 0 : parseInt(b[part2attr + "_mod"], 10);
custom_total = base + part1 + part2;
}
var globalacmod = 0;
_.each(acidarray, function(currentID, i) {
if (b["repeating_acmod_" + currentID + "_global_ac_active_flag"] == "1") {
globalacmod += parseInt(b["repeating_acmod_" + currentID + "_global_ac_val"], 10);
}
});
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["repeating_inventory_" + currentID + "_equipped"] && b["repeating_inventory_" + currentID + "_equipped"] === "1" && b["repeating_inventory_" + currentID + "_itemmodifiers"] && b["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf("ac") > -1) {
var mods = b["repeating_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;
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;
};
update["armorwarningflag"] = "hide";
update["customacwarningflag"] = "hide";
if (armorcount > 1 || shieldcount > 1) {
update["armorwarningflag"] = "show";
}
update["ac"] = total + globalacmod;
if (custom_total > 0) {
if (armorcount > 0 || (shieldcount > 0 && b.custom_ac_shield != "yes")) {
update["customacwarningflag"] = "show";
} else {
update["ac"] = b.custom_ac_shield == "yes" ? custom_total + shieldac + globalacmod + modac : custom_total + globalacmod + modac;
}
}
console.log("total: " + total);
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();
}
});
};
var update_initiative = function() {
var attrs_to_get = ["dexterity", "dexterity_mod", "intelligence_mod", "initmod", "jack_of_all_trades", "jack", "init_tiebreaker", "pb_type", "use_intelligent_initiative"];
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
attrs_to_get.push("repeating_inventory_" + currentID + "_equipped");
attrs_to_get.push("repeating_inventory_" + currentID + "_itemmodifiers");
});
getAttrs(attrs_to_get, function(v) {
var update = {};
var final_init = parseInt(v["dexterity_mod"], 10);
if (v["use_intelligent_initiative"] && v["use_intelligent_initiative"] != 0) {
final_init = parseInt(v["intelligence_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["repeating_inventory_" + currentID + "_equipped"] && v["repeating_inventory_" + currentID + "_equipped"] === "1" && v["repeating_inventory_" + currentID + "_itemmodifiers"] && v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf("ability checks") > -1) {
var mods = v["repeating_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_spellcasting_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,
spellcasting_ability: v.cust_spellcasting_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["spellcasting_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;
break;
case "Barbarian":
update["hitdietype"] = 12;
update["spellcasting_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;
break;
case "Bard":
update["hitdietype"] = 8;
update["spellcasting_ability"] = "@{charisma_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})";
break;
case "Cleric":
update["hitdietype"] = 8;
update["spellcasting_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})";
break;
case "Druid":
update["hitdietype"] = 8;
update["spellcasting_ability"] = "@{wisdom_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;
break;
case "Fighter":
update["hitdietype"] = 10;
update["spellcasting_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;
break;
case "Monk":
update["hitdietype"] = 8;
update["spellcasting_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;
break;
case "Paladin":
update["hitdietype"] = 10;
update["spellcasting_ability"] = "@{charisma_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})";
break;
case "Ranger":
update["hitdietype"] = 10;
update["spellcasting_ability"] = "@{wisdom_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;
break;
case "Rogue":
update["hitdietype"] = 8;
update["spellcasting_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;
break;
case "Sorcerer":
update["hitdietype"] = 6;
update["spellcasting_ability"] = "@{charisma_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})";
break;
case "Warlock":
update["hitdietype"] = 8;
update["spellcasting_ability"] = "@{charisma_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})";
break;
case "Wizard":
update["hitdietype"] = 6;
update["spellcasting_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;
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", "arcane_fighter", "arcane_rogue", "custom_class", "cust_spellslots", "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_spellslots"] : 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 spellcasting 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["arcane_fighter"], v["arcane_rogue"]);
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_spell_slots();
});
}
callbacks.push(function() {
update_pb();
});
callbacks.push(function() {
update_leveler_display();
});
setAttrs(update, {
silent: true
}, function() {
callbacks.forEach(function(callback) {
callback();
})
});
});
};
var isMultiCaster = function(classes, arcane_fighter, arcane_rogue) {
var singlecaster = false;
var multicaster = false;
_.each(classes, function(multiclass) {
var caster = getCasterType(multiclass[0], multiclass[1], arcane_fighter, arcane_rogue) > 0;
if (caster && singlecaster) {
multicaster = true;
} else if (caster) {
singlecaster = true;
}
});
return multicaster;
};
var getCasterType = function(class_string, levels, arcane_fighter, arcane_rogue) {
var full = ["bard", "cleric", "druid", "sorcerer", "wizard", "full"];
var half = ["paladin", "ranger", "half"];
class_string = class_string.toLowerCase();
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" && arcane_fighter === "1") || (class_string === "rogue" && arcane_rogue === "1")) {
return (levels == 1 || levels == 2) ? 0 : (1 / 3);
} else {
return 0;
}
};
var checkCasterLevel = function(classes, arcane_fighter, arcane_rogue) {
console.log("CHECKING CASTER LEVEL");
var multicaster = isMultiCaster(classes, arcane_fighter, arcane_rogue);
var totalcasterlevel = 0;
_.each(classes, function(multiclass) {
var casterlevel = parseInt(multiclass[1], 10) * getCasterType(multiclass[0], multiclass[1], arcane_fighter, arcane_rogue);
// Characters with multiple spellcasting classes round down the casting level for that class
// Character with a single spellcasting 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", "paladin", "ranger"];
var d8class = ["bard", "cleric", "druid", "monk", "rogue", "warlock"];
var d6class = ["sorcerer", "wizard"];
class_string = class_string.toLowerCase();
if (class_string === "barbarian") {
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_leveler_display = function() {
getAttrs(["experience", "level"], function(v) {
let lvl = 0;
let exp = 0;
let update = {};
update["showleveler"] = 0;
if (v["level"] && !isNaN(parseInt(v["level"], 10)) && parseInt(v["level"], 10) > 0) {
lvl = parseInt(v["level"], 10);
}
if (v["experience"] && !isNaN(parseInt(v["experience"], 10)) && parseInt(v["experience"], 10) > 0) {
exp = parseInt(v["experience"], 10);
}
if (lvl > 0 && exp > 0) {
if ((lvl === 1 && exp >= 300) || (lvl === 2 && exp >= 900) || (lvl === 3 && exp >= 2700) || (lvl === 4 && exp >= 6500) || (lvl === 5 && exp >= 14000) || (lvl === 6 && exp >= 23000) || (lvl === 7 && exp >= 34000) || (lvl === 8 && exp >= 48000) || (lvl === 9 && exp >= 64000) || (lvl === 10 && exp >= 85000) || (lvl === 11 && exp >= 100000) || (lvl === 12 && exp >= 120000) || (lvl === 13 && exp >= 140000) || (lvl === 14 && exp >= 165000) || (lvl === 15 && exp >= 195000) || (lvl === 16 && exp >= 225000) || (lvl === 17 && exp >= 265000) || (lvl === 18 && exp >= 305000) || (lvl === 19 && exp >= 355000)) {
update["showleveler"] = 1;
};
};
setAttrs(update, {
silent: true
});
});
};
var update_spell_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"], function(v) {
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_spell_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", "arcana", "history", "investigation", "nature", "religion", "animal_handling", "insight", "medicine", "perception", "survival", "deception", "intimidation", "performance", "persuasion"]);
});
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_spell_info = function(attr) {
var update = {};
getAttrs(["spellcasting_ability", "spell_dc_mod", "globalmagicmod", "strength_mod", "dexterity_mod", "constitution_mod", "intelligence_mod", "wisdom_mod", "charisma_mod"], function(v) {
if (attr && v["spellcasting_ability"] && v["spellcasting_ability"].indexOf(attr) === -1) {
return
};
if (!v["spellcasting_ability"] || (v["spellcasting_ability"] && v["spellcasting_ability"] === "0*")) {
update["spell_attack_bonus"] = "0";
update["spell_save_dc"] = "0";
var callback = function() {
update_attacks("spells")
};
setAttrs(update, {
silent: true
}, callback);
return
};
var attr = attr ? attr : "";
console.log("UPDATING SPELL INFO: " + attr);
var ability = parseInt(v[v["spellcasting_ability"].substring(2, v["spellcasting_ability"].length - 2)], 10);
var spell_mod = v["globalmagicmod"] && !isNaN(parseInt(v["globalmagicmod"], 10)) ? parseInt(v["globalmagicmod"], 10) : 0;
var atk = v["globalmagicmod"] && !isNaN(parseInt(v["globalmagicmod"], 10)) ? ability + parseInt(v["globalmagicmod"], 10) : ability;
var dc = v["spell_dc_mod"] && !isNaN(parseInt(v["spell_dc_mod"], 10)) ? 8 + ability + parseInt(v["spell_dc_mod"], 10) : 8 + ability;
var itemfields = ["pb_type", "pb"];
getSectionIDs("repeating_inventory", function(idarray) {
_.each(idarray, function(currentID, i) {
itemfields.push("repeating_inventory_" + currentID + "_equipped");
itemfields.push("repeating_inventory_" + currentID + "_itemmodifiers");
});
getAttrs(itemfields, function(v) {
_.each(idarray, function(currentID) {
if ((!v["repeating_inventory_" + currentID + "_equipped"] || v["repeating_inventory_" + currentID + "_equipped"] === "1") && v["repeating_inventory_" + currentID + "_itemmodifiers"] && v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().indexOf("spell" > -1)) {
var mods = v["repeating_inventory_" + currentID + "_itemmodifiers"].toLowerCase().split(",");
_.each(mods, function(mod) {
if (mod.indexOf("spell attack") > -1) {
var substr = mod.slice(mod.lastIndexOf("spell attack") + "spell attack".length);
atk = substr && substr.length > 0 && !isNaN(parseInt(substr, 10)) ? atk + parseInt(substr, 10) : atk;
spell_mod = substr && substr.length > 0 && !isNaN(parseInt(substr, 10)) ? spell_mod + parseInt(substr, 10) : spell_mod;
};
if (mod.indexOf("spell dc") > -1) {
var substr = mod.slice(mod.lastIndexOf("spell dc") + "spell 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["spell_attack_mod"] = spell_mod;
update["spell_attack_bonus"] = atk;
update["spell_save_dc"] = dc;
var callback = function() {
update_attacks("spells")
};
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.toString()) {
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_arcana_base", "npc_athletics_base", "npc_deception_base", "npc_history_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_religion_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 religion_flag = 0;
var religion = "";
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 history_flag = 0;
var history = "";
var deception_flag = 0;
var deception = "";
var athletics_flag = 0;
var athletics = "";
var arcana_flag = 0;
var arcana = "";
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_religion_base && v.npc_religion_base != "@{intelligence_mod}") {
religion = parseInt(v.npc_religion_base, 10);
if (last_skill === 0) {
last_skill = 1;
religion_flag = religion < 0 ? 4 : 2;
} else {
religion_flag = religion < 0 ? 3 : 1;
}
} else {
religion_flag = 0;
religion = "";
};
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_history_base && v.npc_history_base != "@{intelligence_mod}") {
history = parseInt(v.npc_history_base, 10);
if (last_skill === 0) {
last_skill = 1;
history_flag = history < 0 ? 4 : 2;
} else {
history_flag = history < 0 ? 3 : 1;
}
} else {
history_flag = 0;
history = "";
};
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_arcana_base && v.npc_arcana_base != "@{intelligence_mod}") {
arcana = parseInt(v.npc_arcana_base, 10);
if (last_skill === 0) {
last_skill = 1;
arcana_flag = arcana < 0 ? 4 : 2;
} else {
arcana_flag = arcana < 0 ? 3 : 1;
}
} else {
arcana_flag = 0;
arcana = "";
};
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 + arcana + athletics + deception + history + insight + intimidation + investigation + medicine + nature + perception + sperformance + persuasion + religion + 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_arcana"] = arcana;
update["npc_arcana_flag"] = arcana_flag;
update["npc_athletics"] = athletics;
update["npc_athletics_flag"] = athletics_flag;
update["npc_deception"] = deception;
update["npc_deception_flag"] = deception_flag;
update["npc_history"] = history;
update["npc_history_flag"] = history_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_religion"] = religion;
update["npc_religion_flag"] = religion_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]]}} {{descrition=@{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)]]}} {{descrition=@{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)]]}} {{descrition=@{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}}} {{descrition=@{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_name`, `repeating_damagemod_${id}_global_damage_damage`, `repeating_damagemod_${id}_global_damage_type`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_damagemod_(.+)_global_damage_(active_flag|name|damage|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: ""
};
console.log("GLOBALDAMAGE");
_.each(fields, function(element) {
if (element.active_flag != "0") {
if (element.name && element.name !== "") {
update["global_damage_mod_roll"] += element.damage + '[' + element.name + ']' + "+";
}
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_roll`, `repeating_tohitmod_${id}_global_attack_name`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_tohitmod_(.+)_global_attack_(active_flag|roll|name)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if (r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {
global_attack_mod: ""
};
console.log("GLOBALATTACK");
_.each(fields, function(element) {
if (element.active_flag != "0") {
if (element.roll && element.roll !== "") {
update["global_attack_mod"] += element.roll + "[" + element.name + "]" + "+";
}
}
});
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_roll`, `repeating_savemod_${id}_global_save_name`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_savemod_(.+)_global_save_(active_flag|roll|name)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if (r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {
global_save_mod: ""
};
console.log("GLOBAL SAVES");
_.each(fields, function(element) {
if (element.active_flag != "0") {
if (element.roll && element.roll !== "") {
update["global_save_mod"] += element.roll + "[" + element.name + "]" + "+";
}
}
});
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_roll`, `repeating_skillmod_${id}_global_skill_name`);
});
getAttrs(attr_name_list, function(attrs) {
var regex = /^repeating_skillmod_(.+)_global_skill_(active_flag|roll|name)$/;
_.each(attrs, function(obj, name) {
var r = regex.exec(name);
if (r) {
fields[r[1]][r[2]] = obj;
}
});
var update = {
global_skill_mod: ""
};
console.log("GLOBAL SKILLS");
_.each(fields, function(element) {
if (element.active_flag != "0") {
if (element.roll && element.roll !== "") {
update["global_skill_mod"] += element.roll + "[" + element.name + "]" + "+";
}
}
});
if (update["global_skill_mod"] !== "") {
update["global_skill_mod"] = "[[" + update["global_skill_mod"].replace(/\+(?=$)/, '') + "]]";
}
setAttrs(update, {
silent: true
}, function() {
if (typeof callback == "function") callback();
});
});
}
});
};
var clear_npc_spell_attacks = function(complete) {
getSectionIDs("repeating_attack", function(attack_ids) {
var getList = [];
var done = false;
_.each(attack_ids, function(id) {
getList.push(`repeating_attack_${id}_spellid`);
});
getAttrs(getList, function(v) {
_.each(attack_ids, function(id) {
if (v[`repeating_attack_${id}_spellid`] && v[`repeating_attack_${id}_spellid`].indexOf("npc_") != -1) {
removeRepeatingRow(`repeating_attack_${id}`);
}
});
complete();
});
});
}
var filterBlobs = function(blobs, filters) {
var remove = filters.multiclass ? "no" : "yes";
var results = {};
delete filters.multiclass;
delete filters.slide;
_.each(blobs, function(blob, name) {
var match = true;
if (blob.Group && !filters.Group && !filters.name) match = false;
_.each(filters, function(v, k) {
if (k == "name") {
if (name != v) match = false;
} else if (v[0] === "<" && !isNaN(parseInt(v.substring(1)))) {
let blobval = isNaN(parseInt(blob[k])) ? 0 : parseInt(blob[k]);
if (blobval > parseInt(v.substring(1))) match = false;
} else {
if (blob[k] != v) match = false;
}
});
if (match && name.split("(")[0].toLowerCase() != "spell slots") results[name] = blob;
});
_.each(results, function(blob, name) {
if (blob.Multiclass == remove) {
delete results[name];
}
});
return results;
};
// CHANGE SURVIVAL CONDITIONS
on("change:condition_temperature change:condition_hunger change:condition_thirst change:condition_fatigue", function() {
let field1 = "condition_temperature";
let field2 = "condition_hunger";
let field3 = "condition_thirst";
let field4 = "condition_fatigue";
let exhaustionMod = 0;
getAttrs([field1, field2, field3, field4], function(v) {
[field1, field2, field3, field4].forEach(function(field) {
let value = toInt(v[field]);
exhaustionMod += (value == 0 ? -1 : value >= 5 ? 1 : 0);
});
let update = {};
update["exhaustion_conditions"] = exhaustionMod;
setAttrs(update);
});
});
// CHANGE EXHAUSTION
on("change:exhaustion_base change:exhaustion_wounds change:exhaustion_conditions change:show_survival_conditions", function() {
let field1 = "exhaustion_base";
let field2 = "exhaustion_wounds";
let field3 = "exhaustion_conditions";
let field4 = "show_survival_conditions";
getAttrs([field1, field2, field3, field4], function(v) {
let update = {};
let exhaustionTotal = clamp(toInt(v[field1]) + toInt(v[field2]) + toInt(v[field3]), 0, 6);
update["exhaustion_total"] = exhaustionTotal;
if (toInt(v[field4]) == 1) {
update["exhaustion_status"] = exhaustionTotal;
}
setAttrs(update);
});
});
// CHANGE WOUND TREATMENT
on("change:repeating_wounds remove:repeating_wounds", function(eventinfo) {
getSectionIDs('repeating_wounds', function(ids) {
let fields = [];
ids.forEach(function(id) {
fields.push("repeating_wounds_" + id + "_wound_untreated");
});
getAttrs(fields, function(v) {
let untreated_wounds = 0;
ids.forEach(function(id) {
let attribute = v["repeating_wounds_" + id + "_wound_untreated"];
if (isDefined(attribute) && attribute == 1) {
untreated_wounds += 1;
}
});
let update = {};
update["exhaustion_wounds"] = untreated_wounds;
setAttrs(update);
});
});
});
// CHANGE STRESS
on("change:stress", function(eventinfo) {
let stress = toInt(eventinfo.newValue);
let update = {};
if (stress >= 20) {
update["stress_state_20"] = 1;
}
if (stress >= 30) {
update["stress_state_30"] = 1;
}
if (stress >= 35) {
update["stress_state_35"] = 1;
}
if (stress >= 40) {
update["stress_state_40"] = 1;
}
setAttrs(update);
});
// CHANGE HIT POINTS
on("change:hit_dice change:hit_dice_max change:hp change:hp_max", function() {
let field1 = "hp";
let field2 = "hp_max";
let field3 = "hit_dice_max";
let field4 = "hit_dice";
getAttrs([field1, field2, field3, field4], function(v) {
let conditionHealth = "";
let hp = toInt(v[field1]);
let hpMax = toInt(v[field2]);
let hpPercentage = clamp(hp / hpMax, 0, 1) || 0;
let hitDiceTotal = toInt(v[field3]);
let hitDiceSpent = clamp(hitDiceTotal - toInt(v[field4]), 0, hitDiceTotal);
let hitDicePercentage = clamp((hitDiceTotal - hitDiceSpent) / hitDiceTotal, 0, 1) || 0;
if (hp >= hpMax) {
if (hitDicePercentage == 1) {
conditionHealth = 0;
} else if (hitDicePercentage >= 0.5) {
conditionHealth = 1;
} else {
conditionHealth = 2;
}
} else {
if (hpPercentage > 0.5) {
conditionHealth = 3;
} else if (hp == 1) {
conditionHealth = 6;
} else if (hpPercentage >= 0.25) {
conditionHealth = 4;
} else if (hpPercentage >= 0.1) {
conditionHealth = 5;
} else {
conditionHealth = 6;
}
}
let update = {};
update["condition_health"] = conditionHealth;
setAttrs(update);
});
});
let toInt = function(value) {
return (value && !isNaN(value)) ? parseInt(value) : 0;
};
let clamp = function(value, min, max) {
return Math.min(Math.max(value, min), max);
};
let isDefined = function(value) {
return value !== null && typeof(value) !== 'undefined';
};
</script>
<div class="sheet-compendium-warning">
<span>Importing compendium data</span>
</div>
<div class="sheet-monster-confirm">
<span>Are you sure you want to turn this character into a </span><span name="attr_drop_name"></span><span>?</span>
<div class="sheet-monster-confirm-buttons">
<div class="sheet-monster-confirm-button">
<input class="sheet-monster-confirm-cancel" type="checkbox" name="attr_cancel"><span class="cancel">Cancel</span>
</div>
<div class="sheet-monster-confirm-button">
<input class="sheet-monster-confirm-yes" type="checkbox" name="attr_confirm"><span class="yes">Yes</span>
</div>
</div>
</div>
</div>
</div>