diff --git a/src/carryover.cpp b/src/carryover.cpp index 28531ad2f447..a82bc708e4ae 100644 --- a/src/carryover.cpp +++ b/src/carryover.cpp @@ -131,8 +131,9 @@ const std::string carryover::to_string(){ return side; } -void carryover::set_gold(int gold){ +void carryover::set_gold(int gold, bool add){ gold_ = gold; + add_ = add; } void carryover::to_config(config& cfg){ @@ -171,11 +172,12 @@ carryover_info::carryover_info(const config& cfg, bool from_snpashot) if(from_snpashot) { //adjust gold - int finishing_bonus_per_turn = cfg["map_villages_num"] * side["village_gold"] + side["income"]; + //base_income is side["income"] + game_config::base_income; + int finishing_bonus_per_turn = cfg["map_villages_num"] * side["village_gold"] + side["income"] + game_config::base_income; int finishing_bonus = std::max(0, finishing_bonus_per_turn * turns_left); if(end_level_.gold_bonus) { - carryover_sides_.back().set_gold(div100rounded((finishing_bonus + side["gold"]) * end_level_.carryover_percentage)); + carryover_sides_.back().set_gold(div100rounded((finishing_bonus + side["gold"]) * end_level_.carryover_percentage), end_level_.carryover_add); } } } diff --git a/src/carryover.hpp b/src/carryover.hpp index 0afca8630e95..0e7c1aadae04 100644 --- a/src/carryover.hpp +++ b/src/carryover.hpp @@ -38,7 +38,9 @@ class carryover{ void initialize_team(config& side_cfg); const std::string to_string(); void to_config(config& cfg); - void set_gold(int gold); + /// @param gold sets the gold of the team, always overwrites current gold. + /// @param add whether the gold should be added to the next scenario gold. + void set_gold(int gold, bool add); private: bool add_; std::string color_;