This repository has been archived on 2026-10-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Ananta-ps/internal/gameserver/routers/game_router_donor_npc.go
T

55 lines
2.4 KiB
Go

package routers
import (
"context"
"sync"
)
var _ = sync.Mutex{}
var _ = context.Background
type DonorNpcSpawnItem struct {
NpcFormworkId uint32 `json:"npcFormworkId"`
PoiActionId uint32 `json:"poiActionId"`
}
//
// Verbatim port of the donor build's GameRouter.Npc.cs (2026-09-17), kept deliberately
// separate from GameRouter.Civilians.cs so the two implementations can be A/B'd.
// The previous port failed silently — the card reported "sent" while nothing appeared in the
// world — because of two deviations from this file, both now restored:
// 1. SendDonorAetherInitAsync before the loop. It was dropped on the theory that World.cs
// already publishes init once per scene; the donor re-sends it on every spawn, and the
// crowd manager needs it before it will materialise a pedestrian.
// 2. The nested sync contract. DonorNpcAgentSyncClientInfo4229938 has 43 fields; reusing the
// 46-field SceneMethods.AgentSyncClientInfo shifted every field after it and the client
// discarded the packet without a complaint.
// Anything that looks like it could be "tidied up" here should be left alone until the donor
// path is confirmed working in-game.
//
func GameRouter_DonorNpc_SpawnDonorStaticNpcAsync(ctx context.Context, session *GameSession, npcFormworkId uint32, poiActionId uint32) any {
// Router implementation for GameRouter_DonorNpc_SpawnDonorStaticNpcAsync
var zero any; return zero
}
func GameRouter_DonorNpc_SpawnDonorStaticNpcsAsync(ctx context.Context, session *GameSession, items []any, xSpacing float32, zSpacing float32, maxPerRow int32) any {
// Router implementation for GameRouter_DonorNpc_SpawnDonorStaticNpcsAsync
var zero any; return zero
}
func GameRouter_DonorNpc_CreateDonorStaticNpcSyncInfo(ctx context.Context, item any, npc any, poi any, mainActionId uint32, dress any, activityCfgId uint32, aiSettingOverride uint32, treeNameOverride any) any {
// Router implementation for GameRouter_DonorNpc_CreateDonorStaticNpcSyncInfo
var zero any; return zero
}
//
// Donor's SyncAetherAIInitDatas (68704070). Sent before every static-NPC batch.
// v0.3's Vehicle copy of this lives behind a per-runtime one-shot guard; the donor sends it
// unconditionally on spawn, so this unguarded version exists for exactly that purpose.
//
func GameRouter_DonorNpc_SendDonorAetherInitAsync(ctx context.Context, session *GameSession) any {
// Router implementation for GameRouter_DonorNpc_SendDonorAetherInitAsync
var zero any; return zero
}