Just a little heads up here mattdubs...
I got my own puzzle engine up and running again, complete with field generation, matching block recognition, destroying and spawning of new ones to fill up the gaps. It's made much smarter than the old version, using no detectors or any of the old stuff which I refer to as "MMF-style" sometimes. Although I'm pretty sure it could still be improved upon a lot, with smarter usage of certain objects. But I'm quite happy already in using an array, even if it's just to a pretty limited extent.
It basically uses the same principle as the stuff I put in your cap. But there's one major flaw with that version, since it only works properly while the playfield is full of blocks. So it doesn't recognize gaps which will cause problems, matching blocks wrongly. Just wanted to let you know, because I was confused about it for a sec myself when I realized it didn't work quite right just yet. Maybe you figured it out already or made your own different engine, I don't know. But if you're having trouble with the gap recognition, let me know. It's just a minor change to those events.