I'm guessing that this has something to do with the game's algorithm for seeking the next ship to get focus after a given ship finishes its turn: When that second constructor reaches the starbase and gets marked as destroyed, the nearest ship available will almost always be the constructor which ran out of gas one space away from the starbase. I suspect that the distance formula then gets confused due to the fact that other ships can coexist on starbase squares but constructors can't. |
Well, I just did it again, with a constructor ending its turn just shy of a starbase. However,
this time, there was another space ship of mine (a war ship, not a constructor) which was
also adjacent to the starbase, on the other side. I had two other constructors which were within range of the starbase, so I figured I'd try a few things.
Leaving everything the way I described it above, I ran the first of the two constructors over to the starbase, and, lo and behold, it
didn't "pull" the stationary constructor into the starbase. What's more, the adjacent war ship got focus after the move.
Next, I moved that war ship one space away from the starbase, so that the adjacent stalled-out constructor was once again the nearest ship to the starbase, and ran the second other constructor up to the starbase.
Voila! The stalled-out constructor got pulled in to the starbase as well this time, allowing me to build
two new modules,
bam! bam!, right in a row, the second one with a constructor which shouldn't have reached the starbase until the next turn.
So I think it's pretty obvious that the problem lies in the "find nearest ship" end-of-move routine, and, I'm guessing, with the fact that a constructor at range=1 from a starbase is, in some senses, like any other ship at range=0 (i.e., as close as it can possibly be).
See?
Anybody can file a bug report; but not just anybody can tell you where in your source code to look for the bug.