- Foundry v13/v14 compatibility (verified on 14.364) - Complete "Ringworld '84" retheme: CSS custom properties, warm space-black + bronze + ring-arc amber palette, uniform across sheets, dialogs, chat cards, hit-location picker, and impulse HUD - Fix HP damage evaporating on re-prepare: maximums always derived, current values source-authoritative, with a one-time world migration - Ammunition tracking: per-attack consumption, reload button, ammo badge; empty weapons block attacks - Energy weapons auto-link a carried power pack instead of failing - Special Success rolls damage dice twice; fumbles flag GM adjudication (both toggleable world settings) - Defender Dodge prompt before damage (special hits need special dodge) - Damage Mod and derived rolls always recompute; shown read-only - Creature sheet rebuilt to full parity: characteristics, derived rolls, body-schema hit grid with AP totals, weapons/armor/skills - Seeded "Ringworld GM Reference" journal (outcomes, impulses, attack workflow, wounds, 1984 quirks, quick start) - Shared characteristic-check dialog between explorer and creature Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
493 lines
28 KiB
Handlebars
493 lines
28 KiB
Handlebars
<form class="ringworld-sheet explorer-sheet" autocomplete="off">
|
|
<header class="sheet-header rw-header">
|
|
<div class="rw-title-row">
|
|
<h1>Ringworld Explorer Sheet</h1>
|
|
<button type="button" class="toggle-sheet-lock icon-btn" title="{{#if sheetToolsUnlocked}}Lock Sheet Tools{{else}}Unlock Sheet Tools{{/if}}" aria-label="{{#if sheetToolsUnlocked}}Lock Sheet Tools{{else}}Unlock Sheet Tools{{/if}}">
|
|
{{#if sheetToolsUnlocked}}
|
|
<i class="fas fa-lock-open"></i>
|
|
{{else}}
|
|
<i class="fas fa-lock"></i>
|
|
{{/if}}
|
|
</button>
|
|
</div>
|
|
|
|
<section class="rw-upper-grid">
|
|
<section class="rw-left-stack">
|
|
<section class="rw-profile panel">
|
|
<label>Explorer Name <input name="name" type="text" value="{{actor.name}}" /></label>
|
|
<label>Player <input type="text" name="system.profile.player" value="{{system.profile.player}}" /></label>
|
|
<label>Gender <input type="text" name="system.profile.gender" value="{{system.profile.gender}}" /></label>
|
|
<label>Chronological Age <input type="number" name="system.profile.chronologicalAge" value="{{system.profile.chronologicalAge}}" /></label>
|
|
<label>Physiological Age <input type="number" name="system.profile.physiologicalAge" value="{{system.profile.physiologicalAge}}" /></label>
|
|
<label>Species
|
|
<input type="text" name="system.profile.species" value="{{system.profile.species}}" list="ringworld-species-list" />
|
|
<datalist id="ringworld-species-list">
|
|
{{#each speciesOptions as |species|}}
|
|
<option value="{{species}}"></option>
|
|
{{/each}}
|
|
</datalist>
|
|
</label>
|
|
<label>Homeworld <input type="text" name="system.profile.homeworld" value="{{system.profile.homeworld}}" /></label>
|
|
<label>Gravity
|
|
<select name="system.profile.gravity">
|
|
<option value="light" {{#if (eq system.profile.gravity "light")}}selected{{/if}}>Light</option>
|
|
<option value="normal" {{#if (eq system.profile.gravity "normal")}}selected{{/if}}>Normal</option>
|
|
<option value="heavy" {{#if (eq system.profile.gravity "heavy")}}selected{{/if}}>Heavy</option>
|
|
</select>
|
|
</label>
|
|
<label>Hit Model
|
|
<select name="system.hitLocationSchema">
|
|
<option value="auto" {{#if (eq currentHitLocationSchema "auto")}}selected{{/if}}>Auto ({{activeHitLocationSchemaLabel}})</option>
|
|
{{#each hitLocationSchemaOptions as |schema|}}
|
|
<option value="{{schema.id}}" {{#if (eq ../currentHitLocationSchema schema.id)}}selected{{/if}}>{{schema.label}}</option>
|
|
{{/each}}
|
|
</select>
|
|
</label>
|
|
<label>Credit Rating <input type="number" name="system.profile.creditRating" value="{{system.profile.creditRating}}" /></label>
|
|
<label>Money <input type="number" name="system.finance.money" value="{{system.finance.money}}" /></label>
|
|
<label>In Bank <input type="number" name="system.finance.inBank" value="{{system.finance.inBank}}" /></label>
|
|
<label>Action Ranking
|
|
<input type="number" value="{{effectiveActionRanking}}" readonly title="Base AR {{baseActionRanking}} + Encumbrance {{system.encumbrance.actionRankingPenalty}}" />
|
|
</label>
|
|
<label>Base Movement Rate <input type="number" name="system.derived.move" value="{{system.derived.move}}" /></label>
|
|
<label>Energy
|
|
<span class="inline-pair">
|
|
<input type="number" name="system.resources.energy.value" value="{{system.resources.energy.value}}" />
|
|
<span>/</span>
|
|
<input type="number" name="system.resources.energy.max" value="{{system.resources.energy.max}}" />
|
|
</span>
|
|
</label>
|
|
<label>Current Move / Run
|
|
<input type="text" value="{{movementSummary}}" readonly />
|
|
</label>
|
|
<label class="rw-encumbrance-field">Encumbrance
|
|
<input type="text" value="{{encumbranceSummary}}" readonly />
|
|
</label>
|
|
</section>
|
|
|
|
<section class="panel rw-quick">
|
|
<div class="rw-attribute-board">
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="str" data-label="STR">STR</button><input type="number" name="system.characteristics.str" value="{{system.characteristics.str}}" /></div>
|
|
<div class="rhs"><span>Damage Mod</span><input type="text" value="{{system.combat.damageMod}}" readonly /></div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="mas" data-label="MAS">MAS</button><input type="number" name="system.characteristics.mas" value="{{system.characteristics.mas}}" /></div>
|
|
<div class="rhs">
|
|
<span>General Hit Points</span>
|
|
<span class="inline-pair">
|
|
<input type="number" name="system.generalHp.value" value="{{system.generalHp.value}}" />
|
|
<span>/</span>
|
|
<input type="number" name="system.generalHp.max" value="{{system.generalHp.max}}" />
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="con" data-label="CON">CON</button><input type="number" name="system.characteristics.con" value="{{system.characteristics.con}}" /></div>
|
|
<div class="rhs">
|
|
<span>Health Roll</span>
|
|
<span class="inline-pair">
|
|
<input type="number" value="{{system.derivedRolls.health}}" readonly />
|
|
<span>%</span>
|
|
<button type="button" class="roll-derived icon-btn" data-check="health" title="Roll Health" aria-label="Roll Health"><i class="fas fa-dice-d20"></i></button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="int" data-label="INT">INT</button><input type="number" name="system.characteristics.int" value="{{system.characteristics.int}}" /></div>
|
|
<div class="rhs">
|
|
<span>Reasoning Roll</span>
|
|
<span class="inline-pair">
|
|
<input type="number" value="{{system.derivedRolls.reasoning}}" readonly />
|
|
<span>%</span>
|
|
<button type="button" class="roll-derived icon-btn" data-check="reasoning" title="Roll Reasoning" aria-label="Roll Reasoning"><i class="fas fa-dice-d20"></i></button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="pow" data-label="POW">POW</button><input type="number" name="system.characteristics.pow" value="{{system.characteristics.pow}}" /></div>
|
|
<div class="rhs">
|
|
<span>Luck Roll</span>
|
|
<span class="inline-pair">
|
|
<input type="number" value="{{system.derivedRolls.luck}}" readonly />
|
|
<span>%</span>
|
|
<button type="button" class="roll-derived icon-btn" data-check="luck" title="Roll Luck" aria-label="Roll Luck"><i class="fas fa-dice-d20"></i></button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="dex" data-label="DEX">DEX</button><input type="number" name="system.characteristics.dex" value="{{system.characteristics.dex}}" /></div>
|
|
<div class="rhs">
|
|
<span>Dodge Roll</span>
|
|
<span class="inline-pair">
|
|
<input type="number" value="{{system.derivedRolls.dodge}}" readonly />
|
|
<span>%</span>
|
|
<button type="button" class="roll-derived icon-btn" data-check="dodge" title="Roll Dodge" aria-label="Roll Dodge"><i class="fas fa-dice-d20"></i></button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="app" data-label="APP">APP</button><input type="number" name="system.characteristics.app" value="{{system.characteristics.app}}" /></div>
|
|
<div class="rhs"><span>Defects</span><input type="text" name="system.notes.defects" value="{{system.notes.defects}}" /></div>
|
|
</div>
|
|
<div class="attr-row">
|
|
<div class="lhs"><button type="button" class="roll-characteristic stat-roll-btn" data-char="edu" data-label="EDU">EDU</button><input type="number" name="system.characteristics.edu" value="{{system.characteristics.edu}}" /></div>
|
|
<div class="rhs"><span>Habits</span><input type="text" name="system.notes.habits" value="{{system.notes.habits}}" /></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rw-tools">
|
|
<label>Age <input type="number" name="system.characteristics.age" value="{{system.characteristics.age}}" /></label>
|
|
<button type="button" class="reset-conditions">Reset Conditions</button>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
|
|
<section class="rw-right-stack">
|
|
<section class="panel rw-hit-main">
|
|
<div class="panel-header">
|
|
<h3>Hit Locations</h3>
|
|
</div>
|
|
|
|
<div class="rw-hit-toolbar">
|
|
<button type="button" class="roll-hit-location icon-btn" title="Roll Hit Location" aria-label="Roll Hit Location">
|
|
<i class="fas fa-dice-d20"></i>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="rw-hit-layout">
|
|
<div class="rw-hit-body schema-{{activeHitLocationSchemaId}}">
|
|
{{#each bodyLocations as |loc|}}
|
|
<article class="body-loc body-{{loc.slug}}">
|
|
<h4>{{loc.label}}</h4>
|
|
<div class="loc-roll">d20 {{loc.rollRange}}</div>
|
|
<label>AP Base <input type="number" name="system.hitLocations.{{loc.slug}}.armor" value="{{loc.armor}}" /></label>
|
|
<div class="loc-ap-total">AP Total: {{loc.totalArmor}}</div>
|
|
<label>HP
|
|
<span class="inline-pair">
|
|
<input type="number" name="system.hitLocations.{{loc.slug}}.hp.value" value="{{loc.hp.value}}" />
|
|
<span>/</span>
|
|
<span>{{loc.hp.max}}</span>
|
|
</span>
|
|
</label>
|
|
</article>
|
|
{{/each}}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="rw-right-lower">
|
|
<section class="panel rw-portrait-panel">
|
|
<div class="panel-header">
|
|
<h3>Portrait</h3>
|
|
</div>
|
|
<img class="rw-portrait-img" src="{{actor.img}}" alt="{{actor.name}}" data-edit="img" title="Click to change portrait" />
|
|
</section>
|
|
|
|
<aside class="rw-hit-summary">
|
|
<h4>Hit Points By Location</h4>
|
|
{{#each hitLocations as |loc|}}
|
|
<div class="rw-hit-summary-row">
|
|
<span class="rw-hit-label">{{loc.label}}</span>
|
|
<span class="rw-hit-values">HP {{loc.hp.value}} / {{loc.hp.max}} | AP {{loc.totalArmor}}</span>
|
|
</div>
|
|
{{/each}}
|
|
<label class="rw-hit-unconscious">Unconscious Level
|
|
<input type="number" name="system.unconsciousLevel" value="{{system.unconsciousLevel}}" />
|
|
</label>
|
|
</aside>
|
|
</section>
|
|
</section>
|
|
</section>
|
|
</header>
|
|
|
|
<nav class="tabs" data-group="primary">
|
|
<a class="item" data-tab="overview">Overview</a>
|
|
<a class="item" data-tab="skills">Skills</a>
|
|
<a class="item" data-tab="combat">Combat</a>
|
|
<a class="item" data-tab="gear">Gear</a>
|
|
</nav>
|
|
|
|
<section class="sheet-body">
|
|
<div class="tab" data-group="primary" data-tab="overview">
|
|
<section class="rw-overview-content">
|
|
<section class="panel rw-overview-weapons">
|
|
<div class="panel-header">
|
|
<h3>Weapons</h3>
|
|
<button type="button" class="item-create icon-btn" data-type="weapon" title="Add Weapon" aria-label="Add Weapon">
|
|
<i class="fas fa-plus"></i>
|
|
</button>
|
|
</div>
|
|
<ol class="item-list rw-weapon-list rw-overview-list">
|
|
{{#each weapons as |item|}}
|
|
<li class="item" data-item-id="{{item.id}}">
|
|
<div class="item-title"><img class="item-icon" src="{{item.img}}" alt="" /><span>{{item.name}}</span></div>
|
|
<div>{{item.system.linkedSkill}}</div>
|
|
<div>{{item.system.damageFormula}}</div>
|
|
<div>{{item.system.range.close}} / {{item.system.range.medium}} / {{item.system.range.long}}</div>
|
|
<div class="actions">
|
|
<button type="button" class="item-use-weapon icon-btn" title="Use Weapon" aria-label="Use Weapon"><i class="fas fa-dice-d20"></i></button>
|
|
<button type="button" class="item-edit icon-btn" title="Edit Weapon" aria-label="Edit Weapon"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Weapon" aria-label="Delete Weapon"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
|
|
<section class="rw-overview-side">
|
|
<section class="panel rw-overview-armor">
|
|
<div class="panel-header">
|
|
<h3>Armor</h3>
|
|
<button type="button" class="item-create icon-btn" data-type="armor" title="Add Armor" aria-label="Add Armor">
|
|
<i class="fas fa-plus"></i>
|
|
</button>
|
|
</div>
|
|
<ol class="item-list rw-overview-list rw-armor-list">
|
|
{{#each armors as |item|}}
|
|
<li class="item" data-item-id="{{item.id}}">
|
|
<div class="item-title"><img class="item-icon" src="{{item.img}}" alt="" /><span>{{item.name}}</span></div>
|
|
<div>Base AP {{item.system.value}}</div>
|
|
<div>{{#if item.system.stowed}}Stowed{{else}}{{#if item.system.equipped}}Equipped{{else}}Carried{{/if}}{{/if}}</div>
|
|
<div class="actions">
|
|
<button type="button" class="item-edit icon-btn" title="Edit Armor" aria-label="Edit Armor"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Armor" aria-label="Delete Armor"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
</section>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="tab" data-group="primary" data-tab="skills">
|
|
<div class="toolbar skills-toolbar">
|
|
<button type="button" class="populate-base-skills">Populate Ringworld Base Skills</button>
|
|
<button type="button" class="item-create" data-type="skill">Add Skill</button>
|
|
<span class="skills-badge">Missing: {{missingBaseSkillsCount}}</span>
|
|
</div>
|
|
|
|
<section class="panel rw-character-builder">
|
|
<div class="panel-header">
|
|
<h3>Character Builder</h3>
|
|
{{#if sheetToolsUnlocked}}
|
|
<div class="rw-builder-actions">
|
|
<button type="button" class="roll-characteristics">Roll Characteristics</button>
|
|
<button type="button" class="builder-auto-allocate">Auto Allocate Skill Points</button>
|
|
<button type="button" class="builder-reset-points">Reset Points</button>
|
|
</div>
|
|
{{else}}
|
|
<span class="rw-lock-status">Tools Locked</span>
|
|
{{/if}}
|
|
</div>
|
|
|
|
<div class="rw-builder-pools">
|
|
<div><strong>Education</strong> (EDU-10)*20: {{builder.education.total}} | Spent {{builder.education.spent}} | Remaining {{builder.education.remaining}}</div>
|
|
<div><strong>Pursuits</strong> (Age-EDU-6)*20: {{builder.pursuits.total}} | Spent {{builder.pursuits.spent}} | Remaining {{builder.pursuits.remaining}}</div>
|
|
<div><strong>Special Interests</strong> INT*10: {{builder.special.total}} | Spent {{builder.special.spent}} | Remaining {{builder.special.remaining}}</div>
|
|
<div><strong>Pursuit Years</strong>: {{builder.pursuitYears.total}} | Allocated {{builder.pursuitYears.spent}} | Remaining {{builder.pursuitYears.remaining}}</div>
|
|
</div>
|
|
|
|
{{#if sheetToolsUnlocked}}
|
|
<div class="rw-builder-pursuits">
|
|
<h4>Pursuit Selections (controls pursuit-only skill spending)</h4>
|
|
<div class="builder-add-row">
|
|
<select class="builder-new-pursuit">
|
|
{{#each builder.pursuitOptions as |pName|}}
|
|
<option value="{{pName}}">{{pName}}</option>
|
|
{{/each}}
|
|
</select>
|
|
<input class="builder-new-years" type="number" min="1" value="1" />
|
|
<button type="button" class="builder-add-pursuit">Add / Update</button>
|
|
</div>
|
|
|
|
<ol class="builder-pursuit-list">
|
|
{{#each builder.pursuitsList as |entry idx|}}
|
|
<li class="builder-pursuit-row">
|
|
<select class="builder-pursuit-name">
|
|
{{#each ../../builder.pursuitOptions as |pName|}}
|
|
<option value="{{pName}}" {{#if (eq pName ../entry.name)}}selected{{/if}}>{{pName}}</option>
|
|
{{/each}}
|
|
</select>
|
|
<input class="builder-pursuit-years" type="number" min="1" value="{{entry.years}}" />
|
|
<button type="button" class="builder-update-pursuit">Save</button>
|
|
<button type="button" class="builder-remove-pursuit" data-index="{{idx}}">Remove</button>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</div>
|
|
|
|
<p class="rw-builder-note">Use <strong>Allocate Builder Points</strong> on each skill row to spend points by pool. Overspending and invalid pool usage are blocked.</p>
|
|
{{/if}}
|
|
</section>
|
|
|
|
<div class="skills-grid">
|
|
{{#each skillsByCategory as |group|}}
|
|
<section class="panel skill-category">
|
|
<h3>{{group.category}}</h3>
|
|
<label class="root-max">
|
|
Root Max ({{group.rootFormula}})
|
|
<input type="number" name="system.skillRootMax.{{group.rootKey}}" value="{{group.rootValue}}" readonly />
|
|
</label>
|
|
<div class="skill-columns-head">
|
|
<span>Skill</span>
|
|
<span>Base %</span>
|
|
<span>Current %</span>
|
|
<span>Actions</span>
|
|
</div>
|
|
|
|
<ol class="item-list skill-list compact-skill-list">
|
|
{{#each group.rows as |row|}}
|
|
{{#if row.itemId}}
|
|
<li class="item skill-row" data-item-id="{{row.itemId}}">
|
|
<div class="skill-name" title="Base {{row.base}}%">
|
|
<img class="skill-icon" src="{{row.icon}}" alt="" />
|
|
<span>{{row.name}}</span>
|
|
</div>
|
|
<div class="skill-base">{{row.base}}%</div>
|
|
<div class="skill-value">{{row.value}}% {{#if row.allocationTotal}}<span class="alloc-chip">+{{row.allocationTotal}}</span>{{/if}}</div>
|
|
<div class="actions skill-actions">
|
|
{{#if ../../sheetToolsUnlocked}}
|
|
<button type="button" class="builder-skill-allocate icon-btn" title="Allocate Builder Points" aria-label="Allocate Builder Points"><i class="fas fa-layer-group"></i></button>
|
|
{{/if}}
|
|
<button type="button" class="item-roll-skill icon-btn" title="Roll Skill" aria-label="Roll Skill"><i class="fas fa-dice-d20"></i></button>
|
|
<button type="button" class="item-edit icon-btn" title="Edit Skill" aria-label="Edit Skill"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Skill" aria-label="Delete Skill"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{else}}
|
|
<li class="item skill-row missing-skill">
|
|
<div class="skill-name" title="Base {{row.base}}%">
|
|
<img class="skill-icon" src="{{row.icon}}" alt="" />
|
|
<span>{{row.name}}</span>
|
|
</div>
|
|
<div class="skill-base">{{row.base}}%</div>
|
|
<div class="skill-value">-</div>
|
|
<div class="actions skill-actions">
|
|
<button
|
|
type="button"
|
|
class="add-base-skill icon-btn"
|
|
data-skill-name="{{row.name}}"
|
|
data-skill-category="{{row.category}}"
|
|
data-skill-base="{{row.base}}"
|
|
data-skill-specialization="{{row.specialization}}"
|
|
title="Add Base Skill"
|
|
aria-label="Add Base Skill"
|
|
>
|
|
<i class="fas fa-plus"></i>
|
|
</button>
|
|
</div>
|
|
</li>
|
|
{{/if}}
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
{{/each}}
|
|
</div>
|
|
|
|
<details class="panel additional-skills" {{#if customSkills.length}}open{{/if}}>
|
|
<summary>Additional Skills ({{customSkills.length}})</summary>
|
|
<div class="skill-columns-head">
|
|
<span>Skill</span>
|
|
<span>Base %</span>
|
|
<span>Current %</span>
|
|
<span>Actions</span>
|
|
</div>
|
|
<ol class="item-list skill-list compact-skill-list">
|
|
{{#each customSkills as |item|}}
|
|
<li class="item skill-row" data-item-id="{{item.id}}">
|
|
<div class="skill-name"><img class="skill-icon" src="{{item.img}}" alt="" /><span>{{item.name}}</span></div>
|
|
<div class="skill-base">-</div>
|
|
<div class="skill-value">{{item.system.value}}% {{#if item.allocationTotal}}<span class="alloc-chip">+{{item.allocationTotal}}</span>{{/if}}</div>
|
|
<div class="actions skill-actions">
|
|
{{#if ../sheetToolsUnlocked}}
|
|
<button type="button" class="builder-skill-allocate icon-btn" title="Allocate Builder Points" aria-label="Allocate Builder Points"><i class="fas fa-layer-group"></i></button>
|
|
{{/if}}
|
|
<button type="button" class="item-roll-skill icon-btn" title="Roll Skill" aria-label="Roll Skill"><i class="fas fa-dice-d20"></i></button>
|
|
<button type="button" class="item-edit icon-btn" title="Edit Skill" aria-label="Edit Skill"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Skill" aria-label="Delete Skill"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</details>
|
|
</div>
|
|
|
|
<div class="tab" data-group="primary" data-tab="combat">
|
|
<section class="panel">
|
|
<div class="panel-header">
|
|
<h3>Weapons</h3>
|
|
<button type="button" class="item-create" data-type="weapon">Add Weapon</button>
|
|
</div>
|
|
<ol class="item-list rw-weapon-list">
|
|
{{#each weapons as |item|}}
|
|
<li class="item" data-item-id="{{item.id}}">
|
|
<div class="item-title"><img class="item-icon" src="{{item.img}}" alt="" /><span>{{item.name}}</span></div>
|
|
<div>{{item.system.weight}}kg</div>
|
|
<div>{{#if item.system.stowed}}Stowed{{else}}{{#if item.system.equipped}}Equipped{{else}}Carried{{/if}}{{/if}} | {{item.system.linkedSkill}}</div>
|
|
<div>{{item.system.damageFormula}}{{#if item.system.ammo.max}} <span class="rw-ammo-badge">{{item.system.ammo.value}}/{{item.system.ammo.max}}</span>{{/if}}</div>
|
|
<div>{{item.system.range.close}} / {{item.system.range.medium}} / {{item.system.range.long}}</div>
|
|
<div class="actions">
|
|
<button type="button" class="item-use-weapon icon-btn" title="Use Weapon" aria-label="Use Weapon"><i class="fas fa-dice-d20"></i></button>
|
|
{{#if item.system.ammo.max}}<button type="button" class="item-reload-weapon icon-btn" title="Reload" aria-label="Reload"><i class="fas fa-rotate"></i></button>{{/if}}
|
|
<button type="button" class="item-toggle-equipped icon-btn" title="{{#if item.system.equipped}}Set Not Equipped{{else}}Set Equipped{{/if}}" aria-label="Toggle Equipped"><i class="fas fa-hand-paper"></i></button>
|
|
<button type="button" class="item-toggle-stowed icon-btn" title="{{#if item.system.stowed}}Unstow{{else}}Stow{{/if}}" aria-label="Toggle Stowed"><i class="fas fa-box"></i></button>
|
|
<button type="button" class="item-edit icon-btn" title="Edit Weapon" aria-label="Edit Weapon"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Weapon" aria-label="Delete Weapon"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
</div>
|
|
|
|
<div class="tab" data-group="primary" data-tab="gear">
|
|
<section class="panel">
|
|
<div class="panel-header">
|
|
<h3>Armor</h3>
|
|
<button type="button" class="item-create" data-type="armor">Add Armor</button>
|
|
</div>
|
|
<ol class="item-list rw-armor-list">
|
|
{{#each armors as |item|}}
|
|
<li class="item" data-item-id="{{item.id}}">
|
|
<div class="item-title"><img class="item-icon" src="{{item.img}}" alt="" /><span>{{item.name}}</span></div>
|
|
<div>{{item.system.weight}}kg</div>
|
|
<div>Base AP {{item.system.value}}</div>
|
|
<div>{{#if item.system.stowed}}Stowed{{else}}{{#if item.system.equipped}}Equipped{{else}}Carried{{/if}}{{/if}}</div>
|
|
<div class="actions">
|
|
<button type="button" class="item-toggle-equipped icon-btn" title="{{#if item.system.equipped}}Set Not Equipped{{else}}Set Equipped{{/if}}" aria-label="Toggle Equipped"><i class="fas fa-shield-alt"></i></button>
|
|
<button type="button" class="item-toggle-stowed icon-btn" title="{{#if item.system.stowed}}Unstow{{else}}Stow{{/if}}" aria-label="Toggle Stowed"><i class="fas fa-box"></i></button>
|
|
<button type="button" class="item-edit icon-btn" title="Edit Armor" aria-label="Edit Armor"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Armor" aria-label="Delete Armor"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<div class="panel-header">
|
|
<h3>Equipment</h3>
|
|
<button type="button" class="item-create" data-type="gear">Add Gear</button>
|
|
</div>
|
|
<ol class="item-list rw-gear-list">
|
|
{{#each gear as |item|}}
|
|
<li class="item" data-item-id="{{item.id}}">
|
|
<div class="item-title"><img class="item-icon" src="{{item.img}}" alt="" /><span>{{item.name}}</span></div>
|
|
<div>Weight {{item.system.weight}}</div>
|
|
<div>{{#if item.system.stowed}}Stowed{{else}}{{#if item.system.equipped}}Equipped{{else}}Carried{{/if}}{{/if}} | {{#if item.system.isPowerPack}}Power Pack {{item.system.energy.value}}/{{item.system.energy.max}}{{else}}Gear{{/if}}</div>
|
|
<div class="actions">
|
|
<button type="button" class="item-toggle-equipped icon-btn" title="{{#if item.system.equipped}}Set Not Equipped{{else}}Set Equipped{{/if}}" aria-label="Toggle Equipped"><i class="fas fa-hand-paper"></i></button>
|
|
<button type="button" class="item-toggle-stowed icon-btn" title="{{#if item.system.stowed}}Unstow{{else}}Stow{{/if}}" aria-label="Toggle Stowed"><i class="fas fa-box"></i></button>
|
|
<button type="button" class="item-edit icon-btn" title="Edit Gear" aria-label="Edit Gear"><i class="fas fa-pen"></i></button>
|
|
<button type="button" class="item-delete icon-btn" title="Delete Gear" aria-label="Delete Gear"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
</div>
|
|
</section>
|
|
</form>
|