package routers import ( "context" "sync" ) var _ = sync.Mutex{} var _ = context.Background // // Gang-boss summon wheel (嘉姆 / 帮派Boss, Tab then dial to the second wheel), // methodId 63745420 AskSummonGangMember. // THE ONE SENTENCE THAT MATTERS: this is a real C2S round trip, so unlike the Z switch wheel // the server decides what appears. That is why this wheel can surface characters the Z wheel // never can — the Z wheel's membership lives in FightSpiritConfig.CanJoin behind a client-side // gate, while this one hands the server an id and waits to see what comes back. // What arrives is a single uint32 and what it means is not stable across builds: measurements on // the reference branch saw the same slot send a gang-member row id (10520022) at one point and // the display row's AgentQuoteId (40651920) at another. Neither is required to name something // spawnable — 10520022 matches no config this server owns at all. // Two things make this build more forgiving than the reference: // 1. SlotOverrides lets sent-id be remapped server-side (see SummonWheelSettings), so the // outcome never depends on guessing which id shape the client picked. // 2. A failure prints the exact id plus the literal JSON to fix it, so an unresolvable slot // costs one run to configure instead of one round of guesswork. // The reply body is ignored by the client: summonCb reads only the retcode and maps a non-zero // one through MessageConfig, which has no row for "this member cannot be projected" — an error // would surface as an empty toast. So this always answers OK and reports through the console. // // Returns true the first time this slot id is seen, so the caller can log it once. func GameRouter_GangBoss_NoteObservedSummonSentId(ctx context.Context, sentId uint32) bool { // Router implementation for GameRouter_GangBoss_NoteObservedSummonSentId return true } func GameRouter_GangBoss_AskSummonGangMember(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_GangBoss_AskSummonGangMember var zero any; return zero } // // "Disband all" on the same wheel (63243016). Without a handler the button is a dead no-op and // every summoned character stays in the world forever — there is no other despawn path. // func GameRouter_GangBoss_AskDestroyAllGangMember(ctx context.Context, conn any, msg any) any { // Router implementation for GameRouter_GangBoss_AskDestroyAllGangMember var zero any; return zero } // // Maps the id the client sent onto the id to actually spawn. Returns the input unchanged when // this slot is not configured, which keeps the reference branch's behaviour as the default. // func GameRouter_GangBoss_ResolveSummonTarget(ctx context.Context, sentId uint32, label any) uint32 { // Router implementation for GameRouter_GangBoss_ResolveSummonTarget return 0 }