瀏覽代碼

- fixes Inferno Castle Gate

Ivan Savenko 12 年之前
父節點
當前提交
f838cceddd
共有 2 個文件被更改,包括 3 次插入2 次删除
  1. 1 0
      client/CCastleInterface.cpp
  2. 2 2
      server/CGameHandler.cpp

+ 1 - 0
client/CCastleInterface.cpp

@@ -924,6 +924,7 @@ void CCastleInterface::castleTeleport(int where)
 {
 	const CGTownInstance * dest = LOCPLINT->cb->getTown(ObjectInstanceID(where));
 	LOCPLINT->cb->teleportHero(town->visitingHero, dest);
+	LOCPLINT->eraseCurrentPathOf(town->visitingHero, false);
 }
 
 void CCastleInterface::townChange()

+ 2 - 2
server/CGameHandler.cpp

@@ -1794,9 +1794,9 @@ bool CGameHandler::teleportHero(ObjectInstanceID hid, ObjectInstanceID dstid, ui
 	const CGTownInstance *from = h->visitedTown;
 	if(((h->getOwner() != t->getOwner())
 		&& complain("Cannot teleport hero to another player"))
-	|| ((!from || from->hasBuilt(BuildingID::CASTLE_GATE, ETownType::INFERNO))
+	|| ((!from || !from->hasBuilt(BuildingID::CASTLE_GATE, ETownType::INFERNO))
 		&& complain("Hero must be in town with Castle gate for teleporting"))
-	|| (t->hasBuilt(BuildingID::CASTLE_GATE, ETownType::INFERNO)
+	|| (!t->hasBuilt(BuildingID::CASTLE_GATE, ETownType::INFERNO)
 		&& complain("Cannot teleport hero to town without Castle gate in it")))
 			return false;
 	int3 pos = t->visitablePos();