Files
RingBRP/templates/character-sheet.hbs
T
slaguru666andClaude Opus 5 6ed9ded362 Armour covers what it covers, and Coherence moves to the vitals
Asking for the type of armour per location turned out not to be a display request.
Every equipped piece added its points to EVERY location, so a Brodie helmet protected
your shins and a cuirass protected your skull — with a catalogue containing sallets,
lobster-tail helmets and three cuirasses, that could not be printed without the sheet
saying something visibly false.

Armour now declares coverage as a named set rather than a list of locations, because a
piece has to fit whatever body wears it: all, torso, torsoArms, torsoLimbs, head. The
sets expand to location KINDS, so a cuirass covers a baseline torso and a vesh trunk
and ridge without either knowing the other exists. Unstated coverage is `all`, so
anything that does not declare behaves as everything did before. Eighteen of the
twenty-five catalogue pieces are not whole-body and now say so.

The trap was double counting: hitLocationRoll subtracted the global worn total PLUS
the body's own armour at that location, which was right while armour was global and
becomes a double count the moment a location knows its own pieces. It reads the
location's total and nothing else, verified by firing fourteen hits of 10 damage
across every location and asserting damage applied == 10 - that location's armour.

A single ARMOUR number no longer exists, so the header shows the torso with "0-8 by
location" beside it when the rest of you is not that. This is a real difficulty
change: limbs are frequently bare and limbs are 12 of 20 on the melee table.

Coherence moves out of the derived strip into the vitals at hit-point size, with its
band under it and the box reddening as it falls.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:33:04 +01:00

594 lines
33 KiB
Handlebars
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<form class="ringbrp-sheet" autocomplete="off">
<header class="rb-header">
<img class="rb-portrait" src="{{actor.img}}" data-edit="img" title="{{actor.name}}"/>
<div class="rb-headline">
<input class="rb-name" name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'RINGBRP.Sheet.Name'}}"/>
{{#if isCharacter}}<input class="rb-rank" name="system.rank" type="text" value="{{sys.rank}}" placeholder="{{localize 'RINGBRP.Sheet.RankPlaceholder'}}"/>{{/if}}
<div class="rb-origin">
<label class="rb-style">{{localize "RINGBRP.Sheet.Style"}}
<select name="system.marksmanship.chosenStyle">
{{#each RINGBRP.marksmanship as |m key|}}
<option value="{{key}}" {{#if (rbEq key ../sys.marksmanship.style)}}selected{{/if}}>{{localize m.label}}</option>
{{/each}}
</select>
</label>
<ul class="rb-style-compare" title="{{localize 'RINGBRP.Style.Hint.Title'}}">
{{#each styleHints as |s|}}
<li class="{{#if s.on}}on{{/if}}"><b>{{s.label}}</b> {{s.hint}}</li>
{{/each}}
</ul>
</div>
{{#if isCharacter}}
<div class="rb-ages">
<label>{{localize "RINGBRP.Sheet.Chronological"}}<input type="number" name="system.age.chronological" value="{{sys.age.chronological}}"/></label>
<label>{{localize "RINGBRP.Sheet.Physiological"}}<input type="number" name="system.age.physiological" value="{{sys.age.physiological}}"/></label>
</div>
{{/if}}
</div>
<div class="rb-vitals">
<div class="rb-hp">
<span class="rb-vital-label">{{localize "RINGBRP.Sheet.HP"}}</span>
<input type="number" name="system.hp.value" value="{{sys.hp.value}}"/>
<span class="rb-slash">/</span>
<span class="rb-max">{{sys.hp.max}}</span>
</div>
<div class="rb-mw" title="{{localize 'RINGBRP.Sheet.MajorWoundHint'}}">
<span class="rb-vital-label">{{localize "RINGBRP.Sheet.MajorWound"}}</span>
<span class="rb-big">{{sys.majorWound.value}}</span>
</div>
<div class="rb-vital-coh rb-coh-{{coherence.band.id}}"
data-tooltip="{{localize coherence.band.note}}">
<span class="rb-vital-label">{{localize "RINGBRP.Coh.Label"}}</span>
<span class="rb-coh-row">
<a data-action="coherence-adjust" data-delta="-1" class="rb-cohbtn">&minus;</a>
<span class="rb-big">{{sys.coherence.value}}</span>
<a data-action="coherence-adjust" data-delta="1" class="rb-cohbtn">+</a>
</span>
<span class="rb-cohband">{{localize coherence.band.label}}</span>
</div>
<div class="rb-armour{{#if armourUnworn.length}} rb-unworn{{/if}}"
{{#if armourUnworn.length}}data-tooltip="{{localize "RINGBRP.Sheet.ArmourUnworn"}}"{{/if}}>
<span class="rb-vital-label">{{localize "RINGBRP.Sheet.Armour"}}</span>
<span class="rb-big">{{sys.armourPoints}}</span>
{{#if sys.armourUneven}}<span class="rb-armour-range">{{sys.armourRange.min}}&ndash;{{sys.armourRange.max}} {{localize "RINGBRP.Sheet.ByLocation"}}</span>{{/if}}
{{#if armourUnworn.length}}<span class="rb-unworn-flag">{{localize "RINGBRP.Sheet.NotWorn"}}</span>{{/if}}
</div>
<div class="rb-minibody" data-tooltip="{{localize 'RINGBRP.Sheet.MiniBodyHint'}}">
{{> "systems/ringbrp/templates/partials/body-figure.hbs" map=bodyMap label=speciesLabel svgClass="rb-body-mini"}}
<ul class="rb-minilocs">
{{#each bodyMap.parts as |p|}}
<li class="rb-miniloc rb-miniloc-{{p.state}}" data-loc="{{p.id}}"
data-tooltip="{{localize p.label}} — {{p.taken}}/{{p.max}}">
<span class="rb-miniloc-name">{{localize p.label}}</span>
<span class="rb-miniloc-hp">{{p.taken}}/{{p.max}}</span>
<span class="rb-miniloc-ap{{#unless p.armour}} rb-miniloc-noap{{/unless}}">{{#if p.armour}}{{p.armour}}{{else}}&mdash;{{/if}}</span>
</li>
{{/each}}
</ul>
</div>
{{#if wounds.length}}
<div class="rb-wounded">
<span class="rb-vital-label">{{localize "RINGBRP.Tab.Wounds"}}</span>
<span class="rb-big" style="color:var(--rb-danger)">{{wounds.length}}</span>
<span class="rb-wound-flag">{{localize "RINGBRP.Sheet.Wounded"}}</span>
</div>
{{/if}}
</div>
</header>
<section class="rb-characteristics">
{{#each sys.characteristics as |c key|}}
<div class="rb-char" data-characteristic="{{key}}">
<a class="rb-char-label" data-action="roll-characteristic"
title="{{localize 'RINGBRP.Sheet.RollCharHint'}}">{{localize (rbConcat "RINGBRP.Char." key)}}</a>
<input type="number" name="system.characteristics.{{key}}.value" value="{{c.value}}"/>
<a class="rb-char-x5" data-action="roll-characteristic"
title="{{localize 'RINGBRP.Sheet.RollCharHint'}}">{{rbTimes5 c.value}}</a>
</div>
{{/each}}
</section>
<section class="rb-derived">
<div class="rb-derived-group">
<span class="rb-dl">{{localize "RINGBRP.Sheet.DamageMod"}}</span><span class="rb-dv">{{sys.damageModifier}}</span>
</div>
<div class="rb-derived-group">
<span class="rb-dl">{{localize "RINGBRP.Sheet.MOV"}}</span><span class="rb-dv">{{sys.mov}}</span>
</div>
<div class="rb-derived-group">
<span class="rb-dl">{{localize "RINGBRP.Sheet.Carry"}}</span>
<span class="rb-dv {{#if sys.encumbrance.steps}}rb-warn{{/if}}">{{sys.carriedKg}} / {{sys.freeCarryKg}} kg</span>
</div>
<div class="rb-rolls">
<button type="button" data-action="roll-attribute" data-attribute="stamina">{{localize "RINGBRP.Roll.stamina"}} {{sys.rolls.stamina}}</button>
<button type="button" data-action="roll-attribute" data-attribute="idea">{{localize "RINGBRP.Roll.idea"}} {{sys.rolls.idea}}</button>
<button type="button" data-action="roll-attribute" data-attribute="luck">{{localize "RINGBRP.Roll.luck"}} {{sys.rolls.luck}}</button>
</div>
</section>
<section class="rb-weaponstrip">
<span class="rb-strip-label">{{localize "RINGBRP.Sheet.Readied"}}</span>
{{#each equippedWeapons as |w|}}
<span class="rb-strip-weapon" data-item-id="{{w.id}}">
<a data-action="roll-attack">{{w.name}}</a>
<span class="rb-strip-dmg" data-action="roll-damage">{{#if (rbEq w.system.damage.mode "byBand")}}{{w.system.damage.short}}/{{w.system.damage.medium}}/{{w.system.damage.long}}{{else}}{{w.system.damage.formula}}{{/if}}</span>
{{#if w.system.rangeSummary}}<span class="rb-strip-range">{{w.system.rangeSummary}}</span>{{/if}}
{{#if w.system.ammo.capacity}}<span class="rb-strip-ammo">{{w.system.ammo.loaded}}/{{w.system.ammo.capacity}}</span>{{/if}}
</span>
{{else}}
<span class="rb-strip-empty">{{localize "RINGBRP.Sheet.NothingReadied"}}</span>
{{/each}}
</section>
<div class="rb-main">
<nav class="sheet-tabs rb-tabs" data-group="primary">
<a class="item" data-tab="skills"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Skills"}}</span></a>
<a class="item" data-tab="combat"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Combat"}}</span></a>
<a class="item" data-tab="talents"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Talents"}}</span>{{#if talents.length}}<span class="rb-tab-count">{{talents.length}}</span>{{/if}}</a>
<a class="item" data-tab="powers"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Powers"}}</span>{{#if powers.length}}<span class="rb-tab-count">{{powers.length}}</span>{{/if}}</a>
<a class="item" data-tab="gear"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Gear"}}</span></a>
<a class="item" data-tab="anatomy"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Anatomy"}}</span>{{#if sys.disabledLocations}}<span class="rb-tab-count rb-tab-bad">{{sys.disabledLocations}}</span>{{/if}}</a>
<a class="item" data-tab="wounds"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Wounds"}}</span>{{#if wounds.length}}<span class="rb-tab-count rb-tab-bad">{{wounds.length}}</span>{{/if}}</a>
<a class="item" data-tab="bio"><span class="rb-tab-label">{{localize "RINGBRP.Tab.Bio"}}</span></a>
</nav>
<section class="sheet-body rb-body">
<div class="tab" data-group="primary" data-tab="skills">
{{#if dyingNow}}
<div class="rb-dyingbar{{#if stabilised}} rb-stable{{/if}}">
<span class="rb-dyingbar-title">{{localize "RINGBRP.Condition.dying"}}</span>
{{#if stabilised}}
<span>{{localize "RINGBRP.Death.StableTag"}}</span>
{{else}}
<span>{{localize "RINGBRP.Death.CountTag"}} {{dyingRounds}} / {{dyingLimit}}</span>
{{/if}}
</div>
{{/if}}
{{#if deadNow}}
<div class="rb-deadbar">
<span class="rb-dyingbar-title">{{localize "RINGBRP.Condition.dead"}}</span>
<span>{{lastEntry}}</span>
</div>
{{/if}}
{{#if impaired.active}}
<div class="rb-woundbar" data-tooltip="{{localize 'RINGBRP.Sheet.WoundBarHint'}}">
<span class="rb-woundbar-title"><i class="fas fa-triangle-exclamation"></i>
{{#if impaired.unconscious}}{{localize "RINGBRP.Sheet.Unconscious"}}
{{else if impaired.defenceOnly}}{{localize "RINGBRP.Sheet.OutOfFight"}}
{{else}}{{localize "RINGBRP.Sheet.Wounded"}}{{/if}}</span>
{{#each impaired.chips as |c|}}<span class="rb-woundchip">{{c}}</span>{{/each}}
<span class="rb-woundbar-pen">{{impaired.summary}}</span>
</div>
{{/if}}
<div class="rb-skillbar">
<span class="rb-dim">{{skillCount}} {{localize "RINGBRP.Sheet.SkillsShown"}}</span>
<a class="rb-cbtn" data-action="full-skills">{{localize "RINGBRP.Sheet.FullList"}}</a>
</div>
{{#each RINGBRP.categories as |cat key|}}
<div class="rb-cat">
<h3 class="rb-cat-head">
{{localize cat.label}}
<span class="rb-catbonus" title="{{localize 'RINGBRP.Sheet.CategoryBonusHint'}}">+{{lookup ../sys.categoryBonus key}}</span>
<a class="rb-add" data-action="item-create" data-type="skill" title="{{localize 'RINGBRP.Sheet.AddSkill'}}"><i class="fas fa-plus"></i></a>
</h3>
<ol class="rb-skills">
{{#unless (rbLen (lookup ../skillsByCategory key))}}
<li class="rb-skill-empty">{{localize "RINGBRP.Sheet.NoSkillsHere"}}</li>
{{/unless}}
{{#each (lookup ../skillsByCategory key) as |sk|}}
<li class="rb-skill" data-item-id="{{sk.id}}">
<a class="rb-tick {{#if sk.system.experienceTicked}}on{{/if}}" data-action="toggle-tick" title="{{localize 'RINGBRP.Sheet.ExperienceTick'}}"></a>
<img class="rb-li-icon" src="{{sk.img}}" alt=""/><a class="rb-skill-name" data-action="roll-skill">{{sk.name}}</a>
<span class="rb-skill-val">{{sk.system.value}}%</span>
<span class="rb-skill-bands" title="{{localize 'RINGBRP.Sheet.BandsHint'}}">{{rbBands sk.system.value}}</span>
<a data-action="item-edit" title="{{localize 'RINGBRP.Sheet.Edit'}}"><i class="fas fa-edit"></i></a>
<a data-action="item-delete" title="{{localize 'RINGBRP.Sheet.Delete'}}"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
</div>
{{/each}}
</div>
<div class="tab" data-group="primary" data-tab="combat">
<h3 class="rb-cat-head">{{localize "RINGBRP.Tab.Weapons"}}
<a class="rb-add" data-action="item-create" data-type="weapon"><i class="fas fa-plus"></i></a>
</h3>
<p class="rb-hint rb-ready-hint">{{localize "RINGBRP.Sheet.ReadyHint"}}</p>
<table class="rb-table rb-weapontable">
<thead><tr>
<th class="rb-col-ready" data-tooltip="{{localize 'RINGBRP.Sheet.ReadyHint'}}">{{localize "RINGBRP.Sheet.Ready"}}</th>
<th>{{localize "RINGBRP.Sheet.Weapon"}}</th><th>{{localize "RINGBRP.Sheet.Damage"}}</th>
<th>{{localize "RINGBRP.Sheet.Range"}}</th><th>{{localize "RINGBRP.Sheet.Ammo"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Sheet.Mass"}}</th><th></th>
</tr></thead>
<tbody>
{{#each weapons as |w|}}
<tr data-item-id="{{w.id}}" class="{{#if w.system.equipped}}rb-wrow-ready{{/if}}">
<td class="rb-col-ready">
<a class="rb-equip {{#if w.system.equipped}}on{{/if}}" data-action="toggle-equipped"
data-tooltip="{{localize 'RINGBRP.Sheet.ReadyToggle'}}"><i class="fas fa-hand-fist"></i></a>
</td>
<td class="rb-td-icon"><img class="rb-li-icon rb-weapon-icon" src="{{w.img}}" alt=""/><a data-action="roll-attack" class="rb-weapon-name">{{w.name}}</a></td>
<td><a data-action="roll-damage" class="rb-weapon-dmg">{{#if (rbEq w.system.damage.mode "byBand")}}{{w.system.damage.short}}/{{w.system.damage.medium}}/{{w.system.damage.long}}{{else}}{{w.system.damage.formula}}{{/if}}</a></td>
<td>{{w.system.rangeSummary}}</td>
<td>{{#if w.system.ammo.capacity}}{{w.system.ammo.loaded}}/{{w.system.ammo.capacity}}{{/if}}</td>
<td class="rb-col-num">{{w.system.massKg}} kg</td>
<td class="rb-actions">
<a data-action="item-edit"><i class="fas fa-edit"></i></a>
<a data-action="item-delete"><i class="fas fa-trash"></i></a>
</td>
</tr>
{{/each}}
</tbody>
</table>
<h3 class="rb-cat-head">{{localize "RINGBRP.Tab.Armour"}}
<a class="rb-add" data-action="item-create" data-type="armour"><i class="fas fa-plus"></i></a>
</h3>
<ol class="rb-list">
{{#each armours as |a|}}
<li data-item-id="{{a.id}}">
<a class="rb-equip {{#if a.system.equipped}}on{{/if}}" data-action="toggle-equipped"><i class="fas fa-shield-halved"></i></a>
<img class="rb-li-icon" src="{{a.img}}" alt=""/><span class="rb-strong">{{a.name}}</span>
<span class="rb-dim">{{a.system.points}} {{localize "RINGBRP.Sheet.Points"}}</span>
<span class="rb-dim rb-mass">{{a.system.massKg}} kg</span>
<a data-action="item-edit"><i class="fas fa-edit"></i></a>
<a data-action="item-delete"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
<div class="rb-defbar">
<span class="rb-defbar-label">{{localize "RINGBRP.Sheet.Defend"}}</span>
<a class="rb-cbtn" data-action="defend" data-type="dodge"
data-tooltip="{{localize 'RINGBRP.Sheet.DefendHint'}}">{{localize "RINGBRP.Defence.dodge"}}</a>
<a class="rb-cbtn" data-action="defend" data-type="parry"
data-tooltip="{{localize 'RINGBRP.Sheet.DefendHint'}}">{{localize "RINGBRP.Defence.parry"}}</a>
<span class="rb-defbar-count">
{{#if sys.combat.defencesThisRound}}
{{sys.combat.defencesThisRound}} {{localize "RINGBRP.Sheet.ThisRound"}} · {{localize "RINGBRP.Sheet.NextAt"}} {{defenceNext}}%
{{else}}{{localize "RINGBRP.Sheet.FirstIsFree"}}{{/if}}
</span>
</div>
<h3 class="rb-cat-head">{{localize "RINGBRP.React.Title"}}</h3>
<div class="rb-railbox">
<div class="rb-rail-head">
<span class="rb-rail-base">{{reaction.printed}}</span>
<span class="rb-rail-cap">{{localize "RINGBRP.React.Printed"}}</span>
<span class="rb-dim">{{localize "RINGBRP.React.Reflex"}} {{reaction.reflex}} · {{localize "RINGBRP.React.Awareness"}} {{reaction.aware}} — {{localize "RINGBRP.React.Uses"}} {{localize (rbConcat "RINGBRP.React.From." reaction.from)}}</span>
{{#if reaction.load}}
<span class="rb-rail-load">{{localize "RINGBRP.React.Base"}} {{reaction.base}} − {{localize "RINGBRP.React.Load"}} {{reaction.load}}</span>
{{/if}}
</div>
<table class="rb-rail">
<tr>{{#each reaction.rail as |r|}}<th class="{{#if r.current}}on{{/if}}">{{rbSign r.mod}}</th>{{/each}}</tr>
<tr>{{#each reaction.rail as |r|}}<td class="{{#if r.current}}on{{/if}}">{{r.value}}</td>{{/each}}</tr>
</table>
<details class="rb-react-work">
<summary>{{localize "RINGBRP.React.HowIsThis"}}</summary>
<table class="rb-worktable">
<tr><th>{{localize "RINGBRP.React.Reflex"}}</th>
<td>DEX {{reaction.work.dex}} &divide; {{reaction.work.dexDiv}}, rounded up</td>
<td class="rb-worknum">{{reaction.work.reflex}}</td></tr>
<tr><th>{{localize "RINGBRP.React.Awareness"}}</th>
<td>{{localize "RINGBRP.React.Readiness"}} {{reaction.work.readiness}} &divide; {{reaction.work.readyDiv}}, rounded up</td>
<td class="rb-worknum">{{reaction.work.aware}}</td></tr>
<tr class="rb-worknote"><td colspan="3">
{{#if reaction.work.fromTraining}}
{{localize "RINGBRP.React.ReadyFromSkill"}} ({{reaction.work.best}}) &mdash; {{localize "RINGBRP.React.ReadyIntFloor"}} {{reaction.work.intFloor}}
{{else}}
{{localize "RINGBRP.React.ReadyFromInt"}} ({{reaction.work.intFloor}}) &mdash; {{localize "RINGBRP.React.ReadyBestSkill"}} {{reaction.work.best}}
{{/if}}
</td></tr>
<tr><th>{{localize "RINGBRP.React.Lane"}}</th>
<td>{{localize "RINGBRP.React.BetterOf"}} &times; {{reaction.work.mult}}</td>
<td class="rb-worknum">{{reaction.work.base}}</td></tr>
{{#if reaction.work.load}}
<tr class="rb-workload"><th>{{localize "RINGBRP.React.Load"}}</th>
<td>{{reaction.work.carried}} / {{reaction.work.free}} kg &mdash; {{reaction.work.overKg}} kg over</td>
<td class="rb-worknum">&minus;{{reaction.work.load}}</td></tr>
{{/if}}
<tr class="rb-worktotal"><th>{{localize "RINGBRP.React.Printed"}}</th>
<td>{{localize "RINGBRP.React.ThenAddDie"}} d{{reaction.work.die}}</td>
<td class="rb-worknum">{{reaction.work.printed}}</td></tr>
</table>
</details>
<p class="rb-hint">{{localize "RINGBRP.React.RailHint"}}</p>
</div>
<h3 class="rb-cat-head">{{localize "RINGBRP.Sheet.BodyHead"}}
<a class="rb-add" data-action="roll-location"
data-tooltip="{{localize 'RINGBRP.Loc.RollHint'}}"><i class="fas fa-crosshairs"></i></a>
</h3>
<div class="rb-bodyblock">
<div class="rb-figure">
{{> "systems/ringbrp/templates/partials/body-figure.hbs" map=bodyMap label=speciesLabel svgClass=""}}
<span class="rb-figure-species">{{speciesLabel}}</span>
<a class="rb-cbtn rb-figure-roll" data-action="roll-location"
data-tooltip="{{localize 'RINGBRP.Loc.RollHint'}}">{{localize "RINGBRP.Loc.RollButton"}}</a>
</div>
<div class="rb-bodyside">
<table class="rb-table rb-loctable rb-loctable-compact">
<thead><tr>
<th class="rb-col-loc">{{localize "RINGBRP.Sheet.Locations"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Loc.Melee"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Loc.Ranged"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Loc.Taken"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Sheet.Armour"}}</th>
</tr></thead>
<tbody>
{{#each bodyMap.parts as |l|}}
<tr class="rb-locrow rb-locrow-{{l.state}}" data-loc="{{l.id}}">
<td class="rb-col-loc">{{localize l.label}}</td>
<td class="rb-col-num">{{l.melee}}</td>
<td class="rb-col-num">{{l.ranged}}</td>
<td class="rb-col-num">{{l.taken}}/{{l.max}}</td>
<td class="rb-col-ap">
<span class="rb-ap-num">{{l.armour}}</span>
{{#if l.armourFrom.length}}
<span class="rb-ap-from">{{#each l.armourFrom as |a|}}<span class="rb-ap-piece" data-tooltip="{{a.name}} — {{a.points}}">{{a.name}}</span>{{/each}}</span>
{{else}}
<span class="rb-ap-bare">{{localize "RINGBRP.Sheet.Unarmoured"}}</span>
{{/if}}
</td>
</tr>
{{/each}}
</tbody>
</table>
<h4 class="rb-sub-head">{{localize "RINGBRP.Tab.Wounds"}}{{#if wounds.length}} ({{wounds.length}}){{/if}}</h4>
{{#if wounds.length}}
<ol class="rb-list rb-wounds rb-wounds-compact">
{{#each wounds as |w|}}
<li data-wound-id="{{w.id}}">
<span class="rb-strong">{{localize (rbConcat "RINGBRP.Wound." w.key ".title")}}</span>
<span class="rb-dim">{{localize (rbConcat "RINGBRP.Wound." w.key ".text")}}</span>
<a data-action="wound-clear" title="{{localize 'RINGBRP.Sheet.ClearWound'}}"><i class="fas fa-times"></i></a>
</li>
{{/each}}
</ol>
{{else}}
<p class="rb-empty">{{localize "RINGBRP.Sheet.NoWounds"}}</p>
{{/if}}
</div>
</div>
</div>
<div class="tab" data-group="primary" data-tab="talents">
{{#each talentGroups as |grp|}}
{{#if grp.items.length}}
<h3 class="rb-cat-head">{{localize grp.label}}</h3>
<ol class="rb-talents">
{{#each grp.items as |t|}}
<li class="rb-talent" data-item-id="{{t.id}}">
<img class="rb-talent-icon" src="{{t.img}}" alt=""/>
<div class="rb-talent-body">
<a class="rb-talent-name" data-action="item-edit">{{t.name}}</a>
<div class="rb-talent-summary">{{t.system.summary}}</div>
<div class="rb-talent-rule">{{t.system.rule}}</div>
</div>
<div class="rb-talent-cost">
{{#if t.active}}
<a class="rb-cbtn {{#unless t.available}}rb-disabled{{/unless}}"
data-action="use-talent" title="{{t.whyUnavailable}}">{{localize "RINGBRP.Talent.Use"}}</a>
{{else}}
<span class="rb-talent-passive">{{localize "RINGBRP.Talent.Passive"}}</span>
{{/if}}
{{#if t.system.coherenceCost}}<span class="rb-talent-coh" title="{{localize 'RINGBRP.Talent.CoherenceCost'}}">&minus;{{t.system.coherenceCost}}</span>{{/if}}
{{#if t.system.usesPerCase}}<span class="rb-talent-uses">{{t.system.usedThisCase}}/{{t.system.usesPerCase}}</span>{{/if}}
{{#if t.system.skillBonus.value}}<span class="rb-talent-bonus">+{{t.system.skillBonus.value}}%</span>{{/if}}
</div>
<a data-action="item-delete" title="{{localize 'RINGBRP.Sheet.Delete'}}"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
{{/if}}
{{/each}}
{{#unless talents.length}}<p class="rb-empty">{{localize "RINGBRP.Talent.None"}}</p>{{/unless}}
</div>
<div class="tab" data-group="primary" data-tab="powers">
{{#if powers.length}}
<ol class="rb-list rb-powers">
{{#each powers as |p|}}
<li data-item-id="{{p.id}}">
<div class="rb-power-head">
<img class="rb-li-icon" src="{{p.img}}" alt=""/>
<a class="rb-strong rb-power-name" data-action="power-use">{{p.name}}</a>
<span class="rb-power-val">{{p.system.value}}%</span>
<span class="rb-power-cost">−{{p.system.coherenceCost}}</span>
<a class="rb-cbtn" data-action="power-use">{{localize "RINGBRP.Power.Use"}}</a>
<a class="rb-cbtn rb-power-push" data-action="power-push"
data-tooltip="{{p.system.pushRule}}">{{localize "RINGBRP.Power.Push"}} −{{p.system.pushCost}}</a>
<a data-action="item-edit"><i class="fas fa-edit"></i></a>
<a data-action="item-delete"><i class="fas fa-trash"></i></a>
</div>
<p class="rb-power-summary">{{p.system.summary}}</p>
<p class="rb-power-rule">{{p.system.rule}}</p>
{{#if p.system.origin}}
<p class="rb-power-origin">{{localize "RINGBRP.Power.Origin"}}: {{p.system.origin}}</p>
{{/if}}
</li>
{{/each}}
</ol>
{{else}}
<p class="rb-empty">{{localize "RINGBRP.Power.None"}}</p>
{{/if}}
</div>
<div class="tab" data-group="primary" data-tab="gear">
{{#if authorities.length}}
<h3 class="rb-cat-head">{{localize "RINGBRP.Tab.Access"}}</h3>
<ol class="rb-list rb-authorities">
{{#each authorities as |a|}}
<li data-item-id="{{a.id}}" class="{{#if a.system.burned}}rb-auth-dead{{else if a.system.suspect}}rb-auth-flagged{{/if}}">
<div class="rb-auth-head">
<img class="rb-li-icon" src="{{a.img}}" alt=""/>
<span class="rb-strong">{{#if a.system.holderName}}{{a.system.holderName}}{{else}}{{a.name}}{{/if}}</span>
<span class="rb-dim">{{a.system.holderRole}}</span>
<span class="rb-auth-trust" title="{{localize 'RINGBRP.Authority.Trust'}}">
{{localize "RINGBRP.Authority.Trust"}} {{a.system.trust.value}}/{{a.system.trust.max}}</span>
{{#if a.system.burned}}<span class="rb-auth-tag">{{localize "RINGBRP.Authority.BurnedTag"}}</span>
{{else if a.system.suspect}}<span class="rb-auth-tag">{{localize "RINGBRP.Authority.SuspectTag"}}</span>{{/if}}
<a data-action="item-edit"><i class="fas fa-edit"></i></a>
<a data-action="item-delete"><i class="fas fa-trash"></i></a>
</div>
<div class="rb-auth-body">
<span class="rb-dim">{{a.scopeLabel}}{{#if a.system.scopeNote}} — {{a.system.scopeNote}}{{/if}}</span>
{{#if a.system.expires}}<span class="rb-dim">{{localize "RINGBRP.Authority.Expires"}}: {{a.system.expires}}</span>{{/if}}
{{#if a.flagCount}}<span class="rb-auth-flags">{{a.flagCount}} {{localize "RINGBRP.Authority.RedFlags"}}</span>{{/if}}
{{#if a.merged}}<span class="rb-auth-merge-tag">{{localize "RINGBRP.Authority.MergingTag"}}</span>{{/if}}
</div>
<div class="rb-auth-acts">
<a class="rb-cbtn" data-action="authority-use">{{localize "RINGBRP.Authority.Use"}}</a>
<a class="rb-cbtn" data-action="authority-widen">{{localize "RINGBRP.Authority.Widen"}}</a>
{{#if a.system.suspect}}<a class="rb-cbtn" data-action="authority-rehab">{{localize "RINGBRP.Authority.Rehab"}}</a>{{/if}}
</div>
</li>
{{/each}}
</ol>
{{/if}}
{{#if vehicles.length}}
<h3 class="rb-cat-head">{{localize "RINGBRP.Tab.Transport"}}</h3>
<ol class="rb-list rb-vehicles">
{{#each vehicles as |v|}}
<li data-item-id="{{v.id}}">
<img class="rb-li-icon" src="{{v.img}}" alt=""/><span class="rb-strong">{{v.name}}</span>
<span class="rb-dim">{{v.speedLabel}}</span>
<span class="rb-dim">{{localize "RINGBRP.Vehicle.Hull"}} {{v.system.hull.value}}/{{v.system.hull.max}}</span>
<span class="rb-dim">{{localize "RINGBRP.Vehicle.Seats"}} {{v.system.seats}}</span>
<span class="rb-dim">{{v.rating}}%</span>
<a data-action="item-edit"><i class="fas fa-edit"></i></a>
<a data-action="item-delete"><i class="fas fa-trash"></i></a>
</li>
{{/each}}
</ol>
{{/if}}
<h3 class="rb-cat-head">{{localize "RINGBRP.Tab.Gear"}}
<a class="rb-add" data-action="item-create" data-type="gear"><i class="fas fa-plus"></i></a>
<a class="rb-add" data-action="item-create" data-type="device" title="{{localize 'RINGBRP.New.device'}}"><i class="fas fa-microchip"></i></a>
<a class="rb-add" data-action="item-create" data-type="vehicle" title="{{localize 'RINGBRP.New.vehicle'}}"><i class="fas fa-truck"></i></a>
<a class="rb-add" data-action="item-create" data-type="authority" title="{{localize 'RINGBRP.New.authority'}}"><i class="fas fa-id-badge"></i></a>
</h3>
<ol class="rb-list">
{{#each gear as |g|}}
<li data-item-id="{{g.id}}">
<img class="rb-li-icon" src="{{g.img}}" alt=""/><span class="rb-strong">{{g.name}}</span>
<span class="rb-dim">{{g.system.massKg}} kg</span>
{{#if (rbEq g.type "device")}}
<span class="rb-dim">{{localize "RINGBRP.Sheet.Integrity"}} {{g.system.integrity.value}}/{{g.system.integrity.max}}</span>
{{/if}}
<a data-action="item-edit"><i class="fas fa-edit"></i></a>
<a data-action="item-delete"><i class="fas fa-trash"></i></a>
</li>
{{#if (rbEq g.type "device")}}
<li class="rb-devicebar" data-item-id="{{g.id}}">
{{#each g.functions as |f|}}
<span class="rb-devfn {{#unless f.usable}}rb-devfn-blocked{{/unless}}">
<a class="rb-cbtn {{#unless f.usable}}rb-disabled{{/unless}}"
data-action="device-fn" data-fn="{{f.id}}" title="{{f.why}}">{{localize f.label}}</a>
<span class="rb-devfn-why">{{f.why}}</span>
</span>
{{/each}}
</li>
{{/if}}
{{/each}}
</ol>
</div>
<div class="tab" data-group="primary" data-tab="anatomy">
<h3 class="rb-cat-head">{{speciesLabel}}
<a class="rb-add" data-action="roll-location" title="{{localize 'RINGBRP.Loc.RollHint'}}"><i class="fas fa-crosshairs"></i></a>
</h3>
<div class="rb-anatblock">
<div class="rb-figure">
{{> "systems/ringbrp/templates/partials/body-figure.hbs" map=bodyMap label=speciesLabel svgClass=""}}
<span class="rb-figure-species">{{speciesLabel}}</span>
<a class="rb-cbtn rb-figure-roll" data-action="roll-location"
data-tooltip="{{localize 'RINGBRP.Loc.RollHint'}}">{{localize "RINGBRP.Loc.RollButton"}}</a>
</div>
<div class="rb-anatside">
<table class="rb-table rb-loctable">
<thead><tr>
<th class="rb-col-loc">{{localize "RINGBRP.Sheet.Locations"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Loc.Melee"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Loc.Ranged"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Loc.Taken"}}</th>
<th class="rb-col-num">{{localize "RINGBRP.Sheet.Armour"}}</th>
</tr></thead>
<tbody>
{{#each sys.locations as |l|}}
<tr class="{{#if l.destroyed}}rb-loc-row-destroyed{{else if l.disabled}}rb-loc-row-disabled{{/if}}">
<td class="rb-col-loc rb-loc-cell">{{localize l.label}}
{{#if l.destroyed}}<span class="rb-loc-flag rb-loc-flag-x">{{localize "RINGBRP.Loc.Destroyed"}}</span>
{{else if l.disabled}}<span class="rb-loc-flag">{{localize "RINGBRP.Loc.Disabled"}}</span>{{/if}}</td>
<td class="rb-col-num">{{l.melee}}</td>
<td class="rb-col-num">{{l.ranged}}</td>
<td class="rb-col-num">{{l.taken}}/{{l.max}}</td>
<td class="rb-col-ap">
<span class="rb-ap-num">{{l.armour}}</span>
{{#if l.armourFrom.length}}
<span class="rb-ap-from">{{#each l.armourFrom as |a|}}<span class="rb-ap-piece">{{a.name}} <b>{{a.points}}</b></span>{{/each}}</span>
{{else}}
<span class="rb-ap-bare">{{localize "RINGBRP.Sheet.Unarmoured"}}</span>
{{/if}}
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<p class="rb-hint">{{localize "RINGBRP.Sheet.LocationNote"}}</p>
</div>
<div class="tab" data-group="primary" data-tab="wounds">
{{#if wounds.length}}
<ol class="rb-list rb-wounds">
{{#each wounds as |w|}}
<li data-wound-id="{{w.id}}">
<span class="rb-strong">{{localize (rbConcat "RINGBRP.Wound." w.key ".title")}}</span>
<span class="rb-dim">{{localize (rbConcat "RINGBRP.Wound." w.key ".text")}}</span>
<a data-action="wound-clear" title="{{localize 'RINGBRP.Sheet.ClearWound'}}"><i class="fas fa-times"></i></a>
</li>
{{/each}}
</ol>
{{else}}
<p class="rb-empty">{{localize "RINGBRP.Sheet.NoWounds"}}</p>
{{/if}}
</div>
<div class="tab" data-group="primary" data-tab="bio">
<label class="rb-block">{{localize "RINGBRP.Sheet.Species"}}</label>
<select name="system.speciesProfile" class="rb-species-select">
{{#each RINGBRP.locationTables as |tbl key|}}
<option value="{{key}}" {{#if (rbEq key ../sys.speciesProfile)}}selected{{/if}}>{{localize tbl.label}}</option>
{{/each}}
</select>
<p class="rb-hint">{{localize "RINGBRP.Sheet.SpeciesHint"}}</p>
<label class="rb-block">{{localize "RINGBRP.Sheet.Biography"}}</label>
{{editor bioHTML target="system.biography" button=true editable=editable engine="prosemirror"}}
<label class="rb-block">{{localize "RINGBRP.Sheet.Notes"}}</label>
{{editor notesHTML target="system.notes" button=true editable=editable engine="prosemirror"}}
</div>
</section>
</div>
</form>