diff --git a/ElectronicObserver/Data/Quest/ProgressData.cs b/ElectronicObserver/Data/Quest/ProgressData.cs index 5cc734412..2682af896 100644 --- a/ElectronicObserver/Data/Quest/ProgressData.cs +++ b/ElectronicObserver/Data/Quest/ProgressData.cs @@ -1,7 +1,9 @@ using System; +using System.Collections.Generic; using System.Runtime.Serialization; using ElectronicObserver.Core.Types.Data; using ElectronicObserver.Core.Types.Quests; +using ElectronicObserver.Core.Types.Serialization.Quests; namespace ElectronicObserver.Data.Quest; @@ -198,13 +200,31 @@ public virtual void ApplyTemporaryProgress(QuestData q) } } - public QuestResetType GetProgressResetType() => TryGetQuest()?.GetProgressResetType() ?? QuestResetType.Unknown; - - private QuestData? TryGetQuest() + public QuestResetType GetProgressResetType() { - if (!KCDatabase.Instance.Quest.Quests.ContainsKey(QuestID)) return null; + Dictionary questsMetadata = KCDatabase.Instance.Translation.QuestsMetadata.QuestsMetadataList; + + if (questsMetadata.TryGetValue(QuestID, out QuestMetadata? metadata) && metadata.QuestProgressResetType is { } resetType) + { + return resetType; + } - return KCDatabase.Instance.Quest[QuestID]; + return QuestID switch + { + // Quests that are not daily but only appear on some days : + 211 or 212 => QuestResetType.Daily, // 空母3 or 輸送5 + + // Some PVP quests + 311 or + 330 or + 337 or + 339 or + 341 or + 342 or + 348 => QuestResetType.Daily, + + _ => QuestResetType, + }; } /// diff --git a/ElectronicObserver/Data/QuestManager.cs b/ElectronicObserver/Data/QuestManager.cs index f153b16d1..0f22d890b 100644 --- a/ElectronicObserver/Data/QuestManager.cs +++ b/ElectronicObserver/Data/QuestManager.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using ElectronicObserver.Core; using ElectronicObserver.Core.Types.Data; -using ElectronicObserver.Core.Types.Extensions; using ElectronicObserver.Core.Types.Quests; namespace ElectronicObserver.Data; @@ -53,7 +52,6 @@ public override void LoadFromResponse(string apiname, dynamic data) var progress = KCDatabase.Instance.QuestProgress; - //周期任務削除 if (DateTimeHelper.IsCrossedDay(progress.LastUpdateTime, 5, 0, 0)) {