Sure... There are 2 events.
With the first event:
With evilFly | X >= WindowWidth - floor(Self.Width/2)
I'm saying with evilFly's X value is equal to or greater than the width of the window, less half of the width of the width of evilFly.
The Self.Width/2 means half of the width of evilFly. I'm using half of evilFly because evilFly's origin is in the center. So by subtracting half the width of evelFly I'm reversing evilFly's direction while evilFly is still completely in the window.
The floor() is in there so that if there is a remainder when I divide the width of evilFly by 2, any remainder will be dropped.
So when this event happens I change evilFly's Bullet angle of motion to -180, which sends it to the left. By the way you don't need the "-". If you use just 180 it means the same thing. I accidentally left the "-" in there.
So with the event:
evilFly | X <+ round(Self.Width/2)
I'm basically doing the same thing for the left side. I could have used floor() here instead of round(). In either case evilFly would reverse direction while completely inside the window.
So when this event happens I change evilFly's Bullet angle of motion to 0, which sends it to the right.
By the way, I have a Bound to layout Behavior on evilFly. It's not necessary. It's just another one of those things I accidentally left in.