浏览代码

Partial fix for #561

DjWarmonger 15 年之前
父节点
当前提交
9d82d30856
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      hch/CObjectHandler.cpp

+ 6 - 1
hch/CObjectHandler.cpp

@@ -3511,7 +3511,12 @@ void CGTeleport::onHeroVisit( const CGHeroInstance * h ) const
 		return;
 		return;
 	}
 	}
 	if (ID == 111)
 	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
 	else
 		cb->moveHero (h->id,CGHeroInstance::convertPosition(cb->getObj(destinationid)->pos,true) - getVisitableOffset(), true);
 		cb->moveHero (h->id,CGHeroInstance::convertPosition(cb->getObj(destinationid)->pos,true) - getVisitableOffset(), true);
 }
 }