|  |  | @@ -73,11 +73,9 @@ function applyGlobalProdBonus(cost) { | 
		
	
		
			
			|  |  |  | for (let effect of effects["prod-all"]) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (ownedUpgrades[effect.parent]) { | 
		
	
		
			
			|  |  |  | cost = effect.apply(cost); | 
		
	
		
			
			|  |  |  | effect.apply(cost); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return cost; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function calculateProductivity() { | 
		
	
	
		
			
				|  |  | @@ -99,44 +97,42 @@ function applyProductivityMultipliers(type, cost) { | 
		
	
		
			
			|  |  |  | for (let effect of effects["prod"]) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (ownedUpgrades[effect.parent] && effect.target == type) { | 
		
	
		
			
			|  |  |  | cost = effect.apply(cost); | 
		
	
		
			
			|  |  |  | effect.apply(cost); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for (let effect of effects["helper"]) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (ownedUpgrades[effect.parent] && effect.helped == type) { | 
		
	
		
			
			|  |  |  | cost = effect.apply(cost, belongings[effect.helper].count); | 
		
	
		
			
			|  |  |  | effect.apply(cost, belongings[effect.helper].count); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return cost; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function productivityOf(type) { | 
		
	
		
			
			|  |  |  | let baseProd = makeCost(buildings[type].prod); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | baseProd = applyProductivityMultipliers(type, baseProd); | 
		
	
		
			
			|  |  |  | applyProductivityMultipliers(type, baseProd); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | baseProd = applyGlobalProdBonus(baseProd); | 
		
	
		
			
			|  |  |  | applyGlobalProdBonus(baseProd); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | baseProd = scaleCost(baseProd, belongings[type].count); | 
		
	
		
			
			|  |  |  | scaleCost(baseProd, belongings[type].count); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return baseProd; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function makeCost(source) { | 
		
	
		
			
			|  |  |  | const empty = mapObject(resourceTypes, () => 0); | 
		
	
		
			
			|  |  |  | return deepFreeze({...empty, ...source}); | 
		
	
		
			
			|  |  |  | return {...empty, ...source}; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function addCost(cost1, cost2) { | 
		
	
		
			
			|  |  |  | return deepFreeze(Object.keys(resourceTypes).reduce((o, k) => ({ ...o, [k]: cost1[k] + cost2[k]}), {})); | 
		
	
		
			
			|  |  |  | return Object.keys(resourceTypes).reduce((o, k) => {o[k] += cost2[k]; return o;}, cost1); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function scaleCost(cost, scale) { | 
		
	
		
			
			|  |  |  | if (typeof(scale) != "number") console.log(scale) | 
		
	
		
			
			|  |  |  | return deepFreeze(Object.keys(resourceTypes).reduce((o, k) => ({ ...o, [k]: cost[k] * scale}), {})); | 
		
	
		
			
			|  |  |  | return Object.keys(resourceTypes).reduce((o, k) => {o[k] *= scale; return o;}, cost); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function costOfBuilding(type, count = 1) { | 
		
	
	
		
			
				|  |  | 
 |