浏览代码

Limit resources to 1000 000 000 to prevent overflow

Ivan Savenko 1 年之前
父节点
当前提交
a4d5c4917b
共有 2 个文件被更改,包括 3 次插入0 次删除
  1. 1 0
      lib/constants/NumericConstants.h
  2. 2 0
      lib/networkPacks/NetPacksLib.cpp

+ 1 - 0
lib/constants/NumericConstants.h

@@ -50,6 +50,7 @@ namespace GameConstants
 	constexpr int CREATURES_COUNT = 197;
 
 	constexpr ui32 BASE_MOVEMENT_COST = 100; //default cost for non-diagonal movement
+	constexpr int64_t PLAYER_RESOURCES_CAP = 1000 * 1000 * 1000;
 }
 
 VCMI_LIB_NAMESPACE_END

+ 2 - 0
lib/networkPacks/NetPacksLib.cpp

@@ -797,6 +797,7 @@ void SetResources::applyGs(CGameState * gs) const
 		gs->getPlayerState(player)->resources = res;
 	else
 		gs->getPlayerState(player)->resources += res;
+	gs->getPlayerState(player)->resources.amin(GameConstants::PLAYER_RESOURCES_CAP);
 
 	//just ensure that player resources are not negative
 	//server is responsible to check if player can afford deal
@@ -2022,6 +2023,7 @@ void NewTurn::applyGs(CGameState *gs)
 	{
 		assert(re.first.isValidPlayer());
 		gs->getPlayerState(re.first)->resources = re.second;
+		gs->getPlayerState(re.first)->resources.amin(GameConstants::PLAYER_RESOURCES_CAP);
 	}
 
 	for(const auto & creatureSet : cres) //set available creatures in towns