Ah! Okay! I think I see the problem.
...you aren't using the script.
You call it in your step event, yes, but you aren't USING it. You never set movement_direction or move_speed. And then you have a whole bunch of your own place_meeting calls down below and you set your x and y position manually.
You should almost never be setting your object's x and y position while using this script. The clamp to keep it in the room is okay, but there should be no need to do additional place_meeting calls for world collision.