A shield is the one piece of armour you hold, and it protects you exactly as much as you are currently holding it up. Raised, its points apply to what it covers and it can parry on a new Shield skill. Lowered, it is weight. The price of keeping it up is that it occupies a hand and you are shooting around it: -20% to your own ranged attacks, printed on the card like everything else. Only one shield goes up at a time. Seven of them, 2-point buckler to 6-point ballistic shield; the pavise and barrier plate cover legs too because they are walls you carry. `degradation` finally does something — it has been on every armour item since the packs were first built and was read by nothing. A blow costs the shield a point of wear for every step it stood above an ordinary success, so an ordinary hit costs nothing, a special 1 and a critical 2. At its limit it comes apart, drops, and will not be raised again. Two defects found by driving the real functions rather than reading the diff, both introduced by this change: - Every shield defence quietly rolled DODGE. "shield" passed through defenceTypeAllowed unchanged, so neither parry branch matched and it fell through. Invisible in the card; it showed up as eight rolls at a supposed 85% returning six failures. Taking a blow on the shield IS a parry, so it is now a flag on a parry rather than a defence type of its own. - The wear rule was unreachable: it fired only on a clean stop, but under graded defences only a critical fully stops a critical, so a shield would never have taken a scratch. Wear is for what the shield ABSORBED — dragging a critical down to a special is exactly when shields splinter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
607 lines
34 KiB
Handlebars
607 lines
34 KiB
Handlebars
<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">−</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}}–{{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}}—{{/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}}" 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}} ÷ {{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}} ÷ {{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}}) — {{localize "RINGBRP.React.ReadyIntFloor"}} {{reaction.work.intFloor}}
|
||
{{else}}
|
||
{{localize "RINGBRP.React.ReadyFromInt"}} ({{reaction.work.intFloor}}) — {{localize "RINGBRP.React.ReadyBestSkill"}} {{reaction.work.best}}
|
||
{{/if}}
|
||
</td></tr>
|
||
<tr><th>{{localize "RINGBRP.React.Lane"}}</th>
|
||
<td>{{localize "RINGBRP.React.BetterOf"}} × {{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 — {{reaction.work.overKg}} kg over</td>
|
||
<td class="rb-worknum">−{{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'}}">−{{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>
|