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!) // Create embedded item documents (skills + weapons + breed traits!)
const itemsToCreate = [ const validItemTypes = CONFIG.Item?.documentClass?.TYPES ?? [];
...carrienSkills.map(s => makeSkillItemData(s)), const hasType = (t) => validItemTypes.includes(t);
...npcWeapons.map(w => makeWeaponItemData(w)),
]; 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) { if (archetypeKey === 'carrien' && breed?.trait) {
// Zero-Engine specialty // Zero-Engine specialty
itemsToCreate.push({ if (hasType('specialty')) {
name: breed.trait.name, itemsToCreate.push({
type: 'specialty', name: breed.trait.name,
img: 'icons/svg/star.svg', type: 'specialty',
system: { img: 'icons/svg/star.svg',
effects: breed.trait.effects, system: {
package: breed.trait.package, effects: breed.trait.effects,
category: 'general', package: breed.trait.package,
prerequisites: '', category: 'general',
healthMod: 0, prerequisites: '',
resolveMod: 0, healthMod: 0,
isActive: true resolveMod: 0,
} isActive: true
}); }
});
}
// S5S / Sla-Industries trait // S5S / Sla-Industries trait
itemsToCreate.push({ if (hasType('trait')) {
name: breed.trait.name, itemsToCreate.push({
type: 'trait', name: breed.trait.name,
img: 'icons/svg/statue.svg', type: 'trait',
system: { img: 'icons/svg/statue.svg',
description: breed.trait.effects, system: {
category: 'combat', description: breed.trait.effects,
source: 'Carrien Breed' 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) { if (itemsToCreate.length > 0) {
@@ -1197,8 +1229,11 @@ async function generateGangMembers(count, manager, folderId) {
const actor = await Actor.create(actorData); const actor = await Actor.create(actorData);
if (!actor) continue; if (!actor) continue;
// Embed the weapon item // Embed the weapon item if valid for this system
await actor.createEmbeddedDocuments('Item', [ makeWeaponItemData(weapon) ]); const validItemTypes = CONFIG.Item?.documentClass?.TYPES ?? [];
if (validItemTypes.includes('weapon')) {
await actor.createEmbeddedDocuments('Item', [ makeWeaponItemData(weapon) ]);
}
created.push(actor); created.push(actor);
} }