Quick answer: Unreal AnimNotifyState NotifyEnd not firing when the montage stops mid-notify? Blueprint stops use blend-out which can skip the end - use ANIM_NOTIFY_END_REASON_INTERRUPTED handling.
Charge attack uses a NotifyState to track when the charge can release. Player gets staggered mid-charge; the End notify never runs and the charge stays armed forever.
Handle interrupted end
Implement NotifyEnd with the EAnimNotifyEventType arg. Branching = natural end; Interrupted = stopped early. Both should clear your tracked state.
Avoid Stop without notify
Use Montage_Stop(blendOutTime), not Montage_StopGroupByName. The latter skips notify-state end calls on some engine versions.
Add an outer safety net
Set a max-duration timer when the NotifyBegin fires. If the End hasn't fired by then, force-clear the state. Two paths to clear is better than one.
“AnimNotifyState lifecycle is fragile. Treat End as optional and engineer around it.”
Avoid putting gameplay state inside notify states. Have notifies emit events; let gameplay code own the state machine.