|  |  | @@ -10,11 +10,24 @@ let resources = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | let updateRate = 60; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | let currentProductivity = {}; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function calculateProductivity() { | 
		
	
		
			
			|  |  |  | let productivity = 0; | 
		
	
		
			
			|  |  |  | for (const [key, value] of Object.entries(belongings)) { | 
		
	
		
			
			|  |  |  | productivity += productivityOf(key); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for (const [key, value] of Object.entries(upgrades)) { | 
		
	
		
			
			|  |  |  | if (!ownedUpgrades[key]) { | 
		
	
		
			
			|  |  |  | continue; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (value.effect.type == "prod-all") { | 
		
	
		
			
			|  |  |  | productivity *= value.effect.amount; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return productivity; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -29,9 +42,9 @@ function productivityMultiplierOf(type) { | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (value.effect.type == "prod-2x") { | 
		
	
		
			
			|  |  |  | if (value.effect.type == "prod") { | 
		
	
		
			
			|  |  |  | if (value.effect.target == type) { | 
		
	
		
			
			|  |  |  | base *= 2; | 
		
	
		
			
			|  |  |  | base *= value.effect.amount; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -67,6 +80,7 @@ function buyBuilding(type) { | 
		
	
		
			
			|  |  |  | // update stuff | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function updateDisplay() { | 
		
	
		
			
			|  |  |  | updateProductivity(); | 
		
	
		
			
			|  |  |  | addResources(); | 
		
	
		
			
			|  |  |  | displayResources(); | 
		
	
		
			
			|  |  |  | displayBuildings(); | 
		
	
	
		
			
				|  |  | @@ -75,8 +89,12 @@ function updateDisplay() { | 
		
	
		
			
			|  |  |  | setTimeout(updateDisplay, 1000/updateRate); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function updateProductivity() { | 
		
	
		
			
			|  |  |  | currentProductivity["food"] = calculateProductivity(); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function addResources() { | 
		
	
		
			
			|  |  |  | resources.food += calculateProductivity() * 1 / updateRate; | 
		
	
		
			
			|  |  |  | resources.food += currentProductivity["food"] * 1 / updateRate; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function displayResources() { | 
		
	
	
		
			
				|  |  | @@ -163,7 +181,7 @@ function buyUpgrade(id) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | let upgrade = upgrades[id]; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!canAfford(upgrade.cost)) { | 
		
	
		
			
			|  |  |  | if (!upgradeAvailable(id)) { | 
		
	
		
			
			|  |  |  | return; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -204,6 +222,10 @@ function initializeData() { | 
		
	
		
			
			|  |  |  | belongings[key].visible = false; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for (const [key, value] of Object.entries(resourceTypes)) { | 
		
	
		
			
			|  |  |  | currentProductivity[key] = 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | for (const [key, value] of Object.entries(upgrades)) { | 
		
	
		
			
			|  |  |  | ownedUpgrades[key] = false; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -263,7 +285,7 @@ function upgradeReachable(id) { | 
		
	
		
			
			|  |  |  | for (let upgrade of reqs) { | 
		
	
		
			
			|  |  |  | if (!ownedUpgrades[upgrade]) { | 
		
	
		
			
			|  |  |  | return false; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }currentProductivity["food"] = 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -271,7 +293,6 @@ function upgradeReachable(id) { | 
		
	
		
			
			|  |  |  | return true; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | function upgradeAvailable(id) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!upgradeReachable(id)) { | 
		
	
		
			
			|  |  |  | return false; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -287,6 +308,11 @@ function upgradeAvailable(id) { | 
		
	
		
			
			|  |  |  | return false; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } else if (type == "productivity") { | 
		
	
		
			
			|  |  |  | console.log(type, reqs); | 
		
	
		
			
			|  |  |  | if (currentProductivity < reqs) { | 
		
	
		
			
			|  |  |  | return false; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -388,6 +414,13 @@ function renderPrereqs(prereqs) { | 
		
	
		
			
			|  |  |  | "valid": belongings[id].count >= amount | 
		
	
		
			
			|  |  |  | }); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } else if (key == "productivity") { | 
		
	
		
			
			|  |  |  | for (const [id, amount] of Object.entries(prereqs.productivity)) { | 
		
	
		
			
			|  |  |  | list.push({ | 
		
	
		
			
			|  |  |  | "text": amount + " " + resourceTypes[id].name + "/s", | 
		
	
		
			
			|  |  |  | "valid": currentProductivity[id].count >= amount | 
		
	
		
			
			|  |  |  | }); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | @@ -410,7 +443,7 @@ function upgradeTooltip(id, event) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | fillTooltip("upgrade", "name", upgrades[id].name); | 
		
	
		
			
			|  |  |  | fillTooltip("upgrade", "desc", upgrades[id].desc); | 
		
	
		
			
			|  |  |  | fillTooltip("upgrade", "effect", upgrade_types[upgrades[id].effect.type].desc(buildings[upgrades[id].effect.target].name)); | 
		
	
		
			
			|  |  |  | fillTooltip("upgrade", "effect", upgrade_types[upgrades[id].effect.type].desc(upgrades[id].effect)); | 
		
	
		
			
			|  |  |  | fillTooltip("upgrade", "cost", renderCost(upgrades[id].cost)); | 
		
	
		
			
			|  |  |  | fillTooltip("upgrade", "prereqs", renderPrereqs(upgrades[id].prereqs)); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
				|  |  | 
 |