R-223: nothing happened at 0 hit points. An agent was marked down and lay there forever; the only mention of death in the system was flavour text on a destroyed head. Zero now starts a clock whose length is the agent's own Major Wound threshold, ticked from the same hook that charges blood loss. First Aid or Medicine stabilises and stops the count; healing above zero clears it; heal() refuses the dead. On death, Coherence decides what the record says — from a proper death in service down to not being recorded as dead at all. Case generator: four phases instead of five (the arc drew two interchangeable middles that read as padding). The brief now leads with Where / When / Classification / Phases, states the opposition in full, and has a "How you get back" section. place and duration were generated and never printed. The same facts are on the case file itself. 300 seeds checked for object leaks; one found and fixed (group taboo/desire are objects with .text). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
551 lines
30 KiB
Handlebars
551 lines
30 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-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 armourUnworn.length}}<span class="rb-unworn-flag">{{localize "RINGBRP.Sheet.NotWorn"}}</span>{{/if}}
|
||
</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 rb-cohgroup rb-coh-{{coherence.band.id}}"
|
||
title="{{localize coherence.band.note}}">
|
||
<span class="rb-dl">{{localize "RINGBRP.Coh.Label"}}</span>
|
||
<span class="rb-dv"><a data-action="coherence-adjust" data-delta="-1" class="rb-cohbtn">−</a>{{sys.coherence.value}}<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-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>
|
||
|
||
<nav class="sheet-tabs rb-tabs" data-group="primary">
|
||
<a class="item" data-tab="skills">{{localize "RINGBRP.Tab.Skills"}}</a>
|
||
<a class="item" data-tab="combat">{{localize "RINGBRP.Tab.Combat"}}</a>
|
||
<a class="item" data-tab="talents">{{localize "RINGBRP.Tab.Talents"}}{{#if talents.length}} ({{talents.length}}){{/if}}</a>
|
||
<a class="item" data-tab="powers">{{localize "RINGBRP.Tab.Powers"}}{{#if powers.length}} ({{powers.length}}){{/if}}</a>
|
||
<a class="item" data-tab="gear">{{localize "RINGBRP.Tab.Gear"}}</a>
|
||
<a class="item" data-tab="anatomy">{{localize "RINGBRP.Tab.Anatomy"}}{{#if sys.disabledLocations}} ({{sys.disabledLocations}}){{/if}}</a>
|
||
<a class="item" data-tab="wounds">{{localize "RINGBRP.Tab.Wounds"}}{{#if wounds.length}} ({{wounds.length}}){{/if}}</a>
|
||
<a class="item" data-tab="bio">{{localize "RINGBRP.Tab.Bio"}}</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">
|
||
|
||
<div class="rb-bodyblock">
|
||
<div class="rb-figure">
|
||
<svg viewBox="{{bodyMap.viewBox}}" class="rb-body-svg" role="img"
|
||
aria-label="{{speciesLabel}}">
|
||
{{#each bodyMap.parts as |p|}}
|
||
{{#if (rbEq p.shape.t "ellipse")}}
|
||
<ellipse class="rb-part rb-part-{{p.state}}" data-loc="{{p.id}}"
|
||
cx="{{p.shape.cx}}" cy="{{p.shape.cy}}" rx="{{p.shape.rx}}" ry="{{p.shape.ry}}"
|
||
data-tooltip="{{localize p.label}} — {{p.taken}}/{{p.max}}"></ellipse>
|
||
{{else if (rbEq p.shape.t "rect")}}
|
||
<rect class="rb-part rb-part-{{p.state}}" data-loc="{{p.id}}"
|
||
x="{{p.shape.x}}" y="{{p.shape.y}}" width="{{p.shape.w}}" height="{{p.shape.h}}"
|
||
rx="{{p.shape.rx}}" data-tooltip="{{localize p.label}} — {{p.taken}}/{{p.max}}"></rect>
|
||
{{else}}
|
||
<path class="rb-part rb-part-{{p.state}}" data-loc="{{p.id}}"
|
||
d="{{p.shape.d}}" data-tooltip="{{localize p.label}} — {{p.taken}}/{{p.max}}"></path>
|
||
{{/if}}
|
||
{{/each}}
|
||
</svg>
|
||
<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-num">{{l.armour}}</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 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}} ÷ {{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.Tab.Weapons"}}
|
||
<a class="rb-add" data-action="item-create" data-type="weapon"><i class="fas fa-plus"></i></a>
|
||
</h3>
|
||
<table class="rb-table">
|
||
<thead><tr>
|
||
<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}}">
|
||
<td class="rb-td-icon"><img class="rb-li-icon" src="{{w.img}}" alt=""/><a data-action="roll-attack" class="rb-strong">{{w.name}}</a></td>
|
||
<td><a 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}}</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>
|
||
|
||
<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>
|
||
<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-num">{{l.armour}}</td>
|
||
</tr>
|
||
{{/each}}
|
||
</tbody>
|
||
</table>
|
||
<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>
|
||
</form>
|