feat(all): implement prestige skin switching and starter grants

This commit is contained in:
2026-10-05 19:11:23 +08:00
parent 8a28dd40fb
commit d1af8423d2
9 changed files with 491 additions and 45 deletions
+10 -2
View File
@@ -736,11 +736,15 @@ func serve(args []string) (serveErr error) {
if err = worldService.AttachResearchRuntime(gameData, *gameDataVersion, eventEconomy); err != nil {
return fmt.Errorf("attach field research: %w", err)
}
prestigeSkins, err := gamedata.LoadPrestigeSkins(gameData, *gameDataVersion)
prestigeCatalog, err := gamedata.LoadPrestigeSkinCatalog(gameData, *gameDataVersion)
if err != nil {
return fmt.Errorf("load reward prestige skins: %w", err)
}
eventEconomy.AttachPrestigeSkins(prestigeSkins)
eventEconomy.AttachPrestigeSkins(prestigeCatalog.Skins)
eventEconomy.AttachPrestigePortrait(deckStateStore.PortraitCostume)
if err := worldService.AttachPrestigeSelections(eventEconomy.PrestigeSkinSelections); err != nil {
return fmt.Errorf("attach prestige skin selections: %w", err)
}
ownedEventItems, err := gamedata.LoadOwnedEventItemDesign(gameData, *gameDataVersion)
if err != nil {
return fmt.Errorf("load event inventory design: %w", err)
@@ -1170,6 +1174,10 @@ func serve(args []string) (serveErr error) {
}
}
if initializeAccount {
prestigeIDs := prestigeCatalog.Giftable(cashService.IsAvailable)
if err := mailService.EnsureStarterPrestigeSkins(prestigeIDs, time.Now().UTC()); err != nil {
return fmt.Errorf("ensure account prestige-skin entitlement: %w", err)
}
if err := ensureAccountStateInitialized(
progressState, deckStateStore, ownedItems, ownedEquipment,
worldService.CharacterService(), collection, wallet, inventorySlots, mailService, missionService,