feat: capacités de créature, blessures séquentielles et refonte fiche Groupe

- Nouvel item Capacité de créature (creaturecapacity) : DataModel, fiche
  AppV2, chat card, types Base/Survie/Cauchemar/Apocalypse, liste sur
  l'onglet Informations de la créature avec drag&drop et post au chat.
- Blessures : coches séquentielles respectant la gravité (onClickWound),
  malus de blessure -1D/-2D/-3D appliqué aux jets (Règles p.42),
  montée en gravité automatique si les cercles sont pleins.
- Fiche Groupe : objectifs majeurs/mineurs éditables, liste de membres
  simplifiée, notes de voyage (roadNotes), totem qui remplit
  instinct/interdits, refonte visuelle des onglets.
- Créature : Réaction lançable, seuils/cercles de blessures corrigés
  (Taille cumulée, Groupe sans seuil), libellés Taille/Meute.
- Corrections : icône de carte de chat plafonnée à 64px, slash orphelin
  d'entrave à 0, notes de matériel du Groupe éditable (formInput),
  bonus de Réaction non double-compté.
- Divers : suppression des captures de débogage, licence README.
This commit is contained in:
2026-08-05 09:38:36 +02:00
parent cf905cdcfb
commit d0373fab5a
59 changed files with 984 additions and 1211 deletions
+110 -131
View File
@@ -1,13 +1,11 @@
<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 --}}
{{!-- Origine / Concept --}}
<div>
<h4>{{ localize 'IDENTITY.origin' }}</h4>
<div class="flexrow flex-group-center">
<div class="group-field">
{{#if isEditMode}}
<input type="text" name="system.identity.origin" value="{{system.identity.origin}}"
placeholder="Origine..." style="flex: 1;" />
<input type="text" name="system.identity.origin" value="{{system.identity.origin}}" placeholder="Origine..." />
{{else}}
<span>{{system.identity.origin}}</span>
{{/if}}
@@ -16,40 +14,122 @@
<div>
<h4>{{ localize 'IDENTITY.theme' }}</h4>
<div class="flexrow flex-group-center">
<div class="group-field">
{{#if isEditMode}}
<input type="text" name="system.identity.theme" value="{{system.identity.theme}}"
placeholder="Concept..." style="flex: 1;" />
<input type="text" name="system.identity.theme" value="{{system.identity.theme}}" placeholder="Concept..." />
{{else}}
<span>{{system.identity.theme}}</span>
{{/if}}
</div>
</div>
{{!-- Group Notes --}}
{{!-- Notes --}}
<div class="grid-span-2">
<fieldset>
<legend><h4>{{ localize 'IDENTITY.notes' }}</h4></legend>
{{formInput systemFields.identity.fields.notes enriched=enrichedNotes value=system.identity.notes name="system.identity.notes" toggled=true}}
</fieldset>
<h4>{{ localize 'IDENTITY.notes' }}</h4>
{{formInput systemFields.identity.fields.notes enriched=enrichedNotes value=system.identity.notes name="system.identity.notes" toggled=true}}
</div>
{{!-- Group Abilities (from items) --}}
{{!-- Objectifs --}}
<div class="grid-span-2">
<h4>
<span>{{ localize 'VERMINE.abilities' }}</span>
{{#if isEditMode}}
<a class="item-control item-create" data-action="create" data-type="ability" title="{{ localize 'ITEMS.new_ability' }}"><i class="fas fa-plus"></i></a>
<h4>{{ localize 'VERMINE.objectives' }}</h4>
<h5>{{ localize 'VERMINE.major_objectives' }}</h5>
<ol class="group-list">
{{#each system.objectives.major as |objective id|}}
<li class="item" data-index="{{id}}">
<div class="item-name">
{{#if @root.isEditMode}}
<input type="text" name="system.objectives.major.{{id}}" value="{{objective}}"
placeholder="{{ localize 'VERMINE.major_objective_placeholder' }}" />
{{else}}
<span>{{objective}}</span>
{{/if}}
</div>
<div class="item-controls">
{{#if @root.isEditMode}}
<a class="item-control objective-delete" data-action="deleteObjective" title="{{ localize 'UI.effect_delete' }}"
data-type="major" data-index="{{id}}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{/each}}
</ol>
{{#if isEditMode}}
<a class="item-control item-create" data-action="addObjective" title="{{ localize 'UI.add' }}"
data-type="major_objective"><i class="fas fa-plus"></i> {{ localize 'ITEMS.new_objective' }}</a>
{{/if}}
<h5>{{ localize 'VERMINE.minor_objectives' }}</h5>
<ol class="group-list">
{{#each system.objectives.minor as |objective id|}}
<li class="item" data-index="{{id}}">
<div class="item-name">
{{#if @root.isEditMode}}
<input type="text" name="system.objectives.minor.{{id}}" value="{{objective}}"
placeholder="{{ localize 'VERMINE.minor_objective_placeholder' }}" />
{{else}}
<span>{{objective}}</span>
{{/if}}
</div>
<div class="item-controls">
{{#if @root.isEditMode}}
<a class="item-control objective-delete" data-action="deleteObjective" title="{{ localize 'UI.effect_delete' }}"
data-type="minor" data-index="{{id}}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{/each}}
</ol>
{{#if isEditMode}}
<a class="item-control item-create" data-action="addObjective" title="{{ localize 'UI.add' }}"
data-type="minor_objective"><i class="fas fa-plus"></i> {{ localize 'ITEMS.new_objective' }}</a>
{{/if}}
</div>
{{!-- Totem --}}
<div class="grid-span-2">
<h4>{{ localize 'IDENTITY.totem' }}</h4>
<div class="group-field">
{{#if (eq system.identity.totem "")}}
<a data-action="chooseTotem" class="chooseTotem">{{ localize 'VERMINE.totem_picker' }}</a>
{{else}}
<div class="totem-display flexrow">
<span>{{ smarttl "TOTEMS" system.identity.totem }}</span>
<a data-action="chooseTotem" class="chooseTotem">{{ localize 'UI.effect_edit' }}</a>
</div>
{{/if}}
</h4>
<ol class="list-item">
</div>
<div class="group-field">
<label>{{ localize 'IDENTITY.instincts' }}:</label>
{{#if isEditMode}}
<input type="text" name="system.identity.instincts" value="{{system.identity.instincts}}"
placeholder="{{ localize 'VERMINE.instincts_placeholder' }}" />
{{else}}
<span>{{system.identity.instincts}}</span>
{{/if}}
</div>
<div class="group-field">
<label>{{ localize 'IDENTITY.prohibits' }}:</label>
{{#if isEditMode}}
<input type="text" name="system.identity.prohibits" value="{{system.identity.prohibits}}"
placeholder="{{ localize 'VERMINE.prohibits_placeholder' }}" />
{{else}}
<span>{{system.identity.prohibits}}</span>
{{/if}}
</div>
</div>
{{!-- Capacités de groupe --}}
<div class="grid-span-2">
<h4>{{ localize 'VERMINE.group_abilities' }}{{#if isEditMode}}<a class="item-control item-create" data-action="create" data-type="ability" title="{{ localize 'ITEMS.new_ability' }}"><i class="fas fa-plus"></i></a>{{/if}}</h4>
<ol class="group-list">
{{#each abilities as |item id|}}
{{#if (ne item.system.type 'totem')}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<li class="item" data-item-id="{{item._id}}">
<div class="item-name">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
<div class="item-controls">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_delete' }}"><i class="fas fa-trash"></i></a>
{{/if}}
@@ -60,119 +140,18 @@
</ol>
</div>
{{!-- Group Totem Abilities --}}
{{!-- Capacités de totem --}}
<div class="grid-span-2">
<h4>
<span>{{ localize 'VERMINE.totem_abilities' }}</span>
{{#if isEditMode}}
<a class="item-control item-create" data-action="createTotemAbility" title="{{ localize 'ITEMS.new_ability' }}"><i class="fas fa-plus"></i></a>
{{/if}}
</h4>
<ol class="list-item">
<h4>{{ localize 'VERMINE.totem_abilities' }}{{#if isEditMode}}<a class="item-control item-create" data-action="createTotemAbility" title="{{ localize 'ITEMS.new_ability' }}"><i class="fas fa-plus"></i></a>{{/if}}</h4>
<ol class="group-list">
{{#each totem_abilities as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<li class="item" data-item-id="{{item._id}}">
<div class="item-name">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
<span class="hexa" title="{{ localize 'VERMINE.level' }}">{{item.system.level.value}}</span>
<span title="{{ localize 'VERMINE.learning' }}">{{item.system.learn.threshold}}/{{item.system.learn.hindrance}}</span>
<span title="{{ localize 'VERMINE.learning' }}">{{item.system.learn.threshold}}{{#ifgt item.system.learn.hindrance 0}}/{{ roman item.system.learn.hindrance }}{{/ifgt}}</span>
</div>
<div class="item-controls flexrow">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_delete' }}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{/each}}
</ol>
</div>
{{!-- Specialties --}}
<div>
<h4>
<span>{{ localize 'ITEMS.specialties' }}</span>
{{#if isEditMode}}
<a class="item-control item-create" data-action="create" data-type="specialty" title="{{ localize 'ITEMS.new_specialty' }}"><i class="fas fa-plus"></i></a>
{{/if}}
</h4>
<ol class="list-item">
{{#each specialties as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_delete' }}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{/each}}
</ol>
</div>
{{!-- Backgrounds --}}
<div>
<h4>
<span>{{ localize 'ITEMS.backgrounds' }}</span>
{{#if isEditMode}}
<a class="item-control item-create" data-action="create" data-type="background" title="{{ localize 'ITEMS.new_background' }}"><i class="fas fa-plus"></i></a>
{{/if}}
</h4>
<ol class="list-item">
{{#each backgrounds as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_delete' }}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{/each}}
</ol>
</div>
{{!-- Traumas --}}
<div>
<h4>
<span>{{ localize 'ITEMS.traumas' }}</span>
{{#if isEditMode}}
<a class="item-control item-create" data-action="create" data-type="trauma" title="{{ localize 'ITEMS.new_trauma' }}"><i class="fas fa-plus"></i></a>
{{/if}}
</h4>
<ol class="list-item">
{{#each traumas as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_delete' }}"><i class="fas fa-trash"></i></a>
{{/if}}
</div>
</li>
{{/each}}
</ol>
</div>
{{!-- Evolutions --}}
<div>
<h4>
<span>{{ localize 'ITEMS.evolutions' }}</span>
{{#if isEditMode}}
<a class="item-control item-create" data-action="create" data-type="evolution" title="{{ localize 'ITEMS.new_evolution' }}"><i class="fas fa-plus"></i></a>
{{/if}}
</h4>
<ol class="list-item">
{{#each evolutions as |item id|}}
<li class="item flexrow" data-item-id="{{item._id}}">
<div class="item-name" style="flex:4;">
<a class="item-control item-edit" data-action="edit" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_edit' }}">{{item.name}}</a>
</div>
<div class="item-controls flexrow">
<div class="item-controls">
{{#if @root.isEditMode}}
<a class="item-control item-delete" data-action="delete" data-item-id="{{item._id}}" title="{{ localize 'UI.effect_delete' }}"><i class="fas fa-trash"></i></a>
{{/if}}