From 1dc5b8fd7ccdc8192c9152bf23a3edcf6e73c612 Mon Sep 17 00:00:00 2001 From: Ilya Groshev Date: Sat, 16 May 2026 19:36:07 +0300 Subject: [PATCH] Clear stale side story pointer on mama's room and main-quest transitions --- server/internal/questflow/scene.go | 6 ++++++ server/internal/service/portalcage.go | 6 ++++++ server/internal/service/quest_main.go | 5 +++++ 3 files changed, 17 insertions(+) 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