1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-12-01 23:12:49 +02:00

BattleResultAccepted fixed

This commit is contained in:
SoundSSGood
2023-06-30 18:59:45 +03:00
parent 060aecc61c
commit 670999d40e
3 changed files with 50 additions and 43 deletions

View File

@@ -2214,36 +2214,32 @@ void BattleUpdateGateState::applyGs(CGameState * gs) const
void BattleResultAccepted::applyGs(CGameState * gs) const
{
for(auto * h : {hero1, hero2})
// Remove any "until next battle" bonuses
for(auto & res : heroResult)
{
if(h)
{
h->removeBonusesRecursive(Bonus::OneBattle); //remove any "until next battle" bonuses
if (h->commander && h->commander->alive)
{
for (auto art : h->commander->artifactsWorn) //increment bonuses for commander artifacts
{
art.second.artifact->growingUp();
}
}
for(auto & art : h->artifactsWorn)
{
art.second.artifact->growingUp();
}
}
if(res.hero)
res.hero->removeBonusesRecursive(Bonus::OneBattle);
}
// Grow up growing artifacts
if(const auto hero = heroResult[winnerSide].hero)
{
if(hero->commander && hero->commander->alive)
{
for(auto & art : hero->commander->artifactsWorn)
art.second.artifact->growingUp();
}
for(auto & art : hero->artifactsWorn)
{
art.second.artifact->growingUp();
}
}
if(VLC->settings()->getBoolean(EGameSettings::MODULE_STACK_EXPERIENCE))
{
for(int i = 0; i < 2; i++)
{
if(exp[i])
{
if(auto * army = (i == 0 ? army1 : army2))
army->giveStackExp(exp[i]);
}
}
if(heroResult[0].army)
heroResult[0].army->giveStackExp(heroResult[0].exp);
if(heroResult[1].army)
heroResult[1].army->giveStackExp(heroResult[1].exp);
CBonusSystemNode::treeHasChanged();
}