It really isnt that hard;
1. Store all of the current "falling" dominoes in an array (their object numbers I mean).
2. Cycle through every falling domino, xrotate it down a bit, check for polygonal collision, if a collision occurs, add the object hit to the falling dominoes.
3. Check if any falling dominoe's x angle is greater than or equal to 90, if so remove it from the falling list.
You could even go as far as to make certain blocks that dont fall when hit, then you could make walls and such that dominoes would bump into and stop falling.
If you wanted to improve speed, instead of using polygonal collision with DBP's native commands, either use sparky's collision dll for the object collision commands, or use raycasting, casting an intersection ray from a point at the top of the domino before it's rotated to a point at the top of the domino after it's rotated, checking for intersection with any domino's within x distance.
Better yet, when a collision does occur, check if the collision is on the lower half of the domino or the higher half. If on the lower, rotate it backwards, if on the higher, rotated it forwards. Now, you can have a domino at a lower y value hit a domino at a higher y value and cause that domino to fall backwards, changing the direction.
More realism could be added by adding gravity to all dominoes, just throw in an intersection from the domino's bottom to some large negative value directly below the domino, checking for intersection with a map model of maybe a table, if the distance is greater than 0 then move the domino down at an increasing rate. Alter your fall-stopping routine to instead check when a domino has hit the map model to have it stop falling.