Can anyone tell me why my code is broken?

Hey @RLK_III!

What it looks like to me from what I can see, is that your character’s movement check is initially set but never updated in the first blueprint you shared.

Instead how you have it currently set up, I suggest making a reference to “Is Swimming” in your ActorBeginOverlap and ActorEndOverlap and setting it there, or doing so in your movement event graph, so your bool can update dynamically.

I hope the above solution works for you.