mirror of
https://github.com/SoDOff-Project/sodoff.git
synced 2025-10-11 08:18:49 -07:00
repeatable mission support
This commit is contained in:
parent
ed8cba8159
commit
9b1609c6ad
@ -48958,7 +48958,7 @@
|
|||||||
<maxa>500</maxa>
|
<maxa>500</maxa>
|
||||||
<cid>0</cid>
|
<cid>0</cid>
|
||||||
</AR>
|
</AR>
|
||||||
<RPT>false</RPT>
|
<RPT>true</RPT>
|
||||||
</Mission>
|
</Mission>
|
||||||
<Mission>
|
<Mission>
|
||||||
<I>2195</I>
|
<I>2195</I>
|
||||||
@ -64083,7 +64083,7 @@
|
|||||||
<maxa>500</maxa>
|
<maxa>500</maxa>
|
||||||
<cid>0</cid>
|
<cid>0</cid>
|
||||||
</AR>
|
</AR>
|
||||||
<RPT>false</RPT>
|
<RPT>true</RPT>
|
||||||
</Mission>
|
</Mission>
|
||||||
<Mission>
|
<Mission>
|
||||||
<I>1321</I>
|
<I>1321</I>
|
||||||
@ -80758,7 +80758,7 @@
|
|||||||
<maxa>5</maxa>
|
<maxa>5</maxa>
|
||||||
<cid>0</cid>
|
<cid>0</cid>
|
||||||
</AR>
|
</AR>
|
||||||
<RPT>false</RPT>
|
<RPT>true</RPT>
|
||||||
</Mission>
|
</Mission>
|
||||||
<Mission>
|
<Mission>
|
||||||
<I>2837</I>
|
<I>2837</I>
|
||||||
@ -83710,7 +83710,7 @@
|
|||||||
<maxa>500</maxa>
|
<maxa>500</maxa>
|
||||||
<cid>0</cid>
|
<cid>0</cid>
|
||||||
</AR>
|
</AR>
|
||||||
<RPT>false</RPT>
|
<RPT>true</RPT>
|
||||||
</Mission>
|
</Mission>
|
||||||
<Mission>
|
<Mission>
|
||||||
<I>2499</I>
|
<I>2499</I>
|
||||||
@ -94575,7 +94575,7 @@
|
|||||||
<maxa>500</maxa>
|
<maxa>500</maxa>
|
||||||
<cid>0</cid>
|
<cid>0</cid>
|
||||||
</AR>
|
</AR>
|
||||||
<RPT>false</RPT>
|
<RPT>true</RPT>
|
||||||
</Mission>
|
</Mission>
|
||||||
<Mission>
|
<Mission>
|
||||||
<I>2667</I>
|
<I>2667</I>
|
||||||
@ -114543,7 +114543,7 @@
|
|||||||
<maxa>500</maxa>
|
<maxa>500</maxa>
|
||||||
<cid>0</cid>
|
<cid>0</cid>
|
||||||
</AR>
|
</AR>
|
||||||
<RPT>false</RPT>
|
<RPT>true</RPT>
|
||||||
</Mission>
|
</Mission>
|
||||||
<Mission>
|
<Mission>
|
||||||
<I>2690</I>
|
<I>2690</I>
|
||||||
|
@ -42,7 +42,19 @@ public class MissionService {
|
|||||||
Viking viking = ctx.Vikings.FirstOrDefault(x => x.Id == userId)!;
|
Viking viking = ctx.Vikings.FirstOrDefault(x => x.Id == userId)!;
|
||||||
MissionState? missionState = viking.MissionStates.FirstOrDefault(x => x.MissionId == missionId);
|
MissionState? missionState = viking.MissionStates.FirstOrDefault(x => x.MissionId == missionId);
|
||||||
if (missionState != null && missionState.MissionStatus == MissionStatus.Active) {
|
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;
|
missionState.UserAccepted = null;
|
||||||
}
|
}
|
||||||
var rewards = achievementService.ApplyAchievementRewards(viking, mission.Rewards.ToArray());
|
var rewards = achievementService.ApplyAchievementRewards(viking, mission.Rewards.ToArray());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user