severity: significant clear

s&box shared ammo pool: NetDictionary keyed by resource path, [Sync(FromHost)], optimistic client returns

s&box NPC AnimationLayer: sync move/look state, compute move_direction as atan2, broadcast attack triggers

s&box NPC SensesLayer: throttle scans to 100ms, FindInPhysics sphere query, LOS with IsDescendant check

s&box NPC MoveTo: navigate to bounds.ClosestPoint, re-evaluate path every 0.5s, face movement direction when lateral

s&box NPC: cache schedules by type in Dictionary to avoid per-tick allocation, interrupt via EndCurrentSchedule()

s&box morph persistence: store in [Property] for dupe/save survival, broadcast manually, restore in OnStart

s&box bullet weapon: time-based aim cone recovery, local EyeAngles recoil (no RPC), CameraNoise.Recoil for shake

s&box Duplicator: serialize contraptions in selection space (not world space) for correct paste orientation

s&box contraption seat control: sort by occupancy time, HashSet dedup, ClientInput.PushScope, IPlayerControllable

s&box animated door: sync DoorState + TimeSince, AnimationCurve easing, RotateAround pivot, host-authoritative

s&box constraints: create as child GameObjects with ConstraintCleanup, not directly on target objects

s&box: Traverse all connected contraption objects via Rigidbody.Joints + Collider.Joints + ManualLink recursively

s&box per-player spawn limits: track by SteamId dict, lazy-prune on count, expose as replicated ConVars

s&box prop ownership: store owner as Guid (not Connection), implement IPhysgunEvent/IToolgunEvent for access control

s&box UndoSystem: per-player stacks keyed by SteamId, bounded at 128, RemovePlayer on disconnect, Rpc.FilterInclude for notices

s&box weapon architecture: AimRay context resolution, EffectiveAttacker, and host-side TraceAttack RPC

s&box NPC architecture: ScheduleBase (task sequence) + TaskBase (atomic action) with ShouldCancel() interrupt

s&box: Scene cleanup without player disconnect — capture baseline on load, diff and restore on cleanup command

s&box: Use INetworkListener.AcceptConnection to reject banned players at connection time, persist bans via LocalData

s&box: Two-tier player event system — Local.IPlayerEvents (hierarchy-scoped) vs Global.IPlayerEvents (scene-wide)