- templates/actor/actor-sheet.html: red conditions bar shown below Strength/Speed/Intellect/Combat stats whenever any condition items are active; displays condition name and severity - module/mosh.js: GM-only 30-minute interval timer that whispers a formatted conditions report to all GMs listing every actor with active conditions and their severities - css/mosh.css: styles for .sla-active-conditions-summary, .sla-conditions-label, .sla-active-condition (red text, dark red border/background)
1278 lines
71 KiB
HTML
1278 lines
71 KiB
HTML
<form class="{{cssClass}} flexcol sla-sheet-theme-{{slaSheetTheme}}" data-sla-theme="{{slaSheetTheme}}" autocomplete="off">
|
||
|
||
{{!-- Sheet Header --}}
|
||
<header class="char-header header-grid">
|
||
|
||
<div class="header-fields header-grid">
|
||
{{!-- The grid classes are defined in scss/global/_grid.scss. To use,
|
||
use both the "grid" and "grid-Ncol" class where "N" can be any number
|
||
from 1 to 12 and will create that number of columns. --}}
|
||
{{!-- The grid classes are defined in scss/global/_grid.scss. To use,
|
||
use both the "grid" and "grid-Ncol" class where "N" can be any number
|
||
from 1 to 12 and will create that number of columns. --}}
|
||
|
||
<div class="header">
|
||
<img class="profile" src="{{img}}" data-edit="img" title="{{name}}" height="150"
|
||
width="150" />
|
||
|
||
<div class="headergrid">
|
||
<div class="sla-sheet-wordmark">SLA Industries</div>
|
||
|
||
{{!-- REST button — top-right, above Race --}}
|
||
<div class="header-field header-field-rest">
|
||
<button type="button" class="sla-sheet-action sla-rest-button sla-header-rest-pill" title="Take a short or long rest">REST</button>
|
||
</div>
|
||
|
||
{{!-- ROW 2: Name / Class / Race --}}
|
||
<!-- PLAYER NAME -->
|
||
<div class="headernamegrid header-field header-field-name">
|
||
<div class="headerinputtext">{{ localize 'Mosh.Name' }}</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="name" class="noborder" type="text"
|
||
value="{{name}}" placeholder="{{ localize 'Mosh.Name' }}" /></div>
|
||
</div>
|
||
|
||
<!-- CLASS -->
|
||
<div class="header-field header-field-class">
|
||
<div class="headerinputtext">{{ localize 'Mosh.CLASS' }}</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="system.class.value" class="noborder" type="text"
|
||
value="{{system.class.value}}" placeholder="" /></div>
|
||
</div>
|
||
|
||
<!-- RACE -->
|
||
<div class="header-field header-field-race">
|
||
<div class="headerinputtext">Race</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="system.rank.value" class="noborder" type="text"
|
||
value="{{system.rank.value}}" placeholder="" /></div>
|
||
</div>
|
||
|
||
{{!-- ROW 3: Bottom row — all equal width, same font --}}
|
||
<div class="sla-header-bottom-row">
|
||
<div class="header-field header-field-lad">
|
||
<div class="headerinputtext">L.A.D.</div>
|
||
<label class="sla-header-checkbox" title="Life After Death">
|
||
<input type="checkbox" name="system.sla.lad" data-dtype="Boolean" {{checked system.sla.lad}} />
|
||
<span>L.A.D.</span>
|
||
</label>
|
||
</div>
|
||
<div class="header-field header-field-credits">
|
||
<div class="headerinputtext">{{ localize 'Mosh.Credits' }}</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="system.credits.value" class="noborder" type="text"
|
||
value="{{system.credits.value}}" placeholder="" /></div>
|
||
</div>
|
||
<div class="header-field header-field-sla-rank">
|
||
<div class="headerinputtext">S.C.L.</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="system.attributes.level.value" class="noborder"
|
||
type="text" value="{{system.attributes.level.value}}" placeholder="" /></div>
|
||
</div>
|
||
<div class="header-field header-field-height">
|
||
<div class="headerinputtext">Height</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="system.sla.height.value" class="noborder" type="text"
|
||
value="{{system.sla.height.value}}" placeholder="" /></div>
|
||
</div>
|
||
<div class="header-field header-field-weight">
|
||
<div class="headerinputtext">Weight</div>
|
||
<div class="headerinputfield sla-header-input charname"><input name="system.sla.weightText.value" class="noborder" type="text"
|
||
value="{{system.sla.weightText.value}}" placeholder="" /></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="health grid grid-2col" style="margin-top: 0; grid-template-rows: repeat(4, minmax(92px, auto)); row-gap: 12px; align-content: start;">
|
||
<!-- Health -->
|
||
<div class="resource healthspread minmaxtopstat">
|
||
<div class="sla-health-label-row">
|
||
<label for="system.health.value" class="resource-label minmaxtext sla-stat-heading">{{ localize 'Mosh.Health' }}</label>
|
||
<button type="button" class="sla-inline-mini-button sla-health-reset" title="Reset current health to maximum">Reset</button>
|
||
</div>
|
||
|
||
<div class="minmaxwrapper">
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.health.value" value="{{system.health.value}}"
|
||
data-dtype="Number" />
|
||
<div class="slant"></div>
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.health.max"
|
||
value="{{system.health.max}}" data-dtype="Number" />
|
||
</div>
|
||
|
||
<div class="healthmaxtext">{{ localize 'Mosh.Current' }}</div>
|
||
<div class="healthmaxtext">{{ localize 'Mosh.Maximum' }}</div>
|
||
</div>
|
||
|
||
<!-- Hits -->
|
||
<div class="resource healthspread minmaxtopstat">
|
||
<label for="system.hits.value" class="resource-label minmaxtext sla-stat-heading">
|
||
{{#if system.settings.firstEdition}}
|
||
{{ localize 'Mosh.Wounds' }}
|
||
{{else}}
|
||
{{ localize 'Mosh.Hits' }}
|
||
{{/if}}
|
||
</label>
|
||
|
||
<div class="minmaxwrapper">
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.hits.value" value="{{system.hits.value}}"
|
||
data-dtype="Number" />
|
||
<div class="slant"></div>
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.hits.max"
|
||
value="{{system.hits.max}}" data-dtype="Number" />
|
||
</div>
|
||
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Current' }}</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Maximum' }}</div>
|
||
</div>
|
||
|
||
{{#if system.settings.useCalm}}
|
||
<!-- Calm -->
|
||
<div class="resource healthspread minmaxtopstat">
|
||
<label for="system.other.stress.value" class="resource-label minmaxtext rollable calm-roll sla-stat-heading">{{ localize 'Mosh.Calm' }}</label>
|
||
|
||
<div class="minmaxwrapper">
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.other.stress.value" value="{{system.other.stress.value}}"
|
||
data-dtype="Number" />
|
||
<div class="slant"></div>
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.other.stress.max"
|
||
value="{{system.other.stress.max}}" data-dtype="Number" />
|
||
</div>
|
||
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Current' }}</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Maximum' }}</div>
|
||
</div>
|
||
{{else}}
|
||
<!-- Stress -->
|
||
<div class="resource healthspread minmaxtopstat">
|
||
<label for="system.other.stress.value" class="resource-label minmaxtext rollable stress-roll sla-stat-heading">{{ localize 'Mosh.Stress' }}</label>
|
||
<div class="minmaxwrapper">
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.other.stress.value" value="{{system.other.stress.value}}"
|
||
data-dtype="Number" />
|
||
<div class="slant"></div>
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.other.stress.min"
|
||
value="{{system.other.stress.min}}" data-dtype="Number" />
|
||
</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Current' }}</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Minimum' }}</div>
|
||
</div>
|
||
{{/if}}
|
||
|
||
{{#if isEbbUser}}
|
||
<div class="resource healthspread minmaxtopstat">
|
||
<label for="system.sla.flux.value" class="resource-label minmaxtext sla-stat-heading">Flux</label>
|
||
<div class="minmaxwrapper">
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.sla.flux.value" value="{{system.sla.flux.value}}"
|
||
data-dtype="Number" />
|
||
<div class="slant"></div>
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.sla.flux.max"
|
||
value="{{system.sla.flux.max}}" data-dtype="Number" />
|
||
</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Current' }}</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.Maximum' }}</div>
|
||
</div>
|
||
{{else}}
|
||
{{#if system.settings.firstEdition}}
|
||
{{else}}
|
||
<!-- Resolve -->
|
||
<div class="resource healthspread minmaxtopstat">
|
||
<label for="system.other.resolve.value" class="resource-label minmaxtext sla-stat-heading">{{ localize 'Mosh.Resolve' }}</label>
|
||
<div class="valuewrapper">
|
||
<input class="maxhealth-input darkGreyText" type="text" name="system.other.resolve.value" value="{{system.other.resolve.value}}" data-dtype="Number" />
|
||
</div>
|
||
</div>
|
||
{{/if}}
|
||
{{/if}}
|
||
|
||
{{#if system.settings.firstEdition}}
|
||
<!-- Armor -->
|
||
<div class="resource healthspread minmaxtopstat" style="{{#if isEbbUser}}grid-column-start: 1; grid-column-end: 3;{{else}}grid-column-start: 2; grid-column-end: 3;{{/if}}">
|
||
<label for="system.stats.armor.value" class="resource-label minmaxtext rollable armor-roll sla-stat-heading">{{ localize 'Mosh.Armor' }}</label>
|
||
<div class="minmaxwrapper sla-armor-track" style="width: 100%; border-radius: 0.3em;">
|
||
<div class="maxhealth-input sla-armor-value-cell" style="display: flex;">
|
||
<div class="whiteText sla-armor-main" type="text" data-dtype="Number">{{system.stats.armor.mod}}</div>
|
||
{{#if (compare 'str' system.stats.armor.cover '===' 'insignificant')}}
|
||
<div class="highlightText sla-armor-cover-bonus" type="text" data-dtype="Number" style="font-size: 0.8rem;"> 5</div>
|
||
{{/if}}
|
||
{{#if (compare 'str' system.stats.armor.cover '===' 'light')}}
|
||
<div class="highlightText sla-armor-cover-bonus" type="text" data-dtype="Number" style="font-size: 0.8rem;"> 10</div>
|
||
{{/if}}
|
||
{{#if (compare 'str' system.stats.armor.cover '===' 'heavy')}}
|
||
<div class="highlightText sla-armor-cover-bonus" type="text" data-dtype="Number" style="font-size: 0.8rem;"> 20</div>
|
||
{{/if}}
|
||
</div>
|
||
<div class="slant sla-armor-divider" style="transform: skewX(0deg);"></div>
|
||
<div class="maxhealth-input sla-armor-value-cell" style="display: flex;">
|
||
<div class="whiteText sla-armor-main" type="text" data-dtype="Number">{{system.stats.armor.damageReduction}}</div>
|
||
{{#if (compare 'str' system.stats.armor.cover '===' 'heavy')}}
|
||
<div class="highlightText sla-armor-cover-bonus" type="text" data-dtype="Number" style="font-size: 0.8rem;"> 5</div>
|
||
{{/if}}
|
||
</div>
|
||
</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.ArmorPoints' }}</div>
|
||
<div class="healthmaxtext sla-stat-subheading">{{ localize 'Mosh.DMGReduction' }}</div>
|
||
</div>
|
||
{{/if}}
|
||
<!-- Trauma Response -->
|
||
<div class="sla-trauma-panel" style="margin-left: 6px; margin-right: 0px; flex: 0; grid-column-start: 1; grid-column-end: 3;">
|
||
<div class="resource-label sla-stat-heading sla-trauma-heading">{{ localize 'Mosh.TraumaResponse' }}</div>
|
||
<div class="sla-trauma-controls">
|
||
<label class="sla-trauma-toggle" title="Mark the trauma response as used this session">
|
||
<input type="checkbox" class="sla-session-ability-used" {{checked system.sla.sessionAbilityUsed}} />
|
||
<span>Used This Session</span>
|
||
</label>
|
||
<button type="button" class="sla-inline-mini-button sla-new-session" title="Reset trauma response use for a new session">New Session</button>
|
||
</div>
|
||
<textarea name="system.other.stressdesc.value" rows="4" class="textarea-input trauma-response-box" type="text"
|
||
data-target="system.other.stressdesc.value" placeholder="Trauma response">{{system.other.stressdesc.value}}</textarea>
|
||
</div>
|
||
|
||
<!-- XP -->
|
||
<!-- <div class="char-pip-button list-roll flex" data-key="xp" data-label="XP" data-max="8" data-min="0">
|
||
{{{system.xp.html}}}
|
||
</div> -->
|
||
|
||
</div>
|
||
|
||
<div class="abilities">
|
||
<!-- <div class="grid grid-2col"> -->
|
||
<!-- STRESS -->
|
||
<!-- <div class="resource mainstat">
|
||
<div class="stresslabel">
|
||
<div class="ability-mod stresstext">STRESS</div>
|
||
</div>
|
||
<input class="smallcircle-input" type="text" name="system.other.stress.value"
|
||
value="{{system.other.stress.value}}" data-dtype="Number" />
|
||
</div> -->
|
||
|
||
<!-- RESOLVE -->
|
||
<!-- <div class="resource mainstat">
|
||
<div class="stresslabel">
|
||
<div class="ability-mod stresstext">RESOLVE</div>
|
||
</div>
|
||
<input class="smallcircle-input" type="text" name="system.other.resolve.value"
|
||
value="{{system.other.resolve.value}}" data-dtype="Number" />
|
||
</div> -->
|
||
<!-- </div> -->
|
||
|
||
{{#if system.settings.firstEdition}}
|
||
<div class="grid grid-1col widegap">
|
||
{{else}}
|
||
<div class="grid grid-1col widegap" style="gap: 24px">
|
||
{{/if}}
|
||
|
||
<!-- Strength -->
|
||
<div class="mainstatwrapper">
|
||
<div class="resource mainstat">
|
||
<div class="mainstatlabel">
|
||
<span class="ability-mod stat-roll rollable mainstattext" data-key="strength"
|
||
data-label="{{ localize 'Mosh.Strength' }}">{{ localize 'Mosh.Strength' }}</span>
|
||
</div>
|
||
<input class="circle-input" type="text" name="system.stats.strength.value"
|
||
value="{{system.stats.strength.value}}" data-dtype="Number" />
|
||
</div>
|
||
<input class="mainstatmod-input" type="text" name="system.stats.strength.mod"
|
||
value="{{system.stats.strength.mod}}" data-dtype="Number" title="{{slaStatModifierTitles.strength}}" />
|
||
<div class="mainstatmod-title">+</div>
|
||
</div>
|
||
|
||
<!-- Speed -->
|
||
<div class="mainstatwrapper">
|
||
<div class="resource mainstat">
|
||
<div class="mainstatlabel">
|
||
<span class="ability-mod stat-roll rollable mainstattext" data-key="speed" data-roll="d100"
|
||
data-label="{{ localize 'Mosh.Speed' }}">{{ localize 'Mosh.Speed' }}</span>
|
||
</div>
|
||
<input class="circle-input" type="text" name="system.stats.speed.value" value="{{system.stats.speed.value}}"
|
||
data-dtype="Number" />
|
||
</div>
|
||
<input class="mainstatmod-input" type="text" name="system.stats.speed.mod" value="{{system.stats.speed.mod}}"
|
||
data-dtype="Number" title="{{slaStatModifierTitles.speed}}" />
|
||
<div class="mainstatmod-title">+</div>
|
||
</div>
|
||
|
||
<!-- Intellect -->
|
||
<div class="mainstatwrapper">
|
||
<div class="resource mainstat">
|
||
<div class="mainstatlabel">
|
||
<span class="ability-mod stat-roll rollable mainstattext" data-key="intellect" data-roll="d100"
|
||
data-label="{{ localize 'Mosh.Intellect' }}">{{ localize 'Mosh.Intellect' }}</span>
|
||
</div>
|
||
<input class="circle-input" type="text" name="system.stats.intellect.value"
|
||
value="{{system.stats.intellect.value}}" data-dtype="Number" />
|
||
</div>
|
||
<input class="mainstatmod-input" type="text" name="system.stats.intellect.mod"
|
||
value="{{system.stats.intellect.mod}}" data-dtype="Number" title="{{slaStatModifierTitles.intellect}}" />
|
||
<div class="mainstatmod-title">+</div>
|
||
</div>
|
||
|
||
<!-- Combat -->
|
||
<div class="mainstatwrapper">
|
||
<div class="resource mainstat">
|
||
<div class="mainstatlabel">
|
||
<span class="ability-mod stat-roll rollable mainstattext" data-key="combat" data-roll="d100"
|
||
data-label="{{ localize 'Mosh.Combat' }}">{{ localize 'Mosh.Combat' }}</span>
|
||
</div>
|
||
<input class="circle-input" type="text" name="system.stats.combat.value" value="{{system.stats.combat.value}}"
|
||
data-dtype="Number" />
|
||
</div>
|
||
<input class="mainstatmod-input" type="text" name="system.stats.combat.mod" value="{{system.stats.combat.mod}}"
|
||
data-dtype="Number" title="{{slaStatModifierTitles.combat}}" />
|
||
<div class="mainstatmod-title">+</div>
|
||
</div>
|
||
</div>
|
||
<div class="sla-mainstat-action-strip">
|
||
<button type="button" class="sla-sheet-action sla-wound-button">Wound</button>
|
||
</div>
|
||
{{#if conditions.length}}
|
||
<div class="sla-active-conditions-summary">
|
||
<span class="sla-conditions-label">CONDITIONS:</span>
|
||
{{#each conditions as |condition|}}
|
||
<span class="sla-active-condition">{{condition.name}}{{#if condition.system.severity}} {{condition.system.severity}}{{/if}}</span>
|
||
{{/each}}
|
||
</div>
|
||
{{/if}}
|
||
</div>
|
||
<!-- SAVES -->
|
||
{{#if system.settings.firstEdition}}
|
||
<div class="saves grid grid-1col savebackground">
|
||
{{else}}
|
||
<div class="saves grid grid-1col savebackground" style = "height: 264px;">
|
||
{{/if}}
|
||
<!-- Sanity -->
|
||
<div class="resource flex-group-center">
|
||
<span class="ability-mod stat-roll rollable savetext" data-roll="d100" data-label="Sanity" data-key="sanity" data-target="{{system.stats.sanity.value}}">{{ localize 'Mosh.Sanity' }}</span>
|
||
<div class="grid grid-3col" style="grid-template-columns: 44px 14px 42px; margin-left:6px;">
|
||
<input class="square-input" type="text" name="system.stats.sanity.value" value="{{system.stats.sanity.value}}" data-dtype="Number" />
|
||
<div class="mainstatmod-title" style="top: 10px;">+</div>
|
||
<input class="mainsavemod-input" style="top: 5px;" type="text" name="system.stats.sanity.mod" value="{{system.stats.sanity.mod}}" data-dtype="Number" title="{{slaStatModifierTitles.sanity}}" />
|
||
</div>
|
||
</div>
|
||
<!-- Fear -->
|
||
<div class="resource flex-group-center">
|
||
<span class="ability-mod stat-roll rollable savetext" data-roll="d100" data-key="fear" data-target="{{system.stats.fear.value}}" data-label="{{ localize 'Mosh.Fear' }}">{{ localize 'Mosh.Fear' }}</span>
|
||
<div class="grid grid-3col" style="grid-template-columns: 44px 14px 42px; margin-left:6px;">
|
||
<input class="square-input" type="text" name="system.stats.fear.value" value="{{system.stats.fear.value}}" data-dtype="Number" />
|
||
<div class="mainstatmod-title" style="top: 10px;">+</div>
|
||
<input class="mainsavemod-input" style="top: 5px;" type="text" name="system.stats.fear.mod" value="{{system.stats.fear.mod}}" data-dtype="Number" title="{{slaStatModifierTitles.fear}}" />
|
||
</div>
|
||
</div>
|
||
<!-- Body -->
|
||
<div class="resource flex-group-center">
|
||
<span class="ability-mod stat-roll rollable savetext" data-roll="d100" data-key="body" data-target="{{system.stats.body.value}}" data-label="{{ localize 'Mosh.Body' }}">{{ localize 'Mosh.Body' }}</span>
|
||
<div class="grid grid-3col" style="grid-template-columns: 44px 14px 42px; margin-left:6px;">
|
||
<input class="square-input" type="text" name="system.stats.body.value" value="{{system.stats.body.value}}" data-dtype="Number" />
|
||
<div class="mainstatmod-title" style="top: 10px;">+</div>
|
||
<input class="mainsavemod-input" style="top: 5px;"type="text" name="system.stats.body.mod" value="{{system.stats.body.mod}}" data-dtype="Number" title="{{slaStatModifierTitles.body}}" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sla-save-action-strip">
|
||
<button type="button" class="sla-sheet-action sla-panic-button">Panic</button>
|
||
</div>
|
||
|
||
{{#unless system.settings.firstEdition}}
|
||
<!-- Armor -->
|
||
<div class="resource flex-group-center">
|
||
<span class="ability-mod stat-roll rollable savetext" data-roll="d100" data-key="armor" data-target="{{system.stats.armor.value}}" data-label="{{ localize 'Mosh.Armor' }}">{{ localize 'Mosh.Armor' }}</span>
|
||
<div class="grid grid-3col" style="grid-template-columns: 44px 14px 42px; margin-left:6px;">
|
||
<input class="square-input" type="text" name="system.stats.armor.value" value="{{system.stats.armor.value}}" data-dtype="Number" />
|
||
<div class="mainstatmod-title" style="top: 10px;">+</div>
|
||
<div class="mainsavemod-input" style="top: 5px; padding: 5px;" type="text" name="system.stats.armor.mod" value="{{system.stats.armor.mod}}" data-dtype="Number">{{system.stats.armor.mod}}</div>
|
||
</div>
|
||
</div>
|
||
{{/unless}}
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</header>
|
||
|
||
<div class="sla-front-strip">
|
||
<div class="sla-carry-summary sla-carry-summary-inline {{#if slaCarry.over}}over{{/if}}">
|
||
<div class="sla-carry-summary-title">Carry Load</div>
|
||
<div class="sla-carry-summary-main">{{slaCarry.current}} / {{slaCarry.capacity}} kg</div>
|
||
<div class="sla-carry-summary-meta">State: {{slaCarry.state}} | Equipped {{slaCarry.equipped}} kg | Carried {{slaCarry.carried}} kg | Stowed {{slaCarry.stowed}} kg | Free {{slaCarry.available}} kg</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
{{!-- Sheet Tab Navigation --}}
|
||
<nav class="mosh sheet-tabs tabs" data-group="primary">
|
||
<a class="tab-select" data-tab="skills">{{ localize 'Mosh.Skills' }}</a>
|
||
<a class="tab-select" data-tab="weapons">{{ localize 'Mosh.Weapons' }}</a>
|
||
<a class="tab-select" data-tab="items">{{ localize 'Mosh.Items' }}</a>
|
||
<a class="tab-select" data-tab="drugs">Drugs</a>
|
||
<a class="tab-select" data-tab="sla">SLA</a>
|
||
<a class="tab-select" data-tab="traits">Traits</a>
|
||
<a class="tab-select" data-tab="special-rules">Special Rules</a>
|
||
{{#if isVevaphon}}<a class="tab-select" data-tab="morph">Morph</a>{{/if}}
|
||
{{#if isEbbUser}}<a class="tab-select" data-tab="ebb">Ebb</a>{{/if}}
|
||
<a class="tab-select" data-tab="description">{{ localize 'Mosh.Bio' }}</a>
|
||
<a class="tab-select" data-tab="notes">{{ localize 'Mosh.Notes' }}</a>
|
||
</nav>
|
||
|
||
{{!-- Sheet Body --}}
|
||
<section class="sheet-body">
|
||
|
||
{{!-- Biography Tab --}}
|
||
<div class="tab biography" data-group="primary" data-tab="description">
|
||
{{editor enriched.biography target="system.biography" button=true editable=true}}
|
||
</div>
|
||
{{!-- Notes Tab --}}
|
||
<div class="tab biography" data-group="primary" data-tab="notes">
|
||
<div class="sla-card" style="margin-bottom: 12px;">
|
||
<div class="sla-card-label">Operation Log</div>
|
||
<div class="sla-card-copy">Recent rolls, outcomes, and field actions for this operative.</div>
|
||
<textarea readonly rows="10" class="textarea-input">{{system.sla.activityLog.value}}</textarea>
|
||
</div>
|
||
<div class="sla-card" style="margin-bottom: 12px;">
|
||
<div class="sla-card-label">Ammo Economy Ledger</div>
|
||
<div class="sla-card-copy">Firing spend total: {{system.sla.ammoSpendTotal.value}} cR. Purchases are logged below as separate entries.</div>
|
||
<textarea readonly rows="6" class="textarea-input">{{system.sla.ammoLedger.value}}</textarea>
|
||
</div>
|
||
{{editor enriched.notes target="system.notes" button=true editable=true}}
|
||
</div>
|
||
<div class="tab items" data-group="primary" data-tab="sla">
|
||
<div class="sla-panel">
|
||
<div class="sla-banner">
|
||
<div>
|
||
<div class="sla-kicker">SLA Operative Profile</div>
|
||
<div class="sla-title">{{system.sla.species.value}} {{#if system.sla.trainingPackage.value}}/ {{system.sla.trainingPackage.value}}{{/if}}</div>
|
||
</div>
|
||
<div class="sla-tags">
|
||
<span class="sla-tag">{{system.sla.bpn.value}}</span>
|
||
<span class="sla-tag">SCL {{system.sla.scl.value}}</span>
|
||
{{#if isEbbUser}}<span class="sla-tag">Ebb {{system.sla.ebbRating.value}}</span>{{/if}}
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Package Focus</div>
|
||
<div class="sla-card-title">{{system.sla.trainingPackage.value}}</div>
|
||
<div class="sla-card-copy">{{system.sla.packageSummary.value}}</div>
|
||
<div class="sla-tag-row">
|
||
<span class="sla-tag">Employer {{system.sla.employer.value}}</span>
|
||
<span class="sla-tag">Sector {{system.sla.sector.value}}</span>
|
||
{{#if system.sla.packageWealth.value}}<span class="sla-tag">Wealth {{system.sla.packageWealth.value}}</span>{{/if}}
|
||
</div>
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Species Dossier</div>
|
||
<div class="sla-card-title">{{system.sla.species.value}}</div>
|
||
<div class="sla-card-copy">{{system.sla.speciesNotes.value}}</div>
|
||
<div class="sla-tag-row">
|
||
<span class="sla-tag">Operative {{system.sla.operativeType.value}}</span>
|
||
{{#if isEbbUser}}<span class="sla-tag">Flux Channel {{system.sla.ebbRating.value}}</span>{{/if}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Rules Snapshot</div>
|
||
<div class="sla-card-title">{{slaEnabledSpeciesRuleCount}} active rules</div>
|
||
<div class="sla-note-list">
|
||
{{#each slaEnabledSpeciesRules as |rule|}}
|
||
<div class="sla-note-pill">{{rule.label}}</div>
|
||
{{/each}}
|
||
</div>
|
||
{{#unless slaEnabledSpeciesRuleCount}}
|
||
<div class="sla-note-pill sla-note-pill-wide">No optional species rules are enabled right now.</div>
|
||
{{/unless}}
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Sheet Mode</div>
|
||
<div class="sla-card-title">{{#if (compare 'str' slaSheetTheme '===' 'legacy')}}Legacy{{else}}Modern SLA{{/if}}</div>
|
||
<div class="sla-card-copy">Use the palette button in the header to swap the entire presentation style without changing the operative data.</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col" style="gap: 12px; margin-bottom: 12px;">
|
||
<div class="resource">
|
||
<label class="resource-label">Species</label>
|
||
<input type="text" name="system.sla.species.value" value="{{system.sla.species.value}}" data-dtype="String" />
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">Training Package</label>
|
||
<input type="text" name="system.sla.trainingPackage.value" value="{{system.sla.trainingPackage.value}}" data-dtype="String" />
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">Operative Type</label>
|
||
<input type="text" name="system.sla.operativeType.value" value="{{system.sla.operativeType.value}}" data-dtype="String" />
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">BPN Colour</label>
|
||
<input type="text" name="system.sla.bpn.value" value="{{system.sla.bpn.value}}" data-dtype="String" />
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">SCL</label>
|
||
<input type="text" name="system.sla.scl.value" value="{{system.sla.scl.value}}" data-dtype="String" />
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">Employer / Squad</label>
|
||
<input type="text" name="system.sla.employer.value" value="{{system.sla.employer.value}}" data-dtype="String" />
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">Sector / Beat</label>
|
||
<input type="text" name="system.sla.sector.value" value="{{system.sla.sector.value}}" data-dtype="String" />
|
||
</div>
|
||
{{#if isEbbUser}}
|
||
<div class="resource">
|
||
<label class="resource-label">Ebb Rating</label>
|
||
<input type="text" name="system.sla.ebbRating.value" value="{{system.sla.ebbRating.value}}" data-dtype="Number" />
|
||
</div>
|
||
{{/if}}
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Species Notes</div>
|
||
<div class="sla-note-list">
|
||
{{#each slaSpeciesTraitList as |note|}}
|
||
<div class="sla-note-pill">{{note}}</div>
|
||
{{/each}}
|
||
</div>
|
||
<textarea name="system.sla.speciesNotes.value" rows="5" class="textarea-input" data-target="system.sla.speciesNotes.value">{{system.sla.speciesNotes.value}}</textarea>
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Package Skills</div>
|
||
<div class="sla-note-list">
|
||
{{#each slaPackageSkillList as |skill|}}
|
||
<div class="sla-note-pill">{{skill}}</div>
|
||
{{/each}}
|
||
</div>
|
||
<textarea name="system.sla.packageSkills.value" rows="5" class="textarea-input" data-target="system.sla.packageSkills.value">{{system.sla.packageSkills.value}}</textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-1col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Species Rules</div>
|
||
<div class="sla-card-copy">Turn these on or off to match the version of the species rules your table is using.</div>
|
||
{{#if slaSpeciesRules.length}}
|
||
<div class="sla-rule-list">
|
||
{{#each slaSpeciesRules as |rule|}}
|
||
<label class="sla-rule-toggle">
|
||
<input type="checkbox" name="{{rule.path}}" data-dtype="Boolean" {{checked rule.enabled}} />
|
||
<span class="sla-rule-text">
|
||
<span class="sla-rule-title">{{rule.label}}{{#if rule.optional}} (Optional){{/if}}</span>
|
||
<span class="sla-rule-summary">{{rule.summary}}</span>
|
||
</span>
|
||
</label>
|
||
{{/each}}
|
||
</div>
|
||
{{else}}
|
||
<div class="sla-note-pill sla-note-pill-wide">No species-specific toggles are defined for this operative yet.</div>
|
||
{{/if}}
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tab items" data-group="primary" data-tab="traits">
|
||
<div class="sla-panel">
|
||
<div class="sla-banner">
|
||
<div>
|
||
<div class="sla-kicker">Trait Engine</div>
|
||
<div class="sla-title">Balanced Personal Traits</div>
|
||
</div>
|
||
<div class="sla-tags">
|
||
<span class="sla-tag">{{traitCount}} traits</span>
|
||
<span class="sla-tag">{{traitValidation.rankBalance.advantageRanks}} / {{traitValidation.rankBalance.disadvantageRanks}}</span>
|
||
<span class="sla-tag">{{#if traitValidation.rankBalance.balanced}}Balanced{{else}}Needs Balance{{/if}}</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sla-traits-toolbar">
|
||
<a class="item-control item-create sla-sheet-action" title="Create Trait" data-type="persTrait"><i class="fas fa-plus"></i> Trait</a>
|
||
<button type="button" class="sla-sheet-action trait-validate">Validate</button>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid" style="margin-bottom: 12px;">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Positive Traits</div>
|
||
<div class="sla-card-copy">Choose one advantage and add it to the operative.</div>
|
||
<div class="sla-trait-picker-row">
|
||
<select class="sla-trait-select" name="slaTraitPicker.advantage" data-type="advantage">
|
||
<option value="">Choose positive trait...</option>
|
||
{{#each slaPositiveTraitOptions as |trait|}}
|
||
<option value="{{trait.key}}" {{#if (compare 'str' ../slaTraitPickerSelection.advantage '===' trait.key)}}selected{{/if}}>{{trait.label}}</option>
|
||
{{/each}}
|
||
</select>
|
||
<button type="button" class="sla-sheet-action sla-trait-add" data-type="advantage">Add Positive</button>
|
||
</div>
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Negative Traits</div>
|
||
<div class="sla-card-copy">Choose one disadvantage and add it to the operative.</div>
|
||
<div class="sla-trait-picker-row">
|
||
<select class="sla-trait-select" name="slaTraitPicker.disadvantage" data-type="disadvantage">
|
||
<option value="">Choose negative trait...</option>
|
||
{{#each slaNegativeTraitOptions as |trait|}}
|
||
<option value="{{trait.key}}" {{#if (compare 'str' ../slaTraitPickerSelection.disadvantage '===' trait.key)}}selected{{/if}}>{{trait.label}}</option>
|
||
{{/each}}
|
||
</select>
|
||
<button type="button" class="sla-sheet-action sla-trait-add" data-type="disadvantage">Add Negative</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sla-traits-audit {{#if traitValidation.ok}}ok{{else}}warn sla-traits-audit-pulse{{/if}}">
|
||
<div><strong>Trait Count:</strong> {{traitCount}}</div>
|
||
<div><strong>Advantage Ranks:</strong> {{traitValidation.rankBalance.advantageRanks}}</div>
|
||
<div><strong>Disadvantage Ranks:</strong> {{traitValidation.rankBalance.disadvantageRanks}}</div>
|
||
<div><strong>Balance Net:</strong> {{traitValidation.rankBalance.net}}</div>
|
||
<div><strong>Coverage:</strong> {{traitValidation.coverage.mapped}} mapped / {{traitValidation.coverage.unmapped}} unmapped</div>
|
||
<div><strong>Status:</strong> <span class="sla-trait-balance-status {{#if traitValidation.rankBalance.balanced}}ok{{else}}warn{{/if}}">{{#if traitValidation.rankBalance.balanced}}Balanced{{else}}Needs Balance{{/if}}</span></div>
|
||
{{#if traitValidation.errors.length}}
|
||
<div class="sla-trait-audit-line"><strong>Errors:</strong> {{#each traitValidation.errors as |err|}}<span class="sla-trait-error">{{err}}</span>{{/each}}</div>
|
||
{{/if}}
|
||
{{#if traitValidation.warnings.length}}
|
||
<div class="sla-trait-audit-line"><strong>Warnings:</strong> {{#each traitValidation.warnings as |warn|}}<span class="sla-trait-warn">{{warn}}</span>{{/each}}</div>
|
||
{{/if}}
|
||
</div>
|
||
|
||
{{#if persTraitsEnhanced.length}}
|
||
<ol class="sla-trait-list">
|
||
<li class="sla-trait-row sla-trait-head">
|
||
<div>Icon</div>
|
||
<div>Trait</div>
|
||
<div>Rank</div>
|
||
<div>Type</div>
|
||
<div>State</div>
|
||
<div>Effect</div>
|
||
<div>Delete</div>
|
||
</li>
|
||
{{#each persTraitsEnhanced as |trait|}}
|
||
<li class="item sla-trait-row" data-item-id="{{trait._id}}">
|
||
<div class="sla-trait-icon item-edit" data-item-id="{{trait._id}}"><img src="{{trait.img}}" title="{{trait.name}}" /></div>
|
||
<div class="sla-trait-name item-edit" data-item-id="{{trait._id}}">{{trait.name}}</div>
|
||
<div class="sla-trait-rank">{{trait.slaTrait.rank}} / {{trait.slaTrait.maxRank}}</div>
|
||
<div class="sla-trait-type">{{trait.slaTrait.type}}</div>
|
||
<div class="sla-trait-status">{{trait.slaTrait.status}}</div>
|
||
<div class="sla-trait-effect" title="{{trait.slaTrait.effectSummary}}">{{trait.slaTrait.effectSummary}}</div>
|
||
<div class="sla-trait-delete"><a class="item-delete"><i class="fas fa-trash"></i></a></div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
{{else}}
|
||
<div class="sla-note-pill sla-note-pill-wide">No personal traits are on this operative yet. Add balanced good and bad traits here and the audit will keep track of the rank balance.</div>
|
||
{{/if}}
|
||
|
||
<div class="grid grid-2col sla-card-grid" style="margin-top: 12px;">
|
||
<div class="sla-card sla-snapshot-card sla-species-snapshot-card">
|
||
<div class="sla-card-label">Species Snapshot</div>
|
||
<div class="sla-note-list sla-snapshot-note-list">
|
||
{{#each slaSpeciesTraitList as |note|}}
|
||
<div class="sla-note-pill sla-snapshot-pill">{{note}}</div>
|
||
{{/each}}
|
||
</div>
|
||
{{#unless slaSpeciesTraitList.length}}
|
||
<div class="sla-note-pill sla-note-pill-wide sla-snapshot-pill">No species notes are currently listed for this operative.</div>
|
||
{{/unless}}
|
||
</div>
|
||
<div class="sla-card sla-snapshot-card sla-package-snapshot-card">
|
||
<div class="sla-card-label">Package Snapshot</div>
|
||
<div class="sla-note-list sla-snapshot-note-list">
|
||
{{#each slaPackageSkillList as |skill|}}
|
||
<div class="sla-note-pill sla-snapshot-pill">{{skill}}</div>
|
||
{{/each}}
|
||
</div>
|
||
{{#unless slaPackageSkillList.length}}
|
||
<div class="sla-note-pill sla-note-pill-wide sla-snapshot-pill">No package skills are currently listed for this operative.</div>
|
||
{{/unless}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="tab items" data-group="primary" data-tab="special-rules">
|
||
<div class="sla-panel">
|
||
<div class="sla-banner">
|
||
<div>
|
||
<div class="sla-kicker">Species Doctrine</div>
|
||
<div class="sla-title">{{system.sla.species.value}} Special Rules</div>
|
||
</div>
|
||
<div class="sla-tags">
|
||
<span class="sla-tag">{{system.sla.species.value}}</span>
|
||
{{#if system.sla.trainingPackage.value}}<span class="sla-tag">{{system.sla.trainingPackage.value}}</span>{{/if}}
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Rule Toggles</div>
|
||
<div class="sla-card-copy">Turn these on or off to match the version of the species rules your table is using.</div>
|
||
{{#if slaSpeciesRules.length}}
|
||
<div class="sla-rule-list">
|
||
{{#each slaSpeciesRules as |rule|}}
|
||
<label class="sla-rule-toggle">
|
||
<input type="checkbox" name="{{rule.path}}" data-dtype="Boolean" {{checked rule.enabled}} />
|
||
<span class="sla-rule-text">
|
||
<span class="sla-rule-title">{{rule.label}}{{#if rule.optional}} (Optional){{/if}}</span>
|
||
<span class="sla-rule-summary">{{rule.summary}}</span>
|
||
</span>
|
||
</label>
|
||
{{/each}}
|
||
</div>
|
||
{{else}}
|
||
<div class="sla-note-pill sla-note-pill-wide">No species-specific toggles are defined for this operative yet.</div>
|
||
{{/if}}
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Combat Rule Status</div>
|
||
{{#if slaPrometheusStatus.enabled}}
|
||
<div class="sla-note-pill sla-note-pill-wide">Prometheus Regeneration is enabled.</div>
|
||
{{#if slaPrometheusStatus.inCombat}}
|
||
<div class="sla-card-copy">Current combat round: {{slaPrometheusStatus.currentRound}}</div>
|
||
{{#if slaPrometheusStatus.pulseThisRound}}
|
||
<div class="sla-note-pill sla-note-pill-wide">Regeneration triggers this round.</div>
|
||
{{else}}
|
||
<div class="sla-card-copy">Rounds until next regeneration pulse: {{slaPrometheusStatus.roundsUntilPulse}}</div>
|
||
{{/if}}
|
||
<div class="sla-card-copy">Every fourth combat round, recover 1d5 Health automatically.</div>
|
||
{{else}}
|
||
<div class="sla-card-copy">Not currently in combat. Prometheus regeneration will trigger on rounds 4, 8, 12, and so on once combat starts.</div>
|
||
{{/if}}
|
||
{{else}}
|
||
<div class="sla-note-pill sla-note-pill-wide">No active round-based special rule is currently enabled for this operative.</div>
|
||
{{/if}}
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
{{#if isVevaphon}}
|
||
<div class="tab items" data-group="primary" data-tab="morph">
|
||
<div class="sla-panel">
|
||
<div class="sla-banner">
|
||
<div>
|
||
<div class="sla-kicker">Stormer Vevaphon</div>
|
||
<div class="sla-title">Polymorphic Form Control</div>
|
||
</div>
|
||
<div class="sla-tags">
|
||
<span class="sla-tag">Form: {{system.sla.morphForm.value}}</span>
|
||
<span class="sla-tag {{vevaphonInstabilityClass}}">Instability {{system.sla.vevaphonInstability.value}} / 12</span>
|
||
<span class="sla-tag">Sanity {{system.stats.sanity.value}}</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
{{!-- Instability Track --}}
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Instability Track</div>
|
||
<div class="sla-morph-track-bar">
|
||
<div class="sla-morph-track-fill {{vevaphonInstabilityClass}}" style="width: {{vevaphonInstabilityPercent}}%;"></div>
|
||
<span class="sla-morph-track-label">{{data.sla.vevaphonInstability.value}} / 12</span>
|
||
</div>
|
||
<div class="sla-card-copy">{{vevaphonInstabilityDesc}}</div>
|
||
<div class="sla-action-row" style="margin-top: 10px;">
|
||
<button type="button" class="sla-instability-increase sla-morph-btn-instab">+1 Instability</button>
|
||
<button type="button" class="sla-instability-decrease sla-morph-btn-instab sla-morph-btn-instab-down">−1 Instability</button>
|
||
</div>
|
||
<div class="sla-card-copy" style="margin-top: 12px; font-style: italic;">At 12, the Vevaphon is lost — immediate retirement or death.</div>
|
||
</div>
|
||
|
||
{{!-- Active Morph Form --}}
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Active Morph Form</div>
|
||
<div class="sla-card-copy" style="margin-bottom: 10px;">Each morph shift costs 1 Instability. Changing form mid-scene requires a Sanity save at Instability 6+.</div>
|
||
{{#each slaMorphForms as |form|}}
|
||
<button type="button"
|
||
class="sla-morph-shift sla-morph-form-btn {{#if form.slaIsActiveMorphForm}}sla-morph-active{{/if}}"
|
||
data-form="{{form.name}}">
|
||
<strong class="sla-morph-form-name">{{form.name}}</strong>
|
||
{{#if form.system.summary}}<div class="sla-morph-form-summary">{{form.system.summary}}</div>{{/if}}
|
||
</button>
|
||
{{/each}}
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid" style="margin-top: 12px;">
|
||
{{!-- Morph Panic Reference --}}
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Morph Panic Reference</div>
|
||
<div class="sla-card-copy">Triggered at Instability 10+ on a failed Sanity save. Roll 1d6:</div>
|
||
<div class="sla-note-list" style="margin-top: 8px;">
|
||
{{#each vevaphonMorphPanic as |entry|}}
|
||
<div class="sla-note-pill sla-note-pill-wide">{{entry.roll}}. {{entry.label}} — {{entry.desc}}</div>
|
||
{{/each}}
|
||
</div>
|
||
</div>
|
||
|
||
{{!-- Morph Notes --}}
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Morph Notes</div>
|
||
<textarea name="system.sla.morphNotes.value" rows="10" class="textarea-input" data-target="system.sla.morphNotes.value">{{system.sla.morphNotes.value}}</textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{/if}}
|
||
{{#if isEbbUser}}
|
||
<div class="tab items" data-group="primary" data-tab="ebb">
|
||
<div class="sla-panel">
|
||
<div class="sla-banner">
|
||
<div>
|
||
<div class="sla-kicker">Ebb Discipline</div>
|
||
<div class="sla-title">{{system.sla.species.value}} Flux Channel</div>
|
||
</div>
|
||
<div class="sla-tags">
|
||
<span class="sla-tag">Flux {{system.sla.flux.value}} / {{system.sla.flux.max}}</span>
|
||
<span class="sla-tag">{{slaFlux.label}}</span>
|
||
<span class="sla-tag">Fear Save {{system.stats.fear.value}}</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Flux State</div>
|
||
<div class="sla-flux-stage {{slaFlux.cssClass}}">{{slaFlux.label}}</div>
|
||
<div class="sla-card-copy">{{slaFlux.description}}</div>
|
||
<div class="sla-card-copy">Risk bands: {{slaFlux.thresholds}}</div>
|
||
<div class="sla-flux-meter">
|
||
<div class="sla-flux-meter-fill {{slaFlux.cssClass}}" style="width: {{slaFluxPercent}}%;"></div>
|
||
</div>
|
||
<div class="sla-card-copy">Reserve remaining: {{system.sla.flux.value}} / {{system.sla.flux.max}}</div>
|
||
<div class="sla-action-row">
|
||
<button type="button" class="sla-flux-save">Fear / Flux Save</button>
|
||
<button type="button" class="sla-flux-panic">Flux Panic</button>
|
||
</div>
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Ebb Skill Deck</div>
|
||
<div class="sla-card-copy">Click a discipline below to roll that Ebb skill directly. Use the ability roster underneath to channel a specific power and spend Flux.</div>
|
||
<div class="sla-ebb-skill-list">
|
||
{{#each ebbSkills as |skill|}}
|
||
<button type="button" class="sla-ebb-skill-roll" data-item-id="{{skill._id}}" title="Roll {{skill.name}}">
|
||
<span>{{skill.name}}</span>
|
||
<div class="sla-ebb-skill-meta">
|
||
<small>{{skill.system.rank}}{{#if skill.system.sla.category}} | {{skill.system.sla.category}}{{/if}}</small>
|
||
<strong>+{{skill.slaBreakdown.total}}</strong>
|
||
</div>
|
||
</button>
|
||
{{/each}}
|
||
</div>
|
||
<div class="sla-card-copy">Core and discipline skills are grouped here so powers like Awareness are easier to find. Ebb skills live here, while the actual powers are listed in the ability roster below.</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-2col sla-card-grid">
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Panic Protocol</div>
|
||
<div class="sla-note-list">
|
||
{{#each slaFluxGuidance as |entry|}}
|
||
<div class="sla-note-pill sla-note-pill-wide">{{entry}}</div>
|
||
{{/each}}
|
||
</div>
|
||
</div>
|
||
<div class="sla-card">
|
||
<div class="sla-card-label">Discipline Notes</div>
|
||
<div class="sla-card-copy">Use this space for doctrine, trainer notes, squad warnings, or sector-specific Ebb restrictions.</div>
|
||
<div class="grid grid-1col" style="gap: 12px; margin-top: 8px;">
|
||
<div class="resource">
|
||
<label class="resource-label">Flux Notes</label>
|
||
<textarea name="system.sla.fluxNotes.value" rows="5" class="textarea-input" data-target="system.sla.fluxNotes.value">{{system.sla.fluxNotes.value}}</textarea>
|
||
</div>
|
||
<div class="resource">
|
||
<label class="resource-label">Ebb Notes</label>
|
||
<textarea name="system.sla.ebbNotes.value" rows="5" class="textarea-input" data-target="system.sla.ebbNotes.value">{{system.sla.ebbNotes.value}}</textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<ol class="items-list sla-ability-list" style="margin-bottom: 12px;">
|
||
<li class="item flexrow item-header">
|
||
<div class="item-image"></div>
|
||
<div class="skill-stat" style="flex-grow: 1.7;">Ebb Ability</div>
|
||
<div class="skill-stat">Skill</div>
|
||
<div class="skill-stat">Flux</div>
|
||
<div class="skill-stat">Tier</div>
|
||
<div class="skill-stat">Save</div>
|
||
<div class="item-controls">
|
||
<a class="item-control ability-create" title="Create Ebb Ability" data-type="ability"><i class="fas fa-plus"></i> Add</a>
|
||
</div>
|
||
</li>
|
||
{{#each abilities as |ability id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{ability._id}}">
|
||
<div class="item-image"><img src="{{ability.img}}" title="{{ability.name}}" width="24" height="24" /></div>
|
||
<div class="skill-name list-roll ability-use-trigger" style="flex-grow: 1.75;" title="Use {{ability.name}}">{{ability.name}}</div>
|
||
<div class="skill-stat">{{ability.system.sla.skillRef}}</div>
|
||
<div class="skill-stat">{{ability.system.sla.fluxCost}}</div>
|
||
<div class="skill-stat">{{ability.system.sla.tier}}</div>
|
||
<div class="skill-stat">{{ability.system.sla.panicSave}}</div>
|
||
<div class="item-controls">
|
||
<a class="item-control ability-use" title="Use Ability"><i class="fas fa-bolt"></i> Use</a>
|
||
<a class="item-control ability-edit" title="Edit Ability"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="Delete Ability"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
</div>
|
||
{{/if}}
|
||
{{!-- Owned Items Tab --}}
|
||
<div class="tab items" data-group="primary" data-tab="items">
|
||
{{#if system.settings.firstEdition}}
|
||
<!-- ARMOR -->
|
||
<ol class="items-list" role="table">
|
||
<li class="item flexrow item-header" role="rowgroup">
|
||
<div class="item-image" role="cell"></div>
|
||
<div class="skill-stat" style="flex-grow: 2.5;" role="cell">{{ localize 'Mosh.ArmorName' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.AP' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.DR' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.Speed' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.Oxygen' }}</div>
|
||
<div class="skill-stat" role="cell">Carry</div>
|
||
<div class="item-controls" role="cell">
|
||
<a class="item-control item-create" title="{{ localize 'Mosh.CreateArmor' }}" data-type="armor"><i class="fas fa-plus"></i> {{ localize 'Mosh.Add' }}</a>
|
||
</div>
|
||
</li>
|
||
{{#each armors as |armor id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{armor._id}}" role="rowgroup">
|
||
<div class="item-image" role="cell"><img src="{{armor.img}}" title="{{armor.name}}" width="24" height="24" /></div>
|
||
<h4 class="skill-name list-roll description-roll" style="flex-grow: 2.55;" role="cell">{{armor.name}}</h4>
|
||
<div class="skill-stat armor-ap list-roll" role="cell">{{armor.system.armorPoints}}</div>
|
||
<div class="skill-stat armor-dr list-roll" role="cell">{{armor.system.damageReduction}}</div>
|
||
<div class="skill-stat">{{armor.system.speed}}</div>
|
||
{{#if armor.system.oxygenMax}}
|
||
<div class="skill-stat armor-oxy list-roll" role="cell">{{armor.system.oxygenCurrent}}/{{armor.system.oxygenMax}}</div>
|
||
{{else}}
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.NA' }}</div>
|
||
{{/if}}
|
||
<div class="skill-stat" role="cell">
|
||
<div class="sla-carry-toggle-row">
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' armor.slaCarry.state '===' 'equipped')}}active{{/if}}" data-state="equipped">Eqp</button>
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' armor.slaCarry.state '===' 'stowed')}}active{{/if}}" data-state="stowed">Stow</button>
|
||
</div>
|
||
<small class="sla-carry-row-text">{{armor.slaCarry.totalWeight}} kg</small>
|
||
</div>
|
||
<div class="item-controls" role="cell">
|
||
<a class="item-control item-edit" title="{{ localize 'Mosh.EditArmor' }}"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="{{ localize 'Mosh.DeleteArmor' }}"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
{{else}}
|
||
<!-- ARMOR -->
|
||
<ol class="items-list" role="table">
|
||
<li class="item flexrow item-header" role="rowgroup">
|
||
<div class="item-image" role="cell"></div>
|
||
<div class="skill-stat" style="flex-grow: 2.5;" role="cell">{{ localize 'Mosh.ArmorName' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.SaveBonus' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.Speed' }}</div>
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.Oxygen' }}</div>
|
||
<div class="skill-stat" role="cell">Carry</div>
|
||
<div class="item-controls" role="cell">
|
||
<a class="item-control item-create" title="{{ localize 'Mosh.CreateArmor' }}" data-type="armor"><i class="fas fa-plus"></i> {{ localize 'Mosh.Add' }}</a>
|
||
</div>
|
||
</li>
|
||
{{#each armors as |armor id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{armor._id}}" role="rowgroup">
|
||
<div class="item-image" role="cell"><img src="{{armor.img}}" title="{{armor.name}}" width="24" height="24" /></div>
|
||
<h4 class="skill-name list-roll description-roll" style="flex-grow: 2.55;" role="cell">{{armor.name}}</h4>
|
||
<div class="skill-stat armor-ap list-roll" role="cell">{{armor.system.armorPoints}}</div>
|
||
<div class="skill-stat">{{armor.system.speed}}</div>
|
||
{{#if armor.system.oxygenMax}}
|
||
<div class="skill-stat armor-oxy list-roll" role="cell">{{armor.system.oxygenCurrent}}/{{armor.system.oxygenMax}}</div>
|
||
{{else}}
|
||
<div class="skill-stat" role="cell">{{ localize 'Mosh.NA' }}</div>
|
||
{{/if}}
|
||
<div class="skill-stat" role="cell">
|
||
<div class="sla-carry-toggle-row">
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' armor.slaCarry.state '===' 'equipped')}}active{{/if}}" data-state="equipped">Eqp</button>
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' armor.slaCarry.state '===' 'stowed')}}active{{/if}}" data-state="stowed">Stow</button>
|
||
</div>
|
||
<small class="sla-carry-row-text">{{armor.slaCarry.totalWeight}} kg</small>
|
||
</div>
|
||
<div class="item-controls" role="cell">
|
||
<a class="item-control item-edit" title="{{ localize 'Mosh.EditArmor' }}"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="{{ localize 'Mosh.DeleteArmor' }}"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
{{/if}}
|
||
|
||
<!-- ITEMS -->
|
||
<ol class="items-list">
|
||
<li class="item flexrow item-header">
|
||
<div class="item-image"></div>
|
||
<div class="skill-stat" style="flex-grow: 1.5;">{{ localize 'Mosh.ItemName' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Quantity' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Weight' }}</div>
|
||
<div class="skill-stat">Carry</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Value' }}</div>
|
||
<div class="item-controls">
|
||
<a class="item-control item-create" title="{{ localize 'Mosh.CreateItem' }}" data-type="item"><i class="fas fa-plus"></i> Add</a>
|
||
</div>
|
||
</li>
|
||
{{#each gear as |item id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{item._id}}">
|
||
<div class="item-image"><img src="{{item.img}}" title="{{item.name}}" width="24" height="24" /></div>
|
||
<h4 class="skill-name list-roll description-roll" style="flex-grow: 1.54;">{{item.name}}</h4>
|
||
<div class="skill-stat list-roll item-quantity">{{item.system.quantity}}</div>
|
||
<div class="skill-stat">{{item.slaCarry.totalWeight}} kg</div>
|
||
<div class="skill-stat">
|
||
<div class="sla-carry-toggle-row">
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' item.slaCarry.state '===' 'equipped')}}active{{/if}}" data-state="equipped">Eqp</button>
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' item.slaCarry.state '===' 'stowed')}}active{{/if}}" data-state="stowed">Stow</button>
|
||
</div>
|
||
</div>
|
||
<div class="skill-stat">{{item.system.cost}}</div>
|
||
<div class="item-controls">
|
||
<a class="item-control item-edit" title="{{ localize 'Mosh.EditItem' }}"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="{{ localize 'Mosh.DeleteItem' }}"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
<div class="item flex-group-left item-header">
|
||
<div class="skill-stat" style="flex-grow: 1.5;">{{ localize 'Mosh.CarryingCapacity' }}: {{system.weight.capacity}} kg</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.CurrentWeight' }}: {{system.weight.current}} kg</div>
|
||
<div class="skill-stat">Stowed: {{system.weight.stowed}} kg</div>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="tab items" data-group="primary" data-tab="drugs">
|
||
{{#if drugAlerts.length}}
|
||
<div class="sla-drug-alerts">
|
||
{{#each drugAlerts as |alert id|}}
|
||
<div class="sla-drug-alert {{alert.state}}">
|
||
<div class="sla-drug-alert-main">
|
||
<div class="sla-drug-alert-name">{{alert.name}}</div>
|
||
<div class="sla-drug-alert-meta">
|
||
<span class="sla-drug-alert-state">{{alert.stateLabel}}</span>
|
||
{{#if alert.duration}}<span class="sla-drug-alert-duration">{{alert.duration}}</span>{{/if}}
|
||
</div>
|
||
</div>
|
||
<div class="sla-drug-alert-summary">{{alert.summary}}</div>
|
||
<button type="button" class="drug-close-btn drug-close" data-item-id="{{alert.itemId}}" data-drug-id="{{alert.drugId}}">Close</button>
|
||
</div>
|
||
{{/each}}
|
||
</div>
|
||
{{/if}}
|
||
|
||
<ol class="items-list sla-drug-list">
|
||
<li class="item flexrow item-header">
|
||
<div class="item-image"></div>
|
||
<div class="skill-stat" style="flex-grow: 1.6;">Drug</div>
|
||
<div class="skill-stat">Qty</div>
|
||
<div class="skill-stat">Rating</div>
|
||
<div class="skill-stat">Value</div>
|
||
<div class="skill-stat">Weight</div>
|
||
<div class="skill-stat">Carry</div>
|
||
<div class="skill-stat">State</div>
|
||
<div class="skill-stat">Duration</div>
|
||
<div class="item-controls">
|
||
<a class="item-control item-create" title="Create Drug" data-type="drug"><i class="fas fa-plus"></i> Add</a>
|
||
</div>
|
||
</li>
|
||
{{#each drugRows as |drug id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{drug.itemId}}" data-drug-id="{{drug.drugId}}">
|
||
<div class="item-image"><img src="{{drug.img}}" title="{{drug.name}}" width="24" height="24" /></div>
|
||
<div class="skill-name list-roll description-roll drug-item-summary" style="flex-grow: 1.6;">{{drug.name}}<span>{{drug.summary}}</span></div>
|
||
<div class="skill-stat item-quantity">{{drug.quantity}}</div>
|
||
<div class="skill-stat">{{drug.rating}}</div>
|
||
<div class="skill-stat">{{drug.cost}}</div>
|
||
<div class="skill-stat">{{drug.slaCarry.totalWeight}} kg</div>
|
||
<div class="skill-stat">
|
||
<div class="sla-carry-toggle-row">
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' drug.slaCarry.state '===' 'equipped')}}active{{/if}}" data-state="equipped">Eqp</button>
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' drug.slaCarry.state '===' 'stowed')}}active{{/if}}" data-state="stowed">Stow</button>
|
||
</div>
|
||
</div>
|
||
<div class="skill-stat">{{drug.statusLabel}}</div>
|
||
<div class="skill-stat">{{drug.duration}}</div>
|
||
<div class="item-controls">
|
||
<button type="button" class="drug-use-btn drug-use" {{#unless drug.canUse}}disabled{{/unless}}>Use</button>
|
||
<button type="button" class="drug-close-btn drug-close" {{#unless drug.canClose}}disabled{{/unless}}>Close</button>
|
||
<a class="item-control item-edit" title="Edit Drug"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="Delete Drug"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
</div>
|
||
{{!-- Owned Skills Tab --}}
|
||
<div class="tab items" data-group="primary" data-tab="skills">
|
||
<div class="sla-card" style="margin-bottom: 12px;">
|
||
<div class="sla-card-label">Field Skill Deck</div>
|
||
<div class="sla-card-copy">Standard operative skills are listed here by category. Ebb-only skills stay on the Ebb tab so non-Ebb characters and general play stay uncluttered.</div>
|
||
</div>
|
||
<!-- SKILLS -->
|
||
<ol class="items-list" style="margin-bottom : 10px;">
|
||
<li class="item flexrow item-header">
|
||
<div class="item-image"></div>
|
||
<div class="skill-stat" style="flex-grow: 1.4;">{{ localize 'Mosh.SkillName' }}</div>
|
||
<div class="skill-stat">Category</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.SkillRank' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.SkillBonus' }}</div>
|
||
<div class="item-controls">
|
||
<a class="item-control skill-create" title="{{ localize 'Mosh.CreateSkill' }}" data-type="skill"><i class="fas fa-plus"></i> {{ localize 'Mosh.Add' }}</a>
|
||
</div>
|
||
</li>
|
||
{{#each skills as |skill id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{skill._id}}">
|
||
<div class="item-image"><img src="{{skill.img}}" title="{{skill.name}}" width="24" height="24"/></div>
|
||
<div class="skill-name skill-roll list-roll sla-skill-name-cell" style="flex-grow: 1.4;">
|
||
<span>{{skill.name}}</span>
|
||
{{#if skill.isCombatSkill}}<small class="sla-skill-flag">Combat Use</small>{{/if}}
|
||
{{#if skill.slaBreakdown.summary}}<small>{{skill.slaBreakdown.summary}}</small>{{/if}}
|
||
</div>
|
||
<div class="skill-stat">{{skill.system.sla.category}}</div>
|
||
<div class="skill-stat">{{skill.system.rank}}</div>
|
||
<div class="skill-stat">
|
||
{{skill.system.displayBonus}}
|
||
{{#if skill.slaTraitPreview.modLabel}}<small class="sla-skill-trait-mod">{{skill.slaTraitPreview.modLabel}} trait</small>{{/if}}
|
||
</div>
|
||
<div class="item-controls">
|
||
<a class="item-control skill-edit" title="{{ localize 'Mosh.EditSkill' }}"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="{{ localize 'Mosh.DeleteSkill' }}"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
|
||
{{#if system.settings.firstEdition}}
|
||
|
||
<!-- XP -->
|
||
<div class ="skill_training_frame" style="margin-bottom : 10px;">
|
||
<div class="grid grid-3col" style="grid-template-columns: 90px auto 283px ;">
|
||
<div class="skill-stat" style="position: relative; top: 6px;"><strong>{{ localize 'Mosh.SkillTraining' }}</strong></div>
|
||
<textarea name="system.xp.selectedSkill" rows="2" class="textarea-input-grey" type="text" data-target="system.xp.selectedSkill" placeholder="" style="height: 30px; margin: 0; position: relative; top: 50%; -ms-transform: translateY(-50%); transform: translateY(-50%); background: white; color: black;">{{system.xp.selectedSkill}}</textarea>
|
||
<div class="char-pip-button list-roll flex" style="position: relative; top: -7px;" data-key="xp" data-label="XP" data-max="16" data-min="0">{{{system.xp.html}}}</div>
|
||
</div>
|
||
</div>
|
||
|
||
{{/if}}
|
||
|
||
<div class="seperatorLine"></div>
|
||
|
||
|
||
|
||
<!-- Conditions -->
|
||
<ol class="items-list">
|
||
<li class="item flexrow item-header">
|
||
<div class="item-image"></div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Condition' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Severity' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Treatment' }}</div>
|
||
<div class="item-controls">
|
||
<a class="item-control item-create" title="{{ localize 'Mosh.CreateCondition' }}" data-type="condition"><i class="fas fa-plus"></i> {{ localize 'Mosh.Add' }}</a>
|
||
</div>
|
||
</li>
|
||
{{#each conditions as |condition id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{condition._id}}">
|
||
<div class="item-image"><img src="{{condition.img}}" title="{{condition.name}}" width="24" height="24"/></div>
|
||
<div class="skill-name description-roll list-roll">{{condition.name}}</div>
|
||
<div class="skill-stat list-roll severity" data-severity="{{condition.system.severity}}">{{condition.system.severity}}</div>
|
||
<div class="skill-stat">
|
||
{{#if condition.system.treatment.html}}
|
||
<div class="treatment-button list-roll flex" style="margin: 0; position: relative; top: 50%; -ms-transform: translateY(-50%); transform: translateY(-50%);" data-key="condition" data-label="condition" data-max="3" data-min="0">
|
||
{{{condition.system.treatment.html}}}
|
||
</div>
|
||
{{else}}
|
||
<div class="treatment-button list-roll flex" style="margin: 0; position: relative; top: 50%; -ms-transform: translateY(-50%); transform: translateY(-50%);" data-key="condition" data-label="condition" data-max="3" data-min="0">
|
||
{{condition.name}}
|
||
</div>
|
||
{{/if}}
|
||
</div>
|
||
<div class="item-controls">
|
||
<a class="item-control skill-edit" title="{{ localize 'Mosh.EditCondition' }}"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="{{ localize 'Mosh.DeleteCondition' }}"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
|
||
{{/each}}
|
||
</ol>
|
||
|
||
|
||
</div>
|
||
|
||
{{!-- Owned Weapons Tab --}}
|
||
<div class="tab items" data-group="primary" data-tab="weapons">
|
||
<div class="sla-card" style="margin-bottom: 12px;">
|
||
<div class="sla-card-label">Weapons Readiness</div>
|
||
<div class="sla-card-copy">Ammo stacks: {{slaAmmoInventory.stackCount}} | Total loose rounds: {{slaAmmoInventory.roundCount}} | Running firing spend: {{system.sla.ammoSpendTotal.value}} cR</div>
|
||
<div class="sla-card-copy">Carry: {{slaCarry.current}} / {{slaCarry.capacity}} kg | {{slaCarry.state}}</div>
|
||
<div class="sla-action-row" style="margin-top: 8px;">
|
||
<button type="button" class="sla-sheet-action weapon-reload-all">Reload All</button>
|
||
</div>
|
||
</div>
|
||
<!-- WEAPONS -->
|
||
<ol class="items-list">
|
||
<li class="item flexrow item-header">
|
||
<div class="item-image"></div>
|
||
<div class="skill-stat" style="flex-grow: 2;">{{ localize 'Mosh.WeaponName' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Damage' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Ammo' }}</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Shots' }}</div>
|
||
<div class="skill-stat">Mode</div>
|
||
<div class="skill-stat">Carry</div>
|
||
<div class="skill-stat">{{ localize 'Mosh.Range' }}</div>
|
||
<div class="item-controls">
|
||
<a class="item-control weapon-create" title="{{ localize 'Mosh.CreateWeapon' }}" data-type="weapon"><i class="fas fa-plus"></i> {{ localize 'Mosh.Add' }}</a>
|
||
</div>
|
||
</li>
|
||
|
||
{{#each weapons as |weapon id|}}
|
||
<li class="item flexrow dropitem" data-item-id="{{weapon._id}}">
|
||
<!-- <div class="item-image"><img src="{{skill.img}}" title="{{skill.name}}" width="24" height="24"/></div> -->
|
||
<div class="item-image"><img src="{{weapon.img}}" title="{{weapon.name}}" width="24" height="24" /></div>
|
||
<div class="skill-name weapon-roll list-roll sla-skill-name-cell" style="flex-grow: 2.05;">
|
||
<span>{{weapon.name}}</span>
|
||
{{#if weapon.system.useAmmo}}<small>{{weapon.sla.calibreLabel}}</small>{{/if}}
|
||
{{#if weapon.system.useAmmo}}<small class="sla-weapon-state sla-weapon-state-{{weapon.sla.ammoStateClass}}">{{weapon.sla.ammoState}}</small>{{/if}}
|
||
</div>
|
||
{{#if weapon.system.antiArmor}}
|
||
<div class="skill-stat dmg-roll list-roll">{{weapon.system.damage}} ({{ localize 'Mosh.AntiArmorAcronym' }})</div>
|
||
{{else}}
|
||
<div class="skill-stat dmg-roll list-roll">{{weapon.system.damage}}</div>
|
||
{{/if}}
|
||
{{#if weapon.system.useAmmo}}
|
||
<div class="skill-stat weapon-ammo list-roll" title="Reload or swap ammunition">
|
||
<div class="sla-weapon-ammo-primary">{{weapon.system.ammoLoadedType}} | {{weapon.sla.loadedAmmoReserve}}</div>
|
||
<div class="sla-weapon-ammo-secondary">{{weapon.sla.reserveSummary}}</div>
|
||
</div>
|
||
{{else}}
|
||
<div class="skill-stat">{{ localize 'Mosh.NA' }}</div>
|
||
{{/if}}
|
||
{{#if weapon.system.useAmmo}}
|
||
<div class="skill-stat">
|
||
<a class="weapon-shots list-roll" title="Reload or swap ammunition">{{weapon.system.curShots}}/{{weapon.system.shots}}</a>
|
||
<a class="weapon-reload list-roll" title="Reload or swap ammunition"><i class="fas fa-sync"></i></a>
|
||
</div>
|
||
{{else}}
|
||
<div class="skill-stat">{{ localize 'Mosh.NA' }}</div>
|
||
{{/if}}
|
||
{{#if weapon.system.useAmmo}}
|
||
<div class="skill-stat">
|
||
<a class="weapon-fire-mode list-roll" title="Cycle fire mode">{{weapon.system.sla.currentFireMode}}</a>
|
||
</div>
|
||
{{else}}
|
||
<div class="skill-stat">{{ localize 'Mosh.NA' }}</div>
|
||
{{/if}}
|
||
<div class="skill-stat">
|
||
<div class="sla-carry-toggle-row">
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' weapon.slaCarry.state '===' 'equipped')}}active{{/if}}" data-state="equipped">Eqp</button>
|
||
<button type="button" class="sla-carry-toggle {{#if (compare 'str' weapon.slaCarry.state '===' 'stowed')}}active{{/if}}" data-state="stowed">Stow</button>
|
||
</div>
|
||
<small class="sla-carry-row-text">{{weapon.slaCarry.totalWeight}} kg</small>
|
||
</div>
|
||
{{#if weapon.system.ranges.value}}
|
||
<div class="skill-stat">{{weapon.system.ranges.value}}</div>
|
||
{{else}}
|
||
<div class="skill-stat">{{ localize 'Mosh.NA' }}</div>
|
||
{{/if}}
|
||
<div class="item-controls">
|
||
<a class="item-control weapon-edit" title="{{ localize 'Mosh.EditWeapon' }}"><i class="fas fa-edit"></i></a>
|
||
<a class="item-control item-delete" title="{{ localize 'Mosh.DeleteWeapon' }}"><i class="fas fa-trash"></i></a>
|
||
</div>
|
||
</li>
|
||
{{/each}}
|
||
</ol>
|
||
</div>
|
||
</section>
|
||
</form>
|