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
+366 -10
View File
@@ -25,6 +25,10 @@
"value": 0,
"min": 0,
"max": 2
},
"combatStatus": {
"label": "",
"difficulty": 7
}
}
},
@@ -385,8 +389,330 @@
"templates": [
"base"
],
"age": 15,
"skills": "",
"identity": {
"name": "",
"profile": "",
"origin": "",
"totem": "",
"theme": "",
"notes": ""
},
"attributes": {
"xp": {
"value": 0,
"max": 10
},
"reputation": {
"value": 0,
"max": 10
},
"self_control": {
"value": 0,
"min": 0,
"max": 5
},
"effort": {
"value": 0,
"min": 0,
"max": 5
}
},
"abilities": {
"vigor": {
"value": 1,
"min": 0,
"max": 5,
"category": "physical"
},
"health": {
"value": 1,
"min": 0,
"max": 5,
"category": "physical"
},
"precision": {
"value": 1,
"min": 0,
"max": 5,
"category": "manual"
},
"reflexes": {
"value": 1,
"min": 0,
"max": 5,
"category": "manual"
},
"knowledge": {
"value": 1,
"min": 0,
"max": 5,
"category": "mental"
},
"perception": {
"value": 1,
"min": 0,
"max": 5,
"category": "mental"
},
"will": {
"value": 1,
"min": 0,
"max": 5,
"category": "social"
},
"empathy": {
"value": 1,
"min": 0,
"max": 5,
"category": "social"
}
},
"skill_categories": {
"preferred": "",
"man": {
"label": "VERMINE.skill_category.man",
"preferred": false
},
"animal": {
"label": "VERMINE.skill_category.animal",
"preferred": false
},
"tool": {
"label": "VERMINE.skill_category.tool",
"preferred": false
},
"weapon": {
"label": "VERMINE.skill_category.weapon",
"preferred": false
},
"survival": {
"label": "VERMINE.skill_category.survival",
"preferred": false
},
"world": {
"label": "VERMINE.skill_category.world",
"preferred": false
}
},
"skills": {
"arts": {
"value": 0,
"min": 0,
"max": 5,
"category": "man",
"rarity": 1
},
"civilization": {
"value": 0,
"min": 0,
"max": 5,
"category": "man",
"rarity": 2
},
"psychology": {
"value": 0,
"min": 0,
"max": 5,
"category": "man",
"rarity": 1
},
"rumors": {
"value": 0,
"min": 0,
"max": 5,
"category": "man",
"rarity": 0
},
"healing": {
"value": 0,
"min": 0,
"max": 5,
"category": "man",
"rarity": 1
},
"animalism": {
"value": 0,
"min": 0,
"max": 5,
"category": "animal",
"rarity": 1
},
"dissection": {
"value": 0,
"min": 0,
"max": 5,
"category": "animal",
"rarity": 2
},
"fauna": {
"value": 0,
"min": 0,
"max": 5,
"category": "animal",
"rarity": 1
},
"repulsion": {
"value": 0,
"min": 0,
"max": 5,
"category": "animal",
"rarity": 1
},
"tracks": {
"value": 0,
"min": 0,
"max": 5,
"category": "animal",
"rarity": 0
},
"crafting": {
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity": 2
},
"diy": {
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity": 0
},
"mecanical": {
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity": 2
},
"piloting": {
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity": 1
},
"technology": {
"value": 0,
"min": 0,
"max": 5,
"category": "tool",
"rarity": 2
},
"firearms": {
"value": 0,
"min": 0,
"max": 5,
"category": "weapon",
"rarity": 2
},
"archery": {
"value": 0,
"min": 0,
"max": 5,
"category": "weapon",
"rarity": 0
},
"armory": {
"value": 0,
"min": 0,
"max": 5,
"category": "weapon",
"rarity": 2
},
"throwing": {
"value": 0,
"min": 0,
"max": 5,
"category": "weapon",
"rarity": 0
},
"melee": {
"value": 0,
"min": 0,
"max": 5,
"category": "weapon",
"rarity": 0
},
"alertness": {
"value": 0,
"min": 0,
"max": 5,
"category": "survival",
"rarity": 0
},
"athletics": {
"value": 0,
"min": 0,
"max": 5,
"category": "survival",
"rarity": 0
},
"food": {
"value": 0,
"min": 0,
"max": 5,
"category": "survival",
"rarity": 0
},
"stealth": {
"value": 0,
"min": 0,
"max": 5,
"category": "survival",
"rarity": 0
},
"close": {
"value": 0,
"min": 0,
"max": 5,
"category": "survival",
"rarity": 0
},
"environment": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity": 1
},
"flora": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity": 1
},
"road": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity": 0
},
"toxics": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity": 2
},
"ruins": {
"value": 0,
"min": 0,
"max": 5,
"category": "world",
"rarity": 1
}
},
"combatStatus": {
"label": "",
"difficulty": 9
},
"equipment": {
"description": ""
},
"threat": {
"value": 1,
"min": 1,
@@ -401,7 +727,8 @@
"value": 1,
"min": 1,
"max": 4
}
},
"skills": ""
},
"group": {
"templates": [
@@ -414,17 +741,15 @@
"theme": "",
"instincts": "",
"prohibits": "",
"major_objectives": "",
"minor_objectives": "",
"notes": ""
},
"equipment": {
"description": ""
},
"level": {
"value": 0,
"min": 0,
"max": 3
"value": 1,
"min": 1,
"max": 10
},
"reputation": {
"value": 10,
@@ -434,9 +759,19 @@
"morale": {
"level": "high",
"value": 7,
"min": 1,
"min": 0,
"max": 7
},
"reserve": {
"value": 0,
"min": 0,
"max": 10
},
"objectives": {
"major": [],
"minor": []
},
"groupAbilities": [],
"members": [],
"encounters": []
},
@@ -444,6 +779,13 @@
"templates": [
"base"
],
"identity": {
"profile": "",
"origin": "",
"theme": "",
"notes": "",
"biography": ""
},
"skills": "",
"modes": {
"survival": true,
@@ -458,7 +800,7 @@
"size": {
"value": 1,
"min": 1,
"max": 4
"max": 3
},
"role": {
"value": 1,
@@ -469,6 +811,20 @@
"value": 0,
"min": 0,
"max": 3
},
"computed": {
"attack": 0,
"damage": 0,
"vigor": 0,
"reaction": 0,
"reactionBonus": 0,
"pools": 0,
"gear": 9,
"gearHindrance": 0,
"protection": 1
},
"equipment": {
"description": ""
}
}
},