Преглед на файлове

AI: check if hero killed while visiting object he stayed on

This is need to avoid crashes like one happen in 2084, but then game bahaviour incorrect.
I'm not exactly sure if this possible currently, but I can imaging this would happen if hero decide to attack bank while staying on it.
ArseniyShestakov преди 10 години
родител
ревизия
ea46be03f3
променени са 1 файла, в които са добавени 5 реда и са изтрити 0 реда
  1. 5 0
      AI/VCAI/VCAI.cpp

+ 5 - 0
AI/VCAI/VCAI.cpp

@@ -1652,6 +1652,11 @@ bool VCAI::moveHeroToTile(int3 dst, HeroPtr h)
 		assert(cb->getVisitableObjs(dst).size() > 1); //there's no point in revisiting tile where there is no visitable object
 		cb->moveHero(*h, CGHeroInstance::convertPosition(dst, true));
 		waitTillFree(); //movement may cause battle or blocking dialog
+		if(!h) // TODO is it feasible to hero get killed there if game work properly?
+		{ // not sure if AI can currently reconsider to attack bank while staying on it. Check issue 2084 on mantis for more information.
+			lostHero(h);
+			throw std::runtime_error("Hero was lost!");
+		}
 		ret = true;
 	}
 	else