Quick answer: Bind OnComponentBeginOverlap after RegisterComponent and AttachToComponent. Pre-attach binds are stale.
Spawn weapon, attach to character socket. Damage zone overlap doesn't fire. Subscription happened pre-attach.
The Fix
BP:
Spawn Actor (Weapon, Deferred)
Set parameters
Finish Spawning
Get Damage Component:
Attach Component To Component (Socket)
Register Component
Bind Event to OnComponentBeginOverlap (Handler)
Order: spawn → finish → attach → register → bind. Collision world tracks component via the now-correct hierarchy.
Verifying
Walk weapon through enemy: overlap fires. Without re-bind: silent.
“Attach. Register. Then bind.”
Related Issues
For SpawnActor Deferred, see spawn deferred. For Event Dispatcher in Construct, see dispatcher.
Order matters. Bind last.