Update humans.js

This commit is contained in:
slweeb 2022-01-31 20:53:28 -05:00
parent 8467eff24e
commit 466e454c29
1 changed files with 70 additions and 10 deletions

View File

@ -2,7 +2,8 @@ elements.human = {
color: ["#f5eac6","#d4c594","#a89160","#7a5733","#523018","#361e0e"], color: ["#f5eac6","#d4c594","#a89160","#7a5733","#523018","#361e0e"],
category: "life", category: "life",
properties: { properties: {
dead: false dead: false,
dir: 1,
}, },
tick: function(pixel) { tick: function(pixel) {
if (isEmpty(pixel.x, pixel.y+1)) { if (isEmpty(pixel.x, pixel.y+1)) {
@ -25,8 +26,22 @@ elements.body = {
color: ["#049699","#638A61"], color: ["#049699","#638A61"],
category: "life", category: "life",
hidden: true, hidden: true,
density: 1080,
state: "solid",
conduct: 25,
tempHigh: 250,
stateHigh: "cooked_meat",
tempLow: -30,
stateLow: "frozen_meat",
burn: 10,
burnTime: 250,
burnInto: "cooked_meat",
reactions: {
"cancer": { "elem1":"cancer", "chance":0.005 },
},
properties: { properties: {
dead: false dead: false,
dir: 1,
}, },
tick: function(pixel) { tick: function(pixel) {
if (isEmpty(pixel.x, pixel.y+1)) { // Fall if (isEmpty(pixel.x, pixel.y+1)) { // Fall
@ -39,11 +54,23 @@ elements.body = {
} }
} }
doHeat(pixel); doHeat(pixel);
if (pixel.dead) { return } doBurning(pixel);
doElectricity(pixel);
if (pixel.dead) {
// Turn into rotten_meat if pixelTicks-dead > 500
if (pixelTicks-pixel.dead > 200) {
pixel.element = "rotten_meat";
pixel.color = pixelColorPick(pixel);
}
return
}
// Find the head // Find the head
if (!isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "head") { if (!isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "head") {
var head = pixelMap[pixel.x][pixel.y-1]; var head = pixelMap[pixel.x][pixel.y-1];
if (head.dead) { // If head is dead, kill body
pixel.dead = head.dead;
}
} }
else { var head = null } else { var head = null }
@ -53,17 +80,15 @@ elements.body = {
createPixel("blood", pixel.x, pixel.y-1); createPixel("blood", pixel.x, pixel.y-1);
// set dead to true 15% chance // set dead to true 15% chance
if (Math.random() < 0.15) { if (Math.random() < 0.15) {
pixel.dead = true; pixel.dead = pixelTicks;
} }
} }
} }
else if (head == null) { return } else if (head == null) { return }
else if (Math.random() < 0.1) { // Move 10% chance else if (Math.random() < 0.1) { // Move 10% chance
var movesToTry = [ var movesToTry = [
[-1,0], [1*pixel.dir,0],
[1,0], [1*pixel.dir,-1],
[-1,-1],
[1,-1],
]; ];
// While movesToTry is not empty, tryMove(pixel, x, y) with a random move, then remove it. if tryMove returns true, break. // 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) { while (movesToTry.length > 0) {
@ -75,6 +100,10 @@ elements.body = {
} }
} }
} }
// 15% chance to change direction
if (Math.random() < 0.15) {
pixel.dir *= -1;
}
} }
}, },
@ -84,18 +113,49 @@ elements.head = {
color: ["#f5eac6","#d4c594","#a89160","#7a6433","#524018"], color: ["#f5eac6","#d4c594","#a89160","#7a6433","#524018"],
category: "life", category: "life",
hidden: true, hidden: true,
density: 1080,
state: "solid",
conduct: 25,
tempHigh: 250,
stateHigh: "cooked_meat",
tempLow: -30,
stateLow: "frozen_meat",
burn: 10,
burnTime: 250,
burnInto: "cooked_meat",
properties: { properties: {
dead: false dead: false
}, },
tick: function(pixel) { 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) {
pixel.element = "rotten_meat";
pixel.color = pixelColorPick(pixel);
return
}
}
// Find the body
if (!isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "body") {
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 (isEmpty(pixel.x, pixel.y+1)) { if (isEmpty(pixel.x, pixel.y+1)) {
movePixel(pixel, pixel.x, pixel.y+1); tryMove(pixel, pixel.x, pixel.y+1);
// create blood if severed 10% chance // create blood if severed 10% chance
if (isEmpty(pixel.x, pixel.y+1) && !pixel.dead && Math.random() < 0.1) { if (isEmpty(pixel.x, pixel.y+1) && !pixel.dead && Math.random() < 0.1) {
createPixel("blood", pixel.x, pixel.y+1); createPixel("blood", pixel.x, pixel.y+1);
// set dead to true 15% chance // set dead to true 15% chance
if (Math.random() < 0.15) { if (Math.random() < 0.15) {
pixel.dead = true; pixel.dead = pixelTicks;
} }
} }
} }