Przeglądaj źródła

Final fix. AI heroes won't loose their turn when visiting adjacent objects.

DjWarmonger 13 lat temu
rodzic
commit
05742afd60
2 zmienionych plików z 10 dodań i 8 usunięć
  1. 6 4
      AI/VCAI/VCAI.cpp
  2. 4 4
      server/VCMI_server.vcxproj

+ 6 - 4
AI/VCAI/VCAI.cpp

@@ -1554,12 +1554,12 @@ bool VCAI::moveHeroToTile(int3 dst, const CGHeroInstance * h)
 		performObjectInteraction (visitedObject, h);
 	}
 
-	if(h->tempOwner == playerID) //lost hero after last move
+	if(h->tempOwner == playerID) //we could have lost hero after last move
 	{
 		cb->recalculatePaths();
-		if (startHpos == h->visitablePos())
+		if (startHpos == h->visitablePos() && !ret) //we didn't move and didn't reach the target
 		{
-			throw cannotFulfillGoalException("Invalid path found!"); //FIXME
+			throw cannotFulfillGoalException("Invalid path found!");
 		}
 	}
 	BNLOG("Hero %s moved from %s to %s", h->name % startHpos % h->visitablePos());
@@ -2364,7 +2364,9 @@ TSubgoal CGoal::whatToDoToAchieve()
 	case EXPLORE:
 		{
 			if (hero)
+			{
 				return CGoal(VISIT_TILE).settile(whereToExplore(hero)).sethero(hero);
+			}
 
 			auto hs = cb->getHeroesInfo();
 			int howManyHeroes = hs.size();
@@ -2902,7 +2904,7 @@ int3 SectorMap::firstTileToGet(const CGHeroInstance *h, crint3 dst)
 		if(!preds[dst])
 		{
 			write("test.txt");
-			throw cannotFulfillGoalException(str(format("Cannot found connection between sectors %d and %d") % src->id % dst->id));
+			throw cannotFulfillGoalException(str(format("Cannot find connection between sectors %d and %d") % src->id % dst->id));
 		}
 
 		std::vector<const Sector*> toTraverse;

+ 4 - 4
server/VCMI_server.vcxproj

@@ -63,11 +63,11 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..</OutDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)</OutDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='RD|Win32'">$(SolutionDir)$(Configuration)\bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='RD|Win32'">..\..\RD</OutDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='RD|x64'">$(SolutionDir)$(Configuration)\bin\</OutDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='RD|Win32'">$(Configuration)\</IntDir>
     <IntDir Condition="'$(Configuration)|$(Platform)'=='RD|x64'">$(Configuration)\</IntDir>
@@ -108,7 +108,7 @@
     </ClCompile>
     <Link>
       <AdditionalDependencies>VCMI_lib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>G:\Programowanie\VCMI\AI;../..;../../libs;../;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <TargetMachine>MachineX86</TargetMachine>
     </Link>
@@ -155,7 +155,7 @@
     </ClCompile>
     <Link>
       <AdditionalDependencies>VCMI_lib.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>G:\Programowanie\VCMI\libs;G:\Programowanie\VCMI;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateMapFile>true</GenerateMapFile>
       <OptimizeReferences>true</OptimizeReferences>