Files
RingBRP/templates/npc-sheet.hbs
T
slaguru666andClaude Opus 5 d0144f744e The Custodians v0.6.1 — full system
A Foundry VTT game system: Basic Roleplaying d100 in a drab British agency that
deals with crossings, where reality keeps a record of what belongs where and can be
made to get it wrong.

Contents:
- rules.mjs as the single authority for every rule formula, with 40 rules and 132
  spot-checked values. Nothing may restate a formula it defines.
- 25 postings, each with a key characteristic, trained skills, talents and its own
  kit; a 175-item catalogue across four eras; 231 generated icons.
- Reaction Lanes initiative, re-rolled every round including the first.
- Coherence, and the Quiet Arts, which only ever arrive from a crossing gone wrong.
- Graded defences: only a critical stops a critical.
- Borrowed Authority — access as a record rather than a hacking roll.
- A case generator, and a rules journal generated from rules.mjs so the book cannot
  drift from the code.

Built compendia are committed so a remote Foundry needs only the files.
node_modules is not; `npm install` restores it for rebuilding content.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 18:09:07 +01:00

100 lines
5.7 KiB
Handlebars

<form class="ringbrp-sheet rb-npc" 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}}"/>
<input class="rb-role" name="system.role" type="text" value="{{sys.role}}" placeholder="{{localize 'RINGBRP.Sheet.Role'}}"/>
<div class="rb-origin">
<span class="rb-style-fixed">{{styleLabel}}</span>
</div>
</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"><span class="rb-vital-label">{{localize "RINGBRP.Sheet.MajorWound"}}</span><span class="rb-big">{{sys.majorWound.value}}</span></div>
<div class="rb-armour"><span class="rb-vital-label">{{localize "RINGBRP.Sheet.Armour"}}</span>
<input type="number" name="system.naturalArmour.value" value="{{sys.naturalArmour.value}}"/></div>
</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">{{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">{{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>
</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="bio">{{localize "RINGBRP.Tab.Tactics"}}</a>
</nav>
<section class="sheet-body rb-body">
<div class="tab" data-group="primary" data-tab="skills">
{{#each RINGBRP.categories as |cat key|}}
{{#if (lookup ../skillsByCategory key).length}}
<div class="rb-cat">
<h3 class="rb-cat-head">{{localize cat.label}}<span class="rb-catbonus">+{{lookup ../sys.categoryBonus key}}</span>
<a class="rb-add" data-action="item-create" data-type="skill"><i class="fas fa-plus"></i></a></h3>
<ol class="rb-skills">
{{#each (lookup ../skillsByCategory key) as |sk|}}
<li class="rb-skill" data-item-id="{{sk.id}}">
<a class="rb-skill-name" data-action="roll-skill">{{sk.name}}</a>
<span class="rb-skill-val">{{sk.system.value}}%</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>
{{/if}}
{{/each}}
<a class="rb-add-wide" data-action="item-create" data-type="skill"><i class="fas fa-plus"></i> {{localize "RINGBRP.Sheet.AddSkill"}}</a>
</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>
<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></th></tr></thead>
<tbody>
{{#each weapons as |w|}}
<tr data-item-id="{{w.id}}">
<td><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-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>
<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>
<span class="rb-strong">{{a.name}}</span><span class="rb-dim">{{a.system.points}}</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>
<a class="rb-add-wide" data-action="item-create" data-type="armour"><i class="fas fa-plus"></i> {{localize "RINGBRP.Tab.Armour"}}</a>
</div>
<div class="tab" data-group="primary" data-tab="bio">
<label class="rb-block">{{localize "RINGBRP.Sheet.Tactics"}}</label>
<textarea name="system.tactics" rows="6">{{sys.tactics}}</textarea>
<label class="rb-block">{{localize "RINGBRP.Sheet.Notes"}}</label>
{{editor notesHTML target="system.notes" button=true editable=editable engine="prosemirror"}}
</div>
</section>
</form>