|
|
|
@@ -13,6 +13,7 @@ const resources = {}; |
|
|
|
let updateRate = 30; |
|
|
|
|
|
|
|
const currentProductivity = {}; |
|
|
|
const contributions = {}; |
|
|
|
|
|
|
|
let clickBonus = 0; |
|
|
|
let clickVictim = "micro"; |
|
|
|
@@ -67,25 +68,25 @@ function addPowerup(powerup) { |
|
|
|
updateAll(); |
|
|
|
} |
|
|
|
|
|
|
|
function getGlobalProdBonus() { |
|
|
|
|
|
|
|
let productivity = 1; |
|
|
|
function applyGlobalProdBonus(cost) { |
|
|
|
|
|
|
|
for (let effect of effects["prod-all"]) { |
|
|
|
|
|
|
|
if (ownedUpgrades[effect.parent]) { |
|
|
|
productivity = effect.apply(productivity); |
|
|
|
cost = effect.apply(cost); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return productivity; |
|
|
|
return cost; |
|
|
|
} |
|
|
|
|
|
|
|
function calculateProductivity() { |
|
|
|
let productivity = makeCost(); |
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(belongings)) { |
|
|
|
productivity = addCost(productivity, productivityOf(key)); |
|
|
|
const provided = productivityOf(key); |
|
|
|
productivity = addCost(productivity, provided); |
|
|
|
contributions[key] = provided; |
|
|
|
} |
|
|
|
|
|
|
|
return productivity; |
|
|
|
@@ -93,32 +94,31 @@ function calculateProductivity() { |
|
|
|
|
|
|
|
// here's where upgrades will go :3 |
|
|
|
|
|
|
|
function productivityMultiplierOf(type) { |
|
|
|
let base = 1; |
|
|
|
function applyProductivityMultipliers(type, cost) { |
|
|
|
|
|
|
|
for (let effect of effects["prod"]) { |
|
|
|
|
|
|
|
if (ownedUpgrades[effect.parent] && effect.target == type) { |
|
|
|
base = effect.apply(base); |
|
|
|
cost = effect.apply(cost); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (let effect of effects["helper"]) { |
|
|
|
|
|
|
|
if (ownedUpgrades[effect.parent] && effect.helped == type) { |
|
|
|
base = effect.apply(base, belongings[effect.helper].count); |
|
|
|
cost = effect.apply(cost, belongings[effect.helper].count); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return base; |
|
|
|
return cost; |
|
|
|
} |
|
|
|
|
|
|
|
function productivityOf(type) { |
|
|
|
let baseProd = makeCost(buildings[type].prod); |
|
|
|
|
|
|
|
baseProd = scaleCost(baseProd, productivityMultiplierOf(type)); |
|
|
|
baseProd = applyProductivityMultipliers(type, baseProd); |
|
|
|
|
|
|
|
baseProd = scaleCost(baseProd, productivityMultiplierOf(type)); |
|
|
|
baseProd = applyGlobalProdBonus(baseProd); |
|
|
|
|
|
|
|
baseProd = scaleCost(baseProd, belongings[type].count); |
|
|
|
|
|
|
|
@@ -135,6 +135,7 @@ function addCost(cost1, cost2) { |
|
|
|
} |
|
|
|
|
|
|
|
function scaleCost(cost, scale) { |
|
|
|
if (typeof(scale) != "number") console.log(scale) |
|
|
|
return deepFreeze(Object.keys(resourceTypes).reduce((o, k) => ({ ...o, [k]: cost[k] * scale}), {})); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -393,7 +394,7 @@ function buyUpgrade(id, e) { |
|
|
|
} |
|
|
|
|
|
|
|
function eatPrey() { |
|
|
|
const add = buildings[clickVictim]["prod"].food * 10 * productivityMultiplierOf(clickVictim) + clickBonus; |
|
|
|
const add = buildings[clickVictim]["prod"].food * 10 + clickBonus; |
|
|
|
resources.food += add; |
|
|
|
return add; |
|
|
|
} |
|
|
|
@@ -440,6 +441,7 @@ function initializeData() { |
|
|
|
belongings[key] = {}; |
|
|
|
belongings[key].count = 0; |
|
|
|
belongings[key].visible = false; |
|
|
|
contributions[key] = makeCost(); |
|
|
|
} |
|
|
|
|
|
|
|
for (const [key, value] of Object.entries(resourceTypes)) { |
|
|
|
@@ -927,14 +929,14 @@ function prodSummary(id) { |
|
|
|
let list = []; |
|
|
|
|
|
|
|
list.push( |
|
|
|
{ "text": "Each " + buildings[id].name + " produces " + round(productivityMultiplierOf(id) * buildings[id].prod, 1) + " food/sec" } |
|
|
|
{ "text": "Each " + buildings[id].name + " produces " + contributions[id].food + " food/sec" } |
|
|
|
); |
|
|
|
|
|
|
|
list.push( |
|
|
|
{ "text": "Your " + render(belongings[id].count) + " " + (belongings[id].count == 1 ? buildings[id].name + " is" : buildings[id].plural + " are") + " producing " + round(productivityOf(id), 1) + " food/sec" } |
|
|
|
{ "text": "Your " + render(belongings[id].count) + " " + (belongings[id].count == 1 ? buildings[id].name + " is" : buildings[id].plural + " are") + " producing " + round(productivityOf(id).food, 1) + " food/sec" } |
|
|
|
); |
|
|
|
|
|
|
|
let percentage = round(100 * productivityOf(id) / currentProductivity["food"], 2); |
|
|
|
let percentage = round(100 * productivityOf(id).food / currentProductivity["food"], 2); |
|
|
|
|
|
|
|
if (isNaN(percentage)) { |
|
|
|
percentage = 0; |
|
|
|
|