Verbessere die Behandlung von Charaktereigenschaften beim Versenden von Geschenken: Füge eine Überprüfung hinzu, um sicherzustellen, dass characterTraits ein Array ist, und behandle fehlende Traits als neutralen Wert.

This commit is contained in:
Torsten Schulz (local)
2026-02-14 16:48:23 +01:00
parent ea7f8d1acc
commit 42fe568e2b

View File

@@ -3258,12 +3258,14 @@ class FalukantService extends BaseService {
if (user.money < cost) {
throw new PreconditionError('insufficientFunds');
}
const traits = gift.characterTraits;
const traits = Array.isArray(gift.characterTraits) ? gift.characterTraits : [];
// Wenn keine passenden characterTraits gefunden wurden, behandeln wir das als neutralen Wert (0)
// statt einen Fehler zu werfen. Das erlaubt das Versenden, auch wenn keine Trait-Übereinstimmung vorliegt.
if (!traits.length) {
throw new Error('noTraits');
console.warn(`sendGift: no matching characterTraits for user id=${user.id} giftId=${giftId}`);
}
// Finde den höchsten Charakterwert (wie im Frontend)
const highestCharacterValue = Math.max(...traits.map(ct => ct.suitability));
// Finde den höchsten Charakterwert (wie im Frontend). Falls keine Traits vorhanden, 0.
const highestCharacterValue = traits.length ? Math.max(...traits.map(ct => ct.suitability)) : 0;
const moodRecord = gift.promotionalgiftmoods[0];
if (!moodRecord) {
throw new Error('noMoodData');