I agree.
Just like they don't fly around uselessly when the item to construct is not available. The current state only makes the bots crash after waiting for the player to construct a storage chest.
Because everything is dynamic. Other deconstructions can obtain the storage just some seconds after your order - some of the simplest examples. But well, it would really help newbies, to see a message like "cannot deconstruct, either built enough storage/requester chests or request items yourself"
Cool suggestion: Eatable MOUSE-pointers. Have you used the Advanced Search today? Need help, question? FAQ -Wiki -Forum help I still like small signatures...
But the same applies to logistic robots as well and afaik they can deal with this situations quiet well.
On the other hand an easy solution is to program it as suggested and call situations in which a construction robot is assigned to a job (enough storage-space at the moment), but then notice that he cannot put the items anywhere just bad-luck.
This is needed for example when transferring money and is used in databases (Oracle, MySQL etc.), because otherwise you would loose (or win) money, because you can order stuff, which isn't longer in storage, or because you can transfer money, without waiting, if it really has reached the target account.
And many, many more stuff like this.
The problem is: Full isolation level must be bought with time you wait for the transaction. Now, with factorio, when the bots fill a chest, we have thousands of transactions.
A full transaction level for that case means, that the bots can fly only one after the other. Only one bot can fill the chest per time. And even I could not just put some items into a chest. I need to wait, till the current bot has come along and then put stuff in the chest, so that the next bot see this different situation.
My suggestion to that:
- Switching of the isolation level might be useful. For example a very simple algorithm: The less stacks are left to put the items into, the higher the isolation level for that target.
- A "reservation system" might be very useful. See https://forums.factorio.com/forum/vie ... f=6&t=2428
- Total isolation cannot be reached.
Cool suggestion: Eatable MOUSE-pointers. Have you used the Advanced Search today? Need help, question? FAQ -Wiki -Forum help I still like small signatures...
I have to admit that I did not check exatly what is going on in the code but just from in-game observation the following is the current behaviour:
- robot is assigned to a job
- robot fullfills the job
- robot checks if there is empty inventory space somewhere; if not wait
- robot flies to target inventory
- robot does another check if the inventory is still valid; if not wait
- return to roboport to recharge or assign another job
The only thing I suggest is another "inventory-check" before the robot is actually assigned to a job