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!)
|
// 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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user