feat(channelserver): implement monthly guild item claim tracking

Players could never claim monthly guild items because the handler
always returned 0x01 (claimed). Now tracks per-character per-type
(standard/HLC/EXC) claim timestamps in the stamps table, comparing
against the current month boundary to determine claim eligibility.

Adds MonthStart() to gametime, extends StampRepo with
GetMonthlyClaimed/SetMonthlyClaimed, and includes schema migration
31-monthly-items.sql.
This commit is contained in:
Houmgaor
2026-02-22 16:46:57 +01:00
parent 302453ce8e
commit 2acbb5d03a
11 changed files with 187 additions and 4 deletions

View File

@@ -245,6 +245,8 @@ type StampRepo interface {
GetTotals(charID uint32, stampType string) (total, redeemed uint16, err error)
ExchangeYearly(charID uint32) (total, redeemed uint16, err error)
Exchange(charID uint32, stampType string) (total, redeemed uint16, err error)
GetMonthlyClaimed(charID uint32, monthlyType string) (time.Time, error)
SetMonthlyClaimed(charID uint32, monthlyType string, now time.Time) error
}
// DistributionRepo defines the contract for distribution/event item data access.