vagabond-rpg-foundryvtt/templates/actor/character-biography.hbs
Cal Corum 694b11f423 Implement movement capability system with boolean toggles
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>
2025-12-15 00:16:44 -06:00

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>