浏览代码

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