The correct answer is probably raycasts, done recursively. You can find those in the LOS Behavior.
construct.net/en/make-games/manuals/construct-3/behavior-reference/line-of-sight
Cast a ray from start in the desired direction. If it hits something, you get the info what the ray hit (mirror, wall), where exactly (x, y) and also a "reflection angle". If it hit a mirror, cast a new ray from the new position into the direction of "reflection angle". Repeat until the ray is terminated at some point (e.g. hitting the puzzle boundaries) And make sure it is actually terminated, else you could forever be stuck inside this loop which would freeze your game.
Check out the "Instant hit laser" example project to get you started.