diff --git a/Common/Data/Config/MissionInfo.cs b/Common/Data/Config/MissionInfo.cs index b4620dee..dc13109c 100644 --- a/Common/Data/Config/MissionInfo.cs +++ b/Common/Data/Config/MissionInfo.cs @@ -39,9 +39,6 @@ namespace EggLink.DanhengServer.Data.Config public List? GroupIDList { get; set; } = []; public int SubRewardID { get; set; } - [JsonIgnore] - public OperationEnum Operation { get; set; } = OperationEnum.And; - [JsonIgnore] public SubMissionTask Task { get; set; } = new(); [JsonIgnore] @@ -65,11 +62,6 @@ namespace EggLink.DanhengServer.Data.Config public void Loaded(int type) // 1 for EnterFloor, 2 for PropState { - if (MainMissionID == 1000400) - { - Operation = OperationEnum.Or; // hacky way to get the Operation - } - if (type == 1) { try diff --git a/GameServer/Game/Mission/FinishType/Handler/MissionHandlerSubMissionFinishCnt.cs b/GameServer/Game/Mission/FinishType/Handler/MissionHandlerSubMissionFinishCnt.cs index c0c475f9..7d9bf3bd 100644 --- a/GameServer/Game/Mission/FinishType/Handler/MissionHandlerSubMissionFinishCnt.cs +++ b/GameServer/Game/Mission/FinishType/Handler/MissionHandlerSubMissionFinishCnt.cs @@ -15,31 +15,19 @@ namespace EggLink.DanhengServer.Game.Mission.FinishType.Handler public override void HandleFinishType(PlayerInstance player, SubMissionInfo info, object? arg) { - var finish = info.Operation == OperationEnum.And; var finishCount = 0; foreach (var missionId in info.ParamIntList ?? []) { var status = player.MissionManager!.GetSubMissionStatus(missionId); - if (status != MissionPhaseEnum.Finish && status != MissionPhaseEnum.Cancel) - { - if (info.Operation == OperationEnum.And) - { - finish = false; - } - } else if (status == MissionPhaseEnum.Finish || status == MissionPhaseEnum.Cancel) + if (status == MissionPhaseEnum.Finish || status == MissionPhaseEnum.Cancel) { finishCount++; - if (info.Operation == OperationEnum.Or) - { - finish = true; - break; - } } } - if (finish) + if (finishCount >= info.Progress) // finish count >= progress, finish mission { player.MissionManager!.FinishSubMission(info.ID); - } else + } else // update progress { if (finishCount > 0) {