diff --git a/lib/CGameState.cpp b/lib/CGameState.cpp index 2424a1462..a00f96e7f 100644 --- a/lib/CGameState.cpp +++ b/lib/CGameState.cpp @@ -1319,11 +1319,11 @@ void CGameState::prepareCrossoverHeroes(std::vectorgetSlot(artifactPosition); if(!info) continue; + // TODO: why would there be nullptr artifacts? const CArtifactInstance *art = info->artifact; if(!art) continue; @@ -1352,6 +1352,17 @@ void CGameState::prepareCrossoverHeroes(std::vectoreraseStack(slotPair.first); } + + // Removing short-term bonuses + for(CGHeroInstance * cgh : crossoverHeroes) + { + cgh->popBonuses(Selector::durationType(Bonus::ONE_DAY)); + cgh->popBonuses(Selector::durationType(Bonus::ONE_WEEK)); + cgh->popBonuses(Selector::durationType(Bonus::N_TURNS)); + cgh->popBonuses(Selector::durationType(Bonus::N_DAYS)); + cgh->popBonuses(Selector::durationType(Bonus::ONE_BATTLE)); + } + } void CGameState::placeStartingHeroes()