Вы удивительно грамотно пишите.
Мне это по жизни не мешает.
Технически как это сделать? Ну не обязательно делать проверку каждый фрейм. Даже 1 раз в 5-10 игровых дней вполне достаточно.
Я бы предложил сделать так: Первым делом определять те постройки (стена и пол), которые являются несущими. Это собственно те, которые имеют под собой в радиусе 1 другую несущую клетку.
Т.е. опора(или стена) делает несущими сразу 5 клеток этажем выше (1 точно над собой и ещё 4 крестиком). Далее, клетку, которая граничит с несущей с боку, но не является несущей сама, назовем "средней". Клетка, которая не является ни средней, ни несущей, но граничит со "средней" назовем крайней.
К крайней клетке уже не получится что-то иное прицепить, за исключением дверей, решеток, прутьев.
На средней клетке можно строить тоже самое, но и ещё любые конструкции-здания.
Если крайняя клетка граничит с 2-мя средними с двух противоположных сторон, то сама становится несущей. (это что-то типа середины арки, которая с 2-х сторон опирается на опоры).
Мосты придется крепить так:
1) Подъемный мост должен полностью с одной стороны опираться на несущие клетки.
2) Складной мост должен опираться хотя бы на средние клетки.
3) Ну а приделать любой мост к крайним клеткам никак не получится.
Может быть в зависимости от длины моста требовать, чтобы мост с другой стороны тоже на что-нибудь опирался.
Такой алгоритм достаточно прост для вычислений. Намного проще движения воды.