Merge blocks from projector broken with prosperity update

Da Coding shared this bug 20 days ago
Reported

When welding a merge block from a projection where it should be connected with an existing merge block, it falls off before being fully welded (ie, it doesn't merge in its partially built state). This issue goes away in creative or with creative mode tools toggled on, as the block is then welded instantly. This happens both in large and small grid.

Replies (3)

photo
2

Hello Engineer,

Thank you for reaching our forum with this problem.

Issue was successfully reproduced on our side and put into our internal system.

Kind Regards,

Keen Software House: QA Department

photo
2

Got the same problem. It happens to me with all merge blocks on all grids, even stationary.

photo
1

Keen added an unconditional neighbour refresh to MyShipMergeBlock.UpdateOnceBeforeFrame():

MyShipMergeBlock otherMergeBlock = GetOtherMergeBlock(); if (otherMergeBlock != null) { CubeGrid.UpdateBlockNeighbours(SlimBlock); CubeGrid.UpdateBlockNeighbours(otherMergeBlock.SlimBlock); }

The existing connection rule says:

if (IsWorking) return true; if (def == BlockDefinition && faceNormal == mergeFace) return false;

Therefore, an unfinished merge block is not allowed to retain a structural neighbour through its merge face when that relationship is refreshed.

Previously, that neighbour relationship was generally left alone while the block was being welded. The new unconditional refresh exposes the unfinished block to the rejection rule immediately.

The projector places the unfinished merge block.

It is initially non-functional.

The next-frame neighbour refresh tests its merge face.

ConnectionAllowedInternal() rejects that connection.

Grid-disconnect detection splits the new block away.

Leave a Comment
 
Attach a file