Files
roll20-character-sheets/Comandos de guerra/Comandos.html
T
2026-06-08 13:44:19 -07:00

1778 lines
91 KiB
HTML
Raw 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.
<div class="main-wrapper">
<input type="radio" name="attr_tab_selector" class="sheet-tab-input sheet-tab1" value="1" checked />
<span class="sheet-tab-visual">DATOS Y HABILIDADES</span>
<span class="sheet-spacer"></span>
<input type="radio" name="attr_tab_selector" class="sheet-tab-input sheet-tab2" value="2" />
<span class="sheet-tab-visual">ESTADO Y EQUIPO</span>
<br><br><hr>
<div class="sheet-page-container sheet-page-1">
<h3 class="sheet-full-width-title">DATOS PERSONALES</h3>
<div class="sheet-personal-data-row">
<div class="sheet-data-box"><label>Nombre:</label> <input type="text" name="attr_character_name" style="width: 150px;"></div>
<div class="sheet-data-box"><label>Nacionalidad:</label> <input type="text" name="attr_nacionalidad" style="width: 100px;"></div>
<div class="sheet-data-box"><label>Nivel Social:</label> <input type="text" name="attr_nivel_social" style="width: 40px;"></div>
<div class="sheet-data-box"><label>Edad:</label> <input type="number" name="attr_edad"></div>
<div class="sheet-data-box"><label>Sexo:</label> <input type="text" name="attr_sexo" style="width: 60px;"></div>
<div class="sheet-data-box"><label>Altura:</label> <input type="text" name="attr_altura" style="width: 60px;"></div>
<div class="sheet-data-box"><label>Peso:</label> <input type="number" name="attr_peso"></div>
<div class="sheet-data-box" style="display: flex; align-items: flex-end; padding-bottom: 2px;">
<button type="action" name="act_roll_sombra" class="sheet-btn-tirada_sombra">Tirada Sombra</button>
</div>
<div class="sheet-personal-data-row">
<div class="sheet-data-box"><label>Pasos:</label> <input type="text" name="attr_character_pasos" style="width: 500px;"></div>
<div class="sheet-data-box"><label>Exp. Actual:</label> <input type="text" name="attr_character_exp_actual" style="width: 40px;"></div>
<div class="sheet-data-box"><label>Exp. Acumulada:</label> <input type="text" name="attr_character_exp_acumulada" style="width: 60px;"></div>
</div>
<!-- SECCIÓN DE ESTADO PESTAÑA 1 INTEGRADA -->
<div class="sheet-estado-p1-container">
<h3 class="sheet-full-width-title">ESTADO DEL PERSONAJE</h3>
<div class="sheet-alerts-wrapper-p1">
<!-- PRIMERA FILA: BANNERS CRÍTICOS -->
<div class="sheet-flex-row-status">
<input type="hidden" name="attr_salud_status" class="sheet-health-toggle" value="normal">
<div class="sheet-alert-banner sheet-alert-danger sheet-msg-inconsciente">INCONSCIENTE</div>
<div class="sheet-alert-banner sheet-alert-danger sheet-msg-moribundo">MORIBUNDO</div>
<input type="hidden" name="attr_sobrecarga_status" class="sheet-sobrecarga-toggle" value="0">
<div class="sheet-alert-banner sheet-alert-warning sheet-msg-sobrecarga">SOBRECARGADO</div>
<input type="hidden" name="attr_sangrado_l_status" class="sheet-sangrado-l-toggle" value="0">
<div class="sheet-alert-banner sheet-alert-bleeding sheet-msg-sangrado-1">Sangrado Leve +1PH/minuto</div>
<div class="sheet-alert-banner sheet-alert-bleeding sheet-msg-sangrado-2">Sangrado leve +2PH/minuto</div>
<div class="sheet-alert-banner sheet-alert-bleeding sheet-msg-sangrado-3">Sangrado leve +3PH/minuto</div>
<input type="hidden" name="attr_sangrado_g_status" class="sheet-toggle" value="0">
<div class="sheet-alert-banner sheet-alert-bleeding sheet-msg-show">Sangrado Grave: +1PH/5as</div>
</div>
<!-- SEGUNDA FILA: DETALLES DE HERIDAS (Solo aparecen si hay herida) -->
<div class="sheet-flex-row-wounds">
<div class="sheet-alert-item"><input type="hidden" name="attr_status_cabeza_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve Cabeza: +3 todas acciones</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_pecho_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve Pecho: +3 acciones físicas</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_pecho_g" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Grave Pecho: +5 acciones físicas</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_brazod_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve B.Dcho: +3 acciones brazo</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_brazod_g" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida GraveB.Dcho: Inutilizado</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_brazoi_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve B.Izdo: +3 acciones brazo</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_brazoi_g" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Grave B.Izdo: Inutilizado</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_abdomen_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve Abdomen: +3 todas acciones/ Mov 1/2</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_abdomen_g" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Grave Abdomen: DERRIBADO/Sin acciones</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_piernai_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve P.Izda: Deseq / Mov 1/2</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_piernai_g" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Grave P.Izda: Inutilizada / DERRIBADO</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_piernad_l" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Leve P.Dcha: Deseq / Mov 1/2</div></div>
<div class="sheet-alert-item"><input type="hidden" name="attr_status_piernad_g" class="sheet-toggle" value="0">
<div class="sheet-loc-tag sheet-msg-show">Herida Grave P.Dcha: Inutilizada / DERRIBADO</div></div>
</div>
</div>
</div>
<div class="sheet-four-column-layout">
<div class="sheet-column">
<h3>CARACTERÍSTICAS</h3>
<div class="sheet-atributos-compact">
<div class="sheet-atributo-grupo">
<div class="sheet-header-with-input">
<h4>CUERPO</h4> <input type="number" name="attr_cuerpo" value="5" class="sheet-characteristic-input">
</div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_fue" class="sheet-skill-roll-btn">t</button>
<label>Fuerza:</label> <input type="number" name="attr_fue" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_vit" class="sheet-skill-roll-btn">t</button>
<label>Vitalidad:</label> <input type="number" name="attr_vit" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_res" class="sheet-skill-roll-btn">t</button>
<label>Resistencia:</label> <input type="number" name="attr_res" value="5"></div>
</div>
<div class="sheet-atributo-grupo">
<div class="sheet-header-with-input">
<h4>DESTREZA</h4> <input type="number" name="attr_destreza" value="5" class="sheet-characteristic-input">
</div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_agi" class="sheet-skill-roll-btn">t</button>
<label>Agilidad:</label> <input type="number" name="attr_agi" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_coo" class="sheet-skill-roll-btn">t</button>
<label>Coordinación:</label> <input type="number" name="attr_coo" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_vel" class="sheet-skill-roll-btn">t</button>
<label>Velocidad:</label> <input type="number" name="attr_vel" value="5"></div>
</div>
<div class="sheet-atributo-grupo">
<div class="sheet-header-with-input">
<h4>INSTINTO</h4> <input type="number" name="attr_instinto" value="5" class="sheet-characteristic-input">
</div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_per" class="sheet-skill-roll-btn">t</button>
<label>Percepción:</label> <input type="number" name="attr_per" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_con" class="sheet-skill-roll-btn">t</button>
<label>Concentración:</label> <input type="number" name="attr_con" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_int" class="sheet-skill-roll-btn">t</button>
<label>Intuición:</label> <input type="number" name="attr_int" value="5"></div>
</div>
<div class="sheet-atributo-grupo">
<div class="sheet-header-with-input">
<h4>INTELIGENCIA</h4> <input type="number" name="attr_inteligencia" value="5" class="sheet-characteristic-input">
</div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_mem" class="sheet-skill-roll-btn">t</button>
<label>Memoria:</label> <input type="number" name="attr_mem" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_log" class="sheet-skill-roll-btn">t</button>
<label>Lógica:</label> <input type="number" name="attr_log" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_inv" class="sheet-skill-roll-btn">t</button>
<label>Inventiva:</label> <input type="number" name="attr_inv" value="5"></div>
</div>
<div class="sheet-atributo-grupo">
<div class="sheet-header-with-input">
<h4>PRESENCIA</h4> <input type="number" name="attr_presencia" value="5" class="sheet-characteristic-input">
</div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_car" class="sheet-skill-roll-btn">t</button>
<label>Carisma:</label> <input type="number" name="attr_car" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_vol" class="sheet-skill-roll-btn">t</button>
<label>Voluntad:</label> <input type="number" name="attr_vol" value="5"></div>
<div class="sheet-sub-row">
<span></span><button type="action" name="act_roll_apa" class="sheet-skill-roll-btn">t</button>
<label>Apariencia:</label> <input type="number" name="attr_apa" value="5"></div>
</div>
</div>
</div>
<div class="sheet-column">
<h3>BÁSICAS</h3>
<div class="sheet-skills-container">
<div class="sheet-skill-row sheet-skill-header">
<span></span> <!-- Espacio para el botón -->
<span>Hab.</span> <span>At.</span> <span>Bs</span> <span>Nv</span> <span>Tot</span>
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_burocracia" class="sheet-skill-roll-btn">t</button>
<span>Burocracia</span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_burocracia_base" readonly>
<input type="number" name="attr_burocracia_nivel">
<input type="number" name="attr_burocracia_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_callejeo" class="sheet-skill-roll-btn">t</button>
<span>Callejeo</span>
<span class="sheet-attr-ref">INT</span>
<input type="number" name="attr_callejeo_base" readonly>
<input type="number" name="attr_callejeo_nivel">
<input type="number" name="attr_callejeo_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_camuflar" class="sheet-skill-roll-btn">t</button>
<span>Camuflar</span>
<span class="sheet-attr-ref">INV</span>
<input type="number" name="attr_camuflar_base" readonly>
<input type="number" name="attr_camuflar_nivel">
<input type="number" name="attr_camuflar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_conocimiento" class="sheet-skill-roll-btn">t</button>
<span>Conocimiento</span>
<span class="sheet-attr-ref">INV</span>
<input type="number" name="attr_conocimiento_base" readonly>
<input type="number" name="attr_conocimiento_nivel">
<input type="number" name="attr_conocimiento_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_descubrir" class="sheet-skill-roll-btn">t</button>
<span>Descubrir</span>
<span class="sheet-attr-ref">PER</span>
<input type="number" name="attr_descubrir_base" readonly>
<input type="number" name="attr_descubrir_nivel">
<input type="number" name="attr_descubrir_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_dialectica" class="sheet-skill-roll-btn">t</button>
<span>Dialéctica</span>
<span class="sheet-attr-ref">CAR</span>
<input type="number" name="attr_dialectica_base" readonly>
<input type="number" name="attr_dialectica_nivel">
<input type="number" name="attr_dialectica_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_equitacion" class="sheet-skill-roll-btn">t</button>
<span>Equitacion</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_equitacion_base" readonly>
<input type="number" name="attr_equitacion_nivel">
<input type="number" name="attr_equitacion_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_esconder" class="sheet-skill-roll-btn">t</button>
<span>Esconder</span>
<span class="sheet-attr-ref">INT</span>
<input type="number" name="attr_esconder_base" readonly>
<input type="number" name="attr_esconder_nivel">
<input type="number" name="attr_esconder_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_escuchar" class="sheet-skill-roll-btn">t</button>
<span>Escuchar</span>
<span class="sheet-attr-ref">PER</span>
<input type="number" name="attr_escuchar_base" readonly>
<input type="number" name="attr_escuchar_nivel">
<input type="number" name="attr_escuchar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_falsificar" class="sheet-skill-roll-btn">t</button>
<span>Falsificar</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_falsificar_base" readonly>
<input type="number" name="attr_falsificar_nivel">
<input type="number" name="attr_falsificar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_geografia" class="sheet-skill-roll-btn">t</button>
<span>Geografia</span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_geografia_base" readonly>
<input type="number" name="attr_geografia_nivel">
<input type="number" name="attr_geografia_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_lanzar" class="sheet-skill-roll-btn">t</button>
<span>Lanzar</span>
<span class="sheet-attr-ref">FUE</span>
<input type="number" name="attr_lanzar_base" readonly>
<input type="number" name="attr_lanzar_nivel">
<input type="number" name="attr_lanzar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_nadar" class="sheet-skill-roll-btn">t</button>
<span>Nadar</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_nadar_base" readonly>
<input type="number" name="attr_nadar_nivel">
<input type="number" name="attr_nadar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_ocultar" class="sheet-skill-roll-btn">t</button>
<span>Ocultar</span>
<span class="sheet-attr-ref">INV</span>
<input type="number" name="attr_ocultar_base" readonly>
<input type="number" name="attr_ocultar_nivel">
<input type="number" name="attr_ocultar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_orientacion" class="sheet-skill-roll-btn">t</button>
<span>Orientacion</span>
<span class="sheet-attr-ref">LOG</span>
<input type="number" name="attr_orientacion_base" readonly>
<input type="number" name="attr_orientacion_nivel">
<input type="number" name="attr_orientacion_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_rastrear" class="sheet-skill-roll-btn">t</button>
<span>Rastrear</span>
<span class="sheet-attr-ref">LOG</span>
<input type="number" name="attr_rastrear_base" readonly>
<input type="number" name="attr_rastrear_nivel">
<input type="number" name="attr_rastrear_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_robar" class="sheet-skill-roll-btn">t</button>
<span>Robar</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_robar_base" readonly>
<input type="number" name="attr_robar_nivel">
<input type="number" name="attr_robar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_saltar" class="sheet-skill-roll-btn">t</button>
<span>Saltar</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_saltar_base" readonly>
<input type="number" name="attr_saltar_nivel">
<input type="number" name="attr_saltar_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_seduccion" class="sheet-skill-roll-btn">t</button>
<span>Seducción</span>
<span class="sheet-attr-ref">CAR</span>
<input type="number" name="attr_seduccion_base" readonly>
<input type="number" name="attr_seduccion_nivel">
<input type="number" name="attr_seduccion_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_trepar" class="sheet-skill-roll-btn">t</button>
<span>Trepar</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_trepar_base" readonly>
<input type="number" name="attr_trepar_nivel">
<input type="number" name="attr_trepar_total" readonly class="sheet-total-box">
</div>
</div>
</div>
<div class="sheet-column">
<h3>ESPECIALES</h3>
<div class="sheet-skills-container">
<div class="sheet-skill-row sheet-skill-header">
<span></span> <!-- Espacio para el botón -->
<span>Hab.</span> <span>At.</span> <span>Bs</span> <span>Nv</span> <span>Tot</span></div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_cerraduras" class="sheet-skill-roll-btn">t</button>
<span>Cerradura</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_cerraduras_base" readonly>
<input type="number" name="attr_cerraduras_nivel">
<input type="number" name="attr_cerraduras_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_comunicaciones" class="sheet-skill-roll-btn">t</button>
<span>Comunicaciones</span>
<span class="sheet-attr-ref">CON</span>
<input type="number" name="attr_comunicaciones_base" readonly>
<input type="number" name="attr_comunicaciones_nivel">
<input type="number" name="attr_comunicaciones_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_explosivos" class="sheet-skill-roll-btn">t</button>
<span>Explosivos</span>
<span class="sheet-attr-ref">LOG</span>
<input type="number" name="attr_explosivos_base" readonly>
<input type="number" name="attr_explosivos_nivel">
<input type="number" name="attr_explosivos_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_ingenios" class="sheet-skill-roll-btn">t</button>
<span>Ingenios</span>
<span class="sheet-attr-ref">INV</span>
<input type="number" name="attr_ingenios_base" readonly>
<input type="number" name="attr_ingenios_nivel">
<input type="number" name="attr_ingenios_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_interrogacion" class="sheet-skill-roll-btn">t</button>
<span>Interrogación</span>
<span class="sheet-attr-ref">VOL</span>
<input type="number" name="attr_interrogacion_base" readonly>
<input type="number" name="attr_interrogacion_nivel">
<input type="number" name="attr_interrogacion_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_mecanica" class="sheet-skill-roll-btn">t</button>
<span>Mecánica</span>
<span class="sheet-attr-ref">CON</span>
<input type="number" name="attr_mecanica_base" readonly>
<input type="number" name="attr_mecanica_nivel">
<input type="number" name="attr_mecanica_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_medicina" class="sheet-skill-roll-btn">t</button>
<span>Medicina</span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_medicina_base" readonly>
<input type="number" name="attr_medicina_nivel">
<input type="number" name="attr_medicina_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_paracaidismo" class="sheet-skill-roll-btn">t</button>
<span>Paracaidismo</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_paracaidismo_base" readonly>
<input type="number" name="attr_paracaidismo_nivel">
<input type="number" name="attr_paracaidismo_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_primeros_auxilios" class="sheet-skill-roll-btn">t</button>
<span>Primeros Auxilios</span>
<span class="sheet-attr-ref">INT</span>
<input type="number" name="attr_primeros_auxilios_base" readonly>
<input type="number" name="attr_primeros_auxilios_nivel">
<input type="number" name="attr_primeros_auxilios_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_quimica" class="sheet-skill-roll-btn">t</button>
<span>Química</span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_quimica_base" readonly>
<input type="number" name="attr_quimica_nivel">
<input type="number" name="attr_quimica_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-bracket">
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_motos" class="sheet-skill-roll-btn">t</button>
<span>Pilotar motos</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_motos_base" readonly>
<input type="number" name="attr_pilotar_motos_nivel">
<input type="number" name="attr_pilotar_motos_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_coches" class="sheet-skill-roll-btn">t</button>
<span>Pilotar coches</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_coches_base" readonly>
<input type="number" name="attr_pilotar_coches_nivel">
<input type="number" name="attr_pilotar_coches_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_camiones" class="sheet-skill-roll-btn">t</button>
<span>Pilotar camiones</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_camiones_base" readonly>
<input type="number" name="attr_pilotar_camiones_nivel">
<input type="number" name="attr_pilotar_camiones_total" readonly class="sheet-total-box">
</div>
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_tanques" class="sheet-skill-roll-btn">t</button>
<span>Pilotar tanques</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_tanques_base" readonly>
<input type="number" name="attr_pilotar_tanques_nivel">
<input type="number" name="attr_pilotar_tanques_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-bracket">
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_cazas" class="sheet-skill-roll-btn">t</button>
<span>Pilotar cazas</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_cazas_base" readonly>
<input type="number" name="attr_pilotar_cazas_nivel">
<input type="number" name="attr_pilotar_cazas_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_bombarderos" class="sheet-skill-roll-btn">t</button>
<span>Pilotar bombarderos</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_bombarderos_base" readonly>
<input type="number" name="attr_pilotar_bombarderos_nivel">
<input type="number" name="attr_pilotar_bombarderos_total" readonly class="sheet-total-box">
</div>
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_barcas" class="sheet-skill-roll-btn">t</button>
<span>Pilotar barcas</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_barcas_base" readonly>
<input type="number" name="attr_pilotar_barcas_nivel">
<input type="number" name="attr_pilotar_barcas_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pilotar_buques" class="sheet-skill-roll-btn">t</button>
<span>Pilotar buques</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pilotar_buques_base" readonly>
<input type="number" name="attr_pilotar_buques_nivel">
<input type="number" name="attr_pilotar_buques_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-root-skill sheet-skill-restricted">
<button type="action" name="act_roll_idioma_1" class="sheet-skill-roll-btn">t</button>
<span><input type="text" name="attr_idioma_1_nombre" placeholder="Idioma..." class="sheet-text-line"></span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_idioma_1_base" readonly>
<input type="number" name="attr_idioma_1_nivel">
<input type="number" name="attr_idioma_1_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-root-skill sheet-skill-restricted">
<button type="action" name="act_roll_idioma_2" class="sheet-skill-roll-btn">t</button>
<span><input type="text" name="attr_idioma_2_nombre" placeholder="Idioma..." class="sheet-text-line"></span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_idioma_2_base" readonly>
<input type="number" name="attr_idioma_2_nivel">
<input type="number" name="attr_idioma_2_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-root-skill sheet-skill-restricted">
<button type="action" name="act_roll_idioma_3" class="sheet-skill-roll-btn">t</button>
<span><input type="text" name="attr_idioma_3_nombre" placeholder="Idioma..." class="sheet-text-line"></span>
<span class="sheet-attr-ref">MEM</span>
<input type="number" name="attr_idioma_3_base" readonly>
<input type="number" name="attr_idioma_3_nivel">
<input type="number" name="attr_idioma_3_total" readonly class="sheet-total-box">
</div>
</div>
</div>
<div class="sheet-column">
<h3>DE COMBATE</h3>
<div class="sheet-skills-container">
<div class="sheet-skill-row sheet-skill-header">
<span></span> <!-- Espacio para el botón -->
<span>Hab.</span> <span>At.</span> <span>Bs</span> <span>Nv</span> <span>Tot</span></div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_pistola" class="sheet-skill-roll-btn">t</button>
<span>Pistola</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_pistola_base" readonly>
<input type="number" name="attr_pistola_nivel">
<input type="number" name="attr_pistola_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-bracket">
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_fusil" class="sheet-skill-roll-btn">t</button>
<span>Fusil</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_fusil_base" readonly>
<input type="number" name="attr_fusil_nivel">
<input type="number" name="attr_fusil_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_bayoneta" class="sheet-skill-roll-btn">t</button>
<span>Bayoneta</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_bayoneta_base" readonly>
<input type="number" name="attr_bayoneta_nivel">
<input type="number" name="attr_bayoneta_total" readonly class="sheet-total-box">
</div>
</div>
<div class="sheet-skill-bracket">
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_subfusil" class="sheet-skill-roll-btn">t</button>
<span>Subfusil</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_subfusil_base" readonly>
<input type="number" name="attr_subfusil_nivel">
<input type="number" name="attr_subfusil_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_ametralladora" class="sheet-skill-roll-btn">t</button>
<span>Ametralladora</span>
<span class="sheet-attr-ref">FUE</span>
<input type="number" name="attr_ametralladora_base" readonly>
<input type="number" name="attr_ametralladora_nivel">
<input type="number" name="attr_ametralladora_total" readonly class="sheet-total-box">
</div>
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_lanzallamas" class="sheet-skill-roll-btn">t</button>
<span>Lanzallamas</span>
<span class="sheet-attr-ref">COO</span>
<input type="number" name="attr_lanzallamas_base" readonly>
<input type="number" name="attr_lanzallamas_nivel">
<input type="number" name="attr_lanzallamas_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_lanzagranadas" class="sheet-skill-roll-btn">t</button>
<span>Lanzagranadas</span>
<span class="sheet-attr-ref">FUE</span>
<input type="number" name="attr_lanzagranadas_base" readonly>
<input type="number" name="attr_lanzagranadas_nivel">
<input type="number" name="attr_lanzagranadas_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_artilleria_campana" class="sheet-skill-roll-btn">t</button>
<span>Artillería de campaña</span>
<span class="sheet-attr-ref">CON</span>
<input type="number" name="attr_artilleria_campana_base" readonly>
<input type="number" name="attr_artilleria_campana_nivel">
<input type="number" name="attr_artilleria_campana_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_artilleria_pesada" class="sheet-skill-roll-btn">t</button>
<span>Artillería pesada</span>
<span class="sheet-attr-ref">CON</span>
<input type="number" name="attr_artilleria_pesada_base" readonly>
<input type="number" name="attr_artilleria_pesada_nivel">
<input type="number" name="attr_artilleria_pesada_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_armamento_aereo" class="sheet-skill-roll-btn">t</button>
<span>Armamento aéreo</span>
<span class="sheet-attr-ref">CON</span>
<input type="number" name="attr_armamento_aereo_base" readonly>
<input type="number" name="attr_armamento_aereo_nivel">
<input type="number" name="attr_armamento_aereo_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_armas_arrojadizas" class="sheet-skill-roll-btn">t</button>
<span>Armas arrojadizas</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_armas_arrojadizas_base" readonly>
<input type="number" name="attr_armas_arrojadizas_nivel">
<input type="number" name="attr_armas_arrojadizas_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_armas_blancas" class="sheet-skill-roll-btn">t</button>
<span>Armas blancas</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_armas_blancas_base" readonly>
<input type="number" name="attr_armas_blancas_nivel">
<input type="number" name="attr_armas_blancas_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_armas_contundentes" class="sheet-skill-roll-btn">t</button>
<span>Armas contundentes</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_armas_contundentes_base" readonly>
<input type="number" name="attr_armas_contundentes_nivel">
<input type="number" name="attr_armas_contundentes_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row sheet-skill-restricted">
<button type="action" name="act_roll_matar_silencio" class="sheet-skill-roll-btn">t</button>
<span>Matar en Silencio</span>
<span class="sheet-attr-ref">CON</span>
<input type="number" name="attr_matar_silencio_base" readonly>
<input type="number" name="attr_matar_silencio_nivel">
<input type="number" name="attr_matar_silencio_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_lucha_desarmado" class="sheet-skill-roll-btn">t</button>
<span>Lucha desarmado</span>
<span class="sheet-attr-ref">AGI</span>
<input type="number" name="attr_lucha_desarmado_base" readonly>
<input type="number" name="attr_lucha_desarmado_nivel">
<input type="number" name="attr_lucha_desarmado_total" readonly class="sheet-total-box">
</div>
<h3>SECUNDARIAS</h3>
<div class="sheet-skills-container">
<div class="sheet-skill-row sheet-skill-header">
<span></span> <!-- Espacio para el botón -->
<span>Ámbito</span> <span>At.</span> <span>Bs</span> <span>Nv</span> <span>Tot</span></div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_secundaria_1" class="sheet-skill-roll-btn">t</button>
<span><input type="text" name="attr_secundaria_1_nombre" placeholder="Hab..." class="sheet-text-line"></span>
<span><input type="text" name="attr_secundaria_1_atributo" placeholder="Atr..." class="sheet-text-line"></span>
<input type="number" name="attr_secundaria_1_base" readonly>
<input type="number" name="attr_secundaria_1_nivel">
<input type="number" name="attr_secundaria_1_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_secundaria_2" class="sheet-skill-roll-btn">t</button>
<span><input type="text" name="attr_secundaria_2_nombre" placeholder="Hab..." class="sheet-text-line"></span>
<span><input type="text" name="attr_secundaria_2_atributo" placeholder="Atr..." class="sheet-text-line"></span>
<input type="number" name="attr_secundaria_2_base" readonly>
<input type="number" name="attr_secundaria_2_nivel">
<input type="number" name="attr_secundaria_2_total" readonly class="sheet-total-box">
</div>
<div class="sheet-skill-row">
<button type="action" name="act_roll_secundaria_3" class="sheet-skill-roll-btn">t</button>
<span><input type="text" name="attr_secundaria_3_nombre" placeholder="Hab..." class="sheet-text-line"></span>
<span><input type="text" name="attr_secundaria_3_atributo" placeholder="Atr..." class="sheet-text-line"></span>
<input type="number" name="attr_secundaria_3_base" readonly>
<input type="number" name="attr_secundaria_3_nivel">
<input type="number" name="attr_secundaria_3_total" readonly class="sheet-total-box">
</div>
</div>
</div>
</div>
</div> </div> </div>
<div class="sheet-page-container sheet-page-2">
<div class="sheet-page2-grid">
<div class="sheet-armamento-col">
<div class="sheet-rasgos-row">
<div class="sheet-rasgo-container">
<h3 class="sheet-full-width-title" style="text-align: center; margin-top: 0;">VIRTUDES</h3>
<fieldset class="repeating_virtudes">
<div class="sheet-rasgo-row">
<input type="text" name="attr_virtud_nombre" placeholder="Virtud...">
</div>
</fieldset>
</div>
<div class="sheet-rasgo-container">
<h3 class="sheet-full-width-title" style="text-align: center; margin-top: 0;">DEFECTOS</h3>
<fieldset class="repeating_defectos">
<div class="sheet-rasgo-row">
<input type="text" name="attr_defecto_nombre" placeholder="Defecto...">
</div>
</fieldset>
</div>
</div>
<h3 class="sheet-full-width-title" style="text-align: center; margin-top: 0;">ARMAMENTO</h3>
<div class="sheet-armamento-container">
<div class="sheet-armamento-header">
<span>Eq.</span>
<span style="text-align: left;">Nombre</span>
<span>Valor</span>
<span>Daño</span>
<span>Parada</span>
<span>Rt.</span>
<span>Res.</span>
<span>Alcance</span>
<span>Peso</span>
<span>Precio</span>
</div>
<fieldset class="repeating_armamento">
<div class="sheet-armamento-row">
<input type="checkbox" name="attr_arma_equipado" value="1" checked>
<input type="text" name="attr_arma_nombre" class="sheet-arma-nombre" placeholder="Ej: Fusil">
<input type="number" name="attr_arma_valor">
<input type="text" name="attr_arma_dano">
<input type="text" name="attr_arma_parada">
<input type="text" name="attr_arma_rt">
<input type="text" name="attr_arma_res">
<div class="sheet-alcance-inputs">
<input type="text" name="attr_arma_alcance_1"> <span>/</span>
<input type="text" name="attr_arma_alcance_2"> <span>/</span>
<input type="text" name="attr_arma_alcance_3"> <span>/</span>
<input type="text" name="attr_arma_alcance_4"> <span>/</span>
<input type="text" name="attr_arma_alcance_5">
</div>
<input type="number" name="attr_arma_peso" step="0.1">
<input type="text" name="attr_arma_precio">
</div>
</fieldset>
</div> <div class="sheet-contactos-equipo-row">
<div class="sheet-equipo-container">
<h3 class="sheet-full-width-title" style="text-align: center;">EQUIPO</h3>
<div class="sheet-equipo-header">
<span>Eq.</span>
<span style="text-align: left;">Nombre</span>
<span>Cant.</span>
<span>Peso</span>
<span>Precio</span>
</div>
<fieldset class="repeating_equipo1">
<div class="sheet-equipo-row">
<input type="checkbox" name="attr_equipo1_equipado" value="1" checked>
<input type="text" name="attr_equipo1_nombre" class="sheet-text-left">
<input type="number" name="attr_equipo1_cantidad">
<input type="number" name="attr_equipo1_peso" step="0.1">
<input type="number" name="attr_equipo1_precio">
</div>
</fieldset>
</div>
<div class="sheet-equipo-container">
<h3 class="sheet-full-width-title" style="text-align: center;">EQUIPO</h3>
<div class="sheet-equipo-header">
<span>Eq.</span>
<span style="text-align: left;">Nombre</span>
<span>Cant.</span>
<span>Peso</span>
<span>Precio</span>
</div>
<fieldset class="repeating_equipo2">
<div class="sheet-equipo-row">
<input type="checkbox" name="attr_equipo2_equipado" value="1" checked>
<input type="text" name="attr_equipo2_nombre" class="sheet-text-left">
<input type="number" name="attr_equipo2_cantidad">
<input type="number" name="attr_equipo2_peso" step="0.1">
<input type="number" name="attr_equipo2_precio">
</div>
</fieldset>
</div>
</div>
<div class="sheet-horizontal-container">
<!-- CAJA DE PESO TOTAL -->
<div class="sheet-status-box sheet-peso-total-box">
<h4 style="font-family: 'Georgia', serif; font-size: 1.1em; letter-spacing: 2px; margin-bottom: 10px;">PESO TOTAL</h4>
<div class="sheet-peso-display">
<input type="number" name="attr_peso_total" value="0" step="0.1" readonly>
<span style="font-family: 'Georgia', serif; font-size: 1.1em;">Kg</span>
</div>
<!-- Lógica de sobrecarga -->
<input type="hidden" name="attr_sobrecarga_status" class="sheet-sobrecarga-toggle" value="0">
<div class="sheet-alert-banner sheet-alert-warning sheet-msg-sobrecarga" style="font-size: 0.9em; padding: 5px; margin-top: 10px;">SOBRECARGADO</div>
</div>
<!-- CAJA DE DINERO (Ahora dentro del mismo contenedor) -->
<div class="sheet-status-box sheet-dinero-box-horizontal">
<h4 style="font-family: 'Georgia', serif; font-size: 1.1em; letter-spacing: 2px; margin-bottom: 10px;">DINERO</h4>
<div class="sheet-dinero-horizontal-container">
<div class="sheet-dinero-item">
<label>Ingresos:</label>
<input type="number" name="attr_dinero_ingresos">
</div>
<div class="sheet-dinero-item">
<label>Ahorros:</label>
<input type="number" name="attr_dinero_ahorros">
</div>
<div class="sheet-dinero-item">
<label>De bolsillo:</label>
<input type="number" name="attr_dinero_bolsillo">
</div>
</div>
</div>
</div>
<div class="sheet-notas-container">
<h4 class="sheet-notas-title">NOTAS</h4>
<textarea name="attr_notas_libres" class="sheet-notas-textarea"></textarea>
</div>
</div>
<div class="sheet-estado-col">
<div class="sheet-status-box sheet-localizaciones-box">
<div class="sheet-loc-zone"><strong>0 Cabeza</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_cabeza_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_cabeza_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_cabeza_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_cabeza_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: +3 a todas las acciones</div>
</div>
<div class="sheet-loc-zone"><strong>1 2 3 Pecho</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_pecho_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_pecho_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_pecho_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_pecho_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: +3 acciones físicas</div>
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_pecho_g" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Grave: +5 acciones físicas</div>
</div>
<div class="sheet-loc-zone"><strong>4 Brazo Dch.</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_brazod_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_brazod_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_brazod_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_brazod_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: +3 acciones brazo derecho</div>
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_brazod_g" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Grave: Brazo inutilizado</div>
</div>
<div class="sheet-loc-zone"><strong>5 Brazo Izq.</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_brazoi_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_brazoi_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_brazoi_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_brazoi_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: +3 acciones brazo izquierdo</div>
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_brazoi_g" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Grave: Brazo inutilizado</div>
</div>
<div class="sheet-loc-zone"><strong>6 7 Abdomen</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_abdomen_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_abdomen_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_abdomen_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_abdomen_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: +3 todas acciones / Movimiento a la mitad</div>
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_abdomen_g" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Grave: DERRIBADO / Sin acciones</div>
</div>
<div class="sheet-loc-zone"><strong>8 Pierna Izq.</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_piernai_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_piernai_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_piernai_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_piernai_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: Desequilibrado(+1GD) / Movimiento a la mitad</div>
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_piernai_g" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Grave: Pierna inutilizada / DERRIBADO</div>
</div>
<div class="sheet-loc-zone"><strong>9 Pierna Dch.</strong></div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">Armadura:</label>
<input type="number" name="attr_loc_piernad_dan">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida leve (<input type="number" name="attr_herida_leve" readonly class="sheet-inline-val">a
<input type="number" name="attr_herida_leve_max" readonly class="sheet-inline-val">):
</label>
<input type="number" name="attr_loc_piernad_heridasL">
</div>
<div class="sheet-loc-row">
<label class="sheet-loc-label-phrase">
Herida grave (<input type="number" name="attr_herida_grave" readonly class="sheet-inline-val">o +):
</label>
<input type="number" name="attr_loc_piernad_heridasG">
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_piernad_l" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Leve: Desequilibrado(+1GD) / Movimiento a la mitad</div>
</div>
<div class="sheet-loc-box-alerts">
<input type="hidden" name="attr_status_piernad_g" class="sheet-toggle" value="0">
<div class="sheet-loc-effect-text sheet-msg-show">Herida Grave: Pierna inutilizada / DERRIBADO</div>
</div>
</div>
</div>
<div class="sheet-estado-col2">
<div class="sheet-status-box">
<h4>PUNTOS DE VIDA</h4>
<div class="sheet-row"> <label>Heridas:</label> <input type="number" name="attr_hp_heridas" value="0"> </div>
<div class="sheet-row"> <label>Golpes:</label> <input type="number" name="attr_hp_golpes" value="0"> </div>
<div class="sheet-row total"> <label>Máximo:</label> <input type="number" name="attr_hp_max" value="0" readonly style="background:#eee;"> </div>
<!-- Lógica de estados de salud -->
<input type="hidden" name="attr_salud_status" class="sheet-health-toggle" value="normal">
<div class="sheet-alert-banner sheet-alert-danger sheet-msg-inconsciente" style="font-size: 0.9em; padding: 5px; margin-top: 10px;">INCONSCIENTE</div>
<div class="sheet-alert-banner sheet-alert-danger sheet-msg-moribundo" style="font-size: 0.9em; padding: 5px; margin-top: 10px;">MORIBUNDO</div>
</div>
<div class="sheet-status-box">
<h4>MARCADOR DE MORAL</h4>
<div class="sheet-row"> <label>Actual:</label> <input type="number" name="attr_moral_actual" value="0"> </div>
</div>
<div class="sheet-status-box">
<h4>MARCADOR DE MANDO</h4>
<div class="sheet-row"> <label>Actual:</label> <input type="number" name="attr_mando_actual" value="0"> </div>
</div>
<div class="sheet-status-box sheet-capacidades-box">
<h4>CAPACIDADES</h4>
<div class="sheet-cap-row"><label>Ajuste por Fuerza (fue-5)</label> <input type="number" name="attr_cap_ajuste_fue" readonly></div>
<div class="sheet-cap-row"><span></span>
<button type="action" name="act_roll_cap_alerta" class="sheet-skill-roll-btn">t</button>
<label>Alerta (3per)</label> <input type="number" name="attr_cap_alerta_total" readonly></div>
<div class="sheet-cap-row"><label>Andar (agi)</label> <span>m/as: <input type="number" name="attr_cap_andar" readonly></span></div>
<div class="sheet-cap-row"><label>Carga (7fue)</label> <span>Kg: <input type="number" name="attr_cap_carga" readonly></span></div>
<div class="sheet-cap-row"><label>Correr (agi+2vel)</label> <span>m/as: <input type="number" name="attr_cap_correr" readonly></span></div>
<div class="sheet-cap-row sheet-cap-sub"><label>Duración Correr (10vit)</label> <span>as: <input type="number" name="attr_cap_duracion_correr" readonly></span></div>
<div class="sheet-cap-row"><span></span>
<button type="action" name="act_roll_cap_esquivar" class="sheet-skill-roll-btn">t</button>
<label>Esquivar (2×agi + vel)</label> <input type="number" name="attr_cap_esquivar_total" readonly></div>
<div class="sheet-cap-row"><label>Iniciativa (vel,agi)</label> <span class="sheet-multi-input">
<input type="number" name="attr_cap_iniciativa_1" readonly> , <input type="number" name="attr_cap_iniciativa_2" readonly></span>
</div>
<div class="sheet-cap-row"><label> Levantar Peso (3carga)</label> <span>Kg: <input type="number" name="attr_cap_lev_peso" readonly></span></div>
<div class="sheet-cap-row"><span></span>
<button type="action" name="act_roll_cap_mando" class="sheet-skill-roll-btn">t</button>
<label>Mando (2vol + inv)</label> <input type="number" name="attr_cap_mando_total" readonly></div>
<div class="sheet-cap-row"><span></span>
<button type="action" name="act_roll_cap_moral" class="sheet-skill-roll-btn">t</button>
<label>Moral (3vol)</label> <input type="number" name="attr_cap_moral_total" readonly></div>
<div class="sheet-cap-row"><label>Resistir Dolor (vol/2)</label> <input type="number" name="attr_cap_resistir_dolor" readonly></div>
<div class="sheet-cap-row"><label>Salto H. (fue+vel/5)</label> <input type="number" name="attr_cap_salto_h" step="0.1" readonly></div>
<div class="sheet-cap-row sheet-cap-sub"><label>arr. (fue/5), abj. (agi/3)</label>
<span class="sheet-multi-input"><input type="number" name="attr_cap_salto_arr" step="0.1" readonly> ,
<input type="number" name="attr_cap_salto_abj" step="0.1" readonly></span>
</div>
<div class="sheet-cap-row"><label>Sprintar (agi+3vel)</label> <span>m/as: <input type="number" name="attr_cap_sprintar" readonly></span></div>
<div class="sheet-cap-row sheet-cap-sub"><label>Duración Sprintar (vit)</label> <span>as:
<input type="number" name="attr_cap_duracion_sprintar" readonly></span>
</div>
<div class="sheet-cap-row"><label>Umbral Mortal (vit)</label> <input type="number" name="attr_cap_umbral_mortal" readonly></div>
</div>
</div>
</div>
</div>
</div>
<script type="text/worker">
const charHierarchy = {
"cuerpo": ["fue", "vit", "res"],
"destreza": ["agi", "coo", "vel"],
"inteligencia": ["mem", "log", "inv"],
"presencia": ["car", "vol", "apa"],
"instinto": ["per", "int", "con"]
};
const normalSkillMap = {
"burocracia": "mem", "callejeo": "int", "camuflar": "inv", "conocimiento": "inv", "descubrir": "per",
"dialectica": "car", "equitacion": "coo", "esconder": "int", "escuchar": "per", "falsificar": "coo",
"geografia": "mem", "lanzar": "fue", "nadar": "agi", "ocultar": "int", "orientacion": "log",
"rastrear": "log", "robar": "coo", "saltar": "agi", "seduccion": "car", "trepar": "agi",
"cerraduras": "coo", "comunicaciones": "con", "explosivos": "log", "ingenios": "inv",
"interrogacion": "vol", "mecanica": "con", "medicina": "mem", "paracaidismo": "agi",
"primeros_auxilios": "int", "quimica": "mem", "pilotar_motos": "coo", "pilotar_coches": "coo",
"pilotar_camiones": "coo", "pilotar_tanques": "coo", "pilotar_cazas": "coo", "pilotar_bombarderos": "coo",
"pilotar_barcas": "coo", "pilotar_buques": "coo", "idioma_1": "mem", "idioma_2": "mem", "idioma_3": "mem",
"pistola": "coo", "fusil": "coo", "bayoneta": "agi", "subfusil": "coo", "ametralladora": "fue",
"lanzallamas": "coo", "lanzagranadas": "fue", "artilleria_campana": "con", "artilleria_pesada": "con",
"armamento_aereo": "con", "armas_arrojadizas": "agi", "armas_blancas": "agi", "armas_contundentes": "agi",
"matar_silencio": "con", "lucha_desarmado": "agi"
};
// Lista de secundarias
const secondarySkills = ["secundaria_1", "secundaria_2", "secundaria_3"];
// Mapeo de texto a atributo real
const attrAlias = {
"fue": "fue", "fuerza": "fue",
"vit": "vit", "vitalidad": "vit",
"res": "res", "resistencia": "res",
"agi": "agi", "agilidad": "agi",
"coo": "coo", "coordinacion": "coo", "coordinación": "coo",
"vel": "vel", "velocidad": "vel",
"per": "per", "percepcion": "per", "percepción": "per",
"int": "int", "intuicion": "int", "intuición": "int",
"con": "con", "concentracion": "con", "concentración": "con",
"mem": "mem", "memoria": "mem",
"log": "log", "logica": "log", "lógica": "log",
"inv": "inv", "inventiva": "inv",
"car": "car", "carisma": "car",
"vol": "vol", "voluntad": "vol",
"apa": "apa", "apariencia": "apa"
};
const characteristics = Object.keys(charHierarchy);
const attributes = Object.values(charHierarchy).flat();
const normalSkills = Object.keys(normalSkillMap);
// Eventos: ahora escuchamos también cambios en los nombres de atributo de las secundarias
const secEvents = secondarySkills.map(s => `change:${s}_atributo change:${s}_nivel`).join(" ");
on(`change:nivel_social ${characteristics.map(c => `change:${c}`).join(" ")} ${attributes.map(a => `change:${a}`).join(" ")} ${normalSkills.map(s => `change:${s}_nivel`).join(" ")} ${secEvents} sheet:opened`, () => {
const secAttrsToGet = [];
secondarySkills.forEach(s => {
secAttrsToGet.push(`${s}_atributo`, `${s}_nivel`);
});
getAttrs(["nivel_social", "moral_actual", ...characteristics, ...attributes, ...normalSkills.map(s => `${s}_nivel`), ...secAttrsToGet], (values) => {
const update = {};
const finalAttrs = {};
// 1. Calcular Atributos (limitados por característica)
characteristics.forEach(charName => {
const charValue = parseInt(values[charName]) || 5;
charHierarchy[charName].forEach(attrName => {
let attrValue = parseInt(values[attrName]) || 5;
if (attrValue > charValue) {
attrValue = charValue;
update[attrName] = charValue;
}
finalAttrs[attrName] = attrValue;
});
});
const restrictedSkills = [
"equitacion", "falsificar", "nadar", "cerraduras", "comunicaciones",
"explosivos", "mecanica", "medicina", "paracaidismo", "quimica",
"pilotar_motos", "pilotar_coches", "pilotar_camiones", "pilotar_tanques",
"pilotar_cazas", "pilotar_bombarderos", "pilotar_barcas", "pilotar_buques",
"idioma_1", "idioma_2", "idioma_3", "pistola", "fusil", "bayoneta",
"subfusil", "ametralladora", "lanzallamas", "lanzagranadas",
"artilleria_campana", "artilleria_pesada", "armamento_aereo", "matar_silencio"
];
const relatedGroups = [
["pilotar_motos", "pilotar_coches", "pilotar_camiones"],
["pilotar_cazas", "pilotar_bombarderos"],
["fusil", "bayoneta"],
["subfusil", "ametralladora"]
];
// 2. Habilidades Normales
normalSkills.forEach(skillName => {
const governingAttr = normalSkillMap[skillName];
const attrVal = finalAttrs[governingAttr] || 0;
const level = parseInt(values[`${skillName}_nivel`]) || 0;
update[`${skillName}_base`] = attrVal;
update[`${skillName}_total`] = attrVal + level;
// LÓGICA DE RELACIONADAS
// Comprobamos si esta habilidad pertenece a algún grupo
let groupIsTrained = false;
const group = relatedGroups.find(g => g.includes(skillName));
if (group) {
// Si pertenece a un grupo, miramos si ALGUIEN en el grupo tiene nivel > 0
groupIsTrained = group.some(s => (parseInt(values[`${s}_nivel`]) || 0) > 0);
}
// APLICAR RESTRICCIÓN
// Una habilidad restringida funciona si:
// a) Ella misma tiene nivel > 0
// b) Pertenece a un grupo donde otra tiene nivel > 0 (Relacionada)
// c) NO es una habilidad restringida (RestrictedSkills ya lo definimos antes)
const isRestricted = restrictedSkills.includes(skillName);
if (isRestricted && level === 0 && !groupIsTrained) {
update[`${skillName}_total`] = 0;
} else {
update[`${skillName}_total`] = attrVal + level;
}
});
// 3. LÓGICA PARA SECUNDARIAS
secondarySkills.forEach(s => {
const rawInput = (values[`${s}_atributo`] || "").toLowerCase().trim();
const level = parseInt(values[`${s}_nivel`]) || 0;
// Buscamos si el texto introducido coincide con nuestro mapa de alias
const targetAttr = attrAlias[rawInput];
if (targetAttr && finalAttrs[targetAttr]) {
const attrVal = finalAttrs[targetAttr];
update[`${s}_base`] = attrVal;
update[`${s}_total`] = attrVal + level;
} else {
// Si no hay atributo válido, la base es 0
update[`${s}_base`] = 0;
update[`${s}_total`] = level;
}
});
// --- CÁLCULO DE CAPACIDADES ---
// 1. Extraemos los atributos necesarios (si no existen, valen 0)
let fue = finalAttrs.fue || 0;
let inv = finalAttrs.inv || 0;
let per = finalAttrs.per || 0;
let agi = finalAttrs.agi || 0;
let vel = finalAttrs.vel || 0;
let vit = finalAttrs.vit || 0;
let vol = finalAttrs.vol || 0;
let res = finalAttrs.res || 0;
// 2. Aplicamos las fórmulas
update["hp_max"] = res * 3;
update["herida_leve"] = res + 1;
update["herida_leve_max"] = res * 2;
update["herida_grave"] = res * 2 + 1;
update["cap_ajuste_fue"] = fue - 5;
update["cap_alerta_total"] = 3 * per;
update["cap_andar"] = agi;
update["cap_carga"] = 7 * fue;
update["cap_correr"] = agi + (2 * vel);
update["cap_duracion_correr"] = 10 * vit;
update["cap_esquivar_total"] = (2 * agi) + vel;
update["cap_iniciativa_1"] = vel;
update["cap_iniciativa_2"] = agi;
update["cap_lev_peso"] = 21 * fue;
update["cap_mando_total"] = (2 * vol) + inv;
update["cap_moral_total"] = (3 * vol);
// Redondeo hacia abajo para Resistir Dolor (lo habitual en manuales)
update["cap_resistir_dolor"] = Math.floor(vol / 2);
// Saltos: Permitimos un decimal (ej: 2.4) para mayor precisión al dividir
update["cap_salto_h"] = parseFloat(((fue + vel) / 5).toFixed(1));
update["cap_salto_arr"] = parseFloat((fue / 5).toFixed(1));
update["cap_salto_abj"] = parseFloat((agi / 3).toFixed(1));
update["cap_sprintar"] = agi + (3 * vel);
update["cap_duracion_sprintar"] = vit;
update["cap_umbral_mortal"] = vit;
setAttrs(update, {silent: true});
});
});
/* === LÓGICA INTEGRADA DE SALUD, LOCALIZACIÓN Y SANGRADO === */
const bodyParts = ['cabeza', 'pecho', 'brazod', 'brazoi', 'abdomen', 'piernai', 'piernad'];
on(`change:hp_heridas change:hp_golpes change:hp_max ${bodyParts.map(p => `change:loc_${p}_heridasL change:loc_${p}_heridasG`).join(" ")}`, () => {
const fields = ['hp_heridas', 'hp_golpes', 'hp_max'];
bodyParts.forEach(p => fields.push(`loc_${p}_heridasL`, `loc_${p}_heridasG`));
getAttrs(fields, (v) => {
const update = {};
const heridas = parseInt(v.hp_heridas) || 0;
const golpes = parseInt(v.hp_golpes) || 0;
const max = parseInt(v.hp_max) || 0;
const dmgTotal = heridas + golpes;
let totalHeridasLeves = 0;
let anyG = false;
// Procesar cada parte del cuerpo
bodyParts.forEach(p => {
const valL = parseInt(v[`loc_${p}_heridasL`]) || 0;
const valG = parseInt(v[`loc_${p}_heridasG`]) || 0;
update[`status_${p}_l`] = (valL > 0) ? "1" : "0";
update[`status_${p}_g`] = (valG > 0) ? "1" : "0";
totalHeridasLeves += valL;
if (valG > 0) anyG = true;
});
// Lógica de Sangrado
if (totalHeridasLeves === 0) {
update['sangrado_l_status'] = "0";
} else if (totalHeridasLeves === 1) {
update['sangrado_l_status'] = "1";
} else if (totalHeridasLeves === 2) {
update['sangrado_l_status'] = "2";
} else {
update['sangrado_l_status'] = "3plus"; // Si hay 3 o más
}
update['sangrado_g_status'] = anyG ? "1" : "0";
// Lógica de Salud Principal
let status = "normal";
// Cabeza Grave también causa Inconsciencia
const cabezaGrave = parseInt(v.loc_cabeza_heridasG) || 0;
if (heridas >= max && max > 0) {
status = "moribundo";
} else if ((dmgTotal >= max && max > 0) || cabezaGrave > 0) {
status = "inconsciente";
}
update["salud_status"] = status;
setAttrs(update);
});
});
/* === CÁLCULO DE PESO TOTAL CON FILTRO DE EQUIPADO === */
const updateWeight = () => {
getSectionIDs('repeating_armamento', (armIds) => {
getSectionIDs('repeating_equipo1', (eq1Ids) => {
getSectionIDs('repeating_equipo2', (eq2Ids) => {
let fields = [];
// Pedimos tanto el peso como el estado del checkbox
armIds.forEach(id => fields.push(`repeating_armamento_${id}_arma_peso`, `repeating_armamento_${id}_arma_equipado`));
eq1Ids.forEach(id => fields.push(`repeating_equipo1_${id}_equipo1_peso`, `repeating_equipo1_${id}_equipo1_equipado`));
eq2Ids.forEach(id => fields.push(`repeating_equipo2_${id}_equipo2_peso`, `repeating_equipo2_${id}_equipo2_equipado`));
getAttrs(fields, (values) => {
let total = 0;
// Sumar Armamento
armIds.forEach(id => {
const isEquipped = values[`repeating_armamento_${id}_arma_equipado`] === "1";
if (isEquipped) {
total += parseFloat(values[`repeating_armamento_${id}_arma_peso`]) || 0;
}
});
// Sumar Equipo 1
eq1Ids.forEach(id => {
const isEquipped = values[`repeating_equipo1_${id}_equipo1_equipado`] === "1";
if (isEquipped) {
// Si tienes cantidad, podrías multiplicar peso * cantidad aquí
total += parseFloat(values[`repeating_equipo1_${id}_equipo1_peso`]) || 0;
}
});
// Sumar Equipo 2
eq2Ids.forEach(id => {
const isEquipped = values[`repeating_equipo2_${id}_equipo2_equipado`] === "1";
if (isEquipped) {
total += parseFloat(values[`repeating_equipo2_${id}_equipo2_peso`]) || 0;
}
});
setAttrs({ peso_total: total.toFixed(1) });
});
});
});
});
};
// Actualizamos los listeners para que también escuchen el cambio en el checkbox "_equipado"
on('change:repeating_armamento:arma_peso change:repeating_armamento:arma_equipado ' +
'change:repeating_equipo1:equipo1_peso change:repeating_equipo1:equipo1_equipado ' +
'change:repeating_equipo2:equipo2_peso change:repeating_equipo2:equipo2_equipado ' +
'remove:repeating_armamento remove:repeating_equipo1 remove:repeating_equipo2', updateWeight);
/* === LÓGICA DE SOBRECARGA === */
on('change:peso_total change:cap_carga', () => {
getAttrs(['peso_total', 'cap_carga'], (v) => {
const peso = parseFloat(v.peso_total) || 0;
const carga = parseFloat(v.cap_carga) || 0;
// Si el peso es mayor que la carga, status = 1, si no 0
const status = (peso > carga) ? "1" : "0";
setAttrs({
sobrecarga_status: status
});
});
});
// Listeners para detectar cambios en las filas o si se borra una fila
on('change:repeating_armamento:arma_peso change:repeating_equipo1:equipo1_peso change:repeating_equipo2:equipo2_peso remove:repeating_armamento remove:repeating_equipo1 remove:repeating_equipo2', updateWeight);
// === TIRADA SOMBRA ACTUALIZADA CON CRÍTICOS Y ESPECIALES ===
// LISTA DE HABILIDADES (Asegúrate de que los nombres coincidan con los de tus botones act_roll_XXX)
// 1. ATRIBUTOS (Se tiran multiplicando el valor por 3)
const attrsWithButtons = [
"fue", "vit", "res", "agi", "coo", "vel",
"per", "con", "int", "mem", "log", "inv",
"car", "vol", "apa"
];
// 2. HABILIDADES (Se tiran usando el valor _total)
const skillsWithButtons = [
// Básicas
"burocracia", "callejeo", "camuflar", "conocimiento", "descubrir",
"dialectica", "equitacion", "esconder", "escuchar", "falsificar",
"geografia", "lanzar", "nadar", "ocultar", "orientacion",
"rastrear", "robar", "saltar", "seduccion", "trepar",
// Especiales
"cerraduras", "comunicaciones", "explosivos", "ingenios",
"interrogacion", "mecanica", "medicina", "paracaidismo",
"primeros_auxilios", "quimica", "pilotar_motos", "pilotar_coches",
"pilotar_camiones", "pilotar_tanques", "pilotar_cazas",
"pilotar_bombarderos", "pilotar_barcas", "pilotar_buques",
"idioma_1", "idioma_2", "idioma_3",
// Combate
"pistola", "fusil", "bayoneta", "subfusil", "ametralladora",
"lanzallamas", "lanzagranadas", "artilleria_campana",
"artilleria_pesada", "armamento_aereo", "armas_arrojadizas",
"armas_blancas", "armas_contundentes", "matar_silencio",
"lucha_desarmado",
// Secundarias
"secundaria_1", "secundaria_2", "secundaria_3",
// Capacidades (que tienen botón de tirada)
"cap_alerta", "cap_esquivar", "cap_mando", "cap_moral"
];
/* --- LISTENERS ACTUALIZADOS --- */
// Para las Habilidades
skillsWithButtons.forEach(skill => {
on(`clicked:roll_${skill}`, () => {
// Pedimos el total de la habilidad Y la moral actual
getAttrs([`${skill}_total`, "moral_actual"], (v) => {
const val = parseInt(v[`${skill}_total`]) || 0;
const moral = parseInt(v["moral_actual"]) || 0;
executeShadowRoll(val, skill.toUpperCase(), moral);
});
});
});
// Para los Atributos
attrsWithButtons.forEach(attr => {
on(`clicked:roll_${attr}`, () => {
getAttrs([attr, "moral_actual"], (v) => {
const val = (parseInt(v[attr]) || 0) * 3;
const moral = parseInt(v["moral_actual"]) || 0;
executeShadowRoll(val, attr.toUpperCase(), moral);
});
});
});
// Para el botón de Tirada Manual
on('clicked:roll_sombra', () => {
getAttrs(["moral_actual"], (v) => {
const moral = parseInt(v["moral_actual"]) || 0;
executeShadowRoll(null, "MANUAL", moral);
});
});
/* --- FUNCIÓN executeShadowRoll ACTUALIZADA CON TÍTULO DINÁMICO --- */
function executeShadowRoll(skillValue, label, moralActual) {
const habValue = (skillValue === null) ? "?{Valor de la Habilidad|10}" : skillValue;
// Si la etiqueta llega vacía por algún motivo, usamos un texto por defecto
const titulo = label ? label.toUpperCase() : "TIRADA SOMBRA";
// Aquí es donde insertamos moralActual como valor por defecto en el Query ?{...|valor}
const rollCmd = `&{template:tirada_sombra} {{nombre_tirada=${titulo}}} {{habilidad_valor=[[${habValue}]]}} {{modificador=[[?{Modificador a la Tirada |${moralActual}}]]}} {{mostrar_dano=[[?{¿Mostrar daño?|No,0|Tipo 0,1|Tipo I,2|Tipo II,3|Tipo III,4|Tipo IV (Área/Metralla),5|Tipo V (Fragmentación),6}]]}} {{modificador_dano=[[?{Modificador al Daño (+ sumar, - restar)|0}]]}} {{dsombra=[[1d10]]}} {{d1=[[1d10]]}} {{d2=[[1d10]]}} {{total_final=[[0]]}} {{sombra=[[0]]}} {{mayor=[[0]]}} {{menor=[[0]]}} {{tipo_resultado=[[0]]}} {{dano_titulo=[[0]]}} {{num_hits=[[0]]}} {{dano_total_suma=[[0]]}} {{l0_n=[[0]]}} {{l0_d=[[0]]}} {{l1_n=[[0]]}} {{l1_d=[[0]]}} {{l2_n=[[0]]}} {{l2_d=[[0]]}} {{l3_n=[[0]]}} {{l3_d=[[0]]}} {{l4_n=[[0]]}} {{l4_d=[[0]]}} {{l5_n=[[0]]}} {{l5_d=[[0]]}} {{l6_n=[[0]]}} {{l6_d=[[0]]}} {{l7_n=[[0]]}} {{l7_d=[[0]]}} {{l8_n=[[0]]}} {{l8_d=[[0]]}} {{l9_n=[[0]]}} {{l9_d=[[0]]}}`;
startRoll(rollCmd, (results) => {
const vSombraRaw = results.results.dsombra.result;
const v1 = results.results.d1.result;
const v2 = results.results.d2.result;
const vHab = results.results.habilidad_valor.result;
const vMod = results.results.modificador.result;
const choiceDano = results.results.mostrar_dano.result;
const vModDano = results.results.modificador_dano.result;
const dL = vSombraRaw === 10 ? 0 : vSombraRaw;
const normD1 = v1 === 10 ? 0 : v1;
const normD2 = v2 === 10 ? 0 : v2;
const vMayor = Math.max(v1, v2);
const vMenor = Math.min(v1, v2);
const tSum = vMayor + vMenor;
const totalConMod = vSombraRaw + v1 + v2 + vMod;
const esExito = totalConMod <= vHab;
const triple = (vSombraRaw === v1 && v1 === v2);
const sumaDano = v1 + v2;
let status = 0;
if (esExito) {
if (triple) {
status = 2; // Éxito Crítico (Triple)
} else if (sumaDano >= 5) {
status = 4; // Éxito Medio
} else {
status = 5; // Éxito Bajo
}
} else {
if (triple) {
status = 3; // Pifia (Triple)
} else if (sumaDano <= 4) {
status = 6; // Fracaso Bajo
} else {
status = 7; // Fracaso Medio
}
}
const getLocName = (v) => {
if (v === 0) return "CABEZA";
if (v >= 1 && v <= 3) return "PECHO";
if (v === 4) return "BRAZO DCH.";
if (v === 5) return "BRAZO IZQ.";
if (v >= 6 && v <= 7) return "ABDOMEN";
if (v === 8) return "PIERNA IZQ.";
if (v === 9) return "PIERNA DCH.";
return "CUERPO";
};
const calcDano = (baseDmg) => Math.max(0, baseDmg + vModDano);
let finishData = {
total_final: totalConMod, sombra: vSombraRaw, mayor: vMayor, menor: vMenor,
tipo_resultado: status, dano_titulo: " ", num_hits: 0, dano_total_suma: 0
};
for(let i=0; i<10; i++) { finishData[`l${i}_n`] = " "; finishData[`l${i}_d`] = 0; }
if (choiceDano > 0) {
let locs = [];
if (choiceDano === 1) { finishData.dano_titulo = "TIPO 0"; locs.push({n: getLocName(dL), d: calcDano(vMenor)}); }
else if (choiceDano === 2) { finishData.dano_titulo = "TIPO I"; locs.push({n: getLocName(dL), d: calcDano(vMayor)}); }
else if (choiceDano === 3) { finishData.dano_titulo = "TIPO II"; locs.push({n: getLocName(dL), d: calcDano(tSum)}); }
else if (choiceDano === 4) { finishData.dano_titulo = "TIPO III"; locs.push({n: getLocName(dL), d: calcDano(tSum * 2)}); }
else if (choiceDano === 5) {
finishData.dano_titulo = `TIPO IV (Área - ${vMenor} locs)`;
let secuencia = [0, 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9];
let hits = [];
for (let i = 0; i < secuencia.length; i++) {
let locCandidata = dL + secuencia[i];
if (locCandidata >= 0 && locCandidata <= 9) {
if (!hits.includes(locCandidata)) hits.push(locCandidata);
}
if (hits.length === vMenor) break;
}
hits.forEach((l, index) => {
let baseD = (index === 0) ? tSum : (index < 3 ? vMayor : vMenor);
locs.push({n: getLocName(l), d: calcDano(baseD)});
});
}
else if (choiceDano === 6) {
finishData.dano_titulo = "TIPO V (Fragmentación)";
[dL, normD1, normD2].forEach(l => {
locs.push({n: getLocName(l), d: calcDano(tSum)});
});
}
// Guardamos localizaciones e instanciamos la suma total
finishData.num_hits = locs.length;
let sumaTemporal = 0;
locs.forEach((loc, index) => {
finishData[`l${index}_n`] = loc.n;
finishData[`l${index}_d`] = loc.d;
sumaTemporal += loc.d;
});
// Si es un daño múltiple (IV o V), pasamos la suma total a la plantilla
if (choiceDano === 5 || choiceDano === 6) {
finishData.dano_total_suma = sumaTemporal;
}
}
// 2. FINALIZACIÓN
finishRoll(results.rollId, finishData);
});
}
</script>
<!-- PLANTILLA TIRADA PRINCIPAL -->
<rolltemplate class="sheet-rolltemplate-tirada_sombra">
<div class="sheet-rt-card">
<div class="sheet-rt-header">{{nombre_tirada}}</div>
<div class="sheet-rt-row"><span>Habilidad:</span><span>{{habilidad_valor}}</span></div>
<div class="sheet-rt-row"><span>Modificador:</span><span>{{modificador}}</span></div>
<div class="sheet-rt-row sheet-shadow-row"><span>Total:</span><span class="sheet-value sheet-main-value">{{computed::total_final}}</span></div>
<div class="sheet-rt-row"><span>Dado Sombra:</span><span>{{computed::sombra}}</span></div>
<div class="sheet-rt-row"><span>Dado D+:</span><span>{{computed::mayor}}</span></div>
<div class="sheet-rt-row"><span>Dado D-:</span><span>{{computed::menor}}</span></div>
<div class="sheet-rt-result-box">
<!-- ÉXITOS -->
{{#rollTotal() computed::tipo_resultado 2}}<div class="sheet-rt-msg-critico">¡ÉXITO CRÍTICO!</div>{{/rollTotal() computed::tipo_resultado 2}}
{{#rollTotal() computed::tipo_resultado 4}}<div class="sheet-rt-msg-exito">ÉXITO MEDIO</div>{{/rollTotal() computed::tipo_resultado 4}}
{{#rollTotal() computed::tipo_resultado 5}}<div class="sheet-rt-msg-exito" style="color: #7fb3d5;">ÉXITO BAJO</div>{{/rollTotal() computed::tipo_resultado 5}}
<!-- FALLOS -->
{{#rollTotal() computed::tipo_resultado 3}}<div class="sheet-rt-msg-pifia">¡PÍFIA!</div>{{/rollTotal() computed::tipo_resultado 3}}
{{#rollTotal() computed::tipo_resultado 6}}<div class="sheet-rt-msg-fallo" style="color: #e59866;">FRACASO BAJO</div>{{/rollTotal() computed::tipo_resultado 6}}
{{#rollTotal() computed::tipo_resultado 7}}<div class="sheet-rt-msg-fallo">FRACASO MEDIO</div>{{/rollTotal() computed::tipo_resultado 7}}
</div>
{{#rollGreater() mostrar_dano 0}}
<div style="border-top: 2px solid #2c3e50; margin-top: 5px; background: #fdfaf4;">
<div style="background: #630d0d; color: white; text-align: center; font-weight: bold; padding: 4px; font-size: 0.9em; letter-spacing: 1px;">
IMPACTO: {{computed::dano_titulo}}
</div>
{{#rollGreater() computed::num_hits 0}}<div class="sheet-rt-row" style="background: #ece0d1;"><span>{{computed::l0_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l0_d}}</span></div>{{/rollGreater() computed::num_hits 0}}
{{#rollGreater() computed::num_hits 1}}<div class="sheet-rt-row"><span>{{computed::l1_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l1_d}}</span></div>{{/rollGreater() computed::num_hits 1}}
{{#rollGreater() computed::num_hits 2}}<div class="sheet-rt-row"><span>{{computed::l2_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l2_d}}</span></div>{{/rollGreater() computed::num_hits 2}}
{{#rollGreater() computed::num_hits 3}}<div class="sheet-rt-row"><span>{{computed::l3_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l3_d}}</span></div>{{/rollGreater() computed::num_hits 3}}
{{#rollGreater() computed::num_hits 4}}<div class="sheet-rt-row"><span>{{computed::l4_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l4_d}}</span></div>{{/rollGreater() computed::num_hits 4}}
{{#rollGreater() computed::num_hits 5}}<div class="sheet-rt-row"><span>{{computed::l5_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l5_d}}</span></div>{{/rollGreater() computed::num_hits 5}}
{{#rollGreater() computed::num_hits 6}}<div class="sheet-rt-row"><span>{{computed::l6_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l6_d}}</span></div>{{/rollGreater() computed::num_hits 6}}
{{#rollGreater() computed::num_hits 7}}<div class="sheet-rt-row"><span>{{computed::l7_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l7_d}}</span></div>{{/rollGreater() computed::num_hits 7}}
{{#rollGreater() computed::num_hits 8}}<div class="sheet-rt-row"><span>{{computed::l8_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l8_d}}</span></div>{{/rollGreater() computed::num_hits 8}}
{{#rollGreater() computed::num_hits 9}}<div class="sheet-rt-row"><span>{{computed::l9_n}}</span><span class="sheet-value" style="color: #630d0d;">{{computed::l9_d}}</span></div>{{/rollGreater() computed::num_hits 9}}
{{#rollGreater() computed::dano_total_suma 0}}
<div class="sheet-rt-row" style="background: #e6b8b8; border-top: 1px solid #630d0d;">
<span style="font-weight: bold; color: #630d0d;">DAÑO TOTAL:</span>
<span class="sheet-value" style="color: #630d0d; font-weight: bold; font-size: 1.2em;">{{computed::dano_total_suma}}</span>
</div>
{{/rollGreater() computed::dano_total_suma 0}}
</div>
{{/rollGreater() mostrar_dano 0}}
</div>
</rolltemplate>