Fix system-specific item type validation errors using dynamic CONFIG.Item checks
This commit is contained in:
+65
-30
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user