瀏覽代碼

Owned object in range of enemy heroes now break simturns

Ivan Savenko 1 年之前
父節點
當前提交
e04c662bc9
共有 1 個文件被更改,包括 15 次插入0 次删除
  1. 15 0
      server/processors/TurnOrderProcessor.cpp

+ 15 - 0
server/processors/TurnOrderProcessor.cpp

@@ -17,6 +17,9 @@
 #include "../CVCMIServer.h"
 
 #include "../../lib/CPlayerState.h"
+#include "../../lib/mapping/CMap.h"
+#include "../../lib/mapObjects/CGObjectInstance.h"
+#include "../../lib/gameState/CGameState.h"
 #include "../../lib/pathfinder/CPathfinder.h"
 #include "../../lib/pathfinder/PathfinderOptions.h"
 
@@ -102,6 +105,18 @@ bool TurnOrderProcessor::playersInContact(PlayerColor left, PlayerColor right) c
 	const auto * leftInfo = gameHandler->getPlayerState(left, false);
 	const auto * rightInfo = gameHandler->getPlayerState(right, false);
 
+	for (auto obj : gameHandler->gameState()->map->objects)
+	{
+		if (obj && obj->isVisitable())
+		{
+			int3 pos = obj->visitablePos();
+			if (obj->tempOwner == left)
+				leftReachability[pos.z][pos.x][pos.y] = true;
+			if (obj->tempOwner == right)
+				rightReachability[pos.z][pos.x][pos.y] = true;
+		}
+	}
+
 	for(const auto & hero : leftInfo->heroes)
 	{
 		CPathsInfo out(mapSize, hero);