Files
slazero2/templates/actor/character-sheet-mk1.hbs
T
tevansandClaude Fable 5 9d0146caa8 v2.0.1 — evaluation cycle 1 fixes
- CRITICAL: dsnSafeShow() guard on all 7 Dice So Nice awaits — a stalled DSN
  animation froze the whole roll pipeline (attack charged Bullet Tax but never
  posted its card). Rolls now always complete within 3.5s of a DSN stall.
- RULES: racial Health/Resolve modifiers were silently dropped at runtime
  (RACE_DERIVED_MODS all zeros + three inconsistent race key sets). Canonical
  race keys via canonicalRaceKey(); Stormer +2 HP, Ebon/Wraith +1 RES,
  Shaktar/Frother +1 HP, Frother/Vevaphon -1 RES now actually apply.
- Sheet race dropdown matched 'wraith' but actors store 'wraithraider' —
  showed '-- SELECT --' for every Wraith Raider. Fixed across all sheets.
- Natural weapons (Wraith Teeth & Claw, Morphic Strike…) now appear in the
  Equipment tab's Melee Weapons list with a STRIKE button.
- PC wizard: unspent attribute/skill points now require a second click with
  an explicit '<N> points unspent — Next anyway?' prompt.
- First-run world setup: branded 'Mort — Downtown Grid' landing scene (user's
  SLA neon art) + 'START HERE' GM briefing journal on first GM login.
- Removed Blade Runner splash/banner art (wrong game, third-party trademark).
- CSS: push button no longer wraps mid-word; dice flow layout; GM toolbar
  chips unified into the v2 chrome; natural-weapon row accent.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 15:47:35 +01:00

795 lines
36 KiB
Handlebars
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.
<form class="{{cssClass}} slazero2" autocomplete="off">
{{!-- SHEET HEADER --}}
<div class="sheet-header"
>
{{#if drugAlerts.length}}
<div class="drug-alerts">
{{#each drugAlerts}}
<div class="drug-alert {{this.state}}">
<div class="drug-alert-main">
<span class="drug-alert-title">{{this.name}}</span>
<span class="drug-alert-duration">{{this.duration}}</span>
</div>
<div class="drug-alert-meta">{{this.summary}}</div>
<div class="drug-alert-actions">
<button type="button" class="drug-off-btn" data-item-id="{{this.itemId}}" title="Stop Drug Effect">
<i class="fas fa-power-off"></i> Off
</button>
</div>
</div>
{{/each}}
</div>
{{/if}}
{{!-- TOP ROW: Portrait + Name + Key Stats --}}
<div class="header-top-row">
<div class="avatar">
<img class="profile" src="{{actor.img}}" data-edit="img" data-tooltip="{{actor.name}}"/>
</div>
<div class="header-top-info">
<div class="actor-name">
<input type="text" name="name" value="{{actor.name}}" placeholder="Character Name"/>
</div>
<div class="header-top-stats">
<div class="mini-stat">
<span class="mini-stat-label">SCL</span>
<input type="number" name="system.details.scl" value="{{system.details.scl}}" placeholder="10" />
</div>
<div class="mini-stat">
<span class="mini-stat-label">Credits</span>
<input type="number" name="system.details.credits" value="{{system.details.credits}}" placeholder="500" />
</div>
<div class="init-buttons-inline">
<button type="button" class="init-agi" title="Initiative: AGI + Mobility (base score) + roll successes">⚡ AGI+MOB</button>
<button type="button" class="init-wit" title="Initiative: WIT + Observation (base score) + roll successes">⚡ WIT+OBS</button>
</div>
</div>
</div>
</div>
{{!-- CHARACTER DETAILS ROW --}}
<div class="header-details-row">
<div class="detail-field">
<label>Race/Species</label>
<select name="system.race">
<option value="">-- Select --</option>
<option value="human" {{#if (eq system.race "human")}}selected{{/if}}>Human</option>
<option value="ebon" {{#if (eq system.race "ebon")}}selected{{/if}}>Ebon</option>
<option value="brainwaster" {{#if (eq system.race "brainwaster")}}selected{{/if}}>Brain Waster</option>
<option value="stormer" {{#if (eq system.race "stormer")}}selected{{/if}}>Stormer (313 Malice)</option>
<option value="shaktar" {{#if (eq system.race "shaktar")}}selected{{/if}}>Shaktar</option>
<option value="wraithraider" {{#if (contains system.race "wraith")}}selected{{/if}}>Wraith Raider</option>
<option value="frother" {{#if (eq system.race "frother")}}selected{{/if}}>Frother</option>
</select>
</div>
<div class="detail-field">
<label>Training Package</label>
<select name="system.training">
<option value="">-- Select --</option>
<option value="scout" {{#if (eq system.training "scout")}}selected{{/if}}>Scout</option>
<option value="investigator" {{#if (eq system.training "investigator")}}selected{{/if}}>Investigator</option>
<option value="corporate" {{#if (eq system.training "corporate")}}selected{{/if}}>Corporate</option>
<option value="medic" {{#if (eq system.training "medic")}}selected{{/if}}>Medic / Field Surgeon</option>
<option value="ebon-investigator" {{#if (eq system.training "ebon-investigator")}}selected{{/if}}>Ebon - Investigator</option>
<option value="brainwaster-operative" {{#if (eq system.training "brainwaster-operative")}}selected{{/if}}>Brain Waster - Operative</option>
</select>
</div>
<div class="detail-field">
<label>Archetype</label>
<input list="list-of-archetypes" type="text" name="system.archetype" value="{{system.archetype}}" placeholder="Investigator"/>
<datalist id="list-of-archetypes">
<option value="Operative">
<option value="Investigator">
<option value="Scout">
<option value="Medic">
<option value="Tech Specialist">
<option value="Corporate Agent">
</datalist>
</div>
<div class="detail-field armor-roll-field">
<label>Armour</label>
<button type="button" class="manual-armor-button header-armor-roll-btn" data-actor-id="{{actor._id}}" title="Run Armor Check">
<i class="fas fa-shield-alt"></i> Armour Roll
</button>
</div>
</div>
{{!-- VITALS ROW: Health, Resolve, Stress, Ebb --}}
<div class="header-vitals-row">
<div class="vital-box health-box">
<label>Health</label>
<div class="vital-values">
<input type="number" name="system.derivedStats.health.value" value="{{system.derivedStats.health.value}}" />
<span class="vital-separator">/</span>
<input type="number" name="system.derivedStats.health.max" value="{{system.derivedStats.health.max}}" />
</div>
</div>
<div class="vital-box resolve-box">
<label>Resolve</label>
<div class="vital-values">
<input type="number" name="system.derivedStats.resolve.value" value="{{system.derivedStats.resolve.value}}" />
<span class="vital-separator">/</span>
<input type="number" name="system.derivedStats.resolve.max" value="{{system.derivedStats.resolve.max}}" />
</div>
</div>
<div class="vital-box stress-vital">
<label>Stress</label>
<div class="stress-group">
<input type="number" class="stress-value" name="system.derivedStats.stress" value="{{system.derivedStats.stress}}" />
<button type="button" class="manual-panic-button" data-actor-id="{{actor._id}}" title="Roll Panic Check (1d6 + Stress)">
<i class="fas fa-skull"></i> Panic
</button>
</div>
</div>
{{#if isEbbUser}}
<div class="vital-box flux-vital">
<label>Flux</label>
<div class="vital-values">
<input type="number" name="system.flux.value" value="{{system.flux.value}}" min="0" max="{{computedFluxMax}}" class="flux-current" />
<span class="vital-separator">/</span>
<span class="flux-max-display">{{computedFluxMax}}</span>
</div>
</div>
{{/if}}
</div>
{{!-- CRITICAL INJURIES ROW --}}
<div class="header-crits-row">
<div class="crit-buttons">
<button type="button" class="roll-physical-crit-btn" data-actor-id="{{actor._id}}" title="Roll Physical Critical (D66) - When Health = 0">
<i class="fas fa-heart-broken"></i> Physical Critical
</button>
<button type="button" class="roll-mental-crit-btn" data-actor-id="{{actor._id}}" title="Roll Mental Critical (D66) - When Resolve = 0">
<i class="fas fa-brain"></i> Mental Critical
</button>
</div>
{{!-- Active injuries display --}}
{{#if system.criticalInjuries.physical.length}}
<div class="active-injuries physical-injuries">
<h4><i class="fas fa-heart-broken"></i> Physical Injuries</h4>
{{#each system.criticalInjuries.physical}}
<div class="injury-item {{#if this.lethal}}lethal-injury{{/if}}">
<div class="injury-header">
<strong>{{this.name}}</strong>
{{#if this.lethal}}<span class="lethal-tag">LETHAL</span>{{/if}}
<button type="button" class="delete-injury-btn" data-injury-type="physical" data-injury-index="{{@index}}" title="Remove Injury">
<i class="fas fa-times"></i>
</button>
</div>
<p class="injury-effects">{{this.effects}}</p>
</div>
{{/each}}
</div>
{{/if}}
{{#if system.criticalInjuries.mental.length}}
<div class="active-injuries mental-injuries">
<h4><i class="fas fa-brain"></i> Mental Injuries</h4>
{{#each system.criticalInjuries.mental}}
<div class="injury-item {{#if this.lethal}}lethal-injury{{/if}}">
<div class="injury-header">
<strong>{{this.name}}</strong>
{{#if this.lethal}}<span class="lethal-tag">LETHAL</span>{{/if}}
<button type="button" class="delete-injury-btn" data-injury-type="mental" data-injury-index="{{@index}}" title="Remove Injury">
<i class="fas fa-times"></i>
</button>
</div>
<p class="injury-effects">{{this.effects}}</p>
</div>
{{/each}}
</div>
{{/if}}
</div>
</div>
{{!-- SHEET TABS --}}
<div class="sheet-tabs">
<a class="item" data-tab="stats">
<i class="fas fa-chart-bar"></i> Stats & Skills
</a>
<a class="item" data-tab="equipment">
<i class="fas fa-briefcase"></i> Equipment
</a>
{{#if isEbbUser}}
<a class="item" data-tab="ebb">
<i class="fas fa-bolt"></i> Ebb
</a>
{{/if}}
<a class="item" data-tab="bio">
<i class="fas fa-user"></i> Biography
</a>
</div>
{{!-- SHEET BODY --}}
<div class="sheet-body">
{{!-- STATS TAB --}}
<div class="tab" data-tab="stats">
<div class="section-header">Attributes & Skills</div>
<div class="attr-skill-table">
{{!-- STRENGTH COLUMN --}}
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Strength</div>
<div class="attr-value-row">
<button type="button" class="attr-btn" data-action="decrement" data-attribute="strength">−</button>
<div class="attr-value">{{system.attributes.strength.value}}</div>
<button type="button" class="attr-btn" data-action="increment" data-attribute="strength">+</button>
<button type="button" class="attr-roll-btn" data-attribute="strength" title="Roll Strength"><i class="fas fa-dice-d6"></i></button>
</div>
<input type="hidden" name="system.attributes.strength.value" value="{{system.attributes.strength.value}}" />
</div>
<div class="skill-row">
<label>Force</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="force" data-attribute="strength"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="force">−</button>
<div class="skill-value">{{system.skills.force.value}}</div>
<button type="button" class="skill-increment" data-skill="force">+</button>
<input type="hidden" name="system.skills.force.value" value="{{system.skills.force.value}}" />
</div>
</div>
<div class="skill-row">
<label>Melee</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="melee" data-attribute="strength"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="melee">−</button>
<div class="skill-value">{{system.skills.melee.value}}</div>
<button type="button" class="skill-increment" data-skill="melee">+</button>
<input type="hidden" name="system.skills.melee.value" value="{{system.skills.melee.value}}" />
</div>
</div>
<div class="skill-row">
<label>Stamina</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="stamina" data-attribute="strength"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="stamina">−</button>
<div class="skill-value">{{system.skills.stamina.value}}</div>
<button type="button" class="skill-increment" data-skill="stamina">+</button>
<input type="hidden" name="system.skills.stamina.value" value="{{system.skills.stamina.value}}" />
</div>
</div>
</div>
{{!-- AGILITY COLUMN --}}
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Agility</div>
<div class="attr-value-row">
<button type="button" class="attr-btn" data-action="decrement" data-attribute="agility">−</button>
<div class="attr-value">{{system.attributes.agility.value}}</div>
<button type="button" class="attr-btn" data-action="increment" data-attribute="agility">+</button>
<button type="button" class="attr-roll-btn" data-attribute="agility" title="Roll Agility"><i class="fas fa-dice-d6"></i></button>
</div>
<input type="hidden" name="system.attributes.agility.value" value="{{system.attributes.agility.value}}" />
</div>
<div class="skill-row">
<label>Marksmanship</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="marksmanship" data-attribute="agility"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="marksmanship">−</button>
<div class="skill-value">{{system.skills.marksmanship.value}}</div>
<button type="button" class="skill-increment" data-skill="marksmanship">+</button>
<input type="hidden" name="system.skills.marksmanship.value" value="{{system.skills.marksmanship.value}}" />
</div>
</div>
<div class="skill-row">
<label>Mobility</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="mobility" data-attribute="agility"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="mobility">−</button>
<div class="skill-value">{{system.skills.mobility.value}}</div>
<button type="button" class="skill-increment" data-skill="mobility">+</button>
<input type="hidden" name="system.skills.mobility.value" value="{{system.skills.mobility.value}}" />
</div>
</div>
<div class="skill-row">
<label>Stealth</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="stealth" data-attribute="agility"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="stealth">−</button>
<div class="skill-value">{{system.skills.stealth.value}}</div>
<button type="button" class="skill-increment" data-skill="stealth">+</button>
<input type="hidden" name="system.skills.stealth.value" value="{{system.skills.stealth.value}}" />
</div>
</div>
</div>
{{!-- WITS COLUMN --}}
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Wits</div>
<div class="attr-value-row">
<button type="button" class="attr-btn" data-action="decrement" data-attribute="wits">−</button>
<div class="attr-value">{{system.attributes.wits.value}}</div>
<button type="button" class="attr-btn" data-action="increment" data-attribute="wits">+</button>
<button type="button" class="attr-roll-btn" data-attribute="wits" title="Roll Wits"><i class="fas fa-dice-d6"></i></button>
</div>
<input type="hidden" name="system.attributes.wits.value" value="{{system.attributes.wits.value}}" />
</div>
<div class="skill-row">
<label>Crafting</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="crafting" data-attribute="wits"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="crafting">−</button>
<div class="skill-value">{{system.skills.crafting.value}}</div>
<button type="button" class="skill-increment" data-skill="crafting">+</button>
<input type="hidden" name="system.skills.crafting.value" value="{{system.skills.crafting.value}}" />
</div>
</div>
<div class="skill-row">
<label>Observation</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="observation" data-attribute="wits"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="observation">−</button>
<div class="skill-value">{{system.skills.observation.value}}</div>
<button type="button" class="skill-increment" data-skill="observation">+</button>
<input type="hidden" name="system.skills.observation.value" value="{{system.skills.observation.value}}" />
</div>
</div>
<div class="skill-row">
<label>Survival</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="survival" data-attribute="wits"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="survival">−</button>
<div class="skill-value">{{system.skills.survival.value}}</div>
<button type="button" class="skill-increment" data-skill="survival">+</button>
<input type="hidden" name="system.skills.survival.value" value="{{system.skills.survival.value}}" />
</div>
</div>
</div>
{{!-- EMPATHY COLUMN --}}
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Empathy</div>
<div class="attr-value-row">
<button type="button" class="attr-btn" data-action="decrement" data-attribute="empathy">−</button>
<div class="attr-value">{{system.attributes.empathy.value}}</div>
<button type="button" class="attr-btn" data-action="increment" data-attribute="empathy">+</button>
<button type="button" class="attr-roll-btn" data-attribute="empathy" title="Roll Empathy"><i class="fas fa-dice-d6"></i></button>
</div>
<input type="hidden" name="system.attributes.empathy.value" value="{{system.attributes.empathy.value}}" />
</div>
<div class="skill-row">
<label>Healing</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="healing" data-attribute="empathy"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="healing">−</button>
<div class="skill-value">{{system.skills.healing.value}}</div>
<button type="button" class="skill-increment" data-skill="healing">+</button>
<input type="hidden" name="system.skills.healing.value" value="{{system.skills.healing.value}}" />
</div>
</div>
<div class="skill-row">
<label>Insight</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="insight" data-attribute="empathy"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="insight">−</button>
<div class="skill-value">{{system.skills.insight.value}}</div>
<button type="button" class="skill-increment" data-skill="insight">+</button>
<input type="hidden" name="system.skills.insight.value" value="{{system.skills.insight.value}}" />
</div>
</div>
<div class="skill-row">
<label>Persuasion</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="persuasion" data-attribute="empathy"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="persuasion">−</button>
<div class="skill-value">{{system.skills.persuasion.value}}</div>
<button type="button" class="skill-increment" data-skill="persuasion">+</button>
<input type="hidden" name="system.skills.persuasion.value" value="{{system.skills.persuasion.value}}" />
</div>
</div>
{{#if isEbbUser}}
<div class="skill-row ebb-skill-row">
<label><i class="fas fa-bolt"></i> Ebb</label>
<div class="skill-controls">
<button type="button" class="skill-roll" data-skill="ebb" data-attribute="empathy" title="Roll Ebb (Empathy + Ebb)"><i class="fas fa-dice-d6"></i></button>
<button type="button" class="skill-decrement" data-skill="ebb">−</button>
<div class="skill-value">{{system.skills.ebb.value}}</div>
<button type="button" class="skill-increment" data-skill="ebb">+</button>
<input type="hidden" name="system.skills.ebb.value" value="{{system.skills.ebb.value}}" />
</div>
</div>
{{/if}}
</div>
</div>
{{!-- Specialties Section --}}
<div class="specialties-section">
<h2 class="section-header">
<i class="fas fa-star"></i> Specialties & Talents
</h2>
<div class="specialty-list">
{{#each specialties}}
<div class="specialty-item" data-item-id="{{this._id}}">
<img class="specialty-img" src="{{this.img}}" width="32" height="32"/>
<div class="specialty-info">
<div class="specialty-name-row">
<span class="specialty-name">{{this.name}}</span>
<span class="specialty-package">{{this.system.package}}</span>
<button type="button" class="delete-specialty-btn" data-item-id="{{this._id}}" title="Remove Specialty">
<i class="fas fa-times"></i>
</button>
</div>
<div class="specialty-effects">{{this.system.effects}}</div>
</div>
</div>
{{/each}}
{{#unless specialties.length}}
<div class="specialty-empty">
<em>Drag specialties from the compendium to add them here.</em>
</div>
{{/unless}}
</div>
</div>
</div>
{{!-- EQUIPMENT TAB --}}
<div class="tab" data-tab="equipment">
{{!-- RANGED WEAPONS --}}
<div class="weapons-section">
<h2 class="section-header"><i class="fas fa-crosshairs"></i> Ranged Weapons</h2>
<div class="weapon-list">
{{#each rangedWeapons}}
<div class="weapon-item" data-item-id="{{this._id}}">
<img class="weapon-img" src="{{this.img}}" width="36" height="36"/>
<div class="weapon-info">
<div class="weapon-name-row">
<span class="weapon-name">{{this.name}}</span>
<span class="weapon-type-badge ranged">{{this.system.weaponType}}</span>
</div>
<div class="weapon-stats-row">
<span class="weapon-stat"><strong>DMG</strong> {{this.system.damage}}</span>
<span class="weapon-stat"><strong>Range</strong> {{this.system.range}}</span>
<span class="weapon-stat"><strong>ROF</strong> {{this.system.rof}}</span>
<span class="weapon-stat"><strong>AP</strong> {{this.system.ap}}</span>
<span class="weapon-stat"><strong>Gear</strong> +{{this.system.gearBonus}}</span>
</div>
</div>
<div class="weapon-ammo-display">
<span class="ammo-count {{#if (eq this.system.ammo 0)}}ammo-empty{{/if}}">{{#if this.system.ammo}}{{this.system.ammo}}{{else}}0{{/if}}</span>
<span class="ammo-separator">/</span>
<span class="ammo-max">{{#if this.system.magazine}}{{this.system.magazine}}{{else}}0{{/if}}</span>
<button type="button" class="weapon-reload-btn" data-item-id="{{this._id}}" title="Reload to full magazine">
<i class="fas fa-redo-alt"></i>
</button>
</div>
<div class="weapon-actions">
<button type="button" class="toggle-equip-btn {{#if this.system.equipped}}equipped{{/if}}" data-item-id="{{this._id}}" title="Toggle Equipped">
<i class="fas fa-hand-paper"></i>
</button>
<button type="button" class="weapon-roll-btn" data-item-id="{{this._id}}" data-weapon-category="ranged" title="Roll Marksmanship + Gear Bonus">
<i class="fas fa-dice-d6"></i>
</button>
<button type="button" class="delete-weapon-btn" data-item-id="{{this._id}}" title="Remove Weapon">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{{/each}}
{{#unless rangedWeapons.length}}
<div class="weapon-empty"><em>Drag ranged weapons from the compendium.</em></div>
{{/unless}}
</div>
</div>
{{!-- MELEE WEAPONS --}}
<div class="weapons-section">
<h2 class="section-header"><i class="fas fa-fist-raised"></i> Melee Weapons</h2>
<div class="weapon-list">
{{#each meleeWeapons}}
<div class="weapon-item" data-item-id="{{this._id}}">
<img class="weapon-img" src="{{this.img}}" width="36" height="36"/>
<div class="weapon-info">
<div class="weapon-name-row">
<span class="weapon-name">{{this.name}}</span>
<span class="weapon-type-badge melee">{{this.system.weaponType}}</span>
</div>
<div class="weapon-stats-row">
<span class="weapon-stat"><strong>DMG</strong> {{this.system.damage}}</span>
<span class="weapon-stat"><strong>AP</strong> {{this.system.ap}}</span>
<span class="weapon-stat"><strong>Gear</strong> +{{this.system.gearBonus}}</span>
</div>
</div>
<div class="weapon-actions">
<button type="button" class="toggle-equip-btn {{#if this.system.equipped}}equipped{{/if}}" data-item-id="{{this._id}}" title="Toggle Equipped">
<i class="fas fa-hand-paper"></i>
</button>
<button type="button" class="weapon-roll-btn" data-item-id="{{this._id}}" data-weapon-category="melee" title="Roll Melee + Gear Bonus">
<i class="fas fa-dice-d6"></i>
</button>
<button type="button" class="delete-weapon-btn" data-item-id="{{this._id}}" title="Remove Weapon">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{{/each}}
{{#unless meleeWeapons.length}}
<div class="weapon-empty"><em>Drag melee weapons from the compendium.</em></div>
{{/unless}}
</div>
</div>
{{!-- ARMOUR --}}
<div class="weapons-section">
<h2 class="section-header"><i class="fas fa-shield-alt"></i> Armour</h2>
<div class="weapon-list">
{{#each armors}}
<div class="weapon-item armor-item" data-item-id="{{this._id}}">
<img class="weapon-img" src="{{this.img}}" width="36" height="36"/>
<div class="weapon-info">
<div class="weapon-name-row">
<span class="weapon-name armor-name">{{this.name}}</span>
<span class="weapon-type-badge">{{this.system.armorDice}}({{this.system.armorAuto}})</span>
</div>
<div class="weapon-stats-row">
<span class="weapon-stat"><strong>Armor</strong> {{this.system.armorDice}}({{this.system.armorAuto}})</span>
<span class="weapon-stat"><strong>Stat</strong> {{#if (gt this.system.statMod 0)}}+{{/if}}{{this.system.statMod}}</span>
<span class="weapon-stat"><strong>Skill</strong> {{#if (gt this.system.skillMod 0)}}+{{/if}}{{this.system.skillMod}}</span>
<span class="weapon-stat"><strong>INIT</strong> {{#if (gt this.system.initiativeMod 0)}}+{{/if}}{{this.system.initiativeMod}}</span>
</div>
<div class="weapon-stats-row">
<span class="weapon-stat"><strong>Stat Ref</strong> {{#if this.system.statModTarget}}{{capitalize this.system.statModTarget}}{{else}}—{{/if}}</span>
<span class="weapon-stat"><strong>Skill Ref</strong> {{#if this.system.skillModTarget}}{{capitalize this.system.skillModTarget}}{{else}}—{{/if}}</span>
</div>
</div>
<div class="weapon-actions">
<button type="button" class="toggle-equip-btn {{#if this.system.equipped}}equipped{{/if}}" data-item-id="{{this._id}}" title="Toggle Equipped">
<i class="fas fa-hand-paper"></i>
</button>
<button type="button" class="armor-roll-btn" data-item-id="{{this._id}}" title="Roll Armor Check for this armour">
<i class="fas fa-shield-alt"></i>
</button>
<button type="button" class="delete-armor-btn" data-item-id="{{this._id}}" title="Remove Armour">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{{/each}}
{{#unless armors.length}}
<div class="weapon-empty"><em>Drag armor items here.</em></div>
{{/unless}}
</div>
</div>
{{!-- GEAR ITEMS --}}
<div class="weapons-section">
<h2 class="section-header"><i class="fas fa-toolbox"></i> Gear Items</h2>
<div class="weapon-list">
{{#each gearItems}}
<div class="weapon-item gear-item" data-item-id="{{this._id}}">
<img class="weapon-img" src="{{this.img}}" width="36" height="36"/>
<div class="weapon-info">
<div class="weapon-name-row">
<span class="weapon-name gear-name">{{this.name}}</span>
<span class="weapon-type-badge">{{#if this.system.quantity}}{{this.system.quantity}}{{else}}1{{/if}}x</span>
</div>
<div class="weapon-stats-row">
<span class="weapon-stat"><strong>Weight</strong> {{#if this.system.weight}}{{this.system.weight}}{{else}}0{{/if}}</span>
<span class="weapon-stat"><strong>INIT</strong> {{#if (gt this.system.initiativeMod 0)}}+{{/if}}{{this.system.initiativeMod}}</span>
</div>
</div>
<div class="weapon-actions">
<button type="button" class="toggle-equip-btn {{#if this.system.equipped}}equipped{{/if}}" data-item-id="{{this._id}}" title="Toggle Equipped">
<i class="fas fa-hand-paper"></i>
</button>
<button type="button" class="delete-gear-btn" data-item-id="{{this._id}}" title="Remove Gear">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{{/each}}
{{#unless gearItems.length}}
<div class="weapon-empty"><em>Drag equipment items here.</em></div>
{{/unless}}
</div>
</div>
{{!-- DRUGS --}}
<div class="weapons-section">
<h2 class="section-header"><i class="fas fa-pills"></i> Drugs</h2>
<div class="weapon-list">
{{#each drugs}}
<div class="weapon-item drug-item {{#if this.system.active}}drug-active{{/if}} {{#if this.system.withdrawalActive}}drug-withdrawal{{/if}}" data-item-id="{{this._id}}">
<img class="weapon-img" src="{{this.img}}" width="36" height="36"/>
<div class="weapon-info">
<div class="weapon-name-row">
<span class="weapon-name drug-name">{{this.name}}</span>
<span class="weapon-type-badge">{{#if this.system.quantity}}{{this.system.quantity}}{{else}}0{{/if}}x</span>
</div>
<div class="weapon-stats-row">
{{#if this.system.active}}
<span class="weapon-stat"><strong>ACTIVE</strong> {{#if this.system.activeDuration}}{{this.system.activeDuration}}{{else}}—{{/if}}</span>
{{/if}}
{{#if this.system.withdrawalActive}}
<span class="weapon-stat"><strong>WITHDRAWAL</strong> {{#if this.system.withdrawalDuration}}{{this.system.withdrawalDuration}}{{else}}—{{/if}}</span>
{{/if}}
{{#unless this.system.active}}
{{#unless this.system.withdrawalActive}}
<span class="weapon-stat"><strong>Status</strong> Inactive</span>
{{/unless}}
{{/unless}}
</div>
</div>
<div class="weapon-actions">
{{#if this.system.active}}
<button type="button" class="drug-off-btn" data-item-id="{{this._id}}" title="Stop Drug and begin withdrawal">
<i class="fas fa-power-off"></i>
</button>
{{else}}
{{#if this.system.withdrawalActive}}
<button type="button" class="drug-clear-withdrawal-btn" data-item-id="{{this._id}}" title="Clear Withdrawal Effect">
<i class="fas fa-ban"></i>
</button>
{{else}}
<button type="button" class="drug-activate-btn" data-item-id="{{this._id}}" title="Activate Drug (consumes 1 dose)">
<i class="fas fa-bolt"></i>
</button>
{{/if}}
{{/if}}
<button type="button" class="delete-drug-btn" data-item-id="{{this._id}}" title="Remove Drug">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{{/each}}
{{#unless drugs.length}}
<div class="weapon-empty"><em>Drag drug items here.</em></div>
{{/unless}}
</div>
</div>
{{!-- GENERAL EQUIPMENT NOTES --}}
<div class="equipment-section">
<h2 class="section-header"><i class="fas fa-briefcase"></i> Equipment Notes</h2>
<div class="editor">
<textarea name="system.equipment" rows="10" placeholder="List armor, gear, consumables, etc...">{{system.equipment}}</textarea>
</div>
</div>
</div>
{{!-- EBB TAB (Ebon / Brain Waster only) --}}
{{#if isEbbUser}}
<div class="tab" data-tab="ebb">
{{!-- FLUX STATUS BAR --}}
<div class="ebb-tab-header">
<div class="ebb-flux-status">
<div class="ebb-flux-label"><i class="fas fa-bolt"></i> FLUX</div>
<div class="ebb-flux-track">
{{!-- NO name attr here — system.flux.value is bound once in Stats tab; duplicate causes "X,X" corruption --}}
<input type="number" value="{{system.flux.value}}" min="0" max="{{computedFluxMax}}" class="ebb-flux-input ebb-flux-mirror"
data-mirrors="system.flux.value" />
<span class="ebb-flux-sep">/</span>
<span class="ebb-flux-max">{{computedFluxMax}}</span>
</div>
<div class="ebb-flux-actions">
<button type="button" class="ebb-flux-recover-btn" title="Recover 1 Flux (stretch rest)">
<i class="fas fa-plus-circle"></i> +1 Flux
</button>
<button type="button" class="ebb-flux-full-btn" title="Restore full Flux (shift rest)">
<i class="fas fa-battery-full"></i> Full Rest
</button>
</div>
</div>
{{!-- EBB SKILL --}}
<div class="ebb-skill-panel">
<div class="ebb-skill-label"><i class="fas fa-dice-d6"></i> Ebb Skill</div>
<div class="ebb-skill-controls">
<button type="button" class="skill-roll ebb-tab-skill-roll" data-skill="ebb" data-attribute="empathy" title="Roll Empathy + Ebb">
<i class="fas fa-dice-d6"></i> Roll
</button>
<button type="button" class="skill-decrement" data-skill="ebb">−</button>
<div class="ebb-skill-value skill-value">{{system.skills.ebb.value}}</div>
<button type="button" class="skill-increment" data-skill="ebb">+</button>
{{!-- NO hidden input here — the Stats tab already binds system.skills.ebb.value --}}
</div>
<div class="ebb-dice-summary">Pool: Empathy {{system.attributes.empathy.value}} + Ebb {{system.skills.ebb.value}}</div>
</div>
</div>
{{!-- FORMULAE LIST --}}
<div class="ebb-formulae-section">
<h2 class="section-header"><i class="fas fa-scroll"></i> Known Formulae
<span class="ebb-formula-count">{{ebbFormulae.length}} known</span>
</h2>
{{!-- Group formulae by discipline --}}
<div class="ebb-formulae-list">
{{#each ebbFormulae}}
<div class="ebb-formula-item" data-item-id="{{this._id}}">
<img class="ebb-formula-icon" src="{{this.img}}" width="40" height="40" title="{{this.system.discipline}}"/>
<div class="weapon-info">
<div class="weapon-name-row">
<span class="weapon-name">{{this.name}}</span>
<span class="weapon-type-badge ebb-discipline-badge ebb-disc-{{this.system.discipline}}">{{this.system.discipline}}</span>
</div>
<div class="weapon-stats-row">
<span class="weapon-stat ebb-flux-cost"><i class="fas fa-bolt"></i> {{this.system.fluxCost}}</span>
<span class="weapon-stat"><strong>SUC</strong> {{this.system.successes}}</span>
{{#if this.system.range}}<span class="weapon-stat"><strong>Range</strong> {{this.system.range}}</span>{{/if}}
{{#if this.system.duration}}<span class="weapon-stat"><strong>Dur</strong> {{this.system.duration}}</span>{{/if}}
</div>
{{#if this.system.effect}}
<div class="ebb-effect-row">
<span class="ebb-effect-text">{{this.system.effect}}</span>
</div>
{{/if}}
</div>
<div class="weapon-actions">
<button type="button" class="ebb-formula-roll-btn" data-item-id="{{this._id}}" title="Use {{this.name}} (costs {{this.system.fluxCost}} Flux)">
<i class="fas fa-bolt"></i>
</button>
<button type="button" class="ebb-formula-edit-btn" data-item-id="{{this._id}}" title="Edit Formula">
<i class="fas fa-edit"></i>
</button>
<button type="button" class="ebb-formula-delete-btn" data-item-id="{{this._id}}" title="Remove Formula">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{{/each}}
{{#unless ebbFormulae.length}}
<div class="weapon-empty">
<em>No formulae known. Drag Ebb items from the world item list.</em>
</div>
{{/unless}}
</div>
</div>
</div>
{{/if}}
{{!-- BIO TAB --}}
<div class="tab" data-tab="bio">
<div class="bio-section">
<h2>Biography</h2>
<h3>Background</h3>
<div class="editor">
<textarea name="system.bio.background" rows="8" placeholder="Character background and history...">{{system.bio.background}}</textarea>
</div>
<h3>Appearance</h3>
<div class="editor">
<textarea name="system.bio.appearance" rows="5" placeholder="Physical description...">{{system.bio.appearance}}</textarea>
</div>
<h3>Personality</h3>
<div class="editor">
<textarea name="system.bio.personality" rows="5" placeholder="Personality traits and behavior...">{{system.bio.personality}}</textarea>
</div>
<h3>Notes</h3>
<div class="editor">
<textarea name="system.bio.notes" rows="6" placeholder="Additional notes...">{{system.bio.notes}}</textarea>
</div>
</div>
</div>
</div>
</form>