The parameter of expression:ReflectionAngle is the normal vector. I only use the angle of the wall to be this input, so that it might be strange at the edge of wall, like your image 2 shown.
So if I wanted to get correct reflections on all sides of a rectangular sprite, the way to do this would be:
1. determine which side of the sprite is hit (by comparing the angle between sprite & hit point)
2. for the 2 sides of the sprite with incorrect reflection, set the reflected angle of a Laser sprite to 'Laser.Light.ReflectionAngle(Sprite.Angle+90)'
Is this right?
(I've tried to set this up & I think my code for step 1 is faulty, but just wanted to confirm that I'm on the right track)