fix: Correct critical bugs and complete Creature/Group DataModel implementation

- Fix TypeError: controls.find is not a function in hooks.mjs
- Fix undefined 'npc' variable in applications.mjs
- Fix CONFIG.VERMINE.model undefined by checking game.system.template existence
- Fix TypeError: html.find(...).forEach is not a function in roll.mjs
- Fix Cannot set properties of undefined (setting 'initial') in actor.mjs
- Fix Cannot read properties of undefined (reading 'difficulty') in actor.mjs
- Fix ActiveEffect application phase 'initial' already completed by adding combatStatus to base template
- Fix Missing helper: 'select' in roll-dialog.hbs (removed invalid Handlebars select block)
- Add SIZE_LEVELS labels to creatureSizeLevels config
- Add SIZE_LEVELS translations to fr.json
- Add combatStatus to base actor template
- Convert all .html templates to .hbs for Foundry v14 compatibility
- Update item-sheet.mjs to use .hbs extension
- Update handlebars-manager.mjs to use .hbs for all partials

Complete Vermine2047 Creature and Group sheet implementation:
- Creature: Pattern, Size, Role, Pack with computed values
- Group: Totem, Reserve, Morale, Objectives, Members management
- All templates functional with proper styling

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-06-04 20:58:22 +02:00
parent f9f07cbc7e
commit 30d6f71fc7
43 changed files with 19225 additions and 609 deletions
+45
View File
@@ -0,0 +1,45 @@
<h4 class="item-name effect-name flexrow">{{ localize "UI.effects.name" }}</h4>
<ol class="items-list effects-list">
{{#each effects as |section sid|}}
<li class="items-header flexrow" data-effect-type="{{section.type}}">
<p class="item-name effect-name flexrow">{{#if (eq section.type 'temporary')}}
{{localize "UI.effects.temporary" }}
{{else if (eq section.type 'passive')}}
{{localize "UI.effects.passive" }}
{{else if (eq section.type 'inactive')}}
{{localize "UI.effects.inactive" }}
{{/if}}
</p>
<div class="effect-source">{{localize 'UI.source'}}</div>
<div class="effect-source">{{localize 'UI.duration'}}</div>
<div class="item-controls effect-controls flexrow">
<a class="effect-control" data-action="create" title="{{localize 'UI.effect_create'}}">
<i class="fas fa-plus"></i> {{localize "UI.add"}}
</a>
</div>
</li>
<ol class="item-list">
{{#each section.effects as |effect|}}
<li class="item effect flexrow" data-effect-id="{{effect.id}}">
<div class="item-name effect-name">
<a class="effect-control flexrow flex-group-center items-center" data-action="edit" title="{{localize 'UI.effect_edit'}}">
<img class="item-image" src="{{effect.icon}}" />
<span>{{effect.label}}</span>
</a>
</div>
<div class="effect-source">{{effect.sourceName}}</div>
<div class="effect-duration">{{effect.duration.label}}</div>
<div class="item-controls effect-controls flexrow">
<a class="effect-control" data-action="toggle" title="{{localize 'UI.effect_toggle'}}">
<i class="fas {{#if effect.disabled}}fa-check{{else}}fa-times{{/if}}"></i>
</a>
<a class="effect-control" data-action="delete" title="{{localize 'UI.effect_delete'}}">
<i class="fas fa-trash"></i>
</a>
</div>
</li>
{{/each}}
</ol>
{{/each}}
</ol>
+21
View File
@@ -0,0 +1,21 @@
<div class="skill-item">
<label for="system.skills.{{key}}.value" title="{{ localize (concat 'SKILLS.' key) }} - {{ localize (concat 'VERMINE.rarity_' skill.rarity) }}">
{{ localize (concat 'SKILLS.' key) }}
{{#if skill.rarity}}
<span class="rarity-badge rarity-{{skill.rarity}}" title="{{ localize (concat 'VERMINE.rarity_' skill.rarity) }}">
{{skill.rarity}}
</span>
{{/if}}
</label>
<div class="skill-control">
<input
type="range"
name="system.skills.{{key}}.value"
value="{{skill.value}}"
min="{{skill.min}}"
max="{{skill.max}}"
data-dtype="Number"
/>
<span class="skill-value">{{skill.value}}D</span>
</div>
</div>