Okay, I'm kind of sober again.
First of all let me admit that I used some kind of detector setup (dummy sprites)for Crypta and a loop which would place them horizontally and vertically from each block that needed to be checked. This principle was also used to build the playfield at the beginning in a way so there would not be 3 blocks in order.
I'm planning on doing it smarter for the next incarnation of my puzzle game. I had some ideas involving an array and other stuff. Although I'm not sure yet which would be the smartest way.
I tried to get something done in your cap. As I set it up right now, it's only checking for blocks you swapped or rather the row and both columns of those blocks. If there are 3 or more matched, their opacity will be set to 50% for now, so you can see properly that it actually works (press K to reset opacity). I'm using For Each ordered loops and some Globals for this and I guess it should be commented. Tell me if it's too confusing.
This (or something like this) should now be set up in a way that it checks for any block that moved, not only the swapped ones, and of course it needs to be applied to the creation of the playfield as well.
Maybe I'll do it properly with more time on my hands. Some stuff needs to be optimized too like the unnecessary double-check of the row.
Okaaaaaaay, well, that's it for now.
The cap.