Files
RingBRP/templates/character-sheet.hbs
T
slaguru666andClaude Opus 5 cbad87ba98 Add Occult, Religion and Psychology, and the Panic track
From the first game's list. The three skills are not decoration — they are the
levers on the new track, which is why they arrived together.

PANIC, 0 to 5, up. It is the other half of Coherence and the rules page says so
in the first line, because a table that confuses them will make the wrong call
at the worst moment:

    Coherence   what knowing has cost you       weeks     10-0, down
    Panic       what is happening to you NOW    minutes    0-5, up

A trigger gives a point with NO ROLL. Asking for a die to find out whether you
are frightened slows the scene and tells the player how to feel; the die is for
getting rid of it, which is the interesting direction.

    0 steady · 1 rattled · 2 shaken -5% · 3 losing it -10%
    4 overwhelmed -20% · 5 broken

The first point is free on purpose, so the opening shock of a scene costs the
table nothing. At 5 you break — freeze, flee or fixate, choose fast — and come
back at 3, not at 0, because breaking is not a rest.

Relief is where the skills come in. A success takes one point, a special takes
two. Psychology is the only thing that steadies somebody who is NOT you.
Religion steadies you alone and does not care whether you are right. Occult is
the odd one: naming a thing correctly, out loud, helps everybody who can hear —
the department's actual work, and the only relief that reaches a room. Plus
POW×5 to steady yourself, and your anchor object once per case, which is what
that briefing scene was for.

The three skills are placed in six registers rather than left floating: Occult
to the professor and to Registry, Psychology to the doctor and to Interview,
Religion to Antiquities and Pathology.

Guards, because a track nothing reads is this project's oldest failure: the five
new rules carry spot-checks in check-rules, and check-behaviour gains nine tests
— the free first point, monotonic penalties, only 5 breaking, clamping at both
ends, breaking not clearing the track, special taking two, every band/trigger/
relief having a label, and every relief naming a skill the catalogue actually
has.

Verified in a live game: penalty reaches the roll (58 → 58 → 53 → 48 → 38 for
panic 0-4, criticals and specials recomputed with it), the full arc runs 0 → 2 →
4 → eased to 2 → pushed to 5 → breaks → 3 with no errors, the sheet shows the
band, and the rules journal has a Panic page generated from the same tables.

Version 1.1.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 22:55:11 +01:00

621 lines
35 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">
<div class="rb-ident">
<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>
<div class="rb-status">
<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-vital-panic rb-panic-{{panic.band.id}}"
data-tooltip="{{localize panic.band.note}}">
<span class="rb-vital-label">{{localize "RINGBRP.Panic.Label"}}</span>
<span class="rb-coh-row">
<a data-action="panic-adjust" data-delta="-1" class="rb-cohbtn">&minus;</a>
<span class="rb-big">{{sys.panic.value}}</span>
<a data-action="panic-adjust" data-delta="1" class="rb-cohbtn">+</a>
</span>
<span class="rb-cohband">{{localize panic.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>
<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>
</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>
<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}}" class="{{#if a.raisedNow}}rb-shield-up{{/if}}{{#if a.brokenNow}} rb-shield-broken{{/if}}">
<a class="rb-equip {{#if a.system.equipped}}on{{/if}}" data-action="toggle-equipped"><i class="fas fa-shield-halved"></i></a>
{{#if a.system.shield}}
<a class="rb-raise {{#if a.raisedNow}}on{{/if}}" data-action="toggle-raised"
data-tooltip="{{localize 'RINGBRP.Sheet.RaiseHint'}}"><i class="fas fa-hand-back-fist"></i></a>
{{/if}}
<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>
{{#if a.system.shield}}
<span class="rb-shield-state">{{#if a.brokenNow}}{{localize "RINGBRP.Sheet.ShieldBroken"}}{{else if a.raisedNow}}{{localize "RINGBRP.Sheet.ShieldUp"}}{{else}}{{localize "RINGBRP.Sheet.ShieldDown"}}{{/if}}</span>
<span class="rb-dim rb-shield-wear">{{a.system.degradation.current}}/{{a.system.degradation.max}}</span>
{{/if}}
<span class="rb-dim">{{localize (rbConcat "RINGBRP.Coverage." a.system.coverage)}}</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>
{{#if sys.shieldUp}}
<a class="rb-cbtn rb-cbtn-shield" data-action="defend" data-type="shield"
data-tooltip="{{localize 'RINGBRP.Sheet.ShieldHint'}}">{{sys.shieldUp.name}} {{sys.shieldUp.points}}</a>
{{/if}}
<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>