Fix: Activation des spécialités dans les fiches PNJ Traveller
- Correction de setSkillLevel pour créer les spécialités manquantes automatiquement - Mapping corrigé: Pilot-Spacecraft -> pilot.vaisseaux_spatiaux (pluriel) - Résout le problème où les spécialités comme 'Vaisseaux spatiaux' n'étaient pas activées Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
+26
-5
@@ -112,13 +112,34 @@ export function setSkillLevel(skills, skillFqn, level) {
|
||||
if (!skillId || !skills?.[skillId]) return skills;
|
||||
|
||||
const numericLevel = Number(level ?? 0);
|
||||
const skill = foundry.utils.mergeObject(skills[skillId], { trained: numericLevel > 0 || skills[skillId].trained });
|
||||
let skill = foundry.utils.deepClone(skills[skillId]);
|
||||
|
||||
if (specialityId && skill.specialities?.[specialityId]) {
|
||||
skill.specialities[specialityId] = foundry.utils.mergeObject(skill.specialities[specialityId], {
|
||||
value: Math.max(Number(skill.specialities[specialityId].value ?? 0), numericLevel),
|
||||
});
|
||||
// Marquer la compétence comme entraînée si niveau > 0
|
||||
skill.trained = numericLevel > 0 || skill.trained;
|
||||
|
||||
if (specialityId) {
|
||||
// Créer l'objet specialities s'il n'existe pas
|
||||
if (!skill.specialities) {
|
||||
skill.specialities = {};
|
||||
}
|
||||
// Créer la spécialité si elle n'existe pas
|
||||
if (!skill.specialities[specialityId]) {
|
||||
skill.specialities[specialityId] = {
|
||||
value: 0,
|
||||
trained: false,
|
||||
default: skill.default || null
|
||||
};
|
||||
}
|
||||
// Appliquer le niveau à la spécialité
|
||||
skill.specialities[specialityId] = foundry.utils.mergeObject(
|
||||
skill.specialities[specialityId],
|
||||
{
|
||||
value: Math.max(Number(skill.specialities[specialityId].value ?? 0), numericLevel),
|
||||
trained: true
|
||||
}
|
||||
);
|
||||
} else {
|
||||
// Compétence sans spécialité
|
||||
skill.value = Math.max(Number(skill.value ?? 0), numericLevel);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user