feat: équipement, échanges de coups et améliorations des fiches

- équipement des armes et protections (champ equipped, liste des équipés, toggle)
- échanges de coups automatisés (attaque/défense/résolution/blessures dans le chat)
- dialogue d'attaque par type (personnage/PNJ/créature), portées et difficultés
- conservation du scroll des fiches lors des modifs (option scrollable + classe active)
- verrouillage des compétences PNJ en mode jeu
- corrections review combat (défenseur, difficulté >10, multi-cibles, permissions)
This commit is contained in:
2026-08-04 14:14:03 +02:00
parent 31f2f4530c
commit f2c8cfe246
45 changed files with 2105 additions and 78 deletions
@@ -1,4 +1,4 @@
<div class="tab abilities sheet-part" data-group="sheet" data-tab="abilities">
<div class="tab abilities sheet-part {{#if @root.tabs.abilities.active}}active{{/if}}" data-group="sheet" data-tab="abilities">
{{!-- Character --}}
<h3>{{ localize 'VERMINE.abilities' }}</h3>
<div class="grid grid-4col">
+2 -11
View File
@@ -1,4 +1,4 @@
<div class="tab combat sheet-part" data-group="sheet" data-tab="combat">
<div class="tab combat sheet-part {{#if @root.tabs.combat.active}}active{{/if}}" data-group="sheet" data-tab="combat">
<div class="align-center">
<div class="shadow">
<h4>situation de combat par défaut</h4>
@@ -20,6 +20,7 @@
</div>
</div>
</div>
{{> "systems/vermine2047/templates/actor/parts/actor-equipped-gear.hbs"}}
<div class="flexrow">
<div class="self-control-container flexcol align-center">
<h4 class="align-center">
@@ -42,7 +43,6 @@
unavailable
{{/ifgt}}">
{{#iflteq @row @root.system.attributes.self_control.max }}
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -56,7 +56,6 @@
"
/>
{{/if}}
{{/iflteq}}
</div>
@@ -88,7 +87,6 @@
unavailable
{{/ifgt}}">
{{#iflteq @row @root.system.attributes.effort.max }}
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -102,7 +100,6 @@
"
/>
{{/if}}
{{/iflteq}}
</div>
@@ -124,7 +121,6 @@
<div class="hexa ability{{#iflteq @minorwoundmax @root.system.minorWound.value }}
checked
{{/iflteq}}">
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -141,7 +137,6 @@
checked="true"
{{/ife}}
/>
{{/if}}
</div>
{{/repeat}}
</div>
@@ -155,7 +150,6 @@
<div class="hexa ability{{#iflteq @majourwoundmax @root.system.majorWound.value }}
checked
{{/iflteq}}">
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -173,7 +167,6 @@
checked="true"
{{/ife}}
/>
{{/if}}
</div>
{{/repeat}}
@@ -189,7 +182,6 @@
<div class="hexa ability{{#iflteq @deadlywoundmax @root.system.deadlyWound.value }}
checked
{{/iflteq}}">
{{#if @root.isEditMode}}
<input
type="radio"
data-dtype="Number"
@@ -206,7 +198,6 @@
checked="true"
{{/ife}}
/>
{{/if}}
</div>
{{/repeat}}
@@ -1,4 +1,4 @@
<div class="tab equipment sheet-part" data-group="sheet" data-tab="equipment">
<div class="tab equipment sheet-part {{#if @root.tabs.equipment.active}}active{{/if}}" data-group="sheet" data-tab="equipment">
<div class="weapons">
<h4>{{localize 'ITEMS.weapons'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-weapons.hbs"}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab stories sheet-part" data-group="sheet" data-tab="stories">
<div class="tab stories sheet-part {{#if @root.tabs.stories.active}}active{{/if}}" data-group="sheet" data-tab="stories">
<section class="flexrow flex-group-left flex-align-left gap-md">
<div>
<h4>{{ localize 'IDENTITY.theme'}}</h4>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab totem sheet-part" data-group="sheet" data-tab="totem">
<div class="tab totem sheet-part {{#if @root.tabs.totem.active}}active{{/if}}" data-group="sheet" data-tab="totem">
{{#if system.identity.totem}}
<div class="totem-details">
<img
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab combat sheet-part" data-group="sheet" data-tab="combat">
<div class="tab combat sheet-part {{#if @root.tabs.combat.active}}active{{/if}}" data-group="sheet" data-tab="combat">
<div class="grid grid-2col">
{{!-- Computed Values --}}
<div>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab effects sheet-part" data-group="sheet" data-tab="effects">
<div class="tab effects sheet-part {{#if @root.tabs.effects.active}}active{{/if}}" data-group="sheet" data-tab="effects">
<h4 class="item-name effect-name flexrow">{{ localize "UI.effects.name" }}</h4>
<ol class="items-list effects-list">
{{#each effects as |section sid|}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab info sheet-part" data-group="sheet" data-tab="info">
<div class="tab info sheet-part {{#if @root.tabs.info.active}}active{{/if}}" data-group="sheet" data-tab="info">
<div class="grid grid-2col">
<div>
<h4>{{ localize 'IDENTITY.profile' }}</h4>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab stats sheet-part" data-group="sheet" data-tab="stats">
<div class="tab stats sheet-part {{#if @root.tabs.stats.active}}active{{/if}}" data-group="sheet" data-tab="stats">
<h3>{{ localize 'VERMINE.base_values' }}</h3>
{{!-- Total attaque (lancable) --}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab gear sheet-part" data-group="sheet" data-tab="gear">
<div class="tab gear sheet-part {{#if @root.tabs.gear.active}}active{{/if}}" data-group="sheet" data-tab="gear">
<div class="grid grid-2col">
<div>
<ol class="items-list">
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab info sheet-part" data-group="sheet" data-tab="info">
<div class="tab info sheet-part {{#if @root.tabs.info.active}}active{{/if}}" data-group="sheet" data-tab="info">
<div class="grid grid-2col">
{{!-- Group Identity --}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab reserve sheet-part" data-group="sheet" data-tab="reserve">
<div class="tab reserve sheet-part {{#if @root.tabs.reserve.active}}active{{/if}}" data-group="sheet" data-tab="reserve">
<div class="grid grid-2col">
{{!-- Group Reserve and Morale --}}
<div class="grid-span-2">
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab road sheet-part" data-group="sheet" data-tab="road">
<div class="tab road sheet-part {{#if @root.tabs.road.active}}active{{/if}}" data-group="sheet" data-tab="road">
<ol class="items-list">
<li class="item flexrow items-header">
<div class="item-name" style="flex:4;">{{ localize 'IDENTITY.name'}}</div>
@@ -1,4 +1,4 @@
<div class="tab characteristics sheet-part" data-group="sheet" data-tab="characteristics">
<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 --}}
+2 -1
View File
@@ -1,4 +1,4 @@
<div class="tab combat sheet-part" data-group="sheet" data-tab="combat">
<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>
@@ -27,6 +27,7 @@
</p>
</div>
</div>
{{> "systems/vermine2047/templates/actor/parts/actor-equipped-gear.hbs"}}
<h4 class="item-name effect-name flexrow">{{ localize
"VERMINE.wounds.name"}}</h4>
<ul class="unstyled">
+10
View File
@@ -0,0 +1,10 @@
<div class="tab equipment sheet-part {{#if @root.tabs.equipment.active}}active{{/if}}" data-group="sheet" data-tab="equipment">
<div class="weapons">
<h4>{{localize 'ITEMS.weapons'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-weapons.hbs"}}
</div>
<div class="protections">
<h4>{{localize 'ITEMS.defenses'}}</h4>
{{> "systems/vermine2047/templates/actor/parts/actor-defenses.hbs"}}
</div>
</div>
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab notes sheet-part" data-group="sheet" data-tab="notes">
<div class="tab notes sheet-part {{#if @root.tabs.notes.active}}active{{/if}}" data-group="sheet" data-tab="notes">
<h3>{{ localize 'IDENTITY.notes' }}</h3>
<div class="grid grid-1col">
<div class="form-group">
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab skills sheet-part" data-group="sheet" data-tab="skills">
<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 --}}
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="tab threat sheet-part" data-group="sheet" data-tab="threat">
<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 --}}