void Melt() {
Random meltRand = new Random( random.Next() );
int lavaSpawns = genParams.MapWidth*genParams.MapLength*genParams.MapHeight/genParams.LavaSpawnDensity;
for( int lavaSpawn = 0; lavaSpawn < lavaSpawns; lavaSpawn++ ) {
int x = meltRand.Next( genParams.MapWidth );
int y = meltRand.Next( genParams.MapLength );
// probability of lava spawning increases towards bottom of the map
int z = (int)(meltRand.NextDouble()*meltRand.NextDouble()*(waterLevel - 3));
if( blocks[((z*genParams.MapLength + y)*genParams.MapWidth + x)] != (byte)Block.Air )
continue;
FloodFill( x, y, z, Block.StillLava );
}
}