using ServerCommon; using ServerCore; using ServerBase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameServer { public class QuestAbandonAction : EntityActionBase { public QuestAbandonAction(EntityBase owner) : base(owner) { } public override async Task onInit() { await Task.CompletedTask; var result = new Result(); return result; } public override void onClear() { return; } public async Task abandonQuestConditionCheck(UInt32 questId) { var result = new Result(); var owner = getOwner() as Player; ArgumentNullException.ThrowIfNull(owner); var quest_action = owner.getEntityAction(); ArgumentNullException.ThrowIfNull(quest_action); (result, var quest_meta_all_base_info) = await QuestMetaManager.It.getQuestMeta(questId); if (result.isFail()) return result; var quest_base_info = quest_meta_all_base_info.m_quest_base_info; NullReferenceCheckHelper.throwIfNull(quest_base_info, () => $"quest_base_info is null !!!"); if (result.isFail()) return result; var quest_type = EnumHelper.convertEnumValueStringToEnum(quest_base_info.QuestType, MetaAssets.EQuestType.NORMAL); result = quest_action.hasQuest(quest_type, questId); if(result.isFail()) return result; if (quest_base_info.QuestType.Equals(nameof(MetaAssets.EQuestType.TUTORIAL))) { result.setFail(ServerErrorCode.QuestAbandonOnlyNormal, $"Epic Quest cannot abandon Data QuestID : {questId}"); return result; } return result; } } }