瀏覽代碼

Merge pull request #4625 from IvanSavenko/fix_doublevisit

Fix crash on AI double-visiting a town with new hero
Ivan Savenko 1 年之前
父節點
當前提交
c7fc6a4c2e
共有 2 個文件被更改,包括 19 次插入20 次删除
  1. 0 3
      AI/Nullkiller/Goals/RecruitHero.cpp
  2. 19 17
      server/CGameHandler.cpp

+ 0 - 3
AI/Nullkiller/Goals/RecruitHero.cpp

@@ -74,9 +74,6 @@ void RecruitHero::accept(AIGateway * ai)
 
 		ai->nullkiller->heroManager->update();
 	}
-
-	if(t->visitingHero)
-		ai->moveHeroToTile(t->visitablePos(), t->visitingHero.get());
 }
 
 }

+ 19 - 17
server/CGameHandler.cpp

@@ -456,26 +456,28 @@ void CGameHandler::handleReceivedPack(CPackForServer * pack)
 	{
 		sendPackageResponse(false);
 	}
-
-	bool result;
-	try
-	{
-		ApplyGhNetPackVisitor applier(*this);
-		pack->visit(applier);
-		result = applier.getResult();
-	}
-	catch(ExceptionNotAllowedAction &)
+	else
 	{
-		result = false;
-	}
+		bool result;
+		try
+		{
+			ApplyGhNetPackVisitor applier(*this);
+			pack->visit(applier);
+			result = applier.getResult();
+		}
+		catch(ExceptionNotAllowedAction &)
+		{
+			result = false;
+		}
 
-	if(result)
-		logGlobal->trace("Message %s successfully applied!", typeid(*pack).name());
-	else
-		complain((boost::format("Got false in applying %s... that request must have been fishy!")
-			% typeid(*pack).name()).str());
+		if(result)
+			logGlobal->trace("Message %s successfully applied!", typeid(*pack).name());
+		else
+			complain((boost::format("Got false in applying %s... that request must have been fishy!")
+				% typeid(*pack).name()).str());
 
-	sendPackageResponse(true);
+		sendPackageResponse(true);
+	}
 	vstd::clear_pointer(pack);
 }