From f2af54e254d941891ea08ae4879ca3952fe9c00b Mon Sep 17 00:00:00 2001 From: Somebody Date: Sun, 15 Sep 2024 18:53:30 +0800 Subject: [PATCH] Fix Challenge Boss Exception when no lightcone --- GameServer/Game/Challenge/ChallengeInstance.cs | 10 ++++++++-- GameServer/Game/Inventory/InventoryManager.cs | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/GameServer/Game/Challenge/ChallengeInstance.cs b/GameServer/Game/Challenge/ChallengeInstance.cs index 7a74a632..f7c8c280 100644 --- a/GameServer/Game/Challenge/ChallengeInstance.cs +++ b/GameServer/Game/Challenge/ChallengeInstance.cs @@ -182,7 +182,10 @@ public class ChallengeInstance var avatar = Player.AvatarManager?.GetAvatar(lineupAvatar.BaseAvatarId); if (avatar == null) continue; proto.BossInfo.FirstLineup.Add((uint)avatar.GetAvatarId()); - proto.BossInfo.ChallengeAvatarEquipmentMap.Add((uint)avatar.GetAvatarId(), Player.InventoryManager?.GetItem(0, avatar.GetCurPathInfo().EquipId, ItemMainTypeEnum.Equipment)?.ToChallengeEquipmentProto()); // it wont be null + var equip = Player.InventoryManager?.GetItem(0, avatar.GetCurPathInfo().EquipId, + ItemMainTypeEnum.Equipment); + if (equip != null) + proto.BossInfo.ChallengeAvatarEquipmentMap.Add((uint)avatar.GetAvatarId(), equip.ToChallengeEquipmentProto()); var relicProto = new ChallengeBossAvatarRelicInfo(); @@ -200,7 +203,10 @@ public class ChallengeInstance var avatar = Player.AvatarManager?.GetAvatar(lineupAvatar.BaseAvatarId); if (avatar == null) continue; proto.BossInfo.FirstLineup.Add((uint)avatar.GetAvatarId()); - proto.BossInfo.ChallengeAvatarEquipmentMap.Add((uint)avatar.GetAvatarId(), Player.InventoryManager?.GetItem(0, avatar.GetCurPathInfo().EquipId, ItemMainTypeEnum.Equipment)?.ToChallengeEquipmentProto()); // it wont be null + var equip = Player.InventoryManager?.GetItem(0, avatar.GetCurPathInfo().EquipId, + ItemMainTypeEnum.Equipment); + if (equip != null) + proto.BossInfo.ChallengeAvatarEquipmentMap.Add((uint)avatar.GetAvatarId(), equip.ToChallengeEquipmentProto()); var relicProto = new ChallengeBossAvatarRelicInfo(); diff --git a/GameServer/Game/Inventory/InventoryManager.cs b/GameServer/Game/Inventory/InventoryManager.cs index bc95806a..cb6a735f 100644 --- a/GameServer/Game/Inventory/InventoryManager.cs +++ b/GameServer/Game/Inventory/InventoryManager.cs @@ -347,7 +347,7 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player) case ItemMainTypeEnum.Relic: return uniqueId > 0 ? Data.RelicItems.Find(x => x.UniqueId == uniqueId) : Data.RelicItems.Find(x => x.ItemId == itemId); case ItemMainTypeEnum.Virtual: - switch (itemConfig.ID) + switch (itemConfig?.ID ?? 0) { case 1: return new ItemData