The first attempt at the behavior tree controlling the player’s actions was not going to work because it could only handle a single button press in a frame. Additionally, the way actions were assigned to the input method was very cumbersome.
However, after experimenting a bit more, I think I found something that really works. I created decorator nodes that check input. This not only greatly improves how actions are assigned to input, but it also allows the flow control of the skills to be set up in a codeless manner.
In my opinion, this is a HUGE benefit! At runtime, the skills can be modified. For example, in the image below, maybe I want the player to be able to attack while dashing, but they cannot dash or attack while guarding.
Well that would be simple to change, just add a AND node as a parent to the dash and attack skills.