Sorry, this one was on my end. Basically I check to see if the user is pressing an arrow key when he hits shift, and as an edge-case handler I had special logic which checked if he pressed the arrow key just an instant AFTER pressing shift. This special case checker was feeding back into the original dodge logic too soon and would re-set te “is pressig dodge” bool, causing this problem to arise if the player pressed dodge, then released dodge, and then pressed an arrow key in a quick enough span of time in that order.