diff --git a/GameServer/Game/Challenge/Instances/ChallengePeakInstance.cs b/GameServer/Game/Challenge/Instances/ChallengePeakInstance.cs index 375a1a64..57143314 100644 --- a/GameServer/Game/Challenge/Instances/ChallengePeakInstance.cs +++ b/GameServer/Game/Challenge/Instances/ChallengePeakInstance.cs @@ -127,7 +127,7 @@ public class ChallengePeakInstance(PlayerInstance player, ChallengeDataPb data) if (target == null) continue; if (target.Progress <= target.TotalProgress) - stars++; + stars += 1u << targets.IndexOf(targetId); } return Math.Min(stars, 7); diff --git a/GameServer/Game/ChallengePeak/ChallengePeakManager.cs b/GameServer/Game/ChallengePeak/ChallengePeakManager.cs index 53ff182d..7f93258c 100644 --- a/GameServer/Game/ChallengePeak/ChallengePeakManager.cs +++ b/GameServer/Game/ChallengePeak/ChallengePeakManager.cs @@ -96,18 +96,27 @@ public class ChallengePeakManager(PlayerInstance player) : BasePlayerManager(pla var datas = Player.ChallengeManager!.ChallengeData.PeakLevelDatas; foreach (var lineup in lineups) { + List avatarIds = []; + + foreach (var avatarId in lineup.PeakLevelLineup.ToList()) + { + var avatar = Player.AvatarManager!.GetFormalAvatar((int)avatarId); + if (avatar != null) + avatarIds.Add((uint)avatar.BaseAvatarId); + } + if (!datas.TryGetValue((int)lineup.PeakLevelId, out var data)) { datas[(int)lineup.PeakLevelId] = new ChallengePeakLevelData { LevelId = (int)lineup.PeakLevelId, - BaseAvatarList = lineup.PeakLevelLineup.ToList() + BaseAvatarList = avatarIds }; } else { - data.BaseAvatarList = lineup.PeakLevelLineup.ToList(); + data.BaseAvatarList = avatarIds; } }