This will break firing of the hook for consumers. One way to take a look at this is to enable the Automated Animations module, and cast Firebolt. This will call this hook with a null ammoUpdate argument, and the hook will break there. If you open your debug tools and change ammoUpdate to an empty object, the hook will fire (and the animation display).
The jsdocs for rollAttackV2 specify that AmmunicationUpdate can be null
However, it is used without a null check in the hook:
This will break firing of the hook for consumers. One way to take a look at this is to enable the Automated Animations module, and cast Firebolt. This will call this hook with a null ammoUpdate argument, and the hook will break there. If you open your debug tools and change ammoUpdate to an empty object, the hook will fire (and the animation display).