Files
2026-02-09 17:19:00 -03:00

1432 lines
56 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- Old Dragon 2e Character Sheet -->
<input type="radio" class="sheet-tab sheet-tab-character" name="attr_core-tab" value="1" title="Ficha de Personagem" checked/>
<span class="sheet-tab sheet-tab-character" style='line-height: 24px;'>Personagem</span>
<input type="radio" class="sheet-tab sheet-tab-monster" name="attr_core-tab" value="2" title="Ficha de Monstro"/>
<span class="sheet-tab sheet-tab-monster" style='line-height: 24px;'>Monstro</span>
<div class="sheet-section-character">
<!-- Sidebar -->
<div class="sheet-sidebar">
<!-- Atributos -->
<div class="stats">
<!-- Força -->
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Força}} {{rollformula= **Resultado:** [[1d20]] comparado a @{forca} (FOR) }} {{stat=[[@{forca}]]}}" name="roll_For" title="Rolar Teste de Força"><span class="font-bold">FOR</span></button>
<input type="number" name="attr_forca" value="">
</div>
<div class="stat-mod">
<div class="text-sm">M. FOR</div>
<span name="attr_mod_forca"></span>
</div>
</div>
<!-- Destreza -->
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Destreza}} {{rollformula= **Resultado:** [[1d20]] comparado a @{destreza} (DES) }} {{stat=[[@{destreza}]]}}" name="roll_Des" title="Rolar Teste de Destreza"><span class="font-bold">DES</span></button>
<input type="number" name="attr_destreza" value="">
</div>
<div class="stat-mod">
<div class="text-sm">M. DES</div>
<span name="attr_mod_destreza"></span>
</div>
</div>
<!-- Constituição -->
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Constituição}} {{rollformula= **Resultado:** [[1d20]] comparado a @{constituicao} (CON) }} {{stat=[[@{constituicao}]]}}" name="roll_Con" title="Rolar Teste de Constituição"><span class="font-bold">CON</span></button>
<input type="number" name="attr_constituicao" value="">
</div>
<div class="stat-mod">
<div class="text-sm">M. CON</div>
<span name="attr_mod_constituicao"></span>
</div>
</div>
<!-- Sabedoria -->
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Sabedoria}} {{rollformula= **Resultado:** [[1d20]] comparado a @{sabedoria} (SAB) }} {{stat=[[@{sabedoria}]]}}" name="roll_Sab" title="Rolar Teste de Sabedoria"><span class="font-bold">SAB</span></button>
<input type="number" name="attr_sabedoria" value="">
</div>
<div class="stat-mod">
<div class="text-sm">M. SAB</div>
<span name="attr_mod_sabedoria"></span>
</div>
</div>
<!-- Inteligência -->
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Inteligência}} {{rollformula= **Resultado:** [[1d20]] comparado a @{inteligencia} (INT) }} {{stat=[[@{inteligencia}]]}}" name="roll_Int" title="Rolar Teste de Inteligência"><span class="font-bold">INT</span></button>
<input type="number" name="attr_inteligencia" value="">
</div>
<div class="stat-mod">
<div class="text-sm">M. INT</div>
<span name="attr_mod_inteligencia"></span>
</div>
</div>
<!-- Carisma -->
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Carisma}} {{rollformula= **Resultado:** [[1d20]] comparado a @{carisma} (CAR) }} {{stat=[[@{carisma}]]}}" name="roll_Car" title="Rolar Teste de Carisma"><span class="font-bold">CAR</span></button>
<input type="number" name="attr_carisma" value="">
</div>
<div class="stat-mod">
<div class="text-sm">M. CAR</div>
<span name="attr_mod_carisma"></span>
</div>
</div>
</div>
<!-- JP | Jogada de Proteção -->
<div class="jp">
<div class="font-bold">JP | Jogada de Proteção</div>
<!-- JPD (Jogada de Proteção de Destreza) -->
<div class="jp-group">
<!-- JPD -->
<div class="jpd">
<span name="attr_jpd" class="attr-value"></span>
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Jogada de Proteção de Destreza}} {{rollformula= **Resultado:** [[1d20]] comparado a @{jpd} (JPD) }} {{stat=[[@{jpd}]]}}" name="roll_Jpd" title="Rolar Jogada de Proteção de Destreza" class="jp-roll"><span class="font-bold">JPD</span></button>
</div>
<div class="jp-values">
<!-- Base (Classe) -->
<div class="jp-value">
<input type="number" name="attr_jpd_class" value="">
<div class="text-xs">Classe</div>
</div>
<!-- Bônus (Raça) -->
<div class="jp-value">
<input type="number" name="attr_jpd_race" value="">
<div class="text-xs">Raça</div>
</div>
<!-- M. DES -->
<div class="jp-value">
<span name="attr_mod_destreza"></span>
<div class="text-xs">M. DES</div>
</div>
</div>
</div>
<!-- JPC (Jogada de Proteção de Constituição) -->
<div class="jp-group">
<!-- JPC -->
<div class="jpc">
<span name="attr_jpc" class="attr-value"></span>
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Jogada de Proteção de Constituição}} {{rollformula= **Resultado:** [[1d20]] comparado a @{jpc} (JPC) }} {{stat=[[@{jpc}]]}}" name="roll_Jpc" title="Rolar Jogada de Proteção de Constituição" class="jp-roll"><span class="font-bold">JPC</span></button>
</div>
<div class="jp-values">
<!-- Base (Classe) -->
<div class="jp-value">
<input type="number" name="attr_jpc_class" value="">
<div class="text-xs">Classe</div>
</div>
<!-- Bônus (Raça) -->
<div class="jp-value">
<input type="number" name="attr_jpc_race" value="">
<div class="text-xs">Raça</div>
</div>
<!-- M. CON -->
<div class="jp-value">
<span name="attr_mod_constituicao"></span>
<div class="text-xs">M. CON</div>
</div>
</div>
</div>
<!-- JPS (Jogada de Proteção de Sabedoria) -->
<div class="jp-group">
<!-- JPS -->
<div class="jps">
<span name="attr_jps" class="attr-value"></span>
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Jogada de Proteção de Sabedoria}} {{rollformula= **Resultado:** [[1d20]] comparado a @{jps} (JPS) }} {{stat=[[@{jps}]]}}" name="roll_Jps" title="Rolar Jogada de Proteção de Sabedoria" class="jp-roll"><span class="font-bold">JPS</span></button>
</div>
<div class="jp-values">
<!-- Base (Classe) -->
<div class="jp-value">
<input type="number" name="attr_jps_class" value="">
<div class="text-xs">Classe</div>
</div>
<!-- Bônus (Raça) -->
<div class="jp-value">
<input type="number" name="attr_jps_race" value="">
<div class="text-xs">Raça</div>
</div>
<!-- M. SAB -->
<div class="jp-value">
<span name="attr_mod_sabedoria"></span>
<div class="text-xs">M. SAB</div>
</div>
</div>
</div>
</div>
</div>
<!-- Body -->
<div class="sheet-body">
<div class="header">
<!-- Nome; Raça; Classe; Alinhamento; Nível -->
<div class="basic-info">
<!-- Nome -->
<div>
<input type="text" name="attr_character_name">
<div class="font-bold">Nome</div>
</div>
<!-- Raça -->
<div>
<input type="text" name="attr_race">
<div class="font-bold">Raça</div>
</div>
<!-- Classe -->
<div>
<input type="text" name="attr_class">
<div class="font-bold">Classe</div>
</div>
<!-- Nível -->
<div>
<select name="attr_level">
<option value="1" selected></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="8"></option>
<option value="9"></option>
<option value="10">10º</option>
<option value="11">11º</option>
<option value="12">12º</option>
<option value="13">13º</option>
<option value="14">14º</option>
<option value="15">15º</option>
</select>
<div class="font-bold">Nível</div>
</div>
</div>
<hr>
<!-- Movimento; Pontos de Experiência; PV -->
<div class="additional-info">
<!-- Alinhamento -->
<div class="alignment">
<div class="font-bold">Alinhamento</div>
<select name="attr_alignment">
<option value="ordeiro">Ordeiro</option>
<option value="neutro" selected>Neutro</option>
<option value="caotico">Caotico</option>
</select>
</div>
<!-- Movimento -->
<div class="mv">
<div class="font-bold">Movimento</div>
<div class="mv-values">
<!-- Atual -->
<div class="mv-value">
<input type="number" name="attr_current_movement" value="">
<div class="text-sm">Atual</div>
</div>
<!-- Correr -->
<div class="mv-value">
<span name="attr_movement_run"></span>
<div class="text-sm">Correr</div>
</div>
<!-- Escalar -->
<div class="mv-value">
<span name="attr_movement_climb"></span>
<div class="text-sm">Escalar</div>
</div>
<!-- Nadar -->
<div class="mv-value">
<span name="attr_movement_swim"></span>
<div class="text-sm">Nadar</div>
</div>
</div>
</div>
<!-- Pontos de Experiência -->
<div class="xp">
<div class="font-bold">Pontos de Experiência</div>
<div class="xp-values">
<!-- Atual -->
<div class="xp-value">
<input type="text" name="attr_xp_current" value="">
<div class="text-sm">Atual</div>
</div>
<!-- Próx. Nível -->
<div class="xp-value">
<input type="text" name="attr_xp_next_level" value="">
<div class="text-sm">Próx. Nível</div>
</div>
</div>
</div>
<!-- PV | Pontos de Vida -->
<div class="hp">
<div class="font-bold">PV | Pontos de Vida</div>
<div class="hp-values">
<!-- Atual -->
<div class="hp-value">
<input type="number" name="attr_hp_current" value="">
<div class="text-sm font-bold">PV Atual</div>
</div>
<!-- Total -->
<div class="hp-value">
<input type="number" name="attr_hp_max" value="">
<div class="text-sm font-bold">PV Total</div>
</div>
</div>
</div>
</div>
<hr>
<!-- CA; BA; Economia -->
<div class="overview">
<!-- CA | Classe de Armadura -->
<div class="ca border">
<div class="font-bold">CA | Classe de Armadura</div>
<div class="ca-values">
<!-- CA -->
<div class="ca-total">
<span name="attr_ca"></span>
<div class="font-bold">CA</div>
</div>
<!-- Base -->
<div class="ca-value">
<input type="number" name="attr_ca_base" value="">
<div class="text-xs">Base</div>
</div>
<!-- M. DES -->
<div class="ca-value">
<span name="attr_mod_destreza"></span>
<div class="text-xs">M. DES</div>
</div>
<!-- Armadura -->
<div class="ca-value">
<input type="number" name="attr_ca_armor" value="">
<div class="text-xs">Armadura</div>
</div>
<!-- Escudo -->
<div class="ca-value">
<input type="number" name="attr_ca_shield" value="">
<div class="text-xs">Escudo</div>
</div>
<!-- Arma Mágica -->
<div class="ca-value">
<input type="number" name="attr_ca_magic_weapon" value="">
<div class="text-xs">Extra</div>
</div>
</div>
</div>
<!-- BA | Base de Ataque -->
<div class="ba border">
<div class="font-bold">BA | Base de Ataque</div>
<div class="ba-values">
<!-- BAC -->
<div class="bac">
<span name="attr_bac" class="attr-value"></span>
<button type="roll" value="&{template:bacroll} {{character=@{character_name}}} {{rollformula= **Resultado:** [[ [[1d20]] + @{bac} ]] contra CA do alvo %NEWLINE%%NEWLINE% *Detalhes: $[[0]] + @{bac} (BAC)*}}" name="roll_BacRoll" title="Rolar ataque corpo a corpo" class="ba-roll"><span class="font-bold">BAC</span></button>
</div>
<!-- M. FOR -->
<div class="ba-value">
<span name="attr_mod_forca"></span>
<div class="text-xs">M. FOR</div>
</div>
<!-- Base -->
<div class="ba-value">
<input type="number" name="attr_ba_base" value="">
<div class="text-xs">Base</div>
</div>
<!-- M. DES -->
<div class="ba-value">
<span name="attr_mod_destreza"></span>
<div class="text-xs">M. DES</div>
</div>
<!-- BAD -->
<div class="bad">
<span name="attr_bad" class="attr-value"></span>
<button type="roll" value="&{template:badroll} {{character=@{character_name}}} {{rollformula= **Resultado:** [[ [[1d20]] + @{bad} ]] contra CA do alvo %NEWLINE%%NEWLINE% *Detalhes: $[[0]] + @{bad} (BAD)*}}" name="roll_BadRoll" title="Rolar ataque à distância" class="ba-roll"><span class="font-bold">BAD</span></button>
</div>
</div>
</div>
<!-- Economia -->
<div class="economy border">
<div class="font-bold">Economia</div>
<div class="currency">
<!-- PO | Peças de Ouro -->
<div class="gp">
<input type="number" name="attr_gp" value="">
<div class="font-bold gp-label" title="Peças de Ouro"><span class="font-pictos">L</span> PO</div>
</div>
<!-- PP | Peças de Prata -->
<div class="sp">
<input type="number" name="attr_sp" value="">
<div class="font-bold sp-label" title="Peças de Prata"><span class="font-pictos">L</span> PP</div>
</div>
<!-- PC | Peças de Cobre -->
<div class="cp">
<input type="number" name="attr_cp" value="">
<div class="font-bold cp-label" title="Peças de Cobre"><span class="font-pictos">L</span> PC</div>
</div>
</div>
</div>
</div>
</div>
<div class="main">
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="attacks">
<div class="navigation-tabs">
<button type="action" name="act_attacks">Ataques</button>
<button type="action" name="act_skills">Habilidades Raça/Classe</button>
<button type="action" name="act_spells">Magias</button>
<button type="action" name="act_equipment">Equipamentos</button>
<button type="action" name="act_details">Detalhes</button>
<button type="action" name="act_notes">Anotações</button>
</div>
<!-- attacks tab (Ataques) -->
<div class="tab-attacks">
<div class="attack-list-header">
<div class="attack-name-label">Arma</div>
<div class="attack-range-label">Alcance</div>
<div class="attack-ba-label">BA <span style="font-family: 'Pictos';font-weight: 100;padding-left: 2px;cursor: help;" title="Apenas números inteiros positivos ou negativos (Ex: 4, -1)">i</span></div>
<div class="attack-bonus-ba-label">Bôn. BA <span style="font-family: 'Pictos';font-weight: 100;padding-left: 2px;cursor: help;" title="Apenas números inteiros positivos ou negativos (Ex: 4, -1)">i</span></div>
<div class="attack-damage-label">Dano <span style="font-family: 'Pictos';font-weight: 100;padding-left: 2px;cursor: help;" title="Apenas dados (Ex: 1d4, 2d6)">i</span></div>
<div class="attack-bonus-damage-label">Bôn. Dano <span style="font-family: 'Pictos';font-weight: 100;padding-left: 2px;cursor: help;" title="Apenas números inteiros positivos ou negativos (Ex: 4, -1)">i</span></div>
<div class="attack-properties-label">Propriedades</div>
<div class="attack-action-label">Ações</div>
</div>
<!-- Repeating Sections for attacks -->
<fieldset class="repeating_attacks">
<div class="attack-data">
<div class="attack-name">
<input type="text" name="attr_attack_name" placeholder="Nome do ataque">
</div>
<div class="attack-range">
<input type="text" name="attr_attack_range" placeholder="Alcance">
</div>
<div class="attack-ba">
<input type="number" name="attr_attack_ba" value="0" placeholder="BA">
</div>
<div class="attack-bonus-ba">
<input type="number" name="attr_attack_bonus_ba" value="0" placeholder="Bôn. BA">
</div>
<div class="attack-damage">
<input type="text" name="attr_attack_damage" value="1d0" placeholder="Dano">
</div>
<div class="attack-bonus-damage">
<input type="number" name="attr_attack_bonus_damage" value="0" placeholder="Bôn. Dano">
</div>
<div class="attack-properties">
<input type="text" name="attr_attack_properties" placeholder="Propriedades">
</div>
<div class="attack-action">
<button type="roll" value="&{template:attackroll} {{character=@{character_name}}} {{attack=@{attack_name}}} {{rollformula= **Resultado:** [[ [[1d20]] + @{attack_ba} + @{attack_bonus_ba} ]] contra CA do alvo %NEWLINE%%NEWLINE% *Detalhes: $[[0]] + @{attack_ba} (BA) + @{attack_bonus_ba} (Bônus na BA)* }}" name="roll_AttackRoll" title="Rolar ataque" class="attack-roll"><span style="font-family: 'dicefontd20'">0</span></button>
<button type="roll" value="&{template:damageroll} {{character=@{character_name}}} {{attack=@{attack_name}}} {{rollformula= **Resultado:** [[ [[@{attack_damage}]] + @{attack_bonus_damage} ]] de dano %NEWLINE%%NEWLINE% *Detalhes: $[[0]] + @{attack_bonus_damage} (Bônus no Dano)* }}" name="roll_DamageRoll" title="Rolar dano" class="damage-roll"><span style="font-family: 'Pictos Custom'">t</span></button>
</div>
</div>
<hr>
</fieldset>
</div>
<!-- skills tab (Habilidades Raça/Classe) -->
<div class="tab-skills">
<!-- Infravisão -->
<div class="infravision">
<div><span class="font-pictos">E</span> <span class="font-bold">Infravisão</span></div>
<input type="number" name="attr_infravision" value="">
</div>
<!-- Habilidades de Raça -->
<div class="race-skills">
<div class="tab-title">Habilidades de Raça</div>
<textarea name="attr_race_skills"></textarea>
</div>
<!-- Habilidades de Classe -->
<div class="class-skills">
<div class="tab-title">Habilidades de Classe</div>
<textarea name="attr_class_skills"></textarea>
</div>
</div>
<!-- spells tab (Magias) -->
<div class="tab-spells">
<div class="spell-list-header">
<div class="spell-name-label">Magia</div>
<div class="spell-school-label">Tipo</div>
<div class="spell-circle-label">Círculo</div>
<div class="spell-range-label">Alcance</div>
<div class="spell-duration-label">Duração</div>
<div class="spell-jp-label">JP</div>
<div class="spell-slot-label">Usos</div>
<div class="spell-roll-label">Conjurar</div>
</div>
<!-- Repeating Sections for spells -->
<fieldset class="repeating_spells">
<div class="spell-data">
<div class="spell-name">
<input type="text" name="attr_spell_name" placeholder="Nome da magia">
</div>
<div class="spell-school">
<input type="text" name="attr_spell_school" placeholder="Tipo">
</div>
<div class="spell-circle">
<input type="text" name="attr_spell_circle" placeholder="Círculo">
</div>
<div class="spell-range">
<input type="text" name="attr_spell_range" placeholder="Alcance">
</div>
<div class="spell-duration">
<input type="text" name="attr_spell_duration" placeholder="Duração">
</div>
<div class="spell-jp">
<input type="text" name="attr_spell_jp" placeholder="JP">
</div>
<div class="spell-slot">
<select name="attr_spell_slot">
<option value="9">9</option>
<option value="8">8</option>
<option value="7">7</option>
<option value="6">6</option>
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="0" selected>0</option>
</select>
</div>
<div class="spell-roll">
<button type="roll" value="&{template:spellroll} {{character=@{character_name}}} {{spell=@{spell_name}}} {{school=@{spell_school}}} {{circle=@{spell_circle}}} {{range=@{spell_range}}} {{duration=@{spell_duration}}} {{jp=@{spell_jp}}} {{description=@{spell_description}}}" name="roll_SpellRoll" title="Conjurar magia" class="spell-roll"><span style="font-family: 'Pictos Three'">g</span></button>
</div>
</div>
<input type="checkbox" name="attr_spell_description_field" class="spell-description-input spell-description-header" value="0" title="Ocultar/Mostrar"><span class="spell-description-input spell-description-header">Descrição</span>
<div class="spell-description">
<textarea name="attr_spell_description" placeholder="Descrição da magia"></textarea>
</div>
<hr>
</fieldset>
</div>
<!-- equipment tab (Equipamentos) -->
<div class="tab-equipment">
<!-- Armas -->
<div class="equipment-list-header">
<div class="equipment-name-label">Armas</div>
<div class="equipment-quantity-label">Qtd</div>
<div class="equipment-weight-label">Peso/Carga</div>
<div class="equipment-cost-label">Valor</div>
<div class="equipment-description-label">Descrição</div>
</div>
<!-- Repeating Sections for weapon -->
<fieldset class="repeating_weapon">
<div class="equipment-data">
<div class="equipment-name">
<input type="text" name="attr_weapon_name" placeholder="Nome da equipamento">
</div>
<div class="equipment-quantity">
<input type="text" name="attr_weapon_quantity" placeholder="Qtd">
</div>
<div class="equipment-weight">
<input type="text" name="attr_weapon_weight" placeholder="Peso/Carga">
</div>
<div class="equipment-cost">
<input type="text" name="attr_weapon_cost" placeholder="Valor">
</div>
<div class="equipment-description">
<input type="text" name="attr_weapon_description" placeholder="Descrição">
</div>
</div>
<hr>
</fieldset>
<!-- Armaduras -->
<div class="equipment-list-header second-item">
<div class="equipment-name-label">Armaduras</div>
<div class="equipment-quantity-label">Qtd</div>
<div class="equipment-weight-label">Peso/Carga</div>
<div class="equipment-cost-label">Valor</div>
<div class="equipment-description-label">Descrição</div>
</div>
<!-- Repeating Sections for armor -->
<fieldset class="repeating_armor">
<div class="equipment-data">
<div class="equipment-name">
<input type="text" name="attr_armor_name" placeholder="Nome da equipamento">
</div>
<div class="equipment-quantity">
<input type="text" name="attr_armor_quantity" placeholder="Qtd">
</div>
<div class="equipment-weight">
<input type="text" name="attr_armor_weight" placeholder="Peso/Carga">
</div>
<div class="equipment-cost">
<input type="text" name="attr_armor_cost" placeholder="Valor">
</div>
<div class="equipment-description">
<input type="text" name="attr_armor_description" placeholder="Descrição">
</div>
</div>
<hr>
</fieldset>
<!-- Escudos -->
<div class="equipment-list-header second-item">
<div class="equipment-name-label">Escudos</div>
<div class="equipment-quantity-label">Qtd</div>
<div class="equipment-weight-label">Peso/Carga</div>
<div class="equipment-cost-label">Valor</div>
<div class="equipment-description-label">Descrição</div>
</div>
<!-- Repeating Sections for shield -->
<fieldset class="repeating_shield">
<div class="equipment-data">
<div class="equipment-name">
<input type="text" name="attr_shield_name" placeholder="Nome da equipamento">
</div>
<div class="equipment-quantity">
<input type="text" name="attr_shield_quantity" placeholder="Qtd">
</div>
<div class="equipment-weight">
<input type="text" name="attr_shield_weight" placeholder="Peso/Carga">
</div>
<div class="equipment-cost">
<input type="text" name="attr_shield_cost" placeholder="Valor">
</div>
<div class="equipment-description">
<input type="text" name="attr_shield_description" placeholder="Descrição">
</div>
</div>
<hr>
</fieldset>
<!-- Itens Gerais -->
<div class="equipment-list-header second-item">
<div class="equipment-name-label">Itens Gerais</div>
<div class="equipment-quantity-label">Qtd</div>
<div class="equipment-weight-label">Peso/Carga</div>
<div class="equipment-cost-label">Valor</div>
<div class="equipment-description-label">Descrição</div>
</div>
<!-- Repeating Sections for misc -->
<fieldset class="repeating_misc">
<div class="equipment-data">
<div class="equipment-name">
<input type="text" name="attr_misc_name" placeholder="Nome da equipamento">
</div>
<div class="equipment-quantity">
<input type="text" name="attr_misc_quantity" placeholder="Qtd">
</div>
<div class="equipment-weight">
<input type="text" name="attr_misc_weight" placeholder="Peso/Carga">
</div>
<div class="equipment-cost">
<input type="text" name="attr_misc_cost" placeholder="Valor">
</div>
<div class="equipment-description">
<input type="text" name="attr_misc_description" placeholder="Descrição">
</div>
</div>
<hr>
</fieldset>
<!-- Recipientes & Vasilhames -->
<div class="equipment-list-header second-item">
<div class="equipment-name-label">Recipientes & Vasilhames</div>
<div class="equipment-quantity-label">Qtd</div>
<div class="equipment-weight-label">Peso/Carga</div>
<div class="equipment-cost-label">Valor</div>
<div class="equipment-description-label">Descrição</div>
</div>
<!-- Repeating Sections for container -->
<fieldset class="repeating_container">
<div class="equipment-data">
<div class="equipment-name">
<input type="text" name="attr_container_name" placeholder="Nome da equipamento">
</div>
<div class="equipment-quantity">
<input type="text" name="attr_container_quantity" placeholder="Qtd">
</div>
<div class="equipment-weight">
<input type="text" name="attr_container_weight" placeholder="Peso/Carga">
</div>
<div class="equipment-cost">
<input type="text" name="attr_container_cost" placeholder="Valor">
</div>
<div class="equipment-description">
<input type="text" name="attr_container_description" placeholder="Descrição">
</div>
</div>
<hr>
</fieldset>
<!-- Montarias & Transportes -->
<div class="equipment-list-header second-item">
<div class="equipment-name-label">Montarias & Transportes</div>
<div class="equipment-quantity-label">Qtd</div>
<div class="equipment-weight-label">Peso/Carga</div>
<div class="equipment-cost-label">Valor</div>
<div class="equipment-description-label">Descrição</div>
</div>
<!-- Repeating Sections for vehicle -->
<fieldset class="repeating_vehicle">
<div class="equipment-data">
<div class="equipment-name">
<input type="text" name="attr_vehicle_name" placeholder="Nome da equipamento">
</div>
<div class="equipment-quantity">
<input type="text" name="attr_vehicle_quantity" placeholder="Qtd">
</div>
<div class="equipment-weight">
<input type="text" name="attr_vehicle_weight" placeholder="Peso/Carga">
</div>
<div class="equipment-cost">
<input type="text" name="attr_vehicle_cost" placeholder="Valor">
</div>
<div class="equipment-description">
<input type="text" name="attr_vehicle_description" placeholder="Descrição">
</div>
</div>
<hr>
</fieldset>
<!-- Carga -->
<div class="load-section">
<div class="load border">
<div class="font-bold">Carga</div>
<div class="load-values">
<!-- Carga Atual -->
<div class="current-load">
<input type="number" name="attr_current_load" value="">
<div>Atual</div>
</div>
<div class="max-load">
<input type="number" name="attr_max_load" value="">
<div>Máx.</div>
</div>
</div>
</div>
</div>
</div>
<!-- details tab (Detalhes) -->
<div class="tab-details">
<!-- Idiomas -->
<div class="languages">
<div class="tab-title">Idiomas</div>
<textarea class="languages-textarea" name="attr_languages"></textarea>
</div>
<!-- Reputação -->
<div class="reputation">
<div class="tab-title">Reputação</div>
<select name="attr_reputation">
<option value="0" selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div>
<!-- Aparência -->
<div class="appearance">
<div class="tab-title">Aparência</div>
<textarea name="attr_appearance"></textarea>
</div>
<!-- Personalidade -->
<div class="personality">
<div class="tab-title">Personalidade</div>
<textarea name="attr_personality"></textarea>
</div>
<!-- Histórico -->
<div class="background">
<div class="tab-title">Histórico</div>
<textarea name="attr_background"></textarea>
</div>
</div>
<!-- notes tab (Anotações) -->
<div class="tab-notes">
<!-- Anotações -->
<div class="notes">
<div class="tab-title">Anotações</div>
<textarea name="attr_notes"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="sheet-section-monster">
<!-- Sidebar -->
<div class="sheet-sidebar">
<!-- Atributos -->
<div class="monster-stats">
<div class="stat">
<div class="stat-value">
<label for="attr_monster_ca" title="Classe de Armadura">CA</label>
<input type="number" name="attr_monster_ca" value="">
</div>
</div>
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Jogada de Proteção}} {{rollformula= **Resultado:** [[1d20]] comparado a @{monster_jp} (JP) }} {{stat=[[@{monster_jp}]]}}" name="roll_Monster_Jp" title="Rolar Jogada de Proteção"><span class="font-bold">JP</span></button>
<input type="number" name="attr_monster_jp" value="">
</div>
</div>
<div class="stat">
<div class="stat-value">
<button type="roll" value="&{template:basicroll} {{character=@{character_name}}} {{rollname=Teste de Moral}} {{rollformula= **Resultado:** [[2d6]] comparado a @{monster_mo} (MO) }} {{stat=[[@{monster_mo}]]}}" name="roll_Monster_Mo" title="Rolar Teste de Moral"><span class="font-bold">MO</span></button>
<input type="number" name="attr_monster_mo" value="">
</div>
</div>
</div>
<!-- Encontro -->
<div class="encounter">
<div class="font-bold">Encontro</div>
<div class="encounter-group">
<!-- Errantes -->
<div class="wander">
<input type="text" name="attr_encounter_wander" value="">
<div>Errantes</div>
</div>
<!-- Covil -->
<div class="lair">
<input type="text" name="attr_encounter_lair" value="">
<div>Covil</div>
</div>
</div>
</div>
<!-- Tesouro -->
<div class="treasure">
<div class="font-bold">Tesouro</div>
<div class="treasure-group">
<!-- Errantes -->
<div class="wander">
<input type="text" name="attr_treasure_wander" value="">
<div>Errantes</div>
</div>
<!-- Covil -->
<div class="lair">
<input type="text" name="attr_treasure_lair" value="">
<div>Covil</div>
</div>
</div>
</div>
<!-- DV | Dado de Vida -->
<div class="dv">
<div class="font-bold">DV | Dado de Vida</div>
<div class="dv-group">
<!-- DV -->
<div class="dv-value">
<input type="number" name="attr_dv" value="">
<button type="roll" value="&{template:dvroll} {{character=@{character_name}}} {{rollformula= **Resultado:** [[5*@{dv}+@{dv_bonus}]] }} {{dv=[[@{dv}]]}} {{bonus=[[@{dv_bonus}]]}}" name="roll_Dv" title="Rolar Dado de Vida"><span class="font-bold">DV</span></button>
</div>
<!-- DV Bônus -->
<div class="dv-bonus">
<input type="number" name="attr_dv_bonus" value="">
<div class="">DV Bônus</div>
</div>
</div>
</div>
</div>
<!-- Body -->
<div class="sheet-body">
<div class="header">
<!-- Nome; Conceito; Tamanho; Habitat -->
<div class="monster-basic-info">
<!-- Nome -->
<div class="monster-name">
<input type="text" name="attr_character_name">
<div class="font-bold">Nome</div>
</div>
<!-- Conceito -->
<div>
<select name="attr_concept">
<option value="humanoide" selected>Humanoide</option>
<option value="humnaoide_monstruoso">Humanoide Monstruoso</option>
<option value="gigante">Gigante</option>
<option value="animal">Animal</option>
<option value="inseto">Inseto</option>
<option value="constructo">Constructo</option>
<option value="morto_vivo">Morto-Vivo</option>
<option value="planta">Planta</option>
<option value="gosma">Gosma</option>
<option value="dragao">Dragão</option>
<option value="besta">Besta</option>
</select>
<div class="font-bold">Conceito</div>
</div>
<!-- Tamanho -->
<div>
<select name="attr_size">
<option value="miudo">Miúdo</option>
<option value="pequeno">Pequeno</option>
<option value="medio" selected>Médio</option>
<option value="grande">Grande</option>
<option value="imenso">Imenso</option>
<option value="colossal">Colossal</option>
</select>
<div class="font-bold">Tamanho</div>
</div>
<!-- Habitat -->
<div>
<select name="attr_habitat">
<option value="qualquer" selected>Qualquer</option>
<option value="planicies">Planícies</option>
<option value="colinas">Colinas</option>
<option value="montanhas">Montanhas</option>
<option value="pantanos">Pântanos</option>
<option value="geleiras">Geleiras</option>
<option value="desertos">Desertos</option>
<option value="florestas">Florestas</option>
<option value="subterraneos">Subterrâneos</option>
<option value="oceanos">Oceanos</option>
<option value="extraplanar">Extraplanar</option>
</select>
<div class="font-bold">Habitat</div>
</div>
</div>
<hr>
<!-- Alinhamento; Movimento; XP; PV -->
<div class="additional-info">
<!-- Alinhamento -->
<div class="alignment">
<div class="font-bold">Alinhamento</div>
<select name="attr_alignment">
<option value="ordeiro">Ordeiro</option>
<option value="neutro" selected>Neutro</option>
<option value="caotico">Caotico</option>
</select>
</div>
<!-- Movimento -->
<div class="mv">
<div class="font-bold">Movimento</div>
<div class="mv-values">
<!-- Atual -->
<div class="mv-value">
<input type="number" name="attr_current_movement" value="" />
<div class="text-sm">Base</div>
</div>
<!-- Correr -->
<div class="mv-value">
<span name="attr_movement_run"></span>
<div class="text-sm">Correr</div>
</div>
<!-- Escalar -->
<div class="mv-value">
<span name="attr_movement_climb"></span>
<div class="text-sm">Escalar</div>
</div>
<!-- Nadar -->
<div class="mv-value">
<input type="number" name="attr_monster_movement_swim" value="" />
<div class="text-sm">Nadar</div>
</div>
<!-- Voar -->
<div class="mv-value">
<input type="number" name="attr_monster_movement_fly" value="" />
<div class="text-sm">Voar</div>
</div>
</div>
</div>
<!-- XP | Pontos de Experiência -->
<div class="monster-xp">
<div class="font-bold">XP | Pontos de Experiência</div>
<input type="text" name="attr_xp_current" value="" />
</div>
<!-- PV | Pontos de Vida -->
<div class="hp">
<div class="font-bold">PV | Pontos de Vida</div>
<div class="hp-values">
<!-- Atual -->
<div class="hp-value">
<input type="number" name="attr_hp_current" value="" />
<div class="text-sm font-bold">PV Atual</div>
</div>
<!-- Total -->
<div class="hp-value">
<input type="number" name="attr_hp_max" value="" />
<div class="text-sm font-bold">PV Total</div>
</div>
</div>
</div>
</div>
</div>
<div class="main">
<input type="hidden" class="sheet-tabstoggle" name="attr_sheetTab" value="monster_attacks">
<div class="navigation-tabs">
<button type="action" name="act_monster_attacks">Ataques</button>
<button type="action" name="act_monster_info">Informações</button>
</div>
<!-- monster_attacks tab (Ataques) -->
<div class="tab-monster-attacks">
<div class="monster-attack-list-header">
<div class="monster-attack-times-label">×</div>
<div class="monster-attack-name-label">Ataque</div>
<div class="monster-attack-ba-label">BA<span style="font-family: 'Pictos'; font-weight: 100; padding-left: 2px; cursor: help;" title="Apenas números inteiros positivos ou negativos (Ex: 4, -1)">i</span></div>
<div class="monster-attack-damage-label">Dano<span style="font-family: 'Pictos'; font-weight: 100; padding-left: 2px; cursor: help; " title="Apenas dados (Ex: 1d4, 2d6)">i</span></div>
<div class="monster-attack-bonus-damage-label">Bôn. Dano <span style="font-family: 'Pictos';font-weight: 100;padding-left: 2px;cursor: help;" title="Apenas números inteiros positivos ou negativos (Ex: 4, -1)">i</span></div>
<div class="monster-attack-action-label">Ações</div>
</div>
<!-- Repeating Sections for monster_attacks -->
<fieldset class="repeating_monsterattacks">
<div class="monster-attack-data">
<div class="monster-attack-times">
<input type="number" name="attr_monster_attack_times" value="0" placeholder="Qtd">
</div>
<div class="monster-attack-name">
<input type="text" name="attr_monster_attack_name" placeholder="Nome do ataque (Ex: Garra, Mordida)">
</div>
<div class="monster-attack-ba">
<input type="number" name="attr_monster_attack_ba" value="0" placeholder="BA">
</div>
<div class="monster-attack-damage">
<input type="text" name="attr_monster_attack_damage" value="1d0" placeholder="Dano">
</div>
<div class="monster-attack-bonus-damage">
<input type="number" name="attr_monster_attack_bonus_damage" value="0" placeholder="Bôn. Dano">
</div>
<div class="monster-attack-action">
<button type="roll" value="&{template:monsterattackroll} {{character=@{character_name}}} {{attack=@{monster_attack_name}}} {{rollformula= **Resultado:** [[ [[1d20]] + @{monster_attack_ba} ]] contra CA do alvo %NEWLINE%%NEWLINE% *Detalhes: $[[0]] + @{monster_attack_ba} (BA) }}" name="roll_MonsterAttackRoll" title="Rolar ataque" class="monster-attack-roll"><span style="font-family: 'dicefontd20'">0</span></button>
<button type="roll" value="&{template:monsterdamageroll} {{character=@{character_name}}} {{attack=@{monster_attack_name}}} {{rollformula= **Resultado:** [[ [[@{monster_attack_damage}]] + @{monster_attack_bonus_damage} ]] de dano %NEWLINE%%NEWLINE% *Detalhes: $[[0]] + @{monster_attack_bonus_damage} (Bônus no Dano)* }}" name="roll_MonsterDamageRoll" title="Rolar dano" class="monster-damage-roll"><span style="font-family: 'Pictos Custom'">t</span></button>
</div>
</div>
<hr>
</fieldset>
</div>
<!-- monster_info tab (Informações) -->
<div class="tab-monster-info">
<!-- Apresentação -->
<div class="monster-flavor">
<div class="tab-title">Apresentação</div>
<textarea name="attr_monster_flavor"></textarea>
</div>
<!-- Características -->
<div class="monster-traits">
<div class="tab-title">Características</div>
<textarea name="attr_monster_traits"></textarea>
</div>
</div>
</div>
</div>
</div>
<!-- Old Dragon 2e Roll Templates -->
<!-- Basic Roll (FOR, DES, CON, SAB, INT, CAR, JPD, JPC, JPS rolls) -->
<rolltemplate class="sheet-rolltemplate-basicroll">
<div class="sheet-character-name">{{character}}</div>
<h3>{{rollname}}</h3>
{{#rollformula}}
{{#^rollGreater() rollformula stat}}
<h4 class="sheet-success">SUCESSO!</h4>
{{/^rollGreater() rollformula stat}}
{{#rollGreater() rollformula stat}}
<h4 class="sheet-fail">FALHA</h4>
{{/rollGreater() rollformula stat}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- Monster DV Roll -->
<rolltemplate class="sheet-rolltemplate-dvroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Rolagem de Dado de Vida</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- BAC Roll -->
<rolltemplate class="sheet-rolltemplate-bacroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Ataque corpo a corpo</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- BAD Roll -->
<rolltemplate class="sheet-rolltemplate-badroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Ataque à distância</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- Attack Roll -->
<rolltemplate class="sheet-rolltemplate-attackroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Ataque com {{attack}}</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- Monster Attack Roll -->
<rolltemplate class="sheet-rolltemplate-monsterattackroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Ataque com {{attack}}</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- Damage Roll -->
<rolltemplate class="sheet-rolltemplate-damageroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Dano com {{attack}}</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- Monster Damage Roll -->
<rolltemplate class="sheet-rolltemplate-monsterdamageroll">
<div class="sheet-character-name">{{character}}</div>
<h3>Dano com {{attack}}</h3>
{{#rollformula}}
<div class="sheet-rollresult">{{rollformula}}</div>
{{/rollformula}}
<hr>
</rolltemplate>
<!-- Spell Roll -->
<rolltemplate class="sheet-rolltemplate-spellroll">
<div class="sheet-character-name">{{character}}</div>
<h3>{{spell}}</h3>
<div class="sheet-school">
<span>{{school}}</span>
<span>({{circle}}º círculo)</span>
</div>
<div class="sheet-range">
<strong>Alcance:</strong>
<span>{{range}}</span>
</div>
<div class="sheet-duration">
<strong>Duração:</strong>
<span>{{duration}}</span>
</div>
<div class="sheet-jp">
<strong>JP:</strong>
<span>{{jp}}</span>
</div>
<div>{{description}}</div>
<hr>
</rolltemplate>
<!-- Old Dragon 2e Script -->
<script type="text/worker">
// Initialize character sheet attributes and modifiers
on("sheet:opened", () => {
const stats = [
"forca",
"destreza",
"constituicao",
"sabedoria",
"inteligencia",
"carisma"
];
const additionalAttrs = [
"jpd_class",
"jpd_race",
"jpc_class",
"jpc_race",
"jps_class",
"jps_race",
"current_movement",
"xp_current",
"hp_current",
"hp_max",
"ca_base",
"ca_armor",
"ca_shield",
"ca_magic_weapon",
"ba_base",
"gp",
"sp",
"cp"
];
const attrsToGet = stats.concat(stats.map(stat => `mod_${stat}`)).concat(additionalAttrs);
getAttrs(attrsToGet, values => {
const initialAttrs = {};
stats.forEach(stat => {
if (!values[stat]) {
initialAttrs[stat] = "10";
}
if (!values[`mod_${stat}`]) {
initialAttrs[`mod_${stat}`] = "+0";
}
});
additionalAttrs.forEach(attr => {
if (!values[attr]) {
initialAttrs[attr] = "0";
}
});
if (Object.keys(initialAttrs).length > 0) {
setAttrs(initialAttrs);
}
});
// Initialize monster sheet attributes
const monsterNumberAttrs = [
"monster_ca",
"monster_jp",
"monster_mo",
"dv",
"dv_bonus",
"monster_movement_swim",
"monster_movement_fly",
"xp_current",
"hp_current",
"hp_max"
];
const monsterTextAttrs = [
"encounter_wander",
"encounter_lair",
"treasure_wander",
"treasure_lair",
];
const monsterAttrs = monsterNumberAttrs.concat(monsterTextAttrs);
getAttrs(monsterAttrs, values => {
const initialMonsterAttrs = {};
monsterNumberAttrs.forEach(attr => {
if (!values[attr]) {
initialMonsterAttrs[attr] = "0";
}
});
monsterTextAttrs.forEach(attr => {
if (!values[attr]) {
initialMonsterAttrs[attr] = "-";
}
});
if (Object.keys(initialMonsterAttrs).length > 0) {
setAttrs(initialMonsterAttrs);
}
});
});
// Calculate modifiers
const int = score => parseInt(score, 10) || 0;
const stats = ["forca", "destreza", "constituicao", "sabedoria", "inteligencia", "carisma"];
stats.forEach(stat => {
on(`change:${stat}`, () => {
getAttrs([stat], values => {
const stat_base = int(values[stat]);
let stat_mod = 0;
if (stat_base < 2) stat_mod = "-4";
else if (stat_base < 4) stat_mod = "-3";
else if (stat_base < 6) stat_mod = "-2";
else if (stat_base < 9) stat_mod = "-1";
else if (stat_base < 13) stat_mod = "+0";
else if (stat_base < 15) stat_mod = "+1";
else if (stat_base < 17) stat_mod = "+2";
else if (stat_base < 19) stat_mod = "+3";
else stat_mod = "+4";
setAttrs({
[`mod_${stat}`]: stat_mod
});
});
});
});
// Calculate JPD
on("change:jpd change:jpd_class change:jpd_race change:mod_destreza", function() {
getAttrs(["jpd", "jpd_class", "jpd_race", "mod_destreza"], function(values) {
let jpd = int(values.jpd);
let jpd_class = int(values.jpd_class);
let jpd_race = int(values.jpd_race);
let mod_des = int(values.mod_destreza);
let jpd_total = jpd_class + jpd_race + mod_des;
setAttrs({
jpd: jpd_total
});
});
});
// Calculate JPC
on("change:jpc change:jpc_class change:jpc_race change:mod_constituicao", function() {
getAttrs(["jpc", "jpc_class", "jpc_race", "mod_constituicao"], function(values) {
let jpc = int(values.jpc);
let jpc_class = int(values.jpc_class);
let jpc_race = int(values.jpc_race);
let mod_cos = int(values.mod_constituicao);
let jpc_total = jpc_class + jpc_race + mod_cos;
setAttrs({
jpc: jpc_total
});
});
});
// Calculate JPS
on("change:jps change:jps_class change:jps_race change:mod_sabedoria", function() {
getAttrs(["jps", "jps_class", "jps_race", "mod_sabedoria"], function(values) {
let jps = int(values.jps);
let jps_class = int(values.jps_class);
let jps_race = int(values.jps_race);
let mod_sab = int(values.mod_sabedoria);
let jps_total = jps_class + jps_race + mod_sab;
setAttrs({
jps: jps_total
});
});
});
// Calculate CA
on("change:ca_base change:mod_destreza change:ca_armor change:ca_shield change:ca_magic_weapon", function() {
getAttrs(["ca_base", "mod_destreza", "ca_armor", "ca_shield", "ca_magic_weapon"], function(values) {
let ca_base = int(values.ca_base);
let mod_des = int(values.mod_destreza);
let ca_armor = int(values.ca_armor);
let ca_shield = int(values.ca_shield);
let ca_magic_weapon = int(values.ca_magic_weapon);
let ca_total = ca_base + mod_des + ca_armor + ca_shield + ca_magic_weapon;
setAttrs({
ca: ca_total
});
});
});
// Calculate BA
on("change:ba_base change:mod_forca change:mod_destreza", function() {
getAttrs(["ba_base", "mod_forca", "mod_destreza"], function(values) {
let ba_base = int(values.ba_base);
let mod_for = int(values.mod_forca);
let mod_des = int(values.mod_destreza);
let bac = ba_base + mod_for;
let bad = ba_base + mod_des;
setAttrs({
bac: bac,
bad: bad
});
});
});
// Calculate movement
on("change:current_movement", function() {
getAttrs(["current_movement"], function(values) {
let current_mv = values.current_movement;
let mv_run = Math.floor(current_mv * 2);
let mv_climb = Math.floor(current_mv - 2);
let mv_swim = Math.floor(current_mv / 2);
setAttrs({
movement_run: mv_run,
movement_climb: mv_climb,
movement_swim: mv_swim
});
});
});
// Tabs system
const buttonlist = ["attacks", "skills", "spells", "equipment", "details", "notes", "monster_attacks", "monster_info"];
buttonlist.forEach(button => {
on(`clicked:${button}`, function() {
setAttrs({
sheetTab: button
});
});
});
// Change to the default tab when changing the sheet layout
on("change:core-tab", function() {
getAttrs(["core-tab"], function(values) {
let tab = values["core-tab"];
let sheetTab = (tab === "1") ? "attacks" : "monster_attacks";
setAttrs({ sheetTab });
});
});
// Data validation for character attacks
attack_stats = ["attack_ba", "attack_bonus_ba", "attack_bonus_damage"];
attack_stats.forEach(stat => {
on(`change:repeating_attacks:${stat}`, () => {
getAttrs([`repeating_attacks_${stat}`], values => {
const stat_value = values[`repeating_attacks_${stat}`];
pattern = /^-?\d*?\d+$/;
if (!pattern.test(stat_value)) {
setAttrs({
[`repeating_attacks_${stat}`]: ""
});
}
});
});
});
on("change:repeating_attacks:attack_damage", function() {
getAttrs(["repeating_attacks_attack_damage"], function(values) {
let attack_damage = values.repeating_attacks_attack_damage;
pattern = /^\d+d{1}\d+$/;
if (!pattern.test(attack_damage)) {
setAttrs({
repeating_attacks_attack_damage: ""
});
};
});
});
// Data validation for monster attacks
monster_attack_stats = ["monster_attack_times", "monster_attack_ba", "monster_attack_bonus_damage"];
monster_attack_stats.forEach(stat => {
on(`change:repeating_monster_attacks:${stat}`, () => {
getAttrs([`repeating_monster_attacks_${stat}`], values => {
const stat_value = values[`repeating_monster_attacks_${stat}`];
pattern = /^-?\d*?\d+$/;
if (!pattern.test(stat_value)) {
setAttrs({
[`repeating_monster_attacks_${stat}`]: ""
});
}
});
});
});
on("change:repeating_monster_attacks:monster_attack_damage", function() {
getAttrs(["repeating_monster_attacks_monster_attack_damage"], function(values) {
let monster_attack_damage = values.repeating_monster_attacks_monster_attack_damage;
pattern = /^\d+d{1}\d+$/;
if (!pattern.test(monster_attack_damage)) {
setAttrs({
repeating_monster_attacks_monster_attack_damage: ""
});
};
});
});
</script>