diff --git a/scripts/npc-generator.mjs b/scripts/npc-generator.mjs index 892fcf5..def7ed3 100644 --- a/scripts/npc-generator.mjs +++ b/scripts/npc-generator.mjs @@ -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); }