From f437bea9ee2f67cc0aafce534859ec7e72356641 Mon Sep 17 00:00:00 2001 From: Somebody Date: Sun, 7 Dec 2025 12:30:47 +0800 Subject: [PATCH] feat: add `EnableQuest` config --- Common/Configuration/ConfigContainer.cs | 1 + GameServer/Game/Quest/QuestManager.cs | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/Common/Configuration/ConfigContainer.cs b/Common/Configuration/ConfigContainer.cs index 466cf3b9..9912abbb 100644 --- a/Common/Configuration/ConfigContainer.cs +++ b/Common/Configuration/ConfigContainer.cs @@ -77,6 +77,7 @@ public class ServerOption public int StartTrailblazerLevel { get; set; } = 1; public bool AutoUpgradeWorldLevel { get; set; } = true; public bool EnableMission { get; set; } = true; // experimental + public bool EnableQuest { get; set; } = true; // experimental public bool AutoLightSection { get; set; } = true; public string Language { get; set; } = "EN"; public string FallbackLanguage { get; set; } = "EN"; diff --git a/GameServer/Game/Quest/QuestManager.cs b/GameServer/Game/Quest/QuestManager.cs index fc0cb6c2..22a5ce05 100644 --- a/GameServer/Game/Quest/QuestManager.cs +++ b/GameServer/Game/Quest/QuestManager.cs @@ -40,6 +40,8 @@ public class QuestManager(PlayerInstance player) : BasePlayerManager(player) public async ValueTask AcceptQuestByCondition() { + if (!ConfigManager.Config.ServerOption.EnableQuest) return; + var syncList = new List(); foreach (var quest in GameData.QuestDataData.Values) { @@ -92,6 +94,8 @@ public class QuestManager(PlayerInstance player) : BasePlayerManager(player) public async ValueTask AcceptQuest(int questId, bool sync = true) { + if (!ConfigManager.Config.ServerOption.EnableQuest) return; + GameData.QuestDataData.TryGetValue(questId, out var questExcel); if (questExcel == null) return null; @@ -113,6 +117,8 @@ public class QuestManager(PlayerInstance player) : BasePlayerManager(player) public async ValueTask FinishQuest(int questId, bool push = true) { + if (!ConfigManager.Config.ServerOption.EnableQuest) return; + GameData.QuestDataData.TryGetValue(questId, out var questExcel); if (questExcel == null) return; GameData.FinishWayData.TryGetValue(questExcel.FinishWayID, out var finishWayExcel); @@ -135,6 +141,8 @@ public class QuestManager(PlayerInstance player) : BasePlayerManager(player) public async ValueTask FinishQuestByClient(int questId) { + if (!ConfigManager.Config.ServerOption.EnableQuest) return Retcode.RetSucc; + GameData.QuestDataData.TryGetValue(questId, out var questExcel); if (questExcel == null) return Retcode.RetFail; GameData.FinishWayData.TryGetValue(questExcel.FinishWayID, out var finishWayExcel); @@ -226,12 +234,16 @@ public class QuestManager(PlayerInstance player) : BasePlayerManager(player) public QuestStatus GetQuestStatus(int questId) { + if (!ConfigManager.Config.ServerOption.EnableQuest) return QuestStatus.QuestFinish; + if (!QuestData.Quests.TryGetValue(questId, out var questInfo)) return QuestStatus.QuestNone; return questInfo.QuestStatus; } public List GetRunningQuest() { + if (!ConfigManager.Config.ServerOption.EnableQuest) return []; + return QuestData.Quests.Values.Where(x => x.QuestStatus == QuestStatus.QuestDoing).ToList(); }