Explorar o código

Partial fix for #561

DjWarmonger %!s(int64=15) %!d(string=hai) anos
pai
achega
9d82d30856
Modificáronse 1 ficheiros con 6 adicións e 1 borrados
  1. 6 1
      hch/CObjectHandler.cpp

+ 6 - 1
hch/CObjectHandler.cpp

@@ -3511,7 +3511,12 @@ void CGTeleport::onHeroVisit( const CGHeroInstance * h ) const
 		return;
 	}
 	if (ID == 111)
-		cb->moveHero (h->id,CGHeroInstance::convertPosition(cb->getObj(destinationid)->pos,true) + (h->pos - pos) - int3(1,0,0), true);
+	{
+		std::set<int3> tiles = cb->getObj(destinationid)->getBlockedPos();
+		std::set<int3>::iterator it = tiles.begin();
+		std::advance (it, rand() % tiles.size()); //picking random element of set is tiring
+		cb->moveHero (h->id, *it + int3(1,0,0), true);
+	}
 	else
 		cb->moveHero (h->id,CGHeroInstance::convertPosition(cb->getObj(destinationid)->pos,true) - getVisitableOffset(), true);
 }