1891 lines
79 KiB
JavaScript
1891 lines
79 KiB
JavaScript
elements.real_skin = {
|
|
color: "#f7ead0",
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if ((pixel.temp > 35 || pixel.temp < 10) && Math.random() < 0.005) {
|
|
for (var i = 0; i < adjacentCoords.length; i++) {
|
|
var coords = adjacentCoords[i];
|
|
var x = pixel.x + coords[0];
|
|
var y = pixel.y + coords[1];
|
|
if (isEmpty(x,y)) {
|
|
if (pixel.temp > 35) {
|
|
pixel.temp -= 20;
|
|
createPixel("salt_water",x,y);
|
|
break;
|
|
}
|
|
pixel.temp += 20;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (pixel.temp < 15 && Math.random() < 0.1) {
|
|
pixel.temp += 1;
|
|
}
|
|
doDefaults(pixel);
|
|
if (Math.random() > 0.92 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
if (Math.random() < 0.75) {
|
|
changePixel(pixel,"dust");
|
|
}
|
|
else {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","meat","rotten_meat","cooked_meat","flesh"], chance:0.2 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.flesh = {
|
|
color: ["#9e4839","#ba6449"],
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.92 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","blood","fat","meat","rotten_meat","cooked_meat"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.eye = {
|
|
color: "#451800",
|
|
category: "biology",
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
doHeat(pixel);
|
|
doBurning(pixel);
|
|
doElectricity(pixel);
|
|
if (Math.random() > 0.895 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.light.id && Math.random() > 0.5) {
|
|
pixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
pixel.saw = false
|
|
hitPixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye_nerve.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.saw = false
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.light.id && Math.random() > 0.5) {
|
|
pixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
pixel.saw = false
|
|
hitPixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye_nerve.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.saw = false
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.light.id && Math.random() > 0.5) {
|
|
pixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
pixel.saw = false
|
|
hitPixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye_nerve.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.saw = false
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.light.id && Math.random() > 0.5) {
|
|
pixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
pixel.saw = false
|
|
hitPixel.saw = true
|
|
}
|
|
else if (pixel.saw === true && elements[hitPixel.element].id === elements.eye_nerve.id && Math.random() > (1 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.saw = false
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
tempHigh: 200,
|
|
stateHigh: ["cooked_meat","salt_water","blood"],
|
|
tempLow: -25,
|
|
stateLow: "salt_water",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
conduct: .05,
|
|
burnInto: ["cooked_meat","salt_water","blood"],
|
|
breakInto: ["blood","blood","blood","blood","cerebrospinal_fluid","cerebrospinal_fluid","salt_water","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
saw: false,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.brain = {
|
|
color: ["#fce3e3","#deb6c5","#f5ced5","#e87b8f"],
|
|
category: "biology",
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
doHeat(pixel);
|
|
doBurning(pixel);
|
|
doElectricity(pixel);
|
|
if (Math.random() > 0.85 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.nerve.id && Math.random() > (1.25 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.chargeCD = 8
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.nerve.id && Math.random() > (1.25 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.chargeCD = 8
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.nerve.id && Math.random() > (1.25 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.chargeCD = 8
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
doElectricity(hitPixel);
|
|
if (elements[hitPixel.element].id === elements.nerve.id && Math.random() > (1.25 - ((pixel.nutrition + pixel.oxygen) / 2000))) {
|
|
if (!hitPixel.charge) {
|
|
hitPixel.charge = 0.1
|
|
}
|
|
else if (hitPixel.charge) {
|
|
hitPixel.charge += 0.1
|
|
}
|
|
pixel.chargeCD = 8
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .5,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.amygdala = {
|
|
color: ["#B33E93","#B33E93","#f5ced5","#e87b8f"],
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
doHeat(pixel);
|
|
doBurning(pixel);
|
|
doElectricity(pixel);
|
|
if (Math.random() > 0.895 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (pixel.temp > 35) { pixel.temp -= 1; }
|
|
else if (pixel.temp < 15) { pixel.temp += 1; }
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .8,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.eye_nerve = {
|
|
color: "#B33E93",
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.895 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .8,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.nerve = {
|
|
color: "#B33E93",
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.895 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .8,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.throat_lining = {
|
|
color: "#bc6157",
|
|
category: "biology",
|
|
behavior: [
|
|
"XX|DL:stomach_acid%5|XX",
|
|
"DL:stomach_acid%5|XX|DL:stomach_acid%5",
|
|
"XX|DL:stomach_acid%5|XX",
|
|
],
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.9 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","slime","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
isBio: true,
|
|
movable: false,
|
|
}
|
|
|
|
elements.intestines = {
|
|
color: "#bc6157",
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.9 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].id === elements.digested_material.id && Math.random() > 0.95) {
|
|
changePixel(hitPixel,"poop");
|
|
pixel.nutrition += (hitPixel.nutrition)
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.25) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].id === elements.digested_material.id && Math.random() > 0.95) {
|
|
changePixel(hitPixel,"poop");
|
|
pixel.nutrition += (hitPixel.nutrition)
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.25) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].id === elements.digested_material.id && Math.random() > 0.95) {
|
|
changePixel(hitPixel,"poop");
|
|
pixel.nutrition += (hitPixel.nutrition)
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.25) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].id === elements.digested_material.id && Math.random() > 0.95) {
|
|
changePixel(hitPixel,"poop");
|
|
pixel.nutrition += (hitPixel.nutrition)
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.25) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
movable: false,
|
|
isBio: true
|
|
}
|
|
|
|
elements.lungs = {
|
|
color: "#d4aaab",
|
|
category: "biology",
|
|
behavior: behaviors.WALL,
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.9 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].id === elements.oxygen.id && Math.random() > 0.95) {
|
|
if (Math.random() > 0.75) {
|
|
changePixel(hitPixel,"carbon_dioxide");
|
|
}
|
|
pixel.oxygen += 100
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].id === elements.oxygen.id && Math.random() > 0.95) {
|
|
if (Math.random() > 0.75) {
|
|
changePixel(hitPixel,"carbon_dioxide");
|
|
}
|
|
pixel.oxygen += 100
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].id === elements.oxygen.id && Math.random() > 0.95) {
|
|
if (Math.random() > 0.75) {
|
|
changePixel(hitPixel,"carbon_dioxide");
|
|
}
|
|
pixel.oxygen += 100
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].id === elements.oxygen.id && Math.random() > 0.95) {
|
|
if (Math.random() > 0.75) {
|
|
changePixel(hitPixel,"carbon_dioxide");
|
|
}
|
|
pixel.oxygen += 100
|
|
}
|
|
else if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","carbon_dioxide","meat","rotten_meat","cooked_meat","flesh","ash","carbon_dioxide","meat","rotten_meat","cooked_meat","flesh","ash","oxygen","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
movable: false,
|
|
isBio: true
|
|
}
|
|
|
|
elements.stomach_lining = {
|
|
color: "#be5c4b",
|
|
category: "biology",
|
|
behavior: [
|
|
"XX|CR:stomach_acid%5|XX",
|
|
"CR:stomach_acid%5|XX|CR:stomach_acid%5",
|
|
"XX|CR:stomach_acid%5|XX",
|
|
],
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.9 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
movable: false,
|
|
isBio: true
|
|
}
|
|
|
|
elements.stomach_valve = {
|
|
color: "#c8846f",
|
|
category: "biology",
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.9 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
else if (elements[hitPixel.element].id === elements.digested_material.id && Math.random() > 0.75) {
|
|
if (isEmpty(pixel.x, pixel.y+1)) {
|
|
tryMove(hitPixel,pixel.x,pixel.y+1);
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
movable: false,
|
|
isBio: true
|
|
}
|
|
|
|
elements.sphincter = {
|
|
color: "#c8846f",
|
|
category: "biology",
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.9 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"rotten_meat");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
else if (elements[hitPixel.element].id === elements.poop.id && Math.random() > 0.75) {
|
|
if (isEmpty(pixel.x, pixel.y+1)) {
|
|
tryMove(hitPixel,pixel.x,pixel.y+1);
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
density: 2710,
|
|
state: "solid",
|
|
conduct: .05,
|
|
tempHigh: 200,
|
|
stateHigh: "cooked_meat",
|
|
tempLow: -25,
|
|
stateLow: "frozen_meat",
|
|
burn: 10,
|
|
burnTime: 250,
|
|
burnInto: "cooked_meat",
|
|
breakInto: ["blood","meat"],
|
|
forceSaveColor: true,
|
|
reactions: {
|
|
"cancer": { elem1:"cancer", chance:0.0005 },
|
|
"radiation": { elem1:["ash","steam","poop","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 },
|
|
},
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
movable: false,
|
|
isBio: true
|
|
}
|
|
|
|
elements.digested_material = {
|
|
color: "#B5C306",
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"SW:stomach_acid%3 AND M2%25|XX|SW:stomach_acid%3 AND M2%25",
|
|
"SW:stomach_acid%5 AND M2%50|SW:stomach_acid%10 AND M1|SW:stomach_acid%5 AND M2%50",
|
|
],
|
|
properties: {
|
|
nutrition: 100,
|
|
},
|
|
category: "biology",
|
|
state: "solid",
|
|
density: 200,
|
|
conduct: 0.25,
|
|
stain: 0.01,
|
|
darkText: true,
|
|
tempHigh: 90,
|
|
stateHigh: "dirty_water",
|
|
tempLow: -30,
|
|
stateLow: "dirty_ice",
|
|
}
|
|
|
|
elements.poop = {
|
|
color: "#593001",
|
|
behavior: behaviors.LIQUID,
|
|
reactions: {
|
|
"water": { elem1:null, elem2:"dirty_water", chance:0.02 },
|
|
"salt_water": { elem1:null, elem2:"dirty_water", chance:0.02 },
|
|
"sugar_water": { elem1:null, elem2:"dirty_water", chance:0.02 },
|
|
"plant": { elem2:"dead_plant", chance:0.02},
|
|
},
|
|
category: "biology",
|
|
state: "liquid",
|
|
viscosity: 1000,
|
|
density: 200,
|
|
conduct: 0.25,
|
|
darkText: true,
|
|
tempHigh: 160,
|
|
stateHigh: ["ash","ash","carbon_dioxide"],
|
|
burn: 5,
|
|
burnTime: 30,
|
|
burnInto: ["ash","ash","carbon_dioxide","fire","fire"],
|
|
tempLow: -30,
|
|
stain: 0.03,
|
|
stateLowName: "frozen_poop",
|
|
}
|
|
|
|
elements.stomach_acid = {
|
|
color: ["#b5cf91","#288f2a"],
|
|
behavior: [
|
|
"XX|DB%1|XX",
|
|
"DB%1 AND M2|DL%0.005|DB%1 AND M2",
|
|
"DB%1 AND M2|DB%2 AND M1|DB%1 AND M2",
|
|
],
|
|
ignore: ["throat_lining","stomach_lining","stomach_valve","slime","digested_material","glass","rad_glass","glass_shard","rad_shard","stained_glass","baked_clay","acid_gas","neutral_acid","acid_cloud","water","salt_water","sugar_water","dirty_water","copper","gold","porcelain","plastic","bead","microplastic","molten_plastic","pool_water","chlorine","hydrogen","gold_coin","silver","nickel","calcium","bone","earthquake","tornado","tsunami","liquid_light","sensor"],
|
|
reactions: {
|
|
"water": { elem1:null, elem2:"dirty_water", chance:0.02 },
|
|
"salt_water": { elem1:null, elem2:"water", chance:0.02 },
|
|
"sugar_water": { elem1:null, elem2:"water", chance:0.02 },
|
|
"plant": { elem2:"digested_material", attr2:{"nutrition":"10"}, chance:0.02},
|
|
"tree_branch": { elem1:null, elem2:"wood", chance:0.02 },
|
|
"sugar": { elem2:"digested_material", attr2:{"nutrition":"30"}, chance:0.02 },
|
|
"dead_plant": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"meat": { elem2:"digested_material", attr2:{"nutrition":"30"}, chance:0.02 },
|
|
"cooked_meat": { elem2:"digested_material", attr2:{"nutrition":"60"}, chance:0.02 },
|
|
"rotten_meat": { elem2:["digested_material","ammonia",null,null,null], attr2:{"nutrition":"-10"}, chance:0.02 },
|
|
"cured_meat": { elem2:"digested_material", attr2:{"nutrition":"50"}, chance:0.02 },
|
|
"cheese": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"lettuce": { elem2:"digested_material", attr2:{"nutrition":"40"}, chance:0.02 },
|
|
"herb": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"toast": { elem2:"digested_material", attr2:{"nutrition":"40"}, chance:0.02 },
|
|
"bread": { elem2:"digested_material", attr2:{"nutrition":"40"}, chance:0.02 },
|
|
"hard_yolk": { elem2:"digested_material", attr2:{"nutrition":"40"}, chance:0.02 },
|
|
"yolk": { elem2:"digested_material", attr2:{"nutrition":"-10"}, chance:0.02 },
|
|
"milk": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"crumb": { elem2:"digested_material", attr2:{"nutrition":"5"}, chance:0.02 },
|
|
"pickle": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"salt": { elem2:"digested_material", attr2:{"nutrition":"5"}, chance:0.02 },
|
|
"ant": { elem2:"digested_material", attr2:{"nutrition":"-10"}, chance:0.02 },
|
|
"bee": { elem2:"digested_material", attr2:{"nutrition":"-10"}, chance:0.02 },
|
|
"spider": { elem2:"digested_material", attr2:{"nutrition":"-10"}, chance:0.02 },
|
|
"egg": { elem2:"digested_material", attr2:{"nutrition":"-15"}, chance:0.02 },
|
|
"soda": { elem2:"digested_material", attr2:{"nutrition":"20"}, chance:0.02 },
|
|
"sap": { elem2:"digested_material", attr2:{"nutrition":"-5"}, chance:0.02 },
|
|
"juice": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"mayo": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"nut_butter": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"ketchup": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"jelly": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"bleach": { elem2:"digested_material", attr2:{"nutrition":"-500"}, chance:0.02 },
|
|
"poison": { elem2:"digested_material", attr2:{"nutrition":"-750"}, chance:0.02 },
|
|
"soap": { elem2:"digested_material", attr2:{"nutrition":"-20"}, chance:0.02 },
|
|
"mercury": { elem2:"digested_material", attr2:{"nutrition":"-500"}, chance:0.02 },
|
|
"coffee": { elem2:"digested_material", attr2:{"nutrition":"20"}, chance:0.02 },
|
|
"tomato": { elem2:"digested_material", attr2:{"nutrition":"45"}, chance:0.02 },
|
|
"grape": { elem2:"digested_material", attr2:{"nutrition":"45"}, chance:0.02 },
|
|
"beans": { elem2:"digested_material", attr2:{"nutrition":"40"}, chance:0.02 },
|
|
"sauce": { elem2:"digested_material", attr2:{"nutrition":"45"}, chance:0.02 },
|
|
"butter": { elem2:"digested_material", attr2:{"nutrition":"15"}, chance:0.02 },
|
|
"melted_cheese": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"melted_chocolate": { elem2:"digested_material", attr2:{"nutrition":"25"}, chance:0.02 },
|
|
"melted_butter": { elem2:"digested_material", attr2:{"nutrition":"10"}, chance:0.02 },
|
|
"chocolate": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"rice": { elem2:"digested_material", attr2:{"nutrition":"35"}, chance:0.02 },
|
|
"dough": { elem2:"digested_material", attr2:{"nutrition":"5"}, chance:0.02 },
|
|
"batter": { elem2:"digested_material", attr2:{"nutrition":"5"}, chance:0.02 },
|
|
"baked_batter": { elem2:"digested_material", attr2:{"nutrition":"45"}, chance:0.02 },
|
|
},
|
|
category: "biology",
|
|
tempHigh: 110,
|
|
stateHigh: "acid_gas",
|
|
tempLow: -58.88,
|
|
burn: 30,
|
|
burnTime: 1,
|
|
state: "liquid",
|
|
density: 1049,
|
|
stain: -0.1
|
|
}
|
|
|
|
elements.real_bone = {
|
|
color: "#d9d9d9",
|
|
behavior: behaviors.WALL,
|
|
reactions: {
|
|
"water": { elem2:"broth", tempMin:70 },
|
|
"salt_water": { elem2:"broth", tempMin:70 },
|
|
"sugar_water": { elem2:"broth", tempMin:70 },
|
|
"seltzer": { elem2:"broth", tempMin:70 },
|
|
},
|
|
hoverStat: function(pixel) {
|
|
return "Nutr:"+pixel.nutrition+" O2:"+pixel.oxygen
|
|
},
|
|
tick: function(pixel) {
|
|
if (Math.random() > 0.95 && pixel.nutrition > 0 && pixel.oxygen > 0) {
|
|
pixel.nutrition--
|
|
pixel.oxygen--
|
|
}
|
|
if (Math.random() > 0.5 && (pixel.nutrition < 1 || pixel.oxygen < 1)) {
|
|
changePixel(pixel,"bone");
|
|
}
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
category:"biology",
|
|
tempHigh: 260,
|
|
stateHigh: "bone",
|
|
tempLow: -36,
|
|
stateLow: "bone",
|
|
state: "solid",
|
|
density: 1900,
|
|
hardness: 0.5,
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
breakInto: ["quicklime","quicklime","quicklime","blood","bone","bone","bone","bone","bone","bone"],
|
|
movable: false,
|
|
isBio: true
|
|
}
|
|
|
|
elements.cerebrospinal_fluid = {
|
|
color: "#CBC3E3",
|
|
behavior: behaviors.LIQUID,
|
|
tick: function(pixel) {
|
|
if (pixel.nutrition === null) {
|
|
pixel.nutrition = 1000
|
|
}
|
|
if (pixel.oxygen === null) {
|
|
pixel.oxygen = 1000
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y-1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y-1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x, pixel.y+1, true)) {
|
|
var hitPixel = pixelMap[pixel.x][pixel.y+1]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x-1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x-1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+1, pixel.y, true)) {
|
|
var hitPixel = pixelMap[pixel.x+1][pixel.y]
|
|
if (elements[hitPixel.element].isBio === true && Math.random() > 0.5) {
|
|
if (hitPixel.oxygen < pixel.oxygen) {
|
|
hitPixel.oxygen += 10
|
|
pixel.oxygen -= 10
|
|
}
|
|
if (hitPixel.nutrition < pixel.nutrition) {
|
|
hitPixel.nutrition += 10
|
|
pixel.nutrition -= 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
tempHigh: 102,
|
|
stateHigh: ["steam","salt"],
|
|
tempLow: -5,
|
|
category: "liquids",
|
|
reactions: {
|
|
"dust": { elem1: "dirty_water", elem2: null },
|
|
"ash": { elem1: "dirty_water", elem2: null },
|
|
"carbon_dioxide": { elem1: "dirty_water", elem2: null },
|
|
"sulfur": { elem1: "dirty_water", elem2: null },
|
|
"rat": { elem1: "dirty_water", chance:0.005 },
|
|
"plague": { elem1: "dirty_water", elem2: null },
|
|
"fallout": { elem1: "dirty_water", chance:0.25 },
|
|
"radiation": { elem1: "dirty_water", chance:0.25 },
|
|
"rust": { elem1: "dirty_water", chance:0.005 },
|
|
"lead": { elem1: "dirty_water", chance:0.005 },
|
|
"solder": { elem1: "dirty_water", chance:0.005 },
|
|
"rock": { elem2: "wet_sand", chance: 0.0005 },
|
|
"limestone": { elem2: "wet_sand", chance: 0.0005 },
|
|
"fly": { elem2:"dead_bug", chance:0.1, oneway:true },
|
|
"firefly": { elem2:"dead_bug", chance:0.1, oneway:true },
|
|
"bee": { elem2:"dead_bug", chance:0.05, oneway:true },
|
|
"stink_bug": { elem2:"dead_bug", chance:0.1, oneway:true },
|
|
"cancer": { elem1: "dirty_water", chance:0.25 },
|
|
"oil": { elem1: "dirty_water", chance:0.005 },
|
|
"uranium": { elem1: "dirty_water", chance:0.25 },
|
|
"wet_sand": { oneway:true, chance:0.007, func:function(pixel){
|
|
if (isEmpty(pixel.x,pixel.y-1) || isEmpty(pixel.x,pixel.y-2) || isEmpty(pixel.x,pixel.y-3)) {
|
|
changePixel(pixel,"foam");
|
|
pixel.clone = "salt_water";
|
|
}
|
|
}},
|
|
"salt_water": { elem2:"bubble", attr2:{"clone":"salt_water"}, chance:0.001, tempMin:85 },
|
|
// electrolysis:
|
|
"aluminum": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.0025 },
|
|
"zinc": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.015 },
|
|
"steel": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.0125 },
|
|
"iron": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.0125 },
|
|
"tin": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.01 },
|
|
"brass": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.001 },
|
|
"bronze": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.001 },
|
|
"copper": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.0075 },
|
|
"silver": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.0075 },
|
|
"gold": { elem1:["hydrogen","hydrogen","oxygen","chlorine"], charged:true, chance:0.0075 },
|
|
},
|
|
state: "liquid",
|
|
density: 1026,
|
|
stain: -0.01,
|
|
properties: {
|
|
oxygen: 1000,
|
|
nutrition: 1000,
|
|
},
|
|
extinguish: true,
|
|
isBio: true
|
|
}
|
|
|
|
if (!elements.cancer.reactions) { elements.cancer.reactions = {} }
|
|
elements.cancer.reactions.flesh = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.real_skin = { "elem2": cancer, chance:0.0001 };
|
|
elements.cancer.reactions.real_bone = { "elem2": ["bone","bone","cancer"], chance:0.0001 };
|
|
elements.cancer.reactions.lungs = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.brain = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.nerve = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.eye_nerve = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.eye = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.sphincter = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.digested_material = { "elem2": cancer, chance:0.001 };
|
|
elements.cancer.reactions.intestines = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.stomach_valve = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.stomach_lining = { "elem2": cancer, chance:0.005 };
|
|
elements.cancer.reactions.throat_lining = { "elem2": cancer, chance:0.005 };
|
|
|
|
if (!elements.uranium.reactions) { elements.uranium.reactions = {} }
|
|
elements.uranium.reactions.flesh = { "elem2": ["ash","blood","fat","meat","rotten_meat","cooked_meat"], chance:0.5 };
|
|
elements.uranium.reactions.real_skin = { "elem2": ["cooked_meat","cancer","ash","skin","hair"], chance:0.1 };
|
|
elements.uranium.reactions.real_bone = { "elem2": ["bone","bone","radiation"], chance:0.01 };
|
|
elements.uranium.reactions.lungs = { "elem2": ["ash","carbon_dioxide","meat","rotten_meat","cooked_meat","flesh","ash","carbon_dioxide","meat","rotten_meat","cooked_meat","flesh","ash","oxygen","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.brain = { "elem2": ["ash","steam","salt","meat","rotten_meat","cooked_meat","flesh","cerebrospinal_fluid"], chance:0.5 };
|
|
elements.uranium.reactions.amygdala = { "elem2": ["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.nerve = { "elem2": ["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.eye_nerve = { "elem2": ["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.eye = { "elem2": ["ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.sphincter = { "elem2": ["ash","steam","poop","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.intestines = { "elem2": ["ash","steam","meat","rotten_meat","cooked_meat","flesh","ash","steam","meat","rotten_meat","cooked_meat","flesh","poop"], chance:0.5 };
|
|
elements.uranium.reactions.stomach_valve = { "elem2": ["ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.stomach_lining = { "elem2": ["ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
elements.uranium.reactions.throat_lining = { "elem2": ["ash","slime","meat","rotten_meat","cooked_meat","flesh"], chance:0.5 };
|
|
|
|
if (!elements.radiation.reactions) { elements.radiation.reactions = {} }
|
|
elements.radiation.reactions.flesh = { "elem2": ["ash","blood","fat","meat","rotten_meat","cooked_meat","cancer","cancer"], chance:0.4 };
|
|
elements.radiation.reactions.real_skin = { "elem2": ["cooked_meat","cancer","ash","skin","hair"], chance:0.1 };
|
|
elements.radiation.reactions.real_bone = { "elem2": ["bone","bone","radiation"], chance:0.01 };
|
|
elements.radiation.reactions.lungs = { "elem2": ["cancer","ash","carbon_dioxide","meat","rotten_meat","cooked_meat","flesh","ash","carbon_dioxide","meat","rotten_meat","cooked_meat","flesh","ash","oxygen","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.brain = { "elem2": ["cancer","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh","cerebrospinal_fluid"], chance:0.4 };
|
|
elements.radiation.reactions.amygdala = { "elem2": ["cancer","ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.nerve = { "elem2": ["cancer","ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.eye_nerve = { "elem2": ["cancer","ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.eye = { "elem2": ["cancer","ash","steam","salt","ash","steam","salt","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.sphincter = { "elem2": ["cancer","ash","steam","poop","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.intestines = { "elem2": ["cancer","ash","steam","meat","rotten_meat","cooked_meat","flesh","ash","steam","meat","rotten_meat","cooked_meat","flesh","poop"], chance:0.4 };
|
|
elements.radiation.reactions.stomach_valve = { "elem2": ["cancer","ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.stomach_lining = { "elem2": ["cancer","ash","steam","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
elements.radiation.reactions.throat_lining = { "elem2": ["cancer","ash","slime","meat","rotten_meat","cooked_meat","flesh"], chance:0.4 };
|
|
|
|
if (!elements.plague.reactions) { elements.plague.reactions = {} }
|
|
elements.plague.reactions.flesh = { "elem2": ["rotten_meat","plague","fat","meat","rotten_meat","plague","infection","infection"], chance:0.04 };
|
|
elements.plague.reactions.real_skin = { "elem2": ["plague","infection","rotten_meat","skin","hair"], chance:0.1 };
|
|
elements.plague.reactions.real_bone = { "elem2": ["bone","bone","infection","plague"], chance:0.01 };
|
|
elements.plague.reactions.lungs = { "elem2": ["infection","rotten_meat","carbon_dioxide","meat","rotten_meat","plague","flesh","rotten_meat","carbon_dioxide","meat","rotten_meat","plague","flesh","rotten_meat","oxygen","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.brain = { "elem2": ["infection","rotten_meat","steam","salt","meat","rotten_meat","plague","flesh","cerebrospinal_fluid"], chance:0.04 };
|
|
elements.plague.reactions.amygdala = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.nerve = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.eye_nerve = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.eye = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.sphincter = { "elem2": ["infection","rotten_meat","steam","poop","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.intestines = { "elem2": ["infection","rotten_meat","steam","meat","rotten_meat","plague","flesh","rotten_meat","steam","meat","rotten_meat","plague","flesh","poop"], chance:0.04 };
|
|
elements.plague.reactions.stomach_valve = { "elem2": ["infection","rotten_meat","steam","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.stomach_lining = { "elem2": ["infection","rotten_meat","steam","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
elements.plague.reactions.throat_lining = { "elem2": ["infection","rotten_meat","slime","meat","rotten_meat","plague","flesh"], chance:0.04 };
|
|
|
|
if (!elements.infection.reactions) { elements.infection.reactions = {} }
|
|
elements.infection.reactions.flesh = { "elem2": ["rotten_meat","infection","fat","meat","rotten_meat","infection","infection","infection"], chance:0.04 };
|
|
elements.infection.reactions.real_skin = { "elem2": ["infection","infection","rotten_meat","skin","hair"], chance:0.1 };
|
|
elements.infection.reactions.real_bone = { "elem2": ["bone","bone","infection","infection"], chance:0.01 };
|
|
elements.infection.reactions.lungs = { "elem2": ["infection","rotten_meat","carbon_dioxide","meat","rotten_meat","infection","flesh","rotten_meat","carbon_dioxide","meat","rotten_meat","infection","flesh","rotten_meat","oxygen","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.brain = { "elem2": ["infection","rotten_meat","steam","salt","meat","rotten_meat","infection","flesh","cerebrospinal_fluid"], chance:0.04 };
|
|
elements.infection.reactions.amygdala = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.nerve = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.eye_nerve = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.eye = { "elem2": ["infection","rotten_meat","steam","salt","rotten_meat","steam","salt","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.sphincter = { "elem2": ["infection","rotten_meat","steam","poop","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.intestines = { "elem2": ["infection","rotten_meat","steam","meat","rotten_meat","infection","flesh","rotten_meat","steam","meat","rotten_meat","infection","flesh","poop"], chance:0.04 };
|
|
elements.infection.reactions.stomach_valve = { "elem2": ["infection","rotten_meat","steam","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.stomach_lining = { "elem2": ["infection","rotten_meat","steam","meat","rotten_meat","infection","flesh"], chance:0.04 };
|
|
elements.infection.reactions.throat_lining = { "elem2": ["infection","rotten_meat","slime","meat","rotten_meat","infection","flesh"], chance:0.04 };
|