Browse Source

AI won't ignore owned objects taken by enemies.

DjWarmonger 10 years ago
parent
commit
60932d9ed0
1 changed files with 11 additions and 1 deletions
  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;
 	NET_EVENT_HANDLER;
 	if(sop->what == ObjProperty::OWNER)
 	if(sop->what == ObjProperty::OWNER)
 	{
 	{
+		//we don't want to visit know object twice (do we really?)
 		if(sop->val == playerID.getNum())
 		if(sop->val == playerID.getNum())
 			erase_if_present(visitableObjs, myCb->getObj(sop->id));
 			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);
+			}
+		}
 	}
 	}
 }
 }