A good method to buffer inputs?

No problem.

I’ve made a few improvements to some of my nodes and created a relatively simple method of buffering single button inputs:

The HoldUntil node works similar to a HoldGate node (it will allow execution pulses to go from Input to Output only if it is receiving execution pulses into the Release port) but is able to “hold” an execution pulse for a set amount of time. In this case, when the Squ button is pressed, the branch is opened, a single execution pulse passes the OnFlowStart node and gets trapped in the HoldUntil node for 0.1 seconds. If an execution pulse is not sent to the Release terminal within that time, the pulse held by the node disappears. If it does receive an execution pulse, the held pulse is released, thereby setting the Air State to Air Slam.

For your setup, you could set the Release pulse to be conditional on returning to an idle state and replace the Set node with whatever nodes you need to fire your gun.

The HoldUntil node has some rather convoluted logic, but it works somehow:

I should mention that all my custom nodes require the C++ programming of a custom node (which I call CustomRDelay). The coding is different depending on what Unreal version you’re working with and some of these nodes may have buggy behavior on older versions of Unreal.