Browse Source

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 năm trước cách đây
mục cha
commit
ea46be03f3
1 tập tin đã thay đổi với 5 bổ sung0 xóa
  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