From c6d652372c4db1520a0b1782a632141c17c9fb27 Mon Sep 17 00:00:00 2001 From: Agni Rammohan <103090218+agni2012@users.noreply.github.com> Date: Wed, 16 Jul 2025 23:09:11 -0700 Subject: [PATCH 1/4] Update copypaste.js --- mods/copypaste.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/copypaste.js b/mods/copypaste.js index c3cbf81d..1bfa9101 100644 --- a/mods/copypaste.js +++ b/mods/copypaste.js @@ -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"); From db2970812ac9ca927669d71b8789c547326c93a3 Mon Sep 17 00:00:00 2001 From: Cube14yt Date: Thu, 17 Jul 2025 14:45:08 +0800 Subject: [PATCH 2/4] Update coldblooded.js --- mods/coldblooded.js | 59 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/mods/coldblooded.js b/mods/coldblooded.js index 44e37dc3..4fe04f17 100644 --- a/mods/coldblooded.js +++ b/mods/coldblooded.js @@ -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" }, } } From dbee9dbd094dfab4ae14600d9bea9aee76a9ae58 Mon Sep 17 00:00:00 2001 From: a-ReaL-EngInEer Date: Fri, 18 Jul 2025 12:25:40 -0400 Subject: [PATCH 3/4] Create variety_mod.js --- mods/variety_mod.js | 581 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 581 insertions(+) create mode 100644 mods/variety_mod.js diff --git a/mods/variety_mod.js b/mods/variety_mod.js new file mode 100644 index 00000000..4e70b719 --- /dev/null +++ b/mods/variety_mod.js @@ -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 + +}; From fc606442fde157f445b63a3eb6c64838395ad429 Mon Sep 17 00:00:00 2001 From: emwimcdo <135271728+emwimcdo@users.noreply.github.com> Date: Fri, 18 Jul 2025 13:44:37 -0400 Subject: [PATCH 4/4] This is my mod, LimesAdditions.js This adds an EXPLOSION tool, admantine and it's states, as well as Cats, vomit, and hairball. Also adds a heat conductive wall called HotStuff --- mods/LimesAdditions.js | 240 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 mods/LimesAdditions.js diff --git a/mods/LimesAdditions.js b/mods/LimesAdditions.js new file mode 100644 index 00000000..dee1132a --- /dev/null +++ b/mods/LimesAdditions.js @@ -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, +} \ No newline at end of file