From bdd6aa21acb4f61e58224c41b925396b792d783d Mon Sep 17 00:00:00 2001 From: WatchAndyTW Date: Tue, 21 May 2024 23:02:09 +0800 Subject: [PATCH] Fix: Lineup loading bug and story buff --- Common/Data/Excel/ChallengeConfigExcel.cs | 6 ++++ Common/Data/Excel/ChallengeStoryExtraExcel.cs | 2 +- Common/Database/Challenge/ChallengeData.cs | 4 +-- .../Game/Challenge/ChallengeInstance.cs | 31 +++++-------------- GameServer/Game/Challenge/ChallengeManager.cs | 4 +-- GameServer/Game/Lineup/LineupManager.cs | 4 +++ 6 files changed, 22 insertions(+), 29 deletions(-) diff --git a/Common/Data/Excel/ChallengeConfigExcel.cs b/Common/Data/Excel/ChallengeConfigExcel.cs index 0edc7598..6e12af17 100644 --- a/Common/Data/Excel/ChallengeConfigExcel.cs +++ b/Common/Data/Excel/ChallengeConfigExcel.cs @@ -43,6 +43,12 @@ namespace EggLink.DanhengServer.Data.Excel return StoryExcel != null; } + public void SetStoryExcel(ChallengeStoryExtraExcel storyExcel) + { + StoryExcel = storyExcel; + ChallengeCountDown = storyExcel.TurnLimit; + } + public override void Loaded() { // Cache challenge monsters diff --git a/Common/Data/Excel/ChallengeStoryExtraExcel.cs b/Common/Data/Excel/ChallengeStoryExtraExcel.cs index 2770b676..71e5eaa3 100644 --- a/Common/Data/Excel/ChallengeStoryExtraExcel.cs +++ b/Common/Data/Excel/ChallengeStoryExtraExcel.cs @@ -19,7 +19,7 @@ if (GameData.ChallengeConfigData.ContainsKey(ID)) { var challengeExcel = GameData.ChallengeConfigData[ID]; - challengeExcel.StoryExcel = this; + challengeExcel.SetStoryExcel(this); } } } diff --git a/Common/Database/Challenge/ChallengeData.cs b/Common/Database/Challenge/ChallengeData.cs index 54d1b824..29c6dfab 100644 --- a/Common/Database/Challenge/ChallengeData.cs +++ b/Common/Database/Challenge/ChallengeData.cs @@ -76,7 +76,7 @@ namespace EggLink.DanhengServer.Database.Challenge public int Stars { get; set; } public int ScoreStage1 { get; set; } public int ScoreStage2 { get; set; } - public List? StoryBuffs { get; set; } - public List? BossBuffs { get; set; } + public List StoryBuffs { get; set; } = []; + public List BossBuffs { get; set; } = []; } } diff --git a/GameServer/Game/Challenge/ChallengeInstance.cs b/GameServer/Game/Challenge/ChallengeInstance.cs index a018b0ab..7a38a129 100644 --- a/GameServer/Game/Challenge/ChallengeInstance.cs +++ b/GameServer/Game/Challenge/ChallengeInstance.cs @@ -36,8 +36,8 @@ namespace EggLink.DanhengServer.Game.Challenge [JsonIgnore] ChallengeConfigExcel Excel { get; set; } - public List? StoryBuffs { get; set; } - public List? BossBuffs { get; set; } + public List StoryBuffs { get; set; } = []; + public List BossBuffs { get; set; } = []; public ChallengeInstance(PlayerInstance player, ChallengeConfigExcel excel) { @@ -120,27 +120,6 @@ namespace EggLink.DanhengServer.Game.Challenge #region Management - public void AddStoryBuff(int storyBuff) - { - // Add story buffs - if (StoryBuffs == null) - { - StoryBuffs = new List(); - } - - StoryBuffs.Add(storyBuff); - } - - public void AddBossBuff(int bossBuff) - { - if (BossBuffs == null) - { - BossBuffs = new List(); - } - - BossBuffs.Add(bossBuff); - } - public void OnBattleStart(BattleInstance battle) { battle.RoundLimit = RoundsLeft; @@ -200,7 +179,11 @@ namespace EggLink.DanhengServer.Game.Challenge ExtraLineupType = (ExtraLineupType)CurrentExtraLineup }; - // TODO: story buffs + if (StoryBuffs != null && StoryBuffs.Count >= (CurrentStage - 1)) + { + proto.PlayerInfo = new ChallengeStoryInfo() { CurStoryBuff = new ChallengeStoryBuffInfo() { } }; + proto.PlayerInfo.CurStoryBuff.BuffList.Add((uint)StoryBuffs[CurrentStage - 1]); + } return proto; } diff --git a/GameServer/Game/Challenge/ChallengeManager.cs b/GameServer/Game/Challenge/ChallengeManager.cs index b509b49a..c10fa7b3 100644 --- a/GameServer/Game/Challenge/ChallengeManager.cs +++ b/GameServer/Game/Challenge/ChallengeManager.cs @@ -101,8 +101,8 @@ namespace EggLink.DanhengServer.Game.Challenge if (Excel.IsStory() && storyBuffs != null) { - instance.AddStoryBuff((int)storyBuffs.AKEOMNPOJCE); - instance.AddStoryBuff((int)storyBuffs.GPPEGLNNGNJ); + instance.StoryBuffs.Add((int)storyBuffs.GPPEGLNNGNJ); // StoryBuffOne + instance.StoryBuffs.Add((int)storyBuffs.AKEOMNPOJCE); // StoryBuffTwo } // Early implementation for 2.3 diff --git a/GameServer/Game/Lineup/LineupManager.cs b/GameServer/Game/Lineup/LineupManager.cs index cdebe440..6bcb9de3 100644 --- a/GameServer/Game/Lineup/LineupManager.cs +++ b/GameServer/Game/Lineup/LineupManager.cs @@ -296,6 +296,10 @@ namespace EggLink.DanhengServer.Game.Lineup if (req.ExtraLineupType != Proto.ExtraLineupType.LineupNone) { LineupData.CurExtraLineup = (int)req.ExtraLineupType + 10; + if (!LineupData.Lineups.ContainsKey(LineupData.CurExtraLineup)) + { + SetExtraLineup(req.ExtraLineupType, []); + } } LineupInfo lineup;