ANDREW & HILARY MEREDITH
This is happening because the nicotine which has gone into the walls is released by the damp. If you wash the surface that will remove what is on the top but then usually more will come through. So the only solution is to seal it in. You can use a stain block paint followed by emulsion, white for the ceiling normally, and whatever you like for the walls. But if you use oil based undercoat instead of the stainblock that will be cheaper for large areas. it will then need to be left overnight with ventilation before emulsioning. It can be smelly while drying but it will do a good lasting job. Make sure you cover everything up while painting.