feat: fiche PNJ (profil + niveaux) et passage du véhicule en acteur
Release Creation / build (release) Failing after 1m17s

This commit is contained in:
2026-08-04 20:34:20 +02:00
parent ea3322e843
commit cf905cdcfb
36 changed files with 1288 additions and 707 deletions
@@ -86,6 +86,47 @@
{{/each}}
</ol>
</div>
<div class="vehicles">
<h4>{{localize 'ITEMS.vehicles'}}</h4>
<ol class="items-list">
<li class="item flexrow items-header">
<div class="item-name" style="flex:4;">{{ localize 'IDENTITY.name'}}</div>
<div class="item-mobility">{{ localize 'VERMINE.mobility'}}</div>
<div class="item-rarity">{{ localize 'VERMINE.rarity'}}</div>
<div class="item-reliability">{{ localize 'VERMINE.reliability'}}</div>
<div class="item-controls">
{{#if isEditMode}}
<a class="item-control item-create" data-action="createVehicle" title="Create vehicle"><i class="fas fa-plus"></i></a>
{{/if}}
</div>
</li>
{{#each vehicles as |vehicle|}}
<li class="item flexrow flex-group-center" data-vehicle-id="{{vehicle.id}}">
<div class="item-name" style="flex:4;">
<div class="item-image">
<a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}"><img
src="{{vehicle.img}}" title="{{vehicle.name}}" width="24"
height="24" /></a>
</div>
<a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.name}}</a>
</div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.mobility}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.rarity.value}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.reliability}}</a></div>
<div class="item-controls">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="deleteVehicle" data-vehicle-id="{{vehicle.id}}" title="Delete Vehicle"><i
class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{else}}
<li class="item flexrow flex-group-center">
<span class="empty">{{ localize 'VERMINE.no_vehicles' }}</span>
</li>
{{/each}}
</ol>
</div>
<div class="equipment-notes">
<h4>{{ localize 'IDENTITY.notes'}}</h4>
{{formInput systemFields.equipment.fields.description enriched=enrichedEquipmentNotes value=system.equipment.description name="system.equipment.description" toggled=true}}
+14 -11
View File
@@ -7,31 +7,34 @@
<div class="item-reliability">{{ localize 'VERMINE.reliability'}}</div>
<div class="item-controls">
{{#if isEditMode}}
<a class="item-control item-create" data-action="create" title="Create item"
data-type="vehicle"><i class="fas fa-plus"></i></a>
<a class="item-control item-create" data-action="createVehicle" title="Create vehicle"><i class="fas fa-plus"></i></a>
{{/if}}
</div>
</li>
{{#each vehicles as |item id|}}
<li class="item flexrow flex-group-center" data-item-id="{{item._id}}">
{{#each vehicles as |vehicle|}}
<li class="item flexrow flex-group-center" data-vehicle-id="{{vehicle.id}}">
<div class="item-name" style="flex:4;">
<div class="item-image">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" data-roll-type="item"><img
src="{{item.img}}" title="{{item.name}}" width="24"
<a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}"><img
src="{{vehicle.img}}" title="{{vehicle.name}}" width="24"
height="24" /></a>
</div>
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="Edit Item">{{item.name}}</a>
<a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.name}}</a>
</div>
<div><a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="Edit Item">{{item.system.mobility}}</a></div>
<div><a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="Edit Item">{{item.system.rarity.value}}</a></div>
<div><a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="Edit Item">{{item.system.reliability}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.mobility}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.rarity.value}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.reliability}}</a></div>
<div class="item-controls">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="Delete Item"><i
<a class="item-control item-delete" data-action="deleteVehicle" data-vehicle-id="{{vehicle.id}}" title="Delete Vehicle"><i
class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{else}}
<li class="item flexrow flex-group-center">
<span class="empty">{{ localize 'VERMINE.no_vehicles' }}</span>
</li>
{{/each}}
</ol>
</div>
@@ -1,116 +0,0 @@
<div class="tab characteristics sheet-part {{#if @root.tabs.characteristics.active}}active{{/if}}" data-group="sheet" data-tab="characteristics">
<h3>{{ localize 'VERMINE.abilities' }}</h3>
{{!-- Caracteristiques physiques --}}
<div class="ability-section">
<h4 class="ability-category-header">{{ localize 'VERMINE.ability_category.physical' }}</h4>
<div class="grid grid-2col">
<div class="ability-item">
<label for="system.abilities.vigor.value" class="resource-label rollable" data-type="ability" data-label="vigor">{{ localize 'ABILITIES.vigor.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.vigor.value" value="{{system.abilities.vigor.value}}" min="{{system.abilities.vigor.min}}" max="{{system.abilities.vigor.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.vigor.value}}D</span>
</div>
</div>
<div class="ability-item">
<label for="system.abilities.health.value" class="resource-label rollable" data-type="ability" data-label="health">{{ localize 'ABILITIES.health.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.health.value" value="{{system.abilities.health.value}}" min="{{system.abilities.health.min}}" max="{{system.abilities.health.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.health.value}}D</span>
</div>
</div>
</div>
</div>
{{!-- Caracteristiques manuelles --}}
<div class="ability-section">
<h4 class="ability-category-header">{{ localize 'VERMINE.ability_category.manual' }}</h4>
<div class="grid grid-2col">
<div class="ability-item">
<label for="system.abilities.precision.value" class="resource-label rollable" data-type="ability" data-label="precision">{{ localize 'ABILITIES.precision.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.precision.value" value="{{system.abilities.precision.value}}" min="{{system.abilities.precision.min}}" max="{{system.abilities.precision.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.precision.value}}D</span>
</div>
</div>
<div class="ability-item">
<label for="system.abilities.reflexes.value" class="resource-label rollable" data-type="ability" data-label="reflexes">{{ localize 'ABILITIES.reflexes.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.reflexes.value" value="{{system.abilities.reflexes.value}}" min="{{system.abilities.reflexes.min}}" max="{{system.abilities.reflexes.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.reflexes.value}}D</span>
</div>
</div>
</div>
</div>
{{!-- Caracteristiques mentales --}}
<div class="ability-section">
<h4 class="ability-category-header">{{ localize 'VERMINE.ability_category.mental' }}</h4>
<div class="grid grid-2col">
<div class="ability-item">
<label for="system.abilities.knowledge.value" class="resource-label rollable" data-type="ability" data-label="knowledge">{{ localize 'ABILITIES.knowledge.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.knowledge.value" value="{{system.abilities.knowledge.value}}" min="{{system.abilities.knowledge.min}}" max="{{system.abilities.knowledge.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.knowledge.value}}D</span>
</div>
</div>
<div class="ability-item">
<label for="system.abilities.perception.value" class="resource-label rollable" data-type="ability" data-label="perception">{{ localize 'ABILITIES.perception.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.perception.value" value="{{system.abilities.perception.value}}" min="{{system.abilities.perception.min}}" max="{{system.abilities.perception.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.perception.value}}D</span>
</div>
</div>
</div>
</div>
{{!-- Caracteristiques sociales --}}
<div class="ability-section">
<h4 class="ability-category-header">{{ localize 'VERMINE.ability_category.social' }}</h4>
<div class="grid grid-2col">
<div class="ability-item">
<label for="system.abilities.will.value" class="resource-label rollable" data-type="ability" data-label="will">{{ localize 'ABILITIES.will.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.will.value" value="{{system.abilities.will.value}}" min="{{system.abilities.will.min}}" max="{{system.abilities.will.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.will.value}}D</span>
</div>
</div>
<div class="ability-item">
<label for="system.abilities.empathy.value" class="resource-label rollable" data-type="ability" data-label="empathy">{{ localize 'ABILITIES.empathy.name' }}</label>
<div class="ability-control">
{{#if isEditMode}}
<input type="range" name="system.abilities.empathy.value" value="{{system.abilities.empathy.value}}" min="{{system.abilities.empathy.min}}" max="{{system.abilities.empathy.max}}" data-dtype="Number"/>
{{/if}}
<span class="ability-value">{{system.abilities.empathy.value}}D</span>
</div>
</div>
</div>
</div>
{{!-- Reserves --}}
<div class="ability-section">
<h4 class="ability-category-header">{{ localize 'VERMINE.reserves' }}</h4>
<div class="grid grid-2col">
<div class="ability-item">
<span>{{ localize 'VERMINE.effort' }} : {{system.attributes.effort.value}}/{{system.attributes.effort.max}}D</span>
</div>
<div class="ability-item">
<span>{{ localize 'VERMINE.self_control' }} : {{system.attributes.self_control.value}}/{{system.attributes.self_control.max}}D</span>
</div>
</div>
</div>
</div>
+30 -43
View File
@@ -1,56 +1,43 @@
<div class="tab combat sheet-part {{#if @root.tabs.combat.active}}active{{/if}}" data-group="sheet" data-tab="combat">
<div class="grid grid-2col">
<div>
<h4 class="align-center">{{ localize "VERMINE.self_control"}}</h4>
<p class="align-center">
{{#if isEditMode}}
<input type="number" name="system.attributes.self_control.value"
value="{{ system.attributes.self_control.value }}" data-dtype="Number"
min="{{ system.attributes.self_control.min }}"
max="{{ system.attributes.self_control.max }}" />
{{/if}}
{{ system.attributes.self_control.value }} / {{
system.attributes.self_control.max }}
</p>
</div>
<div>
<h4 class="align-center">{{ localize "VERMINE.effort"}}</h4>
<p class="align-center">
{{#if isEditMode}}
<input type="number" name="system.attributes.effort.value"
value="{{ system.attributes.effort.value }}" data-dtype="Number"
min="{{ system.attributes.effort.min }}"
max="{{ system.attributes.effort.max }}" />
{{/if}}
{{ system.attributes.effort.value }} / {{
system.attributes.effort.max }}
</p>
</div>
</div>
{{> "systems/vermine2047/templates/actor/parts/actor-equipped-gear.hbs"}}
<h4 class="item-name effect-name flexrow">{{ localize
"VERMINE.wounds.name"}}</h4>
<h4 class="item-name effect-name flexrow">{{ localize "VERMINE.wounds.name"}}</h4>
<ul class="unstyled">
<li class="row mdb">{{ localize 'VERMINE.wounds.light'}} ({{
system.minorWound.threshold }})
{{#repeat system.minorWound.max }}
<input type="radio" data-dtype="Number" name="system.minorWound.value"
value="{{this}}" data-action="clickRadio" data-wound="minorWound"
{{#ife @root.system.minorWound.value this }}checked="checked"{{/ife}} />
{{/repeat}}</li>
<div class="flexrow align-center">
{{#repeat system.minorWound.max 1 "minorwoundmax"}}
<div class="hexa ability{{#iflteq @minorwoundmax @root.system.minorWound.value }} checked{{/iflteq}}">
<input type="radio" data-dtype="Number" name="system.minorWound.value"
value="{{@minorwoundmax}}" data-action="clickRadio" data-wound="minorWound"
class="{{#iflteq @minorwoundmax @root.system.minorWound.value }}checked{{/iflteq}}"
{{#ife @minorwoundmax @root.system.minorWound.value }}checked="checked"{{/ife}} />
</div>
{{/repeat}}
</div>
</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.heavy'}} ({{
system.majorWound.threshold }})
{{#repeat system.majorWound.max }}
<input type="radio" name="system.majorWound.value" value="{{this}}" data-action="clickRadio" data-wound="majorWound"
{{#ife @root.system.majorWound.value this }}checked="checked"{{/ife}} />
{{/repeat}}
<div class="flexrow align-center">
{{#repeat system.majorWound.max 1 "majorwoundmax"}}
<div class="hexa ability{{#iflteq @majorwoundmax @root.system.majorWound.value }} checked{{/iflteq}}">
<input type="radio" name="system.majorWound.value" value="{{@majorwoundmax}}" data-action="clickRadio" data-wound="majorWound"
class="{{#iflteq @majorwoundmax @root.system.majorWound.value }}checked{{/iflteq}}"
{{#ife @majorwoundmax @root.system.majorWound.value }}checked="checked"{{/ife}} />
</div>
{{/repeat}}
</div>
</li>
<li class="row mdb">{{ localize 'VERMINE.wounds.deadly'}} ({{
system.deadlyWound.threshold }})
{{#repeat system.deadlyWound.max }}
<input type="radio" name="system.deadlyWound.value" value="{{this}}" data-action="clickRadio" data-wound="deadlyWound"
{{#ife @root.system.deadlyWound.value this }}checked="checked"{{/ife}} />
{{/repeat}}
<div class="flexrow align-center">
{{#repeat system.deadlyWound.max 1 "deadlywoundmax"}}
<div class="hexa ability{{#iflteq @deadlywoundmax @root.system.deadlyWound.value }} checked{{/iflteq}}">
<input type="radio" name="system.deadlyWound.value" value="{{@deadlywoundmax}}" data-action="clickRadio" data-wound="deadlyWound"
class="{{#iflteq @deadlywoundmax @root.system.deadlyWound.value }}checked{{/iflteq}}"
{{#ife @deadlywoundmax @root.system.deadlyWound.value }}checked="checked"{{/ife}} />
</div>
{{/repeat}}
</div>
</li>
</ul>
<h4 class="item-name effect-name flexrow">{{ localize "UI.effects.name"}}</h4>
+29 -9
View File
@@ -20,7 +20,7 @@
{{/if}}
</h1>
{{!-- Niveaux de Menace, Experience, Role --}}
{{!-- Critères : Menace, Expérience, Rôle --}}
<div class="resources grid grid-3col">
<div class="resource flex-group-center">
<label for="system.threat.value" class="resource-label">{{ localize 'ADVERSITY.threat' }}</label>
@@ -29,12 +29,12 @@
<select name="system.threat.value" id="system.threat.value" data-dtype="Number">
{{#each npcThreatOptions}}
<option value="{{@key}}" {{#ife @key @root.system.threat.value}}selected{{/ife}}>
{{localize label}} ({{@key}})
{{localize label}}
</option>
{{/each}}
</select>
{{else}}
<span>{{system.threat.value}}</span>
<span>{{ system.threat.value }}</span>
{{/if}}
</div>
</div>
@@ -46,12 +46,12 @@
<select name="system.experience.value" id="system.experience.value" data-dtype="Number">
{{#each npcExperienceOptions}}
<option value="{{@key}}" {{#ife @key @root.system.experience.value}}selected{{/ife}}>
{{localize label}} ({{@key}})
{{localize label}}
</option>
{{/each}}
</select>
{{else}}
<span>{{system.experience.value}}</span>
<span>{{ system.experience.value }}</span>
{{/if}}
</div>
</div>
@@ -63,19 +63,39 @@
<select name="system.role.value" id="system.role.value" data-dtype="Number">
{{#each npcRoleOptions}}
<option value="{{@key}}" {{#ife @key @root.system.role.value}}selected{{/ife}}>
{{localize label}} ({{@key}})
{{localize label}}
</option>
{{/each}}
</select>
{{else}}
<span>{{system.role.value}}</span>
<span>{{ system.role.value }}</span>
{{/if}}
</div>
</div>
</div>
{{!-- Totem et Origine --}}
<div class="resources grid grid-2col">
{{!-- Profil : âge, activité, totem, origine --}}
<div class="resources grid grid-4col npc-profile-grid">
<div class="resource flex-group-center">
<label for="system.identity.age" class="resource-label">{{ localize 'IDENTITY.age' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<input type="text" name="system.identity.age" id="system.identity.age" value="{{system.identity.age}}" data-dtype="String"/>
{{else}}
<span>{{system.identity.age}}</span>
{{/if}}
</div>
</div>
<div class="resource flex-group-center">
<label for="system.identity.profile" class="resource-label">{{ localize 'IDENTITY.profile' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<input type="text" name="system.identity.profile" id="system.identity.profile" value="{{system.identity.profile}}" data-dtype="String" placeholder="{{ localize 'PROFILE' }}"/>
{{else}}
<span>{{system.identity.profile}}</span>
{{/if}}
</div>
</div>
<div class="resource flex-group-center">
<label for="system.identity.totem" class="resource-label">{{ localize 'TOTEM' }}</label>
<div class="resource-content">
-45
View File
@@ -1,45 +0,0 @@
<div class="tab skills sheet-part {{#if @root.tabs.skills.active}}active{{/if}}" data-group="sheet" data-tab="skills">
<h3>{{ localize 'VERMINE.skills' }}</h3>
{{!-- Category Selector --}}
<div class="skill-category-selector">
<label>{{ localize 'VERMINE.preferred_category' }}:</label>
{{#if isEditMode}}
<select name="system.skill_categories.preferred" data-dtype="String">
<option value="">{{ localize 'NONE' }}</option>
{{#each system.skill_categories as |category key|}}
{{#ife key "preferred"}}{{else}}
<option value="{{key}}" {{#ife key ../system.skill_categories.preferred}}selected{{/ife}}>
{{localize category.label}}
</option>
{{/ife}}
{{/each}}
</select>
{{else}}
<span>{{system.skill_categories.preferred}}</span>
{{/if}}
</div>
{{!-- Skills Grid by Category --}}
<div class="skills-container">
{{#each config.skillCategories as |category key|}}
{{#ife key "preferred"}}{{else}}
{{> "systems/vermine2047/templates/actor/parts/npc-skill-category.hbs"
categoryKey=key
categoryLabel=(concat "VERMINE.skill_category." key)
skills=@root.system.skills
}}
{{/ife}}
{{/each}}
</div>
{{!-- Free Skills text field --}}
<div class="form-group">
<label for="system.freeSkills">{{ localize 'ADVERSITY.skills' }}</label>
{{#if isEditMode}}
<input type="text" name="system.freeSkills" value="{{system.freeSkills}}" data-dtype="String" placeholder="{{ localize 'ADVERSITY.skills_placeholder' }}"/>
{{else}}
<span>{{system.freeSkills}}</span>
{{/if}}
</div>
</div>
-75
View File
@@ -1,75 +0,0 @@
<div class="tab threat sheet-part {{#if @root.tabs.threat.active}}active{{/if}}" data-group="sheet" data-tab="threat">
<h3>{{ localize 'ADVERSITY.threat_details' }}</h3>
<div class="grid grid-3col">
{{!-- Menace --}}
<div class="card npc-card">
<h4 class="align-center"><i class="fas fa-exclamation-triangle"></i> {{ localize 'ADVERSITY.threat' }}</h4>
<ul class="unstyled">
<li>
<strong>{{ localize 'ADVERSITY.attack' }}:</strong>
{{ npcThreatLevel "attack" system.threat.value }}
</li>
<li>
<strong>{{ localize 'ADVERSITY.vigor' }}:</strong>
{{ npcThreatLevel "vigor" system.threat.value }}
</li>
<li>
<strong>{{ localize 'ADVERSITY.wounds' }}:</strong>
{{ npcThreatLevel "minorWound" system.threat.value }} /
{{ npcThreatLevel "majorWound" system.threat.value }} /
{{ npcThreatLevel "deadlyWound" system.threat.value }}
</li>
</ul>
</div>
{{!-- Experience --}}
<div class="card npc-card">
<h4 class="align-center"><i class="fas fa-star"></i> {{ localize 'ADVERSITY.experience' }}</h4>
<ul class="unstyled">
<li>
<strong>{{ localize 'ADVERSITY.action' }}:</strong>
{{ npcExperienceLevel "action" system.experience.value }}D
</li>
<li>
<strong>{{ localize 'ADVERSITY.specialties' }}:</strong>
{{ npcExperienceLevel "specialties" system.experience.value }}
</li>
<li>
<strong>{{ localize 'ADVERSITY.rerolls' }}:</strong>
{{ npcExperienceLevel "rerolls" system.experience.value }}D
</li>
<li>
<strong>{{ localize 'ADVERSITY.contact' }}:</strong>
{{ npcExperienceLevel "contact" system.experience.value }}
</li>
</ul>
</div>
{{!-- Role --}}
<div class="card npc-card">
<h4 class="align-center"><i class="fas fa-users"></i> {{ localize 'ADVERSITY.role' }}</h4>
<ul class="unstyled">
<li>
<strong>{{ localize 'ADVERSITY.reaction' }}:</strong>
{{ npcRoleLevel "reaction" system.role.value }} + {{ npcRoleLevel "reaction_bonus" system.role.value }}
</li>
<li>
<strong>{{ localize 'ADVERSITY.pools' }}:</strong>
{{ npcRoleLevel "pools" system.role.value }}D
</li>
<li>
<strong>{{ localize 'ADVERSITY.gear' }}:</strong>
{{ npcRoleLevel "gear" system.role.value }}
</li>
<li>
<strong>{{ localize 'ADVERSITY.gear_hindrance' }}:</strong>
{{ npcRoleLevel "gear_hindrance" system.role.value }}
</li>
<li>
<strong>{{ localize 'ADVERSITY.protection' }}:</strong>
{{ npcRoleLevel "protection" system.role.value }}
</li>
</ul>
</div>
</div>
</div>
+86
View File
@@ -0,0 +1,86 @@
<div class="tab traits sheet-part {{#if @root.tabs.traits.active}}active{{/if}}" data-group="sheet" data-tab="traits">
<h3>{{ localize 'VERMINE.traits' }}</h3>
<div class="grid grid-3col">
{{!-- Menace --}}
<div class="card npc-card">
<h4 class="align-center"><i class="fas fa-exclamation-triangle"></i> {{ localize 'ADVERSITY.threat' }}</h4>
<ul class="unstyled npc-trait-list">
<li>
<strong>{{ localize 'ADVERSITY.attack' }}:</strong>
<span class="trait-value">{{ system.computed.attack }}D</span>
<a class="rollable npc-roll-btn" data-type="attack" title="{{ localize 'VERMINE.roll' }}"><i class="fas fa-dice-d10"></i></a>
</li>
<li>
<strong>{{ localize 'ADVERSITY.vigor' }}:</strong>
<span class="trait-value">{{ system.computed.vigor }}D</span>
</li>
<li class="npc-wounds">
<strong>{{ localize 'ADVERSITY.wounds' }}:</strong>
<span class="wound-cat"><span class="wound-boxes">{{#repeat system.minorWound.max}}<i class="fas fa-circle"></i>{{/repeat}}</span> {{ system.minorWound.threshold }}</span>
<span class="wound-cat"><span class="wound-boxes">{{#repeat system.majorWound.max}}<i class="fas fa-circle"></i>{{/repeat}}</span> {{ system.majorWound.threshold }}</span>
<span class="wound-cat"><span class="wound-boxes">{{#repeat system.deadlyWound.max}}<i class="fas fa-circle"></i>{{/repeat}}</span> {{ system.deadlyWound.threshold }}</span>
</li>
</ul>
</div>
{{!-- Expérience --}}
<div class="card npc-card">
<h4 class="align-center"><i class="fas fa-star"></i> {{ localize 'ADVERSITY.experience' }}</h4>
<ul class="unstyled npc-trait-list">
<li>
<strong>{{ localize 'ADVERSITY.action' }}:</strong>
<span class="trait-value">{{ system.computed.action }}D</span>
<a class="rollable npc-roll-btn" data-type="action" title="{{ localize 'VERMINE.roll' }}"><i class="fas fa-dice-d10"></i></a>
</li>
<li>
<strong>{{ localize 'ADVERSITY.specialties' }}:</strong>
<span class="trait-value">{{ system.computed.specialties }}D</span>
<a class="rollable npc-roll-btn" data-type="specialty" title="{{ localize 'VERMINE.roll' }}"><i class="fas fa-dice-d10"></i></a>
</li>
<li>
<strong>{{ localize 'ADVERSITY.rerolls' }}:</strong>
<span class="trait-value">{{ system.computed.rerolls }}D</span>
</li>
<li>
<strong>{{ localize 'ADVERSITY.contact' }}:</strong>
<span class="trait-value">{{ system.computed.contact }}</span>
</li>
</ul>
</div>
{{!-- Rôle --}}
<div class="card npc-card">
<h4 class="align-center"><i class="fas fa-users"></i> {{ localize 'ADVERSITY.role' }}</h4>
<ul class="unstyled npc-trait-list">
<li>
<strong>{{ localize 'ADVERSITY.reaction' }}:</strong>
<span class="trait-value">{{ system.computed.reaction }}D{{#if system.computed.reactionBonus}} +{{ system.computed.reactionBonus }}{{/if}}</span>
<a class="rollable npc-roll-btn" data-type="reaction" title="{{ localize 'VERMINE.roll' }}"><i class="fas fa-dice-d10"></i></a>
</li>
<li>
<strong>{{ localize 'ADVERSITY.pools' }}:</strong>
<span class="trait-value">{{ system.computed.pools }}D</span>
</li>
<li>
<strong>{{ localize 'ADVERSITY.gear' }}:</strong>
<span class="trait-value">{{ system.computed.gear }}{{#if system.computed.gearHindrance}} ({{ system.computed.gearHindrance }}){{/if}}</span>
</li>
<li>
<strong>{{ localize 'ADVERSITY.protection' }}:</strong>
<span class="trait-value">{{ system.computed.protection }}</span>
</li>
</ul>
</div>
</div>
{{!-- Spécialités (description libre) --}}
<div class="form-group npc-free-skills">
<label for="system.freeSkills">{{ localize 'ADVERSITY.skills' }}</label>
{{#if isEditMode}}
<input type="text" name="system.freeSkills" id="system.freeSkills" value="{{system.freeSkills}}" data-dtype="String" placeholder="{{ localize 'ADVERSITY.skills_placeholder' }}"/>
{{else}}
<span>{{system.freeSkills}}</span>
{{/if}}
</div>
</div>
+94
View File
@@ -0,0 +1,94 @@
<div class="tab main sheet-part" data-group="sheet" data-tab="main">
{{!-- Toggle Edit/Play --}}
<div class="sheet-header-toggle">
{{#if isEditMode}}
<button type="button" data-action="toggleSheet">{{localize "VERMINE.playMode"}}</button>
{{else}}
<button type="button" data-action="toggleSheet">{{localize "VERMINE.editMode"}}</button>
{{/if}}
</div>
{{!-- HEADER --}}
<header class="sheet-header">
<img class="profile-img" src="{{actor.img}}" data-action="editImage" data-edit="img" title="{{actor.name}}"
height="100" width="100" />
<div class="header-fields">
<div class="resources grid grid-4col">
<h1 class="charname grid-span-2">
{{#if isEditMode}}
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize 'VERMINE.vehicle' }}" />
{{else}}
<span>{{actor.name}}</span>
{{/if}}
</h1>
<div class="resource flex-group-center grid-span-1">
<label for="system.kind" class="resource-label">{{ localize 'VERMINE.kind' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<select name="system.kind" id="system.kind" data-dtype="String">
<option value="vehicle" {{#ife system.kind "vehicle"}}selected{{/ife}}>{{ localize "VERMINE.kind_vehicle" }}</option>
<option value="mount" {{#ife system.kind "mount"}}selected{{/ife}}>{{ localize "VERMINE.kind_mount" }}</option>
</select>
{{else}}
<span>{{#ife system.kind "mount"}}{{ localize "VERMINE.kind_mount" }}{{else}}{{ localize "VERMINE.kind_vehicle" }}{{/ife}}</span>
{{/if}}
</div>
</div>
<div class="resource flex-group-center grid-span-1">
<label for="system.reliability" class="resource-label">{{ localize 'VERMINE.reliability' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<input type="number" name="system.reliability" id="system.reliability" value="{{system.reliability}}"
data-dtype="Number" min="1" max="10" />
{{else}}
<span>{{system.reliability}}</span>
{{/if}}
</div>
</div>
</div>
<div class="resources grid grid-4col">
<div class="resource flex-group-center grid-span-1">
<label for="system.rarity.value" class="resource-label">{{ localize 'VERMINE.rarity' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<input type="number" name="system.rarity.value" id="system.rarity.value" value="{{system.rarity.value}}"
data-dtype="Number" min="1" max="10" />
{{else}}
<span>{{system.rarity.value}}</span>
{{/if}}
</div>
</div>
<div class="resource flex-group-center grid-span-1">
<label for="system.mobility" class="resource-label">{{ localize 'VERMINE.mobility' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<input type="number" name="system.mobility" id="system.mobility" value="{{system.mobility}}"
data-dtype="Number" min="0" />
{{else}}
<span>{{system.mobility}}</span>
{{/if}}
</div>
</div>
<div class="resource flex-group-center grid-span-2">
<label for="system.distance" class="resource-label">{{ localize 'VERMINE.distance' }}</label>
<div class="resource-content">
{{#if isEditMode}}
<input type="number" name="system.distance" id="system.distance" value="{{system.distance}}"
data-dtype="Number" min="0" />
{{else}}
<span>{{system.distance}}</span>
{{/if}}
<span> km</span>
</div>
</div>
</div>
</div>
</header>
{{#if resolvedOwner}}
<div class="vehicle-owner">
<span class="label">{{ localize 'VERMINE.owner' }}:</span>
<span class="value">{{ resolvedOwner.name }}</span>
</div>
{{/if}}
</div>
+83
View File
@@ -0,0 +1,83 @@
<div class="tab specs sheet-part {{#if @root.tabs.specs.active}}active{{/if}}" data-group="sheet" data-tab="specs">
<section class="vehicle-section">
<h3>{{ localize 'VERMINE.vehicle_specs' }}</h3>
<div class="grid grid-2col">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize 'VERMINE.distance' }}</label>
<div class="flexrow align-center">
<div class="hexa"><input type="number" name="system.distance" value="{{system.distance}}" data-dtype="Number" /></div>
<span class="unit">km</span>
</div>
</div>
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize 'VERMINE.speed' }}</label>
<div class="flexrow align-center">
<div class="hexa"><input type="number" name="system.speed.cruise" value="{{system.speed.cruise}}" data-dtype="Number" /></div>
<span>/</span>
<div class="hexa"><input type="number" name="system.speed.top" value="{{system.speed.top}}" data-dtype="Number" /></div>
</div>
<input type="text" name="system.speed.topDuration" value="{{system.speed.topDuration}}"
placeholder="{{ localize 'VERMINE.speed_duration_ph' }}" />
</div>
</div>
<div class="grid grid-2col">
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize 'VERMINE.effort_reserve' }}</label>
<div class="flexrow align-center">
<div class="hexa"><input type="number" name="system.effortReserve.value" value="{{system.effortReserve.value}}" data-dtype="Number" /></div>
<span>/</span>
<div class="hexa"><input type="number" name="system.effortReserve.max" value="{{system.effortReserve.max}}" data-dtype="Number" /></div>
</div>
</div>
<div class="resource align-center flexcol">
<label class="resource-label">{{ localize 'VERMINE.mobility' }}</label>
<div class="hexa"><input type="number" name="system.mobility" value="{{system.mobility}}" data-dtype="Number" /></div>
</div>
</div>
<div class="maintenance">
<label class="resource-label">{{ localize 'VERMINE.maintenance' }}</label>
<div class="flexrow flex-wrap">
{{#each maintenanceSkills}}
<label class="flexrow align-center">
<input type="checkbox" name="system.maintenance" value="{{ this.key }}" {{#if this.checked}}checked{{/if}} />
<span>{{ this.label }}</span>
</label>
{{/each}}
</div>
</div>
</section>
<section class="vehicle-section">
<h3>{{ localize 'IDENTITY.profile' }}</h3>
<div class="grid grid-2col">
<div class="form-group">
<label for="system.identity.profile">{{ localize 'IDENTITY.profile' }}</label>
{{#if isEditMode}}
<input type="text" name="system.identity.profile" value="{{system.identity.profile}}" data-dtype="String" />
{{else}}
<span>{{system.identity.profile}}</span>
{{/if}}
</div>
<div class="form-group">
<label for="system.identity.origin">{{ localize 'IDENTITY.origin' }}</label>
{{#if isEditMode}}
<input type="text" name="system.identity.origin" value="{{system.identity.origin}}" data-dtype="String" />
{{else}}
<span>{{system.identity.origin}}</span>
{{/if}}
</div>
<div class="form-group">
<label for="system.identity.theme">{{ localize 'IDENTITY.theme' }}</label>
{{#if isEditMode}}
<input type="text" name="system.identity.theme" value="{{system.identity.theme}}" data-dtype="String" />
{{else}}
<span>{{system.identity.theme}}</span>
{{/if}}
</div>
</div>
<div class="form-group">
<label for="system.identity.notes">{{ localize 'IDENTITY.notes' }}</label>
{{formInput systemFields.identity.fields.notes enriched=enrichedNotes value=system.identity.notes name="system.identity.notes" toggled=true}}
</div>
</section>
</div>
+19 -12
View File
@@ -5,27 +5,34 @@
<div class="item-rarity">{{ localize 'VERMINE.rarity'}}</div>
<div class="item-reliability">{{ localize 'VERMINE.reliability'}}</div>
<div class="item-controls">
<a class="item-control item-create" title="Create item"
data-type="vehicle" data-action="create"><i class="fas fa-plus"></i></a>
{{#if @root.isEditMode}}
<a class="item-control item-create" data-action="createVehicle" title="Create vehicle"><i class="fas fa-plus"></i></a>
{{/if}}
</div>
</li>
{{#each vehicles as |item id|}}
<li class="item flexrow flex-group-center" data-item-id="{{item._id}}">
{{#each vehicles as |vehicle|}}
<li class="item flexrow flex-group-center" data-vehicle-id="{{vehicle.id}}">
<div class="item-name" style="flex:4;">
<div class="item-image">
<a data-action="edit"><img
src="{{item.img}}" title="{{item.name}}" width="24"
<a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}"><img
src="{{vehicle.img}}" title="{{vehicle.name}}" width="24"
height="24" /></a>
</div>
<a data-action="edit" title="Edit Item">{{item.name}}</a>
<a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.name}}</a>
</div>
<div><a data-action="edit" title="Edit Item">{{item.system.mobility}}</a></div>
<div><a data-action="edit" title="Edit Item">{{item.system.rarity.value}}</a></div>
<div><a data-action="edit" title="Edit Item">{{item.system.reliability}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.mobility}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.rarity.value}}</a></div>
<div><a class="item-control item-edit" data-action="editVehicle" data-vehicle-id="{{vehicle.id}}" title="Edit Vehicle">{{vehicle.system.reliability}}</a></div>
<div class="item-controls">
<a data-action="delete" title="Delete Item"><i
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="deleteVehicle" data-vehicle-id="{{vehicle.id}}" title="Delete Vehicle"><i
class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{else}}
<li class="item flexrow flex-group-center">
<span class="empty">{{ localize 'VERMINE.no_vehicles' }}</span>
</li>
{{/each}}
</ol>
</ol>