diff --git a/server/internal/questflow/scene.go b/server/internal/questflow/scene.go index 46c5221..0500fe4 100644 --- a/server/internal/questflow/scene.go +++ b/server/internal/questflow/scene.go @@ -142,6 +142,12 @@ func (h *QuestHandler) HandleReplayFlowSceneProgress(user *store.UserState, ques user.PortalCageStatus.IsCurrentProgress = false user.PortalCageStatus.LatestVersion = nowMillis + if user.SideStoryActiveProgress.CurrentSideStoryQuestId != 0 { + user.SideStoryActiveProgress = store.SideStoryActiveProgress{ + LatestVersion: nowMillis, + } + } + flowType := h.replayFlowType(user, questSceneId) user.MainQuest.CurrentQuestFlowType = int32(flowType) user.MainQuest.LatestVersion = nowMillis diff --git a/server/internal/service/portalcage.go b/server/internal/service/portalcage.go index 3d63f27..da85fcf 100644 --- a/server/internal/service/portalcage.go +++ b/server/internal/service/portalcage.go @@ -34,6 +34,12 @@ func (s *PortalCageServiceServer) UpdatePortalCageSceneProgress(ctx context.Cont user.MainQuest.CurrentQuestFlowType = int32(model.QuestFlowTypeMainFlow) user.MainQuest.LatestVersion = now } + // Returning to Mama's Room also ends any active side story. + if user.SideStoryActiveProgress.CurrentSideStoryQuestId != 0 { + user.SideStoryActiveProgress = store.SideStoryActiveProgress{ + LatestVersion: now, + } + } }) return &pb.UpdatePortalCageSceneProgressResponse{}, nil } diff --git a/server/internal/service/quest_main.go b/server/internal/service/quest_main.go index a0bb6dd..b668921 100644 --- a/server/internal/service/quest_main.go +++ b/server/internal/service/quest_main.go @@ -203,6 +203,11 @@ func (s *QuestServiceServer) SetRoute(ctx context.Context, req *pb.SetRouteReque now := gametime.NowMillis() user.PortalCageStatus.IsCurrentProgress = false user.PortalCageStatus.LatestVersion = now + if user.SideStoryActiveProgress.CurrentSideStoryQuestId != 0 { + user.SideStoryActiveProgress = store.SideStoryActiveProgress{ + LatestVersion: now, + } + } }) return &pb.SetRouteResponse{}, nil