55 lines
2.4 KiB
Go
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
|
|
}
|
|
|