943 lines
36 KiB
JavaScript
943 lines
36 KiB
JavaScript
|
|
// by Nekonico
|
||
|
|
|
||
|
|
elements.cookie_dough = {
|
||
|
|
color: ["#bfac91","#CDBFAB",],
|
||
|
|
behavior: behaviors.STURDYPOWDER,
|
||
|
|
reactions: {
|
||
|
|
"chocolate": { elem1:"chocolate_chip_cookie_dough", elem2:null, chance: 0.5 },
|
||
|
|
"chocolate_powder": { elem1:"chocolate_chip_cookie_dough", elem2:null, chance: 0.5 },
|
||
|
|
},
|
||
|
|
category: "food",
|
||
|
|
tempHigh: 74,
|
||
|
|
stateHigh: "plain_cookie",
|
||
|
|
burn:40,
|
||
|
|
burnTime:25,
|
||
|
|
burnInto:"ash",
|
||
|
|
state: "solid",
|
||
|
|
density: 526.9,
|
||
|
|
isFood: true,
|
||
|
|
cookievalue: 0.5
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.chocolate_chip_cookie_dough = {
|
||
|
|
color: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
behavior: behaviors.STURDYPOWDER,
|
||
|
|
category: "food",
|
||
|
|
tempHigh: 74,
|
||
|
|
stateHigh: "cookie",
|
||
|
|
burn:40,
|
||
|
|
burnTime:25,
|
||
|
|
burnInto:"ash",
|
||
|
|
state: "solid",
|
||
|
|
density: 526.9,
|
||
|
|
isFood: true,
|
||
|
|
cookievalue: 0.5
|
||
|
|
}
|
||
|
|
|
||
|
|
clicked = false
|
||
|
|
shopclicked = false
|
||
|
|
cookies = 0
|
||
|
|
oldcookies = 0
|
||
|
|
createdcookies = 0
|
||
|
|
/*
|
||
|
|
CpS = 0
|
||
|
|
mouseEff = 1 */
|
||
|
|
buildings = { "cursors": [0,15,15], "grandmas": [0,100,100], "farms": [0,1100,1100], }
|
||
|
|
shopitem = "cursors"
|
||
|
|
/*
|
||
|
|
shopupgrade = 0
|
||
|
|
boughtUpgrades = { "cursors": [], "grandmas": [], "farms": [], } */
|
||
|
|
cursorCount = []
|
||
|
|
grandmaCount = []
|
||
|
|
farmCount = []
|
||
|
|
cursorprice = buildings.cursors[1]
|
||
|
|
grandmaprice = buildings.grandmas[1]
|
||
|
|
farmprice = buildings.farms[1]
|
||
|
|
|
||
|
|
|
||
|
|
elements.plain_cookie = {
|
||
|
|
color: ["#C4966C","#C0946B"],
|
||
|
|
behavior: behaviors.POWDER,
|
||
|
|
reactions: {
|
||
|
|
"chocolate": { elem1:"cookie", elem2:null, chance: 0.25 },
|
||
|
|
"chocolate_powder": { elem1:"cookie", elem2:null, chance: 0.25 },
|
||
|
|
},
|
||
|
|
tempHigh: 192,
|
||
|
|
stateHigh: "toast",
|
||
|
|
category: "food",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 200,
|
||
|
|
burnInto: "toast",
|
||
|
|
breakInto: "crumb",
|
||
|
|
breakIntoColor: ["#c8946a","#c08655","#ba7a45","#a86d3e"],
|
||
|
|
state: "solid",
|
||
|
|
density: 233.96,
|
||
|
|
isFood: true,
|
||
|
|
cookievalue: 1
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.cookie = {
|
||
|
|
color: ["#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
behavior: behaviors.POWDER,
|
||
|
|
tick: function(pixel) {
|
||
|
|
var top = mousePos.y - Math.floor(mouseSize/2);
|
||
|
|
var bottom = mousePos.y + Math.floor(mouseSize/2);
|
||
|
|
var left = mousePos.x - Math.floor(mouseSize/2);
|
||
|
|
var right = mousePos.x + Math.floor(mouseSize/2);
|
||
|
|
if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && clicked === false) {
|
||
|
|
clicked = true
|
||
|
|
cookies += 1
|
||
|
|
}
|
||
|
|
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown !== true && clicked === true) {
|
||
|
|
clicked = false
|
||
|
|
}
|
||
|
|
doDefaults(pixel);
|
||
|
|
},
|
||
|
|
tempHigh: 95,
|
||
|
|
stateHigh: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
category: "food",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 200,
|
||
|
|
burnInto: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
breakInto: ["crumb","crumb","crumb","crumb","crumb","chocolate","chocolate_powder"],
|
||
|
|
breakIntoColor: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
state: "solid",
|
||
|
|
density: 233.96,
|
||
|
|
isFood: true,
|
||
|
|
cookievalue: 1
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.the_cookie = {
|
||
|
|
color: ["#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#C4966C","#C0946B","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
colorKey: {
|
||
|
|
"l": "#C4966C",
|
||
|
|
"r": "#C0946B",
|
||
|
|
"d": "#4d2818",
|
||
|
|
"w": "#3b1b0d",
|
||
|
|
"b": "#33160a",
|
||
|
|
},
|
||
|
|
colorPattern: [
|
||
|
|
"rlrlrlrlrlrlrlrlrlr",
|
||
|
|
"rlrlrlrlrlrlrlrlrlr",
|
||
|
|
"rlrldlrlrlrlrlrlrlr",
|
||
|
|
"rlrlrwblrlrlrlrlrlr",
|
||
|
|
"rlrlrlrlrlrlwbrlrlr",
|
||
|
|
"rlrlddwlrlrlddwlrlr",
|
||
|
|
"rlrlwddbrlrbrlrlrlr",
|
||
|
|
"rlrldbdwrlrlrlrlrlr",
|
||
|
|
"rlrlrdwrrlrlrlrlrlr",
|
||
|
|
"rlrlrlrlrlrlrlblrlr",
|
||
|
|
"rlwlrlrlrlrlwdwlrlr",
|
||
|
|
"rlrlwlrlrlrlrlrlrlr",
|
||
|
|
"rlbwblrlrlrlrlrlrlr",
|
||
|
|
"rldlblrlrlrlrlrlrlr",
|
||
|
|
"rlrlrlrlbwrlrlrlrlr",
|
||
|
|
"rlrlrlrlwbdlrlrlrlr",
|
||
|
|
"rlrlrlrlrdrlrlrlrlr",
|
||
|
|
"rlrlrlrlrlrlrlrlrlr",
|
||
|
|
"rlrlrlrlrlrlrlrlrlr",
|
||
|
|
],
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
tick: function(pixel) {
|
||
|
|
var top = mousePos.y - Math.floor(mouseSize/2);
|
||
|
|
var bottom = mousePos.y + Math.floor(mouseSize/2);
|
||
|
|
var left = mousePos.x - Math.floor(mouseSize/2);
|
||
|
|
var right = mousePos.x + Math.floor(mouseSize/2);
|
||
|
|
if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && clicked === false) {
|
||
|
|
clicked = true
|
||
|
|
cookies += 1
|
||
|
|
}
|
||
|
|
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown !== true && clicked === true) {
|
||
|
|
clicked = false
|
||
|
|
}
|
||
|
|
doDefaults(pixel);
|
||
|
|
},
|
||
|
|
tempHigh: 95,
|
||
|
|
stateHigh: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
category: "clicker",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 200,
|
||
|
|
burnInto: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
breakInto: ["crumb","crumb","crumb","crumb","crumb","chocolate","chocolate_powder"],
|
||
|
|
breakIntoColor: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
state: "solid",
|
||
|
|
density: 233.96,
|
||
|
|
isFood: true,
|
||
|
|
movable: false,
|
||
|
|
}
|
||
|
|
/*
|
||
|
|
elements.upgrade_shop = {
|
||
|
|
color: "#9C998B",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
onSelect: function() {
|
||
|
|
var answer5 = prompt("Input the desired upgrade of this shop. It will not work if you place multiple upgrade shops while paused.",(shopupgrade||"cursors"));
|
||
|
|
if (!answer5) { return }
|
||
|
|
shopupgrade = (answer5);
|
||
|
|
var answer4 = prompt("Input the desired item of this shop. It will not work if you place multiple shop items while paused.",(shopitem||"cursors"));
|
||
|
|
if (!answer4) { return }
|
||
|
|
shopitem = (answer4);
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (pixel.start < pixelTicks && !pixel.upgrade) {
|
||
|
|
pixel.upgrade = shopupgrade
|
||
|
|
}
|
||
|
|
if (pixel.start < pixelTicks && !pixel.item) {
|
||
|
|
pixel.item = shopitem
|
||
|
|
}
|
||
|
|
if (boughtUpgrades[pixel.item].indexOf(pixel.upgrade) !== -1 && pixel.upgrade <= 3) {
|
||
|
|
pixel.upgrade += 1
|
||
|
|
}
|
||
|
|
if ((cursorprice != buildings.cursors[1] || !cursorprice) || (grandmaprice != buildings.grandmas[1] || !grandmaprice) || (farmprice != buildings.farms[1])) {
|
||
|
|
cursorprice = Math.floor(buildings.cursors[1])
|
||
|
|
grandmaprice = Math.floor(buildings.grandmas[1])
|
||
|
|
farmprice = Math.floor(buildings.farms[1])
|
||
|
|
}
|
||
|
|
var top = mousePos.y - Math.floor(mouseSize/2);
|
||
|
|
var bottom = mousePos.y + Math.floor(mouseSize/2);
|
||
|
|
var left = mousePos.x - Math.floor(mouseSize/2);
|
||
|
|
var right = mousePos.x + Math.floor(mouseSize/2);
|
||
|
|
if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && shopclicked === false && cookies >= (Math.floor(buildings[pixel.item][1]))) {
|
||
|
|
shopclicked = true
|
||
|
|
buildings[pixel.item][0] += 1
|
||
|
|
cookies -= (Math.round(buildings[pixel.item][1]))
|
||
|
|
buildings[pixel.item][1] = (buildings[pixel.item][2] * (1.15 ** buildings[pixel.item][0]))
|
||
|
|
}
|
||
|
|
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && shopclicked === false) {
|
||
|
|
shopclicked = true
|
||
|
|
}
|
||
|
|
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown !== true && shopclicked === true) {
|
||
|
|
shopclicked = false
|
||
|
|
}
|
||
|
|
doDefaults(pixel);
|
||
|
|
},
|
||
|
|
tempHigh: 95,
|
||
|
|
stateHigh: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
category: "clicker",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 200,
|
||
|
|
burnInto: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
breakInto: ["crumb","crumb","crumb","crumb","crumb","chocolate","chocolate_powder"],
|
||
|
|
breakIntoColor: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
state: "solid",
|
||
|
|
density: 233.96,
|
||
|
|
isFood: true,
|
||
|
|
movable: false,
|
||
|
|
} */
|
||
|
|
|
||
|
|
elements.shop = {
|
||
|
|
color: "#9C998B",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
onSelect: function() {
|
||
|
|
var answer5 = prompt("Input the desired item of this shop. It will not work if you place multiple shop items while paused.",(shopitem||"cursors"));
|
||
|
|
if (!answer5) { return }
|
||
|
|
shopitem = (answer5);
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (pixel.start < pixelTicks && !pixel.item) {
|
||
|
|
pixel.item = shopitem
|
||
|
|
}
|
||
|
|
if ((cursorprice != buildings.cursors[1] || !cursorprice) || (grandmaprice != buildings.grandmas[1] || !grandmaprice) || (farmprice != buildings.farms[1])) {
|
||
|
|
cursorprice = Math.floor(buildings.cursors[1])
|
||
|
|
grandmaprice = Math.floor(buildings.grandmas[1])
|
||
|
|
farmprice = Math.floor(buildings.farms[1])
|
||
|
|
}
|
||
|
|
var top = mousePos.y - Math.floor(mouseSize/2);
|
||
|
|
var bottom = mousePos.y + Math.floor(mouseSize/2);
|
||
|
|
var left = mousePos.x - Math.floor(mouseSize/2);
|
||
|
|
var right = mousePos.x + Math.floor(mouseSize/2);
|
||
|
|
if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && shopclicked === false && cookies >= (Math.floor(buildings[pixel.item][1]))) {
|
||
|
|
shopclicked = true
|
||
|
|
buildings[pixel.item][0] += 1
|
||
|
|
cookies -= (Math.round(buildings[pixel.item][1]))
|
||
|
|
buildings[pixel.item][1] = (buildings[pixel.item][2] * (1.15 ** buildings[pixel.item][0]))
|
||
|
|
}
|
||
|
|
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown === true && shopclicked === false) {
|
||
|
|
shopclicked = true
|
||
|
|
}
|
||
|
|
else if ((pixel.x >= left && pixel.x <= right && pixel.y >= top && pixel.y <= bottom) && mouseIsDown !== true && shopclicked === true) {
|
||
|
|
shopclicked = false
|
||
|
|
}
|
||
|
|
doDefaults(pixel);
|
||
|
|
},
|
||
|
|
tempHigh: 95,
|
||
|
|
stateHigh: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
category: "clicker",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 200,
|
||
|
|
burnInto: ["melted_chocolate","plain_cookie","plain_cookie"],
|
||
|
|
breakInto: ["crumb","crumb","crumb","crumb","crumb","chocolate","chocolate_powder"],
|
||
|
|
breakIntoColor: ["#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#bfac91","#CDBFAB","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
state: "solid",
|
||
|
|
density: 233.96,
|
||
|
|
isFood: true,
|
||
|
|
movable: false,
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.cookie_maker = {
|
||
|
|
color: ["#60a2c3","#2e80a9"],
|
||
|
|
colorKey: {
|
||
|
|
"l": "#60a2c3",
|
||
|
|
"r": "#2e80a9",
|
||
|
|
},
|
||
|
|
colorPattern: [
|
||
|
|
"rrrlll",
|
||
|
|
],
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (cookies > 0 && oldcookies < cookies) {
|
||
|
|
createdcookies = (cookies - oldcookies)
|
||
|
|
oldcookies = cookies
|
||
|
|
}
|
||
|
|
else if (oldcookies > cookies) {
|
||
|
|
oldcookies = cookies
|
||
|
|
}
|
||
|
|
if (isEmpty(pixel.x,pixel.y+1) && Math.random() > 0.75 && createdcookies > 0) {
|
||
|
|
createdcookies -= 1
|
||
|
|
createPixel("cookie", pixel.x, pixel.y+1)
|
||
|
|
}
|
||
|
|
},
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 2000,
|
||
|
|
movable: false,
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.cursor = {
|
||
|
|
color: ["#60a2c3","#2e80a9"],
|
||
|
|
colorKey: {
|
||
|
|
"l": "#60a2c3",
|
||
|
|
"r": "#2e80a9",
|
||
|
|
},
|
||
|
|
colorPattern: [
|
||
|
|
"rrrlll",
|
||
|
|
],
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
onPlace: function(pixel) {
|
||
|
|
cursorCount.push(pixel)
|
||
|
|
for (c = 0; c < cursorCount.length; c++) {
|
||
|
|
if (cursorCount[c] == pixel) {
|
||
|
|
pixel.cursorbuy = c
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
pixel.PixelTicks = pixelTicks
|
||
|
|
if (buildings.cursors[0] > pixel.cursorbuy) {
|
||
|
|
pixel.bought = true
|
||
|
|
}
|
||
|
|
if (pixel.bought === true) {
|
||
|
|
if (pixel.click > 0) {
|
||
|
|
pixel.click--
|
||
|
|
}
|
||
|
|
if ((pixel.PixelTicks - (pixel.cursorbuy * 1.5)) % 300 == 0) {
|
||
|
|
cookies += 1
|
||
|
|
pixel.color = "#aaaaaa"
|
||
|
|
pixel.click = 4
|
||
|
|
}
|
||
|
|
if ((!pixel.click || pixel.click === 0) && pixel.PixelTicks % 300 != 0 && pixel.PixelPreTicks % 300 != 0 && pixel.color != "#ffffff") {
|
||
|
|
pixel.color = "#ffffff"
|
||
|
|
}
|
||
|
|
if (pixel.cursorbuy === 143 && buildings.cursors[0] > 143) {
|
||
|
|
if ((pixel.PixelTicks - (pixel.cursorbuy * 1.5)) % 300 == 0) {
|
||
|
|
cookies += (buildings.cursors[0] - 143)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
movable: false,
|
||
|
|
tempHigh: 220,
|
||
|
|
stateHigh: "cooked_meat",
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 1080,
|
||
|
|
hardness: 0.1,
|
||
|
|
breakInto: "meat"
|
||
|
|
},
|
||
|
|
|
||
|
|
elements.grandma = {
|
||
|
|
color: "#ffdbac",
|
||
|
|
category: "clicker",
|
||
|
|
properties: {
|
||
|
|
dead: false,
|
||
|
|
dir: 1,
|
||
|
|
},
|
||
|
|
related: ["granbody","granhead"],
|
||
|
|
cooldown: defaultCooldown,
|
||
|
|
forceSaveColor: true,
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (isEmpty(pixel.x, pixel.y+1)) {
|
||
|
|
createPixel("granbody", pixel.x, pixel.y+1);
|
||
|
|
var color = pixel.color;
|
||
|
|
changePixel(pixel,"granhead");
|
||
|
|
pixel.color = color;
|
||
|
|
if (pixel.bodyColor) {
|
||
|
|
pixelMap[pixel.x][pixel.y+1].color = pixel.bodyColor;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (isEmpty(pixel.x, pixel.y-1)) {
|
||
|
|
createPixel("granhead", pixel.x, pixel.y-1);
|
||
|
|
pixelMap[pixel.x][pixel.y-1].color = pixel.color;
|
||
|
|
changePixel(pixel,"granbody");
|
||
|
|
if (pixel.bodyColor) {
|
||
|
|
pixel.color = pixel.bodyColor;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.granhead = {
|
||
|
|
color: "#ffdbac",
|
||
|
|
category: "clicker",
|
||
|
|
hidden: true,
|
||
|
|
density: 1080,
|
||
|
|
state: "solid",
|
||
|
|
conduct: .05,
|
||
|
|
temp: 37,
|
||
|
|
tempHigh: 150,
|
||
|
|
stateHigh: "cookie",
|
||
|
|
tempLow: -30,
|
||
|
|
stateLow: "frozen_meat",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 250,
|
||
|
|
burnInto: "cookie",
|
||
|
|
breakInto: ["cookie_dough","meat","bone"],
|
||
|
|
forceSaveColor: true,
|
||
|
|
reactions: {
|
||
|
|
"cancer": { elem1:"cancer", chance:0.005 },
|
||
|
|
"radiation": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.4 },
|
||
|
|
"neutron": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.03 },
|
||
|
|
"fallout": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.03 },
|
||
|
|
"plague": { elem1:"plague", chance:0.05 },
|
||
|
|
"oxygen": { elem2:"carbon_dioxide", chance:0.5 },
|
||
|
|
"beans": { elem2:[null,null,null,null,null,null,null,null,"stench"], chance:0.2 },
|
||
|
|
"sun": { elem1:"cooked_meat" },
|
||
|
|
"light": { stain1:"#825043" },
|
||
|
|
"bee": { stain1:"#cc564b", chance:0.2 },
|
||
|
|
"water": { elem2:"bubble", attr2:{"clone":"water"}, chance:0.001 },
|
||
|
|
"salt_water": { elem2:"bubble", attr2:{"clone":"salt_water"}, chance:0.001 },
|
||
|
|
"pool_water": { elem2:"bubble", attr2:{"clone":"pool_water"}, chance:0.001 },
|
||
|
|
"alcohol": { chance:0.2, attr1:{"panic":0} },
|
||
|
|
},
|
||
|
|
properties: {
|
||
|
|
dead: false
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
doHeat(pixel);
|
||
|
|
doBurning(pixel);
|
||
|
|
doElectricity(pixel);
|
||
|
|
if (pixel.dead) {
|
||
|
|
// Turn into rotten_meat if pixelTicks-dead > 500
|
||
|
|
if (pixelTicks-pixel.dead > 200 && Math.random() < 0.1) {
|
||
|
|
changePixel(pixel,"meat");
|
||
|
|
return
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Find the body
|
||
|
|
if (!isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "granbody") {
|
||
|
|
var body = pixelMap[pixel.x][pixel.y+1];
|
||
|
|
if (body.dead) { // If body is dead, kill head
|
||
|
|
pixel.dead = body.dead;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else { var body = null }
|
||
|
|
|
||
|
|
if (tryMove(pixel, pixel.x, pixel.y+1)) {
|
||
|
|
// create blood if severed 10% chance
|
||
|
|
if (isEmpty(pixel.x, pixel.y+1) && !pixel.dead && Math.random() < 0.1 && !pixel.charge) {
|
||
|
|
createPixel("cookie_dough", pixel.x, pixel.y+1);
|
||
|
|
// set dead to true 15% chance
|
||
|
|
if (Math.random() < 0.15) {
|
||
|
|
pixel.dead = pixelTicks;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// homeostasis
|
||
|
|
if (pixel.temp > 37) { pixel.temp -= 1; }
|
||
|
|
else if (pixel.temp < 37) { pixel.temp += 1; }
|
||
|
|
},
|
||
|
|
onChange: function(pixel) {
|
||
|
|
for (var i = 0; i < adjacentCoords.length; i++) {
|
||
|
|
var coord = adjacentCoords[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (!isEmpty(x,y,true) && pixelMap[x][y].panic !== undefined) {
|
||
|
|
pixelMap[x][y].panic += 20;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
onDelete: function(pixel) {
|
||
|
|
for (var i = 0; i < adjacentCoords.length; i++) {
|
||
|
|
var coord = adjacentCoords[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (!isEmpty(x,y,true) && pixelMap[x][y].panic !== undefined) {
|
||
|
|
pixelMap[x][y].panic += 20;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.granbody = {
|
||
|
|
color: "#b6effb",
|
||
|
|
category: "clicker",
|
||
|
|
hidden: true,
|
||
|
|
density: 1500,
|
||
|
|
state: "solid",
|
||
|
|
conduct: .05,
|
||
|
|
temp: 37,
|
||
|
|
tempHigh: 150,
|
||
|
|
stateHigh: "cookie",
|
||
|
|
tempLow: -30,
|
||
|
|
stateLow: "frozen_meat",
|
||
|
|
burn: 10,
|
||
|
|
burnTime: 250,
|
||
|
|
burnInto: "cookie",
|
||
|
|
breakInto: ["cookie_dough","meat","bone"],
|
||
|
|
forceSaveColor: true,
|
||
|
|
properties: {
|
||
|
|
dead: false,
|
||
|
|
dir: 1,
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (tryMove(pixel, pixel.x, pixel.y+1)) { // Fall
|
||
|
|
if (!isEmpty(pixel.x, pixel.y-2, true)) { // Drag head down
|
||
|
|
var headpixel = pixelMap[pixel.x][pixel.y-2];
|
||
|
|
if (headpixel.element === "granhead") {
|
||
|
|
if (isEmpty(pixel.x, pixel.y-1)) {
|
||
|
|
movePixel(pixelMap[pixel.x][pixel.y-2], pixel.x, pixel.y-1);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
swapPixels(pixelMap[pixel.x][pixel.y-2], pixelMap[pixel.x][pixel.y-1]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
doHeat(pixel);
|
||
|
|
doBurning(pixel);
|
||
|
|
doElectricity(pixel);
|
||
|
|
if (pixel.dead) {
|
||
|
|
// Turn into rotten_meat if pixelTicks-dead > 500
|
||
|
|
if (pixelTicks-pixel.dead > 200 && Math.random() < 0.1) {
|
||
|
|
changePixel(pixel,"meat");
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
// Find the head
|
||
|
|
if (!isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "granhead") {
|
||
|
|
var head = pixelMap[pixel.x][pixel.y-1];
|
||
|
|
if (head.dead) { // If head is dead, kill body
|
||
|
|
pixel.dead = head.dead;
|
||
|
|
}
|
||
|
|
else if (head.panic > 0) {
|
||
|
|
delete head.panic;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else { var head = null }
|
||
|
|
if (pixel.panic > 0) {
|
||
|
|
pixel.panic -= 0.1;
|
||
|
|
if (pixel.panic < 0) { pixel.panic = 0; }
|
||
|
|
else if (pixel.panic > 1) { pixel.panic = 1; }
|
||
|
|
}
|
||
|
|
|
||
|
|
if (isEmpty(pixel.x, pixel.y-1)) {
|
||
|
|
// create blood if decapitated 10% chance
|
||
|
|
if (Math.random() < 0.1 && !pixel.charge) {
|
||
|
|
createPixel("cookie_dough", pixel.x, pixel.y-1);
|
||
|
|
// set dead to true 15% chance
|
||
|
|
if (Math.random() < 0.15) {
|
||
|
|
pixel.dead = pixelTicks;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (head === null) { return }
|
||
|
|
else if (Math.random() < 0.1*(isEmpty(pixel.x, pixel.y+1) ? 1 : 1)) { // Move 10% chance
|
||
|
|
var movesToTry = [
|
||
|
|
[1*pixel.dir,0],
|
||
|
|
[1*pixel.dir,-1],
|
||
|
|
];
|
||
|
|
let moved = false;
|
||
|
|
// While movesToTry is not empty, tryMove(pixel, x, y) with a random move, then remove it. if tryMove returns true, break.
|
||
|
|
while (movesToTry.length > 0) {
|
||
|
|
var move = movesToTry.splice(Math.floor(Math.random() * movesToTry.length), 1)[0];
|
||
|
|
if (isEmpty(pixel.x+move[0], pixel.y+move[1]-1)) {
|
||
|
|
var origx = pixel.x+move[0];
|
||
|
|
var origy = pixel.y+move[1];
|
||
|
|
if (tryMove(pixel, pixel.x+move[0], pixel.y+move[1]) && pixel.x===origx && pixel.y===origy) {
|
||
|
|
movePixel(head, head.x+move[0], head.y+move[1]);
|
||
|
|
moved = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// 15% chance to change direction
|
||
|
|
if (Math.random() < 0.15 || !moved) {
|
||
|
|
pixel.dir *= -1;
|
||
|
|
}
|
||
|
|
// homeostasis
|
||
|
|
if (pixel.temp > 37) { pixel.temp -= 1; }
|
||
|
|
else if (pixel.temp < 37) { pixel.temp += 1; }
|
||
|
|
}
|
||
|
|
pixel.PixelTicks = pixelTicks
|
||
|
|
if (pixel.PixelTicks % 30 == 0 && pixel.dead === false) {
|
||
|
|
cookies += 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.grandma_maker = {
|
||
|
|
color: "#a0522d",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
onPlace: function(pixel) {
|
||
|
|
grandmaCount.push(pixel)
|
||
|
|
for (g = 0; g < grandmaCount.length; g++) {
|
||
|
|
if (grandmaCount[g] == pixel) {
|
||
|
|
pixel.grandmalevel = g
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (buildings.grandmas[0] > pixel.grandmalevel && isEmpty(pixel.x,pixel.y+1) && Math.random() > 0.5 && pixel.created !== true) {
|
||
|
|
pixel.created = true
|
||
|
|
createPixel("grandma", pixel.x, pixel.y+1)
|
||
|
|
}
|
||
|
|
},
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 2000,
|
||
|
|
movable: false,
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.cookie_crop = {
|
||
|
|
color: "#C4966C",
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
tick: function(pixel) {
|
||
|
|
pixel.PixelTicks = pixelTicks
|
||
|
|
if (pixel.h === undefined) {
|
||
|
|
pixel.h = 0
|
||
|
|
}
|
||
|
|
if (pixel.h < 2) {
|
||
|
|
if (!tryMove(pixel,pixel.x,pixel.y+1)) {
|
||
|
|
if (pixel.temp < 100) {
|
||
|
|
if (isEmpty(pixel.x,pixel.y-1) && tryMove(pixel,pixel.x,pixel.y-1)) {
|
||
|
|
createPixel("cookie_crop",pixel.x,pixel.y+1);
|
||
|
|
pixelMap[pixel.x][pixel.y+1].h = 4
|
||
|
|
pixel.h++
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (pixel.h === 2) {
|
||
|
|
if (pixel.temp < 100) {
|
||
|
|
if (isEmpty(pixel.x+1,pixel.y) && pixel.leftPetal !== true) {
|
||
|
|
createPixel("cookie_crop",pixel.x+1,pixel.y);
|
||
|
|
pixelMap[pixel.x+1][pixel.y].h = 4
|
||
|
|
pixelMap[pixel.x+1][pixel.y].color = "#942e8c"
|
||
|
|
pixel.leftPetal = true
|
||
|
|
}
|
||
|
|
if (isEmpty(pixel.x-1,pixel.y) && pixel.rightPetal !== true) {
|
||
|
|
createPixel("cookie_crop",pixel.x-1,pixel.y);
|
||
|
|
pixelMap[pixel.x-1][pixel.y].h = 4
|
||
|
|
pixelMap[pixel.x-1][pixel.y].color = "#942e8c"
|
||
|
|
pixel.rightPetal = true
|
||
|
|
}
|
||
|
|
if (isEmpty(pixel.x,pixel.y-1)) {
|
||
|
|
createPixel("flower_cookie",pixel.x,pixel.y-1);
|
||
|
|
pixel.h = 3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (pixel.h === 3) {
|
||
|
|
if (pixel.temp < 100) {
|
||
|
|
if (isEmpty(pixel.x+1,pixel.y) && pixel.leftPetal !== true) {
|
||
|
|
createPixel("cookie_crop",pixel.x+1,pixel.y);
|
||
|
|
pixelMap[pixel.x+1][pixel.y].h = 4
|
||
|
|
pixelMap[pixel.x+1][pixel.y].color = "#942e8c"
|
||
|
|
pixel.leftPetal = true
|
||
|
|
}
|
||
|
|
if (isEmpty(pixel.x-1,pixel.y) && pixel.rightPetal !== true) {
|
||
|
|
createPixel("cookie_crop",pixel.x-1,pixel.y);
|
||
|
|
pixelMap[pixel.x-1][pixel.y].h = 4
|
||
|
|
pixelMap[pixel.x-1][pixel.y].color = "#942e8c"
|
||
|
|
pixel.rightPetal = true
|
||
|
|
}
|
||
|
|
if (pixel.color != "#734e39") {
|
||
|
|
pixel.color = "#734e39"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
doDefaults(pixel);
|
||
|
|
},
|
||
|
|
tempHigh: 200,
|
||
|
|
stateHigh: "cookie",
|
||
|
|
burn: 5,
|
||
|
|
burnTime: 100,
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 1500,
|
||
|
|
cooldown: defaultCooldown,
|
||
|
|
seed: true
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.flower_cookie = {
|
||
|
|
color: ["#C4966C","#C0946B","#C4966C","#C0946B","#4d2818","#3b1b0d","#33160a"],
|
||
|
|
behavior: [
|
||
|
|
"XX|ST:cookie_crop|XX",
|
||
|
|
"ST:cookie_crop|XX|ST:cookie_crop",
|
||
|
|
"M2|ST:cookie_crop AND M1|M2",
|
||
|
|
],
|
||
|
|
tick: function(pixel) {
|
||
|
|
pixel.PixelTicks = pixelTicks
|
||
|
|
if (pixel.PixelTicks % 30 == 0 && !isEmpty(pixel.x,pixel.y+1, true)) {
|
||
|
|
cookies += 8
|
||
|
|
}
|
||
|
|
},
|
||
|
|
tempHigh: 200,
|
||
|
|
stateHigh: "cookie",
|
||
|
|
burn: 5,
|
||
|
|
burnTime: 100,
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 1500,
|
||
|
|
cooldown: defaultCooldown,
|
||
|
|
seed: true
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.farm_deployer = {
|
||
|
|
color: ["#76552b","#5c4221","#573c1a","#6b481e"],
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
onPlace: function(pixel) {
|
||
|
|
farmCount.push(pixel)
|
||
|
|
for (f = 0; f < farmCount.length; f++) {
|
||
|
|
if (farmCount[f] == pixel) {
|
||
|
|
pixel.farmbuy = f
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (buildings.farms[0] > pixel.farmbuy) {
|
||
|
|
pixel.bought = true
|
||
|
|
}
|
||
|
|
if (pixel.bought === true) {
|
||
|
|
changePixel(pixel, "cookie_crop")
|
||
|
|
}
|
||
|
|
},
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 2000,
|
||
|
|
movable: false,
|
||
|
|
}
|
||
|
|
|
||
|
|
elements.background = {
|
||
|
|
color: ["#60a2c3","#2e80a9"],
|
||
|
|
colorKey: {
|
||
|
|
"l": "#60a2c3",
|
||
|
|
"r": "#2e80a9",
|
||
|
|
},
|
||
|
|
colorPattern: [
|
||
|
|
"rrrlll",
|
||
|
|
],
|
||
|
|
onSelect: function() {
|
||
|
|
logMessage("Draw a pipe, wait for walls to appear, then erase the exit hole.");
|
||
|
|
},
|
||
|
|
tick: function(pixel) {
|
||
|
|
if (!pixel.stage && pixelTicks-pixel.start > 60) {
|
||
|
|
for (var i = 0; i < squareCoords.length; i++) {
|
||
|
|
var coord = squareCoords[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (!isEmpty(x,y,true) && elements[pixelMap[x][y].element].movable) {
|
||
|
|
deletePixel(x,y)
|
||
|
|
}
|
||
|
|
if (isEmpty(x,y)) {
|
||
|
|
createPixel("pipe_wall",x,y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
pixel.stage = 1;
|
||
|
|
}
|
||
|
|
else if (pixel.stage === 1 && pixelTicks-pixel.start > 70) { //uninitialized
|
||
|
|
for (var i = 0; i < adjacentCoords.length; i++) {
|
||
|
|
var coord = adjacentCoords[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (isEmpty(x,y)) {
|
||
|
|
pixel.stage = 2; //blue
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (pixel.stage > 1 && pixelTicks % 3 === pixel.stage-2) { //initialized
|
||
|
|
for (var i = 0; i < squareCoords.length; i++) {
|
||
|
|
var coord = squareCoords[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (!isEmpty(x,y,true) && pixelMap[x][y].element === pixel.element) {
|
||
|
|
var newPixel = pixelMap[x][y];
|
||
|
|
if (newPixel.stage === 1) {
|
||
|
|
var newColor;
|
||
|
|
switch (pixel.stage) {
|
||
|
|
case 2: newPixel.stage = 3; newColor = "#003600"; break; //green
|
||
|
|
case 3: newPixel.stage = 4; newColor = "#360000"; break; //red
|
||
|
|
case 4: newPixel.stage = 2; newColor = "#000036"; break; //blue
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var moved = false;
|
||
|
|
shuffleArray(squareCoordsShuffle);
|
||
|
|
for (var i = 0; i < squareCoordsShuffle.length; i++) {
|
||
|
|
var coord = squareCoordsShuffle[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (!isEmpty(x,y,true)) {
|
||
|
|
var newPixel = pixelMap[x][y];
|
||
|
|
if (newPixel.element === pixel.element) {
|
||
|
|
var nextStage;
|
||
|
|
switch (pixel.stage) {
|
||
|
|
case 2: nextStage = 4; break; //green
|
||
|
|
case 3: nextStage = 2; break; //red
|
||
|
|
case 4: nextStage = 3; break; //blue
|
||
|
|
}
|
||
|
|
if (pixel.con && !newPixel.con && newPixel.stage === nextStage) { //transfer to adjacent pipe
|
||
|
|
newPixel.con = pixel.con;
|
||
|
|
newPixel.con.x = newPixel.x;
|
||
|
|
newPixel.con.y = newPixel.y;
|
||
|
|
pixel.con = null;
|
||
|
|
moved = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else if (!pixel.con && elements[newPixel.element].movable) { //suck up pixel
|
||
|
|
pixel.con = newPixel;
|
||
|
|
deletePixel(newPixel.x,newPixel.y);
|
||
|
|
pixel.con.x = pixel.x;
|
||
|
|
pixel.con.y = pixel.y;
|
||
|
|
pixel.con.del;
|
||
|
|
moved = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (pixel.con && !moved) { // move to same stage if none other
|
||
|
|
for (var i = 0; i < squareCoordsShuffle.length; i++) {
|
||
|
|
var coord = squareCoordsShuffle[i];
|
||
|
|
var x = pixel.x+coord[0];
|
||
|
|
var y = pixel.y+coord[1];
|
||
|
|
if (isEmpty(x,y)) {
|
||
|
|
delete pixel.con.del;
|
||
|
|
pixel.con.x = x;
|
||
|
|
pixel.con.y = y;
|
||
|
|
pixelMap[x][y] = pixel.con;
|
||
|
|
currentPixels.push(pixel.con);
|
||
|
|
pixel.con = null;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
if (!isEmpty(x,y,true) && pixelMap[x][y].element === pixel.element) {
|
||
|
|
var newPixel = pixelMap[x][y];
|
||
|
|
if (pixel.con && !newPixel.con && newPixel.stage === pixel.stage) {
|
||
|
|
newPixel.con = pixel.con;
|
||
|
|
newPixel.con.x = newPixel.x;
|
||
|
|
newPixel.con.y = newPixel.y;
|
||
|
|
pixel.con = null;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
doDefaults(pixel);
|
||
|
|
},
|
||
|
|
movable: false,
|
||
|
|
canContain: true,
|
||
|
|
behavior: behaviors.WALL,
|
||
|
|
tempHigh: 248,
|
||
|
|
stateHigh: ["fire","fire","fire","fire","fire","ash"],
|
||
|
|
burn: 70,
|
||
|
|
burnTime: 300,
|
||
|
|
burnInto: ["fire","fire","fire","fire","fire","ash"],
|
||
|
|
category: "clicker",
|
||
|
|
state: "solid",
|
||
|
|
density: 1201,
|
||
|
|
breakInto: "confetti",
|
||
|
|
breakIntoColor: ["#ffffff","#e6e6e6","#dbdbdb"]
|
||
|
|
}
|
||
|
|
|
||
|
|
updateStats = function() {
|
||
|
|
var statsDiv = document.getElementById("stats");
|
||
|
|
var stats = "<span id='stat-pos' class='stat'>x"+mousePos.x+",y"+mousePos.y+"</span>";
|
||
|
|
stats += "<span id='stat-pixels' class='stat"+ (currentPixels.length >= Math.min(maxPixelCount,(height+1)*(width+1)) ? " redText" : "") +"'>Pxls:" + currentPixels.length+"</span>";
|
||
|
|
stats += "<span id='stat-tps' class='stat'>" + tps+"tps</span>";
|
||
|
|
stats += "<span id='stat-ticks' class='stat'>" + pixelTicks+"</span>";
|
||
|
|
stats += "<span id='stat-cookies' class='stat'>Cookies:" + cookies+"</span>";
|
||
|
|
if ((typeof pixelMap).length === 9) { return; }
|
||
|
|
if (pixelMap[mousePos.x] !== undefined) {
|
||
|
|
var currentPixel = pixelMap[mousePos.x][mousePos.y];
|
||
|
|
if (currentPixel !== undefined) {
|
||
|
|
stats += "<span id='stat-element' class='stat'>"+langKey("gui.stats.elem","Elem")+":<span>"+(elements[currentPixel.element].name || currentPixel.element).toUpperCase()+"</span></span>";
|
||
|
|
stats += "<span id='stat-temperature' class='stat'>"+langKey("gui.stats.temp","Temp")+":"+formatTemp(currentPixel.temp)+"</span>";
|
||
|
|
if (currentPixel.charge) {
|
||
|
|
stats += "<span id='stat-charge' class='stat'>C"+parseFloat(currentPixel.charge)+"</span>";
|
||
|
|
}
|
||
|
|
if (currentPixel.burning) {
|
||
|
|
stats += "<span id='stat-burning' class='stat'>"+langKey("gui.stats.burning","Burning")+"</span>";
|
||
|
|
}
|
||
|
|
if (elements[currentPixel.element].hoverStat) {
|
||
|
|
stats += "<span id='stat-hover' class='stat'>"+elements[currentPixel.element].hoverStat(currentPixel).toString().replaceAll("<","<")+"</span>";
|
||
|
|
}
|
||
|
|
else if (elements[currentElement].toolHoverStat) {
|
||
|
|
stats += "<span id='stat-hover' class='stat'>"+elements[currentElement].toolHoverStat(currentPixel).toString().replaceAll("<","<")+"</span>";
|
||
|
|
}
|
||
|
|
else if (currentPixel.clone) {
|
||
|
|
stats += "<span id='stat-clone' class='stat'>"+currentPixel.clone.toString().toUpperCase().replaceAll("<","<")+"</span>";
|
||
|
|
}
|
||
|
|
else if (currentPixel.con && currentPixel.con.element) {
|
||
|
|
stats += "<span id='stat-clone' class='stat'>"+currentPixel.con.element.toString().toUpperCase().replaceAll("<","<")+"</span>";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (shiftDown) {
|
||
|
|
stats += "<span id='stat-shift' class='stat'>"+shiftDownTypes[shiftDown]+"</span>";
|
||
|
|
}
|
||
|
|
// If the view is not null, show the view in all caps
|
||
|
|
if (view !== null) {
|
||
|
|
stats += "<span id='stat-view' class='stat'>"+(viewInfo[view] ? viewInfo[view].name : view)+"</span>";
|
||
|
|
}
|
||
|
|
statsDiv.innerHTML = stats;
|
||
|
|
}
|
||
|
|
|
||
|
|
buildingProduction = function() {
|
||
|
|
for (var i = 0; i <= cursorCount.length; i++) {
|
||
|
|
if (i >= (cursorCount.length - 1) && cursorCount[i - 1] && cursorCount[i - 1].bought == true) {
|
||
|
|
if ((pixelTicks - (buildings.cursors[i] * 1.5)) % 300 == 0) {
|
||
|
|
cookies += (buildings.cursors[0] - (i + 1))
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
for (var i = 0; i <= (grandmaCount.length - 1); i++) {
|
||
|
|
if (i >= (grandmaCount.length - 1) && grandmaCount[i - 1] && grandmaCount[i - 1].created == true) {
|
||
|
|
if (pixelTicks % 30 == 0) {
|
||
|
|
cookies += (buildings.grandmas[0] - (i + 1))
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
for (var i = 0; i <= farmCount.length; i++) {
|
||
|
|
if (i >= (farmCount.length - 1) && farmCount[i - 1] && farmCount[i - 1].bought == true) {
|
||
|
|
if (pixelTicks % 30 == 0) {
|
||
|
|
cookies += ((buildings.farms[0] - (i + 1)) * 8)
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
runEveryTick(buildingProduction)
|
||
|
|
|
||
|
|
elements.dough.reactions.sugar = { elem1:"cookie_dough", elem2: null, chance:0.5}
|
||
|
|
elements.dough.reactions.chocolate = { elem1:"chocolate_chip_cookie_dough", elem2: null, chance:0.5}
|
||
|
|
elements.dough.reactions.chocolate_powder = { elem1:"chocolate_chip_cookie_dough", elem2: null, chance:0.5}
|