package methods // // Verbatim copy of the donor build's static-NPC contracts (2026-09-17). // Everything here exists so the donor's NPC-spawn card can run exactly as it did in the build // that was verified in-game — no "simplification", no reuse of neighbouring contracts. That // last point is the whole reason this file exists rather than reusing CivilianMethods4229938: // the first port fed the wrong nested contract into ClientStaticNpcInitData (the 46-field // SceneMethods.AgentSyncClientInfo instead of this 43-field Npc variant), which shifted every // field after AgentSyncClientInfo and made the client silently drop the whole packet. // The Donor prefix keeps these apart from the civilian variants already compiled into the // solution so the two paths can be compared side by side without ambiguity. // Field order in every class below follows lua/LuaGen/AutoGen/RPCSerializeAuto.lua. // // IGameSceneToClient positional arguments; both nested values are native structs. // RPCSerializeAuto.lua WriteClientNpcPoiActionData (4229938). // Complex argument, with ClientBaseEntityData's static-NPC discriminator. // SpawnNPC2's ClientStaticNpcInitData uses CustomFlagType=2, not onlyFields. // Field order: lua/LuaGen/AutoGen/RPCSerializeAuto.lua WriteClientStaticNpcInitData. // Full current-build AOI projection for an NPC AgentUnit. This contract is // consumed by UnitsManager.SyncAgentEnterAOI and initializes the BaseUnit // modules that own animation and physical reactions. // Field order: RPCSerializeAuto.lua WriteRaidBattleUnitAgent (build 4229938).