Index: source/World.cpp
===================================================================
--- source/World.cpp	(revision 1622)
+++ source/World.cpp	(working copy)
@@ -337,28 +337,31 @@
 
 void cWorld::SetWeather(eWeather a_NewWeather)
 {
-	// Do the plugins agree? Do they want a different weather?
-	cRoot::Get()->GetPluginManager()->CallHookWeatherChanging(*this, a_NewWeather);
-	
-	// Set new period for the selected weather:
-	switch (a_NewWeather)
+	if (GetDimension() == dimOverworld)
 	{
-		case eWeather_Sunny:        m_WeatherInterval = 14400 + (m_TickRand.randInt() % 4800); break;  // 12 - 16 minutes
-		case eWeather_Rain:         m_WeatherInterval =  9600 + (m_TickRand.randInt() % 7200); break;  //  8 - 14 minutes
-		case eWeather_ThunderStorm: m_WeatherInterval =  2400 + (m_TickRand.randInt() % 4800); break;  //  2 - 6 minutes
-		default:
+		// Do the plugins agree? Do they want a different weather?
+		cRoot::Get()->GetPluginManager()->CallHookWeatherChanging(*this, a_NewWeather);
+		
+		// Set new period for the selected weather:
+		switch (a_NewWeather)
 		{
-			LOGWARNING("Requested unknown weather %d, setting sunny for a minute instead.", a_NewWeather);
-			a_NewWeather = eWeather_Sunny;
-			m_WeatherInterval = 1200;
-			break;
-		}
-	}  // switch (NewWeather)
-	m_Weather = a_NewWeather;
-	BroadcastWeather(m_Weather);
-	
-	// Let the plugins know about the change:
-	cPluginManager::Get()->CallHookWeatherChanged(*this);
+			case eWeather_Sunny:        m_WeatherInterval = 14400 + (m_TickRand.randInt() % 4800); break;  // 12 - 16 minutes
+			case eWeather_Rain:         m_WeatherInterval =  9600 + (m_TickRand.randInt() % 7200); break;  //  8 - 14 minutes
+			case eWeather_ThunderStorm: m_WeatherInterval =  2400 + (m_TickRand.randInt() % 4800); break;  //  2 - 6 minutes
+			default:
+			{
+				LOGWARNING("Requested unknown weather %d, setting sunny for a minute instead.", a_NewWeather);
+				a_NewWeather = eWeather_Sunny;
+				m_WeatherInterval = 1200;
+				break;
+			}
+		}  // switch (NewWeather)
+		m_Weather = a_NewWeather;
+		BroadcastWeather(m_Weather);
+		
+		// Let the plugins know about the change:
+		cPluginManager::Get()->CallHookWeatherChanged(*this);
+	}
 }
 
 
