I confirmed the bug in the version 0.5 stable.
When I load a game, I sometimes see a permanent smoke (a smoke
which doesn’t move or disappear). This doesn’t happen in a freshly
created world.
The game tracks the number of fields (including smokes) with
the variable field_count. If it is non-positive, the game skips
field processing (map::process_fields_in_submap()).
Although field_count is reset to 0 when the world is created
(map::generate()), it is not initialized when the game is loaded.
— a/mapbuffer.cpp
+++ b/mapbuffer.cpp
@@ -209,6 +209,8 @@
num_loaded, num_submaps);
int locx, locy, locz, turn;
submap* sm = new submap;
- sm->active_item_count = 0;
- sm->field_count = 0;
fin >> locx >> locy >> locz >> turn;
sm->turn_last_touched = turn;
int turndif = (master_game ? int(master_game->turn) - turn : 0);