This commit is contained in:
slweeb 2025-07-19 13:38:25 -04:00
commit ec3ea2e783
4 changed files with 871 additions and 13 deletions

240
mods/LimesAdditions.js Normal file
View File

@ -0,0 +1,240 @@
elements.EXPLODE = {
color: "#FF5555",
behavior: [
"XX|XX|XX",
"XX|EX: 20>plasma|XX",
"XX|XX|XX"
],
category: "tools",
/*tool: function(pixel) {
if (pixel.element === "dirt"){
createPixel("plasma")
}
}
*/
}
elements.admantine = {
color: ["#5c5c5c", "#676469", "#747373"],
behavior: behaviors.WALL,
category: "solids",
tempHigh: 3140,
stateHigh: "molten_admantine",
reactions: {
"hydrogen": {elem1: null, elem2: null},
},
density: 10000,
conduct: 1,
hardness: 10,
}
elements.molten_admantine = {
color: ["#d1521b", "#b68421", "#b14b77", "#e3aa38"],
behavior: behaviors.MOLTEN,
category: "liquids",
tempHigh: 5900,
tempLow: 3139,
stateLow: "admantine",
stateHigh: "admantine_gas",
reactions: {
"hydrogen": {elem1: null, elem2: null}
},
density: 100,
hidden: true,
}
elements.admantine_gas = {
color: ["#535353", "#a9a9a9", "#0b0b0b"],
behavior: behaviors.GAS,
category: "gases",
tempLow: 5899,
stateLow: "molten_admantine",
reactions: {
"hydrogen": {elem1: null, elem2: null}
},
density: 10,
hidden: true,
}
elements.superlight_liquid = {
color: ["#7dadd4", "#a0cedc", "#72bdef", "#d8e1f5"],
behavior: behaviors.LIQUID,
category: "liquids",
tempLow: -100,
tempHigh: 10000,
reactions: {
"admantine": {elem1: null, elem2: "iron"}
},
density: 0.00000001,
}
elements.left_powder = {
color: "#555555",
category: "powders",
behavior: [
"M2|XX|XX",
"M1|XX|XX",
"M2|XX|XX"
],
tempHigh: 1000,
}
elements.right_powder = {
color: "#555555",
category: "powders",
behavior: [
"XX|XX|M2",
"XX|XX|M1",
"XX|XX|M2"
],
tempHigh: 1000,
}
elements.volcano = {
color: "#4f4848",
category: "weapons",
tick: function(pixel) {
let isPlaced = false
if (!tryMove(pixel,pixel.x,pixel.y+1)) {
if (!pixel.isPlaced) {
pixel.y -= 5
pixel.isPlaced = true
}
let height = 5; // number of pyramid layers
while (!isEmpty(pixel.x-4,pixel.y+4)) {
for (let row = 2; row < height; row++) {
let width = row + 2; // pyramid gets wider each row
for (let col = 0; col < width; col++) {
let xOffset = col - row; // center the row
let x = pixel.x + xOffset;
let y = pixel.y + row;
createPixel("basalt", x, y);
}
}
}
} }
}
elements.cat = {
color: ["#FFFFFF", "#caa022", "#afafaf", "#baa974"],
category: "life",
tempHigh: 40,
tempLow: -5,
stateHigh: "cooked_meat",
stateLow: "frozen_meat",
breakInto: ["meat", "bone", "vomit", "hairball", "blood", "bone", "stench", "infection", "flea"],
tick: function(pixel) {
let lr
if (Math.random() < 0.2) {
lr = Math.random() < 0.5 ? -1 : 1
}
else {
lr = 0
}
if (!tryMove(pixel, pixel.x, pixel.y+1)) {
if (lr === -1) {
if (isEmpty(pixel.x + lr, pixel.y)) {
if (!tryMove(pixel, pixel.x + lr + lr, pixel.y)) {
if (!tryMove(pixel, pixel.x + lr, pixel.y - 1)) {
if (!tryMove(pixel, pixel.x + lr, pixel.y + 1)) {
lr = 1
}
}
}
}
}
else if (lr === 1) {
if (isEmpty(pixel.x + lr, pixel.y)) {
if (!tryMove(pixel, pixel.x + lr + lr, pixel.y)) {
if (!tryMove(pixel, pixel.x + lr, pixel.y - 1)) {
if (!tryMove(pixel, pixel.x + lr, pixel.y + 1)) {
lr = -1
}
}
}
}
}
}
if (Math.random() < 0.0001) {
if (isEmpty(pixel.x-1, pixel.y, true)) {
createPixel("stench", pixel.x - 1, pixel.y)
}
else if (isEmpty(pixel.x+1, pixel.y, true)) {
createPixel("stench", pixel.x + 1, pixel.y)
}
}
if (Math.random() < 0.0005) {
if (isEmpty(pixel.x-1, pixel.y, true)) {
createPixel("vomit", pixel.x - 1, pixel.y)
}
else if (isEmpty(pixel.x+1, pixel.y, true)) {
createPixel("vomit", pixel.x + 1, pixel.y)
}
}
if (Math.random() < 0.0005) {
if (isEmpty(pixel.x-1, pixel.y, true)) {
createPixel("hairball", pixel.x - 1, pixel.y)
}
else if (isEmpty(pixel.x+1, pixel.y, true)) {
createPixel("hairball", pixel.x + 1, pixel.y)
}
}
},
reactions: {
"milk": {elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL},
"meat": {elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL},
"cooked_meat": {elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL},
"rotten_meat": {elem2: "stench", chance: 0.5, func: behaviors.FEEDPIXEL},
"bird": {elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL},
"rat": {elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL},
"beans": {elem2: "stench", chance: 0.5, func: behaviors.FEEDPIXEL},
"fish": {elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL},
"poison": {elem1: "rotten_meat", chance: 0.25},
"acid": {elem1: "rotten_meat", chance: 0.8, elem2: null},
"landmine": {elem2: null},
}
}
elements.vomit = {
color: ["#6b722f", "#92700b", "#a3944d", "#6a654e"],
category: "liquids",
tempHigh: 100,
tempLow: 0,
stateHigh: "stench",
stateLow: "vomit_ice",
hidden: true,
behavior: behaviors.LIQUID
}
elements.hairball = {
color: ["#958b71", "#868977"],
category: "powders",
behavior: [
"XX|XX|XX",
"XX|XX|XX",
"M2|M1|M2"
],
tempHigh: 250,
stateHigh: "ash",
hidden: true
}
elements.hot_stuff = {
color: ["#a5d6a7", "#ffffff"],
category: "solids",
behavior: behaviors.WALL,
temp: 0,
}

View File

@ -73,6 +73,10 @@ function poisonOther(pixel1, pixel2) {
pixel2.poisoned ??= 30;
}
function isInBounds(x, y) {
return x >= 0 && x < width && y >= 0 && y < height;
}
elements.human.reactions.snake =
{ attr1: { panic: 5 } }
@ -700,6 +704,11 @@ elements.turtle = {
state: "solid",
category: "life",
foodNeed: 10,
tempHigh: 100,
stateHigh: "cooked_meat",
tempLow: -10,
stateLow: "frozen_meat",
breakInto: ["scute", "blood", "meat", "limestone"],
reactions: {
"fish": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.1 },
"kelp": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
@ -717,16 +726,44 @@ elements.turtle = {
"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;
}
}
}
elements.tortoise = {
color: ["#47b000", "#406000"],
behavior: [
"XX|XX|XX",
"XX|FX%1|M2%5",
"M2|M1|M2",
],
density: 1080,
state: "solid",
category: "life",
foodNeed: 10,
tempHigh: 100,
stateHigh: "cooked_meat",
tempLow: -10,
stateLow: "frozen_meat",
breakInto: ["blood", "meat", "limestone"],
reactions: {
"grass": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"plant": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"evergreen": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"pistil": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"petal": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"lettuce": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"tomato": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
"pumpkin": { 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" },
}
}

View File

@ -53,7 +53,7 @@ document.addEventListener("mousedown", (event) => {
var matrix = pluckMatrix(x - (size-1)/2, y - (size-1)/2, size, size);
var payload = JSON.stringify({ matrix, x, y });
navigator.clipboard.writeText(payload)
.then(() => alert("Copied " + size + "×" + size))
.then(() => logMessage("Copied " + size + "×" + size))
.catch(e => console.error("Copy failed:", e));
}
@ -80,7 +80,7 @@ document.addEventListener("mousedown", (event) => {
}
}
alert("Pasted at", x, y);
logMessage("Pasted Successfully");

581
mods/variety_mod.js Normal file
View File

@ -0,0 +1,581 @@
//update 0: Variety Mod!
//update 1: First Update!
//update 2: Moss Update
//update 3: hello_world
//Update 4: Fly Update
//update 5: Maggots and Eggs Update
//update 6: Disinfectant Update
//update 7: hello_world_2
//update 8: Infested Meat Update (scrapped)
//update 9: Zombie Update
//update 10: Bananas Update! (scrapped)
//update 11: Garbage Update (scrapped)
//update 12: Strange Update
//update 12.5: Strange Fix
//update 13: Big Update
//update 14: Garbage and Flies!
//update 15: Compilation (scrapped)
//update 16: Fruit and Flies
//update 17: Mold
//update 18: Updated Flies!
elements.moss = {
//debut: update 2
color: ["#6B7A1A", "#60742E", "#5E823C"],
excludeRandom: false,
behavior: [
["XX","SA","XX"],
["SA AND CL%0.2","XX","SA AND CL%0.2"],
["CL%0.2","M1 AND SA","CL%0.2"]
],
category: "variety_mod",
state: "solid",
tempHigh: 55,
stateHigh: "grass",
tempLow: -20,
stateLow: "ice"
},
elements.hello_world = {
//debut: update 3
color: "#ff0000",
desc:"If you see this, just know the upload worked, and you can use the Variety Mod!",
excludeRandom: false,
behavior: [["XX","SP","XX"],["SP","CH:random%0.1","SP"],["M1","M1","M1"]],
category: "land",
state: "solid",
reactions: {
"water": { elem1: "male_fly", elem2: "female_fly", elem3: "fly_egg", elem4: "maggot" },
}
},
elements.female_fly = {
//debut: update 4
color: "#4B4B4B",
excludeRandom: false,
behavior: [["M1%20","XX","M1%20"],["M1%20","CH:female_fly>dead_fly%0.01","M1%20"],["M1%20","CR:fly_egg%0.06","M1%20"]],
category: "variety_mod",
state: "solid",
breakInto: "dead_fly",
reactions: {
"disinfectant": { elem1: "dead_fly", elem2: "ammonia", elem3: "stench"},
},
tempHigh: 100,
stateHigh:"dead_fly",
tempLow: 10,
stateLow: "ice",
},
elements.male_fly = {
//debut: update 14
color: "#4B4B4B",
excludeRandom: false,
behavior: [["M1","M2","M1"],["M2","CH:dead_fly%0.01","M2"],["M1","M2","M1"]],
category: "variety_mod",
state: "solid",
reactions: {
"disinfectant": { elem1: "dead_fly", elem2: "dead_fly"},
}
},
elements.fly_egg = {
//debut: update 5
color: "#E2EAF4",
excludeRandom: false,
behavior: [["XX","ST","XX"],["ST","CH:maggot%0.036","ST"],["M1","M1 AND ST","M1"]],
category: "variety_mod",
state: "solid",
breakInto: "slime,maggot,female_fly",
reactions: {
"disinfectant": { elem1: "dead_fly", elem2: "ammonia", elem3: "stench"},
"growth_Fluid": { elem1: "maggot", elem2: "female_fly", elem3: "female_fly"}
}
},
elements.maggot = {
//debut:update 16
color: "#F0EEE8",
excludeRandom: false,
behavior: [["M2%10 AND SA%50","SA%50 AND SW: maggot,fly_egg,meat,rotten_meat,cooked_meat","M2%10 AND SA%50"],["M2%50 AND CH:meat,rotten_meat,cooked_meat,cheese,melted_cheese,cheese_powder,rotten_cheese,bread,crumb,toast,garbage_juice,banana,mashed_banana,rotten_banana>stench,stench,stench,plague%0.1","CC: #F9E6D4%0.08 AND CH:fly_pupa%0.05,CR:stench%10","M2%50 AND CH:meat,rotten_meat,cooked_meat,cheese,melted_cheese,cheese_powder,rotten_cheese,bread,crumb,toast,banana,mashed_banana,rotten_banana>stench,plaque%0.1"],["M1 AND CH:meat>rotten_meat%1","M1 AND CH:meat,rotten_meat,cooked_meat,cheese,melted_cheese,cheese_powder,rotten_cheese,bread,crumb,toast,>stench,plaque AND CH:cheese,cheese_powder,melted_cheese>rotten_cheese","M1"]],
category: "variety_mod",
state: "solid",
breakInto: "slime",
tempHigh: 80,
stateHigh: "female_fly",
reactions: {
"disinfectant": { elem1: "stench", elem2: "ammonia", elem3: "stench"},
"growth_Fluid": {elem1: "female_fly", elem2: "female_fly"}
}
},
elements.fly_pupa = {
//debut:update 18
color: "#B1834D",
excludeRandom: false,
behavior: [["XX","SP","XX"],["SP","CH:crawl_fly%0.006 AND CC:#5D5247%0.01","SP"],["M1","M1","M1"]],
category: "variety_mod",
state: "solid",
reactions:{
"disinfectant": {elem1:"mold", elem2:"dead_fly", elem3:"dirt"}
}
},
elements.crawl_fly = {
//update 18
color: "#5D5247",
excludeRandom: false,
behavior: [["M2%0.5","XX","M2%0.5"],["M2%1","CH:male_fly,female_fly%0.06","M2%1"],["XX","M1","XX"]],
category: "variety_mod",
state: "solid",
reactions:{
"disinfectant": {elem1:"mold", elem2:"dead_fly", elem3:"dirt"}
}
},
elements.female_fruitfly = {
//debut: update 16
color: "#EEC758",
excludeRandom: false,
behavior: [["M1%20","SW:grape,juice,fruit_milk,banana,mashed_banana,rotten_banana,dirt,mold%10","M1%20"],["M1%20","CH:female_fruitfly>dead_fly%0.01","M1%20"],["M1%20","CR:fruitfly_egg%0.06","M1%20"]],
category: "variety_mod",
state: "solid",
breakInto: "dead_fly",
reactions: {
"disinfectant": { elem1: "dead_fly", elem2: "dead_fly", elem3: "stench"},
},
tempHigh: 100,
stateHigh:"dead_fly",
tempLow: 10,
stateLow: "ice",
},
elements.male_fruitfly = {
//debut: update 16
color: "#D4A930",
excludeRandom: false,
behavior: [["M1","M2 AND SW:grape,juice,fruit_milk,banana,mashed_banana,rotten_banana,dirt,mold"%10,"M1"],["M2","CH:dead_fly%0.01","M2"],["M1","M2","M1"]],
category: "variety_mod",
breakInto:"dead_bug",
state: "solid",
reactions: {
"disinfectant": { elem1: "dead_fly", elem2: "dead_fly"},
}
},
elements.fruitfly_egg = {
//debut: update 16
color: "#E2EAF4",
excludeRandom: false,
behavior: [["XX","ST","XX"],["ST","CH:fruitfly_maggot%0.018","ST"],["M1","M1 AND ST","M1"]],
category: "variety_mod",
state: "solid",
breakInto: "slime,maggot,female_fruitfly",
reactions: {
"disinfectant": { elem1: "plague", elem2: "slime", elem3: "stench"},
"growth_Fluid": { elem1: "fruitfly_maggot", elem2: "female_fruitfly", elem3: "female_fruitfly"}
}
},
elements.fruitfly_maggot = {
//debut:update 16
color: "#F0EEE8",
excludeRandom: false,
behavior: [["M2%10 AND SA%50 AND SW:grape,juice,fruit_milk,banana,mashed_banana,rotten_banana%10","SA%50","M2%10 AND SA%50 AND SW:grape,juice,fruit_milk,banana,mashed_banana,rotten_banana"],["M2%50 AND CH:cheese,melted_cheese,cheese_powder,rotten_cheese,bread,crumb,toast,grape,banana,mashed_banana,rotten_banana>stench,stench,stench,plague%0.1","CH:fruitfly_pupa%0.05,CR:stench%10","M2%50 AND CH:cheese,melted_cheese,cheese_powder,rotten_cheese,bread,crumb,toast,grape,banana>stench,plaque%0.1"],["M1 AND CH:banana>rotten_banana%1 AND SW:grape,juice,banana,mashed_banana,rotten_banana","M1 AND CH:cheese,melted_cheese,cheese_powder,rotten_cheese,bread,crumb,toast,grape,banana>stench,plaque%0.1 AND CH:cheese,cheese_powder,melted_cheese>rotten_cheese AND CH:banana>rotten_banana,mashed_banana%0.01","M1 AND SW:grape,juice,banana,mashed_banana,rotten_banana"]],
category: "variety_mod",
state: "solid",
breakInto: "slime",
tempHigh: 80,
stateHigh: "female_fruitfly",
reactions: {
"disinfectant": { elem1: "stench", elem2: "plague", elem3: "stench"},
"growth_Fluid": {elem1: "female_fruitfly", elem2: "female_fruitfly"}
}
},
elements.fruitfly_pupa = {
//update 18
color: "#CBAD91",
excludeRandom: false,
behavior: [["XX","SP","XX"],["SP","CH:crawl_fly%0.006 AND CC:#5D5247%0.01","SP"],["M1","M1","M1"]],
category: "variety_mod",
state: "solid"
},
elements.crawl_fruitfly = {
//update 18
color: "#64571c",
excludeRandom: false,
behavior: [["XX","XX","XX"],["M2%2","CH:male_fly,female_fly%0.004","M2%2"],["M1","M1","M1"]],
category: "variety_mod",
state: "solid",
},
elements.dead_fly = {
//debut: update 16
color: "#4B4A4B",
excludeRandom: false,
behavior: [["XX","XX","XX"],["XX","CH:dirt%0.1","XX"],["M1","M1 AND SA","M1"]],
category: "variety_mod",
state: "solid",
reactions: {
"disinfectant": { elem1: "dirt"},
}
},
elements.disinfectant = {
//debut: update 6
color: "#E2EAF4",
excludeRandom: false,
behavior: behaviors.FOAM,
category: "variety_mod",
state: "gas",
stain: -1,
reactions: {
"water": { elem1: "water", elem2: "seltzer"}
}
};
elements.garbage_bag = {
//debut: update 14(failed debut: update 11)
color: "#4B4B4B",
excludeRandom: false,
behavior: [["XX","CH:meat,rotten_meat,frozen_meat,salt,sugar,flour,egg,hard_yolk,rotten_cheese,cheese_powder,grape,herb,lettuce,pickle,banana,mashed_banana,rotten_banana,dirt,mud,juice,dead_bug,>stench","XX"],["XX","XX","XX"],["M1","M1","M1"]],
category: "variety_mod",
state: "solid",
burn: .01,
burnTime: 300,
burnInto: "molten_plastic",
reactions: {
"meat": { elem1: "garbage" },
"rotten_meat": { elem1: "garbage" },
"frozen_meat": { elem1: "garbage" },
"salt": { elem1: "garbage" },
"sugar": { elem1: "garbage" },
"flour": { elem1: "garbage" },
"egg": { elem1: "garbage" },
"hard_yolk": { elem1: "garbage" },
"rotten_cheese": { elem1: "garbage" },
"cheese_powder": { elem1: "garbage" },
"grape": { elem1: "garbage" },
"herb": { elem1: "garbage" },
"lettuce": { elem1: "garbage" },
"pickle": { elem1: "garbage" },
}
},
elements.garbage = {
//debut: update 14(failed debut: update 11)
color: "#4B4A4B",
excludeRandom: false,
behavior: [["XX","CR:stench%0.1","XX"],["SP%20 AND CR:garbage_juice%0.1 AND CH:water>dirty_water,garbage_juice%1","CH:maggot%0.007","SP%20 AND CR:garbage_juice%0.1 AND CH:water>dirty_water,garbage_juice%1"],["M1","M1","M1"]],
breakInto:"maggot",
category: "variety_mod",
state: "solid",
burn: .01,
burnTime: 300,
burnInto: "ash",
reactions: {
"fire": { elem1: "ash", elem2: "female_fly", elem3: "maggot", elem4: "fly_egg" },
}
},
elements.garbage_juice = {
//debut: update 14(failed debut: update 11)
color: ["#6B7A1A", "#60742E", "#5E823C"],
excludeRandom: false,
behavior: behaviors.LIQUID,
stain:0.0025,
category: "variety_mod",
state: "liquid",
reactions: {
"disinfectant": { elem1: "dirty_water", elem2: "stench"},
}
},
elements.banana = {
//debut:update 16
color: ["#FCE47D","#EEC758"],
excludeRandom: false,
behavior: [["XX","ST:vine","XX"],["ST:vine","CH:rotten_banana%0.005","ST:vine"],["M2 AND ","M1","M2"]],
category: "variety_mod",
breakInto:["mashed_banana","juice"],
breakIntoColor: "#D4A930",
state: "solid",
reactions: {
"dirty_water": { elem1: "rotten_banana" },
}
},
elements.mashed_banana = {
//debut:update 16
color: ["#FCE47D","#D4A930"],
excludeRandom: false,
behavior: [["XX","CR:juice%0.01","XX"],["ST%75","Ch:mold%0.015","ST%75"],["M1","M1","M1"]],
category: "variety_mod",
state: "solid",
reactions: {
"yogurt": { elem1: "yogurt" },
"milk": {elem1: "fruit_milk"},
}
},
elements.rotten_banana = {
//debut:update16
color: ["#7e7c29","#64571c","#4a3e16"],
excludeRandom: false,
behavior: [["XX","ST:vine AND CR:juice%0.01 AND CR:fly_egg,fruitfly_egg%0.0085 AND SP","XX"],["ST:vine AND SP","CH:dirt%0.1","ST:vine AND SP"],["M2","M1","M2"]],
category: "variety_mod",
breakInto:"mashed_banana",
state: "solid",
reactions: {
"disinfectant": { elem1: "mold" },
"worm": { elem1: "dirt", elem2: "mold"},
"maggot": { elem1: "dirt", elem2: "mold"},
"fruitfly_maggot": { elem1: "dirt", elem2: "mold"},
}
},
elements.mold = {
//debut:update 17
color: ["#6B7A1A", "#60742E", "#5E823C"],
excludeRandom: false,
behavior: [["CH:rotten_meat,rotten_cheese,rotten_banana>mold%0.07","SP","CH:rotten_meat,rotten_cheese,rotten_banana>mold%0.07"],["CH:rotten_meat,rotten_cheese,rotten_banana>mold%0.07","CH:dirt%0.001","CH:rotten_meat,rotten_cheese,rotten_banana>mold%0.07"],["M1 AND CH:rotten_meat,rotten_cheese,rotten_banana>mold%0.07","M1","M1 AND CH:rotten_meat,rotten_cheese,rotten_banana>mold%0.07"]],
category: "variety_mod",
state: "solid",
reactions: {
"disinfectant": { elem1: "dirt", elem2: "fruitfly_egg", elem3: "stench", elem4: "fruitfly_maggot", elem5: "mold", elem6: "mold" },
}
},
elements.zombie = {
//debut: update 9
hidden: false,
color: ["#75816B","#4D6B53"],
category: "variety_mod",
properties: {
dead: false,
dir: 1,
panic: 1
},
tick: function(pixel) {
if (isEmpty(pixel.x, pixel.y+1)) {
createPixel("z_body", pixel.x, pixel.y+1);
pixel.element = "z_head";
}
else if (isEmpty(pixel.x, pixel.y-1)) {
createPixel("z_head", pixel.x, pixel.y-1);
pixelMap[pixel.x][pixel.y-1].color = pixel.color;
pixel.element = "z_body";
}
else {
deletePixel(pixel.x, pixel.y);
}
},
related: ["z_body","z_head"],
cooldown: defaultCooldown
},
elements.z_head = {
//debut: update 9
hidden: true,
color: ["#75816B","#4D6B53"],
category: "variety_mod",
breakInto: ["rotten_meat","bone","bone","blood"],
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,"rotten_meat");
return
}
}
// Find the body
if (!isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "z_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 (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("infection", 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; }
},
density: 1030,
state: "solid",
conduct: .05,
tempHigh: 250,
stateHigh: "rotten_meat",
burn: .01,
burnTime: 200,
burnInto: "rotten_meat",
reactions: {
"head": { elem2 : "z_head" , chance:1.0 },
"body": { elem2 : "z_body" , chance:1.0 },
"disinfectant": {elem1:"head"},
},
},
elements.z_body = {
//debut: update 9
hidden: true,
color: ["#5DE2E7","#047e99","#7f5fb0"],
category: "variety_mod",
breakInto: ["rotten_meat","rotten_meat","bone","blood"],
properties: {
dead: false,
dir: 1,
panic: 0
},
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 == "z_head") {
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 bone if pixelTicks-dead > 500
if (pixelTicks-pixel.dead > 200 && Math.random() < 0.1) {
changePixel(pixel,"rotten_meat");
}
return
}
// Find the head
if (!isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "z_head") {
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 }
if (pixel.burning) {
pixel.panic += 0.1;
if (head && pixelTicks-pixel.burnStart > 240) {
pixel.color = head.color;
}
}
else if (pixel.panic > 0) {
pixel.panic -= 0.1;
}
if (isEmpty(pixel.x, pixel.y-1)) {
// create blood if decapitated 10% chance
if (Math.random() < 0.1 && !pixel.charge) {
createPixel("infection", 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 : pixel.panic+1)) { // Move 10% chance
var movesToTry = [
[1*pixel.dir,0],
[1*pixel.dir,-1],
];
// 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]);
break;
}
}
}
// 15% chance to change direction
if (Math.random() < 0.15) {
pixel.dir *= -1;
}
// homeostasis
if (pixel.temp > 37) { pixel.temp -= 1; }
else if (pixel.temp < 37) { pixel.temp += 1; }
}
},
density: 1035,
state: "solid",
conduct: .05,
tempHigh: 250,
stateHigh: "rotten_meat",
burn: .01,
burnTime: 300,
burnInto: "rotten_meat",
forceSaveColor: true,
reactions: {
"head": { elem2 : "z_head" , chance:1.0 },
"body": { elem2 : "z_body" , chance:1.0 },
"disinfectant": {elem1:"body"},
},
},
elements.growth_Fluid = {
//debut: update 13
color: "#d1b74f",
excludeRandom: false,
behavior: [["XX","XX","XX"],["M2","DL%1","M2"],["M1","M1","M1"]],
category: "variety_mod",
state: "liquid",
reactions: {
"water": { elem1: "disinfectant"},
}
};
elements.strange_Cell = {
//debut: update 12
color: "#b150d4",
excludeRandom: false,
behavior: [["M1%5","ST%5 AND M1%5 AND EX:9>random","M1%5"],["SP","LB:random%0.05 AND RT:1%10","SP"],["M1%5","SW AND SH AND M1%5 AND EX:9>variety_mod%1","M1%5"]],
category: "variety_mod",
state: "solid",
tempHigh: 3000,
stateHigh:"loopy",
reactions: {
"gray_goo": { elem1: "loopy", elem2: "explosion"},
}
},
elements.variety_mod = {
//debut: update 15
color: "#ff0000",
excludeRandom: false,
behavior: [["XX","XX","XX"],["XX","CH:moss,hello_world,female_fly,male_fly,fly_egg,maggot,disinfectant,garbage_bag,garbage,garbage_juice,zombie,growth_Fluid,strange_Cell","XX"],["XX","XX","XX"]],
category: "variety_mod",
state: "solid",
related: ["moss","hello_world","female_fly","male_fly","fly_egg","maggot","fruitfly_egg","banana","mold","disinfectant","garbage_bag","garbage","garbage_juice","zombie","growth_Fluid","strange_Cell"],
cooldown: defaultCooldown
};