Files
bd2/go/internal/server/gamedata/content_ticket.go
T
Flechazo 5b5a219dc2 feat(server): add special loot and data-driven gameplay rules
Generate equipment loot atomically, grant random boxes and prevent repeat claims.
Read gacha pools, pity, products, tickets, missions, presets, chapter rewards
and inventory costs from GameData; extend both collaboration UR ticket pools.
Sync owned recipes, configure startup state and calendars in versioned seeds,
and validate unlock tickets and revival talents.
2026-10-04 19:15:59 +08:00

38 lines
834 B
Go

package gamedata
import "fmt"
type GachaContentTicketDesign struct{ IDs map[uint64]bool }
func LoadGachaContentTicketDesign(root, version string) (*GachaContentTicketDesign, error) {
db, closeDB, err := openStatDatabase(root, version)
if err != nil {
return nil, err
}
defer closeDB()
rows, err := db.Query("SELECT id,ProtoBuf FROM ContentTicketTable")
if err != nil {
return nil, err
}
defer rows.Close()
d := &GachaContentTicketDesign{IDs: map[uint64]bool{}}
for rows.Next() {
var id uint64
var raw []byte
if err := rows.Scan(&id, &raw); err != nil {
return nil, err
}
typ, err := optionalScalar(raw, 8)
if err != nil {
return nil, err
}
if typ == 4 {
if id == 0 {
return nil, fmt.Errorf("gamedata: invalid gacha content ticket")
}
d.IDs[id] = true
}
}
return d, rows.Err()
}