The component overlaps should look something like this.
You have to make sure that you set your walk speed back to normal after the boolean is set to false. This is how I have mine working. Its probably a bit different than what you have. You can ignore the “CurrentSpeed” variables I have and just go with the walk speed ones. The branches are just seeing what the character might be doing and adjusting the speed accordingly and if nothing else(false) it just reverts back to your desired speed.
“IsSprinting” in your case would be “IsInSwamp”…