--- server/CGameHandler.cpp	2012-10-09 22:42:58.696359990 +0200
+++ server/CGameHandler.cpp	2012-11-14 11:49:16.456172032 +0100
@@ -5479,6 +5479,9 @@
 				break;
 			}
 
+			if (h->visitedTown)
+				stopHeroVisitCastle(h->visitedTown->id, h->id);
+
 			//we need obtain guard pos before moving hero, otherwise we get nothing, because tile will be "unguarded" by hero
 			int3 guardPos = gs->guardingCreaturePosition(pos);
 
