浏览代码

AI won't ignore owned objects taken by enemies.

DjWarmonger 10 年之前
父节点
当前提交
60932d9ed0
共有 1 个文件被更改,包括 11 次插入1 次删除
  1. 11 1
      AI/VCAI/VCAI.cpp

+ 11 - 1
AI/VCAI/VCAI.cpp

@@ -496,9 +496,19 @@ void VCAI::objectPropertyChanged(const SetObjectProperty * sop)
 	NET_EVENT_HANDLER;
 	if(sop->what == ObjProperty::OWNER)
 	{
+		//we don't want to visit know object twice (do we really?)
 		if(sop->val == playerID.getNum())
 			erase_if_present(visitableObjs, myCb->getObj(sop->id));
-		//TODO restore lost obj
+		else if (myCb->getPlayerRelations(playerID, (PlayerColor)sop->val) == PlayerRelations::ENEMIES)
+		{
+			//we want to visit objects owned by oppponents
+			auto obj = myCb->getObj(sop->id, false);
+			if (obj)
+			{
+				visitableObjs.insert(obj);
+				erase_if_present(alreadyVisited, obj);
+			}
+		}
 	}
 }