mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-03 04:36:03 +08:00
Fix Mission Finish Bug:
-Fix possible issues that may not be completed when completing tasks of type "SubMissionFinishCnt"
This commit is contained in:
@@ -39,9 +39,6 @@ namespace EggLink.DanhengServer.Data.Config
|
||||
public List<int>? GroupIDList { get; set; } = [];
|
||||
public int SubRewardID { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public OperationEnum Operation { get; set; } = OperationEnum.And;
|
||||
|
||||
[JsonIgnore]
|
||||
public SubMissionTask<EnterFloorTaskInfo> 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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user