Parallel processes are very weird when it comes to messages, movement events and teleports. It's a nightmare using them for anything that isn't pure logic.
Autorun is what you want for serial, expected logic. However autorun disables player movement.
To get around these shortcomings without a plugin, split up your event so the parallel process is on a dedicated page and do your logic there, don't do any procedures.
Here's a self-contained guard event;
The way pages work is the runtime will crawl through all the pages in order, checking each condition. The last condition that is true will be called. Knowing this, we can set our pages up so what you want to happen in serial order (Autorun) can be set on the last page with a self-contained condition (self-switch).
Page 1 is the default page, as all the pages after it have conditions that are default to false.
Page 2 is where the event spins and detects if it is facing right when guard_sight is set to true (Parallel). Because it's parallel, we have to set our switches last whilst the event is still valid.
Page 3 is where the guard will walk up to the player and say their message (Autorun). Because it's autorun, we can set our switches whenever we want.
Study and experiment these event pages as they are pretty complex for what they actually do.
Someone should make a Plugin that allows player movement during Autorun events. Would make things a lot simpler. I might make a Plugin that does this myself.