//This script is for Keep Craft version 0.8.3 (updated for an undocumented bugfix revision to concrete mixers). If you use it with a newer version, you may break the game. I will try to keep the script up to date!
//Keep Craft, by Ernesto Mayoral, can be played at this URL: http://morpheox.github.io/Kraft/
//At later stages in game, Keep Craft becomes very CPU intensive. This script reduces CPU load significantly, primarily by reducing how often the visuals update.
//When using this script, you'll notice the game appears to lag when taking action. Be aware the game is still running at full speed behind the scenes, it's only the display that's delayed.
//Feel free to send suggestions/pizza to /u/Tyrren on Reddit
//INSTRUCTIONS:
//You will need to follow these instructions every time you start the game.
// 1. Select and copy this entire document
// 2. Open your browser's console (instructions here: http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers)
// 3. Paste this document into the console and press enter.
var myDelay = 0
var production = new Array()
var consumption = new Array()
function refresh(){
var energypro=0;
var energycon=0;
for(key in items){
production[key]=0;
consumption[key]=0;
}
//buildings
if(items["coal"]>=people["cargotrain"]*0.005){
consumption["coal"]+=people["cargotrain"]*0.005
if(trademission["trainbuy"]!="nothing" && craft["coin"]>=people["cargotrain"]*0.0125){
craft["coin"]-=people["cargotrain"]*0.0125
production[trademission["trainbuy"]]+=people["cargotrain"]*tradetrain[trademission["trainbuy"]]*0.0125
}
}
if(buildstatus["workshop"]==1 && items["coal"]>=buildings["workshop"]*0.0075 && items["chemicals"]>=buildings["workshop"]*0.0025)
{
consumption["coal"]+=buildings["workshop"]*0.0075
consumption["chemicals"]+=buildings["workshop"]*0.0025
bonus["auto"]=buildings["workshop"]*0.10
}
else
{
bonus["auto"]=0
}
if (items["coal"]>=buildings["powerplant"]*0.0125 && items["water"]>=buildings["powerplant"]*0.5 && buildstatus["powerplant"]==1)
{
consumption["water"]+=buildings["powerplant"]*0.5
consumption["coal"]+=buildings["powerplant"]*0.0125
energypro+=(0.25/3.6)*buildings["powerplant"];
bonus["energy"]+=(0.25/3.6)*buildings["powerplant"];
}
else if(buildings["powerplant"]>0)
{
buildstatus["powerplant"]=0;
$(".build_powerplant").addClass("off")
}
if (items["mineral"]>=buildings["cementkiln"]*25 && items["clay"]>=buildings["cementkiln"]*0.5 && bonus["energy"]>=(0.075/3.6)*buildings["cementkiln"] && buildstatus["cementkiln"]==1)
{
consumption["mineral"]+=buildings["cementkiln"]*25
consumption["clay"]+=buildings["cementkiln"]*0.5
production["cement"]+=buildings["cementkiln"]*0.025
energycon+=(0.075/3.6)*buildings["cementkiln"];
bonus["energy"]-=(0.075/3.6)*buildings["cementkiln"];
}
else if(buildings["cementkiln"]>0)
{
buildstatus["cementkiln"]=0;
$(".build_cementkiln").addClass("off")
}
if (bonus["energy"]>=(0.125/3.6)*buildings["university"] && buildstatus["university"]==1)
{
craft["book"]+=buildings["university"]*0.000025*(bonus["auto"]+1);
production["knowledge"]+=buildings["university"]*0.0125
energycon+=(0.125/3.6)*buildings["university"];
bonus["energy"]-=(0.125/3.6)*buildings["university"];
}
else if(buildings["university"]>0)
{
buildstatus["university"]=0;
$(".build_university").addClass("off")
}
if (items["mineral"]>=buildings["concretemixer"]*12.5 && items["water"]>=buildings["concretemixer"]*0.5 && items["cement"]>=buildings["concretemixer"]*0.5 && bonus["energy"]>=(0.125/3.6)*buildings["concretemixer"] && buildstatus["concretemixer"]==1)
{
consumption["mineral"]+=buildings["concretemixer"]*12.5
consumption["water"]+=buildings["concretemixer"]*2.5
consumption["cement"]+=buildings["concretemixer"]*0.5
production["concrete"]+=buildings["concretemixer"]*0.0125
energycon+=(0.125/3.6)*buildings["concretemixer"];
bonus["energy"]-=(0.125/3.6)*buildings["concretemixer"];
}
else if(buildings["concretemixer"]>0)
{
buildstatus["concretemixer"]=0;
$(".build_concretemixer").addClass("off")
}
production["wood"]+=buildings["lumbermill"]/20;
production["mineral"]+=buildings["mine"]/20;
production["water"]+=buildings["fountain"]/10;
production["gold"]+=buildings["casino"]/1000;
production["knowledge"]+=buildings["scienceoutpost"]/200;
production["gold"]+=buildings["tradeoutpost"]/400;
production["clay"]+=buildings["quarry"]*0.05;
if(technologies["safestorage"]==1){
production["nickel"]+=buildings["quarry"]/4000;
}
if(technologies["mineralcoal"]==1){
production["coal"]+=buildings["quarry"]*0.005;
}
craft["token"]+=(buildings["share"]/40)*(bonus["auto"]+1);
if (items["water"]>=buildings["pasture"]/20 && buildstatus["pasture"]==1)
{
consumption["water"]+=buildings["pasture"]/20
production["food"]+=buildings["pasture"]/20;
}
if (items["mineral"]>=buildings["foundry"]/8 && buildstatus["foundry"]==1)
{
consumption["mineral"]+=buildings["foundry"]/8
production["iron"]+=buildings["foundry"]/200;
if(technologies["bronze"]>0){
production["tin"]+=buildings["foundry"]/800;
}
}
if (items["wood"]>=buildings["kiln"]/2 && buildstatus["kiln"]==1)
{
consumption["wood"]+=buildings["kiln"]/2
production["coal"]+=buildings["kiln"]/400;
}
if (items["wood"]>=buildings["shipyard"]*10 && buildstatus["shipyard"]==1)
{
consumption["wood"]+=buildings["shipyard"]*10
craft["plank"]+=(buildings["shipyard"]/80)*(bonus["auto"]+1);
}
if (items["gold"]>=buildings["bank"]/40 && buildstatus["bank"]==1)
{
consumption["gold"]+=buildings["bank"]/40
craft["coin"]+=(buildings["bank"]/200)*(bonus["auto"]+1);
}
if(buildings["library"]>=8){
production["knowledge"]+=buildings["library"]/400;
}
if (items["mineral"]>=buildings["crusher"]*2.5 && buildstatus["crusher"]==1)
{
consumption["mineral"]+=buildings["crusher"]*2.5;
production["sand"]+=buildings["crusher"]/8;
}
if (items["wood"]>=buildings["blockyard"] && items["mineral"]>=buildings["blockyard"]*2 && buildstatus["blockyard"]==1)
{
consumption["wood"]+=buildings["blockyard"]
consumption["mineral"]+=buildings["blockyard"]*2
craft["block"]+=(buildings["blockyard"]/100)*(bonus["auto"]+1);
}
if (items["wood"]>=buildings["carpentry"]*1.25 && items["iron"]>=buildings["carpentry"]*0.025 && buildstatus["carpentry"]==1)
{
consumption["wood"]+=buildings["carpentry"]*1.25
consumption["iron"]+=buildings["carpentry"]*0.025
craft["structure"]+=(buildings["carpentry"]/800)*(bonus["auto"]+1);
}
//people
production["food"]+=people["farmer"]/10;
if (items["food"]>=people["woodcutter"]/40)
{
consumption["food"]+=people["woodcutter"]/40
production["wood"]+=people["woodcutter"]/4
}
if (items["food"]>=people["miner"]/40)
{
consumption["food"]+=people["miner"]/40
production["mineral"]+=people["miner"]/4
if(technologies["multitasking"]==1){
production["clay"]+=people["miner"]/80
}
}
if (items["food"]>=people["sailor"]/20)
{
consumption["food"]+=people["sailor"]/20
}
if (items["mineral"]>=people["smelter"]/20 && items["food"]>=people["smelter"]/40)
{
consumption["mineral"]+=people["smelter"]/20
consumption["food"]+=people["smelter"]/40
production["copper"]+=people["smelter"]/400
if(technologies["metallurgy"]>0){
production["gold"]+=people["smelter"]/4000
}
}
if (craft["coin"]>=people["scientist"]/400 && items["food"]>=people["scientist"]/20)
{
craft["coin"]-=people["scientist"]/400
consumption["food"]+=people["scientist"]/20
production["knowledge"]+=people["scientist"]/200
if(buildings["laboratory"]>=1 && buildstatus["laboratory"]==1){
if(craft["bottle"]>=(buildings["laboratory"]*people["scientist"]*0.00025)){
craft["bottle"]-=(buildings["laboratory"]*people["scientist"]*0.00025)
maximums["water"]-=(buildings["laboratory"]*people["scientist"]*0.00025)
production["knowledge"]+=(buildings["laboratory"]*people["scientist"]*0.00125)
production["chemicals"]+=(buildings["laboratory"]*people["scientist"]*0.00025)
}
}
}
if (craft["coin"]>=people["marketer"]*0.0125 && items["food"]>=people["marketer"]/20)
{
craft["coin"]-=people["marketer"]*0.0125
consumption["food"]+=people["marketer"]/20
craft["bronze"]+=0.00025*people["marketer"]*(bonus["auto"]+1)
craft["brick"]+=0.000125*people["marketer"]*(bonus["auto"]+1)
craft["glass"]+=0.000125*people["marketer"]*(bonus["auto"]+1)
}
if (items["iron"]>=people["foundryman"]/100 && items["food"]>=people["foundryman"]/40 && items["coal"]>=people["foundryman"]/200)
{
consumption["iron"]+=people["foundryman"]/100
consumption["coal"]+=people["foundryman"]/200
consumption["food"]+=people["foundryman"]/40
production["steel"]+=people["foundryman"]/400
if(buildings["blastfurnace"]>=1 && buildstatus["blastfurnace"]==1){
if(items["mineral"]>=(buildings["blastfurnace"]*people["foundryman"]*0.0625)){
consumption["mineral"]+=(buildings["blastfurnace"]*people["foundryman"]*0.0625)
production["iron"]+=(buildings["blastfurnace"]*people["foundryman"]*0.0025)
}
}
}
if (items["food"]>=people["pikeman"]/40)
{
consumption["food"]+=people["pikeman"]/40
production["morale"]+=people["pikeman"]/200
}
if (items["food"]>=people["swordman"]/10)
{
consumption["food"]+=people["swordman"]/10
production["morale"]+=people["swordman"]/400
}
if (items["food"]>=people["knight"]/2)
{
consumption["food"]+=people["knight"]/2
production["morale"]+=people["knight"]/100
}
consumption["food"]+=people["medic"]/10
if (items["food"]>=people["bersek"]/5 && items["gold"]>=people["bersek"]/400)
{
consumption["food"]+=people["bersek"]/5
consumption["gold"]+=people["bersek"]/400
production["morale"]+=people["bersek"]/25
}
if (items["food"]>=people["warelephant"]*2.5 && items["water"]>=people["warelephant"]/2)
{
consumption["food"]+=people["warelephant"]*2.5;
consumption["water"]+=people["warelephant"]/2;
production["morale"]+=people["warelephant"]/200;
}
if (items["food"]>=people["musketeer"]/10)
{
consumption["food"]+=people["musketeer"]/10;
production["morale"]+=people["musketeer"]*0.0125;
}
if (bonus["invest"]>=0.025)
{
bonus["invest"]-=0.025
craft["coin"]+=0.025
}
if(myDelay == 11) {
var inv_text="
"
for(key in items){
if(items[key]!=0){
inv_text+=""+key+": | "+intToString(items[key])+" / "+ intToStringRound(maximums[key]*(bonus["storage"]+1))+" | ("+parseFloat(4*((production[key]*(bonus[key]+bonus["global"]+1))-consumption[key])).toFixed(2)+") | ";
if (bonus[key]>0 || bonus["global"]>0){
inv_text+= "+"+Math.round((bonus[key]+bonus["global"])*100)+"% | ";
}
inv_text+="
"
}
}
inv_text+="
"
$(".inventory").html(inv_text);
$(".population").html("Population: "+population+" / "+ +maximums["population"]);
$(".ships").html("Ships: "+ships+" / "+ +maximums["ships"]);
$(".trains").html("Trains: "+trains+" / "+ +maximums["trains"]);
$(".titles").html("Titles: "+bonus["title"]);
$(".territory").html("Territory: "+intToString(bonus["territory"]));
var inv_text=""
for(key in craft){
if(craft[key]!=0){
if(technologies["logistics"]==1)
{
inv_text+=""+key+": | "+parseFloat(craft[key]).toFixed(2);
}
else
{
inv_text+=" |
"+key+": | "+parseFloat(craft[key]).toFixed(2);
}
inv_text+=" |
"
}
}
inv_text+="
"
$(".inventory_craft").html(inv_text);
$(".betamount").attr("max",maximums["bet"]);
$(".craftamount").html("Items crafted: "+intToString((1+bonus["craft"]))+"
")
}
for(key in items){
var result=(production[key]*(bonus[key]+bonus["global"]+1))-consumption[key]
if((items[key]+result)<(maximums[key]*(bonus["storage"]+1))){
items[key]+=(production[key]*(bonus[key]+bonus["global"]+1))-consumption[key];
}
else
{
items[key]=(maximums[key]*(bonus["storage"]+1))
}
}
if(maximums["energy"]>0){
var energynet=energypro-energycon
if(bonus["energy"]<0){
bonus["energy"]=0;
}
if(bonus["energy"]>maximums["energy"]){
bonus["energy"]=maximums["energy"];
}
var energyrel=Math.round((bonus["energy"]/maximums["energy"])*100)
if(myDelay == 11) {
$(".progress-bar").prop("aria-valuenow",energyrel)
$(".progress-bar").css("width",energyrel+"%")
$(".progress-bar").text(intToString(bonus["energy"])+"KWh")
var energytext=""
energytext+="Energy production: +" +intToString(energypro*3.6*4)+" MWh
"
energytext+="Energy consumption:-" +intToString(energycon*3.6*4)+" MWh
"
energytext+="Energy capacity:" +intToString(maximums["energy"])+" KWh
"
$(".energylog").html(energytext)
}
}
if (myDelay++ >= 11) {
calculatecost() // Tyrren: updates tooltips. Very cpu intensive
autorefresh() // Tyrren: updates procedurally generated technology list. Is called by develop() function.
myDelay = 0
}
}