mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Fix Main Quests replay and weapon awaken level cap
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
This commit is contained in:
@@ -100,9 +100,11 @@ func ChangedTables(before, after *store.UserState) []string {
|
||||
add("IUserMainQuestFlowStatus")
|
||||
add("IUserMainQuestMainFlowStatus")
|
||||
add("IUserMainQuestProgressStatus")
|
||||
add("IUserMainQuestSeasonRoute")
|
||||
add("IUserMainQuestReplayFlowStatus")
|
||||
}
|
||||
if !mapsEqualStruct(before.MainQuestSeasonRoutes, after.MainQuestSeasonRoutes) {
|
||||
add("IUserMainQuestSeasonRoute")
|
||||
}
|
||||
if before.EventQuest != after.EventQuest {
|
||||
add("IUserEventQuestProgressStatus")
|
||||
}
|
||||
@@ -434,6 +436,8 @@ func keyFieldsForTable(table string) []string {
|
||||
return []string{"userId", "dokanId"}
|
||||
case "IUserSideStoryQuest":
|
||||
return []string{"userId", "sideStoryQuestId"}
|
||||
case "IUserMainQuestSeasonRoute":
|
||||
return []string{"userId", "mainQuestSeasonId", "mainQuestRouteId"}
|
||||
case "IUserQuestLimitContentStatus":
|
||||
return []string{"userId", "questId"}
|
||||
case "IUserBigHuntMaxScore":
|
||||
|
||||
@@ -98,12 +98,37 @@ func init() {
|
||||
return s
|
||||
})
|
||||
register("IUserMainQuestSeasonRoute", func(user store.UserState) string {
|
||||
s, _ := utils.EncodeJSONMaps(map[string]any{
|
||||
"userId": user.UserId,
|
||||
"mainQuestSeasonId": user.MainQuest.MainQuestSeasonId,
|
||||
"mainQuestRouteId": user.MainQuest.CurrentMainQuestRouteId,
|
||||
"latestVersion": user.MainQuest.LatestVersion,
|
||||
if len(user.MainQuestSeasonRoutes) == 0 {
|
||||
// Fallback to current (season, route) for legacy saves with no history.
|
||||
s, _ := utils.EncodeJSONMaps(map[string]any{
|
||||
"userId": user.UserId,
|
||||
"mainQuestSeasonId": user.MainQuest.MainQuestSeasonId,
|
||||
"mainQuestRouteId": user.MainQuest.CurrentMainQuestRouteId,
|
||||
"latestVersion": user.MainQuest.LatestVersion,
|
||||
})
|
||||
return s
|
||||
}
|
||||
keys := make([]store.SeasonRouteKey, 0, len(user.MainQuestSeasonRoutes))
|
||||
for k := range user.MainQuestSeasonRoutes {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Slice(keys, func(i, j int) bool {
|
||||
if keys[i].MainQuestSeasonId != keys[j].MainQuestSeasonId {
|
||||
return keys[i].MainQuestSeasonId < keys[j].MainQuestSeasonId
|
||||
}
|
||||
return keys[i].MainQuestRouteId < keys[j].MainQuestRouteId
|
||||
})
|
||||
records := make([]map[string]any, 0, len(keys))
|
||||
for _, k := range keys {
|
||||
e := user.MainQuestSeasonRoutes[k]
|
||||
records = append(records, map[string]any{
|
||||
"userId": user.UserId,
|
||||
"mainQuestSeasonId": e.MainQuestSeasonId,
|
||||
"mainQuestRouteId": e.MainQuestRouteId,
|
||||
"latestVersion": e.LatestVersion,
|
||||
})
|
||||
}
|
||||
s, _ := utils.EncodeJSONMaps(records...)
|
||||
return s
|
||||
})
|
||||
register("IUserEventQuestProgressStatus", func(user store.UserState) string {
|
||||
|
||||
Reference in New Issue
Block a user