diff --git a/config/factions/castle.json b/config/factions/castle.json index 801ddc923..595843663 100644 --- a/config/factions/castle.json +++ b/config/factions/castle.json @@ -202,6 +202,11 @@ { "type": "MORALE", "val": 2 + }, + { + "propagator": "PLAYER_PROPAGATOR", + "type": "THIEVES_GUILD_ACCESS", + "val": 1 } ], "upgrades" : "tavern" diff --git a/lib/mapObjects/CGTownInstance.cpp b/lib/mapObjects/CGTownInstance.cpp index 192457163..803cd201b 100644 --- a/lib/mapObjects/CGTownInstance.cpp +++ b/lib/mapObjects/CGTownInstance.cpp @@ -754,8 +754,6 @@ void CGTownInstance::recreateBuildingsBonuses() for(const auto & b : bl) removeBonus(b); - - for(const auto & bid : builtBuildings) { bool bonusesReplacedByUpgrade = false; @@ -777,7 +775,12 @@ void CGTownInstance::recreateBuildingsBonuses() continue; for(auto & bonus : building->buildingBonuses) - addNewBonus(bonus); + { + // Add copy of bonus to bonus system + // Othervice, bonuses with player or global propagator will not stack if player has multiple towns of same faction + auto bonusCopy = std::make_shared(*bonus); + addNewBonus(bonusCopy); + } } }