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>
468 lines
32 KiB
Handlebars
468 lines
32 KiB
Handlebars
<form class="ringbrp-sheet rb-item" autocomplete="off">
|
|
|
|
<header class="rb-item-header">
|
|
<img class="rb-item-img" src="{{item.img}}" data-edit="img"/>
|
|
<div class="rb-item-ident">
|
|
<input class="rb-name" name="name" type="text" value="{{item.name}}"/>
|
|
<span class="rb-type">{{localize (rbConcat "TYPES.Item." item.type)}}</span>
|
|
</div>
|
|
</header>
|
|
|
|
{{!-- ==========================================================
|
|
THE STATLINE — the 1984 weapons table, one row per item.
|
|
A player should know what this is without reading a form.
|
|
========================================================== --}}
|
|
{{#if isWeapon}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat rb-stat-primary"><span class="rb-stat-label">{{localize "RINGBRP.Sheet.Damage"}}</span>
|
|
<a class="rb-stat-value rb-stat-roll" data-action="roll-damage">{{damageSummary}}</a></div>
|
|
{{#if attackRating}}
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Attack"}}</span>
|
|
<a class="rb-stat-value rb-stat-roll" data-action="roll-attack-item">{{attackRating}}%</a></div>
|
|
{{/if}}
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Sheet.Range"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.rangeSummary}}{{sys.rangeSummary}}{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.WoundType"}}</span>
|
|
<span class="rb-stat-value">{{sys.woundType}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.FireMode"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.fireMode}}{{sys.fireMode}}{{else}}—{{/if}}</span></div>
|
|
{{#if sys.ammo.capacity}}
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Sheet.Ammo"}}</span>
|
|
<span class="rb-stat-value">{{sys.ammo.loaded}}/{{sys.ammo.capacity}}</span></div>
|
|
{{/if}}
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.MassShort"}}</span>
|
|
<span class="rb-stat-value">{{sys.massKg}} kg</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isSkill}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Rating"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.value}}%</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.PrintedBase"}}</span>
|
|
<span class="rb-stat-value">{{sys.base.value}}%</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Sheet.BandsHint"}}</span>
|
|
<span class="rb-stat-value rb-stat-mono">{{rbBands sys.value}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isArmour}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Points"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.points}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.MassShort"}}</span>
|
|
<span class="rb-stat-value">{{sys.massKg}} kg</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Equipped"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.equipped}}{{localize "RINGBRP.Item.Worn"}}{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Item.IgnoredBy"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#each sys.ignoredBy as |x|}}{{x}}{{#unless @last}}, {{/unless}}{{else}}—{{/each}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isAuthority}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Authority.Trust"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.trust.value}}/{{sys.trust.max}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Authority.Scope"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{scopeLabel}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Authority.Expires"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#if sys.expires}}{{sys.expires}}{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Authority.ScopeNote"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#if sys.scopeNote}}{{sys.scopeNote}}{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Authority.MergeHead"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{mergeLabel}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isVehicle}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Hull"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.hull.value}}/{{sys.hull.max}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Points"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.armourPoints}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Crew"}}</span>
|
|
<span class="rb-stat-value">{{sys.crew}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Seats"}}</span>
|
|
<span class="rb-stat-value">{{sys.seats}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Cargo"}}</span>
|
|
<span class="rb-stat-value">{{sys.cargoKg}} kg</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Speed"}}</span>
|
|
<span class="rb-stat-value">{{speedLabel}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Range"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.rangeKm}}{{sys.rangeKm}} km{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Operate"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{operateLabel}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Vehicle.Terrain"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#each sys.terrain as |t|}}{{t}}{{#unless @last}}, {{/unless}}{{else}}—{{/each}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isDevice}}
|
|
<section class="rb-statline {{#unless sys.functional}}rb-statline-locked{{/unless}}">
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Sheet.Integrity"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.integrity.value}}<span class="rb-stat-of">/{{sys.integrity.max}}</span></span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Status"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.functional}}{{localize "RINGBRP.Item.Functional"}}{{else}}{{localize "RINGBRP.Item.Inert"}}{{/if}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Tradition"}}</span>
|
|
<span class="rb-stat-value">{{#each sys.traditionIds as |t|}}{{t}}{{#unless @last}}, {{/unless}}{{/each}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.MassShort"}}</span>
|
|
<span class="rb-stat-value">{{sys.massKg}} kg</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isProject}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Item.Question"}}</span>
|
|
<span class="rb-stat-value rb-stat-question">{{sys.question}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Expedition.Step"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{rbAdd sys.currentStep 1}}<span class="rb-stat-of">/{{sys.steps.length}}</span></span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isGear}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat rb-stat-primary"><span class="rb-stat-label">{{localize "RINGBRP.Item.TotalMass"}}</span>
|
|
<span class="rb-stat-value">{{totalMass}} kg</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Quantity"}}</span>
|
|
<span class="rb-stat-value">{{sys.quantity}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Carried"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.carried}}{{localize "RINGBRP.Item.Yes"}}{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.PowerDraw"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.powerDraw}}{{sys.powerDraw}}{{else}}—{{/if}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Item.Facility"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#if sys.researchFacility}}{{sys.researchFacility}} ({{rbSign facilityMod}}%){{else}}—{{/if}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isDiscovery}}
|
|
<section class="rb-statline {{#unless sys.published}}rb-statline-locked{{/unless}}">
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Item.Question"}}</span>
|
|
<span class="rb-stat-value rb-stat-question">{{sys.question}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Status"}}</span>
|
|
<span class="rb-stat-value">{{#if sys.published}}{{localize "RINGBRP.Item.Published"}}{{else}}{{localize "RINGBRP.Item.Unpublished"}}{{/if}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Unlocks"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.unlocks.length}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isGroup}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Population"}}</span>
|
|
<span class="rb-stat-value rb-stat-big">{{sys.population}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Item.PrincipalTaboo"}}</span>
|
|
<span class="rb-stat-value rb-stat-small rb-taboo">{{principalTaboo}}</span></div>
|
|
<div class="rb-stat rb-stat-wide"><span class="rb-stat-label">{{localize "RINGBRP.Item.PrincipalDesire"}}</span>
|
|
<span class="rb-stat-value rb-stat-small rb-desire">{{principalDesire}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
{{#if isMaterial}}
|
|
<section class="rb-statline">
|
|
<div class="rb-stat rb-stat-primary"><span class="rb-stat-label">{{localize "RINGBRP.Item.ImmuneTo"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#each sys.immuneTo as |x|}}{{x}}{{#unless @last}}, {{/unless}}{{else}}—{{/each}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.SlowTo"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#each sys.slowTo as |x|}}{{x}}{{#unless @last}}, {{/unless}}{{else}}—{{/each}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.BlocksSensors"}}</span>
|
|
<span class="rb-stat-value rb-stat-small">{{#each sys.blocksSensors as |x|}}{{x}}{{#unless @last}}, {{/unless}}{{else}}—{{/each}}</span></div>
|
|
<div class="rb-stat"><span class="rb-stat-label">{{localize "RINGBRP.Item.Neutrino"}}</span>
|
|
<span class="rb-stat-value">{{sys.neutrinoAbsorption}}</span></div>
|
|
</section>
|
|
{{/if}}
|
|
|
|
<nav class="sheet-tabs rb-tabs" data-group="primary">
|
|
<a class="item" data-tab="detail">{{localize "RINGBRP.Tab.Detail"}}</a>
|
|
<a class="item" data-tab="desc">{{localize "RINGBRP.Tab.Description"}}</a>
|
|
</nav>
|
|
|
|
<section class="sheet-body rb-body">
|
|
<div class="tab" data-group="primary" data-tab="detail">
|
|
|
|
{{#if isSkill}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Identity"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.Family"}}<input type="text" name="system.familyId" value="{{sys.familyId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Specialisation"}}<input type="text" name="system.specialisationId" value="{{sys.specialisationId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Category"}}
|
|
<select name="system.categoryId">
|
|
{{#each RINGBRP.categories as |c key|}}
|
|
<option value="{{key}}" {{#if (rbEq key ../sys.categoryId)}}selected{{/if}}>{{localize c.label}}</option>
|
|
{{/each}}
|
|
</select></label>
|
|
<label>{{localize "RINGBRP.Item.TransferGroup"}}<input type="text" name="system.transferGroup" value="{{sys.transferGroup}}"/></label>
|
|
</div>
|
|
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Values"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.Rating"}}<input type="number" name="system.value" value="{{sys.value}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.PrintedBase"}}<input type="number" name="system.base.value" value="{{sys.base.value}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.TrainingCap"}}<input type="number" name="system.trainingCap" value="{{sys.trainingCap}}"/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.CanBeTaught"}}<input type="checkbox" name="system.canBeTaught" {{checked sys.canBeTaught}}/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.ExperienceEligible"}}<input type="checkbox" name="system.experienceEligible" {{checked sys.experienceEligible}}/></label>
|
|
</div>
|
|
<p class="rb-hint">{{localize "RINGBRP.Item.FloorNote"}}</p>
|
|
{{/if}}
|
|
|
|
{{#if isWeapon}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Identity"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.Class"}}
|
|
<select name="system.weaponClass">
|
|
{{#each RINGBRP.weaponClasses as |c|}}<option value="{{c}}" {{#if (rbEq c ../sys.weaponClass)}}selected{{/if}}>{{c}}</option>{{/each}}
|
|
</select></label>
|
|
<label>{{localize "RINGBRP.Item.WoundType"}}
|
|
<select name="system.woundType">
|
|
{{#each RINGBRP.woundTypeMap as |stat key|}}<option value="{{key}}" {{#if (rbEq key ../sys.woundType)}}selected{{/if}}>{{key}} → {{stat}}</option>{{/each}}
|
|
</select></label>
|
|
<label>{{localize "RINGBRP.Item.SkillFamily"}}<input type="text" name="system.skillFamilyId" value="{{sys.skillFamilyId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.SkillSpec"}}<input type="text" name="system.skillSpecialisationId" value="{{sys.skillSpecialisationId}}"/></label>
|
|
</div>
|
|
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Sheet.Damage"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.DamageMode"}}
|
|
<select name="system.damage.mode">
|
|
<option value="single" {{#if (rbEq sys.damage.mode "single")}}selected{{/if}}>single</option>
|
|
<option value="byBand" {{#if (rbEq sys.damage.mode "byBand")}}selected{{/if}}>by range band</option>
|
|
</select></label>
|
|
{{#if isByBand}}
|
|
<label>{{localize "RINGBRP.Item.DamageShort"}}<input type="text" name="system.damage.short" value="{{sys.damage.short}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.DamageMedium"}}<input type="text" name="system.damage.medium" value="{{sys.damage.medium}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.DamageLong"}}<input type="text" name="system.damage.long" value="{{sys.damage.long}}"/></label>
|
|
{{else}}
|
|
<label>{{localize "RINGBRP.Item.Damage"}}<input type="text" name="system.damage.formula" value="{{sys.damage.formula}}"/></label>
|
|
{{/if}}
|
|
<label class="rb-check">{{localize "RINGBRP.Item.AppliesDamageMod"}}<input type="checkbox" name="system.appliesDamageModifier" {{checked sys.appliesDamageModifier}}/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Monofilament"}}<input type="checkbox" name="system.monofilament" {{checked sys.monofilament}}/></label>
|
|
</div>
|
|
{{#if sys.monofilament}}<p class="rb-hint rb-hint-warn">{{localize "RINGBRP.Item.MonoNote"}}</p>{{/if}}
|
|
|
|
{{#if isRangedWeapon}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Sheet.Range"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.RangeShort"}}<input type="number" name="system.ranges.short" value="{{sys.ranges.short}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.RangeMedium"}}<input type="number" name="system.ranges.medium" value="{{sys.ranges.medium}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.RangeLong"}}<input type="number" name="system.ranges.long" value="{{sys.ranges.long}}"/></label>
|
|
</div>
|
|
<p class="rb-hint">{{localize "RINGBRP.Item.RangeNote"}}</p>
|
|
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Sheet.Ammo"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.FireMode"}}
|
|
<select name="system.fireMode">
|
|
{{#each RINGBRP.fireModes as |f|}}<option value="{{f}}" {{#if (rbEq f ../sys.fireMode)}}selected{{/if}}>{{#if f}}{{f}}{{else}}—{{/if}}</option>{{/each}}
|
|
</select></label>
|
|
<label>{{localize "RINGBRP.Item.Capacity"}}<input type="number" name="system.ammo.capacity" value="{{sys.ammo.capacity}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Loaded"}}<input type="number" name="system.ammo.loaded" value="{{sys.ammo.loaded}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Reserve"}}<input type="number" name="system.ammo.reserve" value="{{sys.ammo.reserve}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.EnergyPerShot"}}<input type="number" name="system.energyPerShot" value="{{sys.energyPerShot}}"/></label>
|
|
</div>
|
|
{{/if}}
|
|
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Physical"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.Mass"}}<input type="number" step="0.1" name="system.massKg" value="{{sys.massKg}}"/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Equipped"}}<input type="checkbox" name="system.equipped" {{checked sys.equipped}}/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Carried"}}<input type="checkbox" name="system.carried" {{checked sys.carried}}/></label>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if isArmour}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Protection"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.Points"}}<input type="number" name="system.points" value="{{sys.points}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Mass"}}<input type="number" step="0.1" name="system.massKg" value="{{sys.massKg}}"/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Equipped"}}<input type="checkbox" name="system.equipped" {{checked sys.equipped}}/></label>
|
|
</div>
|
|
<p class="rb-hint">{{localize "RINGBRP.Item.ArmourNote"}}</p>
|
|
{{/if}}
|
|
|
|
{{#if isGear}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Physical"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.Mass"}}<input type="number" step="0.1" name="system.massKg" value="{{sys.massKg}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Quantity"}}<input type="number" name="system.quantity" value="{{sys.quantity}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.PowerDraw"}}<input type="number" name="system.powerDraw" value="{{sys.powerDraw}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Facility"}}
|
|
<select name="system.researchFacility">
|
|
<option value="">—</option>
|
|
{{#each RINGBRP.facilities as |v key|}}<option value="{{key}}" {{#if (rbEq key ../sys.researchFacility)}}selected{{/if}}>{{key}} ({{rbSign v}}%)</option>{{/each}}
|
|
</select></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Carried"}}<input type="checkbox" name="system.carried" {{checked sys.carried}}/></label>
|
|
<label>{{localize "RINGBRP.Item.BonusSkill"}}<input type="text" name="system.skillBonus.skillFamilyId" value="{{sys.skillBonus.skillFamilyId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.BonusValue"}}<input type="number" name="system.skillBonus.value" value="{{sys.skillBonus.value}}"/></label>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if isAuthority}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Authority.Holder"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Authority.Holder"}}<input type="text" name="system.holderName" value="{{sys.holderName}}"/></label>
|
|
<label>{{localize "RINGBRP.Authority.Role"}}<input type="text" name="system.holderRole" value="{{sys.holderRole}}"/></label>
|
|
<label>{{localize "RINGBRP.Authority.Scope"}}
|
|
<select name="system.scope">
|
|
{{#each scopeOptions as |o|}}<option value="{{o.key}}" {{#if o.selected}}selected{{/if}}>{{o.label}}</option>{{/each}}
|
|
</select></label>
|
|
<label>{{localize "RINGBRP.Authority.Expires"}}<input type="text" name="system.expires" value="{{sys.expires}}"/></label>
|
|
<label class="rb-wide">{{localize "RINGBRP.Authority.ScopeNote"}}<input type="text" name="system.scopeNote" value="{{sys.scopeNote}}"/></label>
|
|
<label>{{localize "RINGBRP.Authority.Trust"}}<input type="number" name="system.trust.value" value="{{sys.trust.value}}"/></label>
|
|
<label>{{localize "RINGBRP.Authority.AI"}}<input type="text" name="system.aiPosture" value="{{sys.aiPosture}}" placeholder="gatekeeper / analyst / asset"/></label>
|
|
</div>
|
|
{{#if sys.dossier.length}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Authority.Dossier"}}</h3>
|
|
<ol class="rb-list rb-dossier-list">
|
|
{{#each sys.dossier as |d|}}
|
|
<li><span class="rb-strong">{{d.text}}</span>
|
|
<span class="rb-dim">{{d.familyId}}</span>
|
|
<span class="rb-dim">{{d.by}}</span>
|
|
<span class="rb-dim">{{d.level}}</span></li>
|
|
{{/each}}
|
|
</ol>
|
|
{{/if}}
|
|
{{#if sys.redFlags.length}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Authority.RedFlags"}}</h3>
|
|
<ul class="rb-list rb-flag-list">
|
|
{{#each sys.redFlags as |f|}}<li>{{f.text}}</li>{{/each}}
|
|
</ul>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if isVehicle}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Tab.Transport"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Vehicle.Crew"}}<input type="number" name="system.crew" value="{{sys.crew}}"/></label>
|
|
<label>{{localize "RINGBRP.Vehicle.Seats"}}<input type="number" name="system.seats" value="{{sys.seats}}"/></label>
|
|
<label>{{localize "RINGBRP.Vehicle.Cargo"}}<input type="number" name="system.cargoKg" value="{{sys.cargoKg}}"/></label>
|
|
<label>{{localize "RINGBRP.Vehicle.Hull"}}<input type="number" name="system.hull.value" value="{{sys.hull.value}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Points"}}<input type="number" name="system.armourPoints" value="{{sys.armourPoints}}"/></label>
|
|
<label>{{localize "RINGBRP.Vehicle.Range"}}<input type="number" name="system.rangeKm" value="{{sys.rangeKm}}"/></label>
|
|
<label>{{localize "RINGBRP.Vehicle.Speed"}}
|
|
<select name="system.speedBand">
|
|
{{#each RINGBRP.speedBands as |lbl key|}}<option value="{{key}}" {{#if (rbEq key ../sys.speedBand)}}selected{{/if}}>{{localize lbl}}</option>{{/each}}
|
|
</select></label>
|
|
<label>{{localize "RINGBRP.Item.Mass"}}<input type="number" step="1" name="system.massKg" value="{{sys.massKg}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Coherence"}}<input type="number" name="system.coherenceCost" value="{{sys.coherenceCost}}"/></label>
|
|
</div>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Vehicle.Operate"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.SkillFamily"}}<input type="text" name="system.skillFamilyId" value="{{sys.skillFamilyId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Specialisation"}}<input type="text" name="system.skillSpecialisationId" value="{{sys.skillSpecialisationId}}"/></label>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if isDevice}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Identity"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.DocumentId"}}<input type="text" name="system.documentId" value="{{sys.documentId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Material"}}<input type="text" name="system.materialId" value="{{sys.materialId}}"/></label>
|
|
<label>{{localize "RINGBRP.Sheet.Integrity"}}<input type="number" name="system.integrity.value" value="{{sys.integrity.value}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.IntegrityMax"}}<input type="number" name="system.integrity.max" value="{{sys.integrity.max}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Mass"}}<input type="number" step="0.1" name="system.massKg" value="{{sys.massKg}}"/></label>
|
|
</div>
|
|
|
|
{{#each sys.functions as |fn key|}}
|
|
<h3 class="rb-cat-head">{{key}}
|
|
{{#if fn.requiredDiscoveryIds.length}}
|
|
<span class="rb-locked-chip">{{localize "RINGBRP.Item.Locked"}}</span>
|
|
{{/if}}
|
|
</h3>
|
|
<div class="rb-fnbody">
|
|
{{#if fn.effect}}<p class="rb-fn-effect">{{fn.effect}}</p>{{/if}}
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.SkillFamily"}}<input type="text" name="system.functions.{{key}}.skillFamilyId" value="{{fn.skillFamilyId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.SkillSpec"}}<input type="text" name="system.functions.{{key}}.skillSpecialisationId" value="{{fn.skillSpecialisationId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Difficulty"}}<input type="text" name="system.functions.{{key}}.difficulty" value="{{fn.difficulty}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.DifficultyAfter"}}<input type="text" name="system.functions.{{key}}.difficultyAfterDiscovery" value="{{fn.difficultyAfterDiscovery}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.PowerCost"}}<input type="number" name="system.functions.{{key}}.powerCost" value="{{fn.powerCost}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.PowerCostFail"}}<input type="number" name="system.functions.{{key}}.powerCostOnFailure" value="{{fn.powerCostOnFailure}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.RequiresIntegrity"}}<input type="number" name="system.functions.{{key}}.requiresIntegrity" value="{{fn.requiresIntegrity}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.HoursPerAttempt"}}<input type="number" name="system.functions.{{key}}.hoursPerAttempt" value="{{fn.hoursPerAttempt}}"/></label>
|
|
</div>
|
|
{{#if fn.onFumble}}<p class="rb-hint rb-hint-warn">{{fn.onFumble}}</p>{{/if}}
|
|
</div>
|
|
{{/each}}
|
|
{{/if}}
|
|
|
|
{{#if isDiscovery}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Identity"}}</h3>
|
|
<label class="rb-block">{{localize "RINGBRP.Item.Question"}}</label>
|
|
<input type="text" name="system.question" value="{{sys.question}}" class="rb-wide"/>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.DiscoveryId"}}<input type="text" name="system.discoveryId" value="{{sys.discoveryId}}"/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Publishable"}}<input type="checkbox" name="system.publishable" {{checked sys.publishable}}/></label>
|
|
<label class="rb-check">{{localize "RINGBRP.Item.Published"}}<input type="checkbox" name="system.published" {{checked sys.published}}/></label>
|
|
</div>
|
|
{{#if sys.unlocks.length}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Unlocks"}}</h3>
|
|
<ol class="rb-list">
|
|
{{#each sys.unlocks as |u|}}<li><span class="rb-strong">{{u.documentId}}</span><span class="rb-dim">{{u.functionId}}</span></li>{{/each}}
|
|
</ol>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if isProject}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Steps"}}</h3>
|
|
<ol class="rb-steps">
|
|
{{#each sys.steps as |s i|}}
|
|
<li class="rb-step {{#if (rbEq i ../sys.currentStep)}}rb-step-current{{/if}} {{#if (rbEq s.state 'complete')}}rb-step-done{{/if}}">
|
|
<span class="rb-step-n">{{rbAdd i 1}}</span>
|
|
<div class="rb-step-body">
|
|
<span class="rb-step-type">{{s.stepType}}</span>
|
|
<span class="rb-dim">{{s.skillFamilyId}}{{#if s.skillSpecialisationId}} ({{s.skillSpecialisationId}}){{/if}} · {{s.difficulty}}{{#if s.hours}} · {{s.hours}} h{{/if}}{{#if s.facility}} · {{s.facility}}{{/if}}</span>
|
|
{{#if s.objective}}<div class="rb-objective">{{s.objective}}</div>{{/if}}
|
|
</div>
|
|
<span class="rb-step-state">{{s.state}}</span>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Values"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.Status"}}<input type="text" name="system.status" value="{{sys.status}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.CurrentStep"}}<input type="number" name="system.currentStep" value="{{sys.currentStep}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.MaxResearchers"}}<input type="number" name="system.maxResearchers" value="{{sys.maxResearchers}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Yields"}}<input type="text" name="system.yieldsDiscoveryId" value="{{sys.yieldsDiscoveryId}}"/></label>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if isGroup}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Identity"}}</h3>
|
|
<div class="rb-grid3">
|
|
<label>{{localize "RINGBRP.Item.GroupId"}}<input type="text" name="system.groupId" value="{{sys.groupId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Population"}}<input type="number" name="system.population" value="{{sys.population}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.NpcTemplate"}}<input type="text" name="system.npcTemplateId" value="{{sys.npcTemplateId}}"/></label>
|
|
</div>
|
|
<label class="rb-block">{{localize "RINGBRP.Item.OfferForm"}}</label>
|
|
<input type="text" name="system.correctOfferForm" value="{{sys.correctOfferForm}}" class="rb-wide"/>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Taboos"}}</h3>
|
|
<ol class="rb-list">{{#each sys.taboos as |t|}}<li><span class="rb-taboo">{{t.text}}</span>{{#if t.penaltyIfViolated}}<span class="rb-dim">{{t.penaltyIfViolated}}%</span>{{/if}}</li>{{/each}}</ol>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Desires"}}</h3>
|
|
<ol class="rb-list">{{#each sys.desires as |d|}}<li><span class="rb-desire">{{d.text}}</span></li>{{/each}}</ol>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Rewards"}}</h3>
|
|
<ol class="rb-list">
|
|
{{#each sys.rewardsByStanding as |rewards standing|}}
|
|
<li><span class="rb-standing-chip">+{{standing}}</span>
|
|
<span class="rb-dim">{{#each rewards as |r|}}{{r}}{{#unless @last}} · {{/unless}}{{/each}}</span></li>
|
|
{{/each}}
|
|
</ol>
|
|
{{/if}}
|
|
|
|
{{#if isMaterial}}
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.Identity"}}</h3>
|
|
<div class="rb-grid2">
|
|
<label>{{localize "RINGBRP.Item.MaterialId"}}<input type="text" name="system.materialId" value="{{sys.materialId}}"/></label>
|
|
<label>{{localize "RINGBRP.Item.Neutrino"}}<input type="number" step="0.01" name="system.neutrinoAbsorption" value="{{sys.neutrinoAbsorption}}"/></label>
|
|
</div>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.ImmuneTo"}}</h3>
|
|
<p class="rb-tags">{{#each sys.immuneTo as |t|}}<span class="rb-tag">{{t}}</span>{{else}}<span class="rb-dim">—</span>{{/each}}</p>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.SlowTo"}}</h3>
|
|
<p class="rb-tags">{{#each sys.slowTo as |t|}}<span class="rb-tag">{{t}}</span>{{else}}<span class="rb-dim">—</span>{{/each}}</p>
|
|
<h3 class="rb-cat-head">{{localize "RINGBRP.Item.BlocksSensors"}}</h3>
|
|
<p class="rb-tags">{{#each sys.blocksSensors as |t|}}<span class="rb-tag">{{t}}</span>{{else}}<span class="rb-dim">—</span>{{/each}}</p>
|
|
{{/if}}
|
|
</div>
|
|
|
|
<div class="tab" data-group="primary" data-tab="desc">
|
|
{{editor descriptionHTML target="system.description" button=true editable=editable engine="prosemirror"}}
|
|
</div>
|
|
</section>
|
|
</form>
|