|  | @@ -365,7 +365,7 @@ bool CGTownInstance::isBonusingBuildingAdded(BuildingID::EBuildingID bid) const
 | 
	
		
			
				|  |  |  	return present != bonusingBuildings.end();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void CGTownInstance::addTownBonuses()
 | 
	
		
			
				|  |  | +void CGTownInstance::addTownBonuses(CRandomGenerator & rand)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	for(const auto & kvp : town->buildings)
 | 
	
		
			
				|  |  |  	{
 | 
	
	
		
			
				|  | @@ -377,6 +377,13 @@ void CGTownInstance::addTownBonuses()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if(kvp.second->IsWeekBonus())
 | 
	
		
			
				|  |  |  			bonusingBuildings.push_back(new COPWBonus(kvp.second->bid, kvp.second->subId, this));
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		if(kvp.second->subId == BuildingSubID::CONFIGURABLE_REWARD)
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			auto * newBuilding = new CTownRewardableBuilding(this);
 | 
	
		
			
				|  |  | +			kvp.second->rewardableObjectInfo.configureObject(newBuilding->configuration(), rand);
 | 
	
		
			
				|  |  | +			bonusingBuildings.push_back(newBuilding);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -465,7 +472,7 @@ void CGTownInstance::initObj(CRandomGenerator & rand) ///initialize town structu
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	initOverriddenBids();
 | 
	
		
			
				|  |  | -	addTownBonuses(); //add special bonuses from buildings to the bonusingBuildings vector.
 | 
	
		
			
				|  |  | +	addTownBonuses(rand); //add special bonuses from buildings to the bonusingBuildings vector.
 | 
	
		
			
				|  |  |  	recreateBuildingsBonuses();
 | 
	
		
			
				|  |  |  	updateAppearance();
 | 
	
		
			
				|  |  |  }
 |