There were two bugs in load game. First one was easy, I copy-pasted npc restoring code and there was old value from item restore loop so it tried to restore too many monsters. The second bug was a bit harder, but found when inspecting the load buffer size. I forgot to clear the std::string where data was stored before loading next piece of data, so the new data was added to the old string.
Load game seems to work now and I can concentrate on pathfinding routine.