Fix system-specific item type validation errors using dynamic CONFIG.Item checks

This commit is contained in:
2026-05-25 21:26:31 +01:00
parent 5a345534c7
commit 25222fdc3a
+65 -30
View File
@@ -1061,38 +1061,70 @@ async function generateNpc(archetypeKey, speciesChoice, manager, folderId) {
}
// Create embedded item documents (skills + weapons + breed traits!)
const itemsToCreate = [
...carrienSkills.map(s => makeSkillItemData(s)),
...npcWeapons.map(w => makeWeaponItemData(w)),
];
const validItemTypes = CONFIG.Item?.documentClass?.TYPES ?? [];
const hasType = (t) => validItemTypes.includes(t);
const itemsToCreate = [];
if (hasType('skill')) {
itemsToCreate.push(...carrienSkills.map(s => makeSkillItemData(s)));
}
if (hasType('weapon')) {
itemsToCreate.push(...npcWeapons.map(w => makeWeaponItemData(w)));
}
if (archetypeKey === 'carrien' && breed?.trait) {
// Zero-Engine specialty
itemsToCreate.push({
name: breed.trait.name,
type: 'specialty',
img: 'icons/svg/star.svg',
system: {
effects: breed.trait.effects,
package: breed.trait.package,
category: 'general',
prerequisites: '',
healthMod: 0,
resolveMod: 0,
isActive: true
}
});
if (hasType('specialty')) {
itemsToCreate.push({
name: breed.trait.name,
type: 'specialty',
img: 'icons/svg/star.svg',
system: {
effects: breed.trait.effects,
package: breed.trait.package,
category: 'general',
prerequisites: '',
healthMod: 0,
resolveMod: 0,
isActive: true
}
});
}
// S5S / Sla-Industries trait
itemsToCreate.push({
name: breed.trait.name,
type: 'trait',
img: 'icons/svg/statue.svg',
system: {
description: breed.trait.effects,
category: 'combat',
source: 'Carrien Breed'
}
});
if (hasType('trait')) {
itemsToCreate.push({
name: breed.trait.name,
type: 'trait',
img: 'icons/svg/statue.svg',
system: {
description: breed.trait.effects,
category: 'combat',
source: 'Carrien Breed'
}
});
}
// SLA-Mothership ability
if (hasType('ability')) {
itemsToCreate.push({
name: breed.trait.name,
type: 'ability',
img: 'icons/svg/bolt.svg',
system: {
text: breed.trait.effects,
roll: '',
sla: {
abilityType: 'special',
discipline: '',
fluxCost: 0,
tier: 'basic',
attack: false,
notes: [breed.trait.effects]
}
}
});
}
}
if (itemsToCreate.length > 0) {
@@ -1197,8 +1229,11 @@ async function generateGangMembers(count, manager, folderId) {
const actor = await Actor.create(actorData);
if (!actor) continue;
// Embed the weapon item
await actor.createEmbeddedDocuments('Item', [ makeWeaponItemData(weapon) ]);
// Embed the weapon item if valid for this system
const validItemTypes = CONFIG.Item?.documentClass?.TYPES ?? [];
if (validItemTypes.includes('weapon')) {
await actor.createEmbeddedDocuments('Item', [ makeWeaponItemData(weapon) ]);
}
created.push(actor);
}