commit
6834640a7d
|
|
@ -3,13 +3,15 @@ v 0.1 added snake
|
||||||
v 0.11 "axolotl" eats fish
|
v 0.11 "axolotl" eats fish
|
||||||
v 0.2 crocodiles scales and axolotls actually eat fish now
|
v 0.2 crocodiles scales and axolotls actually eat fish now
|
||||||
v 0.3 chameleons + bugfixes
|
v 0.3 chameleons + bugfixes
|
||||||
|
v 0.4 turtles, tortoise + improved logic
|
||||||
|
|
||||||
|
|
||||||
thats it for now
|
thats it for now
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const defaultColors = ["#02c937", "#18d64a", "#09e644"];
|
const defaultColors = ["#02c937", "#18d64a", "#09e644"];
|
||||||
|
|
||||||
// Only run this if the human, head, and body elements exist
|
runAfterAutogen(function () {
|
||||||
if (elements.human && elements.head && elements.body) {
|
|
||||||
// Human
|
// Human
|
||||||
const oldHumanTick = elements.human.tick;
|
const oldHumanTick = elements.human.tick;
|
||||||
elements.human.tick = function (pixel) {
|
elements.human.tick = function (pixel) {
|
||||||
|
|
@ -17,7 +19,9 @@ if (elements.human && elements.head && elements.body) {
|
||||||
if (pixel.poisoned !== undefined) {
|
if (pixel.poisoned !== undefined) {
|
||||||
pixel.poisoned--;
|
pixel.poisoned--;
|
||||||
if (pixel.poisoned <= 0) {
|
if (pixel.poisoned <= 0) {
|
||||||
deletePixel(pixel.x, pixel.y);
|
pixel.dead = true;
|
||||||
|
pixel.color = pixel.oldColor;
|
||||||
|
delete pixel.poisoned
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -30,7 +34,9 @@ if (elements.human && elements.head && elements.body) {
|
||||||
if (pixel.poisoned !== undefined) {
|
if (pixel.poisoned !== undefined) {
|
||||||
pixel.poisoned--;
|
pixel.poisoned--;
|
||||||
if (pixel.poisoned <= 0) {
|
if (pixel.poisoned <= 0) {
|
||||||
deletePixel(pixel.x, pixel.y);
|
pixel.dead = true;
|
||||||
|
pixel.color = pixel.oldColor;
|
||||||
|
delete pixel.poisoned;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -43,12 +49,14 @@ if (elements.human && elements.head && elements.body) {
|
||||||
if (pixel.poisoned !== undefined) {
|
if (pixel.poisoned !== undefined) {
|
||||||
pixel.poisoned--;
|
pixel.poisoned--;
|
||||||
if (pixel.poisoned <= 0) {
|
if (pixel.poisoned <= 0) {
|
||||||
deletePixel(pixel.x, pixel.y);
|
pixel.dead = true;
|
||||||
|
pixel.color = pixel.oldColor;
|
||||||
|
delete pixel.poisoned;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
|
|
||||||
function eatBee(pixel1, pixel2) {
|
function eatBee(pixel1, pixel2) {
|
||||||
|
|
@ -58,6 +66,9 @@ function eatBee(pixel1, pixel2) {
|
||||||
|
|
||||||
function poisonOther(pixel1, pixel2) {
|
function poisonOther(pixel1, pixel2) {
|
||||||
if (!pixel2) return;
|
if (!pixel2) return;
|
||||||
|
if (pixel2.color === "#5c138a") return;
|
||||||
|
if (pixel2.dead === true) return;
|
||||||
|
pixel2.oldColor = pixel2.color;
|
||||||
pixel2.color = "#5c138a";
|
pixel2.color = "#5c138a";
|
||||||
pixel2.poisoned ??= 30;
|
pixel2.poisoned ??= 30;
|
||||||
}
|
}
|
||||||
|
|
@ -105,7 +116,8 @@ elements.lizard = {
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
"poison": { elem1: "rotten_meat", elem2: null }
|
"poison": { elem1: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
foodNeed: 5,
|
foodNeed: 5,
|
||||||
temp: 20,
|
temp: 20,
|
||||||
|
|
@ -164,7 +176,8 @@ elements.toad = {
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
"poison": { elem1: "rotten_meat", elem2: null }
|
"poison": { elem1: "rotten_meat", elem2: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
foodNeed: 10,
|
foodNeed: 10,
|
||||||
baby: "toad_tadpole",
|
baby: "toad_tadpole",
|
||||||
|
|
@ -202,6 +215,8 @@ elements.toad_tadpole = {
|
||||||
"bleach": { elem1: null, chance: 0.05 },
|
"bleach": { elem1: null, chance: 0.05 },
|
||||||
"poison": { elem1: null },
|
"poison": { elem1: null },
|
||||||
"radiation": { elem1: ["toad", "toad", "frog", "worm", null], chance: 0.4 },
|
"radiation": { elem1: ["toad", "toad", "frog", "worm", null], chance: 0.4 },
|
||||||
|
"poison": { elem1: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
tempHigh: 100,
|
tempHigh: 100,
|
||||||
stateHigh: "steam",
|
stateHigh: "steam",
|
||||||
|
|
@ -248,7 +263,9 @@ elements.toad_tadpole = {
|
||||||
"cyanide": { elem1: "rotten_meat", chance: 0.1 },
|
"cyanide": { elem1: "rotten_meat", chance: 0.1 },
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 }
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
|
"poison": { elem1: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
foodNeed: 10,
|
foodNeed: 10,
|
||||||
temp: 18,
|
temp: 18,
|
||||||
|
|
@ -289,7 +306,9 @@ elements.axolotl = {
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
"oxygen": { elem2: "carbon_dioxide", chance: 0.5 }
|
"oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
|
||||||
|
"poison": { elem1: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
foodNeed: 20,
|
foodNeed: 20,
|
||||||
temp: 18,
|
temp: 18,
|
||||||
|
|
@ -355,7 +374,6 @@ elements.snake = {
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
"poison": { elem1: null }
|
|
||||||
},
|
},
|
||||||
category: "life",
|
category: "life",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -391,7 +409,7 @@ elements.crocodile = {
|
||||||
color: ["#065e13", "#0c751c"],
|
color: ["#065e13", "#0c751c"],
|
||||||
behavior: [
|
behavior: [
|
||||||
["XX", "XX", "XX AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
|
["XX", "XX", "XX AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
|
||||||
["XX", "FX%10", "M2%15 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
|
["XX", "FX%10", "M2%30 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
|
||||||
["M2", "M1", "M1 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
|
["M2", "M1", "M1 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
|
||||||
],
|
],
|
||||||
category: 'life',
|
category: 'life',
|
||||||
|
|
@ -413,14 +431,15 @@ elements.crocodile = {
|
||||||
"chameleon": {
|
"chameleon": {
|
||||||
reactionFunction: function (pixel, otherPixel) {
|
reactionFunction: function (pixel, otherPixel) {
|
||||||
let isNormalColor = defaultColors.includes(pixel.color);
|
let isNormalColor = defaultColors.includes(pixel.color);
|
||||||
if (otherPixel.threatened !== true || isNormalColor === true) {
|
if (otherPixel.threatened !== true || isNormalColor === true) {
|
||||||
behaviors.FEEDPIXEL(pixel, otherPixel);
|
behaviors.FEEDPIXEL(pixel, otherPixel);
|
||||||
deletePixel(otherPixel.x, otherPixel.y)
|
deletePixel(otherPixel.x, otherPixel.y)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"slug": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
"slug": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
||||||
"snail": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
"snail": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
||||||
|
"turtle": { elem2: [null, "limestone"], func: behaviors.FEEDPIXEL, chance: 0.05 },
|
||||||
"bone": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.1 },
|
"bone": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.1 },
|
||||||
"bone_marrow": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.4 },
|
"bone_marrow": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.4 },
|
||||||
"homonculus": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
"homonculus": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
||||||
|
|
@ -434,7 +453,8 @@ elements.crocodile = {
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
"poison": { elem1: null }
|
"poison": { elem1: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
temp: 18,
|
temp: 18,
|
||||||
tempHigh: 100,
|
tempHigh: 100,
|
||||||
|
|
@ -469,6 +489,21 @@ elements.scale = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elements.scute = {
|
||||||
|
category: "powders",
|
||||||
|
color: ['#076607', '#1cb01c', '#0ef00e'],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
tempHigh: 900,
|
||||||
|
stateHigh: ["ash", "ash", "ash", "smoke", "stench", "stench", "stench"],
|
||||||
|
breakInto: "dust",
|
||||||
|
hardness: 0.3,
|
||||||
|
reactions: {
|
||||||
|
"glue": {
|
||||||
|
elem1: "scute_plate", elem2: null,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
elements.scale_plate = {
|
elements.scale_plate = {
|
||||||
category: "solids",
|
category: "solids",
|
||||||
behavior: [
|
behavior: [
|
||||||
|
|
@ -496,6 +531,33 @@ elements.scale_plate = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elements.scute_plate = {
|
||||||
|
category: "solids",
|
||||||
|
behavior: [
|
||||||
|
"XX", "XX", "XX",
|
||||||
|
"XX", "XX", "XX",
|
||||||
|
"XX", "XX", "XX",
|
||||||
|
],
|
||||||
|
movable: false,
|
||||||
|
state: "solid",
|
||||||
|
color: ['#044404', '#137a13', '#0aa00a'],
|
||||||
|
hardness: 0.8,
|
||||||
|
breakInto: "scute",
|
||||||
|
tick: function (pixel) {
|
||||||
|
// 2 temp highs
|
||||||
|
const hot = ["scute", "dioxin", "cyanide_gas"];
|
||||||
|
const hotter = ["ash", "ash", "ash", "smoke", "stench", "stench", "stench", "dioxin", "cyanide_gas"];
|
||||||
|
if (pixel.temp >= 475 && pixel.temp <= 900) {
|
||||||
|
let chosen = hot[Math.floor(Math.random() * hot.length)];
|
||||||
|
changePixel(pixel, chosen);
|
||||||
|
}
|
||||||
|
if (pixel.temp >= 900) {
|
||||||
|
let chosen = hotter[Math.floor(Math.random() * hotter.length)];
|
||||||
|
changePixel(pixel, chosen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
elements.chameleon = {
|
elements.chameleon = {
|
||||||
color: ["#02c937", "#18d64a", "#09e644"],
|
color: ["#02c937", "#18d64a", "#09e644"],
|
||||||
category: "life",
|
category: "life",
|
||||||
|
|
@ -521,7 +583,8 @@ elements.chameleon = {
|
||||||
"chlorine": { elem1: "meat", chance: 0.1 },
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
"alcohol": { elem1: "meat", chance: 0.025 },
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
"poison": { elem1: null }
|
"poison": { elem1: null },
|
||||||
|
"poison_gas": { elem1: null },
|
||||||
},
|
},
|
||||||
tick: function (pixel) {
|
tick: function (pixel) {
|
||||||
|
|
||||||
|
|
@ -625,3 +688,45 @@ elements.chameleon = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
elements.turtle = {
|
||||||
|
color: ["#47b000", "#406000"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup,scute%14",
|
||||||
|
"XX|FX%1|M2%5 AND SW:scute%5",
|
||||||
|
"M2|M1|M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%5",
|
||||||
|
],
|
||||||
|
density: 1080,
|
||||||
|
state: "solid",
|
||||||
|
category: "life",
|
||||||
|
foodNeed: 10,
|
||||||
|
reactions: {
|
||||||
|
"fish": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.1 },
|
||||||
|
"kelp": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
|
||||||
|
"algae": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
|
||||||
|
"radiation": { elem1: ["ash", "meat", "cooked_meat", "rotten_meat", "limestone"], chance: 0.4 },
|
||||||
|
"oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
|
||||||
|
"mercury": { elem1: "rotten_meat", chance: 0.1 },
|
||||||
|
"bleach": { elem1: "rotten_meat", chance: 0.1 },
|
||||||
|
"infection": { elem1: "rotten_meat", chance: 0.025 },
|
||||||
|
"uranium": { elem1: "rotten_meat", chance: 0.1 },
|
||||||
|
"cyanide": { elem1: "rotten_meat", chance: 0.1 },
|
||||||
|
"chlorine": { elem1: "meat", chance: 0.1 },
|
||||||
|
"alcohol": { elem1: "meat", chance: 0.025 },
|
||||||
|
"vinegar": { elem1: "rotten_meat", chance: 0.001 },
|
||||||
|
"poison": { elem1: "limestone" },
|
||||||
|
"poison_gas": { elem1: "limestone" },
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.cd ??= 600;
|
||||||
|
pixel.cd--;
|
||||||
|
for (let i = 0; i < squareCoords.length; i++) {
|
||||||
|
let x = pixel.x + squareCoords[i][0];
|
||||||
|
let y = pixel.y + squareCoords[i][1];
|
||||||
|
if (isEmpty(x, y) && pixel.cd <= 0 && Math.random() <= 0.005) {
|
||||||
|
createPixel("scute", x, y);
|
||||||
|
pixel.cd = 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue