feat(channelserver): add daily noon resets for gacha stepup and guild RP

Gacha stepup progress now resets when queried after the most recent
noon boundary, using a new created_at column on gacha_stepup.

Guild member rp_today rolls into rp_yesterday lazily when members are
enumerated after noon, using a new rp_reset_at column on guilds.

Both follow the established lazy-reset pattern from the cafe handler.
This commit is contained in:
Houmgaor
2026-02-21 00:50:55 +01:00
parent 7932d8ac06
commit f584c5a688
6 changed files with 89 additions and 4 deletions

View File

@@ -1,10 +1,12 @@
package channelserver
import (
"sort"
"time"
"erupe-ce/common/byteframe"
"erupe-ce/common/mhfitem"
_config "erupe-ce/config"
"sort"
ps "erupe-ce/common/pascalstring"
"erupe-ce/network/mhfpacket"
@@ -105,6 +107,17 @@ func handleMsgMhfEnumerateGuildMember(s *Session, p mhfpacket.MHFPacket) {
return
}
// Lazy daily RP rollover: move rp_today → rp_yesterday at noon
midday := TimeMidnight().Add(12 * time.Hour)
if TimeAdjusted().Before(midday) {
midday = midday.Add(-24 * time.Hour)
}
if guild.RPResetAt.Before(midday) {
if err := s.server.guildRepo.RolloverDailyRP(guild.ID, midday); err != nil {
s.logger.Error("Failed to rollover guild daily RP", zap.Error(err))
}
}
guildMembers, err := s.server.guildRepo.GetMembers(guild.ID, false)
if err != nil {