forked from SoDOff-Project/sodoff
repeatable mission support
This commit is contained in:
parent
ed8cba8159
commit
9b1609c6ad
@ -48958,7 +48958,7 @@
|
||||
<maxa>500</maxa>
|
||||
<cid>0</cid>
|
||||
</AR>
|
||||
<RPT>false</RPT>
|
||||
<RPT>true</RPT>
|
||||
</Mission>
|
||||
<Mission>
|
||||
<I>2195</I>
|
||||
@ -64083,7 +64083,7 @@
|
||||
<maxa>500</maxa>
|
||||
<cid>0</cid>
|
||||
</AR>
|
||||
<RPT>false</RPT>
|
||||
<RPT>true</RPT>
|
||||
</Mission>
|
||||
<Mission>
|
||||
<I>1321</I>
|
||||
@ -80758,7 +80758,7 @@
|
||||
<maxa>5</maxa>
|
||||
<cid>0</cid>
|
||||
</AR>
|
||||
<RPT>false</RPT>
|
||||
<RPT>true</RPT>
|
||||
</Mission>
|
||||
<Mission>
|
||||
<I>2837</I>
|
||||
@ -83710,7 +83710,7 @@
|
||||
<maxa>500</maxa>
|
||||
<cid>0</cid>
|
||||
</AR>
|
||||
<RPT>false</RPT>
|
||||
<RPT>true</RPT>
|
||||
</Mission>
|
||||
<Mission>
|
||||
<I>2499</I>
|
||||
@ -94575,7 +94575,7 @@
|
||||
<maxa>500</maxa>
|
||||
<cid>0</cid>
|
||||
</AR>
|
||||
<RPT>false</RPT>
|
||||
<RPT>true</RPT>
|
||||
</Mission>
|
||||
<Mission>
|
||||
<I>2667</I>
|
||||
@ -114543,7 +114543,7 @@
|
||||
<maxa>500</maxa>
|
||||
<cid>0</cid>
|
||||
</AR>
|
||||
<RPT>false</RPT>
|
||||
<RPT>true</RPT>
|
||||
</Mission>
|
||||
<Mission>
|
||||
<I>2690</I>
|
||||
|
@ -42,7 +42,19 @@ public class MissionService {
|
||||
Viking viking = ctx.Vikings.FirstOrDefault(x => x.Id == userId)!;
|
||||
MissionState? missionState = viking.MissionStates.FirstOrDefault(x => x.MissionId == missionId);
|
||||
if (missionState != null && missionState.MissionStatus == MissionStatus.Active) {
|
||||
missionState.MissionStatus = MissionStatus.Completed;
|
||||
if (mission.Repeatable) {
|
||||
// NOTE: This won't work if repeatable mission use sub-missions, but SoD doesn't have those repeatable mission
|
||||
// NOTE: Repeatable missions needs re-login to work correctly (this looks like og bug)
|
||||
// probably due to client-side cache of task payload / status
|
||||
var taskStatuses = ctx.TaskStatuses.Where(e => e.VikingId == userId && e.MissionId == missionId);
|
||||
foreach (var task in taskStatuses) {
|
||||
task.Payload = null;
|
||||
task.Completed = false;
|
||||
}
|
||||
missionState.MissionStatus = MissionStatus.Upcoming;
|
||||
} else {
|
||||
missionState.MissionStatus = MissionStatus.Completed;
|
||||
}
|
||||
missionState.UserAccepted = null;
|
||||
}
|
||||
var rewards = achievementService.ApplyAchievementRewards(viking, mission.Rewards.ToArray());
|
||||
|
Loading…
x
Reference in New Issue
Block a user