|
@@ -760,6 +760,8 @@ void CGameHandler::onNewTurn()
|
|
|
continue;
|
|
|
|
|
|
assert(elem.first.isValidPlayer());//illegal player number!
|
|
|
+
|
|
|
+ auto playerSettings = gameState()->scenarioOps->getIthPlayersSettings(elem.first);
|
|
|
|
|
|
std::pair<PlayerColor, si32> playerGold(elem.first, elem.second.resources[EGameResID::GOLD]);
|
|
|
hadGold.insert(playerGold);
|
|
@@ -773,8 +775,8 @@ void CGameHandler::onNewTurn()
|
|
|
{
|
|
|
for (GameResID k = GameResID::WOOD; k < GameResID::COUNT; k++)
|
|
|
{
|
|
|
- n.res[elem.first][k] += elem.second.valOfBonuses(BonusType::RESOURCES_CONSTANT_BOOST, BonusSubtypeID(k));
|
|
|
- n.res[elem.first][k] += elem.second.valOfBonuses(BonusType::RESOURCES_TOWN_MULTIPLYING_BOOST, BonusSubtypeID(k)) * elem.second.towns.size();
|
|
|
+ n.res[elem.first][k] += elem.second.valOfBonuses(BonusType::RESOURCES_CONSTANT_BOOST, BonusSubtypeID(k)) * playerSettings.handicap.percentIncome / 100;
|
|
|
+ n.res[elem.first][k] += elem.second.valOfBonuses(BonusType::RESOURCES_TOWN_MULTIPLYING_BOOST, BonusSubtypeID(k)) * elem.second.towns.size() * playerSettings.handicap.percentIncome / 100;
|
|
|
}
|
|
|
|
|
|
if(newWeek) //weekly crystal generation if 1 or more crystal dragons in any hero army or town garrison
|
|
@@ -806,7 +808,7 @@ void CGameHandler::onNewTurn()
|
|
|
}
|
|
|
}
|
|
|
if(hasCrystalGenCreature)
|
|
|
- n.res[elem.first][EGameResID::CRYSTAL] += 3;
|
|
|
+ n.res[elem.first][EGameResID::CRYSTAL] += 3 * playerSettings.handicap.percentIncome / 100;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -828,7 +830,7 @@ void CGameHandler::onNewTurn()
|
|
|
{
|
|
|
for (GameResID k = GameResID::WOOD; k < GameResID::COUNT; k++)
|
|
|
{
|
|
|
- n.res[elem.first][k] += h->valOfBonuses(BonusType::GENERATE_RESOURCE, BonusSubtypeID(k));
|
|
|
+ n.res[elem.first][k] += h->valOfBonuses(BonusType::GENERATE_RESOURCE, BonusSubtypeID(k)) * playerSettings.handicap.percentIncome / 100;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1428,10 +1430,8 @@ void CGameHandler::giveResource(PlayerColor player, GameResID which, int val) //
|
|
|
{
|
|
|
if (!val) return; //don't waste time on empty call
|
|
|
|
|
|
- auto * playerSettings = gs->scenarioOps->getPlayersSettings(player);
|
|
|
-
|
|
|
TResources resources;
|
|
|
- resources[which] = val * playerSettings->handicap.percentIncome / 100;
|
|
|
+ resources[which] = val;
|
|
|
giveResources(player, resources);
|
|
|
}
|
|
|
|