From fc22a1f8e157fbc45f673cc00e8aca9b817abe20 Mon Sep 17 00:00:00 2001 From: StopWuyu Date: Fri, 30 May 2025 23:19:00 +0800 Subject: [PATCH] fix: cant enter the trial activity when lineup has main character --- .../Activity/Activities/TrialActivityInstance.cs | 2 +- GameServer/Game/Lineup/LineupManager.cs | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/GameServer/Game/Activity/Activities/TrialActivityInstance.cs b/GameServer/Game/Activity/Activities/TrialActivityInstance.cs index b79d3241..8253e2e9 100644 --- a/GameServer/Game/Activity/Activities/TrialActivityInstance.cs +++ b/GameServer/Game/Activity/Activities/TrialActivityInstance.cs @@ -24,7 +24,7 @@ public class TrialActivityInstance : BaseActivityInstance if (excel != null) { Data.CurTrialStageId = stageId; - player.LineupManager.SetExtraLineup(ExtraLineupType.LineupStageTrial, excel.TrialAvatarList.ToList()); + player.LineupManager.SetExtraLineup(ExtraLineupType.LineupStageTrial, excel.TrialAvatarList.ToList(), true); await player.EnterScene(excel.MapEntranceID, 0, true); } diff --git a/GameServer/Game/Lineup/LineupManager.cs b/GameServer/Game/Lineup/LineupManager.cs index e855e5bd..dd36a03b 100644 --- a/GameServer/Game/Lineup/LineupManager.cs +++ b/GameServer/Game/Lineup/LineupManager.cs @@ -2,6 +2,7 @@ using EggLink.DanhengServer.Database; using EggLink.DanhengServer.Database.Avatar; using EggLink.DanhengServer.Database.Lineup; +using EggLink.DanhengServer.Enums.Avatar; using EggLink.DanhengServer.GameServer.Game.Player; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Lineup; using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene; @@ -135,7 +136,7 @@ public class LineupManager : BasePlayerManager return true; } - public void SetExtraLineup(ExtraLineupType type, List baseAvatarIds) + public void SetExtraLineup(ExtraLineupType type, List baseAvatarIds, bool refresh = false) { if (type == ExtraLineupType.LineupNone) { @@ -163,9 +164,17 @@ public class LineupManager : BasePlayerManager foreach (var avatarId in baseAvatarIds) { - var trial = Player.AvatarManager!.GetTrialAvatar(avatarId); + var trial = Player.AvatarManager!.GetTrialAvatar(avatarId, refresh); if (trial != null) { + if (GameData.MultiplePathAvatarConfigData.TryGetValue(trial.AvatarId, out var pathExcel) && pathExcel.Gender != GenderTypeEnum.GENDER_NONE) + { + if (pathExcel.Gender != (GenderTypeEnum)Player.Data.CurrentGender) + { + continue; + } + } + trial.CheckLevel(worldLevel); lineup.BaseAvatars!.Add(new LineupAvatarInfo { BaseAvatarId = trial.BaseAvatarId, SpecialAvatarId = trial.SpecialAvatarId });