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
+53
View File
@@ -12,6 +12,53 @@
<h3>{{param.actor.name}} : {{localize "VERMINE.test_of"}} {{param.rollLabel}}</h3>
{{#if param.weapon}}
<div class="weapon-block">
<div class="weapon-block-header flexrow">
<span class="weapon-icon"><i class="fas fa-crosshairs"></i></span>
<span class="weapon-name">{{param.weapon.name}}</span>
{{#if param.targets.length}}
<span class="weapon-targets"><i class="fas fa-bullseye"></i> {{param.targets}}</span>
{{/if}}
</div>
<div class="flexrow flex-wrap weapon-details">
<span class="weapon-detail">
<strong>{{localize "VERMINE.damages"}}:</strong>
{{#if param.weapon.system.damage.addVigor}}{{localize "VERMINE.vigor"}}+ {{/if}}
{{param.weapon.system.damage.value}} ({{param.weapon.system.damage.type}})
</span>
<span class="weapon-detail">
<strong>{{localize "VERMINE.ranges"}}:</strong>
{{param.weapon.system.min_range}} / {{param.weapon.system.max_range}}
</span>
<span class="weapon-detail">
<strong>{{localize "VERMINE.ammo"}}:</strong>
{{param.weapon.system.ammo}}
</span>
</div>
</div>
{{/if}}
{{#if param.attack}}
<div class="exchange-actions" data-exchange-id="{{param.attack.id}}">
<div class="exchange-header"><i class="fas fa-exchange-alt"></i> {{localize "VERMINE.exchange"}}</div>
{{#each param.attack.targets}}
<div class="exchange-target">
<span class="exchange-target-name"><i class="fas fa-bullseye"></i> {{this.name}}</span>
{{#if this.canDefend}}
<button type="button" class="exchange-defend" data-type="esquive" data-target-id="{{this.id}}" data-target-uuid="{{this.uuid}}" title="{{localize 'VERMINE.defense_esquive'}}"><i class="fas fa-running"></i> {{localize "VERMINE.defense_esquive"}}</button>
{{#ife @root.param.attack.mode "contact"}}
<button type="button" class="exchange-defend" data-type="parade" data-target-id="{{this.id}}" data-target-uuid="{{this.uuid}}" title="{{localize 'VERMINE.defense_parade'}}"><i class="fas fa-shield-alt"></i> {{localize "VERMINE.defense_parade"}}</button>
{{/ife}}
{{else}}
<span class="exchange-passive"><i class="fas fa-shield-virus"></i> {{localize "VERMINE.passive_defense"}}</span>
{{/if}}
</div>
{{/each}}
<button type="button" class="exchange-resolve" data-exchange-id="{{param.attack.id}}"><i class="fas fa-balance-scale"></i> {{localize "VERMINE.resolve"}}</button>
</div>
{{/if}}
{{!-- Context --}}
<div class="roll-context flexrow flex-wrap">
<div class="context-item">
@@ -83,6 +130,12 @@
{{#if param.poolBreakdown.group}}
<span class="pool-item">{{localize "VERMINE.pool_group"}} +{{param.poolBreakdown.group}}D</span>
{{/if}}
{{#if param.poolBreakdown.pools}}
<span class="pool-item">{{localize "VERMINE.pool_pools"}} +{{param.poolBreakdown.pools}}D</span>
{{/if}}
{{#if param.poolBreakdown.experience}}
<span class="pool-item">{{localize "VERMINE.pool_experience"}} +{{param.poolBreakdown.experience}}D</span>
{{/if}}
{{#if param.poolBreakdown.selfControl}}
<span class="pool-item">{{localize "VERMINE.pool_selfControl"}} +{{param.poolBreakdown.selfControl}}D</span>
{{/if}}