Initial commit — full system source + zero-engine-state.md reference

This commit is contained in:
2026-06-01 23:19:46 +01:00
commit 2ebd5803fc
213 changed files with 18559 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
<div class="blade-runner chat-card actor-crit">
<div class="card-content">
<div class="flexrow align-center" style="margin: .5em 0;">
<img src="{{img}}" class="flex-0" style="margin-right: 8px;" width="32" height="32"/>
<div>
<p style="margin: 0;">{{{result}}}</p>
</div>
</div>
</div>
</div>
+38
View File
@@ -0,0 +1,38 @@
<div class="blade-runner chat-card actor-damage">
<div class="card-content">
{{#if (gt damage 0)}}
<p>
{{localize "FLBR.CHAT.DamageDealt" name=name amount=damage}}
{{#if broken}}
<br/>
<span class="broken">
{{#if vroom}}
{{{config.Icons.buttons.pierce}}} {{toUpperCase (localize "FLBR.Wrecked")}}
{{else}}
{{{config.Icons.buttons.lethal}}} {{toUpperCase (localize "FLBR.Broken")}}
{{/if}}
</span>
{{/if}}
</p>
{{else}}
<p>{{localize "FLBR.CHAT.NoDamageDealt" name=name}}</p>
{{/if}}
{{#if armored}}
<hr/>
<p class="hint">
<small>
{{localize "FLBR.CHAT.InitialDamageDealt" damage=initialDamage}}
{{#if (gt damage 0)}}
{{#if (eq damage initialDamage)}}
{{localize "FLBR.CHAT.ArmorNoEffect"}}
{{else}}
{{localize "FLBR.CHAT.ArmorDeflectedDamage" damage=deflectedDamage}}
{{/if}}
{{else}}
{{localize "FLBR.CHAT.ArmorDeflectedAllDamage"}}
{{/if}}
</small>
</p>
{{/if}}
</div>
</div>
+56
View File
@@ -0,0 +1,56 @@
<section data-application-part="character" class="standard-form">
{{#if (eq document.type "character")}}
<fieldset>
<legend>{{localize "FLBR.SHEET_CONFIG.CharacterConfiguration"}}</legend>
<div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.CharacterSubtype"}}</label>
<select name="system.subtype">
{{selectOptions types selected=document.system.subtype localize=true}}
</select>
<p class="hint">{{localize "FLBR.SHEET_CONFIG.CharacterSubtypeHint"}}</p>
</div>
<hr/>
<div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.HealthMaxModifier"}}</label>
<input type="text" name="system.health.mod" value="{{numberFormat document.system.health.mod sign=true}}" data-dtype="Number"{{#unless isGM}} disabled{{/unless}}/>
<p class="hint">{{localize "FLBR.SHEET_CONFIG.HealthMaxModifierHint"}}</p>
</div>
{{!-- <div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.HealthPermanentLoss"}}</label>
<input type="number" name="system.health.permanentLoss" value="{{document.system.health.permanentLoss}}" max="0"{{#unless isGM}} disabled{{/unless}}/>
<p class="hint">{{localize "FLBR.SHEET_CONFIG.HealthPermanentLossHint"}}</p>
</div> --}}
{{#if (eq document.system.subtype "pc")}}
<div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.ResolveMaxModifier"}}</label>
<input type="text" name="system.resolve.mod" value="{{numberFormat document.system.resolve.mod sign=true}}" data-dtype="Number"{{#unless isGM}} disabled{{/unless}}/>
<p class="hint">{{localize "FLBR.SHEET_CONFIG.ResolveMaxModifierHint"}}</p>
</div>
<div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.ResolvePermanentLoss"}}</label>
<input type="number" name="system.resolve.permanentLoss" value="{{document.system.resolve.permanentLoss}}" max="0"{{#unless isGM}} disabled{{/unless}}/>
<p class="hint">{{localize "FLBR.SHEET_CONFIG.ResolvePermanentLossHint"}}</p>
</div>
{{/if}}
<hr/>
<div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.Maneuverability"}}</label>
{{scoreSelector "system.attributes.mvr.value" selected=document.system.attributes.mvr.value}}
<p class="hint">{{localize "FLBR.SHEET_CONFIG.ManeuverabilityHint"}}</p>
</div>
<hr/>
<div class="form-group">
<label>{{localize "FLBR.SHEET_CONFIG.UnlimitedPush"}}</label>
<input type="checkbox" name="flags.bladerunner.unlimitedPush" {{checked document.flags.bladerunner.unlimitedPush}} />
<p class="hint">{{localize "FLBR.SHEET_CONFIG.UnlimitedPushHint"}}</p>
</div>
</fieldset>
{{/if}}
</section>
+794
View File
@@ -0,0 +1,794 @@
<form class="{{cssClass}} zero-engine" 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="wraith" {{#if (eq 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>
+309
View File
@@ -0,0 +1,309 @@
{{!-- ZERO ENGINE Mk2 — SLA Industries Dark Sheet --}}
<div class="zero-engine sla-mk2">
{{!-- ═══ HEADER ══════════════════════════════════════════════════════════ --}}
<header class="mk2-header">
<img class="mk2-portrait" src="{{img}}" title="{{name}}" />
<div class="mk2-identity">
<input class="mk2-name" type="text" name="name" value="{{name}}" placeholder="OPERATIVE NAME" />
<div class="mk2-id-row">
<label class="mk2-field-pair">SCL<input type="number" name="system.details.scl" value="{{system.details.scl}}" /></label>
<label class="mk2-field-pair">c<input type="number" name="system.details.credits" value="{{system.details.credits}}" /></label>
<span class="mk2-race-tag">{{#if system.race.[0]}}{{system.race.[0]}}{{else}}—{{/if}}</span>
<span class="mk2-race-tag dim">{{#if archetype}}{{archetype}}{{else}}—{{/if}}</span>
</div>
</div>
<div class="mk2-init-col">
<span class="mk2-init-label">INITIATIVE</span>
<button type="button" class="init-agi mk2-init-btn red">AGI+MOB</button>
<button type="button" class="init-wit mk2-init-btn grey">WIT+OBS</button>
</div>
</header>
{{!-- ═══ VITALS ═══════════════════════════════════════════════════════════ --}}
<div class="mk2-vitals">
<div class="mk2-vital red">
<span class="vl">HP</span>
<input type="number" name="system.derivedStats.health.value" value="{{system.derivedStats.health.value}}" class="vnum red" />
<span class="vsep">/</span>
<input type="number" name="system.derivedStats.health.max" value="{{system.derivedStats.health.max}}" class="vnum dim" />
</div>
<div class="mk2-vital blue">
<span class="vl">RES</span>
<input type="number" name="system.derivedStats.resolve.value" value="{{system.derivedStats.resolve.value}}" class="vnum blue" />
<span class="vsep">/</span>
<input type="number" name="system.derivedStats.resolve.max" value="{{system.derivedStats.resolve.max}}" class="vnum dim" />
</div>
<div class="mk2-vital orange">
<span class="vl">STRESS</span>
<input type="number" name="system.stress" value="{{system.stress}}" class="vnum orange" />
</div>
{{#if isEbbUser}}
<div class="mk2-vital purple">
<span class="vl">FLUX</span>
<input type="number" name="system.flux.value" value="{{system.flux.value}}" class="vnum purple" />
<span class="vsep">/</span>
<span class="vnum dim">{{computedFluxMax}}</span>
</div>
{{/if}}
<div class="mk2-crit-col">
<button type="button" class="physical-critical-btn mk2-crit-btn red">💔 PHYS CRIT</button>
<button type="button" class="mental-critical-btn mk2-crit-btn purple">🧠 MENTAL CRIT</button>
</div>
</div>
{{!-- ═══ TAB NAV ══════════════════════════════════════════════════════════ --}}
<nav class="mk2-nav">
<a class="mk2-tab active" data-tab="mk2-stats">STATS</a>
<a class="mk2-tab" data-tab="mk2-combat">COMBAT</a>
<a class="mk2-tab" data-tab="mk2-finances">FINANCES</a>
{{#if isEbbUser}}<a class="mk2-tab ebb-tab" data-tab="mk2-ebb">EBB</a>{{/if}}
<a class="mk2-tab" data-tab="mk2-gear">GEAR</a>
<a class="mk2-tab" data-tab="mk2-notes">NOTES</a>
</nav>
{{!-- ═══════════════════ STATS ═══════════════════════════════════════════ --}}
<div class="mk2-panel active" data-panel="mk2-stats">
{{!-- 4-column attribute+skill grid --}}
<div class="mk2-attr-skill-grid">
{{#each attributeGroups}}
<div class="mk2-attr-col {{colorClass}}">
{{!-- Attribute header --}}
<div class="mk2-attr-head">
<span class="mk2-attr-abbr">{{label}}</span>
<input type="number" class="mk2-attr-val" name="system.attributes.{{key}}.value" value="{{value}}" min="1" max="5" />
<button type="button" class="attr-roll-btn mk2-attr-roll" data-attribute="{{key}}">▶</button>
</div>
{{!-- 3 skills beneath --}}
{{#each skills}}
<div class="mk2-skill-entry">
<button type="button" class="skill-roll mk2-sk-roll" data-skill="{{key}}" data-attribute="{{attribute}}">▶</button>
<span class="mk2-sk-name">{{label}}</span>
<div class="mk2-sk-dots">{{#each dots}}<span class="mk2-dot {{#if filled}}on{{/if}}"></span>{{/each}}</div>
<span class="mk2-sk-num">{{value}}</span>
<input type="hidden" name="system.skills.{{key}}.value" value="{{value}}" />
</div>
{{/each}}
{{#if (eq key "empathy")}}
{{#if ../isEbbUser}}
<div class="mk2-skill-entry ebb-sk">
<span class="mk2-sk-roll" style="width:16px;"></span>
<span class="mk2-sk-name" style="color:#bb88ff;">Ebb</span>
<div class="mk2-sk-dots">{{#each ../skillsWithDots}}{{#if (eq key "ebb")}}{{#each dots}}<span class="mk2-dot ebb-dot {{#if filled}}on{{/if}}"></span>{{/each}}{{/if}}{{/each}}</div>
<span class="mk2-sk-num" style="color:#bb88ff;">{{../system.skills.ebb.value}}</span>
<input type="hidden" name="system.skills.ebb.value" value="{{../system.skills.ebb.value}}" />
</div>
{{/if}}
{{/if}}
</div>
{{/each}}
</div>
{{!-- Specialties --}}
<div class="mk2-subhead">SPECIALTIES &amp; RACIAL ABILITIES <a class="item-create mk2-add" data-type="specialty">+ ADD</a></div>
{{#each items}}
{{#if (eq type "specialty")}}
<div class="mk2-spec {{#if (eq system.category 'racial')}}racial{{/if}}">
<span class="mk2-spec-name">{{name}}</span>
<span class="mk2-spec-fx">{{system.effects}}</span>
<a class="item-edit mk2-ico" data-item-id="{{_id}}">✎</a>
<a class="item-delete mk2-ico del" data-item-id="{{_id}}">✕</a>
</div>
{{/if}}
{{/each}}
{{!-- Armor quick-view on stats panel --}}
<div class="mk2-subhead" style="margin-top:10px;">ARMOUR <a class="item-create mk2-add" data-type="armor">+ ADD</a></div>
{{#each items}}
{{#if (eq type "armor")}}
<div class="mk2-armor-stat-row">
<span class="mk2-armor-stat-name">{{name}}</span>
<span class="mk2-armor-stat-val">{{system.armorDice}}d6 + {{system.armorAuto}}</span>
<button type="button" class="armor-roll-btn mk2-action-btn grey" data-item-id="{{_id}}">ROLL AR</button>
<a class="item-delete mk2-ico del" data-item-id="{{_id}}">✕</a>
</div>
{{/if}}
{{/each}}
{{#unless armors.length}}<div class="mk2-none-msg">No armour equipped</div>{{/unless}}
</div>
{{!-- ═══════════════════ COMBAT ════════════════════════════════════════════ --}}
<div class="mk2-panel" data-panel="mk2-combat">
<div class="mk2-subhead">WEAPONS <a class="item-create mk2-add" data-type="weapon">+ ADD</a></div>
{{#each weaponItems}}
<div class="mk2-wpn {{#if system.ammoEmpty}}mk2-wpn-empty{{/if}}">
<div class="mk2-wpn-row1">
<span class="mk2-wpn-name">{{name}}</span>
<span class="mk2-stat-pill">DMG {{system.damage}}</span>
{{#if system.ap}}<span class="mk2-stat-pill">AP {{system.apEffective}}</span>{{/if}}
<span class="mk2-stat-pill">{{system.range}}</span>
{{#if system.gearBonus}}<span class="mk2-stat-pill">+{{system.gearBonus}}</span>{{/if}}
{{#if system.ammoEmpty}}<span class="mk2-ammo-empty-pill">🔒 EMPTY</span>{{/if}}
<a class="item-edit mk2-ico" data-item-id="{{_id}}">✎</a>
<a class="item-delete mk2-ico del" data-item-id="{{_id}}">✕</a>
</div>
{{#if (eq system.category "ranged")}}
<div class="mk2-wpn-row2">
{{#if caliber}}<span class="mk2-caliber">{{caliber}}</span>{{/if}}
<div class="mk2-rb-group">
<button type="button" class="round-select mk2-rb {{#if (eq roundType 'standard')}}rb-std{{/if}}" data-item-id="{{_id}}" data-round="standard">STD</button>
<button type="button" class="round-select mk2-rb {{#if (eq roundType 'ap')}}rb-ap{{/if}}" data-item-id="{{_id}}" data-round="ap">AP</button>
<button type="button" class="round-select mk2-rb {{#if (eq roundType 'he')}}rb-he{{/if}}" data-item-id="{{_id}}" data-round="he">HE</button>
</div>
<button type="button" class="weapon-roll-btn mk2-action-btn red mk2-attack-btn {{#if system.ammoEmpty}}mk2-btn-locked{{/if}}"
data-item-id="{{_id}}" title="{{#if system.ammoEmpty}}OUT OF AMMO — rest to restore{{else}}Roll attack{{/if}}"
{{#if system.ammoEmpty}}disabled{{/if}}>⚡ ATTACK</button>
</div>
{{else}}
<div class="mk2-wpn-row2">
<button type="button" class="weapon-roll-btn mk2-action-btn red mk2-attack-btn" data-item-id="{{_id}}">⚡ ATTACK</button>
</div>
{{/if}}
</div>
{{/each}}
<div class="mk2-subhead" style="margin-top:10px;">ARMOR <a class="item-create mk2-add" data-type="armor">+ ADD</a></div>
{{#each items}}
{{#if (eq type "armor")}}
<div class="mk2-armor">
<span class="mk2-armor-name">{{name}}</span>
<span class="mk2-stat-pill teal">{{system.armorDice}}d6 + {{system.armorAuto}}</span>
<a class="item-edit mk2-ico" data-item-id="{{_id}}">✎</a>
<a class="item-delete mk2-ico del" data-item-id="{{_id}}">✕</a>
</div>
{{/if}}
{{/each}}
</div>
{{!-- ═══════════════════ FINANCES ═════════════════════════════════════════ --}}
<div class="mk2-panel" data-panel="mk2-finances">
<div class="mk2-credits-big">{{system.details.credits}}<span class="mk2-c-unit">c</span>
{{#if system.finances.debt}}<span class="mk2-debt">⚠ DEBT {{system.finances.debt}}c</span>{{/if}}
</div>
<div class="mk2-fin-cols">
<div class="mk2-fin-col">
<div class="mk2-fin-head green">◈ INCOME / WEEK</div>
<div class="mk2-fin-row"><label>Salary</label><div class="mk2-fin-amount"><input type="number" name="system.finances.income.salary" value="{{system.finances.income.salary}}" /><span>c</span></div></div>
<div class="mk2-fin-row"><label>BPN Reward</label><div class="mk2-fin-amount"><input type="number" name="system.finances.income.bpnReward" value="{{system.finances.income.bpnReward}}" /><span>c</span></div></div>
<div class="mk2-fin-row"><label>Other</label><div class="mk2-fin-amount"><input type="number" name="system.finances.income.other" value="{{system.finances.income.other}}" /><span>c</span></div></div>
<div class="mk2-fin-total"><span>TOTAL</span><span class="green">{{weeklyIncome}}c</span></div>
</div>
<div class="mk2-fin-col">
<div class="mk2-fin-head red">◈ EXPENSES / WEEK</div>
<div class="mk2-fin-row"><label>Accommodation</label><div class="mk2-fin-amount"><input type="number" name="system.finances.expenses.accommodation" value="{{system.finances.expenses.accommodation}}" /><span>c</span></div></div>
<div class="mk2-fin-row"><label>Drugs</label><div class="mk2-fin-amount"><input type="number" name="system.finances.expenses.drugs" value="{{system.finances.expenses.drugs}}" /><span>c</span></div></div>
<div class="mk2-fin-row"><label>Subscriptions</label><div class="mk2-fin-amount"><input type="number" name="system.finances.expenses.subscriptions" value="{{system.finances.expenses.subscriptions}}" /><span>c</span></div></div>
<div class="mk2-fin-row"><label>Other</label><div class="mk2-fin-amount"><input type="number" name="system.finances.expenses.other" value="{{system.finances.expenses.other}}" /><span>c</span></div></div>
<div class="mk2-fin-row"><label>💸 Bullet Tax</label><span class="orange fw">{{system.finances.expenses.bulletTax}}c</span></div>
<div class="mk2-fin-row"><label>Debt</label><div class="mk2-fin-amount"><input type="number" name="system.finances.debt" value="{{system.finances.debt}}" /><span>c</span></div></div>
<div class="mk2-fin-total"><span>TOTAL</span><span class="red">{{weeklyExpenses}}c</span></div>
</div>
</div>
<div class="mk2-net-row">
<span class="mk2-net-label">WEEKLY NET</span>
<span class="mk2-net-val {{#if (gte weeklyNet 0)}}green{{else}}red{{/if}}">{{weeklyNetSign}}{{weeklyNet}}c</span>
</div>
{{!-- ══ BPN PANEL ══ --}}
<div class="mk2-bpn bpn-type-{{system.bpn.type}}">
<div class="mk2-bpn-head">
<span class="mk2-bpn-type">{{#if system.bpn.type}}{{system.bpn.type}}{{else}}BLUE{{/if}} BPN</span>
<input type="text" class="mk2-bpn-code" name="system.bpn.code" value="{{system.bpn.code}}" placeholder="BPN-XXX-α" />
<select name="system.bpn.type" class="mk2-bpn-select">
<option value="blue" {{#if (eq system.bpn.type "blue")}}selected{{/if}}>Blue</option>
<option value="red" {{#if (eq system.bpn.type "red")}}selected{{/if}}>Red</option>
<option value="white" {{#if (eq system.bpn.type "white")}}selected{{/if}}>White</option>
<option value="gold" {{#if (eq system.bpn.type "gold")}}selected{{/if}}>Gold</option>
<option value="silver" {{#if (eq system.bpn.type "silver")}}selected{{/if}}>Silver</option>
<option value="black" {{#if (eq system.bpn.type "black")}}selected{{/if}}>Black</option>
<option value="grey" {{#if (eq system.bpn.type "grey")}}selected{{/if}}>Grey</option>
<option value="violet" {{#if (eq system.bpn.type "violet")}}selected{{/if}}>Violet</option>
</select>
<select name="system.bpn.status" class="mk2-bpn-select">
<option value="open" {{#if (eq system.bpn.status "open")}}selected{{/if}}>Open</option>
<option value="active" {{#if (eq system.bpn.status "active")}}selected{{/if}}>Active</option>
<option value="complete" {{#if (eq system.bpn.status "complete")}}selected{{/if}}>Complete</option>
<option value="failed" {{#if (eq system.bpn.status "failed")}}selected{{/if}}>Failed</option>
</select>
<div class="mk2-fin-amount" style="margin-left:auto;">
<input type="number" name="system.bpn.reward" value="{{system.bpn.reward}}" style="width:70px;" />
<span>c</span>
</div>
</div>
<textarea name="system.bpn.description" class="mk2-bpn-text" rows="2" placeholder="Briefing...">{{system.bpn.description}}</textarea>
<textarea name="system.bpn.objectives" class="mk2-bpn-text" rows="2" placeholder="Objectives...">{{system.bpn.objectives}}</textarea>
<textarea name="system.bpn.notes" class="mk2-bpn-text" rows="2" placeholder="Field notes...">{{system.bpn.notes}}</textarea>
</div>
<div class="mk2-subhead" style="margin-top:10px;">AMMO RESERVES</div>
<div class="mk2-ammo-list">
{{#each items}}
{{#if (eq type "ammo")}}
<div class="mk2-ammo-row">
<span class="mk2-ammo-cal">{{system.caliber}}</span>
<span class="mk2-ammo-type {{system.roundType}}">{{system.roundType}}</span>
<span class="mk2-ammo-qty">{{system.quantity}}</span>
<span class="mk2-ammo-cost">{{system.costPerRound}}c/rnd</span>
{{#if system.apBonus}}<span class="mk2-ammo-bonus teal">AP+{{system.apBonus}}</span>{{/if}}
{{#if system.damageMod}}<span class="mk2-ammo-bonus orange">DMG+{{system.damageMod}}</span>{{/if}}
</div>
{{/if}}
{{/each}}
</div>
</div>
{{!-- ═══════════════════ EBB ════════════════════════════════════════════════ --}}
{{#if isEbbUser}}
<div class="mk2-panel" data-panel="mk2-ebb">
<div class="mk2-subhead ebb-h">EBB FORMULAE</div>
{{#each ebbFormulae}}
<div class="mk2-ebb-row">
<div class="mk2-ebb-disc {{system.discipline}}">{{system.discipline}}</div>
<div class="mk2-ebb-info">
<span class="mk2-ebb-name">{{name}}</span>
<div class="mk2-ebb-meta">
<span class="mk2-ebb-flux">⚡ {{system.fluxCost}} Flux</span>
<span class="mk2-ebb-suc">{{system.successes}} suc</span>
{{#if system.range}}<span class="mk2-ebb-range">{{system.range}}</span>{{/if}}
{{#if system.duration}}<span class="mk2-ebb-dur">{{system.duration}}</span>{{/if}}
</div>
{{#if system.effect}}<div class="mk2-ebb-effect">{{system.effect}}</div>{{/if}}
</div>
<div class="mk2-ebb-actions">
<button type="button" class="ebb-formula-roll-btn mk2-action-btn purple mk2-channel-btn" data-item-id="{{_id}}">⚡ CHANNEL</button>
<a class="item-edit mk2-ico" data-item-id="{{_id}}" title="Edit">✎</a>
<a class="item-delete mk2-ico del" data-item-id="{{_id}}" title="Remove">✕</a>
</div>
</div>
{{/each}}
{{#unless ebbFormulae.length}}
<div class="mk2-none-msg">No formulae known. Drag Ebb items from the world item list.</div>
{{/unless}}
</div>
{{/if}}
{{!-- ═══════════════════ GEAR ═════════════════════════════════════════════ --}}
<div class="mk2-panel" data-panel="mk2-gear">
<div class="mk2-subhead">EQUIPMENT <a class="item-create mk2-add" data-type="equipment">+ ADD</a></div>
{{#each items}}
{{#unless (eq type "weapon")}}{{#unless (eq type "armor")}}{{#unless (eq type "specialty")}}{{#unless (eq type "ebb")}}{{#unless (eq type "ammo")}}
<div class="mk2-gear-row">
<span class="mk2-gear-name">{{name}}</span>
{{#if system.quantity}}<span class="mk2-stat-pill">×{{system.quantity}}</span>{{/if}}
<a class="item-edit mk2-ico" data-item-id="{{_id}}">✎</a>
<a class="item-delete mk2-ico del" data-item-id="{{_id}}">✕</a>
</div>
{{/unless}}{{/unless}}{{/unless}}{{/unless}}{{/unless}}
{{/each}}
</div>
{{!-- ═══════════════════ NOTES ════════════════════════════════════════════ --}}
<div class="mk2-panel" data-panel="mk2-notes">
<div class="mk2-subhead">DOSSIER</div>
<textarea name="system.biography" class="mk2-bio">{{system.biography}}</textarea>
</div>
</div>
+117
View File
@@ -0,0 +1,117 @@
<form class="{{cssClass}} zero-engine character-sheet" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}"/>
<div class="header-fields">
<h1 class="charname">
<input name="name" type="text" value="{{actor.name}}" placeholder="Character Name"/>
</h1>
<div class="character-info">
<div class="info-row">
<div class="field">
<label>Race:</label>
<select name="system.race" multiple size="3">
<option value="human" {{#if (contains system.race "human")}}selected{{/if}}>Human</option>
<option value="ebon" {{#if (contains system.race "ebon")}}selected{{/if}}>Ebon</option>
<option value="brainwaster" {{#if (contains system.race "brainwaster")}}selected{{/if}}>Brain Waster</option>
<option value="stormer" {{#if (contains system.race "stormer")}}selected{{/if}}>Stormer</option>
<option value="shaktar" {{#if (contains system.race "shaktar")}}selected{{/if}}>Shaktar</option>
<option value="wraith" {{#if (contains system.race "wraith")}}selected{{/if}}>Wraith Raider</option>
<option value="frother" {{#if (contains system.race "frother")}}selected{{/if}}>Frother</option>
</select>
</div>
<div class="field">
<label>Training:</label>
<select name="system.training" multiple size="3">
<option value="scout" {{#if (contains system.training "scout")}}selected{{/if}}>Scout</option>
<option value="investigator" {{#if (contains system.training "investigator")}}selected{{/if}}>Investigator</option>
<option value="medic" {{#if (contains system.training "medic")}}selected{{/if}}>Medic</option>
<option value="corporate" {{#if (contains system.training "corporate")}}selected{{/if}}>Corporate</option>
</select>
</div>
<div class="field">
<label>Archetype:</label>
<input type="text" name="system.archetype" value="{{system.archetype}}" placeholder="Operative"/>
</div>
</div>
<div class="info-row">
<div class="field">
<label>SCL:</label>
<input type="number" name="system.details.scl" value="{{system.details.scl}}"/>
</div>
<div class="field">
<label>Credits:</label>
<input type="number" name="system.details.credits" value="{{system.details.credits}}"/>
</div>
</div>
</div>
</div>
</header>
{{!-- Attributes & Skills --}}
<section class="sheet-body">
<h2>Attributes & Skills</h2>
<div class="attributes-grid">
{{#each system.attributes as |attribute attrKey|}}
<div class="attribute-block">
<h3>{{capitalize attrKey}}</h3>
<div class="attribute-value">
<button type="button" class="decrement" data-path="system.attributes.{{attrKey}}.value">−</button>
<span class="value">{{attribute.value}}</span>
<button type="button" class="increment" data-path="system.attributes.{{attrKey}}.value">+</button>
<button type="button" class="roll-dice" data-attribute="{{attrKey}}">
<i class="fas fa-dice-d6"></i>
</button>
</div>
{{!-- Skills for this attribute --}}
<div class="skills-list">
{{#each @root.system.skills as |skill skillKey|}}
{{#if (eq skill.attribute attrKey)}}
<div class="skill-row">
<span class="skill-name">{{skill.label}}</span>
<button type="button" class="decrement" data-path="system.skills.{{skillKey}}.value">−</button>
<span class="value">{{skill.value}}</span>
<button type="button" class="increment" data-path="system.skills.{{skillKey}}.value">+</button>
<button type="button" class="roll-dice" data-skill="{{skillKey}}" data-attribute="{{attrKey}}">
<i class="fas fa-dice-d6"></i>
</button>
</div>
{{/if}}
{{/each}}
</div>
</div>
{{/each}}
</div>
{{!-- Health & Resolve --}}
<div class="resources">
<div class="resource">
<label>Health</label>
<input type="number" name="system.derivedStats.health.value" value="{{system.derivedStats.health.value}}" />
/
<input type="number" name="system.derivedStats.health.max" value="{{system.derivedStats.health.max}}" />
</div>
<div class="resource">
<label>Resolve</label>
<input type="number" name="system.derivedStats.resolve.value" value="{{system.derivedStats.resolve.value}}" />
/
<input type="number" name="system.derivedStats.resolve.max" value="{{system.derivedStats.resolve.max}}" />
</div>
<div class="resource">
<label>Stress</label>
<input type="number" name="system.derivedStats.stress" value="{{system.derivedStats.stress}}" />
</div>
</div>
</section>
</form>
+985
View File
@@ -0,0 +1,985 @@
<form class="{{cssClass}} zero-engine" 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 raceStr "human")}}selected{{/if}}>Human</option>
<option value="ebon" {{#if (eq raceStr "ebon")}}selected{{/if}}>Ebon</option>
<option value="brainwaster"{{#if (eq raceStr "brainwaster")}}selected{{/if}}>Brain Waster</option>
<option value="stormer" {{#if (eq raceStr "stormer")}}selected{{/if}}>Stormer (313 Malice)</option>
<option value="shaktar" {{#if (eq raceStr "shaktar")}}selected{{/if}}>Shaktar</option>
<option value="wraith" {{#if (eq raceStr "wraith")}}selected{{/if}}>Wraith Raider</option>
<option value="frother" {{#if (eq raceStr "frother")}}selected{{/if}}>Frother</option>
<option value="vevaphon" {{#if (eq raceStr "vevaphon")}}selected{{/if}}>Stormer Vevaphon</option>
</select>
</div>
<div class="detail-field">
<label>Training Package</label>
<select name="system.training">
<option value="">-- Select --</option>
<option value="soldier" {{#if (eq trainingStr "soldier")}}selected{{/if}}>Soldier</option>
<option value="scout" {{#if (eq trainingStr "scout")}}selected{{/if}}>Scout</option>
<option value="medic" {{#if (eq trainingStr "medic")}}selected{{/if}}>Combat Medic</option>
<option value="tech" {{#if (eq trainingStr "tech")}}selected{{/if}}>Tech Operative</option>
<option value="negotiator" {{#if (eq trainingStr "negotiator")}}selected{{/if}}>Negotiator</option>
<option value="hunter" {{#if (eq trainingStr "hunter")}}selected{{/if}}>Hunter</option>
<option value="brawler" {{#if (eq trainingStr "brawler")}}selected{{/if}}>Brawler</option>
<option value="investigator" {{#if (eq trainingStr "investigator")}}selected{{/if}}>Investigator</option>
<option value="corporate" {{#if (eq trainingStr "corporate")}}selected{{/if}}>Corporate</option>
<option value="ebb_user" {{#if (eq trainingStr "ebb_user")}}selected{{/if}}>Ebb Channeller</option>
<option value="ebon-investigator" {{#if (eq trainingStr "ebon-investigator")}}selected{{/if}}>Ebon - Investigator</option>
<option value="brainwaster-operative"{{#if (eq trainingStr "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>
<div class="armor-name-display">
{{#each armors}}{{#if @first}}<span class="equipped-armor-name">{{this.name}}</span>{{/if}}{{/each}}
{{#unless armors.length}}<span class="equipped-armor-name none">None</span>{{/unless}}
</div>
<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}}" />
<span class="stress-max-display">/ {{stressMax}}</span>
<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>
<div class="vital-box rest-vital">
<button type="button" class="rest-btn" data-actor-id="{{actor._id}}" title="Rest: clear weapon lockouts and restore ammo">
<i class="fas fa-bed"></i> REST
</button>
</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}}
{{#if isVevaphon}}
<div class="vital-box vevaphon-vital">
<label>Instability</label>
<div class="vital-values">
<input type="number" name="system.vevaphon.instability" value="{{system.vevaphon.instability}}" class="instability-value" min="0" max="12" />
<span class="vital-separator">/</span>
<span class="instability-max">12</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}}
{{!-- Active conditions from SLA status effects --}}
{{#if activeConditions.length}}
<div class="active-conditions-row">
{{#each activeConditions}}
<div class="condition-tag {{this.id}}" title="{{this.description}}">
<i class="{{this.icon}}"></i>
<span class="condition-label">{{this.label}}</span>
<button type="button" class="condition-clear-btn" data-condition-id="{{this.id}}" title="Clear condition">✕</button>
</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="finances">
<i class="fas fa-credit-card"></i> Finances
</a>
<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>
{{!-- Morph form SHIFT button for Vevaphon forms --}}
{{#if (eq this.system.prerequisites "Vevaphon")}}
{{#unless (eq this.name "Morphic Strike")}}
{{#if (eq this.name "Brute Form")}}
<button type="button" class="morph-shift-btn {{#if (eq ../system.vevaphon.activeMorphForm 'brute')}}morph-shift-active{{/if}}"
data-form="brute" title="Shift to Brute Form (costs 1 Instability)">
{{#if (eq ../system.vevaphon.activeMorphForm 'brute')}}<i class="fas fa-check-circle"></i> ACTIVE{{else}}<i class="fas fa-sync-alt"></i> SHIFT{{/if}}
</button>
{{else if (eq this.name "Stalker Form")}}
<button type="button" class="morph-shift-btn {{#if (eq ../system.vevaphon.activeMorphForm 'stalker')}}morph-shift-active{{/if}}"
data-form="stalker" title="Shift to Stalker Form (costs 1 Instability)">
{{#if (eq ../system.vevaphon.activeMorphForm 'stalker')}}<i class="fas fa-check-circle"></i> ACTIVE{{else}}<i class="fas fa-sync-alt"></i> SHIFT{{/if}}
</button>
{{else if (eq this.name "Raptor Form")}}
<button type="button" class="morph-shift-btn {{#if (eq ../system.vevaphon.activeMorphForm 'raptor')}}morph-shift-active{{/if}}"
data-form="raptor" title="Shift to Raptor Form (costs 1 Instability)">
{{#if (eq ../system.vevaphon.activeMorphForm 'raptor')}}<i class="fas fa-check-circle"></i> ACTIVE{{else}}<i class="fas fa-sync-alt"></i> SHIFT{{/if}}
</button>
{{/if}}
{{/unless}}
{{/if}}
<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">
{{#if isVevaphon}}
<div class="morph-form-panel">
<div class="section-header"><i class="fas fa-sync-alt"></i> Morph Form
<span class="instability-warning {{#if (gte system.vevaphon.instability 6)}}active{{/if}}">
{{#if (gte system.vevaphon.instability 10)}}⚠ MORPH PANIC RISK{{else if (gte system.vevaphon.instability 6)}}⚠ INSTABILITY EFFECTS ACTIVE{{/if}}
</span>
</div>
<div class="morph-form-buttons">
<button type="button" class="morph-form-btn {{#if (eq system.vevaphon.activeMorphForm 'brute')}}morph-active{{/if}}" data-form="brute">
<i class="fas fa-shield-alt"></i> BRUTE<br><small>+Force +Melee +2HP</small>
</button>
<button type="button" class="morph-form-btn {{#if (eq system.vevaphon.activeMorphForm 'stalker')}}morph-active{{/if}}" data-form="stalker">
<i class="fas fa-eye-slash"></i> STALKER<br><small>+Stealth +Mobility</small>
</button>
<button type="button" class="morph-form-btn {{#if (eq system.vevaphon.activeMorphForm 'raptor')}}morph-active{{/if}}" data-form="raptor">
<i class="fas fa-bolt"></i> RAPTOR<br><small>+Melee +Marks</small>
</button>
<button type="button" class="morph-form-btn {{#if (eq system.vevaphon.activeMorphForm 'none')}}morph-active{{/if}}" data-form="none">
<i class="fas fa-circle"></i> BASE<br><small>No bonuses</small>
</button>
</div>
<div class="morph-instability-bar">
<div class="instability-track">
{{#each instabilityPips}}<span class="instability-pip {{#if this.filled}}pip-filled {{#if this.danger}}pip-danger{{/if}}{{/if}}"></span>{{/each}}
</div>
<button type="button" class="instability-roll-btn" title="Roll Instability effect (6+ minor, 10+ panic)">
<i class="fas fa-random"></i> Roll Instability
</button>
</div>
</div>
{{/if}}
{{!-- 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 {{#if this.system.ammoEmpty}}weapon-ammo-empty{{/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">{{this.name}}</span>
<span class="weapon-type-badge ranged">{{this.system.weaponType}}</span>
{{#if this.system.ammoEmpty}}<span class="ammo-empty-badge"><i class="fas fa-lock"></i> EMPTY</span>{{/if}}
</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-actions">
<button type="button" class="weapon-roll-btn {{#if this.system.ammoEmpty}}btn-locked{{/if}}"
data-item-id="{{this._id}}" data-weapon-category="ranged"
title="{{#if this.system.ammoEmpty}}EMPTY — rest to restore ammo{{else}}Roll Marksmanship attack{{/if}}"
{{#if this.system.ammoEmpty}}disabled{{/if}}>
<i class="fas fa-dice-d6"></i> ATTACK
</button>
<div class="weapon-aux-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-weapon-btn" data-item-id="{{this._id}}" title="Remove Weapon">
<i class="fas fa-times"></i>
</button>
</div>
</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="weapon-roll-btn"
data-item-id="{{this._id}}" data-weapon-category="melee"
title="Roll Melee attack">
<i class="fas fa-fist-raised"></i> ATTACK
</button>
<div class="weapon-aux-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-weapon-btn" data-item-id="{{this._id}}" title="Remove Weapon">
<i class="fas fa-times"></i>
</button>
</div>
</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">
{{#if drugWithdrawal}}
<div class="drug-withdrawal-warning">
<i class="fas fa-exclamation-triangle"></i>
<strong>DRUG WITHDRAWAL</strong> — −1 die to all rolls until a drug is activated
</div>
{{/if}}
{{#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 --}}
{{!-- ══ FINANCES TAB ══ --}}
<div class="tab" data-tab="finances">
<div class="finances-section">
<div class="finances-credits-hero">
<span class="fin-credit-label">CURRENT BALANCE</span>
<span class="fin-credit-value"><input type="number" name="system.details.credits" value="{{system.details.credits}}" /> c</span>
{{#if system.finances.debt}}<span class="fin-debt-badge">⚠ DEBT {{system.finances.debt}}c</span>{{/if}}
</div>
<div class="finances-grid">
<div class="fin-panel income-panel">
<div class="fin-panel-title"><i class="fas fa-arrow-up"></i> Weekly Income</div>
<div class="fin-row"><label>Base Salary</label><div class="fin-amount"><input type="number" name="system.finances.income.salary" value="{{system.finances.income.salary}}" /><span>c</span></div></div>
<div class="fin-row"><label>BPN Reward</label><div class="fin-amount"><input type="number" name="system.finances.income.bpnReward" value="{{system.finances.income.bpnReward}}" /><span>c</span></div></div>
<div class="fin-row"><label>Other Income</label><div class="fin-amount"><input type="number" name="system.finances.income.other" value="{{system.finances.income.other}}" /><span>c</span></div></div>
<div class="fin-row fin-total income-total"><label>Total</label><span class="fin-total-val">{{weeklyIncome}}c</span></div>
</div>
<div class="fin-panel expense-panel">
<div class="fin-panel-title"><i class="fas fa-arrow-down"></i> Weekly Expenses</div>
<div class="fin-row"><label>Accommodation</label><div class="fin-amount"><input type="number" name="system.finances.expenses.accommodation" value="{{system.finances.expenses.accommodation}}" /><span>c</span></div></div>
<div class="fin-row"><label>Drug Costs</label><div class="fin-amount"><input type="number" name="system.finances.expenses.drugs" value="{{system.finances.expenses.drugs}}" /><span>c</span></div></div>
<div class="fin-row"><label>Subscriptions</label><div class="fin-amount"><input type="number" name="system.finances.expenses.subscriptions" value="{{system.finances.expenses.subscriptions}}" /><span>c</span></div></div>
<div class="fin-row"><label>Other</label><div class="fin-amount"><input type="number" name="system.finances.expenses.other" value="{{system.finances.expenses.other}}" /><span>c</span></div></div>
<div class="fin-row"><label>💸 Bullet Tax (session)</label><span class="fin-btax">{{system.finances.expenses.bulletTax}}c</span></div>
<div class="fin-row"><label>Debt</label><div class="fin-amount"><input type="number" name="system.finances.debt" value="{{system.finances.debt}}" /><span>c</span></div></div>
<div class="fin-row fin-total expense-total"><label>Total</label><span class="fin-total-val">{{weeklyExpenses}}c</span></div>
</div>
</div>
<div class="fin-net-bar">
<span class="fin-net-label">Net Weekly Income</span>
<span class="fin-net-val {{#if (gte weeklyNet 0)}}net-positive{{else}}net-negative{{/if}}">{{weeklyNetSign}}{{weeklyNet}}c</span>
</div>
{{!-- ══ BPN PANEL ══ --}}
<div class="bpn-panel bpn-type-{{system.bpn.type}}">
<div class="bpn-header">
<div class="bpn-header-left">
<span class="bpn-type-badge">{{#if system.bpn.type}}{{system.bpn.type}}{{else}}BLUE{{/if}} BPN</span>
<input type="text" class="bpn-code-input" name="system.bpn.code" value="{{system.bpn.code}}" placeholder="BPN-XXX-α" />
</div>
<div class="bpn-header-right">
<select name="system.bpn.type" class="bpn-type-select">
<option value="blue" {{#if (eq system.bpn.type "blue")}}selected{{/if}}>Blue</option>
<option value="red" {{#if (eq system.bpn.type "red")}}selected{{/if}}>Red</option>
<option value="white" {{#if (eq system.bpn.type "white")}}selected{{/if}}>White</option>
<option value="gold" {{#if (eq system.bpn.type "gold")}}selected{{/if}}>Gold</option>
<option value="silver" {{#if (eq system.bpn.type "silver")}}selected{{/if}}>Silver</option>
<option value="black" {{#if (eq system.bpn.type "black")}}selected{{/if}}>Black</option>
<option value="grey" {{#if (eq system.bpn.type "grey")}}selected{{/if}}>Grey</option>
<option value="violet" {{#if (eq system.bpn.type "violet")}}selected{{/if}}>Violet</option>
</select>
<select name="system.bpn.status" class="bpn-status-select">
<option value="open" {{#if (eq system.bpn.status "open")}}selected{{/if}}>Open</option>
<option value="active" {{#if (eq system.bpn.status "active")}}selected{{/if}}>Active</option>
<option value="complete" {{#if (eq system.bpn.status "complete")}}selected{{/if}}>Complete</option>
<option value="failed" {{#if (eq system.bpn.status "failed")}}selected{{/if}}>Failed</option>
</select>
<div class="bpn-reward-field">
<span class="bpn-reward-label">Reward</span>
<div class="fin-amount">
<input type="number" name="system.bpn.reward" value="{{system.bpn.reward}}" class="bpn-reward-input" />
<span>c</span>
</div>
</div>
</div>
</div>
<div class="bpn-body">
<div class="bpn-field">
<label class="bpn-field-label"><i class="fas fa-file-alt"></i> Briefing</label>
<textarea name="system.bpn.description" class="bpn-textarea" rows="3" placeholder="BPN briefing and background...">{{system.bpn.description}}</textarea>
</div>
<div class="bpn-field">
<label class="bpn-field-label"><i class="fas fa-tasks"></i> Objectives</label>
<textarea name="system.bpn.objectives" class="bpn-textarea" rows="3" placeholder="• Primary objective&#10;• Secondary objective...">{{system.bpn.objectives}}</textarea>
</div>
<div class="bpn-field">
<label class="bpn-field-label"><i class="fas fa-sticky-note"></i> Notes</label>
<textarea name="system.bpn.notes" class="bpn-textarea" rows="2" placeholder="Field notes, contacts, intel...">{{system.bpn.notes}}</textarea>
</div>
</div>
</div>
</div>
</div>
<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>
@@ -0,0 +1,56 @@
<form class="{{cssClass}}{{#if actor.isBroken}} broken{{/if}}" autocomplete="off">
<div class="sheet-header">
<div class="container-header">
<div class="avatar">
<img class="profile" src="{{actor.img}}" data-edit="img" data-tooltip="{{actor.name}}"/>
</div>
<div class="actor-name">
<input type="text" name="name" value="{{actor.name}}"/>
</div>
<div class="nature boxed-property container">
<h3>{{localize "FLBR.Nature"}}</h3>
<select {{#unless isGM}} disabled{{/unless}}>
<option selected>{{localize "FLBR.NATURE.Human"}} ?</option>
</select>
</div>
<div class="capacities">
{{#if system.health}}
<div class="capacity-health boxed-property">
<h3>{{localize "FLBR.HEADER.Health"}}<span class="capacity-rating">?/?</span></h3>
<div class="capacity-boxes" style="color: var(--color-disabled);">
{{#times 4}}
{{{@root.config.Icons.boxes.empty}}}
{{/times}}
</div>
</div>
{{/if}}
{{#if system.resolve}}
<div class="capacity-resolve boxed-property">
<h3>{{localize "FLBR.HEADER.Resolve"}}<span class="capacity-rating">?/?</span></h3>
<div class="capacity-boxes" style="color: var(--color-disabled);">
{{#times 4}}
{{{@root.config.Icons.boxes.empty}}}
{{/times}}
</div>
</div>
{{/if}}
</div>
<div class="archetype">
<input type="text" value="???" disabled/>
</div>
</div>
</div>
<div class="sheet-body">
{{{editor system.description target="system.description" button=true editable=editable}}}
</div>
</form>
@@ -0,0 +1,137 @@
<form class="{{cssClass}}{{#if actor.isBroken}} broken{{/if}}" autocomplete="off">
{{!-- SHEET HEADER --}}
<div class="sheet-header">
<div class="container-header">
<div class="avatar">
<img class="profile" src="{{actor.img}}" data-edit="img" data-tooltip="{{actor.name}}"/>
</div>
<div class="actor-name">
<input type="text" name="name" value="{{actor.name}}"/>
</div>
<div class="nature boxed-property container">
<h3>{{localize "FLBR.Nature"}}</h3>
<select name="system.nature" data-tooltip="{{localize "FLBR.NatureHint"}}"{{#unless editNature}} disabled{{/unless}}>
{{selectOptions config.natures selected=system.nature localize=true}}
</select>
</div>
<div class="capacities">
{{#if system.health}}
<div class="capacity-health boxed-property{{#if (lte system.health.value 0)}} broken{{else if (lte system.health.ratio 0.5)}} half{{/if}}">
<h3>
{{localize "FLBR.HEADER.Health"}}
{{#if (lte system.health.value 0)}}
<b>({{toUpperCase (localize "FLBR.BrokenByDamage")}})</b>
{{/if}}
<span class="capacity-rating">{{system.health.value}}/{{system.health.max}}</span>
</h3>
{{boxes "system.health.value" value=system.health.value min=0 max=system.health.max loss=system.health.permanentLoss}}
</div>
{{/if}}
{{#if (and system.resolve isPC)}}
<div class="capacity-resolve boxed-property{{#if (lte system.resolve.value 0)}} broken{{else if (lte system.resolve.ratio 0.5)}} half{{/if}}">
<h3>
{{localize "FLBR.HEADER.Resolve"}}
{{#if (lte system.resolve.value 0)}}
<b>({{toUpperCase (localize "FLBR.BrokenByStress")}})</b>
{{/if}}
<span class="capacity-rating">{{system.resolve.value}}/{{system.resolve.max}}</span>
</h3>
{{boxes "system.resolve.value" value=system.resolve.value min=0 max=system.resolve.max loss=system.resolve.permanentLoss}}
</div>
{{/if}}
</div>
<div class="sla-character-info" style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-bottom: 10px;">
<div class="race boxed-property container">
<h3>Race/Species</h3>
<select name="system.race" multiple size="7" data-tooltip="Select one or more races (Ctrl/Cmd+Click for multiple)">
<option value="human" {{#if (contains system.race "human")}}selected{{/if}}>Human</option>
<option value="ebon" {{#if (contains system.race "ebon")}}selected{{/if}}>Ebon</option>
<option value="brainwaster" {{#if (contains system.race "brainwaster")}}selected{{/if}}>Brain Waster</option>
<option value="stormer" {{#if (contains system.race "stormer")}}selected{{/if}}>Stormer (313 Malice)</option>
<option value="shaktar" {{#if (contains system.race "shaktar")}}selected{{/if}}>Shaktar</option>
<option value="wraith" {{#if (contains system.race "wraith")}}selected{{/if}}>Wraith Raider</option>
<option value="frother" {{#if (contains system.race "frother")}}selected{{/if}}>Frother</option>
</select>
</div>
<div class="training boxed-property container">
<h3>Training Package</h3>
<select name="system.training" multiple size="7" data-tooltip="Select one or more training packages (Ctrl/Cmd+Click for multiple)">
<option value="scout" {{#if (contains system.training "scout")}}selected{{/if}}>Scout</option>
<option value="investigator" {{#if (contains system.training "investigator")}}selected{{/if}}>Investigator</option>
<option value="frother-pkg" {{#if (contains system.training "frother-pkg")}}selected{{/if}}>Frother</option>
<option value="corporate" {{#if (contains system.training "corporate")}}selected{{/if}}>Corporate</option>
<option value="medic" {{#if (contains system.training "medic")}}selected{{/if}}>Medic / Field Surgeon</option>
<option value="ebon-investigator" {{#if (contains system.training "ebon-investigator")}}selected{{/if}}>Ebon - Investigator</option>
<option value="brainwaster-operative" {{#if (contains system.training "brainwaster-operative")}}selected{{/if}}>Brain Waster - Operative</option>
</select>
</div>
<div class="archetype boxed-property container">
<h3>Archetype</h3>
<input list="list-of-archetypes" type="text" name="system.archetype" value="{{system.archetype}}"/>
<datalist id="list-of-archetypes">
{{selectOptions config.archetypes localize=true}}
</datalist>
</div>
</div>
</div>
</div>
{{!-- SHEET TABS --}}
<div class="sheet-tabs" data-group="primary">
<a class="sheet-tab" data-tab="stats">{{{config.Icons.tabs.stats}}}&nbsp;{{localize "FLBR.TAB.Stats"}}</a>
<a class="sheet-tab" data-tab="mods">{{{config.Icons.tabs.mods}}}&nbsp;{{localize "FLBR.TAB.Mods"}}</a>
<a class="sheet-tab" data-tab="combat">{{{config.Icons.tabs.combat}}}&nbsp;{{localize "FLBR.TAB.Combat"}}</a>
<a class="sheet-tab" data-tab="inventory">{{{config.Icons.tabs.inventory}}}&nbsp;{{localize "FLBR.TAB.Inventory"}}</a>
<a class="sheet-tab" data-tab="bio">
{{{config.Icons.tabs.bio}}}&nbsp;
{{#if isPC}}
{{localize "FLBR.TAB.Bio"}}
{{else if isNPC}}
{{localize "FLBR.HEADER.Notes"}}
{{/if}}
</a>
</div>
{{!-- SHEET BODY --}}
<div class="sheet-body">
<div class="tab" data-group="primary" data-tab="stats">
{{> systems/zero-engine/templates/actor/character/sheet-tabs/stats-tab.hbs}}
</div>
<div class="tab" data-group="primary" data-tab="mods">
{{> systems/blade-runner/templates/actor/character/sheet-tabs/mods-tab.hbs}}
</div>
<div class="tab" data-group="primary" data-tab="combat">
{{> systems/blade-runner/templates/actor/character/sheet-tabs/combat-tab.hbs}}
</div>
<div class="tab" data-group="primary" data-tab="inventory">
{{> systems/blade-runner/templates/actor/character/sheet-tabs/inventory-tab.hbs}}
</div>
<div class="tab" data-group="primary" data-tab="bio">
{{#if isPC}}
{{> systems/zero-engine/templates/actor/character/sheet-tabs/bio-tab.hbs}}
{{else if isNPC}}
<div class="boxed-property npc-notes">
{{{editor system.description target="system.description" button=true editable=editable}}}
</div>
{{/if}}
</div>
</div>
{{!-- SHEET FOOTER --}}
{{!-- <div class="sheet-footer"></div> --}}
</form>
@@ -0,0 +1,38 @@
<div class="bio-tab container">
<div class="boxed-property bio-notes">
<h3>{{localize "FLBR.HEADER.Notes"}}</h3>
<div class="bio-editor">
{{{editor system.description target="system.description" button=true editable=editable}}}
</div>
</div>
{{#if system.bio}}
<div class="boxed-property years-on-the-force">
<h3>{{localize "FLBR.HEADER.YearsOnTheForce"}}</h3>
<input type="text" name="system.bio.yearsOnTheForce" value="{{system.bio.yearsOnTheForce}}" data-dtype="Number"/>
</div>
<div class="boxed-property">
<h3>{{localize "FLBR.HEADER.Appearance"}}</h3>
<div class="bio-editor">
{{{editor system.bio.appearance target="system.bio.appearance" button=true editable=editable}}}
</div>
</div>
<div class="boxed-property">
<h3>{{localize "FLBR.HEADER.Home"}}</h3>
<div class="bio-editor">
{{{editor system.bio.home target="system.bio.home" button=true editable=editable}}}
</div>
</div>
<div class="boxed-property">
<h3>{{localize "FLBR.HEADER.KeyMemory"}}</h3>
<div class="bio-editor">
{{{editor system.bio.keyMemory target="system.bio.keyMemory" button=true editable=editable}}}
</div>
</div>
<div class="boxed-property">
<h3>{{localize "FLBR.HEADER.KeyRelationship"}}</h3>
<div class="bio-editor">
{{{editor system.bio.keyRelationship target="system.bio.keyRelationship" button=true editable=editable}}}
</div>
</div>
{{/if}}
</div>
@@ -0,0 +1,21 @@
<div class="combat-tab container">
<div class="weapons boxed-property">
<h3>{{localize "FLBR.HEADER.Weapons"}}{{createNewItemButton "weapon"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.weapon}}
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.explosive}}
</div>
<div class="armors boxed-property">
<h3>{{localize "FLBR.HEADER.Armor"}}{{createNewItemButton "armor"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.armor}}
</div>
<div class="injuries boxed-property">
<h3>{{localize "FLBR.HEADER.Injuries"}}{{createNewItemButton "injury"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.injury}}
</div>
<div class="actions boxed-property">
<h4>{{localize "FLBR.HEADER.Actions"}}</h4>
{{#each actions}}
<a class="action-roll" data-action="{{id}}" data-tooltip="{{localize hint}}">{{{@root.config.Icons.buttons.action}}}{{localize label}}</a>
{{/each}}
</div>
</div>
@@ -0,0 +1,47 @@
<div class="inventory-tab">
{{#if isPC}}
<div class="special-gear">
{{!-- <div class="favored-gear boxed-property">
<h3>{{localize "FLBR.HEADER.FavoredGear"}}</h3>
<input type="text" name="system.favoredGear" value="{{system.favoredGear}}"/>
</div> --}}
<div class="signature-item boxed-property">
<h3>{{localize "FLBR.HEADER.SignatureItem"}}</h3>
<div class="flex row">
<input type="text" name="system.signatureItem.name" value="{{system.signatureItem.name}}" class="flex-1"/>
<input type="checkbox" name="system.signatureItem.used" data-tooltip="{{localize "FLBR.SignatureItemUsedCheckboxHint"}}" {{checked system.signatureItem.used}}/>
</label>
</div>
</div>
</div>
{{/if}}
<div class="inventory boxed-property">
<h3>{{localize "FLBR.HEADER.Inventory"}}{{createNewItemButton "generic"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.generic wrap=true}}
</div>
{{#each config.customItemTypesTemplates as | template |}}
<div class="inventory boxed-property">
<h3>{{localize (concat "TYPES.Item." @key)}}{{createNewItemButton @key}}</h3>
{{> (template) items=(lookup ../actor.itemTypes @key)}}
</div>
{{/each}}
{{#if isPC}}
<div class="meta-currencies flex row space-between">
<div class="meta-currency-promotion boxed-property">
<h4>{{localize "FLBR.HEADER.PromotionPoints"}}<span style="float: right;">{{system.metaCurrencies.promotion}}</span></h4>
{{boxes "system.metaCurrencies.promotion" value=system.metaCurrencies.promotion min=0 max=config.maxPromotionPoints}}
</div>
<div class="meta-currency-humanity boxed-property">
<h4>{{localize "FLBR.HEADER.HumanityPoints"}}<span style="float: right;">{{system.metaCurrencies.humanity}}</span></h4>
{{boxes "system.metaCurrencies.humanity" value=system.metaCurrencies.humanity min=0 max=config.maxHumanityPoints}}
</div>
<div class="meta-currency-chinyen boxed-property">
<h4>{{localize "FLBR.HEADER.ChinyenPoints"}}<span style="float: right;">{{system.metaCurrencies.chinyen}}</span></h4>
{{boxes "system.metaCurrencies.chinyen" value=system.metaCurrencies.chinyen min=0 max=config.maxChinyenPoints}}
</div>
</div>
{{/if}}
</div>
@@ -0,0 +1,21 @@
<div class="mods-tab">
<div class="specialties boxed-property">
<h3>{{localize "FLBR.HEADER.Specialties"}}{{createNewItemButton "specialty"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.specialty}}
</div>
<div class="augments boxed-property">
<h3>{{localize "FLBR.HEADER.Augments"}}{{createNewItemButton "upgrade"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=actor.itemTypes.upgrade}}
</div>
{{#if showEffects}}
<div class="active-effects boxed-property">
<h4>
{{localize "DOCUMENT.ActiveEffects"}}
<a class="btn add-active-effect" data-tooltip="{{localize "FLBR.ACTIVE_EFFECT.Add"}}">
{{{@root.config.Icons.buttons.plus}}}
</a>
</h4>
{{> systems/blade-runner/templates/item/active-effects-partial.hbs}}
</div>
{{/if}}
</div>
@@ -0,0 +1,75 @@
<div class="ze-stats">
{{#each system.attributes as | attribute attrKey |}}
{{#unless (eq attrKey "mvr")}}
<div class="ze-attribute-block">
<div class="ze-attribute-header">
<button class="ze-attr-roll-btn stat-roll" data-attribute="{{attrKey}}" type="button">
<span class="ze-attr-name">{{localize (concat "FLBR.ATTRIBUTE." (toUpperCase attrKey))}}</span>
<i class="fas fa-dice-d6"></i>
</button>
<div class="ze-attr-score">
{{scoreSelector (concat "system.attributes." attrKey ".value") selected=attribute.value}}
</div>
<div class="ze-attr-die boxed-value stat-roll rollable" data-attribute="{{attrKey}}">
{{#if (lte attribute.value 0)}}—{{else}}{{localize "FLBR.D"}}{{attribute.value}}{{/if}}
</div>
</div>
<div class="ze-skills-list">
{{#each @root.system.skills as | skill skillKey |}}
{{#if (eq attrKey (lookup @root.config.skillMap skillKey))}}
<div class="ze-skill-row">
<a class="ze-skill-name stat-roll" data-skill="{{skillKey}}" data-attribute="{{attrKey}}">
{{localize (concat "FLBR.SKILL." (capitalize skillKey))}}
</a>
<div class="ze-skill-score">
{{scoreSelector (concat "system.skills." skillKey ".value") selected=skill.value}}
</div>
<div class="ze-skill-die boxed-value stat-roll rollable" data-skill="{{skillKey}}" data-attribute="{{attrKey}}">
{{#if (lte skill.value 0)}}—{{else}}{{localize "FLBR.D"}}{{skill.value}}{{/if}}
</div>
</div>
{{/if}}
{{/each}}
</div>
</div>
{{/unless}}
{{/each}}
</div>
{{!-- Specialties Section --}}
<div class="specialties-section">
<h2 class="section-header">
<i class="fas fa-star"></i> Specialties
<span class="specialty-count">({{actor.items.size}})</span>
</h2>
<div class="specialties-container">
<div class="specialty-drop-zone" data-tooltip="Drag and drop specialty items here">
{{#if (gt actor.items.size 0)}}
<ul class="specialty-list">
{{#each actor.items as |item|}}
{{#if (eq item.type "specialty")}}
<li class="specialty-item" data-item-id="{{item._id}}">
<div class="specialty-header">
<img class="specialty-icon" src="{{item.img}}" alt="{{item.name}}"/>
<h4 class="specialty-name">{{item.name}}</h4>
<div class="specialty-controls">
<a class="item-edit" data-tooltip="Edit Specialty"><i class="fas fa-edit"></i></a>
<a class="item-delete" data-tooltip="Delete Specialty"><i class="fas fa-trash"></i></a>
</div>
</div>
<div class="specialty-description">
{{item.system.description}}
</div>
</li>
{{/if}}
{{/each}}
</ul>
{{else}}
<div class="empty-specialties">
<i class="fas fa-star-half-alt"></i>
<p>No specialties yet. Drag and drop specialty items here.</p>
</div>
{{/if}}
</div>
</div>
</div>
+125
View File
@@ -0,0 +1,125 @@
{{!-- The parameters are: --}}
{{!-- {Item[]} items - See actor.itemTypes.<type> --}}
{{!-- {boolean} wrap - Whether to wrap items in rows or not. --}}
<div class="embedded-items flex {{#if wrap}}row wrap{{else}}column{{/if}}">
{{#each items}}
<div class="embedded-item flex row {{type}}" data-item-id="{{id}}">
<div class="photo{{#if hasAction}} item-control rollable{{/if}}" data-action="roll">
<img src="{{img}}" data-tooltip="{{name}}"/>
</div>
<div class="details"{{#if isPhysical}} data-tooltip='{{{enrichDocumentName system.description}}}'{{/if}}>
<div class="name{{#if (lte system.qty 0)}} empty-item{{/if}}">
{{#if system.lethal}}
{{{@root.config.Icons.buttons.lethal}}}
{{/if}}
{{detailedName}}
</div>
{{#if system.special}}
<div class="item-detail special">{{system.special}}</div>
{{/if}}
{{!-- Weapons & Explosives --}}
{{#if isOffensive}}
{{#if (eq type "explosive")}}
<div class="item-detail explosive">
{{localize "FLBR.Blast"}}&nbsp;{{localize "FLBR.D"}}{{system.blast}}
</div>
{{else if hasAttack}}
<div class="item-detail damage">
{{#each system.attacks}}
<div>
{{#if (eq damageType 1)}}
{{{@root.config.Icons.buttons.crush}}}{{damage}}
{{else if (eq damageType 2)}}
{{{@root.config.Icons.buttons.pierce}}}{{damage}}
{{else if (eq damageType 3)}}
{{{@root.config.Icons.buttons.stress}}}{{damage}}
{{else}}
{{damage}}
{{/if}}
</div>
<div>
{{#unless (eq crit 0)}}
{{{@root.config.Icons.buttons.crit}}}{{localize "FLBR.D"}}{{crit}}
{{/unless}}
</div>
<div>
{{#if (gt range.max 0)}}
{{{@root.config.Icons.buttons.range}}}{{localize (lookup @root.config.ranges range.max)}}
{{/if}}
</div>
{{/each}}
</div>
{{/if}}
{{!-- Armors --}}
{{else if system.armor includeZero=true}}
<div class="item-detail armor">
{{localize "TYPES.Item.armor"}}&nbsp;{{localize "FLBR.D"}}{{system.armor}}
</div>
{{/if}}
{{#if system.description}}
{{#unless isPhysical}}
<div class="item-detail description">
{{{enrichDocumentName system.description}}}
</div>
{{/unless}}
{{else if hasModifier}}
<div class="item-detail modifiers-description">{{modifiersDescription}}</div>
{{/if}}
</div>
{{!-- Item Controls --}}
<div class="item-controls">
{{#if system.blast}}
<a class="btn item-control" data-action="blast" data-tooltip="{{localize "FLBR.SHEET_HEADER.BlastPowerRoll"}}">
{{{@root.config.Icons.buttons.bomb}}}
</a>
{{/if}}
{{#if (eq type "armor")}}
<a class="btn item-control" data-action="roll" data-tooltip="{{localize "FLBR.SHEET_HEADER.ArmorRoll"}}">
{{{@root.config.Icons.buttons.armor}}}
</a>
{{/if}}
{{#if hasAction}}
<a class="btn item-control" data-action="roll" data-tooltip="{{localize "FLBR.BUTTON.Roll"}}">
{{{@root.config.Icons.buttons.roll}}}
</a>
{{/if}}
<a class="btn item-control" data-action="edit" data-tooltip="{{localize "FLBR.BUTTON.Edit"}}">
{{{@root.config.Icons.buttons.edit}}}
</a>
<a class="btn item-control" data-action="chat" data-tooltip="{{localize "FLBR.BUTTON.ToChat"}}">
{{{@root.config.Icons.buttons.chat}}}
</a>
{{#if (and hasAttack (eq @root.actor.type "vehicle"))}}
{{#if system.mounted}}
<a class="btn item-control" data-action="unmount" data-tooltip="{{localize "FLBR.BUTTON.Unmount"}}">
{{{@root.config.Icons.buttons.unmount}}}
</a>
{{else}}
<a class="btn item-control" data-action="mount" data-tooltip="{{localize "FLBR.BUTTON.Mount"}}">
{{{@root.config.Icons.buttons.mount}}}
</a>
{{/if}}
{{/if}}
{{#unless system.mounted}}
<a class="btn item-delete" data-tooltip="{{localize "FLBR.BUTTON.Delete"}}">
{{{@root.config.Icons.buttons.remove}}}
</a>
<a class="btn item-delete-confirmed" style="display: none;" data-tooltip="{{localize "FLBR.BUTTON.Delete"}}">
{{{@root.config.Icons.buttons.delete}}}
</a>
{{/unless}}
</div>
</div>
{{else}}
<div class="empty-inventory">
{{localize "FLBR.InventoryNoItem"}}
</div>
{{/each}}
</div>
+27
View File
@@ -0,0 +1,27 @@
<form class="{{cssClass}}" autocomplete="off">
<div class="loot-container">
<div class="loot-name">
<input type="text" name="name" value="{{actor.name}}"/>
</div>
<div class="avatar">
<img class="profile" src="{{actor.img}}" data-edit="img" data-tooltip="{{actor.name}}"/>
</div>
<div class="loot-notes boxed-property">
<h3>{{localize "FLBR.HEADER.Notes"}}</h3>
<div>
{{{editor system.description target="system.description" button=true editable=editable}}}
</div>
</div>
<div class="loot-type">{{localize "TYPES.Actor.loot"}}</div>
<div class="loot-inventory boxed-property">
<h3>{{localize "FLBR.HEADER.Inventory"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=items}}
</div>
</div>
</form>
+205
View File
@@ -0,0 +1,205 @@
<form class="{{cssClass}} zero-engine npc-sheet" autocomplete="off">
{{!-- SHEET HEADER --}}
<div class="sheet-header">
{{!-- TOP ROW: Portrait + Name --}}
<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="NPC Name"/>
</div>
<div class="header-top-stats">
<div class="mini-stat">
<span class="mini-stat-label">Threat</span>
<input type="number" name="system.threat" value="{{system.threat}}" placeholder="1" min="1" max="5"/>
</div>
<div class="mini-stat">
<span class="mini-stat-label">Armor</span>
<input type="number" name="system.armor" value="{{system.armor}}" placeholder="0" min="0"/>
</div>
</div>
</div>
</div>
{{!-- VITALS ROW: Health --}}
<div class="header-vitals-row">
<div class="vital-box health-box">
<label>Health</label>
<div class="vital-values">
<input type="number" name="system.health.value" value="{{system.health.value}}" />
<span class="vital-separator">/</span>
<input type="number" name="system.health.max" value="{{system.health.max}}" />
</div>
</div>
<div class="vital-box">
<label>Base Damage</label>
<input type="number" name="system.damage" value="{{system.damage}}" min="0" style="width:3rem;"/>
</div>
</div>
{{!-- Active conditions from SLA status effects --}}
{{#if activeConditions.length}}
<div class="active-conditions-row">
{{#each activeConditions}}
<div class="condition-tag {{this.id}}" title="{{this.description}}">
<i class="{{this.icon}}"></i>
<span class="condition-label">{{this.label}}</span>
<button type="button" class="condition-clear-btn" data-condition-id="{{this.id}}" title="Clear condition">✕</button>
</div>
{{/each}}
</div>
{{/if}}
</div>
{{!-- SHEET TABS --}}
<div class="sheet-tabs">
<a class="item" data-tab="stats">
<i class="fas fa-chart-bar"></i> Stats
</a>
<a class="item" data-tab="combat">
<i class="fas fa-fist-raised"></i> Combat
</a>
<a class="item" data-tab="bio">
<i class="fas fa-user"></i> Bio
</a>
</div>
{{!-- SHEET BODY --}}
<div class="sheet-body">
{{!-- STATS TAB --}}
<div class="tab" data-tab="stats">
<div class="section-header">Attributes</div>
<div class="attr-skill-table" style="grid-template-columns: repeat(4,1fr);">
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Strength</div>
<div class="attr-value-row">
<div class="attr-value">{{system.attributes.strength}}</div>
<input type="hidden" name="system.attributes.strength" value="{{system.attributes.strength}}" />
</div>
</div>
</div>
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Agility</div>
<div class="attr-value-row">
<div class="attr-value">{{system.attributes.agility}}</div>
<input type="hidden" name="system.attributes.agility" value="{{system.attributes.agility}}" />
</div>
</div>
</div>
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Wits</div>
<div class="attr-value-row">
<div class="attr-value">{{system.attributes.wits}}</div>
<input type="hidden" name="system.attributes.wits" value="{{system.attributes.wits}}" />
</div>
</div>
</div>
<div class="attr-column">
<div class="attr-header">
<div class="attr-name">Empathy</div>
<div class="attr-value-row">
<div class="attr-value">{{system.attributes.empathy}}</div>
<input type="hidden" name="system.attributes.empathy" value="{{system.attributes.empathy}}" />
</div>
</div>
</div>
</div>
</div>
{{!-- COMBAT TAB --}}
<div class="tab" data-tab="combat">
{{!-- 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>AP</strong> {{this.system.ap}}</span>
</div>
</div>
<div class="weapon-actions">
<button type="button" class="weapon-roll-btn"
data-item-id="{{this._id}}" data-weapon-category="ranged"
title="Roll attack">
<i class="fas fa-dice-d6"></i> ATTACK
</button>
</div>
</div>
{{/each}}
{{#unless rangedWeapons.length}}
<div class="weapon-empty"><em>No ranged weapons.</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>
</div>
</div>
<div class="weapon-actions">
<button type="button" class="weapon-roll-btn"
data-item-id="{{this._id}}" data-weapon-category="melee"
title="Roll melee attack">
<i class="fas fa-fist-raised"></i> ATTACK
</button>
</div>
</div>
{{/each}}
{{#unless meleeWeapons.length}}
<div class="weapon-empty"><em>No melee weapons. Base damage: {{system.damage}}.</em></div>
{{/unless}}
</div>
</div>
</div>
{{!-- BIO TAB --}}
<div class="tab" data-tab="bio">
<div class="bio-section">
<h2>Biography / Notes</h2>
<div class="editor">
<textarea name="system.biography" rows="16" placeholder="NPC notes, background, motivation...">{{system.biography}}</textarea>
</div>
</div>
</div>
</div>
</form>
@@ -0,0 +1,42 @@
{{#with occupant}}
<div class="vehicle-seat occupied{{#if isBroken}} broken{{/if}}" data-action="roll-occupant" data-occupant-id="{{id}}" data-tooltip="{{name}}<hr/>{{localize "FLBR.HEADER.Health"}}: {{system.health.value}}/{{system.health.max}}" data-tooltip-direction="UP">
<img class="rollable" src="{{img}}"/>
{{#if (lt system.health.ratio 1)}}
<div class="attribute-bar bar1">
<div
class="attribute-bar-progress"
style="background-color: {{healthBarColor}}; width: {{multiply system.health.ratio 100}}%;"
></div>
</div>
{{/if}}
{{#if (and (eq system.subtype "pc") (lt system.resolve.ratio 1))}}
<div class="attribute-bar bar2">
<div
class="attribute-bar-progress"
style="background-color: {{resolveBarColor}}; width: {{multiply system.resolve.ratio 100}}%;"
></div>
</div>
{{/if}}
{{#if isBroken}}
<div class="seat-icon broken">{{{@root.config.Icons.buttons.lethal}}}</div>
{{/if}}
</div>
{{else}}
{{#if (and @root.isGM (eq seat -1))}}
<div class="vehicle-seat button" data-action="add-occupant" data-tooltip="{{localize "FLBR.VEHICLE.AddSeat"}}" data-tooltip-direction="RIGHT">
<div class="seat-icon">{{{@root.config.Icons.buttons.plus}}}</div>
</div>
{{else if (eq seat -1)}}
{{! Nothing}}
{{else}}
<div class="vehicle-seat empty">
<div class="seat-icon">
{{#if (eq seat 1)}}
{{{@root.config.Icons.buttons.wheel}}}
{{else}}
{{{@root.config.Icons.buttons.seat}}}
{{/if}}
</div>
</div>
{{/if}}
{{/with}}
+176
View File
@@ -0,0 +1,176 @@
<form class="{{cssClass}}{{#if actor.isBroken}} broken{{/if}}" autocomplete="off">
{{!-- SHEET HEADER --}}
<div class="sheet-header">
<div class="container-header">
<div class="vehicle-name">
<input type="text" name="name" value="{{actor.name}}"/>
</div>
<div class="avatar">
<img class="profile" src="{{actor.img}}" data-edit="img" data-tooltip="{{actor.name}}"/>
</div>
<div class="vehicle-stats">
<div class="stat-blok stat-blok-mvr">
<div class="attribute-name">
<label>
<a class="mvr-roll">
{{trim (localize "FLBR.ATTRIBUTE.MVR") 8}}
</a>
</label>
</div>
{{#with system.maneuverability}}
<div class="attribute-score">
{{scoreSelector "system.maneuverability" selected=this}}
</div>
<div class="attribute-size">
<div class="boxed-value mvr-roll rollable">
{{#if (lte this 0)}}
{{localize "FLBR.NO_VALUE"}}
{{else}}
{{localize "FLBR.D"}}{{this}}
{{/if}}
</div>
</div>
{{/with}}
</div>
<div class="capacities">
<div class="hull boxed-property {{#if (lte system.hull.value 0)}} broken{{else if (lte (ratio system.hull.value system.hull.max) 50)}} half{{/if}}">
<h3>
{{localize "FLBR.HEADER.Hull"}}
{{#if (lte system.hull.value 0)}}
<b>({{toUpperCase (localize "FLBR.Wrecked")}})</b>
{{/if}}
<span class="capacity-rating">{{system.hull.value}}/{{system.hull.max}}</span>
</h3>
{{boxes "system.hull.value" value=system.hull.value min=0 max=system.hull.max}}
</div>
</div>
<div class="vehicle-properties boxed-property">
<div class="vehicle-property vehicle-property-armor">
<label>
<a class="roll-vehicle-armor">
{{localize "FLBR.ItemArmor"}} ({{localize "FLBR.D"}}{{system.armor}})
</a>
</label>
{{scoreSelector "system.armor" selected=system.armor}}
</div>
<hr/>
<div class="vehicle-property vehicle-property-availability">
<label>{{localize "FLBR.ItemAvailability"}}</label>
<select name="system.availability" data-dtype="Number">
{{selectOptions config.availabilities selected=system.availability localize=true}}
</select>
</div>
<hr/>
<div class="vehicle-property vehicle-property-cost">
<label>{{localize "FLBR.ItemCost"}}</label>
<input type="text" name="system.cost" value="{{system.cost}}" data-dtype="Number"/>
</div>
</div>
</div>
<div class="vehicle-type">{{localize "TYPES.Actor.vehicle"}}</div>
<div class="vehicle-crew boxed-property">
<h4>{{trim (localize "FLBR.VEHICLE.Crew") 7}}</h4>
{{#times system.passengers}}
{{> systems/blade-runner/templates/actor/vehicle/vehicle-seat-partial.hbs occupant=(lookup ../crew (add @index -1)) seat=@index}}
{{/times}}
{{> systems/blade-runner/templates/actor/vehicle/vehicle-seat-partial.hbs seat=-1}}
</div>
</div>
</div>
{{!-- SHEET TABS --}}
<div class="sheet-tabs" data-group="primary">
<a class="sheet-tab" data-tab="combat">{{{config.Icons.buttons.range}}}&nbsp;{{localize "FLBR.TAB.Combat"}}</a>
<a class="sheet-tab" data-tab="inventory">{{{config.Icons.tabs.inventory}}}&nbsp;{{localize "FLBR.TAB.Inventory"}}</a>
<a class="sheet-tab" data-tab="bio">{{{config.Icons.tabs.bio}}}&nbsp;{{localize "FLBR.HEADER.Notes"}}</a>
</div>
{{!-- SHEET BODY --}}
<div class="sheet-body">
<div class="tab" data-group="primary" data-tab="combat">
<div class="container">
{{!-- Mounted Weapons --}}
<div class="mounted-weapons boxed-property">
<h3>{{localize "FLBR.VEHICLE.MountedWeapons"}}</h3>
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=mountedWeapons wrap=true}}
</div>
<div class="combat-options">
{{!-- Altitude --}}
<div class="vehicle-altitude boxed-property">
<label>{{localize "FLBR.VEHICLE.Altitude"}}</label>
<input type="text" name="system.altitude" value="{{system.altitude}}" data-dtype="Number"/>
</div>
{{!-- Components --}}
<div class="boxed-property">
<h4>{{localize "FLBR.VEHICLE.Components"}}</h4>
<div class="vehicle-components">
{{#each system.components}}
<div class="vehicle-component{{#unless ../isGM}}{{#unless this}} disabled{{/unless}}{{/unless}}">
<label class="switch">
<input type="checkbox" id="component_{{@key}}" name="system.components.{{@key}}" {{checked this}}/>
<span class="slider red"></span>
</label>
<label for="component_{{@key}}">
<a>{{localize (concat "FLBR.VEHICLE." (capitalize @key))}}</a>
</label>
</div>
{{/each}}
</div>
</div>
{{!-- Actions --}}
<div class="actions boxed-property">
<h4>{{localize "FLBR.HEADER.Actions"}}</h4>
{{#each actions}}
<a class="action-roll" data-action="{{id}}" data-tooltip="{{localize hint}}">{{{@root.config.Icons.buttons.action}}}{{localize label}}</a>
{{/each}}
</div>
</div>
{{!-- Active Effects --}}
{{#if showEffects}}
<div class="active-effects boxed-property">
<h4>
{{localize "DOCUMENT.ActiveEffects"}}
<a class="btn add-active-effect" data-tooltip="{{localize "FLBR.ACTIVE_EFFECT.Add"}}">
{{{@root.config.Icons.buttons.plus}}}
</a>
</h4>
{{> systems/blade-runner/templates/item/active-effects-partial.hbs}}
</div>
{{/if}}
</div>
</div>
<div class="tab" data-group="primary" data-tab="inventory">
<div class="vehicle-inventory boxed-property">
{{> systems/blade-runner/templates/actor/inventory-partial.hbs items=trunk wrap=true}}
</div>
</div>
<div class="tab" data-group="primary" data-tab="bio">
<div class="boxed-property">
{{{editor system.description target="system.description" button=true editable=editable}}}
</div>
</div>
</div>
</form>