[Dominik][0.17.58] Fail after fluid system override. this->fluid.getID() == this->getSystemFluidID() was not true
Posted: Wed Jul 24, 2019 1:46 pm
Steps to reproduce: watch replay.
Better reproduction:
replay
Or reproduce by hand:
- put two assemblers, one to unload crude oil, one to unload petroleum (any two different fluids will work)
- put undeground pipes that are internally cut by additional underground pipe - this prevents connecting underground pipes
- put pumps from crude oil unload and into petroleum load (they are not connected to assemblers because undergrounds are cut)
- connect pumps with regular pipes
- remove underground pipe cutters
- feed crude oil assembler with crude oil barrels - this fills pipes
- rotate pump in line with petroleum assembler - this forces underground to connect internally with petroleum assembler
- (optional): /c game.check_consistency() should pass (edit: at this point map is not save-loadable even if consistency passed)
- feed petroleum assembler with petroleum barrels - this changes whole pipe system to be petroleum
- /c game.check_consistency() will crash
log
- may be performed on multiplayer server without help of editor (not tested, however no step requires editor)
- may cause desyncs because before last consistency check, map is not save-loadable. After save-load, petroleum assembler will not receive proper recipe and so joining player will get different game state and there should be desync (not tested, but above save file when loaded will be different from what can be seen at end of replay)
Better reproduction:
- Open 73600-reproduction.zip (just in case: there is replay)
save
- Hover over pump and press "R" two times - this makes right underground pipe to connect internally (after this step, save is not save-loadable because right assembler will loose its recipe on load)
- Feed right assembler with petroleum barrel - this puts game at inconsistent state
- /c game.check_consistency() will crash