69 lines
2.9 KiB
Go
69 lines
2.9 KiB
Go
package routers
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
)
|
|
|
|
var _ = sync.Mutex{}
|
|
var _ = context.Background
|
|
|
|
//
|
|
// Gacha draws for build 4229938 (GachaManager.DoDrawGacha -> AskDrawGacha(poolId, drawCount,
|
|
// isAutoExchange)).
|
|
// The reply only carries the refreshed per-pool counters (and this server leaves them untouched, so
|
|
// the client keeps its own view); the actual result - what the player won - is pushed through
|
|
// SyncGachaDrawInfo, which is what the client animates. A non-zero err makes the client show a
|
|
// server error and drop the draw, so the reply must always be an OK.
|
|
// Odds follow GachaPoolTierRuleConfig: RuleType 1 pools ramp the grand-prize chance from
|
|
// BaseProbability by ProbabilityIncrement per draw past RampStartDraw and hand out a guaranteed
|
|
// grand prize at PityThreshold; these pools also pick the prize row itself by relative weight within
|
|
// the "grand" or "ordinary" group. RuleType 0 pools have no pity ramp and simply pick by weight.
|
|
// Duplicate grand prizes are converted to the row's duplicateReturn drop, which is also how the
|
|
// client labels the result (IsConverted).
|
|
//
|
|
func GameRouter_Gacha_AskDrawGacha(ctx context.Context, conn any, msg any) any {
|
|
// Router implementation for GameRouter_Gacha_AskDrawGacha
|
|
var zero any; return zero
|
|
}
|
|
|
|
//
|
|
// True when this draw is a grand prize: the hard pity first, then the ramp of RuleType 1 pools.
|
|
// RuleType 0 pools carry no ramp, so their grand prize is whatever the row weights produce.
|
|
//
|
|
func GameRouter_Gacha_RollGrandPrize4229938(ctx context.Context, rule any, drawsSinceGrand uint32) bool {
|
|
// Router implementation for GameRouter_Gacha_RollGrandPrize4229938
|
|
return true
|
|
}
|
|
|
|
//
|
|
// Relative-weight pick inside the requested group. true picks only
|
|
// grand-prize rows, false only ordinary ones, null any selectable row (weight > 0).
|
|
//
|
|
func GameRouter_Gacha_PickGachaContent4229938(ctx context.Context, contents []any, grandOnly any) any {
|
|
// Router implementation for GameRouter_Gacha_PickGachaContent4229938
|
|
var zero any; return zero
|
|
}
|
|
|
|
// A prize row grants its reward through a drop, so "already owned" is decided by the template the
|
|
// drop hands out (the first entry of its guaranteed/ranged/weighted list).
|
|
func GameRouter_Gacha_TryPrizeTemplateId4229938(ctx context.Context, dropId uint32, templateId uint32) bool {
|
|
// Router implementation for GameRouter_Gacha_TryPrizeTemplateId4229938
|
|
return true
|
|
}
|
|
|
|
func GameRouter_Gacha_IsItemOwned4229938(ctx context.Context, state any, templateId uint32) bool {
|
|
// Router implementation for GameRouter_Gacha_IsItemOwned4229938
|
|
return true
|
|
}
|
|
|
|
//
|
|
// Answers AskDrawGacha with the shape the client reads (its generated reader expects the gacha
|
|
// info object), falling back to a bare OK when the catalog has no default for it.
|
|
//
|
|
func GameRouter_Gacha_ReplyDrawGacha4229938Async(ctx context.Context, conn any, msg any) any {
|
|
// Router implementation for GameRouter_Gacha_ReplyDrawGacha4229938Async
|
|
var zero any; return zero
|
|
}
|
|
|