Movement types (Climb, Cling, Fly, Phase, Swim) now use boolean toggles instead of separate speed values, matching RAW where all special movement uses base speed. Changes: - Update NPC and Character data models with movement schema - Add movement section to NPC stats template (grid layout) - Add movement section to character biography template - Add localization strings with tooltip hints for each type - Style movement grid to match senses section pattern - Add rollable # Appearing label for NPC sheets - Fix NPC sheet scrollbar visibility 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
152 lines
5.4 KiB
Handlebars
152 lines
5.4 KiB
Handlebars
{{!-- Character Sheet Biography Tab --}}
|
|
<section class="sheet-body tab-content biography-tab">
|
|
{{!-- Character Details --}}
|
|
<div class="biography-section details">
|
|
<h2 class="section-header">{{localize "VAGABOND.CharacterDetails"}}</h2>
|
|
<div class="details-grid">
|
|
<div class="detail-field">
|
|
<label>{{localize "VAGABOND.Size"}}</label>
|
|
<select name="system.details.size">
|
|
{{#each sizeOptions}}
|
|
<option value="{{@key}}" {{#if (eq @key ../details.size)}}selected{{/if}}>
|
|
{{localize this}}
|
|
</option>
|
|
{{/each}}
|
|
</select>
|
|
</div>
|
|
|
|
<div class="detail-field">
|
|
<label>{{localize "VAGABOND.BeingType"}}</label>
|
|
<select name="system.details.beingType">
|
|
{{#each beingTypeOptions}}
|
|
<option value="{{@key}}" {{#if (eq @key ../details.beingType)}}selected{{/if}}>
|
|
{{localize this}}
|
|
</option>
|
|
{{/each}}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{!-- Languages --}}
|
|
<div class="biography-section languages">
|
|
<h2 class="section-header">{{localize "VAGABOND.Languages"}}</h2>
|
|
<div class="languages-list">
|
|
{{#each system.languages}}
|
|
<span class="language-tag">{{this}}</span>
|
|
{{else}}
|
|
<span class="no-languages">{{localize "VAGABOND.NoLanguages"}}</span>
|
|
{{/each}}
|
|
</div>
|
|
</div>
|
|
|
|
{{!-- Senses --}}
|
|
<div class="biography-section senses">
|
|
<h2 class="section-header">{{localize "VAGABOND.Senses"}}</h2>
|
|
<div class="senses-grid">
|
|
<div class="sense-field">
|
|
<label>
|
|
<input type="checkbox" name="system.senses.allsight"
|
|
{{#if system.senses.allsight}}checked{{/if}} />
|
|
{{localize "VAGABOND.Allsight"}}
|
|
</label>
|
|
</div>
|
|
<div class="sense-field">
|
|
<label>
|
|
<input type="checkbox" name="system.senses.blindsight"
|
|
{{#if system.senses.blindsight}}checked{{/if}} />
|
|
{{localize "VAGABOND.Blindsight"}}
|
|
</label>
|
|
</div>
|
|
<div class="sense-field">
|
|
<label>
|
|
<input type="checkbox" name="system.senses.darkvision"
|
|
{{#if system.senses.darkvision}}checked{{/if}} />
|
|
{{localize "VAGABOND.Darkvision"}}
|
|
</label>
|
|
</div>
|
|
<div class="sense-field">
|
|
<label>
|
|
<input type="checkbox" name="system.senses.echolocation"
|
|
{{#if system.senses.echolocation}}checked{{/if}} />
|
|
{{localize "VAGABOND.Echolocation"}}
|
|
</label>
|
|
</div>
|
|
<div class="sense-field">
|
|
<label>
|
|
<input type="checkbox" name="system.senses.seismicsense"
|
|
{{#if system.senses.seismicsense}}checked{{/if}} />
|
|
{{localize "VAGABOND.Seismicsense"}}
|
|
</label>
|
|
</div>
|
|
<div class="sense-field">
|
|
<label>
|
|
<input type="checkbox" name="system.senses.telepathy"
|
|
{{#if system.senses.telepathy}}checked{{/if}} />
|
|
{{localize "VAGABOND.Telepathy"}}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{!-- Movement Capabilities --}}
|
|
<div class="biography-section movement">
|
|
<h2 class="section-header">{{localize "VAGABOND.Movement"}}</h2>
|
|
<div class="movement-grid">
|
|
<div class="movement-field">
|
|
<label data-tooltip="{{localize 'VAGABOND.MovementClimbHint'}}">
|
|
<input type="checkbox" name="system.movement.climb"
|
|
{{#if system.movement.climb}}checked{{/if}} />
|
|
{{localize "VAGABOND.Climb"}}
|
|
</label>
|
|
</div>
|
|
<div class="movement-field">
|
|
<label data-tooltip="{{localize 'VAGABOND.MovementClingHint'}}">
|
|
<input type="checkbox" name="system.movement.cling"
|
|
{{#if system.movement.cling}}checked{{/if}} />
|
|
{{localize "VAGABOND.Cling"}}
|
|
</label>
|
|
</div>
|
|
<div class="movement-field">
|
|
<label data-tooltip="{{localize 'VAGABOND.MovementFlyHint'}}">
|
|
<input type="checkbox" name="system.movement.fly"
|
|
{{#if system.movement.fly}}checked{{/if}} />
|
|
{{localize "VAGABOND.Fly"}}
|
|
</label>
|
|
</div>
|
|
<div class="movement-field">
|
|
<label data-tooltip="{{localize 'VAGABOND.MovementPhaseHint'}}">
|
|
<input type="checkbox" name="system.movement.phase"
|
|
{{#if system.movement.phase}}checked{{/if}} />
|
|
{{localize "VAGABOND.Phase"}}
|
|
</label>
|
|
</div>
|
|
<div class="movement-field">
|
|
<label data-tooltip="{{localize 'VAGABOND.MovementSwimHint'}}">
|
|
<input type="checkbox" name="system.movement.swim"
|
|
{{#if system.movement.swim}}checked{{/if}} />
|
|
{{localize "VAGABOND.Swim"}}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{!-- Biography Text --}}
|
|
<div class="biography-section biography-text">
|
|
<h2 class="section-header">{{localize "VAGABOND.Biography"}}</h2>
|
|
<div class="editor-container">
|
|
<textarea class="biography-editor" name="system.biography"
|
|
placeholder="{{localize 'VAGABOND.BiographyPlaceholder'}}">{{system.biography}}</textarea>
|
|
</div>
|
|
</div>
|
|
|
|
{{!-- Notes --}}
|
|
<div class="biography-section notes">
|
|
<h2 class="section-header">{{localize "VAGABOND.Notes"}}</h2>
|
|
<div class="editor-container">
|
|
<textarea class="notes-editor" name="system.notes"
|
|
placeholder="{{localize 'VAGABOND.NotesPlaceholder'}}">{{system.notes}}</textarea>
|
|
</div>
|
|
</div>
|
|
</section>
|