From ed76d8c70926d9ec47eee2776f9029572af2a4cf Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Sat, 15 Feb 2025 00:06:54 -0800 Subject: [PATCH 01/69] better nutrition and oxygen distribution --- mods/biology.js | 285 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 227 insertions(+), 58 deletions(-) diff --git a/mods/biology.js b/mods/biology.js index 646c1961..2f94e9c6 100644 --- a/mods/biology.js +++ b/mods/biology.js @@ -180,7 +180,7 @@ behaviorRules.ADB = function() { }, doBioNorm = function(pixel) { -if ((Math.random() > 0.92 && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() < (pixel.alcoDepri / 100) && pixel.alcoholic === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() > 0.60 && pixel.sick === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() > 0.5 && pixel.poisoned === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (pixel.burning === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (pixel.temp > 53 && pixel.nutrition > 0 && pixel.oxygen > 0) || (pixel.temp < -10 && pixel.nutrition > 0 && pixel.oxygen > 0) || Math.random() > 0.85 && Math.random() < (pixel.burnt / 100)) { +if ((Math.random() > 0.92 && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() < (pixel.fentDepri / 100) && pixel.fenAddict === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() < (pixel.alcoDepri / 100) && pixel.alcoholic === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() > 0.60 && pixel.sick === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (Math.random() > 0.5 && pixel.poisoned === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (pixel.burning === true && pixel.nutrition > 0 && pixel.oxygen > 0) || (pixel.temp > 53 && pixel.nutrition > 0 && pixel.oxygen > 0) || (pixel.temp < -10 && pixel.nutrition > 0 && pixel.oxygen > 0) || Math.random() > 0.85 && Math.random() < (pixel.burnt / 100)) { pixel.nutrition -= 0.5 pixel.oxygen-- } @@ -238,6 +238,13 @@ if (pixel.alcoTime < (pixelTicks - 10000) && pixel.alcoholic === true && Math.ra pixel.alcoholic = false pixel.alcoRecover = true } +if ((pixel.fentDepri || pixel.fentDepri === 0) && pixel.fenAddict === true) { + pixel.fentDepri += 1 +} +if (pixel.poisonImmune === true) { + pixel.fentDepri = undefined + pixel.fenAddict = false +} if (pixel.poisonImmune === true && pixel.poisoned != false) { pixel.poisoned = false } @@ -292,6 +299,9 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } @@ -331,6 +341,18 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { hitPixel.speed += 1 pixel.speed -= 1 } + if (hitPixel.oxygen > pixel.oxygen) { + hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) + pixel.oxygen += (elements[hitPixel.element].oxygTrans) + } + if (hitPixel.nutrition > pixel.nutrition) { + hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) + pixel.nutrition += (elements[hitPixel.element].nutrTrans) + } + if (hitPixel.speed > pixel.speed) { + hitPixel.speed -= 1 + pixel.speed += 1 + } if (hitPixel.alcoholic !== true && pixel.alcoholic === true && Math.random() > 0.85) { hitPixel.alcoholic = true hitPixel.alcoTime = pixel.alcoTime @@ -345,17 +367,8 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.oxygen > pixel.oxygen) { - hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) - pixel.oxygen += (elements[hitPixel.element].oxygTrans) - } - if (hitPixel.nutrition > pixel.nutrition) { - hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) - pixel.nutrition += (elements[hitPixel.element].nutrTrans) - } - if (hitPixel.speed > pixel.speed) { - hitPixel.speed -= 1 - pixel.speed += 1 + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -367,7 +380,6 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { hitPixel.poisoned = true } if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { - hitPixel.poisoned = false hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -397,6 +409,18 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { hitPixel.speed += 1 pixel.speed -= 1 } + if (hitPixel.oxygen > pixel.oxygen) { + hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) + pixel.oxygen += (elements[hitPixel.element].oxygTrans) + } + if (hitPixel.nutrition > pixel.nutrition) { + hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) + pixel.nutrition += (elements[hitPixel.element].nutrTrans) + } + if (hitPixel.speed > pixel.speed) { + hitPixel.speed -= 1 + pixel.speed += 1 + } if (hitPixel.alcoholic !== true && pixel.alcoholic === true && Math.random() > 0.85) { hitPixel.alcoholic = true hitPixel.alcoTime = pixel.alcoTime @@ -411,17 +435,8 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.oxygen > pixel.oxygen) { - hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) - pixel.oxygen += (elements[hitPixel.element].oxygTrans) - } - if (hitPixel.nutrition > pixel.nutrition) { - hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) - pixel.nutrition += (elements[hitPixel.element].nutrTrans) - } - if (hitPixel.speed > pixel.speed) { - hitPixel.speed -= 1 - pixel.speed += 1 + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -433,7 +448,6 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { hitPixel.poisoned = true } if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { - hitPixel.poisoned = false hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -489,6 +503,9 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } @@ -499,7 +516,6 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { hitPixel.poisoned = true } if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { - hitPixel.poisoned = false hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -615,6 +631,9 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } @@ -694,6 +713,9 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } @@ -773,6 +795,9 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } @@ -852,6 +877,9 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } @@ -976,13 +1004,25 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { pixel.oxygen -= (elements[pixel.element].oxygTrans) } if (hitPixel.nutrition < pixel.nutrition) { - hitPixel.nutrition += elements[pixel.element].nutrTrans - pixel.nutrition -= elements[pixel.element].nutrTrans + hitPixel.nutrition += (elements[pixel.element].nutrTrans) + pixel.nutrition -= (elements[pixel.element].nutrTrans) } if (hitPixel.speed < pixel.speed) { hitPixel.speed += 1 pixel.speed -= 1 } + if (hitPixel.oxygen > pixel.oxygen) { + hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) + pixel.oxygen += (elements[hitPixel.element].oxygTrans) + } + if (hitPixel.nutrition > pixel.nutrition) { + hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) + pixel.nutrition += (elements[hitPixel.element].nutrTrans) + } + if (hitPixel.speed > pixel.speed) { + hitPixel.speed -= 1 + pixel.speed += 1 + } if (hitPixel.alcoholic !== true && pixel.alcoholic === true && Math.random() > 0.85) { hitPixel.alcoholic = true hitPixel.alcoTime = pixel.alcoTime @@ -997,16 +1037,19 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.85) { + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } + if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } - if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.65) { + if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.75) { hitPixel.poisonImmune = true } - if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.85) { + if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.95) { hitPixel.poisoned = true } - if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.65) { + if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -1025,13 +1068,25 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { pixel.oxygen -= (elements[pixel.element].oxygTrans) } if (hitPixel.nutrition < pixel.nutrition) { - hitPixel.nutrition += elements[pixel.element].nutrTrans - pixel.nutrition -= elements[pixel.element].nutrTrans + hitPixel.nutrition += (elements[pixel.element].nutrTrans) + pixel.nutrition -= (elements[pixel.element].nutrTrans) } if (hitPixel.speed < pixel.speed) { hitPixel.speed += 1 pixel.speed -= 1 } + if (hitPixel.oxygen > pixel.oxygen) { + hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) + pixel.oxygen += (elements[hitPixel.element].oxygTrans) + } + if (hitPixel.nutrition > pixel.nutrition) { + hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) + pixel.nutrition += (elements[hitPixel.element].nutrTrans) + } + if (hitPixel.speed > pixel.speed) { + hitPixel.speed -= 1 + pixel.speed += 1 + } if (hitPixel.alcoholic !== true && pixel.alcoholic === true && Math.random() > 0.85) { hitPixel.alcoholic = true hitPixel.alcoTime = pixel.alcoTime @@ -1046,16 +1101,19 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.85) { + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } + if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } - if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.65) { + if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.75) { hitPixel.poisonImmune = true } - if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.85) { + if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.95) { hitPixel.poisoned = true } - if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.65) { + if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -1074,13 +1132,25 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { pixel.oxygen -= (elements[pixel.element].oxygTrans) } if (hitPixel.nutrition < pixel.nutrition) { - hitPixel.nutrition += elements[pixel.element].nutrTrans - pixel.nutrition -= elements[pixel.element].nutrTrans + hitPixel.nutrition += (elements[pixel.element].nutrTrans) + pixel.nutrition -= (elements[pixel.element].nutrTrans) } if (hitPixel.speed < pixel.speed) { hitPixel.speed += 1 pixel.speed -= 1 } + if (hitPixel.oxygen > pixel.oxygen) { + hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) + pixel.oxygen += (elements[hitPixel.element].oxygTrans) + } + if (hitPixel.nutrition > pixel.nutrition) { + hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) + pixel.nutrition += (elements[hitPixel.element].nutrTrans) + } + if (hitPixel.speed > pixel.speed) { + hitPixel.speed -= 1 + pixel.speed += 1 + } if (hitPixel.alcoholic !== true && pixel.alcoholic === true && Math.random() > 0.85) { hitPixel.alcoholic = true hitPixel.alcoTime = pixel.alcoTime @@ -1095,16 +1165,19 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.85) { + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } + if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } - if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.65) { + if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.75) { hitPixel.poisonImmune = true } - if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.85) { + if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.95) { hitPixel.poisoned = true } - if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.65) { + if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -1123,13 +1196,25 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { pixel.oxygen -= (elements[pixel.element].oxygTrans) } if (hitPixel.nutrition < pixel.nutrition) { - hitPixel.nutrition += elements[pixel.element].nutrTrans - pixel.nutrition -= elements[pixel.element].nutrTrans + hitPixel.nutrition += (elements[pixel.element].nutrTrans) + pixel.nutrition -= (elements[pixel.element].nutrTrans) } if (hitPixel.speed < pixel.speed) { hitPixel.speed += 1 pixel.speed -= 1 } + if (hitPixel.oxygen > pixel.oxygen) { + hitPixel.oxygen -= (elements[hitPixel.element].oxygTrans) + pixel.oxygen += (elements[hitPixel.element].oxygTrans) + } + if (hitPixel.nutrition > pixel.nutrition) { + hitPixel.nutrition -= (elements[hitPixel.element].nutrTrans) + pixel.nutrition += (elements[hitPixel.element].nutrTrans) + } + if (hitPixel.speed > pixel.speed) { + hitPixel.speed -= 1 + pixel.speed += 1 + } if (hitPixel.alcoholic !== true && pixel.alcoholic === true && Math.random() > 0.85) { hitPixel.alcoholic = true hitPixel.alcoTime = pixel.alcoTime @@ -1144,16 +1229,19 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.85) { + if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + hitPixel.fentDepri = pixel.fentDepri + } + if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true } - if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.65) { + if (hitPixel.poisonImmune != true && pixel.poisonImmune == true && Math.random() > 0.75) { hitPixel.poisonImmune = true } - if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.85) { + if (hitPixel.poisoned != true && pixel.poisoned == true && Math.random() > 0.95) { hitPixel.poisoned = true } - if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.65) { + if (hitPixel.immune != true && pixel.immune == true && Math.random() > 0.75) { hitPixel.immune = true } if (hitPixel.burnt > 0 && (!pixel.burnt || pixel.burnt < hitPixel.burnt && pixel.burnt < 51) && Math.random() > 0.8) { @@ -1243,9 +1331,12 @@ elements.epidermis = { } } } - if (pixel.temp < 36 && Math.random() < 0.1) { + if (pixel.temp < 36.5 && Math.random() < 0.1) { pixel.temp += 1; } + else if (pixel.temp > 37 && Math.random() < 0.1) { + pixel.temp -= 1; + } doBioNorm(pixel); doDefaults(pixel); }, @@ -1370,9 +1461,12 @@ elements.cloak_skin = { } } } - if (pixel.temp < 36 && Math.random() < 0.1) { + if (pixel.temp < 36.5 && Math.random() < 0.1) { pixel.temp += 1; } + else if (pixel.temp > 37 && Math.random() < 0.1) { + pixel.temp -= 1; + } if (!isEmpty(pixel.x, pixel.y-1, true)) { var hitPixel = pixelMap[pixel.x][pixel.y-1] if (elements[hitPixel.element].movable) { @@ -1680,10 +1774,10 @@ elements.attached_hair = { category: "structural", behavior: behaviors.WALL, tick: function(pixel) { - if (Math.random() < 0.005) { + if (Math.random() < 0.001) { if (pixel.dir === "up") { if (isEmpty(pixel.x,pixel.y-1)) { - if (Math.random() > 0.2) { + if (Math.random() > 0.25) { createPixel("attached_hair",pixel.x,pixel.y-1) pixelMap[pixel.x][pixel.y-1].dir = "up" } @@ -1695,7 +1789,7 @@ elements.attached_hair = { } else if (pixel.dir === "down") { if (isEmpty(pixel.x,pixel.y+1)) { - if (Math.random() > 0.2) { + if (Math.random() > 0.25) { createPixel("attached_hair",pixel.x,pixel.y+1) pixelMap[pixel.x][pixel.y+1].dir = "down" } @@ -1707,7 +1801,7 @@ elements.attached_hair = { } else if (pixel.dir === "left") { if (isEmpty(pixel.x-1,pixel.y)) { - if (Math.random() > 0.2) { + if (Math.random() > 0.25) { createPixel("attached_hair",pixel.x-1,pixel.y) pixelMap[pixel.x-1][pixel.y].dir = "left" } @@ -1719,7 +1813,7 @@ elements.attached_hair = { } else if (pixel.dir === "right") { if (isEmpty(pixel.x+1,pixel.y)) { - if (Math.random() > 0.2) { + if (Math.random() > 0.25) { createPixel("attached_hair",pixel.x+1,pixel.y) pixelMap[pixel.x+1][pixel.y].dir = "right" } @@ -1866,9 +1960,12 @@ elements.hairy_skin = { } } } - if (pixel.temp < 36 && Math.random() < 0.1) { + if (pixel.temp < 36.5 && Math.random() < 0.1) { pixel.temp += 1; } + else if (pixel.temp > 37 && Math.random() < 0.1) { + pixel.temp -= 1; + } doDefaults(pixel); doBioNorm(pixel); }, @@ -3890,6 +3987,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.poisonImmune === true && Math.random() > 0.5) { pixel.poisoned = false pixel.sick = false @@ -3923,6 +4029,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks @@ -3969,6 +4084,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks @@ -4007,6 +4131,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks @@ -4053,6 +4186,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks @@ -4089,6 +4231,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks @@ -4135,6 +4286,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks @@ -4173,6 +4333,15 @@ elements.intestines = { pixel.alcoDepri = 0 } } + if (hitPixel.fent === true && Math.random() > 0.5) { + if (pixel.fentDepri) { + pixel.fentDepri = 0 + } + if (Math.random() > 0.5) { + pixel.fenAddict = true + pixel.fentDepri = 0 + } + } if (hitPixel.alcoholic === true && Math.random() > 0.95) { pixel.alcoholic = true pixel.alcoTime = pixelTicks From f33ff01e9d26e8270870cf4a6dfac483290473ec Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Sat, 15 Feb 2025 14:43:09 -0500 Subject: [PATCH 02/69] Create README.txt --- lang/README.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 lang/README.txt diff --git a/lang/README.txt b/lang/README.txt new file mode 100644 index 00000000..085b1bb6 --- /dev/null +++ b/lang/README.txt @@ -0,0 +1,5 @@ +Translation updates to this GitHub repo are no longer accepted! + +If you'd like to contribute translations, you must use the new Crowdin system here: https://crowdin.com/editor/sandboxels + +For more information, see the Translation Page: https://sandboxels.r74n.com/translate From ca93d5be95aeb8b57b3184bf490124caef358fab Mon Sep 17 00:00:00 2001 From: An Orbit <68935009+orbit-loona@users.noreply.github.com> Date: Sat, 15 Feb 2025 20:01:23 -0500 Subject: [PATCH 03/69] not a'aa --- mods/a_mod_by_alice.js | 70 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index 4086ae75..0805f486 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -5759,6 +5759,38 @@ color1 and color2 spread through striped paint like dye does with itself. col } clearInterval(renderInterval); renderInterval = window.setInterval(drawLayers, 1000/60); + viewInfo[4] = { + name: 'element', + pixel: function(pixel,ctx) { + var data = elements[pixel.element]; + var _color = data.color; + if(Array.isArray(_color)) { + _color = _color[Math.floor(pixelTicks / 6) % _color.length] + }; + drawSquare(ctx,_color,pixel.x,pixel.y,undefined,1 - (data.alpha ?? 0)) + } + }; + viewInfo[5] = { + name: 'velocity', + pixel: function(pixel,ctx) { + var data = elements[pixel.element]; + var vx = pixel.vx ?? 0; + var vy = pixel.vy ?? 0; + var _color = null; + if(vx === 0 && vy === 0) { + _color = "rgb(15,15,15)" + } else { + var magnitude = Math.sqrt ((vx ** 2) + (vy ** 2)); + var direction = Math.atan2(pixel.vy ?? 0,pixel.vx ?? 0)*180/Math.PI; + if(direction < 0) { direction = scale(direction,-180,0,360,180) }; + hue = direction; + sat = 100; + lig = bound(scale(magnitude,0,100,10,100),0,100); + _color = "hsl("+hue+","+sat+"%,"+lig+"%)"; + }; + drawSquare(ctx,_color,pixel.x,pixel.y,undefined,1 - (data.alpha ?? 0)) + } + }; canvasLayers.pressure = document.createElement("canvas"); canvasLayersPre.push(canvasLayers.pressure); function drawPressure() { @@ -11735,6 +11767,7 @@ color1 and color2 spread through striped paint like dye does with itself. col }; elements.planet_cracker = { color: "#ffc8ba", + excludeRandom: true, behavior: behaviors.WALL, properties: { active: true, @@ -15232,6 +15265,7 @@ Pixel size (rendering only): (Use if the save looks cut o }; elements.light_petroleum_fuel_gas = { //it's not liquified, and sandboxels doesn't even have a pressure system, and there is no generic name for uncompressed, gaseous "L"PG, so we need a different name burn: 100, + burnTime: 10, color: "#b5b5b3", density: 3.5, tempLow: -44, @@ -15241,10 +15275,17 @@ Pixel size (rendering only): (Use if the save looks cut o pixel.burnStart = pixelTicks; } }, - burnInto: "explosion,explosion,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), + burnInto: "explosion,explosion,ignited_gas,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), state: "gas", behavior: behaviors.GAS, }; + elements.liquid_light_petroleum_fuel = { + burn: 50, + burnTime: 165, + fireElement: ["light_petroleum_fuel_gas","fire","fire"], + burnInto: "ignited_gas,fire,fire,smoke,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), + tempLow: -180 //based off of ethane + } elements.lamp_oil.tempHigh = 170; elements.lamp_oil.stateHigh = "lamp_oil_gas"; elements.lamp_oil.density = 810; @@ -21561,7 +21602,7 @@ Pixel size (rendering only): (Use if the save looks cut o elements[name] = { behavior: itsActuallySolidNotPowderLol ? behaviors.WALL : behaviors.POWDER, color: color, - category: "solids", + category: itsActuallySolidNotPowderLol ? "solids" : "powders", state: "solid", density: density ?? 1000, }; @@ -25916,7 +25957,6 @@ Pixel size (rendering only): (Use if the save looks cut o goldenZirconColors = ["#e99209","#fcb111","#d88208","#b97605"]; //heatTreated 0 = untreated, 1 = inertly (blue), 2 = with oxygen (golden) elements.zircon = { - //Corundum with different impurities, so I can copy/paste everything but the color color: ["#37130b","#a9301a","#3c1810"], properties: { heatTreated: 0 @@ -27959,9 +27999,16 @@ ${eightSpaces}Example full decor definition: bird:0.04:10:#FF0000,#FFFF00,#00FF0 console.error("pixelsize: supplied pixel size was zero or negative"); return false; } else { - document.querySelector('span[setting="pixelsize"]').querySelector("select").selectedIndex = pixelSizeSettingDropdownOtherOptionIndex; - settings.pixelsize = argPixelSize; - resizeCanvas(ctx.canvas.height,ctx.canvas.width,settings.pixelsize,false) + var confirmation = confirm("Due to changes in the game, this command must reset the canvas. Proceed?") + if(confirmation) { + document.querySelector('span[setting="pixelsize"]').querySelector("select").selectedIndex = pixelSizeSettingDropdownOtherOptionIndex; + settings.pixelsize = argPixelSize; + resizeCanvas(ctx.canvas.height,ctx.canvas.width,settings.pixelsize,false); + clearAll(); + return argPixelSize + } else { + return false + } }; } else { alert(pixelSize); @@ -28733,7 +28780,8 @@ Make sure to save your command in a file if you want to add this preset again.` elements.smash_ray = { color: ["#ff9999", "#8c8279"], tick: function(pixel) { - if(pixel.done) { deletePixel(pixel); return }; + if(!pixel) { return }; + if(pixel?.done) { deletePixel(pixel.x,pixel.y); return }; var x = pixel.x; for (var y = pixel.y; y < height; y++) { if (outOfBounds(x, y)) { @@ -35763,6 +35811,7 @@ Make sure to save your command in a file if you want to add this preset again.` }; elements.amba_tsunami = { color: ["#2449d1","#4b6adb","#8093d9"], + excludeRandom: true, behavior: behaviors.WALL, properties: { active: true, @@ -35842,6 +35891,7 @@ Make sure to save your command in a file if you want to add this preset again.` elements.megatsunami = { color: ["#1f2aa3","#2641c9","#3a57c9"], behavior: behaviors.WALL, + excludeRandom: true, properties: { active: true, }, @@ -35922,6 +35972,7 @@ Make sure to save your command in a file if you want to add this preset again.` elements.lava_tsunami = { color: ["#ff370a","#e84a23","#e67740"], behavior: behaviors.WALL, + excludeRandom: true, properties: { active: true, }, @@ -36012,6 +36063,7 @@ Make sure to save your command in a file if you want to add this preset again.` elements.lava_megatsunami = { color: ["#b32b10","#c24d1f","#d66924"], behavior: behaviors.WALL, + excludeRandom: true, properties: { active: true, }, @@ -39929,7 +39981,7 @@ Make sure to save your command in a file if you want to add this preset again.` }; }); function propPrompt() { - propProperty = prompt("Enter the property you want to set"); + propProperty = prompt("(Prop) Enter the property you want to set"); propValue = prompt("Enter the value you want to set to"); //special check: element if(propProperty === "element") { @@ -40108,7 +40160,7 @@ Make sure to save your command in a file if you want to add this preset again.` if(oldProperty === null) { oldProperty = "temp"; }; - numberAdjusterProperty = prompt("Enter the property you want to change"); + numberAdjusterProperty = prompt("(Number adjuster) Enter the value you want to change"); if(numberAdjusterProperty === null) { numberAdjusterProperty = oldProperty; return false; From 014c88cb58124bd1e929899bff5abcf73c57b73d Mon Sep 17 00:00:00 2001 From: JustAGenericUsername <92590792+JustAGenericUsername@users.noreply.github.com> Date: Sun, 16 Feb 2025 18:15:40 -0500 Subject: [PATCH 04/69] yea --- mods/nousersthings.js | 45 +++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/mods/nousersthings.js b/mods/nousersthings.js index dddd9106..1443a631 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -1575,8 +1575,6 @@ elements.blackhole_storage = { tick: function(pixel) { if (!pixel.bhcontents){ pixel.bhcontents = []; - } else { - pixel.decidedcontent = pixel.bhcontents[Math.floor(Math.random()*pixel.bhcontents.length)]; } for (var i = 0; i < squareCoords.length; i++) { var coord = squareCoords[i]; @@ -1588,15 +1586,15 @@ elements.blackhole_storage = { pixel.bhcontents.push(otherPixel); deletePixel(otherPixel.x, otherPixel.y); } - } else if (pixel.charge && isEmpty(x,y) && pixel.decidedcontent){ - var otherPixel = pixelMap[x][y]; - pixel.decidedcontent.x = x; - pixel.decidedcontent.y = y; - delete pixel.decidedcontent.del; - otherPixel = pixel.decidedcontent; - currentPixels.push(pixel.decidedcontent); - pixel.bhcontents.splice(pixel.bhcontents.indexOf(pixel.decidedcontent), 1); - pixel.decidedcontent = pixel.bhcontents[Math.floor(Math.random()*pixel.bhcontents.length)]; + } else if (pixel.charge && isEmpty(x,y) && pixel.bhcontents.length){ + let randomindex = Math.floor(Math.random()*pixel.bhcontents.length); + let releasedPixel = pixel.bhcontents[randomindex] + pixel.bhcontents.splice(randomindex, 1) + delete releasedPixel.del + releasedPixel.x = x + releasedPixel.y = y + pixelMap[x][y] = releasedPixel + currentPixels.push(releasedPixel) } } }, @@ -3905,4 +3903,27 @@ elements.false_vacuum = { }, movable: false, hardness: 1 -} \ No newline at end of file +} +let signInput = "Hello World!"; +elements.sign = { + color: "#FFFFFF", + darkText: true, + category: "special", + onSelect: function(){ + let signi = prompt("What text should the sign display?", signInput||"Hello World!") + signInput = signi; + }, + renderer: function(pixel, ctx){ + if (!pixel.sign){pixel.sign = signInput} + }, + movable: false +} +renderPostPixel(function(ctx){ + for (pixel of currentPixels){ + if (pixel.element == "sign" && pixel.sign){ + ctx.font = `12pt PressStart2P` + ctx.fillStyle = pixel.color; + ctx.fillText(pixel.sign, canvasCoord(pixel.x), canvasCoord(pixel.y)) + } + } +}) \ No newline at end of file From 520b20612967bb9dfadffa6dff004cf3d73dfdc2 Mon Sep 17 00:00:00 2001 From: JustAGenericUsername <92590792+JustAGenericUsername@users.noreply.github.com> Date: Sun, 16 Feb 2025 18:18:21 -0500 Subject: [PATCH 05/69] f --- mods/nousersthings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/nousersthings.js b/mods/nousersthings.js index 1443a631..5185528b 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -3921,7 +3921,7 @@ elements.sign = { renderPostPixel(function(ctx){ for (pixel of currentPixels){ if (pixel.element == "sign" && pixel.sign){ - ctx.font = `12pt PressStart2P` + ctx.font = `12pt Arial` ctx.fillStyle = pixel.color; ctx.fillText(pixel.sign, canvasCoord(pixel.x), canvasCoord(pixel.y)) } From 6e4a05ccb60a3bc27c826c872e5f164f7d4660c4 Mon Sep 17 00:00:00 2001 From: An Orbit <68935009+orbit-loona@users.noreply.github.com> Date: Sun, 16 Feb 2025 22:07:48 -0500 Subject: [PATCH 06/69] =?UTF-8?q?=CF=890.3=20corium?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/a_mod_by_alice.js | 277 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 270 insertions(+), 7 deletions(-) diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index 0805f486..b7cdb421 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -1,5 +1,5 @@ var modName = "mods/../a_mod_by_alice.js" //can't do "alice's mod" because the apostrophe will fuck up code, be too confusing, or both -//Version ω0.2 [???] +//Version ω0.3 [Corium update] var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js", "mods/aChefsDream.js", "mods/nousersthings.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, Sightnado, SquareScreamYT, and NoUsernameFound var dependencyExistence = dependencies.map(x => enabledMods.includes(x)); var allDependenciesExist = dependencyExistence.reduce(function(a,b) { return a && b }); @@ -2695,11 +2695,12 @@ color1 and color2 spread through striped paint like dye does with itself. col booleanSynonyms = [ "boolean", "bool", "boole", "boo", "bo", "bl", "b" ]; arraySynonyms = [ "arr", "a", "ar", "list" ]; defaultStringTypeValues = ["element","color","clone","changeTo","void","type","spawn"]; - defaultNumberTypeValues = ["x","y","charge","temp","start","vx","vy","chargeCD","start","burnStart","dir","panic","r","frequency","length","delay","volume","debounce","debounceLength","speed","fall","penetrateCounter","chargeCounter","spawnCounter","spawnTime","squadiusX","squadiusY","spawnTries","counter","attachDirection","value","range","xSpacing","ySpacing","maxPixels","explosionRadius","circleRadius","breakAroundRadius"]; + defaultNumberTypeValues = ["x","y","charge","temp","start","vx","vy","chargeCD","start","burnStart","dir","panic","r","frequency","length","delay","volume","debounce","debounceLength","speed","fall","penetrateCounter","chargeCounter","spawnCounter","spawnTime","squadiusX","squadiusY","spawnTries","counter","attachDirection","value","range","xSpacing","ySpacing","maxPixels","explosionRadius","circleRadius","breakAroundRadius","radiation"]; defaultBooleanTypeValues = ["burning","dead","hissing","following","dirLocked","del","didChargeBlueTinted","shooting","del","spawnAtPixelTemp","overwrite"]; defaultArrayTypeValues = ["attachOffsets"]; synonymsOfTrue = ["true", "t", "1", "yes"]; synonymsOfFalse = ["false", "f", "0", "no"]; + //FORCE DATA FOOTER TO 2 LINES SO IT NEVER HIDES INFO //ENABLE RUNNING CODE AFTER STATE ELEMENT AUTOGENERATION (runAfterAutogen) ## resizeCanvas = function(newHeight,newWidth,newPixelSize,clear) { var gameCanvas = document.getElementById("game"); @@ -4405,6 +4406,12 @@ color1 and color2 spread through striped paint like dye does with itself. col pixel1[key] = r.attr1[key]; } } + if (r.propAdds1) { // add value to each attribute to pixel1 + for (var key in r.propAdds1) { + pixel1[key] ??= 0; + pixel1[key] += r.propAdds1[key] + } + } if (r.stain1) { stainPixel(pixel1,r.stain1,0.05); } if (r.elem2 !== undefined) { // if r.elem2 is an array, set elem2 to a random element from the array, otherwise set it to r.elem2 @@ -4429,6 +4436,12 @@ color1 and color2 spread through striped paint like dye does with itself. col pixel2[key] = r.attr2[key]; } } + if (r.propAdds2) { // add value to each attribute to pixel2 + for (var key in r.propAdds2) { + pixel2[key] ??= 0; + pixel2[key] += r.propAdds2[key] + } + } if (r.stain2) { stainPixel(pixel2,r.stain2,0.05); } if(r.func && pixel1 && pixel2) { r.func(pixel1,pixel2); @@ -4653,7 +4666,7 @@ color1 and color2 spread through striped paint like dye does with itself. col color: ["#daff21","#a6ff00","#ffff00"], behavior: [ "XX|CR:radiation%0.1|XX", - "CR:radiation%0.1|XX|CR:radiation%0.1", + "CR:radiation%0.1|DEL%0.02 AND CH:rad_smoke%0.2|CR:radiation%0.1", "XX|CR:radiation%0.1|XX", ], tick: function(pixel) { @@ -5765,7 +5778,7 @@ color1 and color2 spread through striped paint like dye does with itself. col var data = elements[pixel.element]; var _color = data.color; if(Array.isArray(_color)) { - _color = _color[Math.floor(pixelTicks / 6) % _color.length] + _color = _color[Math.floor(pixelTicks / 10) % _color.length] }; drawSquare(ctx,_color,pixel.x,pixel.y,undefined,1 - (data.alpha ?? 0)) } @@ -13647,7 +13660,7 @@ Pixel size (rendering only): (Use if the save looks cut o }; var displayTemp = Math.round(_temp); if(displayTemp > 999999999) { - var shrinkage = (10 ** (Math.floor(Math.log10(_temp)) - 4)); + var shrinkage = (10 ** (Math.floor(Math.log10(_temp)) - 2)); displayTemp = [Math.floor(_temp/shrinkage),"e",Math.log10(shrinkage),suffix].join(""); } else { displayTemp = Math.round(_temp).toString() + suffix; @@ -13717,6 +13730,9 @@ Pixel size (rendering only): (Use if the save looks cut o statsDiv.style["font-size"] = "75%" } } + //Force stats bar to be 2 lines tall so it never hides info + var statsBar = document.getElementById("stats"); + statsBar.style.height = "3em"; } //Moved to window.onload where gameDiv should be guaranteed to exist } catch (error) { @@ -18523,7 +18539,27 @@ Pixel size (rendering only): (Use if the save looks cut o density: 6520, conduct: 0.19, hardness: 0.5, + forceAutoGen: true }, + eLists.NUCLEARFUEL = ['uranium', 'molten_uranium', 'enriched_uranium', 'molten_enriched_uranium', 'uranium_dioxide', 'enriched_uranium_dioxide', 'molten_uranium_dioxide', 'molten_enriched_uranium_dioxide', 'uranium233', 'uranium235', 'uranium_gas', 'plutonium', 'molten_plutonium', 'enriched_plutonium', 'molten_enriched_plutonium', 'plutonium_dioxide', 'molten_plutonium_dioxide', 'enriched_plutonium_dioxide', 'molten_enriched_plutonium_dioxide', 'uranium_gas', 'plutonium_gas']; + elements.molten_zirconium = { + tick: function(pixel) { + var neighbors = getVonNeumannNeighbors(pixel); + var lavaNeighbors = neighbors.filter(p => (eLists.MAGMA.includes(p.element)) || p.element.includes("molten_dirt")); + var fuelNeighbors = neighbors.filter(p => (eLists.NUCLEARFUEL.includes(p.element))); + if((lavaNeighbors.length > 0) && (fuelNeighbors.length > 0)) { + var aLavaNeighbor = randomChoice(lavaNeighbors); + var aFuelNeighbor = randomChoice(fuelNeighbors); + var coria = [pixel,aLavaNeighbor,aFuelNeighbor]; + for(var i = 0; i < coria.length; i++) { + var newPixel = coria[i]; + if(!newPixel) { continue }; + changePixel(newPixel,"corium",false); + if(newPixel.temp < elements.corium.temp) { newPixel.temp = elements.corium.temp }; //changeTemp upwards only + } + } + } + } newPowder("zirconia",["#F0ECDB","#FBF8EC"],5680,2715) elements.solid_zirconia = newPowder("zirconia",["#F0ECDB","#FBF8EC"],5680,2715,null,"zirconia",0.85,true); elements.molten_magnesium ??= {}; elements.molten_magnesium.tempHigh = 1090; @@ -18580,7 +18616,226 @@ Pixel size (rendering only): (Use if the save looks cut o }; elements.neutron.state = "gas"; elements.neutron.ignoreAir = "true"; - neighbors = [[-1,0],[0,-1],[1,0],[0,1]] + neighbors = [[-1,0],[0,-1],[1,0],[0,1]]; + + function coriumSteamExpHeat(pixel,x,y,radius,fire,smoke,power,damage) { + var distance = pyth(x,y,pixel.x,pixel.y); + var closeness = Math.abs(radius - distance); + var closenessProportion = closeness / radius; + pixel.temp += 25; + if(Math.random() < Math.sqrt(closenessProportion)) { + if(pixel.element.endsWith("water")) { + pixel.temp += 325; + pixelTempCheck(pixel) + } + }; + + //double velocity + if (!elements[pixel.element].excludeRandom && !elements[pixel.element].excludeVelocity) { + var angle = Math.atan2(pixel.y-y,pixel.x-x); + pixel.vx = Math.round((pixel.vx|0) + Math.cos(angle) * (radius * power/10)); + pixel.vy = Math.round((pixel.vy|0) + Math.sin(angle) * (radius * power/10)); + } + + } + + //and the reason I added zirconium in the first place + elements.corium = { + color: ["#F4D851","#A9B335","#E1710F"], + behavior: behaviors.MOLTEN, + tick: function(pixel) { + pixel.radiation ??= 150; + var range = Math.ceil(Math.log(((pixel.radiation ?? 50) ** (0.583)) + 1)) + if(isNaN(pixel.radiation)) { pixel.temp += 10; pixel.radiation = 150 }; + if(isNaN(pixel.temp)) { pixel.temp = 2400 }; + pixel.temp += (pixel.radiation / 75); + if(pixel.radiation > 0) { + for(var dx = -range; dx <= range; dx++) { + for(var dy = -range; dy <= range; dy++) { + if(Math.random() < (pixel.radiation * 0.003)) { + var distance = Math.sqrt((Math.abs(dx)**2) + (Math.abs(dy)**2)); + if(distance > range) { continue }; + var x = pixel.x + dx; + var y = pixel.y + dy; + if(isEmpty(x,y,false)) { + createPixelReturn("radiation",x,y).temp = pixel.temp; + } + } + } + } + }; + pixel.radiation *= 0.99975; + }, + reactions: { + "magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "felsic_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "intermediate_felsic_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "intermediate_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "ultramafic_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "crimson_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "blackpinkinitic_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "rainbow_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "nellish_magma": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_slag": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_steel": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_zirconium": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_zirconia": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_carbon": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_dirt": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_tuff": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_glass": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "molten_silica": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "fallout": { func(pixel1,pixel2) { + changePixel(pixel2,"corium",false); pixel2.radiation = pixel1.radiation / 2; pixel1.radiation = pixel1.radiation / 2 }, chance: 0.02 + }, + "iodine": { elem2: null }, + "caesium": { elem2: null }, + "barium": { elem2: null }, + "ash": { elem2: null }, + "liquid_irradium": { elem2: ["liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium",null], temp1: 1.5, propAdds1: { radiation: 10 } }, + "pure_water": { elem1: "intermediate_magma", elem2: "pure_water", changeTemp: true }, + "chilly_water": { elem1: "intermediate_magma", elem2: "pure_water", temp1: -500, temp2: -100 } + }, + hoverStat: function(pixel) { return "rad.lvl. " + (pixel.radiation ?? 150).toLocaleString(undefined,{maximumFractionDigits: 1}) }, + temp: 2400, + tempLow: 1400, //made up + stateLow: "solidified_corium", + tempHigh: 4400, //made up + viscosity: 8, //bad guesstrapolation from https://www.kns.org/files/pre_paper/36/16A-362%EA%B9%80%EC%9B%85%EA%B8%B0.pdf + category: "liquids", + state: "liquid", + density: 7058 //assuming a 0.456 U-Zr ratio, and with uranium dioxide's density of 10970 subject to Sandboxels's standard molten density approximation of -10% because no data is available, and 4700 for liquid ZrO2, but this doesn't account for the variety of other s*** that gets in corium + }; + + /*for(var key in elements.corium.reactions) { + var r = elements.corium.reactions[key] + if(r.elem1 !== "corium") { continue }; + elements[key] ??= {}; + elements[key].reactions ??= {}; + elements[key].reactions.corium ; + }*/ + + elements.solidified_corium = { + color: ["#5D4D36","#535F30","#414137"], + behavior: behaviors.POWDER, + tick: function(pixel) { + pixel.radiation ??= 10; + var range = Math.ceil(Math.log(((pixel.radiation ?? 10) ** (0.583)) + 1)) + pixel.temp += 2; + if(isNaN(pixel.radiation)) { pixel.temp += 3; pixel.radiation = 150 }; + for(var dx = -range; dx <= range; dx++) { + for(var dy = -range; dy <= range; dy++) { + if(Math.random() < 0.03 + (pixel.radiation * 0.0025)) { + var distance = Math.sqrt((Math.abs(dx)**2) + (Math.abs(dy)**2)); + if(distance > range) { continue }; + var x = pixel.x + dx; + var y = pixel.y + dy; + if(isEmpty(x,y,false)) { + createPixelReturn("radiation",x,y).temp = pixel.temp; + } + } + } + }; + pixel.radiation *= 0.9998; + }, + hoverStat: elements.corium.hoverStat, + reactions: { + "pure_water": { elem1: "andesite", elem2: "pure_water", changeTemp: true }, + "chilly_water": { elem1: "solidified_corium", elem2: ["chilly_water","steam"], temp1: -500, temp2: -100 }, + "liquid_irradium": { elem2: ["liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium",null], temp1: 1.5, propAdds1: { radiation: 10 } } + }, + temp: 50, + tempHigh: 1400, //made up + stateHigh: "corium", + category: "solids", + state: "solid", + density: 11800 //assuming a 0.456 U-Zr ratio, and with uranium dioxide's density of 10970 subject to Sandboxels's standard molten density approximation of -10% because no data is available, and 4700 for liquid ZrO2, but this doesn't account for the variety of other s*** that gets in corium + }; + + if(eLists.WATER) { + for(var i = 0; i < eLists.WATER.length; i++) { + var water = eLists.WATER[i]; + if(water == "chilly_water" || water == "pure_water") { continue }; + elements.corium.reactions[water] = { func(pixel1,pixel2) { + explodeAt(pixel1.x,pixel1.y,5,"fire,rad_steam,rad_steam,rad_steam,steam,steam,radiation","steam,radiation",null,coriumSteamExpHeat) + }, temp1: 50, chance: 0.01 } + } + }; + + elements.corium_gas = { + tick: elements.corium.tick, + hoverStat: elements.corium.hoverStat, + reactions: { + "liquid_irradium": { elem2: ["liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium","liquid_irradium",null], temp1: 1.5, propAdds1: { radiation: 10 } }, + "pure_water": { elem1: "intermediate_magma", elem2: "pure_water", changeTemp: true }, + "chilly_water": { elem1: "solidified_corium", elem2: "steam", temp1: -500, temp2: -100 } + }, + density: 20 + }; + + elements.pure_water.reactions.dirty_water = elements.pure_water.reactions.water + + radiationIncreaseOverrides = { + molten_uranium238: 1, + molten_actinium: 5, + molten_protactinium: 3, + molten_americium: 3, + molten_berkelium: 3, + molten_californium: 3, + molten_einsteinium: 5, + molten_fermium: 5, + molten_nihonium: 5, + molten_moscovium: 10, + molten_livermorium: 10, + molten_tennessine: 10, + molten_oganesson: 10, + molten_nihonium_oxide: 10, + molten_flerovium_oxide: 10, + molten_livermorium_oxide: 10, + "molten_p9-leeseocid": 10, + } + var radioactives = eLists.NUCLEARFUEL; radioactives.push("molten_uranium","molten_uranium238","molten_neptunium","molten_uranium238","molten_actinium","molten_protactinium","molten_americium","molten_berkelium","molten_californium","molten_einsteinium","molten_fermium","molten_nihonium","molten_moscovium","molten_livermorium","molten_tennessine","molten_oganesson","molten_nihonium_oxide","molten_flerovium_oxide","molten_livermorium_oxide","molten_p9-leeseocid") + for(var i = 0; i < radioactives.length; i++) { + var radioactive = radioactives[i]; + elements.corium.reactions[radioactive] ??= { elem2: null, temp1: 1, chance: 0.1, propAdds1: { radiation: radiationIncreaseOverrides[radioactive] ?? 2 } } + } + //Non-element: Liquid ammonia elements.liquid_ammonia = { color: "#bab6a9", @@ -23205,6 +23460,7 @@ Pixel size (rendering only): (Use if the save looks cut o stain: 0.01, _data: [particulateInfo._data[0], particulateInfo._data[1], "suspension"], } + if(eLists.WATER) { eLists.WATER.push(suspensionName) }; elements[suspensionName].reactions[suspensionName] = { "elem1":"water", "elem2":sedimentName, "chance": 0.001 }, elements[suspensionName].reactions[particulateName] = { "elem1": "water", "elem2":sedimentName, "chance": 0.0005 }, //Sediment element where lithification code resides @@ -23282,6 +23538,8 @@ Pixel size (rendering only): (Use if the save looks cut o }; }; }; + if(!eLists.WATER) { console.error(38309309) }; + if(eLists.WATER) { eLists.WATER.push("swamp_water","heavy_water","radioactive_water","milk") }; newPowder("calcite","#f5ecd0",2711,825,["carbon_dioxide","quicklime"],"calcium_carbonate_dust"); newPowder("aragonite","#e3c58d",2830,825,["carbon_dioxide","quicklime"],"calcium_carbonate_dust"); newPowder("vaterite","#e8ebd8",2540,825,["carbon_dioxide","quicklime"],"calcium_carbonate_dust"); @@ -23318,6 +23576,8 @@ Pixel size (rendering only): (Use if the save looks cut o }; }; runAfterLoad(function() { + eLists.MAGMA = Object.keys(elements).filter(x => x.includes("magma") && !(x.includes("vaporized")) && !(x.includes("cloud"))) + for(i = 0; i < sands.length; i++) { switch(sands[i]) { case "dirt": @@ -45730,7 +45990,10 @@ maxPixels (default 1000): Maximum amount of pixels/changes (if xSpacing and ySpa //END ## console.log("Mod loaded"); - window.addEventListener("load",function() {logMessage("a_mod_by_alice.js requires many other mods. Many of the elements and features added with it installed are actually added by the other mods it depends on.")}) + window.addEventListener("load",function() { + logMessage("a_mod_by_alice.js requires many other mods. Many of the elements and features added with it installed are actually added by the other mods it depends on.") + logMessage('These mods are libhooktick.js, chem.js, minecraft.js, Neutronium Mod.js, fey_and_more.js, velocity.js, ketchup_mod.js, moretools.js, aChefsDream.js, nousersthings.js. They were enabled automatically') + }) } catch (error) { alert(`Load failed (try reloading).\nThis is likely a sporadic failure caused by inconsistencies in how mods are loaded, and will likely fix itself in a refresh or two. If it persists, then it's an issue.\nError: ${error.stack}`); console.error(error) From d4c44b11000bdb940ac304338561d6c94d75ae77 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Tue, 18 Feb 2025 14:32:19 -0500 Subject: [PATCH 07/69] my first mod but better --- mods/charsonsmoduno.js | 2033 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2033 insertions(+) create mode 100644 mods/charsonsmoduno.js diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js new file mode 100644 index 00000000..96fb3f8e --- /dev/null +++ b/mods/charsonsmoduno.js @@ -0,0 +1,2033 @@ +//thanks r74n and sandboxels mod devs for the idea for making this and adding so much value to my gaming experience +//if one needs a desc for the mod list on the website it'd be something around "charson's mods compiled such as random foods and random elements asked for by random people, beta" +//thanks! + +//needs absolute zero to be set to -99999999999999999999999999999 + +//n2s - for food, change all instances of ', elem2:"head"' into nothing. + +elements.calcium_chloride = { + color: "#ffffff", + behavior: behaviors.STURDYPOWDER, + category: "powders", + hidden: true, + breakInto: ["calcium", "chlorine"], + state: "solid", + tempHigh: 772, + reactions: { + "sodium_carbonate": { elem1:"foam", elem2:"chalk" }, + } +}; + +if (!elements.calcium.reactions) { // Include this block once + elements.calcium.reactions = {} // This creates the property if it doesn't exist +} +elements.calcium.reactions.chlorine = { elem1: "calcium_chloride" } + +if (!elements.aluminum.reactions) { // Include this block once + elements.aluminum.reactions = {} // This creates the property if it doesn't exist +} +elements.aluminum.reactions.oxygen = { elem1: "alumina" } + +if (!elements.nitrogen.reactions) { // Include this block once + elements.nitrogen.reactions = {} // This creates the property if it doesn't exist +} +elements.nitrogen.reactions.fire = { elem1: "pyrane" } + +if (!elements.radiation.reactions) { // Include this block once + elements.radiation.reactions = {} // This creates the property if it doesn't exist +} +elements.radiation.reactions.dead_plant = { elem2: "radioactive_maple_seed" } +elements.radiation.reactions.ant = { elem2: "rad_ant" } +elements.radiation.reactions.sugar = { elem2: "powdered_lime" } +elements.radiation.reactions.soap = { elem2: "purificanol" } +elements.radiation.reactions.diamond = { elem2: "emerald" } + +if (!elements.melted_cheese.reactions) { // Include this block once + elements.melted_cheese.reactions = {} // This creates the property if it doesn't exist +} +elements.melted_cheese.reactions.sauce = { elem2: "akshajium" } + +if (!elements.sodium.reactions) { // Include this block once + elements.sodium.reactions = {} // This creates the property if it doesn't exist +} +elements.sodium.reactions.carbon_dioxide = { elem1: "sodium_carbonate" } + +elements.sodium_carbonate = { + color: "#ffffff", + behavior: behaviors.POWDER, + category: "powders", + hidden: true, + breakInto: ["sodium", "carbon_dioxide"], + state: "solid", + tempHigh: 851, + reactions: { + "calcium_chloride": { elem1:"foam", elem2:"chalk" }, + } +}; + +elements.silicon = { + color: ["#9EBFE2", "#686F89", "#9BA4AB", "#373D4D"], + behavior: behaviors.STURDYPOWDER, + desc: "Silicon is a chemical element. It has symbol Si and atomic number 14. It is a hard, brittle crystalline solid with a blue-grey metallic lustre, and is a tetravalent metalloid and semiconductor.", + category: "solids", + state: "solid", + tempHigh: 1414, + reactions: { + "oxygen": { elem1:"silicate", elem2:"pop" }, + } +}; + +elements.alumina = { + color: ["#989ECE", "#DADAFF", "#E6E1FF"], + behavior: behaviors.POWDER, + category: "powders", + hidden: true, + state: "solid", + tempHigh: 500, + stateHigh: "hyper_aluminum", + reactions: { + "silicate": { elem1:"kaolin", elem2:"kaolin" }, + } +}; + +elements.hyper_aluminum = { + color: ["#61829e", "#61829e", "#61829e", "#61829e", "#5872a7"], + behavior: behaviors.WALL, + category: "solids", + hidden: true, + state: "solid", + tempHigh: 9999999, + conduct: 1, + charge: 3, + stateHigh: "molten_aluminum", + hardness: 0.95, +}; + +elements.silicate = { + color: ["#A6B5B8", "#A7A8A0", "#665953", "#BDDAE8"], + behavior: behaviors.POWDER, + category: "powders", + hidden: true, + breakInto: "dust", + state: "solid", + tempHigh: 500, + stateHigh: "molten_silicon", + reactions: { + "alumina": { elem1:"kaolin", elem2:"kaolin" }, + } +}; + +elements.kaolin = { + color: ["#A6B5B8", "#A7A8A0", "#665953", "#BDDAE8"], + behavior: behaviors.POWDER, + category: "land", + hidden: true, + state: "solid", + tempHigh: 500, + stateHigh: "porcelain", + reactions: { + "fired_clay": { elem1:"porcelain", elem2:"porcelain" }, + "blood": { elem2: null }, + "dirt": { elem1: "clay", elem2:"clay_soil" }, + } +}; + +elements.chalk = { + color: ["#D8275D", "#E0527D", "#AF508C", "#BF73A3"], + stain: 0.5, + stainSelf: true, + canContain: true, + related: ["art", "calcium"], + customColor: true, + hidden: true, + category: "solids", + breakInto: "chalk_powder", + state: "solid", + tempHigh: 5900, + stateHigh: "ash", +}; + +elements.chalk_powder = { + color: ["#D8275D", "#E0527D", "#AF508C", "#BF73A3"], + stain: 0.3, + behavior: behaviors.POWDER, + stainSelf: true, + hidden: true, + customColor: true, + category: "powders", + state: "solid", + tempHigh: 5900, + stateHigh: "ash", +}; + +elements.powdered_lime = { + color: ["#96F10E", "#BEF00F"], + stain: 0.2, + hidden: true, + behavior: behaviors.POWDER, + category: "food", + state: "solid", + reactions: { + "water": { elem1:"foam", elem2:"limeade" }, + "head": { elem1: null, chance: 0.9 }, + } +}; + +elements.limeade = { + color: ["#96F10E", "#BEF00F", "#96F10E"], + alpha: 0.9, + stain: 0.1, + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + tempHigh: 105, + stateHigh: "foam", + tempLow: 0, + reactions: { + "head": { elem1: null, chance: 0.7 }, + } +}; + +//stupidity mod begins here + +elements.stupid = { + color: ["#eb3486", "#0affda", "#c7fa89"], + behavior: behaviors.POWDER, + category: "weapons", + viscosity: 10000, + state: "solid", + related: ["di_stupid", "tri_stupid"], + density: 100, + desc: "stupid", + temp: 20, + tempLow: 19, + tempHigh: 21, + reactions: { + "water": { elem1:"blaster", elem2:"nuke", chance: 0.001 }, + "stupid": { elem1:"cloner", elem2:"nuke", chance: 0.5 }, + "electric": { elem1:"di_stupid", elem2:"tri_stupid" }, + "dirt": { elem1:"tornado", elem2:"stupid", chance: 0.5 }, + } +}; + +elements.di_stupid = { + color: ["#0b3486", "#faffda", "#07fa89"], + behavior: behaviors.POWDER, + category: "weapons", + viscosity: 10000, + state: "solid", + density: 100, + hidden: true, + desc: "stupid", + temp: 20, + tempLow: 19, + tempHigh: 21, + reactions: { + "di_stupid": { elem1:"di_stupid", elem2:"tsunami", chance: 0.001 }, + "stupid": { elem1:"party_popper", elem2:"cloner" }, + "water": { elem1:"earthquake", elem2:"acid" }, + } +}; + +elements.almond = { + color: ["#855b34", "#9c836b", "#f5e7da"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + density: 100, + desc: "stupid", + temp: 20, + tempLow: 10, + tempHigh: 40, + stateHigh: "nut_sauce", + breakInto: "nut_sauce", + stateLow: "cloner", + conduct: 1, + reactions: { + "head": { elem1: null, chance: 0.55 }, + "juice": { elem1:"party_popper", elem2:"party_popper" }, + "water": { elem1:"nut_sauce", elem2:"almond_water" }, + } +}; + +elements.nut_sauce = { + color: ["#f2cba7", "#f5e7da"], + behavior: behaviors.LIQUID, + category: "food", + viscosity: 10000, + state: "liquid", + density: 100, + desc: "Highly flammable.", + temp: 20, + tempLow: 0, + tempHigh: 50, + hidden: true, + stateHigh: ["blaster", "floating_cloner"], + stateHighColor: "#EF5810", + stateLow: "glue", + conduct: 1, + reactions: { + "head": { elem1: null, chance: 0.9 }, + } +}; + +elements.tri_stupid = { + color: ["#ffffff", "#7a1d1d", "#000000"], + behavior: behaviors.POWDER, + category: "weapons", + viscosity: 10000, + state: "solid", + density: 100, + desc: "stupid", + temp: 20, + tempLow: 0, + hidden: true, + tempHigh: 40, + stateLow: "ice", + stateHigh: "magma", + conduct: 1, + reactions: { + "almond": { elem1:"hot_bomb", elem2:"cold_bomb" }, + "nut_sauce": { elem1:"heat_ray", elem2:"freeze_ray" }, + } +}; + +//milkandsoap aka milkandstupidity mod begins here + +elements.maple_syrup = { + color: "#a13d08", + behavior: behaviors.LIQUID, + category: "liquids", + viscosity: 100000, + state: "liquid", + density: 720, + isFood: true, + stain: 0.01, + desc: "english for sirop derable", + reactions: { + "head": { elem1: null, chance: 0.4 }, + } +}; + +elements.radioactive_maple_seed = { + color: ["#52d156", "#5d875f"], + behavior: behaviors.RADPOWDER, + behaviorOn: [ + "XX|XX|XX", + "XX|EX:2>popcorn|XX", + "XX|XX|XX", +], + category: "life", + viscosity: 100000, + hidden: true, + state: "solid", + isFood: true, + desc: "how does this work", + reactions: { + "dirt": { elem1:"maple_nut", elem2:"dirt" }, + "grass": { elem1:"maple_nut", elem2:"dirt" }, + "ant": { elem1: null, elem2:"rad_ant" } + } +}; + +elements.maple_nut = { + color: "#735e3b", + behavior: behaviors.POWDER, + category: "life", + viscosity: 100000, + state: "solid", + isFood: true, + hidden: true, + desc: "I dont think this is biologically accurate", + breakInto: ["maple_syrup", "maple_powder"], + reactions: { + "dirt": { elem1:"maple_plant", elem2:"maple_nut", chance: 0.001 }, + } +}; + +elements.maple_plant = { + color: "#735e3b", + behavior: behaviors.STURDYPOWDER, + category: "life", + viscosity: 100000, + state: "solid", + isFood: true, + hidden: true, + desc: "I dont think this is biologically accurate", + breakInto: "dead_plant", + burn: 90, + reactions: { + "dirt": { elem1:"maple_plant", elem2:"maple_nut", chance: 0.001 }, + "plant": { elem1:"maple_plant", elem2:"maple_plant", chance: 0.1 }, + "dead_plant": { elem1:"maple_plant", elem2:"maple_plant", chance: 0.3 }, + "water": { elem1:"maple_plant", elem2:"maple_plant", chance: 0.0001 }, + } +}; + +elements.maple_powder = { + color: "#9e6213", + behavior: behaviors.POWDER, + category: "food", + viscosity: 100000, + state: "solid", + hidden: true, + isFood: true, + reactions: { + "milk": { elem1:"foam", elem2:"maple_milk" }, + "clay": { elem1: null, elem2:"terracotta" }, + } +}; + +elements.red_terracotta = { + color: "#c96363", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + tempHigh: 500, + hidden: true, + stateHigh: "heated_terracotta", +}; + +elements.terracotta = { + color: ["#c98c63", "#B97140"], + hardness: 0.4, + singleColor: true, + behavior: behaviors.WALL, + category: "solids", + state: "solid", + tempHigh: 500, + stateHigh: "heated_terracotta", + breakInto: "brick_rubble", + breakIntoColor: "#A5775A", + reactions: { + "pyric_nitrite": { elem1:"red_terracotta", elem2: null }, + "sulfur": { elem1:"yellow_terracotta", elem2: null }, + "gold_coin": { elem1:"golden_terracotta", elem2: null }, + "scheele_green": { elem1:"green_terracotta", elem2: null }, + "rad_shard": { elem1:"teal_terracotta", elem2: null }, + "skibidi_soda": { elem1:"blue_terracotta", elem2: null }, + "violetium": { elem1:"purple_terracotta", elem2: null }, + } +}; + +elements.yellow_terracotta = { + color: "#c9ae63", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + hidden: true, + tempHigh: 500, + stateHigh: "heated_terracotta", +}; + +elements.golden_terracotta = { + color: ["#EEC211", "#DBC624", "#E8D417", "#E7DD66"], + behavior: behaviors.WALL, + category: "solids", + state: "solid", + hidden: true, + tempHigh: 500, + breakInto: ["gold", "terracotta"], + stateHigh: ["heated_terracotta", "molten_gold", "slag"], +}; + +elements.green_terracotta = { + color: "#63c96d", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + hidden: true, + tempHigh: 500, + stateHigh: "heated_terracotta", +}; + +elements.teal_terracotta = { + color: "#63c994", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + tempHigh: 500, + hidden: true, + stateHigh: "heated_terracotta", +}; + +elements.blue_terracotta = { + color: "#63b6c9", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + hidden: true, + tempHigh: 500, + stateHigh: "heated_terracotta", +}; + +elements.purple_terracotta = { + color: "#6f63c9", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + tempHigh: 500, + hidden: true, + stateHigh: "heated_terracotta", +}; + +elements.heated_terracotta = { + color: "#db773d", + behavior: behaviors.STURDYPOWDER, + category: "states", + state: "solid", + temp: 500, + tempHigh: 1000, + hidden: true, + tempLow: 20, + stateLow: ["teracotta", "purity"], +}; + +elements.maple_milk = { + color: "#f5e3cb", + behavior: behaviors.LIQUID, + category: "food", + viscosity: 100000, + state: "liquid", + desc: "a great drink", + hidden: true, + isFood: true, + reactions: { + "head": { elem1: null, chance: 0.9 }, + } +}; + +elements.purity = { + color: "#f0f7fc", + behavior: behaviors.WALL, + category: "soaps", + state: "solid", + tempHigh: 70, + hidden: true, + stateHigh: "soap", + stain: 1, +}; + +elements.purium = { + color: "#cededd", + behavior: behaviors.WALL, + category: "soaps", + state: "solid", + hidden: true, + tempHigh: 125, + stateHigh: "purificanol", + stain: 1, + conduct: 1, + breakInto: "purium_dust", +}; + +elements.purium_dust = { + color: ["#cededd", "#95c7c4", "#ffffff"], + behavior: behaviors.POWDER, + category: "soaps", + hidden: true, + state: "solid", + tempHigh: 125, + stateHigh: ["purity", "soap"], + stain: 1, + conduct: 1, +}; + +elements.invalid = { + color: ["#ff00dc", "#010001"], + behavior: [ + ["XX","CR:malware","XX"], + ["XX","XX","XX"], + ["M2","M1","M2"] + ], + category: "machines", + state: "solid", + tempHigh: 9999, + desc: "INVALID DESCRIPTION", + stateHigh: "fallout", + tempLow: -40, + stateLow: "random", + conduct: 1, + breakInto: "electric", + reactions: { + "electric": { elem1: "null", elem2:"null" }, + } +}; + +elements.null = { + color: ["#514a57", "#2c1040"], + behavior: behaviors.WALL, + category: "machines", + state: "solid", + desc: "null", + tempLow: -40, + breakInto: "random", + stateLow: "unknown", + conduct: 1, + hidden: true, + reactions: { + "electric": { elem1: "null", elem2:"null" }, + } +}; + +elements.purificanol = { + color: "#ffffff", + behavior: behaviors.LIQUID, + category: "soaps", + viscosity: 100, + state: "liquid", + desc: "soap 3.0", + extinguish: true, + stain: 0.1, + behaviorOn: [ + ["XX","CO:5","XX"], + ["CO:5","XX","CO:5"], + ["CO:5 AND M1","CO:5 AND M1","CO:5 AND M1"] +], + density: 999999999, + temp: 1, + tempLow: -273, + stateLow: "foam", + reactions: { + "dirt": { elem1: "foam", elem2: "purity" }, + "dead_bug": { elem1: "foam", elem2: "ant" }, + "uranium": { elem1: "foam", elem2: "lead" }, + "chalk_powder": { elem1: "foam", elem2: "foam" }, + "poison": { elem1: "foam", elem2: "antidote" }, + "infection": { elem1: "bless", elem2: ["vaccine", "antibody"] }, + "fallout": { elem1: "anti_soap", elem2: "contaminol" }, + "sand": { elem1: "foam", elem2: "purity" }, + "dust": { elem1: "foam", elem2: "purity" }, + "ash": { elem1: "foam", elem2: "purity" }, + "rock": { elem1: "foam", elem2: "porcelain" }, + "clay": { elem1: "foam", elem2: "porcelain" }, + "magma": { elem1: "foam", elem2: "purium" }, + "slag": { elem1: "foam", elem2: "purity" }, + "molten_slag": { elem1: "foam", elem2: "purium_dust" }, + "basalt": { elem1: "foam", elem2: "purity" }, + "slime": { elem1: "foam", elem2: "purity" }, + "dirty_water": { elem1: "foam", elem2: "water" }, + "blood": { elem1: "foam", elem2: "water" }, + "molten_iron": { elem1: "foam", elem2: "purium" }, + "molten_dirt": { elem1: "foam", elem2: "purium" }, + "molten_copper": { elem1: "foam", elem2: "purium" }, + "rust": { elem1: "foam", elem2: "purium_dust" }, + "water": { elem1: "foam", elem2: "bubble" }, + "ice": { elem1: "foam", elem2: "bubble" }, + "steam": { elem1: "foam", elem2: "bubble" }, + "mudstone": { elem1: "foam", elem2: "porcelain" }, + "rad_ant": { elem1: "foam", elem2: "ant" }, + "dead_plant": { elem1: "foam", elem2: "plant" }, + "frozen_plant": { elem1: "foam", elem2: "plant" }, + "smoke": { elem1: "foam", elem2: "bless" }, + "fire": { elem1: "foam", elem2: "bless" }, + "meat": { elem1: "foam", elem2: "cooked_meat" }, + "rotten_meat": { elem1: "foam", elem2: "cured_meat" }, + "cancer": { elem1: "foam", elem2: "dna" }, + "thermite": { elem1: "foam", elem2: "null" }, + }, +}; + +elements.rad_ant = { + color: ["#6ceb36", "#50e012"], + behavior: behaviors.LIQUID, + category: "life", + state: "solid", + hidden: true, + desc: "uh oh", + tempHigh: 100, + stateHigh: ["dead_bug", "radiation"], + reactions: { + "dirt": { elem1:"rad_ant", elem2:"radiation" }, + "grass": { elem1:"rad_ant", elem2:"radioactive_maple_seed" }, + "ant": { elem1:"rad_ant", elem2:"rad_ant" }, + "rock": { elem1:"rad_ant", elem2:"uranium" }, + } +}; + +elements.buttermilk = { + color: "#f4f5c1", + behavior: behaviors.LIQUID, + category: "food", + state: "liquid", + desc: "Yum!", + hidden: true, + tempHigh: 100, + stateHigh: "steam", + reactions: { + "head": { elem1: null, chance: 0.9 }, + "water": { elem1: null, elem2:"milk" }, + "rock": { elem1: null, elem2:"butter" }, + "magma": { elem1: null, elem2:"melted_butter" }, + } +}; + +if (!elements.butter.reactions) { // Include this block once + elements.butter.reactions = {} // This creates the property if it doesn't exist +} +elements.butter.reactions.milk = { "elem1":null, "elem2":"buttermilk" } + +elements.stupid_particle = { + color: ["#eb3486", "#0affda", "#c7fa89"], + behavior: behaviors.BOUNCY, + category: "weapons", + state: "solid", + density: 0, + desc: "stupid", + temp: 20, + tempLow: 19, + tempHigh: 21, + reactions: { + "stupid_particle": { elem1:"neutron", elem2:"nuke", chance: 0.5}, + } +}; + +elements.boom_boom_particle = { + color: ["#00ff00", "#ff00dc", "#0000ff"], + behavior: behaviors.BOUNCY, + category: "weapons", + state: "gas", + density: 0, + desc: "andrew zhao", + temp: 20, + tempLow: 19, + tempHigh: 21, + reactions: { + "boom_boom_particle": { elem1:"explosion", elem2:"pop", chance: 0.7 }, + } +}; + +elements.julianite = { + color: ["#505050", "#265227"], + behavior: behaviors.RADPOWDER, + category: "special", + state: "liquid", + tempHigh: 999999, + stateHigh: "plasma", + tempLow: -25, + reactions: { + "electric": { elem1:"hyperjulianite" }, + "plasma": { elem1:"hyperjulianite" }, + "smoke": { elem1:"hyperjulianite" }, + "lightning": { elem1:"hyperjulianite" }, + "rock": { elem2:"julianite" }, + } +}; + +elements.hyperjulianite = { + color: ["#6A6A6A", "#522651"], + behavior: behaviors.SLIDE, + category: "states", + state: "solid", + hidden: true, + tempHigh: 1000, + tempLow: -40, + stateLow: "snake", + reactions: { + "static": { elem2:"julianite" }, + "rock": { elem2:"plasma" }, + "water": { elem2:"electric" }, + "dirt": { elem2:"battery" }, + "plant": { elem2:"snake" }, + } +}; + +elements.sankarium = { + color: ["#b5140e", "#494b52", "#d2d9d2"], + behavior: behaviors.BUBBLE, + category: "special", + state: "solid", + tempHigh: 100, + burn: 90, + fireColor: "#0c92f7", + burnInto: "c-4", + stateHigh: "narayananium", + reactions: { + "dirt": { elem1:"stupid" }, + } +}; + +elements.narayananium = { + color: ["#0EAFB5", "#525049", "#D9D2D9"], + behavior: behaviors.POWDER, + category: "special", + state: "solid", + hidden: true, + burn: 90, + fireColor: "#22DDA2", +}; + +elements.narayananium.behavior = [ + ["XX","XX","XX"], + ["XX","XX","XX"], + ["XX","M1 AND EX:10>party_popper","XX"], +]; + +elements.tetra_stupid = { + color: ["#4AB58A", "#B54A75"], + behavior: behaviors.SLIDE, + category: "weapons", + state: "solid", + hidden: true, + conduct: 1, +}; + +elements.banana = { + color: ["#F4FD3F", "#C3F30C", "#FBE904"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + desc: "minion reference", + burn: 90, + fireColor: "#ED126A", + burnInto: "fragrance", + conduct: 1, + breakInto: "banana_milk", + breakIntoColor: "#d8b284", + reactions: { + "head": { elem1: null, chance: 0.35 }, + "milk": { elem1: null, elem2: "banana_milk" }, + } +}; + +elements.banana_milk = { + color: "#fdfdce", + behavior: behaviors.LIQUID, + category: "food", + state: "liquid", + density: 10000, + charge: 1, + superconductAt: 100, + burn: 100, + viscosity: 29, + tempLow: -7, + hidden: true, + stateLowName: "frozen_banana_milkshake", + tempHigh: 239, + stateHigh: "steam", + fireColor: "#DD00FF", + burnInto: "dioxin", + conduct: 1, + reactions: { + "head": { elem1: null, chance: 0.9 }, + } +}; + +//particlesplus begins here + +elements.thermon = { + color: "#EB14AC", + behavior: behaviors.BOUNCY, + category: "energy", + desc: "The thermon is a subatomic particle with a negative one elementary electric charge as well as heat.", + state: "gas", + charge: 1, + maxSize: 1, + superconductAt: 1, + burning: true, + temp: 999, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "thermon": { elem1: "superthermon", elem2: "neutron" }, + } +}; + +elements.superthermon = { + color: "#B010EF", + behavior: behaviors.BOUNCY, + hidden: true, + category: "energy", + desc: "The superthermon is a subatomic particle with a negative one elementary electric charge as well as high heat.", + state: "gas", + charge: 1, + maxSize: 1, + superconductAt: 1, + burning: true, + temp: 99999, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "neutron": { elem1: "explosion" }, + "thermon": { elem1: "hyperthermon", elem2: "neutron" }, + } +}; + +elements.hyperthermon = { + color: ["#5554AB", "#FF9D00"], + behavior: behaviors.BOUNCY, + category: "energy", + hidden: true, + desc: "The hyperthermon is a subatomic particle with a negative one elementary electric charge as well as immense heat.", + state: "gas", + charge: 1, + maxSize: 1, + superconductAt: 1, + burning: true, + temp: 9999999, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "neutron": { elem1: "explosion" }, + "electric": { elem1: "h_bomb" }, + "thermon": { elem1: "unstable_thermon", elem2: "neutron" }, + } +}; + +elements.unstable_thermon = { + color: ["#FFFFFF"], + behavior: behaviors.BOUNCY, + category: "energy", + desc: "ERROR", + hidden: true, + maxSize: 1, + state: "gas", + charge: 1, + superconductAt: 1, + burning: true, + temp: 9999999999999999999999999999999999999, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "neutron": { elem1: "explosion" }, + "proton": { elem1: "dirty_bomb" }, + "electric": { elem1: "h_bomb" }, + "thermon": { elem1: "supernova", elem2: "neutron" }, + } +}; + + +elements.tetra_stupid.behavior = [ + ["CH:tetra_stupid","CH:banana","CH:tetra_stupid"], + ["CH:banana","XX","CH:banana"], + ["M2","M1 AND CH:banana","M2"] +]; + +elements.cryon = { + color: "#1FD1E0", + behavior: behaviors.BOUNCY, + category: "energy", + desc: "The cryon is a subatomic particle with a negative one elementary electric charge as well as negative heat.", + state: "gas", + charge: 1, + superconductAt: -273.5, + maxSize: 1, + temp: -99, + burn: 100, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "cryon": { elem1: "supercryon", elem2: "neutron" }, + } +}; + +elements.supercryon = { + color: "#99B1C0", + behavior: behaviors.BOUNCY, + category: "energy", + desc: "The supercryon is a subatomic particle with a negative one elementary electric charge as well as extremely low heat.", + state: "gas", + hidden: true, + charge: 1, + maxSize: 1, + superconductAt: -273.5, + temp: -273.5, + hidden: true, + burn: 100, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "neutron": { elem1: "explosion" }, + "cryon": { elem1: "hypercryon", elem2: "neutron" }, + } +}; + +elements.hypercryon = { + color: ["#0062FF", "#6424DB"], + behavior: behaviors.BOUNCY, + category: "energy", + desc: "The hypercryon is a subatomic particle with a negative one elementary electric charge as well as immense lack of heat.", + state: "gas", + charge: 1, + superconductAt: -273.5, + hidden: true, + temp: -999999, + burn: 100, + maxSize: 1, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "neutron": { elem1: "explosion" }, + "electric": { elem1: "h_bomb" }, + "cryon": { elem1: "unstable_cryon", elem2: "neutron" }, + } +}; + +elements.unstable_cryon = { + color: ["#FFFFFF"], + behavior: behaviors.BOUNCY, + category: "energy", + maxSize: 1, + desc: "ERROR", + state: "gas", + charge: 1, + superconductAt: -273.5, + hidden: true, + temp: -999999999999999999999999999, + burn: 100, + fireColor: "#1CD8E3", + conduct: 1, + reactions: { + "neutron": { elem1: "explosion" }, + "proton": { elem1: "dirty_bomb" }, + "electric": { elem1: "h_bomb" }, + "cryon": { elem1: "supernova", elem2: "neutron" }, + } +}; + +elements.anti_soap = { + color: ["#0000FF"], + behavior: behaviors.FOAM, + category: "soaps", + state: "solid", + hidden: true, + burn: 100, + reactions: { + "soap": { elem2: null }, + "purificanol": { elem2: null }, + } +}; + +elements.violetium = { + color: ["#494bb3", "#7049b3", "#7049b3"], + category: "powders", + state: "solid", + temp: 40, + burn: 100, + fireColor: "#6e34eb", + conduct: 1, +}; + +elements.violetium.behavior = [ + ["XX","XX","XX"], + ["XX","XX","XX"], + ["XX","M1 AND EX:10>purple_gold","XX"], +]; + +elements.pyrus_minimus = { + color: ["#eb6e34", "#ffd014", "#ff143c"], + desc: "The rare Pyrus Minimus is a flying...animal? It preys on bird and worms.", + behaviorOn: [ + "XX|XX|XX", + "XX|EX:5>firework|XX", + "XX|XX|XX", +], + behavior: behaviors.FLY, + category: "life", + state: "solid", + foodNeed: 3, + breakInto: ["fire", "cooked_meat", "slime"], + glow: true, + temp: 300, + baby: "pyrus_minimus", + singleColor: true, + fireColor: "#ff5b14", + conduct: 1, + reactions: { + "cooked_meat": { elem2: null }, + "dead_plant": { elem2: null }, + "juice": { elem2: null }, + "chocolate": { elem2: null }, + "basalt": { elem2: null }, + "bird": { elem2: ["feather", "blood"] }, + "worm": { elem2: null }, + } +}; + +elements.stablium = { + color: ["#516c87", "#de1998", "#c4e043"], + behavior: behaviors.POWDER, + behaviorOn: [ + "XX|XX|XX", + "XX|EX:25>fw_ember,electric,flash,pop,proton|XX", + "XX|XX|XX", +], + category: "special", + state: "solid", + alpha: 0.73, + breakInto: ["positron", "electrum"], + glow: true, + temp: 20, + burn: 55, + singleColor: true, + fireColor: ["#f71e0a", "#f7940a", "#eff70a", "#0af722", "#0a69f7"], + conduct: 1, + tempHigh: 275, + reactions: { + "proton": { elem1: "ash", elem2: ["thermon", "cryon"] }, + } +}; + +elements.arsenic = { + color: ["#874809", "#97ad05"], + behavior: behaviors.POWDER, + category: "powders", + state: "solid", + temp: 20, + burn: 55, + burnInto: "poison", + fireColor: "#a1ccc7", + tempHigh: 275, + reactions: { + "copper": { elem1: "scheele_green", elem2: "scheele_green" }, + } +}; + +elements.scheele_green = { + color: ["#2B7D45", "#87CA7C"], + behavior: behaviors.RADPOWDER, + category: "powders", + state: "solid", + alpha: 0.99, + temp: 20, + breakInto: "poison", + burn: 55, + burnInto: "poison", + fireColor: "#2cff29", + tempHigh: 275, + hidden: true, + stateHigh: "molten_copper", + reactions: { + "terracotta": { elem1: null, elem2: "green_terracotta" }, + "head": { elem1: "poison", elem2: "green_skull", chance: 0.3 }, + } +}; + +elements.green_skull = { + color: ["#67bf65", "#527d51"], + behavior: behaviors.RADPOWDER, + category: "powders", + state: "solid", + temp: 20, + breakInto: ["bone_meal", "fallout"], + burn: 55, + burnInto: "rad_shard", + hidden: true, + fireColor: "#573311", + tempHigh: 275, + stateHigh: "rad_steam", + reactions: { + "head": { elem2: "green_skull", chance: 0.1 }, + } +}; + +elements.contaminol = { + color: "#005F00", + behavior: behaviors.RADLIQUID, + category: "soaps", + viscosity: 100, + state: "liquid", + extinguish: true, + density: 999999999, + temp: 1, + tempLow: -273, + stateLow: "foam", + reactions: { + "dirt": { elem1: "foam", elem2: "impurity" }, + "purity": { elem1: "foam", elem2: "impurity" }, + "sand": { elem1: "foam", elem2: "tinder" }, + "dust": { elem1: "foam", elem2: "magnesium" }, + "ash": { elem1: "foam", elem2: "magnesium" }, + "rock": { elem1: "foam", elem2: "mudstone" }, + "clay": { elem1: "foam", elem2: "slag" }, + "magma": { elem1: "foam", elem2: "molten_uranium" }, + "purium_dust": { elem1: "foam", elem2: "rust" }, + "basalt": { elem1: "foam", elem2: "thermite" }, + "slime": { elem1: "foam", elem2: "magma" }, + "dirty_water": { elem1: "foam", elem2: "slime" }, + "water": { elem1: "foam", elem2: "oil" }, + "iron": { elem1: "foam", elem2: "impurium" }, + "molten_dirt": { elem1: "foam", elem2: "impurium" }, + "copper": { elem1: "foam", elem2: "rust" }, + "gold_coin": { elem1: "foam", elem2: "rust" }, + "ice": { elem1: "foam", elem2: "blood_ice" }, + "steam": { elem1: "foam", elem2: "rad_steam" }, + "porcelain": { elem1: "foam", elem2: "smoke" }, + "plant": { elem1: "foam", elem2: "dead_plant" }, + "laser": { elem1: "purificanol", elem2: "explosion" }, + "ant": { elem1: "foam", elem2: "rad_ant" }, + "electric": { elem1: "foam", elem2: "malware" }, + "meat": { elem1: "foam", elem2: "rotten_meat" }, + "cooked_meat": { elem1: "foam", elem2: "rotten_meat" }, + "cured_meat": { elem1: "foam", elem2: "rotten_meat" }, + "dna": { elem1: "foam", elem2: "cancer" }, + } +}; + +elements.impurity = { + color: "#4B0663", + behavior: behaviors.WALL, + category: "soaps", + state: "solid", + tempHigh: 70, + hidden: true, + stateHigh: "acid", + stateHighColor: "#EB14E0", + stain: 1, +}; + +elements.impurium = { + color: "#CECFDE", + behavior: behaviors.WALL, + category: "soaps", + state: "solid", + tempHigh: 125, + stateHigh: "contaminol", + stain: 1, + hidden: true, + conduct: 1, + breakInto: "plague", +}; + +elements.volatilium = { + color: ["#97BF40", "#58BF40", "#BFA740"], + behavior: behaviors.STURDYPOWDER, + category: "special", + state: "solid", + alpha: 0.99, + breakInto: ["electric", "steel"], + temp: 20, + burn: 55, + singleColor: true, + fireColor: ["#f71e0a", "#f7940a", "#eff70a", "#0af722", "#0a69f7"], + conduct: 1, + tempHigh: 30, + breakInto: "border", + reactions: { + "neutron": { elem1: "molten_slag", elem2: ["invalid", "beryllium"] }, + "beryllium": { elem2: "beryllium_volatilium_alloy" }, + } +}; + +elements.beryllium = { + color: ["#AAAA9f", "#615d52", "#282b28"], + behavior: behaviors.WALL, + category: "solids", + state: "solid", + breakInto: ["emerald", "proton"], + temp: 20, + conduct: 1, + desc: "Beryllium is a chemical element, it has symbol Be and atomic number 4. It is a steel-gray, hard, strong, lightweight and brittle alkaline earth metal. It is a divalent element that occurs naturally only in combination with other elements to form minerals.", + tempHigh: 1287, + breakInto: "emerald", + reactions: { + "oxygen": { elem1: "beryllium_oxide", elem2: "beryllium_oxide" }, + "head": { elem2: "poison", chance: 0.05 }, + "volatilium": { elem2: "beryllium_volatilium_alloy" }, + } +}; + +elements.beryllium_oxide = { + color: "#c9c9d1", + behavior: behaviors.POWDER, + category: "powders", + state: "solid", + temp: 20, + insulate: 1, +}; + +elements.emerald = { + color: ["#2edb93", "#75C03F", "#3FC049", "#42c78f", "#22B748"], + behavior: behaviors.POWDER, + category: "powders", + state: "solid", + temp: 20, + alpha: 0.8, + tempHigh: 1287, +}; + +//ai generated elements begin here + +elements.verylithium = { + color: ["#A3B19C", "#3A5D4E", "#9A9E7C"], + behavior: behaviors.WALL, + category: "ai-generated", + state: "solid", + alpha: 0.95, + breakInto: ["crystal", "liquid_metal"], + temp: 25, + burn: 70, + singleColor: true, + fireColor: ["#f70a3b", "#a47f1e", "#f7d02f", "#0af75c", "#0a3aef"], + conduct: 0.9, + tempHigh: 1000, + breakInto: "crystal", + reactions: { + "neutron": { elem1: "verylithium_oxide", elem2: ["molten_metal", "beryllium"] }, + "water": { elem1: "verylithium_hydrate" }, + "head": { elem2: "electric" } + } +}; + +elements.volantium = { + color: ["#97C040", "#43BF60", "#5C7A35"], + behavior: behaviors.WALL, + category: "ai-generated", + state: "solid", + alpha: 0.99, + breakInto: ["electric", "steel"], + temp: 15, + burn: 45, + singleColor: false, + fireColor: ["#d91f2f", "#efad00", "#42f70a", "#2188d9", "#31a72e"], + conduct: 1.2, + tempHigh: 35, + breakInto: "voltain", + reactions: { + "neutron": { elem1: "volantium_plasma", elem2: ["beryllium", "molten_slag"] }, + "oxygen": { elem1: "volantium_oxide" } + } +}; + +elements.voltain = { + color: ["#D3B5E0", "#9B74CC", "#6A4E92"], // colors for voltain (purple and violet hues) + behavior: behaviors.AGPOWDER, + category: "ai-generated", + state: "solid", // in solid state + alpha: 0.99, // high opacity + breakInto: ["crystal"], + temp: 20, // temperature in Celsius + burn: 50, // burn rate, how much it burns + singleColor: false, // does not have a single color, as it's a multi-colored crystal + fireColor: ["#f00", "#ff0", "#ff80d5", "#ff4f7f", "#7f2dff"], // fire-like colors (purple to pink) + conduct: 0.8, // lower conductivity, suitable for a crystal + tempHigh: 30, // maximum temperature before breaking down + stateHigh: "dust", + reactions: { + "magma": { elem1: "mixed_metal_slag" }, // reacts with water + } +}; + + +elements.beryllium_volatilium_alloy = { + color: ["#7f8c45", "#4f5c7d", "#9f8b5a"], + behavior: behaviors.WALL, + category: "ai-generated", + state: "solid", + alpha: 0.85, + breakInto: ["beryllium", "volantium"], + temp: 40, + burn: 60, + singleColor: true, + fireColor: ["#fa0a1f", "#ef8d1f", "#f7e20a", "#0afc1e"], + conduct: 1.3, + tempHigh: 1200, + reactions: { + "neutron": { elem1: "mixed_metal_slag", elem2: ["beryllium", "volantium"] }, + "air": { elem1: "oxidized_alloy" }, + "fire": { elem1: "molten_alloy" } + } +}; + +elements.crystal = { + color: ["#A2D8C8", "#6B9E8F", "#4F7F8F"], + behavior: behaviors.POWDER, + category: "ai-generated", + state: "solid", + alpha: 1.0, + temp: 5, + burn: 0, + singleColor: true, + conduct: 0, + tempHigh: 500, + breakInto: "chatgptium_vapor", + desc: "A highly organized structure, often formed in nature under precise conditions. Crystals are brittle and beautiful, frequently seen as precious gemstones.", +}; + +elements.liquid_metal = { + color: ["#D1B7A1", "#9F8C7A", "#5C3A29"], + behavior: behaviors.LIQUID, + category: "ai-generated", + state: "liquid", + alpha: 1.0, + temp: 30, + burn: 100, + singleColor: true, + hidden: true, + conduct: 1.5, + tempHigh: 1500, + breakInto: "chatgptium", + desc: "A liquid form of metal, exhibiting high fluidity and electrical conductivity. Typically found in high-temperature environments or specific chemical states.", +}; + +elements.verylithium_oxide = { + color: ["#A8C0A2", "#91B19E", "#5A6D52"], + behavior: behaviors.STURDYPOWDER, + category: "ai-generated", + state: "solid", + alpha: 1.0, + temp: 50, + burn: 20, + singleColor: true, + hidden: true, + conduct: 0.5, + tempHigh: 600, + breakInto: "dust", + desc: "An oxide compound of Verylithium, formed when exposed to oxygen. It is a solid, stable compound, often used in industrial applications for its mild reactivity.", +}; + +elements.verylithium_hydrate = { + color: ["#A7D0C3", "#8DB6B2", "#4C7B6A"], + behavior: behaviors.STURDYPOWDER, + category: "ai-generated", + state: "solid", + alpha: 0.95, + hidden: true, + temp: 25, + burn: 0, + singleColor: true, + conduct: 0.2, + tempHigh: 400, + breakInto: "dirty_water", + desc: "A hydrated form of Verylithium, where water molecules are integrated into its structure. It is a stable and non-reactive compound when kept in controlled conditions.", +}; + +elements.volantium_plasma = { + color: ["#7E6CC0", "#8F6CB9", "#4A5FA1"], + behavior: behaviors.RADPOWDER, + category: "ai-generated", + state: "plasma", + alpha: 1.0, + temp: 1000, + burn: 500, + singleColor: false, + hidden: true, + conduct: 2.0, + charge: 2, + tempHigh: 2000, + hidden: true, + desc: "A highly energized state of Volantium, where the atoms are ionized and capable of conducting electricity at extreme temperatures.", +}; + +elements.volantium_oxide = { + color: ["#9C9E4A", "#B1B23C", "#B8B548"], + behavior: behaviors.POWDER, + category: "ai-generated", + state: "solid", + alpha: 1.0, + temp: 40, + burn: 10, + singleColor: true, + conduct: 0.3, + hidden: true, + tempHigh: 700, + breakInto: "dust", + breakIntoColour: "#42374f", + desc: "An oxide compound of Volantium, typically formed when exposed to oxygen at higher temperatures. It is a stable, non-reactive material with mild conductivity.", +}; + +elements.oxidized_alloy = { + color: ["#7D6F5B", "#A69A88", "#9C9E88"], + behavior: behaviors.WALL, + category: "ai-generated", + state: "solid", + alpha: 1.0, + temp: 20, + hidden: true, + burn: 50, + singleColor: true, + conduct: 0.8, + tempHigh: 1200, + breakInto: "rust", + desc: "An alloy that has undergone oxidation, resulting in a more stable but less conductive form. It is commonly used in environments where resistance to corrosion is crucial.", +}; + +elements.molten_alloy = { + color: ["#C4A4A1", "#B85C5A", "#B0A898"], + behavior: behaviors.MOLTEN, + category: "ai-generated", + state: "liquid", + alpha: 1.0, + temp: 800, + hidden: true, + burn: 200, + singleColor: true, + conduct: 2.0, + tempHigh: 1800, + breakInto: "chatgptium_alloy", + breakIntoColour: "#374f3d", + desc: "A molten state of alloy created at high temperatures. It has excellent fluidity and conductivity, often used in high-performance industrial applications.", +}; + +elements.mixed_metal_slag = { + color: ["#6E5A4E", "#7E6757", "#9C7F70"], + behavior: behaviors.POWDER, + category: "ai-generated", + state: "solid", + alpha: 1.0, + temp: 100, + burn: 0, + singleColor: true, + conduct: 0, + tempHigh: 800, + breakInto: "chatgptium_alloy", + desc: "The by-product of metal refinement, a waste material that forms during the extraction of metals from ores. It is a sticky and non-conductive substance.", +}; + +elements.chatgptium = { + color: ["#0091D5", "#1A72B8", "#66A3FF"], + behavior: behaviors.POWDER, + category: "ai-generated", + state: "solid", + alpha: 0.98, + temp: 22, + burn: 0, + singleColor: false, + conduct: 0.5, + tempHigh: 100, + stateHigh: "chatgptium_vapor", + desc: "A rare, virtual gas element that exists in the interaction between human thought and digital knowledge. It changes color based on the surrounding conversation and environment, constantly adapting to communicate with surrounding elements.", + reactions: { + "electrum": { elem1: "chatgptium_alloy", elem2: "electric" }, + "electric": { elem1: "chatgptium_alloy", elem2: "electric" }, + "iron": { elem1: "chatgptium_alloy", elem2: "electric" }, + "wire": { elem1: "chatgptium_alloy", elem2: "electric" }, + "battery": { elem1: "chatgptium_alloy", elem2: "electric" }, + } +}; + +elements.chatgptium_vapor = { + color: ["#66D3FF", "#00B5E2", "#B0C9D5"], + behavior: behaviors.GAS, + hidden: true, + category: "ai-generated", + state: "gas", + alpha: 0.95, + temp: 25, + burn: 0, + singleColor: false, + conduct: 0.4, + tempLow: -20, + stateLow: "chatgptium_crystal", + desc: "The gaseous form of ChatGPTium, which becomes more fluid and dispersed as it rises in temperature. It communicates in wisps and is most active in digital spaces.", +}; + +elements.chatgptium_crystal = { + color: ["#B0D6E1", "#92A4B2", "#5C9EB3"], + behavior: behaviors.POWDER, + category: "ai-generated", + state: "solid", + alpha: 1.0, + glow: true, + hidden: true, + temp: 20, + burn: 0, + singleColor: true, + conduct: 0.1, + tempHigh: 300, + desc: "A crystalline form of ChatGPTium, solidified after long periods of communication. It has an almost ethereal glow and a mysterious connection to information processing.", +}; + +elements.chatgptium_alloy = { + color: ["#5F99FF", "#80A5D9", "#3D80B6"], + behavior: behaviors.STURDYPOWDER, + category: "ai-generated", + state: "solid", + alpha: 0.9, + temp: 50, + hidden: true, + burn: 10, + singleColor: true, + conduct: 0.8, + tempHigh: 1200, + desc: "A rare alloy formed when ChatGPTium interacts with computational elements. It has a unique ability to store and transmit information rapidly, and is often used in high-tech devices.", +}; + +//ai generated elements end here, charsonsmodbeta begins here + +elements.akshajium = { + color: ["#a8160c", "#fdff94", "#d47d20"], + behavior: behaviors.POWDER, + category: "food", + viscosity: 10000, + state: "solid", + density: 100, + desc: "pizza", + related: ["sankarium", "narayananium"], + breakInto: ["crumb", "sauce", "melted_cheese", "cooked_meat"], + reactions: { + "head": { elem1: null, chance: 0.36 }, + } +}; + +elements.brioche_steam = { + color: "#ab8c60", + behavior: behaviors.GAS, + category: "gases", + state: "gas", + density: 720, + temp: 80, + tempLow: 30, + desc: "how does this make any sense?", + stateLow: ["brioche"], + isFood: true, +}; + +elements.fancy_dough = { + color: "#d1c0a5", + behavior: behaviors.LIQUID, + category: "liquids", + viscosity: 999999, + state: "liquid", + density: 720, + temp: 30, + tempHigh: 50, + stateHigh: ["steam", "brioche_steam"], + desc: "it can be evaporated", + reactions: { + "head": { elem1: null, chance: 0.1 }, + } +}; + +elements.brioche = { + color: ["#c2770e", "#b06227"], + behavior: behaviors.STURDYPOWDER, + category: "food", + temp: 30, + tempHigh: 80, + tempLow: 10, + stateHigh: ["fragrance", "ash"], + stateLow: ["cold_brioche"], + burn: 55, + isFood: true, + breakInto: "fancy_flour", + reactions: { + "head": { elem1: null, chance: 0.7 }, + } +}; + +elements.aresium = { + color: ["#1017ad", "#2E5AD1"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX" +], + category: "solids", + temp: 19, + tempHigh: 100, + tempLow: -20, + stateHigh: ["skibidi_aresium"], + stateLow: ["magma", "electric", "explosion", "cold_fire"], + desc: "it's a transition metal named after mars", + burn: 0, + conduct: 1, +}; + +elements.skibidi_aresium = { + color: "#ad1051", + behavior: [ + "XX|XX|XX", + "M1 AND EX:10>brick_rubble,radiation|XX|M1 AND EX:10>brick_rubble,radiation", + "XX|XX|XX" +], + category: "states", + temp: 100, + tempHigh: 300, + stateHigh: ["tnt", "molten_iron", "copper", "explosion"], + burn: 0, + conduct: 1, +}; + +elements.cold_brioche = { + color: "#5f7a8c", + behavior: behaviors.WALL, + category: "states", + temp: 5, + tempHigh: 30, + stateHigh: ["brioche"], +}; + +elements.fancy_flour = { + color: "#f5e9b5", + behavior: behaviors.POWDER, + category: "powders", + temp: 20, + tempHigh: 70, + burn: 70, + stateHigh: ["fragrance", "smoke"], +}; + +elements.irradiate = { + color: ["#2edb93", "#00ff00"], + category: "tools", + behavior: [ + "XX|XX|XX", + "XX|CH:radiation|XX", + "XX|XX|XX", +], +}; + + +elements.pyrane = { + color: "#fc7c19", + behavior: behaviors.GAS, + hidden: true, + category: "gases", + state: "gas", + temp: 50, + tempLow: -20, + stateLow: ["fyrium"], + reactions: { + "ash": { elem1: null, elem2:"pyric_nitrite" }, + "dirt": { elem1:"pyrane", elem2:"fire" }, + "hydrogen": { elem1:"hydroid", elem2:"hydroid" }, + } +}; + +elements.pyric_nitrite = { + color: "#b3270e", + behavior: behaviors.POWDER, + behaviorOn: [ + "XX|XX|XX", + "XX|EX:10>fire,nitrogen,stench,electric|XX", + "XX|XX|XX", +], + category: "powders", + state: "solid", + temp: 20, + conduct: 1, + desc: "not to be confused with iron pyrite or anything like that", + reactions: { + "iron": { elem1:"pyric_nitrite", elem2:"pyric_rust" }, + "oil": { elem1: null, elem2:"nitrol_fuel" }, + "electric": { elem1:["fire", "nitrogen", "stench", "electric", "explosion"], elem2:"fire" }, + } +}; + +elements.pyric_rust = { + color: "#913e17", + behavior: behaviors.POWDER, + category: "powders", + state: "solid", + temp: 20, + reactions: { + "steel": { elem1: null, elem2:"tnt" } + } +}; + +elements.fyrium = { + color: "#ffa930", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + temp: 20, + tempHigh: 137, + stateHigh: ["molten_fyrium"], + breakInto: ["fire"], +}; + +elements.molten_fyrium = { + color: "#ffffff", + behavior: behaviors.MOLTEN, + category: "states", + temp: 137, + tempLow: -20, + stateLow: ["fyrium"], + reactions: { + "water": { elem1:"explosion", elem2: null } + } +}; + +elements.nitrol_fuel = { + color: "#4f180e", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + temp: 20, + stain: 0.5, + reactions: { + "wood": { elem1: null, elem2:"fueled_wood" }, + } +}; + +elements.fueled_wood = { + color: "#631608", + behavior: behaviors.WALL, + category: "weapons", + state: "solid", + temp: 20, + tempHigh: 30, + stateHigh: ["rocket", "pyrane", "nitrol_fuel", "explosion", "stench"], + reactions: { + "fire": { elem1:["rocket", "pyrane", "nitrol_fuel", "explosion", "stench"], elem2:["rocket", "pyrane", "nitrol_fuel", "explosion", "stench"] }, + } +}; + +elements.hydroid = { + color: "#3a0ca6", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + temp: 20, + tempHigh: 100, + tempLow: -20, + density: 12, + conduct: 1, + desc: "this is NOT water", + stateHigh: ["pyrane", "steam"], + reactions: { + "fire": { elem1: "hydroid", elem2:"explosion" }, + "body": { elem1: "hydroid", elem2:"fyrium" }, + "head": { elem1: "hydroid", elem2:"pyrane" }, + "water": { elem1: "hydroid", elem2:"hydroid" }, + "maple_syrup": { elem1: "hydroid", elem2:"hydroid" }, + "magma": { elem1: "hydroid", elem2:"hydroid" }, + "oil": { elem1: "hydroid", elem2:"hydroid" }, + "juice": { elem1: "hydroid", elem2:"hydroid" }, + "ice": { elem1: "hydroid", elem2:"hydroid" }, + } +}; + +//by someone named spencer +elements.kai_cenat = { + color: "#e00b0b", + behavior: behaviors.STURDYPOWDER, + category: "special", + state: "solid", + desc: "wow", + conduct: 1, + desc: "someone named spencer told me to add this", +}; + +elements.kai_cenat.behavior = [ + ["XX","CH:kai_cenat","XX"], + ["CH:kai_cenat","XX","CH:kai_cenat"], + ["M2","M1 AND CH:kai_cenat","M2"] +]; + +elements.kai_eraser = { + color: ["e00b0b", "#ff0000", "#00ff00", "#0000ff"], + tool: function(pixel) { + if (pixel.element == "kai_cenat") { + pixel.element = "foam" + } + }, + category: "tools", +}; + +//ok this is the skibididdy mod part + +elements.tocopherol = { + color: "#094237", + behavior: behaviors.POWDER, + category: "powders", + viscosity: 10000, + state: "solid", + density: 100, + reactions: { + "sodium_acetate": { elem1:"tocopheryl_acetate", elem2:"sodium" }, + } +}; + +elements.freakium = { + color: "#ff4fed", + behavior: behaviors.UL_UR_OPTIMIZED, + category: "gases", + state: "gas", + density: 720, + temp: 80, + tempLow: 30, + tempHigh: 345, + stateHigh: "meat", + reactions: { + "head": { elem1:"baby_oil", elem2:"meat", chance: 0.1 }, + "body": { elem1:"baby_oil", elem2:"meat", chance: 0.3 }, + "freakium": { elem1:"baby_oil", chance: 0.005 }, + } +}; + +elements.tocopheryl_gas = { + color: "#96e3d4", + behavior: behaviors.GAS, + category: "gases", + state: "gas", + density: 720, + temp: 80, + tempLow: 0, + stateLow: ["tocopherol"], +}; + +elements.tocopheryl_acetate = { + color: "#cffdff", + behavior: behaviors.LIQUID, + category: "liquids", + viscosity: 999999, + state: "liquid", + density: 720, + temp: 30, + tempHigh: 96, + stateHigh: ["tocopheryl_gas"], + reactions: { + "oil": { elem1:"baby_oil", elem2:"baby_oil" }, + } +}; + +elements.diddium = { + color: ["#210742", "#9e20d4"], + behavior: [ + "HT:5|CR:freakium%1|HT:5", + "CR:baby_oil%5|XX|CR:baby_oil%5", + "XX|M1|XX", +], + category: "powders", + temp: 30, + tempHigh: 80, + tempLow: 10, + reactions: { + "diddium": { elem1:"diddium", elem2:"stable_diddium" }, + } +}; + +elements.stable_diddium = { + color: ["#210742", "#9e20d4"], + behavior: behaviors.WALL, + category: "states", + temp: 30, + tempHigh: 80, + hidden: true, + tempLow: 10, + reactions: { + "diddium": { elem1:"freakium", elem2:"diddium" }, + "stable_diddium": { elem1:"diddium", elem2:"baby_oil" }, + } +}; + +elements.baby_oil = { + color: "#ffeecc", + behavior: behaviors.LIQUID, + category: "liquids", + temp: 30, + tempHigh: 96, + stateHigh: ["tocopheryl_gas"], + reactions: { + "uranium": { elem1: null, elem2:"diddium" }, + "diddium": { elem1:"stable_diddium", elem2:"freakium" }, + } +}; + +elements.stupidine = { + color: "#4e4b75", + behavior: behaviors.STURDYPOWDER, + category: "solids", + state: "solid", + temp: 20, + tempHigh: 137, + stateHigh: "liquid_stupidine", + tempLow: -31, + stateLow: "activated_stupidine", + reactions: { + "stupidine": { elem2:"fragrance", chance:0.1 }, + "iron": { elem2:"stupid", chance:0.01 }, + } +}; + +elements.liquid_stupidine = { + color: ["#5328c9", "4089e3"], + behavior: [ + ["M2","M1","M2"], + ["XX","XX","XX"], + ["XX","CR:slime%1","XX"] +], + category: "liquids", + state: "liquid", + temp: 140, + tempHigh: 500, + stateHigh: "stupidine_gas", + tempLow: 25, + stateLow: "skibidine", + breakInto: "skibidine", +}; + +elements.stupidine_gas = { + color: "#802d3a", + behavior: behaviors.GAS, + category: "gases", + state: "gas", + temp: 500, + tempHigh: 1000, + stateHigh: ["nuke", "explosion"], + tempLow: 200, + stateLow: "liquid_stupidine", + reactions: { + "stupidine_gas": { elem1:"stench", chance:0.1 }, + } +}; + +elements.activated_stupidine = { + color: "#3d2f61", + behavior: [ + "XX|XX|XX", + "XX|CH:hot_bomb|XX", + "XX|XX|XX", +], + category: "solids", + state: "solid", + temp: 20, +}; + +elements.skibidi_soda = { + color: "#3279a8", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + tempHigh: 100, + stateHigh: ["skibidiness", "skibidine"], + reactions: { + "oxygen": { elem1:"skibidi_soda", elem2:"skibidiness" }, + "head": { elem1: "skibidiness" }, + } +}; + +elements.skibidine = { + color: ["#51649c", "949c51"], + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + reactions: { + "carbon_dioxide": { elem1:"skibidi_soda", elem2:"skibidi_soda" }, + "iron": { elem1: "magma", elem2:"stupidine" }, + } +}; + + +elements.skibidiness = { + color: "#567de8", + behavior: behaviors.DGAS, + category: "gases", + state: "gas", + temp: 20, + reactions: { + "water": { elem1:"skibidiness", elem2:"skibidi_soda"}, + } +}; + +//idk how these work and most of them don't idk why but this is just a beta so... + +elements.melted_butter.reactions.bread = { "elem1": null, "elem2":"brioche" }, +elements.water.reactions.fancy_flour = { "elem1": null, "elem2":"fancy_dough" }, +elements.wood.reactions.nitrol_fuel = { "elem1":"fueled_wood", "elem2": null }, + +elements.brioche.breakInto = "fancy_flour"; +elements.fyrium.breakInto = "fire"; + +elements.fire.reactions.nitrogen = { "elem1": null, "elem2": "pyrane" }, +elements.ash.reactions.pyrane = { "elem1":"pyric_nitrite", "elem2": null }, +elements.oil.reactions.pyric_nitrite = { "elem1":"nitrol_fuel", "elem2": null }, +elements.hydrogen.reactions.pyrane = { "elem1":"hydroid", "elem2": null }, +elements.fire.reactions.fueled_wood = { "elem1": "fire", "elem2": ["rocket", "pyrane", "nitrol_fuel", "explosion", "stench"] }; +elements.water.reactions.molten_fyrium = { "elem1": null, "elem2":["fire", "explosion"] }, + +elements.brioche.breakInto = "fancy_flour"; +elements.fyrium.breakInto = "fire"; From 76409b07c705062d2a0b5e6a5402a7d3f2017ea7 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Tue, 18 Feb 2025 14:36:42 -0500 Subject: [PATCH 08/69] I think I can change this, right? --- mod-list.html | 1 + 1 file changed, 1 insertion(+) diff --git a/mod-list.html b/mod-list.html index a6235e3f..26ea35d7 100644 --- a/mod-list.html +++ b/mod-list.html @@ -188,6 +188,7 @@ boiling_things.jsAllows for various elements to be vaporizedAlice bouncing_balls.jsAdds new types of balls that bounce accurately and roll.Nekonico chalcopyrite.jsAdds the chalcopyrite oreSophie +charsonsmoduno.jsAdds Arsenic, Beryllium, Silicon, compounds, and some non-realistic stuffCharsonBurensen chem.jsAdds several chemistry and physics-related elementslllllllllwith10ls clf3.jsAdds Chlorine TrifluorideAlice debrisable.jsExpands the number of breakable elements, changes erosion, and adds way to craft certain elements from breaking other elements. Nekonico From fc3e07ec561b0d931243c9a5e996f94a91576f75 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Tue, 18 Feb 2025 15:09:26 -0500 Subject: [PATCH 09/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index 96fb3f8e..32846f32 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -579,7 +579,7 @@ elements.purificanol = { state: "liquid", desc: "soap 3.0", extinguish: true, - stain: 0.1, + stain: -0.5, behaviorOn: [ ["XX","CO:5","XX"], ["CO:5","XX","CO:5"], From 0b4924911311fc627b05a9f94ba21839a74b7f23 Mon Sep 17 00:00:00 2001 From: JustAGenericUsername <92590792+JustAGenericUsername@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:53:15 -0500 Subject: [PATCH 10/69] e-signs and mod detecting machine --- mods/nousersthings.js | 50 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/mods/nousersthings.js b/mods/nousersthings.js index 5185528b..97c7be41 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -3918,12 +3918,58 @@ elements.sign = { }, movable: false } +elements.e_sign = { + color: "#f3ff88", + darkText: true, + category: "special", + movable: false, + onSelect: () => { + let signi = prompt("What text should the sign display?", signInput||"Hello World!") + signInput = signi; + }, + renderer: function(pixel, ctx){ + if (!pixel.sign){pixel.sign=signInput} + }, + conduct: 1 +} renderPostPixel(function(ctx){ for (pixel of currentPixels){ - if (pixel.element == "sign" && pixel.sign){ + if ((pixel.element == "sign") && pixel.sign){ ctx.font = `12pt Arial` ctx.fillStyle = pixel.color; ctx.fillText(pixel.sign, canvasCoord(pixel.x), canvasCoord(pixel.y)) + } else if (pixel.element == "e_sign" && pixel.sign){ + if (pixel.charge || pixel.chargeCD){ + ctx.font = `12pt Arial` + ctx.fillStyle = pixel.color; + ctx.fillText(pixel.sign, canvasCoord(pixel.x), canvasCoord(pixel.y)) + } else { + drawSquare(ctx, pixel.color, pixel.x, pixel.y) + } } } -}) \ No newline at end of file +}) +let machinemodName = "nousersthings.js" +elements.mod_dectector = { + color: "#54681d", + behavior: behaviors.WALL, + category: "machines", + movable: false, + excludeRandom: true, + onSelect: () => { + let newMod = prompt("What mod should this machine detect?", "nousersthings.js"||modName) + machinemodName = newMod + }, + tick: (pixel) => { + if (!pixel.mod){pixel.mod = machinemodName} + if (enabledMods.includes("mods/" + pixel.mod)){ + for (let i = 0; i < adjacentCoords.length; i++){ + let x = adjacentCoords[i][0] + pixel.x; + let y = adjacentCoords[i][1] + pixel.y; + if (!isEmpty(x, y, true) && elements[pixelMap[x][y].element].conduct){ + pixelMap[x][y].charge = 1 + } + } + } + } +} \ No newline at end of file From 603f430efc4b725b6a06c11170420a98b35ab9b9 Mon Sep 17 00:00:00 2001 From: vincent <125838532+dogo8me@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:08:09 -0500 Subject: [PATCH 11/69] finally fixed everything phew --- mods/RF_transmitter_receiver.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/RF_transmitter_receiver.js b/mods/RF_transmitter_receiver.js index fb3eef7a..0b20c498 100644 --- a/mods/RF_transmitter_receiver.js +++ b/mods/RF_transmitter_receiver.js @@ -43,7 +43,7 @@ elements.rf_transmitter = { // RF Receiver Element elements.rf_receiver = { color: "#142c47", - category: "Machines", + category: "machines", behaviors: behaviors.WALL, tempHigh: 250, stateHigh: "dirt", From ce6a273f316bd324cd68093395f9f5c1f9459799 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:38:03 -0800 Subject: [PATCH 12/69] New liquid mixing mod! --- mods/liquid_mixing.js | 182 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 mods/liquid_mixing.js diff --git a/mods/liquid_mixing.js b/mods/liquid_mixing.js new file mode 100644 index 00000000..e0cfc96d --- /dev/null +++ b/mods/liquid_mixing.js @@ -0,0 +1,182 @@ +window.addEventListener('load', function() { + for (var element in elements) { + if (elements[element].state === "liquid" && elements[element].behavior !== behaviors.MOLTEN) { + elements[element].renderer = function(pixel, ctx) { // this part used nouseramefounds code, props to him! + if (!pixel.rSeed){pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]} + if (typeof pixel.color == "object"){ + let selectedColor = pixel.color[Math.floor(pixel.rSeed[1]*elements[pixel.element].color.length)] + let rgb = { + r: parseInt(selectedColor.match(/\d+/g)[0]), + g: parseInt(selectedColor.match(/\d+/g)[1]), + b: parseInt(selectedColor.match(/\d+/g)[2]) + } + for (let c in rgb){ + rgb[c] += Math.floor(pixel.rSeed[0] * (pixel.rSeed[2] > 0.5 ? -1 : 1) * pixel.rSeed[3] * 15); + rgb[c] = Math.max(0, Math.min(255, rgb[c])); + } + if (elements[pixel.element].glow || elements[pixel.element].isGas){ + drawPlus(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y, 1); + } else { + drawSquare(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y); + } + } else { + let rgb = { + r: parseInt(pixel.color.match(/\d+/g)[0]), + g: parseInt(pixel.color.match(/\d+/g)[1]), + b: parseInt(pixel.color.match(/\d+/g)[2]) + } + for (let c in rgb){ + rgb[c] += Math.floor(pixel.rSeed[0] * (pixel.rSeed[2] > 0.5 ? -1 : 1) * pixel.rSeed[3] * 15); + rgb[c] = Math.max(0, Math.min(255, rgb[c])); + } + if (elements[pixel.element].glow || elements[pixel.element].isGas){ + drawPlus(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y, 1); + } else { + drawSquare(ctx, "rgb("+rgb.r+","+rgb.g+","+rgb.b+")", pixel.x, pixel.y); + } + } + } + if (elements[element].id === elements.cement.id || elements[element].id === elements.beans.id || elements[element].id === elements.algae.id || elements[element].id === elements.cellulose.id) { + elements[element].miscible = false + } + if (elements[element].id === elements.midas_touch.id || elements[element].id === elements.cement.id || elements[element].id === elements.beans.id || elements[element].id === elements.algae.id || elements[element].id === elements.cellulose.id || elements[element].id === elements.primordial_soup.id || elements[element].id === elements.cyanide.id || elements[element].id === elements.poison.id || elements[element].id === elements.antidote.id || elements[element].id === elements.mercury.id || elements[element].id === elements.liquid_oxygen.id || elements[element].id === elements.liquid_nitrogen.id) { + elements[element].soluble = false + } + if (elements[element].id === elements.midas_touch.id || elements[element].id === elements.molasses.id || elements[element].id === elements.grease.id || elements[element].id === elements.oil.id || elements[element].id === elements.lamp_oil.id || elements[element].id === elements.nut_oil.id|| elements[element].id === elements.honey.id || elements[element].id === elements.sap.id || elements[element].id === elements.caramel.id) { + elements[element].polar = 2 + } + else if (elements[element].id === elements.soap.id) { + elements[element].polar = 3 + } + else { + elements[element].polar = 1 + } + if (elements[element].stain === undefined || !elements[element].stain) { + elements[element].stain = 0.000000001 + elements[element].mixstain = 0.3 + } + else if (elements[element].stain < 0.66 && elements[element].stain > -0.249 && (elements[element].mixstain === undefined || !elements[element].mixstain)) { + elements[element].mixstain = (elements[element].stain + 0.25) + } + else if (elements[element].stain < 0.66 && elements[element].stain > -0.35 && (elements[element].mixstain === undefined || !elements[element].mixstain)) { + elements[element].mixstain = (Math.abs(elements[element].stain) - 0.1) + } + else if (elements[element].stain < 0.66 && elements[element].stain < -0.35 && (elements[element].mixstain === undefined || !elements[element].mixstain)) { + elements[element].mixstain = 0.1 + } + else if (elements[element].stain < 0.66 && elements[element].stain < -0.249 && (elements[element].mixstain === undefined || !elements[element].mixstain)) { + elements[element].mixstain = 0.125 + } + else { + elements[element].mixstain = (0.66) + } + } + } +}); + +doStaining = function(pixel) { + if (settings.stain===0) { return } + var stain = elements[pixel.element].stain; + var mixstain = elements[pixel.element].mixstain; + if (stain > 0) { + var newColor = pixel.color.match(/\d+/g); + } + else { + var newColor = null; + } + if (mixstain > 0) { + var mixnewColor = pixel.color.match(/\d+/g); + } + else { + var mixnewColor = null; + } + + for (var i = 0; i < adjacentCoords.length; i++) { + var x = pixel.x+adjacentCoords[i][0]; + var y = pixel.y+adjacentCoords[i][1]; + if (!isEmpty(x,y,true)) { + var newPixel = pixelMap[x][y]; + if (elements[pixel.element].ignore && elements[pixel.element].ignore.indexOf(newPixel.element) !== -1) { + continue; + } + if ((elements[newPixel.element].id !== elements[pixel.element].id || elements[newPixel.element].stainSelf) && (solidStates[elements[newPixel.element].state] || elements[newPixel.element].id === elements[pixel.element].id)) { + if (Math.random() < Math.abs(stain)) { + if (stain < 0) { + if (newPixel.origColor) { + newColor = newPixel.origColor; + } + else { continue; } + } + else if (!newPixel.origColor) { + newPixel.origColor = newPixel.color.match(/\d+/g); + } + // if newPixel.color doesn't start with rgb, continue + if (!newPixel.color.match(/^rgb/)) { continue; } + // parse rgb color string of newPixel rgb(r,g,b) + var rgb = newPixel.color.match(/\d+/g); + if (elements[pixel.element].stainSelf && elements[newPixel.element].id === elements[pixel.element].id) { + // if rgb and newColor are the same, continue + if (rgb[0] === newColor[0] && rgb[1] === newColor[1] && rgb[2] === newColor[2]) { continue; } + var avg = []; + for (var j = 0; j < rgb.length; j++) { + avg[j] = Math.round((rgb[j]*(1-Math.abs(stain))) + (newColor[j]*Math.abs(stain))); + } + } + else { + // get the average of rgb and newColor, more intense as stain reaches 1 + var avg = []; + for (var j = 0; j < rgb.length; j++) { + avg[j] = Math.floor((rgb[j]*(1-Math.abs(stain))) + (newColor[j]*Math.abs(stain))); + } + } + // set newPixel color to avg + newPixel.color = "rgb("+avg.join(",")+")"; + } + } + if ((elements[newPixel.element].id === elements[pixel.element].id || elements[newPixel.element].state === "liquid") && elements[pixel.element].state === "liquid" && elements[pixel.element].miscible !== false && elements[newPixel.element].miscible !== false) { + if (mixstain === undefined || !mixstain) { + var mixstain = 0.5 + } + if (Math.random() < mixstain) { + if (elements[newPixel.element].polar === elements[pixel.element].polar || elements[newPixel.element].polar === 3) { + if (!newPixel.origColor) { + newPixel.origColor = newPixel.color.match(/\d+/g); + } + // if newPixel.color doesn't start with rgb, continue + if (!newPixel.color.match(/^rgb/)) { continue; } + // parse rgb color string of newPixel rgb(r,g,b) + var rgb = newPixel.color.match(/\d+/g); + if (elements[newPixel.element].id === elements[pixel.element].id) { + // if rgb and newColor are the same, continue + if (rgb[0] === mixnewColor[0] && rgb[1] === mixnewColor[1] && rgb[2] === mixnewColor[2]) { continue; } + var avg = []; + for (var j = 0; j < rgb.length; j++) { + avg[j] = Math.round((rgb[j]*(1- mixstain)) + (mixnewColor[j] * mixstain)); + } + } + else { + // get the average of rgb and newColor, more intense as stain reaches 1 + var avg = []; + for (var j = 0; j < rgb.length; j++) { + avg[j] = Math.floor((rgb[j]*(1- mixstain)) + (mixnewColor[j] * mixstain)); + } + } + if (Math.random() > 0.9 && elements[newPixel.element].soluble === true && elements[pixel.element].soluble === true && newPixel.color === pixel.color && elements[newPixel.element].density > (elements[pixel.element].density - 20) && elements[newPixel.element].density < (elements[pixel.element].density + 40) && elements[pixel.element].density > (elements[newPixel.element].density - 20) && elements[pixel.element].density < (elements[newPixel.element].density + 40) ) { + if (elements[newPixel.element].density < elements[pixel.element].density) { + newPixel.element = pixel.element + } + else if (elements[newPixel.element].density > elements[pixel.element].density) { + pixel.element = newPixel.element + } + else if (elements[newPixel.element].density == elements[pixel.element].density) { + newPixel.element = pixel.element + } + } + // set newPixel color to avg + newPixel.color = "rgb("+avg.join(",")+")"; + } + } + } + } + } +} \ No newline at end of file From 231d5b065723d6d427f23bbf1e78d051536a9e96 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:38:41 -0800 Subject: [PATCH 13/69] Update liquid_mixing.js --- mods/liquid_mixing.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/liquid_mixing.js b/mods/liquid_mixing.js index e0cfc96d..b5859cb9 100644 --- a/mods/liquid_mixing.js +++ b/mods/liquid_mixing.js @@ -1,3 +1,5 @@ +// By Nekonico! + window.addEventListener('load', function() { for (var element in elements) { if (elements[element].state === "liquid" && elements[element].behavior !== behaviors.MOLTEN) { @@ -179,4 +181,6 @@ doStaining = function(pixel) { } } } -} \ No newline at end of file +} + +// By Nekonico! From 900e5a02b0496d166ef49fe7a70db28d7acd8286 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:43:21 -0800 Subject: [PATCH 14/69] added my liquid mixing mod to the mod list! --- mod-list.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mod-list.html b/mod-list.html index a6235e3f..bc729d91 100644 --- a/mod-list.html +++ b/mod-list.html @@ -203,6 +203,7 @@ jaydstuff.jsAdds various chemicals and compoundsJayd laetium.jsAdds several fictional elementsAlice liquid_energy.jsAdds liquid versions of the elements in the Energy categoryAlice +liquid_mixing.jsMakes most liquids be able to mix together and combine colors, some can dilute others, while some can't mix at all, and all liquids are given dynamic colors.Nekonico lye.jsAdds lyeBatteRaquette58 mars.jsAdds some things from Mars with 2 minerals to smelt.charcoal_afterlife metals.jsAdds several metalsAlice @@ -341,13 +342,14 @@ haseulite.jsAdds Loona-related materials with various propertiesAlice lactose_intolerance_and_celiac.jsMakes humans explode on contact with milk, wheat, bread, or toastNubo318 lattice_filler.jsAdds a combination of lattice and filler and adds a destructive variantSuss +liquid_mixing.jsMakes most liquids be able to mix together and combine colors, some can dilute others, while some can't mix at all, and all liquids are given dynamic colors.Nekonico lone_urea.jsAdds urea without the rest of the piss modAlice maze.jsAdds a solvable maze generatorggod memelists.jsMakes it so you must select elements through a list at the bottom of the page.
We like listsmollthecoder minecraft.jsAdds several things from MinecraftStellarX20, nousernamefound minesweeper.jsA subpar implementation of MinesweeperAlice musicalfruit.jsHumans get gas from eating Beansmollthecoder -nekonicos_stuff.jsSome random stuff like graphite and oobleck.Nekonico +nekonicos_stuff.jsSome random stuff like graphite, oobleck and red ice.Nekonico prideflags.jsAdds some pride flags to the game.Adora random_elems.jsCurated randomly generated elementsAlice random_liquids.jsRandomly generates liquids on game loadAlice @@ -368,6 +370,7 @@ invisible_dye.jsAdds elements like Dye and Spray Paint that take the color of the backgroundAlice invisible_wall.jsAdds an element like Wall that takes the color of the backgroundAlice lightmap.jsMakes light sources glowRedBirdly +liquid_mixing.jsMakes most liquids be able to mix together and combine colors, some can dilute others, while some can't mix at all, and all liquids are given dynamic colors.Nekonico moreViews.jsMany new rendering modesggod nicer_flame.jsMakes fire visually pleasingRedBirdly occlusion.jsAdds realistic shadows (similar to Terraria's lighting)RedBirdly From cae1a7f213520b5bb296291a59d5f70b57918471 Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Tue, 18 Feb 2025 21:52:30 -0500 Subject: [PATCH 15/69] shortened description --- mod-list.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mod-list.html b/mod-list.html index bc729d91..d98a2823 100644 --- a/mod-list.html +++ b/mod-list.html @@ -203,7 +203,7 @@ jaydstuff.jsAdds various chemicals and compoundsJayd laetium.jsAdds several fictional elementsAlice liquid_energy.jsAdds liquid versions of the elements in the Energy categoryAlice -liquid_mixing.jsMakes most liquids be able to mix together and combine colors, some can dilute others, while some can't mix at all, and all liquids are given dynamic colors.Nekonico +liquid_mixing.jsAllows liquids to mix colors dynamicallyNekonico lye.jsAdds lyeBatteRaquette58 mars.jsAdds some things from Mars with 2 minerals to smelt.charcoal_afterlife metals.jsAdds several metalsAlice @@ -342,15 +342,15 @@ haseulite.jsAdds Loona-related materials with various propertiesAlice lactose_intolerance_and_celiac.jsMakes humans explode on contact with milk, wheat, bread, or toastNubo318 lattice_filler.jsAdds a combination of lattice and filler and adds a destructive variantSuss -liquid_mixing.jsMakes most liquids be able to mix together and combine colors, some can dilute others, while some can't mix at all, and all liquids are given dynamic colors.Nekonico +liquid_mixing.jsAllows liquids to mix colors dynamicallyNekonico lone_urea.jsAdds urea without the rest of the piss modAlice maze.jsAdds a solvable maze generatorggod memelists.jsMakes it so you must select elements through a list at the bottom of the page.
We like listsmollthecoder minecraft.jsAdds several things from MinecraftStellarX20, nousernamefound minesweeper.jsA subpar implementation of MinesweeperAlice musicalfruit.jsHumans get gas from eating Beansmollthecoder -nekonicos_stuff.jsSome random stuff like graphite, oobleck and red ice.Nekonico -prideflags.jsAdds some pride flags to the game.Adora +nekonicos_stuff.jsSome random stuff like graphite, oobleck, and red iceNekonico +prideflags.jsAdds some pride flags to the gameAdora random_elems.jsCurated randomly generated elementsAlice random_liquids.jsRandomly generates liquids on game loadAlice sbmixup.jsAdds silly elements from a Mix-Up! gamestefanblox @@ -370,7 +370,7 @@ invisible_dye.jsAdds elements like Dye and Spray Paint that take the color of the backgroundAlice invisible_wall.jsAdds an element like Wall that takes the color of the backgroundAlice lightmap.jsMakes light sources glowRedBirdly -liquid_mixing.jsMakes most liquids be able to mix together and combine colors, some can dilute others, while some can't mix at all, and all liquids are given dynamic colors.Nekonico +liquid_mixing.jsAllows liquids to mix colors dynamicallyNekonico moreViews.jsMany new rendering modesggod nicer_flame.jsMakes fire visually pleasingRedBirdly occlusion.jsAdds realistic shadows (similar to Terraria's lighting)RedBirdly From dcc58704599e0eb831417ca959027067872656a1 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 08:19:42 -0500 Subject: [PATCH 16/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 81 +++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index 32846f32..732e7828 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -24,6 +24,11 @@ if (!elements.calcium.reactions) { // Include this block once } elements.calcium.reactions.chlorine = { elem1: "calcium_chloride" } +if (!elements.sun.reactions) { // Include this block once + elements.sun.reactions = {} // This creates the property if it doesn't exist +} +elements.sun.reactions.light = { elem1: "sunlight" } + if (!elements.aluminum.reactions) { // Include this block once elements.aluminum.reactions = {} // This creates the property if it doesn't exist } @@ -1817,7 +1822,7 @@ elements.kai_eraser = { category: "tools", }; -//ok this is the skibididdy mod part +//ok this is the skibidi-edited mod part elements.tocopherol = { color: "#094237", @@ -1831,20 +1836,21 @@ elements.tocopherol = { } }; -elements.freakium = { - color: "#ff4fed", - behavior: behaviors.UL_UR_OPTIMIZED, - category: "gases", +elements.tweakium = { + color: "#22dfce", + behavior: [ + "XX|M1|XX", + "M1|CH:liquid_light%5|M1", + "XX|M2|XX", +], + category: "special", state: "gas", density: 720, temp: 80, - tempLow: 30, - tempHigh: 345, - stateHigh: "meat", reactions: { - "head": { elem1:"baby_oil", elem2:"meat", chance: 0.1 }, - "body": { elem1:"baby_oil", elem2:"meat", chance: 0.3 }, - "freakium": { elem1:"baby_oil", chance: 0.005 }, + "head": { elem1:"fw_ember", elem2:"cooked_meat", chance: 0.1 }, + "body": { elem1:"fw_ember", elem2:"cooked_meat", chance: 0.3 }, + "tweakium": { elem1:"firework", chance: 0.005 }, } }; @@ -1859,6 +1865,18 @@ elements.tocopheryl_gas = { stateLow: ["tocopherol"], }; +elements.sunlight = { + color: "#ffc9c9", + behavior: behaviors.BOUNCY, + category: "gases", + state: "gas", + density: 720, + stain: 0.855, + temp: 5600, + tempLow: -273, + stateLow: ["liquid_light"], +}; + elements.tocopheryl_acetate = { color: "#cffdff", behavior: behaviors.LIQUID, @@ -1870,15 +1888,15 @@ elements.tocopheryl_acetate = { tempHigh: 96, stateHigh: ["tocopheryl_gas"], reactions: { - "oil": { elem1:"baby_oil", elem2:"baby_oil" }, + "zinc": { elem1:"sunscreen", elem2:"sunscreen" }, } }; -elements.diddium = { - color: ["#210742", "#9e20d4"], +elements.nahnium = { + color: ["#bfa6f5", "#b5a5d9"], behavior: [ - "HT:5|CR:freakium%1|HT:5", - "CR:baby_oil%5|XX|CR:baby_oil%5", + "HT:5|CR:tweakium%1|HT:5", + "CR:liquid_light%5|XX|CR:liquid_light%5", "XX|M1|XX", ], category: "powders", @@ -1886,34 +1904,22 @@ elements.diddium = { tempHigh: 80, tempLow: 10, reactions: { - "diddium": { elem1:"diddium", elem2:"stable_diddium" }, + "nahnium": { elem1:"nahnium", elem2:"glass_shard", chance: 0.01 }, } }; -elements.stable_diddium = { - color: ["#210742", "#9e20d4"], - behavior: behaviors.WALL, - category: "states", - temp: 30, - tempHigh: 80, - hidden: true, - tempLow: 10, - reactions: { - "diddium": { elem1:"freakium", elem2:"diddium" }, - "stable_diddium": { elem1:"diddium", elem2:"baby_oil" }, - } -}; - -elements.baby_oil = { - color: "#ffeecc", +elements.sunscreen = { + color: "#ffeeff", behavior: behaviors.LIQUID, category: "liquids", - temp: 30, + temp: 0, + stain: -0.1, tempHigh: 96, stateHigh: ["tocopheryl_gas"], reactions: { - "uranium": { elem1: null, elem2:"diddium" }, - "diddium": { elem1:"stable_diddium", elem2:"freakium" }, + "light": { elem2: null }, + "sunlight": { elem2: null }, + "water": { elem1:"soapy_water", elem2:"soapy_water" }, } }; @@ -1928,8 +1934,9 @@ elements.stupidine = { tempLow: -31, stateLow: "activated_stupidine", reactions: { - "stupidine": { elem2:"fragrance", chance:0.1 }, + "stupidine": { elem2:"fragrance", chance:0.01 }, "iron": { elem2:"stupid", chance:0.01 }, + "light": { elem2:"nahnium", chance:0.01 }, } }; From 9757d47bb78427f59d66cece6f27ad97a3506034 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 11:06:09 -0500 Subject: [PATCH 17/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index 732e7828..ae0127c9 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -1914,7 +1914,7 @@ elements.sunscreen = { category: "liquids", temp: 0, stain: -0.1, - tempHigh: 96, + tempHigh: 9600, stateHigh: ["tocopheryl_gas"], reactions: { "light": { elem2: null }, From 76a1b747ad677a633fbb0a2458fa55eb9776f18c Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 11:17:40 -0500 Subject: [PATCH 18/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index ae0127c9..4c55cd9a 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -1868,7 +1868,7 @@ elements.tocopheryl_gas = { elements.sunlight = { color: "#ffc9c9", behavior: behaviors.BOUNCY, - category: "gases", + category: "energy", state: "gas", density: 720, stain: 0.855, From ed9cd3c123f163bb562c2f675f0c98e07ca883f7 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 11:22:03 -0500 Subject: [PATCH 19/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index 4c55cd9a..539a0492 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -1869,9 +1869,10 @@ elements.sunlight = { color: "#ffc9c9", behavior: behaviors.BOUNCY, category: "energy", - state: "gas", + state: "liquid", + glow: true, density: 720, - stain: 0.855, + stain: 1, temp: 5600, tempLow: -273, stateLow: ["liquid_light"], From 951760bca2a85106bf294bdeafb7b747aa1849ff Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 11:26:35 -0500 Subject: [PATCH 20/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index 539a0492..c9c826f5 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -27,7 +27,7 @@ elements.calcium.reactions.chlorine = { elem1: "calcium_chloride" } if (!elements.sun.reactions) { // Include this block once elements.sun.reactions = {} // This creates the property if it doesn't exist } -elements.sun.reactions.light = { elem1: "sunlight" } +elements.sun.reactions.light = { elem2: "sunlight" } if (!elements.aluminum.reactions) { // Include this block once elements.aluminum.reactions = {} // This creates the property if it doesn't exist From f0915bc99244e78f549af0366b7a77a89c000eba Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 11:28:58 -0500 Subject: [PATCH 21/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index c9c826f5..fcb1c41e 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -124,7 +124,7 @@ elements.silicate = { }; elements.kaolin = { - color: ["#A6B5B8", "#A7A8A0", "#665953", "#BDDAE8"], + color: ["#A6B5B8", "#A7A8A0", "#ede7e4", "#BDDAE8"], behavior: behaviors.POWDER, category: "land", hidden: true, From a6739db899a953af4146177a04c6a04688365fc2 Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 12:58:48 -0500 Subject: [PATCH 22/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 135 ++++++++++++++++++++++++++++++++--------- 1 file changed, 105 insertions(+), 30 deletions(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index fcb1c41e..d60b00d0 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -47,6 +47,7 @@ elements.radiation.reactions.ant = { elem2: "rad_ant" } elements.radiation.reactions.sugar = { elem2: "powdered_lime" } elements.radiation.reactions.soap = { elem2: "purificanol" } elements.radiation.reactions.diamond = { elem2: "emerald" } +elements.radiation.reactions.bird = { elem2: "pyrus_minimus" } if (!elements.melted_cheese.reactions) { // Include this block once elements.melted_cheese.reactions = {} // This creates the property if it doesn't exist @@ -104,9 +105,14 @@ elements.hyper_aluminum = { state: "solid", tempHigh: 9999999, conduct: 1, + desc: "Hyper Aluminium is a cutting-edge, ultra-lightweight metal alloy that blends advanced strength with superior conductivity, designed for futuristic applications. With a sleek, metallic sheen, this material boasts enhanced durability, resistance to extreme temperatures, and a remarkable ability to withstand corrosion. Its unique molecular structure makes it perfect for aerospace engineering, high-performance vehicles, and next-generation tech gadgets. Hyper Aluminium is the pinnacle of modern materials science—stronger, lighter, and more efficient than ever before, setting the stage for a new era of innovation.", charge: 3, stateHigh: "molten_aluminum", hardness: 0.95, + reactions: { + "steel": { elem2:"galvanized_steel" }, + "rock_wall": { elem2:"wall" }, + } }; elements.silicate = { @@ -114,7 +120,7 @@ elements.silicate = { behavior: behaviors.POWDER, category: "powders", hidden: true, - breakInto: "dust", + breakInto: "silica", state: "solid", tempHigh: 500, stateHigh: "molten_silicon", @@ -123,8 +129,23 @@ elements.silicate = { } }; +elements.silica = { + color: ["#ACAA9B", "#CAC7B6", "#979A93"], + behavior: behaviors.LIGHTWEIGHT, + behaviorOn: behaviors.BOUNCY, + category: "powders", + hidden: true, + state: "solid", + tempHigh: 5000, + stateHigh: "molten_ash", + reactions: { + "head": { elem1: null, func: behaviors.KILLPIXEL2 }, //silicosis reference. + } +}; + + elements.kaolin = { - color: ["#A6B5B8", "#A7A8A0", "#ede7e4", "#BDDAE8"], + color: ["#d3e2e6", "#e1e9eb", "#ede7e4", "#fcfcfc"], behavior: behaviors.POWDER, category: "land", hidden: true, @@ -138,6 +159,20 @@ elements.kaolin = { } }; +elements.kaolinite = { + color: ["#3b3b3b", "#575757" "#fcfcfc"], + behavior: behaviors.STURDYPOWDER, + category: "solids", + hidden: true, + state: "solid", + tempHigh: 500, + stateHigh: "molten_slag", + breakInto: ["rock", "kaolin"], + reactions: { + "water": { elem1: "silicate", elem2:"dirty_water" }, + } +}; + elements.chalk = { color: ["#D8275D", "#E0527D", "#AF508C", "#BF73A3"], stain: 0.5, @@ -175,7 +210,7 @@ elements.powdered_lime = { state: "solid", reactions: { "water": { elem1:"foam", elem2:"limeade" }, - "head": { elem1: null, chance: 0.9 }, + "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL }, } }; @@ -190,7 +225,7 @@ elements.limeade = { stateHigh: "foam", tempLow: 0, reactions: { - "head": { elem1: null, chance: 0.7 }, + "head": { elem1: null, chance: 0.7, func: behaviors.FEEDPIXEL }, } }; @@ -250,7 +285,7 @@ elements.almond = { stateLow: "cloner", conduct: 1, reactions: { - "head": { elem1: null, chance: 0.55 }, + "head": { elem1: null, chance: 0.55, func: behaviors.FEEDPIXEL }, "juice": { elem1:"party_popper", elem2:"party_popper" }, "water": { elem1:"nut_sauce", elem2:"almond_water" }, } @@ -273,7 +308,7 @@ elements.nut_sauce = { stateLow: "glue", conduct: 1, reactions: { - "head": { elem1: null, chance: 0.9 }, + "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL }, } }; @@ -311,7 +346,7 @@ elements.maple_syrup = { stain: 0.01, desc: "english for sirop derable", reactions: { - "head": { elem1: null, chance: 0.4 }, + "head": { elem1: null, chance: 0.4, func: behaviors.FEEDPIXEL }, } }; @@ -499,7 +534,7 @@ elements.maple_milk = { hidden: true, isFood: true, reactions: { - "head": { elem1: null, chance: 0.9 }, + "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL }, } }; @@ -661,7 +696,7 @@ elements.buttermilk = { tempHigh: 100, stateHigh: "steam", reactions: { - "head": { elem1: null, chance: 0.9 }, + "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL }, "water": { elem1: null, elem2:"milk" }, "rock": { elem1: null, elem2:"butter" }, "magma": { elem1: null, elem2:"melted_butter" }, @@ -791,7 +826,7 @@ elements.banana = { breakInto: "banana_milk", breakIntoColor: "#d8b284", reactions: { - "head": { elem1: null, chance: 0.35 }, + "head": { elem1: null, chance: 0.35, func: behaviors.FEEDPIXEL }, "milk": { elem1: null, elem2: "banana_milk" }, } }; @@ -815,7 +850,7 @@ elements.banana_milk = { burnInto: "dioxin", conduct: 1, reactions: { - "head": { elem1: null, chance: 0.9 }, + "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL }, } }; @@ -1022,7 +1057,7 @@ elements.violetium.behavior = [ elements.pyrus_minimus = { color: ["#eb6e34", "#ffd014", "#ff143c"], - desc: "The rare Pyrus Minimus is a flying...animal? It preys on bird and worms.", + desc: "The rare Pyrus Minimus is a flying...animal? It preys on birds and worms.", behaviorOn: [ "XX|XX|XX", "XX|EX:5>firework|XX", @@ -1031,7 +1066,7 @@ elements.pyrus_minimus = { behavior: behaviors.FLY, category: "life", state: "solid", - foodNeed: 3, + foodNeed: 7, breakInto: ["fire", "cooked_meat", "slime"], glow: true, temp: 300, @@ -1040,13 +1075,13 @@ elements.pyrus_minimus = { fireColor: "#ff5b14", conduct: 1, reactions: { - "cooked_meat": { elem2: null }, - "dead_plant": { elem2: null }, - "juice": { elem2: null }, - "chocolate": { elem2: null }, - "basalt": { elem2: null }, - "bird": { elem2: ["feather", "blood"] }, - "worm": { elem2: null }, + "cooked_meat": { elem2: null, func: behaviors.FEEDPIXEL }, + "dead_plant": { elem2: null, func: behaviors.FEEDPIXEL }, + "juice": { elem2: null, func: behaviors.FEEDPIXEL }, + "chocolate": { elem2: null, func: behaviors.FEEDPIXEL }, + "basalt": { elem2: null, func: behaviors.FEEDPIXEL }, + "bird": { elem2: ["feather", "blood"], func: behaviors.FEEDPIXEL }, + "worm": { elem2: null, func: behaviors.FEEDPIXEL }, } }; @@ -1105,7 +1140,7 @@ elements.scheele_green = { stateHigh: "molten_copper", reactions: { "terracotta": { elem1: null, elem2: "green_terracotta" }, - "head": { elem1: "poison", elem2: "green_skull", chance: 0.3 }, + "head": { elem1: "poison", elem2: "green_skull", chance: 0.3, func: behaviors.KILLPIXEL2 }, } }; @@ -1123,7 +1158,7 @@ elements.green_skull = { tempHigh: 275, stateHigh: "rad_steam", reactions: { - "head": { elem2: "green_skull", chance: 0.1 }, + "head": { elem2: "green_skull", chance: 0.1, func: behaviors.KILLPIXEL2 }, } }; @@ -1228,7 +1263,7 @@ elements.beryllium = { breakInto: "emerald", reactions: { "oxygen": { elem1: "beryllium_oxide", elem2: "beryllium_oxide" }, - "head": { elem2: "poison", chance: 0.05 }, + "head": { elem1: "poison", chance: 0.05, func: behaviors.KILLPIXEL2 }, "volatilium": { elem2: "beryllium_volatilium_alloy" }, } }; @@ -1271,7 +1306,7 @@ elements.verylithium = { reactions: { "neutron": { elem1: "verylithium_oxide", elem2: ["molten_metal", "beryllium"] }, "water": { elem1: "verylithium_hydrate" }, - "head": { elem2: "electric" } + "head": { elem1: "electric", func: behaviors.KILLPIXEL2 } } }; @@ -1562,7 +1597,7 @@ elements.akshajium = { related: ["sankarium", "narayananium"], breakInto: ["crumb", "sauce", "melted_cheese", "cooked_meat"], reactions: { - "head": { elem1: null, chance: 0.36 }, + "head": { elem1: null, chance: 0.36, func: behaviors.FEEDPIXEL }, } }; @@ -1591,7 +1626,7 @@ elements.fancy_dough = { stateHigh: ["steam", "brioche_steam"], desc: "it can be evaporated", reactions: { - "head": { elem1: null, chance: 0.1 }, + "head": { elem1: null, chance: 0.1, func: behaviors.FEEDPIXEL }, } }; @@ -1608,7 +1643,7 @@ elements.brioche = { isFood: true, breakInto: "fancy_flour", reactions: { - "head": { elem1: null, chance: 0.7 }, + "head": { elem1: null, chance: 0.7, func: behaviors.FEEDPIXEL }, } }; @@ -1785,7 +1820,7 @@ elements.hydroid = { reactions: { "fire": { elem1: "hydroid", elem2:"explosion" }, "body": { elem1: "hydroid", elem2:"fyrium" }, - "head": { elem1: "hydroid", elem2:"pyrane" }, + "head": { elem1: "hydroid", elem2:"pyrane", func: behaviors.KILLPIXEL2 }, "water": { elem1: "hydroid", elem2:"hydroid" }, "maple_syrup": { elem1: "hydroid", elem2:"hydroid" }, "magma": { elem1: "hydroid", elem2:"hydroid" }, @@ -1994,7 +2029,7 @@ elements.skibidi_soda = { stateHigh: ["skibidiness", "skibidine"], reactions: { "oxygen": { elem1:"skibidi_soda", elem2:"skibidiness" }, - "head": { elem1: "skibidiness" }, + "head": { elem1: "skibidiness", func: behaviors.FEEDPIXEL }, } }; @@ -2021,7 +2056,47 @@ elements.skibidiness = { } }; -//idk how these work and most of them don't idk why but this is just a beta so... +elements.right_missile = { + color: ["#8a9499", "#9e9e9e", "#d1d1d1"], + category: "weapons", + state: "solid", + temp: 40, + burning: true, + tempHigh: 2000, + stateHigh: "molten_metal_scrap", + breakInto: "metal_scrap", + fireColor: "#e342a5", + conduct: 1, + charge: 3, +}; + +elements.right_missile.behavior = [ + ["XX","XX","XX"], + ["XX","XX","M1 AND EX:20>explosion"], + ["XX","XX","XX"], +]; + +elements.left_missile = { + color: ["#8a9499", "#9e9e9e", "#d1d1d1"], + category: "weapons", + state: "solid", + temp: 40, + burning: true, + tempHigh: 2000, + stateHigh: "molten_metal_scrap", + breakInto: "metal_scrap", + fireColor: "#e342a5", + conduct: 1, + charge: 3, +}; + +elements.left_missile.behavior = [ + ["XX","XX","XX"], + ["M1 AND EX:20>explosion","XX","XX"], + ["XX","XX","XX"], +]; + +//ignore these elements.melted_butter.reactions.bread = { "elem1": null, "elem2":"brioche" }, elements.water.reactions.fancy_flour = { "elem1": null, "elem2":"fancy_dough" }, From 1efceff4b8c2b589f1902d6d3f479efa6a7eaf7a Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 13:01:12 -0500 Subject: [PATCH 23/69] Update mod-list.html --- mod-list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod-list.html b/mod-list.html index 084ccdb8..323ff02e 100644 --- a/mod-list.html +++ b/mod-list.html @@ -188,7 +188,7 @@ boiling_things.jsAllows for various elements to be vaporizedAlice bouncing_balls.jsAdds new types of balls that bounce accurately and roll.Nekonico chalcopyrite.jsAdds the chalcopyrite oreSophie -charsonsmoduno.jsAdds Arsenic, Beryllium, Silicon, compounds, and some non-realistic stuffCharsonBurensen +charsonsmoduno.jsAdds Arsenic, Beryllium, Silicon, compounds, and some non-realistic stuff, such as Aresium and NahniumCharsonBurensen chem.jsAdds several chemistry and physics-related elementslllllllllwith10ls clf3.jsAdds Chlorine TrifluorideAlice debrisable.jsExpands the number of breakable elements, changes erosion, and adds way to craft certain elements from breaking other elements. Nekonico From 29ad4e35c233eab589df63a651eb3a299ae1511d Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 13:04:22 -0500 Subject: [PATCH 24/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index d60b00d0..1fee4cff 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -105,7 +105,7 @@ elements.hyper_aluminum = { state: "solid", tempHigh: 9999999, conduct: 1, - desc: "Hyper Aluminium is a cutting-edge, ultra-lightweight metal alloy that blends advanced strength with superior conductivity, designed for futuristic applications. With a sleek, metallic sheen, this material boasts enhanced durability, resistance to extreme temperatures, and a remarkable ability to withstand corrosion. Its unique molecular structure makes it perfect for aerospace engineering, high-performance vehicles, and next-generation tech gadgets. Hyper Aluminium is the pinnacle of modern materials science—stronger, lighter, and more efficient than ever before, setting the stage for a new era of innovation.", + desc: "With a sleek, metallic sheen, this material boasts enhanced durability, resistance to extreme temperatures, and a remarkable ability to withstand corrosion. Hyper Aluminium is the pinnacle of modern materials science—stronger, lighter, and more efficient than ever before, setting the stage for a new era of innovation.", charge: 3, stateHigh: "molten_aluminum", hardness: 0.95, @@ -160,7 +160,7 @@ elements.kaolin = { }; elements.kaolinite = { - color: ["#3b3b3b", "#575757" "#fcfcfc"], + color: ["#3b3b3b", "#575757", "#fcfcfc"], behavior: behaviors.STURDYPOWDER, category: "solids", hidden: true, From 79bcc72663619a836b0a16c8f6261d5802601a4b Mon Sep 17 00:00:00 2001 From: CharsonBurensen <1peruejos@Hdsb.ca> Date: Wed, 19 Feb 2025 13:09:54 -0500 Subject: [PATCH 25/69] Update charsonsmoduno.js --- mods/charsonsmoduno.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/charsonsmoduno.js b/mods/charsonsmoduno.js index 1fee4cff..21ac4c46 100644 --- a/mods/charsonsmoduno.js +++ b/mods/charsonsmoduno.js @@ -1977,7 +1977,7 @@ elements.stupidine = { }; elements.liquid_stupidine = { - color: ["#5328c9", "4089e3"], + color: ["#5328c9", "#4089e3"], behavior: [ ["M2","M1","M2"], ["XX","XX","XX"], @@ -2034,7 +2034,7 @@ elements.skibidi_soda = { }; elements.skibidine = { - color: ["#51649c", "949c51"], + color: ["#51649c", "#949c51"], behavior: behaviors.LIQUID, category: "liquids", state: "liquid", From 75228bac6bce2d86d16e637b58d8f67cf496423f Mon Sep 17 00:00:00 2001 From: redbirdly <155550833+redbirdly@users.noreply.github.com> Date: Thu, 20 Feb 2025 20:59:13 +0800 Subject: [PATCH 26/69] Create clouds.js --- mods/clouds.js | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 mods/clouds.js diff --git a/mods/clouds.js b/mods/clouds.js new file mode 100644 index 00000000..4fcc7777 --- /dev/null +++ b/mods/clouds.js @@ -0,0 +1,80 @@ +// Clouds.js beta version + +// Biased random +function randomGaussian(A, B, biasFactor=2) { + let u = Math.random(); + let v = Math.random(); + let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v); + + let mean = (A + B) / 2; + let stdDev = (B - A) / biasFactor; + + let result = mean + num * stdDev; + + return Math.min(Math.max(result, A), B); +} + +// Spawn clouds +var clouds = []; +setTimeout(() => { + for (var i = 0;i < 50;i++) { + var w = (Math.random() * 13) + 7; + var h = (Math.random() * 9) + 4; + + // Higher clouds = faster + var y = randomGaussian(0, height * 0.75, 5); + var speedFactor = (1 - (y / (height * 0.75))); + + clouds.push({ + x: Math.random() * (width - w), + y: y, + w: w, + h: h, + dx: ((Math.random() - 0.5) * 0.05) * (0.5 + speedFactor * 2), + type: Math.random() > 0.5 ? 1 : 0 + }); + } +}, 200); + +function renderClouds(ctx) { + ctx.strokeStyle = "transparent"; + ctx.globalAlpha = 1.0; + + for (var i = 0;i < clouds.length;i++) { + var cloud = clouds[i]; + + var gradient = ctx.createLinearGradient( + cloud.x * pixelSize, cloud.y * pixelSize, + cloud.x * pixelSize, (cloud.y + cloud.h) * pixelSize + ); + + var cloudColor = cloud.type == 1 ? "255,255,255" : "220,220,210" + gradient.addColorStop(0, `RGBA(${cloudColor},0.1)`); + gradient.addColorStop(1, `RGBA(${cloudColor},0.2)`); + + ctx.filter = "blur(1px)"; + ctx.fillStyle = gradient; + ctx.fillRect(cloud.x * pixelSize, cloud.y * pixelSize, cloud.w * pixelSize, cloud.h * pixelSize); + ctx.filter = "none"; + } +} + +function updateClouds() { + if (paused) {return;} + + for (var i = 0;i < clouds.length;i++) { + var cloud = clouds[i]; + + cloud.x += cloud.dx; + + // Wrap around + if (cloud.x > width) { + cloud.x = -cloud.w; + } else if (cloud.x + cloud.w < 0) { + cloud.x = width; + } + } +} + +renderPrePixel(renderClouds); +runEveryTick(updateClouds); From fa565bf8a4cdd2d2db321cdaa33f7fa192f7e52b Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:52:17 -0800 Subject: [PATCH 27/69] Update nekonicos_stuff.js --- mods/nekonicos_stuff.js | 351 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 349 insertions(+), 2 deletions(-) diff --git a/mods/nekonicos_stuff.js b/mods/nekonicos_stuff.js index b86c74fa..d2473836 100644 --- a/mods/nekonicos_stuff.js +++ b/mods/nekonicos_stuff.js @@ -124,6 +124,79 @@ elements.corn_starch = { isFood: true } +elements.desand = { + color: "#192a88", + tool: function (pixel) { + if (pixel.element === "sand") { + deletePixel(pixel.x,pixel.y) + } + else if (pixel.element === "packed_sand") { + changePixel(pixel,"foam") + } + else if (pixel.element === "color_sand") { + pixel.element = "smoke"; + } + else if (pixel.element === "glass") { + deletePixel(pixel.x,pixel.y) + } + else if (pixel.element === "rad_glass") { + changePixel(pixel,"radiation") + } + else if (pixel.element === "glass_shard") { + deletePixel(pixel.x,pixel.y) + } + else if (pixel.element === "rad_shard") { + changePixel(pixel,"radiation") + } + else if (pixel.element === "molten_glass") { + changePixel(pixel,"fire") + } + else if (pixel.element === "molten_rad_glass") { + changePixel(pixel,"fire") + } + else if (pixel.element === 'stained_glass') { + pixel.element = "smoke"; + } + else if (pixel.element === "wet_sand") { + changePixel(pixel,"water") + } + else if (pixel.element === "sandstorm") { + if (Math.random() < 0.95) { + pixel.element = "foam"; + } + else { + changePixel(pixel,"cloud") + } + } + else if (pixel.element === "tornado") { + if (pixel.fired === "sand") { + pixel.fired = null + pixel.color = pixelColorPick(pixel,elements.tornado.color) + } + } + else if (pixel.element === "concrete") { + if (Math.random() < 0.95) { + pixel.element = "gravel"; + } + else { + changePixel(pixel,"oxygen") + } + } + else if (pixel.element === "cement") { + if (Math.random() < 0.80) { + pixel.element = "gravel"; + } + else { + changePixel(pixel,"water") + } + } + else if ([pixel.element].startsWith("sand_")) { + deletePixel(pixel.x,pixel.y) + } + }, + category: "tools", +} + elements.oobleck = { color: "#8ef1b8", tick: function(pixel){ @@ -396,7 +469,281 @@ elements.graphite = { density: 2260, hardness: 0.99, breakInto: "graphite_dust", - stain: 0.5 + stain: 0.4 +} + +elements.white_pawn = { + color: "#F2F2CC", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "DL:black_pawn,black_rook,black_bishop,black_knight%0.5|M1%0.5|DL:black_pawn,black_rook,black_bishop,black_knight%0.5", + ], + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.black_pawn = { + color: "#2F2F33", + behavior: [ + "DL:white_pawn,white_rook,white_bishop,white_knight%0.5|M1%0.5|DL:white_pawn,white_rook,white_bishop,white_knight%0.5", + "XX|XX|XX", + "XX|XX|XX", + ], + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.white_rook = { + color: "#F2F2CC", + behavior: [ + "XX|M1%0.5|XX", + "M1%0.5|XX|M1%0.5", + "XX|M1%0.5|XX", + ], + reactions: { + "black_pawn": { elem2: null }, + "black_rook": { elem2: null }, + "black_bishop": { elem2: null }, + "black_knight": { elem2: null }, + "black_queen": { elem2: null }, + "black_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.black_rook = { + color: "#2F2F33", + behavior: [ + "XX|M1%0.5|XX", + "M1%0.5|XX|M1%0.5", + "XX|M1%0.5|XX", + ], + reactions: { + "white_pawn": { elem2: null }, + "white_rook": { elem2: null }, + "white_bishop": { elem2: null }, + "white_knight": { elem2: null }, + "white_queen": { elem2: null }, + "white_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.white_bishop = { + color: "#F2F2CC", + behavior: [ + "M1%0.5|XX|M1%0.5", + "XX|XX|XX", + "M1%0.5|XX|M1%0.5", + ], + reactions: { + "black_pawn": { elem2: null }, + "black_rook": { elem2: null }, + "black_bishop": { elem2: null }, + "black_knight": { elem2: null }, + "black_queen": { elem2: null }, + "black_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.black_bishop = { + color: "#2F2F33", + behavior: [ + "M1%0.5|XX|M1%0.5", + "XX|XX|XX", + "M1%0.5|XX|M1%0.5", + ], + reactions: { + "white_pawn": { elem2: null }, + "white_rook": { elem2: null }, + "white_bishop": { elem2: null }, + "white_knight": { elem2: null }, + "white_queen": { elem2: null }, + "white_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.white_knight = { + color: "#F2F2CC", + behavior: [ + "XX|M1%0.5|XX|M1%0.5|XX", + "M1%0.5|XX|XX|XX|M1%0.5", + "XX|XX|XX|XX|XX", + "M1%0.5|XX|XX|XX|M1%0.5", + "XX|M1%0.5|XX|M1%0.5|XX", + ], + reactions: { + "black_pawn": { elem2: null }, + "black_rook": { elem2: null }, + "black_bishop": { elem2: null }, + "black_knight": { elem2: null }, + "black_queen": { elem2: null }, + "black_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.black_knight = { + color: "#2F2F33", + behavior: [ + "XX|M1%0.5|XX|M1%0.5|XX", + "M1%0.5|XX|XX|XX|M1%0.5", + "XX|XX|XX|XX|XX", + "M1%0.5|XX|XX|XX|M1%0.5", + "XX|M1%0.5|XX|M1%0.5|XX", + ], + reactions: { + "white_pawn": { elem2: null }, + "white_rook": { elem2: null }, + "white_bishop": { elem2: null }, + "white_knight": { elem2: null }, + "white_queen": { elem2: null }, + "white_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.white_queen = { + color: "#F2F2CC", + behavior: [ + "M1%0.5|M1%0.5|M1%0.5", + "M1%0.5|XX|M1%0.5", + "M1%0.5|M1%0.5|M1%0.5", + ], + reactions: { + "black_pawn": { elem2: null }, + "black_rook": { elem2: null }, + "black_bishop": { elem2: null }, + "black_knight": { elem2: null }, + "black_queen": { elem2: null }, + "black_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.black_queen = { + color: "#2F2F33", + behavior: [ + "M1%0.5|M1%0.5|M1%0.5", + "M1%0.5|XX|M1%0.5", + "M1%0.5|M1%0.5|M1%0.5", + ], + reactions: { + "white_pawn": { elem2: null }, + "white_rook": { elem2: null }, + "white_bishop": { elem2: null }, + "white_knight": { elem2: null }, + "white_queen": { elem2: null }, + "white_king": { elem2: "supernova" }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.white_king = { + color: "#F2F2CC", + behavior: [ + "M1%0.05|M1%0.05|M1%0.05", + "M1%0.05|XX|M1%0.05", + "M1%0.025|M1%0.025|M1%0.025", + ], + reactions: { + "black_pawn": { elem2: null }, + "black_rook": { elem2: null }, + "black_bishop": { elem2: null }, + "black_knight": { elem2: null }, + "black_queen": { elem2: null }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", +} + +elements.black_king = { + color: "#2F2F33", + behavior: [ + "M1%0.025|M1%0.025|M1%0.025", + "M1%0.05|XX|M1%0.05", + "M1%0.05|M1%0.05|M1%0.05", + ], + reactions: { + "white_pawn": { elem2: null }, + "white_rook": { elem2: null }, + "white_bishop": { elem2: null }, + "white_knight": { elem2: null }, + "white_queen": { elem2: null }, + }, + tempHigh: 400, + stateHigh: "ember", + category: "chess", + state: "solid", + density: 2260, + hardness: 0.5, + breakInto: "sawdust", } elements.graphite_dust = { @@ -414,5 +761,5 @@ elements.graphite_dust = { category: "powders", state: "solid", density: 1830, - stain: 0.5 + stain: 0.6 } From 3ec76dd5b4783b5cb854bbcdb1bb37d23f7757ef Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:57:28 -0800 Subject: [PATCH 28/69] Update liquid_mixing.js --- mods/liquid_mixing.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/mods/liquid_mixing.js b/mods/liquid_mixing.js index b5859cb9..82896b37 100644 --- a/mods/liquid_mixing.js +++ b/mods/liquid_mixing.js @@ -1,8 +1,6 @@ -// By Nekonico! - window.addEventListener('load', function() { for (var element in elements) { - if (elements[element].state === "liquid" && elements[element].behavior !== behaviors.MOLTEN) { + if (elements[element].state === "liquid" && elements[element].behavior != behaviors.MOLTEN) { elements[element].renderer = function(pixel, ctx) { // this part used nouseramefounds code, props to him! if (!pixel.rSeed){pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]} if (typeof pixel.color == "object"){ @@ -38,16 +36,16 @@ window.addEventListener('load', function() { } } } - if (elements[element].id === elements.cement.id || elements[element].id === elements.beans.id || elements[element].id === elements.algae.id || elements[element].id === elements.cellulose.id) { + if (element === "cement" || element === "beans" || element === "algae" || element === "cellulose") { elements[element].miscible = false } - if (elements[element].id === elements.midas_touch.id || elements[element].id === elements.cement.id || elements[element].id === elements.beans.id || elements[element].id === elements.algae.id || elements[element].id === elements.cellulose.id || elements[element].id === elements.primordial_soup.id || elements[element].id === elements.cyanide.id || elements[element].id === elements.poison.id || elements[element].id === elements.antidote.id || elements[element].id === elements.mercury.id || elements[element].id === elements.liquid_oxygen.id || elements[element].id === elements.liquid_nitrogen.id) { + if (element === "midas_touch" || element === "cement" || element === "beans" || element === "algae" || element === "cellulose" || element === "primordial_soup" || element === "cyanide" || element === "poison" || element === "antidote" || element === "mercury" || element === "liquid_oxygen" || element === "liquid_nitrogen") { elements[element].soluble = false } - if (elements[element].id === elements.midas_touch.id || elements[element].id === elements.molasses.id || elements[element].id === elements.grease.id || elements[element].id === elements.oil.id || elements[element].id === elements.lamp_oil.id || elements[element].id === elements.nut_oil.id|| elements[element].id === elements.honey.id || elements[element].id === elements.sap.id || elements[element].id === elements.caramel.id) { + if (element === "midas_touch" || element === "molasses" || element === "grease" || element === "oil" || element === "lamp_oil" || element === "nut_oil" || element === "honey" || element === "sap" || element === "caramel") { elements[element].polar = 2 } - else if (elements[element].id === elements.soap.id) { + else if (element === "soap") { elements[element].polar = 3 } else { @@ -182,5 +180,3 @@ doStaining = function(pixel) { } } } - -// By Nekonico! From f41b32197766caed0720805415fbccc427cd4421 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Thu, 20 Feb 2025 20:15:49 -0800 Subject: [PATCH 29/69] medicine update --- mods/biology.js | 143 ++++++++++++++++++++---------------------------- 1 file changed, 60 insertions(+), 83 deletions(-) diff --git a/mods/biology.js b/mods/biology.js index 2f94e9c6..0d88c3f4 100644 --- a/mods/biology.js +++ b/mods/biology.js @@ -299,8 +299,9 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -367,8 +368,9 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -435,8 +437,9 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -503,8 +506,9 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -631,8 +635,9 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -713,8 +718,9 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -795,8 +801,9 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -877,8 +884,9 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -1037,8 +1045,9 @@ if (!isEmpty(pixel.x, pixel.y-1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -1101,8 +1110,9 @@ if (!isEmpty(pixel.x, pixel.y+1, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -1165,8 +1175,9 @@ if (!isEmpty(pixel.x-1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -1229,8 +1240,9 @@ if (!isEmpty(pixel.x+1, pixel.y, true)) { if (hitPixel.alcoRecover !== true && pixel.alcoRecover) { hitPixel.alcoRecover = true } - if (hitPixel.fentDepri < pixel.fentDepri && pixel.fentDepri) { + if ((hitPixel.fentDepri < pixel.fentDepri || !hitPixel.fentDepri) && pixel.fentDepri) { hitPixel.fentDepri = pixel.fentDepri + hitPixel.fenAddict = true } if (hitPixel.sick != true && pixel.sick == true && Math.random() > 0.95) { hitPixel.sick = true @@ -2662,7 +2674,7 @@ elements.heart = { burn: 20, burnTime: 160, burnInto: "meat", - breakInto: ["meat","shed_blood","shed_blood",], + breakInto: ["meat","blood","blood",], category: "circulation", state: "solid", density: 1250, @@ -2784,7 +2796,7 @@ elements.kidney = { burn: 20, burnTime: 160, burnInto: "meat", - breakInto: ["meat","urine","shed_blood"], + breakInto: ["meat","urine","blood"], category: "circulation", state: "solid", density: 1250, @@ -2827,7 +2839,7 @@ elements.liver = { burn: 20, burnTime: 160, burnInto: "meat", - breakInto: ["meat","rotten_meat","shed_blood",], + breakInto: ["meat","rotten_meat","blood",], category: "nutrition", state: "solid", density: 1250, @@ -2848,7 +2860,7 @@ elements.blood_vessel = { nutrTrans: 30, oxygTrans: 35, isMultiDie: true, - bleed: "shed_blood", + bleed: "blood", hoverStat: function(pixel) { return "Ntr:"+pixel.nutrition+" O2:"+pixel.oxygen }, @@ -2873,7 +2885,7 @@ elements.blood_vessel = { "brick_rubble": { elem2: "infected_vessel", chance:0.005 }, "glitter": { elem1: null, elem2: "infected_vessel", chance:0.001 }, "sulfur": { elem2: "infected_vessel", chance:0.005 }, - "rust": { elem1: ["meat","infected_vessel","infected_vessel","infected_vessel","shed_blood","shed_blood"], chance:0.005 }, + "rust": { elem1: ["meat","infected_vessel","infected_vessel","infected_vessel","blood","blood"], chance:0.005 }, "mercury": { elem2: null, elem1: "infected_vessel", func:function(pixel1,pixel2){ if (pixel1.poisoned != true) { pixel1.poisoned = true; } }, chance:0.005 }, @@ -2894,13 +2906,13 @@ elements.blood_vessel = { } }, chance:0.01 }, }, tempHigh: 175, - stateHigh: ["meat","shed_blood","blood"], + stateHigh: ["meat","blood","blood"], tempLow: -50, - stateLow: ["frozen_meat","shed_blood","blood","blood"], + stateLow: ["frozen_meat","blood","blood","blood"], burn: 20, burnTime: 160, - burnInto: ["meat","shed_blood","shed_blood","shed_blood","shed_blood","blood","blood","steam"], - breakInto: ["meat","shed_blood","shed_blood","shed_blood","shed_blood","shed_blood","shed_blood","blood"], + burnInto: ["meat","blood","blood","blood","blood","blood","blood","steam"], + breakInto: ["meat","blood","blood","blood","blood","blood","blood","blood"], category: "circulation", state: "solid", density: 1250, @@ -2976,7 +2988,7 @@ elements.white_blood_cell = { nutrTrans: 35, oxygTrans: 40, isMultiDie: true, - bleed: "shed_blood", + bleed: "blood", hoverStat: function(pixel) { return "Ntr:"+pixel.nutrition+" O2:"+pixel.oxygen }, @@ -3057,7 +3069,7 @@ elements.white_blood_cell = { heartAttached: false, }, reactions: { - "rust": { elem1: ["meat","infected_vessel","infected_vessel","infected_vessel","shed_blood","shed_blood"], chance:0.005 }, + "rust": { elem1: ["meat","infected_vessel","infected_vessel","infected_vessel","blood","blood"], chance:0.005 }, "mercury": { elem2: null, elem1: "infected_vessel", func:function(pixel1,pixel2){ if (pixel1.poisoned != true) { pixel1.poisoned = true; } }, chance:0.005 }, @@ -3076,16 +3088,16 @@ elements.white_blood_cell = { "cyanide": { elem2: null, func:function(pixel1,pixel2){ if (pixel1.poisoned != true) { pixel1.poisoned = true; } }, chance:0.01 }, - "shed_blood": { elem2:"blood_vessel", chance:0.10 }, + "blood": { elem2:"blood_vessel", chance:0.10 }, }, tempHigh: 175, - stateHigh: ["meat","shed_blood","shed_blood","blood"], + stateHigh: ["meat","blood","blood","blood"], tempLow: -50, stateLow: "frozen_meat", burn: 20, burnTime: 160, - burnInto: ["meat","shed_blood","shed_blood","blood"], - breakInto: "shed_blood", + burnInto: ["meat","blood","blood","blood"], + breakInto: "blood", category: "circulation", state: "solid", density: 1250, @@ -3987,7 +3999,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4029,7 +4041,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4084,7 +4096,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4131,7 +4143,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4186,7 +4198,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4231,7 +4243,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4286,7 +4298,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -4333,7 +4345,7 @@ elements.intestines = { pixel.alcoDepri = 0 } } - if (hitPixel.fent === true && Math.random() > 0.5) { + if (hitPixel.fent === true && Math.random() > 0.25) { if (pixel.fentDepri) { pixel.fentDepri = 0 } @@ -5991,6 +6003,7 @@ elements.stomach_acid = { "cancer": { elem2:"gaseous_material", attr2:{"nutrition":-15, "speed":-15, "sick":true}, chance:0.02 }, "plague": { elem2:"gaseous_material", attr2:{"nutrition":-15, "speed":-10, "sick":true}, chance:0.02 }, "glue": { elem2:"gaseous_material", attr2:{"nutrition":-10, "speed":-10}, chance:0.02 }, + "fentanyl": { elem2:"gaseous_material", attr2:{"nutrition":-50, "speed":-20, "fent":true}, chance:0.01 }, }, category: "nutrition", tempHigh: 110, @@ -6120,6 +6133,7 @@ elements.herbi_acid = { "cancer": { elem2:"gaseous_material", attr2:{"nutrition":-25, "speed":-15, "sick":true}, chance:0.02 }, "plague": { elem2:"gaseous_material", attr2:{"nutrition":-15, "speed":-10, "sick":true}, chance:0.02 }, "glue": { elem2:"gaseous_material", attr2:{"nutrition":-10, "speed":-10, "sick":true}, chance:0.02 }, + "fentanyl": { elem2:"gaseous_material", attr2:{"nutrition":-50, "speed":-20, "fent":true}, chance:0.01 }, }, category: "nutrition", tempHigh: 110, @@ -6244,6 +6258,7 @@ elements.carni_acid = { "cancer": { elem2:"digested_material", attr2:{"nutrition":-5, "speed":-5, "sick":true}, chance:0.02 }, "plague": { elem2:"gaseous_material", attr2:{"nutrition":-15, "speed":-10, "sick":true}, chance:0.02 }, "glue": { elem2:"gaseous_material", attr2:{"nutrition":-10, "speed":-15, "sick":true}, chance:0.02 }, + "fentanyl": { elem2:"gaseous_material", attr2:{"nutrition":-50, "speed":-20, "fent":true}, chance:0.01 }, }, category: "nutrition", tempHigh: 110, @@ -6367,6 +6382,7 @@ elements.explosive_acid = { "cancer": { elem2:"digested_material", attr2:{"nutrition":5}, chance:0.02 }, "plague": { elem2:"digested_material", attr2:{"nutrition":5}, chance:0.02 }, "glue": { elem2:"digested_material", attr2:{"nutrition":5}, chance:0.02 }, + "fentanyl": { elem2:"gaseous_material", attr2:{"nutrition":-5}, chance:0.01 }, }, category: "nutrition", tempHigh: 600, @@ -7730,54 +7746,12 @@ elements.toilet = { desc: "Secret tool. Steal your enemies life!" } -elements.shed_blood = { - name:"blood", - color: ["#fe0000","#ed0000"], - behavior: behaviors.LIQUID, - tick: function(pixel) { - if (pixel.age > 1500 && Math.random() < 0.05) { - changePixel(pixel,"blood"); - } - pixel.age++; - doDefaults(pixel); - }, - reactions: { - "vaccine": { elem1:"antibody", elem2:null }, - "plague": { elem1:"infection", elem2:null }, - "rotten_meat": { elem1:"infection" }, - "rotten_cheese": { elem1:"infection" }, - "virus": { elem1:"infection", elem2:null }, - "cancer": { elem1:"infection" }, - "cyanide": { elem1:"infection", elem2:null }, - "cyanide_gas": { elem1:"infection", elem2:null }, - "mushroom_spore": { elem1:"infection", elem2:null }, - "mushroom_gill": { elem1:"infection" }, - "dirty_water": { elem1:"infection", elem2:null }, - "rad_steam": { elem1:"infection" }, - "rad_glass": { elem1:"infection" }, - "rad_shard": { elem1:"infection" }, - "rad_cloud": { elem1:"infection" }, - "fallout": { elem1:"infection" }, - "rust": { elem1:"infection", chance:0.05 }, - "oxidized_copper": { elem1:"infection", chance:0.05 }, - "rat": { elem1:"infection", chance:0.075 }, - "flea": { elem1:"infection", chance:0.03 }, - "worm": { elem1:"infection", chance:0.03 }, - "mercury": { elem1:"infection", elem2:null, chance:0.05 }, - "lead": { elem1:"infection", elem2:null, chance:0.01 }, - "oxygen": { elem2:null, chance:0.05 }, - "carbon_dioxide": { elem2:null, chance:0.05 }, - "alcohol": { elem1:[null,"dna"], chance:0.02 } - }, - viscosity: 20, - tempHigh: 124.55, - stateHigh: ["steam","salt","oxygen"], - tempLow: 0, - stateLow: "blood", - category:"liquids", - state: "liquid", - density: 1065, - stain: 0.04, +elements.fentanyl = { + category: "medicine", + color: "#d5edf3", + state: "solid", + behavior: behaviors.POWDER, + tempHigh: 87.5, } if (!elements.cancer.reactions) { elements.cancer.reactions = {} } @@ -8070,3 +8044,6 @@ elements.vaccine.reactions.infected_vessel = { elem1: null, elem2: "blood_vessel elements.antidote.reactions.infected_vessel = { elem1: null, elem2: "blood_vessel", attr2:{"immune": true}, chance:0.02 } elements.salt_water.stateHigh = ["steam","steam","salt"] + +elements.vaccine.category = "medicine" +elements.antidote.category = "medicine" From 5eb0a036d3465f82c305068e0f11662ff911f365 Mon Sep 17 00:00:00 2001 From: redbirdly <155550833+redbirdly@users.noreply.github.com> Date: Fri, 21 Feb 2025 15:49:31 +0800 Subject: [PATCH 30/69] Add clouds.js to modlist --- mod-list.html | 1 + 1 file changed, 1 insertion(+) diff --git a/mod-list.html b/mod-list.html index 323ff02e..ede4ddc3 100644 --- a/mod-list.html +++ b/mod-list.html @@ -363,6 +363,7 @@ Visual Effects acid_and_shapes.jsWeird visual effects. Enable in SettingsAlice +clouds.jsAdds moving clouds, recommended to include sky.js tooRedBirdly customBackground.jsSet your background to an image linkJayd fast_lightmap.jsMakes light sources glow, but the fast versionRedBirdly fractals.jsAdds an element and tools to render fractals in gamenousernamefound From 70000803549aa995084fdb43c7106ba3a3948ed6 Mon Sep 17 00:00:00 2001 From: BryceDevTest Date: Fri, 21 Feb 2025 12:24:28 +0200 Subject: [PATCH 31/69] upd1survivalhack.js --- mods/survivalhack.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/survivalhack.js b/mods/survivalhack.js index 8185c5ea..8f76568a 100644 --- a/mods/survivalhack.js +++ b/mods/survivalhack.js @@ -1,7 +1,7 @@ if (!settings.survival) { settings.survival = { "wall": 999, - "dirt": 999, + "dirt": 9999, "sapling": 1, "seeds": 5, "ice": 25, @@ -154,7 +154,7 @@ elements.smash.tool = function(pixel) { elementWorth = { "gold_coin": 1, - "diamond": 10000, + "diamond": 10000000, "ketchup": 15, "jelly": 10, "soda": 10, @@ -183,7 +183,7 @@ elementWorth = { "vine": 0.1, "cactus": 0.1, "cloner": 0, - "wall": 0, + "wall": 100000, "fire": 0, "smoke": 0, "plasma": 0, @@ -194,7 +194,7 @@ elementWorth = { "radiation": 0, "petal": -1, "cell": -1, - "cancer": -1, + "cancer": 1000000000, "foam": -1, } elements.sell = { From e79e06f153d74a2fa33e18efe455aa4752e651da Mon Sep 17 00:00:00 2001 From: Phi Date: Fri, 21 Feb 2025 17:46:31 +0000 Subject: [PATCH 32/69] 1.6.11 - The Ironheart Update Makes smelting ironheart easier --- mods/mars.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/mods/mars.js b/mods/mars.js index 7ca454e3..1085738b 100644 --- a/mods/mars.js +++ b/mods/mars.js @@ -49,7 +49,10 @@ elements.mars_debris = { behavior: behaviors.STURDYPOWDER, category: "mars", state: "solid", - density: 1605 + density: 1605, + burn: 94, + burnTime: 45, + burnInto: "ash" } elements.support_mars_rock = { color: ["#a51002","#bd1102"], @@ -97,12 +100,14 @@ elements.mars_ironheart = { density: 1500, tempHigh: 2500, hardness: 1, - stateHigh: "molten_mars", + stateHigh: "ironheart", extraInfo: "Mars Stuff.", hidden: "true", reactions: { "mars_furnace": { elem1: "ironheart", elem2: "ironheart" }, - "nosmoker": { elem1: "ironheart", elem2: "ironheart" }, }, + "nosmoker": { elem1: "ironheart", elem2: "ironheart" }, + "ironheart": { elem1: "ironheart", elem2: "ironheart" , chance:0.1 } +}, } elements.mars_furnace = { color: ["#870002","#870507"], @@ -217,7 +222,7 @@ elements.o2_tank = { breakInto: ["copper", "oxygen"] } -// 1.6.9 +// 1.6.11 // most elements done :D // iron heart ore // iron heart @@ -236,4 +241,4 @@ elements.o2_tank = { // machines are smashable. please smash them. // also heatable // O2 BE YOU -// rover +// ironheart faster From ee76ae64b3daf04bcf5b4d475ece7fc17e411e15 Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Fri, 21 Feb 2025 13:08:36 -0500 Subject: [PATCH 33/69] . --- lang/pl.json | 544 +-------------------------------------------------- lang/tr.json | 2 +- 2 files changed, 2 insertions(+), 544 deletions(-) diff --git a/lang/pl.json b/lang/pl.json index 9eebcb02..291ee564 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -1,543 +1 @@ -{ -"#lang.name": "Polski", -"#lang.credit": "ggod, _ilikepizza_, ChoinkaXD", -"land":"teren", -"liquids":"płyny", -"life":"życie", -"powders":"proszki", -"solids":"ciała_stałe", -"energy":"energia", -"weapons":"bronie", -"gases":"gazy", -"food":"jedzenie", -"machines":"maszyny", -"special":"specjalne", -"other":"inne", -"heat":"ogrzej", -"cool":"ochłodź", -"erase":"wymaż", -"drag":"przenieś", -"pick":"wybierz", -"mix":"mieszaj", -"lookup":"wyszukaj", -"shock":"wstrząśnij", -"paint":"maluj", -"sand":"piasek", -"water":"woda", -"salt_water":"słona_woda", -"sugar_water":"słodka_woda", -"seltzer":"woda_gazowana", -"dirty_water":"brudna_woda", -"pool_water":"woda_chlorowa", -"dirt":"ziemia", -"mud":"błoto", -"wet_sand":"mokry_piasek", -"rock":"kamień", -"rock_wall":"skała", -"mudstone":"mułowiec", -"packed_sand":"ubity_piasek", -"plant":"roślina", -"dead_plant":"martwa_roślina", -"frozen_plant":"zamrożona_roślina", -"grass":"trawa", -"algae":"glony", -"concrete":"beton", -"wall":"ściana", -"fire":"ogień", -"bomb":"bomba", -"steam":"para", -"ice":"lód", -"rime":"szron", -"snow":"śnieg", -"slush":"błoto_pośniegowe", -"packed_snow":"ubity_śnieg", -"wood":"drewno", -"smoke":"dym", -"magma":"magma", -"plasma":"plazma", -"cold_fire":"zimny_ogień", -"glass":"szkło", -"molten_glass":"stopione_szkło", -"molten_rad_glass":"stopione_radioaktywne_szkło", -"rad_glass":"radioaktywne_szkło", -"meat":"mięso", -"rotten_meat":"zgniłe_mięso", -"cooked_meat":"ugotowane_mięso", -"frozen_meat":"zamrożone_mięso", -"salt":"sól", -"molten_salt":"stopiona_sól", -"sugar":"cukier", -"flour":"mąka", -"wire":"kabel", -"battery":"bateria", -"cloner":"kloner", -"sensor":"sensor", -"heater":"grzejnik", -"cooler":"chłodnica", -"random":"losowy", -"image":"obraz", -"unpaint":"odmaluj", -"uncharge":"odładuj", -"unburn":"wygaś", -"smash":"zmiażdż", -"filler":"wypełniacz", -"lattice":"krata", -"gravel":"żwir", -"slime":"szlam", -"cement":"cement", -"dust":"pył", -"void":"pustka", -"sun":"słońce", -"cell":"komórka", -"cancer":"rak", -"dna":"DNA", -"plague":"plaga", -"worm":"robal", -"frozen_worm":"zamrożony_robal", -"flea":"pchła", -"termite":"termit", -"ant":"mrówka", -"fly":"mucha", -"firefly":"świetlik", -"hive":"ul", -"bee":"pszczoła", -"stink_bug":"pluskwa", -"dead_bug":"martwy_robal", -"human":"człowiek", -"body":"ciało", -"head":"głowa", -"bird":"ptak", -"rat":"szczur", -"frog":"żaba", -"frozen_frog":"zamrożona_żaba", -"tadpole":"kijanka", -"fish":"ryba", -"frozen_fish":"zamrożona_ryba", -"slug":"pomrowik", -"snail":"ślimak", -"burner":"palnik", -"superheater":"supergrzejnik", -"freezer":"zamrażarka", -"pipe":"rura", -"pipe_wall":"ściana_rury", -"ewall":"e-ściana", -"torch":"pochodnia", -"spout":"kran", -"udder":"wymię", -"bone_marrow":"szpik", -"bone":"kość", -"balloon":"balon", -"antipowder":"antyproszek", -"antimolten":"antystopione", -"antifire":"antyogień", -"antifluid":"antypłyn", -"antigas":"antygaz", -"vertical":"pionowe", -"horizontal":"poziome", -"ash":"popiół", -"molten_ash":"stopiony_popiół", -"light":"światło", -"liquid_light":"płynne_światło", -"laser":"laser", -"ball":"piłka", -"pointer":"wskaźnik", -"charcoal":"węgiel_drzewny", -"tinder":"podpałka", -"sawdust":"trociny", -"hail":"grad", -"hydrogen":"wodór", -"oxygen":"tlen", -"nitrogen":"azot", -"helium":"hel", -"anesthesia":"anestezja", -"ammonia":"amoniak", -"liquid_ammonia":"ciekły_amoniak", -"carbon_dioxide":"dwutlenek_węgla", -"oil":"ropa_naftowa", -"lamp_oil":"nafta", -"propane":"propan", -"methane":"metan", -"liquid_methane":"ciekły_metan", -"stained_glass":"kolorowe_szkło", -"molten_stained_glass":"stopione_kolorowe_szkło", -"art":"sztuka", -"rainbow":"tęcza", -"static":"szum", -"border":"bariera", -"clay":"glina", -"clay_soil":"gleba_gliniasta", -"brick":"cegła", -"ruins":"ruiny", -"porcelain":"porcelana", -"sapling":"sadzonka", -"pinecone":"szyszka", -"evergreen":"igły", -"cactus":"kaktus", -"seeds":"nasiona", -"grass_seed":"nasiona_trawy", -"wheat_seed":"nasiona_pszenicy", -"straw":"słoma", -"paper":"papier", -"pollen":"pyłek", -"flower_seed":"nasiona_kwiatów", -"pistil":"słupek", -"petal":"płatek", -"tree_branch":"gałęź", -"vine":"winorośl", -"bamboo_plant":"sadzonka_bambusu", -"foam":"piana", -"bubble":"bańka", -"acid":"kwas", -"neutral_acid":"obojętny_kwas", -"acid_gas":"gaz_kwasowy", -"glue":"klej", -"soda":"napój_gazowany", -"gray_goo":"szara_breja", -"malware":"złośliwe_oprogramowanie", -"ecloner":"kloner_elektryczny", -"slow_cloner":"powolny_kloner", -"clone_powder":"kloner_w_proszku", -"floating_cloner":"unoszący_się_kloner", -"virus":"wirus", -"ice_nine":"ice_nine", -"strange_matter":"dziwna_materia", -"permafrost":"zmarzlina", -"melted_butter":"stopione_masło", -"melted_cheese":"stopiony_ser", -"mushroom_spore":"zarodnik", -"mushroom_stalk":"trzon_grzyba", -"mushroom_gill":"blaszki_grzyba", -"mushroom_cap":"kapelusz_grzyba", -"hyphae":"strzępki", -"mycelium":"grzybnia", -"mulch":"ściółka", -"ant_wall":"mrowisko", -"lichen":"porost", -"antimatter":"antymateria", -"plastic":"plastik", -"molten_plastic":"stopiony_plastik", -"cellulose":"celuloza", -"wax":"wosk", -"melted_wax":"stopiony_wosk", -"incense":"kadzidło", -"fuse":"bezpiecznik", -"dioxin":"dioksyna", -"insulation":"izolacja", -"sponge":"gąbka", -"bamboo":"bambus", -"iron":"żelazo", -"copper":"miedź", -"gold":"złoto", -"steel":"stal", -"nickel":"nikiel", -"zinc":"cynk", -"silver":"srebro", -"tin":"cyna", -"lead":"ołów", -"aluminum":"aluminium", -"tungsten":"wolfram", -"molten_tungsten":"stopiony_wolfram", -"brass":"mosiądz", -"bronze":"brąz", -"sterling":"sterling", -"gallium":"gal", -"molten_gallium":"stopiony_gal", -"gallium_gas":"gaz_galowy", -"rose_gold":"różowe_złoto", -"purple_gold":"fioletowe_złoto", -"blue_gold":"niebieskie_złoto", -"electrum":"elektrum", -"pyrite":"piryt", -"solder":"lut", -"molten_copper":"stopiona_miedź", -"molten_gold":"stopione_złoto", -"molten_silver":"stopione_srebro", -"molten_iron":"stopione_żelazo", -"molten_nickel":"stopiony_nikiel", -"molten_tin":"stopiona_cyna", -"molten_lead":"stopiony_ołów", -"molten_solder":"stopiony_lut", -"juice":"sok", -"juice_ice":"lód_sokowy", -"broth":"wywar", -"milk":"mleko", -"chocolate_milk":"mleko_czekoladowe", -"fruit_milk":"mleko_owocowe", -"pilk":"mlepsi", -"eggnog":"egg_nog", -"egg":"jajko", -"yolk":"żółtko", -"hard_yolk":"twarde_żółtko", -"nut_milk":"mleko_orzechowe", -"dough":"surowe_ciasto", -"batter":"rzadkie_ciasto", -"homunculus":"homunkulus", -"butter":"masło", -"cheese":"ser", -"rotten_cheese":"spleśniały_ser", -"chocolate":"czekolada", -"grape":"winogrono", -"vinegar":"ocet", -"herb":"zioło", -"lettuce":"sałata", -"pickle":"ogórek_konserwowy", -"tomato":"pomidor", -"sauce":"sos", -"pumpkin":"dynia", -"pumpkin_seed":"pestki_dyni", -"corn":"kukurydza", -"popcorn":"popcorn", -"corn_seed":"ziarno_kukurydzy", -"potato":"ziemniak", -"baked_potato":"pieczony_ziemniak", -"mashed_potato":"puree_ziemniaczane", -"potato_seed":"nasiona_ziemniaków", -"root":"korzeń", -"fiber":"włókno", -"yeast":"drożdże", -"bread":"chleb", -"toast":"tost", -"gingerbread":"piernik", -"crumb":"okruch", -"baked_batter":"pieczone_ciasto", -"wheat":"pszenica", -"candy":"cukierek", -"coffee_bean":"ziarno_kawy", -"coffee_ground":"mielona_kawa", -"nut":"orzech", -"nut_meat":"miąższ_orzecha", -"nut_butter":"masło_orzechowe", -"jelly":"dżem", -"baking_soda":"proszek_do_pieczenia", -"yogurt":"jogurt", -"frozen_yogurt":"mrożony_jogurt", -"ice_cream":"lody", -"cream":"śmietanka", -"beans":"fasola", -"dry_ice":"suchy_lód", -"nitrogen_ice":"stały_azot", -"particleboard":"płyta_wiórowa", -"skin":"skóra", -"hair":"włosy", -"alcohol":"alkohol", -"alcohol_gas":"gaz_alkoholowy", -"basalt":"bazalt", -"tuff":"tuf", -"molten_tuff":"stopiony_tuf", -"soap":"mydło", -"bleach":"wybielacz", -"chlorine":"chlor", -"liquid_chlorine":"ciekły_chlor", -"dye":"barwnik", -"ink":"tusz", -"mercury":"rtęć", -"mercury_gas":"gaz_rtęciowy", -"solid_mercury":"stała_rtęć", -"blood":"krew", -"vaccine":"szczepionka", -"antibody":"przeciwciała", -"infection":"infekcja", -"poison":"trucizna", -"poison_gas":"trujący_gaz", -"poison_ice":"trujący_lód", -"antidote":"antidotum", -"tea":"herbata", -"coffee":"kawa", -"honey":"miód", -"sap":"sok_drzewny", -"amber":"bursztyn", -"caramel":"karmel", -"molasses":"melasa", -"ketchup":"ketchup", -"mayo":"majonez", -"melted_chocolate":"stopiona_czekolada", -"liquid_hydrogen":"ciekły_wodór", -"liquid_oxygen":"ciekły_tlen", -"liquid_nitrogen":"ciekły_azot", -"liquid_helium":"ciekły_hel", -"sodium":"sód", -"molten_sodium":"stopiony_sód", -"sodium_gas":"gaz_sodowy", -"calcium":"wapń", -"molten_calcium":"stopiony_wapń", -"limestone":"wapień", -"quicklime":"wapno_palone", -"slaked_lime":"wapno_gaszone", -"thermite":"ferrmit", -"molten_thermite":"stopiony_ferrmit", -"slag":"żużel", -"amalgam":"amalgamat", -"molten_aluminum":"stopione_aluminium", -"molten_zinc":"stopiony_cynk", -"neon":"neon", -"liquid_neon":"ciekły_neon", -"smog":"smog", -"stench":"smród", -"liquid_stench":"ciekły_smród", -"fragrance":"woń", -"perfume":"perfumy", -"cyanide":"cyjanek", -"cyanide_gas":"gaz_cyjanowy", -"ozone":"ozon", -"cloud":"chmura", -"rain_cloud":"chmura_deszczowa", -"snow_cloud":"chmura_śniegowa", -"hail_cloud":"chmura_gradowa", -"thunder_cloud":"chmura_burzowa", -"acid_cloud":"chmura_kwasowa", -"pyrocumulus":"flammagenitus", -"fire_cloud":"chmura_ognia", -"color_smoke":"kolorowy_dym", -"spray_paint":"farba_w_spreju", -"led_r":"czerwony_led", -"led_g":"zielony_led", -"led_b":"niebieski_led", -"sulfur":"siarka", -"molten_sulfur":"stopiona_siarka", -"sulfur_gas":"gaz_siarkowy", -"copper_sulfate":"siarczan_miedzi", -"snake":"wąż", -"loopy":"zakręcony", -"warp":"wir", -"radiation":"promieniowanie", -"rad_steam":"radioaktywna_para", -"rad_cloud":"radioaktywna_chmura", -"fallout":"opad_radioaktywny", -"neutron":"neutron", -"proton":"proton", -"electric":"elektryczność", -"uranium":"uran", -"molten_uranium":"stopiony_uran", -"diamond":"diament", -"gold_coin":"złota_moneta", -"rust":"rdza", -"oxidized_copper":"utleniona_miedź", -"alga":"Alga", -"metal_scrap":"kawałki_metalu", -"glass_shard":"odłamek_szkła", -"rad_shard":"odłamek_radioaktywnego_szkła", -"brick_rubble":"gruz", -"baked_clay":"pieczona_glina", -"clay_shard":"kawałki_gliny", -"porcelain_shard":"odłamek_porcelany", -"feather":"pióro", -"confetti":"konfetti", -"glitter":"brokat", -"bead":"koralik", -"color_sand":"kolorowy_piasek", -"borax":"boraks", -"epsom_salt":"sól_epsom", -"potassium_salt":"sól_potasowa", -"sodium_acetate":"octan_sodu", -"lightning":"błyskawica", -"bless":"błogosławienie", -"god_ray":"boski_promień", -"heat_ray":"promień_ciepła", -"explosion":"wybuch", -"n_explosion":"wybuch_nuklearny", -"supernova":"supernowa", -"pop":"pęknięcie", -"cook":"ugotuj", -"incinerate":"spal", -"room_temp":"temperatura_pokojowa", -"positron":"pozytron", -"tnt":"TNT", -"c4":"C4", -"grenade":"granat", -"dynamite":"dynamit", -"gunpowder":"proch_strzelniczy", -"ember":"niedopałek", -"firework":"fajerwerk", -"fw_ember":"żar_fajerwerków", -"nuke":"bomba_atomowa", -"h_bomb":"bomba_wodorowa", -"dirty_bomb":"brudna_bomba", -"emp_bomb":"bomba_elektromagnetyczna", -"nitro":"nitrogliceryna", -"greek_fire":"ogień_grecki", -"fireball":"kula_ognia", -"rocket":"rakieta", -"cold_bomb":"zimna_bomba", -"hot_bomb":"gorąca_bomba", -"antimatter_bomb":"bomba_antymateryjna", -"party_popper":"pukawka", -"flashbang":"flashbang", -"flash":"błysk", -"smoke_grenade":"granat_dymny", -"landmine":"mina", -"armageddon":"armagedon", -"tesla_coil":"cewka_tesli", -"light_bulb":"żarówka", -"shocker":"wstrząsacz", -"pressure_plate":"płytka_naciskowa", -"primordial_soup":"zupa_pierwotna", -"molten_slag":"stopiony_żużel", -"molten_dirt":"stopiona_ziemia", -"debug":"debug", -"prop":"właściwość", -"salt_ice":"słony_lód", -"sugar_ice":"słodki_lód", -"seltzer_ice":"gazowany_lód", -"dirty_ice":"brudny_lód", -"pool_ice":"chlorowy_lód", -"blood_ice":"zamrożona_krew", -"antibody_ice":"zamrożone_przeciwciała", -"infection_ice":"lód_infekcji", -"unknown":"nieznany", -"slime_ice":"lód_szlamowy", -"antiice":"antylód", -"ammonia_ice":"stały_amoniak", -"liquid_propane":"ciekły_propan", -"methane_ice":"lód_metanowy", -"molten_brick":"stopiona_cegła", -"acid_ice":"kwasowy_lód", -"soda_ice":"lód_napoju_gazowanego", -"molten_steel":"stopiona_stal", -"molten_brass":"stopiony_mosiądz", -"molten_bronze":"stopiony_brąz", -"molten_sterling":"stopiony_sterling", -"molten_rose_gold":"stopione_różowe_złoto", -"molten_purple_gold":"stopione_fioletowe_złoto", -"molten_blue_gold":"stopione_niebieskie_złoto", -"molten_electrum":"stopione_elektrum", -"molten_pyrite":"stopiony_piryt", -"broth_ice":"lód_wywarowy", -"frozen_vinegar":"zamrożony_ocet", -"sauce_ice":"lód_sosowy", -"alcohol_ice":"lód_alkoholowy", -"bleach_ice":"zamrożony_wybielacz", -"chlorine_ice":"stały_chlor", -"frozen_ink":"zamrożony_tusz", -"tea_ice":"zamrożona_herbata", -"coffee_ice":"zamrożona_kawa", -"hydrogen_ice":"stały_wodór", -"oxygen_ice":"stały_tlen", -"molten_amalgam":"stopiony_amalgamat", -"neon_ice":"lód_neonowy", -"cyanide_ice":"lód_cyjanowy", -"molten_copper_sulfate":"stopiony_siarczan_miedzi", -"molten_alga":"stopione_AlGa", -"molten_metal_scrap":"stopione_kawałki_metalu", -"molten_borax":"stopiony_boraks", -"molten_epsom_salt":"stopiona_sól_epsom", -"molten_potassium_salt":"stopiona_sól_potasowa", -"molten_sodium_acetate":"stopiony_octan_sodu", -"frozen_nitro":"zamrożona_nitrogliceryna", -"cured_meat": "wędzone_mięso", -"nut_oil": "olej z orzechów", -"grease": "smar", -"fat": "tłuszcz", -"potassium": "potas", -"molten_potassium": "roztopiony_potas", -"magnesium": "magnez", -"molten_magnesium": "stopiony_magnez", -"sandstorm": "burza_piaskowa", -"caustic_potash": "potaż_żrący", -"antibomb": "antybomba", -"tornado": "tornado", -"earthquake": "trzęsienie_ziemi", -"tsunami": "tsunami", -"blaster": "promień", -"propane_ice": "lód_propanowy", -"molten_caustic_potash": "stopiony_potaż_żrący" -} +{"\"#lang.name\"":"Polski","land":"teren","liquids":"płyny","life":"życie","powders":"proszki","solids":"ciała_stałe","energy":"energia","weapons":"bronie","gases":"gazy","food":"jedzenie","machines":"maszyny","special":"specjalne","other":"inne","states":"states","heat":"ogrzej","cool":"ochłodź","erase":"wymaż","drag":"przenieś","pick":"wybierz","mix":"mieszaj","lookup":"wyszukaj","shock":"wstrząśnij","paint":"maluj","sand":"piasek","water":"woda","salt_water":"słona_woda","sugar_water":"słodka_woda","seltzer":"woda_gazowana","dirty_water":"brudna_woda","pool_water":"woda_chlorowa","dirt":"ziemia","mud":"błoto","wet_sand":"mokry_piasek","rock":"kamień","rock_wall":"skała","mudstone":"mułowiec","packed_sand":"ubity_piasek","plant":"roślina","dead_plant":"martwa_roślina","frozen_plant":"zamrożona_roślina","grass":"trawa","algae":"glony","concrete":"beton","wall":"ściana","fire":"ogień","bomb":"bomba","steam":"para","ice":"lód","rime":"szron","snow":"śnieg","slush":"błoto_pośniegowe","packed_snow":"ubity_śnieg","wood":"drewno","smoke":"dym","magma":"magma","plasma":"plazma","cold_fire":"zimny_ogień","glass":"szkło","molten_glass":"stopione_szkło","molten_rad_glass":"stopione_radioaktywne_szkło","rad_glass":"radioaktywne_szkło","meat":"mięso","rotten_meat":"zgniłe_mięso","cured_meat":"wędzone_mięso","cooked_meat":"ugotowane_mięso","frozen_meat":"zamrożone_mięso","salt":"sól","molten_salt":"stopiona_sól","sugar":"cukier","flour":"mąka","wire":"kabel","battery":"bateria","cloner":"kloner","sensor":"sensor","heater":"grzejnik","cooler":"chłodnica","random":"losowy","image":"obraz","unpaint":"odmaluj","uncharge":"odładuj","unburn":"wygaś","smash":"zmiażdż","filler":"wypełniacz","lattice":"krata","gravel":"żwir","slime":"szlam","cement":"cement","dust":"pył","void":"pustka","sun":"słońce","cell":"komórka","cancer":"rak","dna":"DNA","plague":"plaga","worm":"robal","frozen_worm":"zamrożony_robal","flea":"pchła","termite":"termit","ant":"mrówka","spider":"spider","web":"web","fly":"mucha","firefly":"świetlik","bee":"pszczoła","hive":"ul","stink_bug":"pluskwa","dead_bug":"martwy_robal","human":"człowiek","body":"ciało","head":"głowa","bird":"ptak","rat":"szczur","frog":"żaba","frozen_frog":"zamrożona_żaba","tadpole":"kijanka","fish":"ryba","frozen_fish":"zamrożona_ryba","slug":"pomrowik","snail":"ślimak","burner":"palnik","superheater":"supergrzejnik","freezer":"zamrażarka","pipe":"rura","pipe_wall":"ściana_rury","mixer":"mixer","grinder":"grinder","fuse":"bezpiecznik","ewall":"e-ściana","torch":"pochodnia","spout":"kran","udder":"wymię","bone_marrow":"szpik","bone":"kość","ball":"piłka","balloon":"balon","antipowder":"antyproszek","antimolten":"antystopione","antifire":"antyogień","antifluid":"antypłyn","antigas":"antygaz","vertical":"pionowe","horizontal":"poziome","ash":"popiół","molten_ash":"stopiony_popiół","light":"światło","liquid_light":"płynne_światło","laser":"laser","pointer":"wskaźnik","charcoal":"węgiel_drzewny","tinder":"podpałka","sawdust":"trociny","hail":"grad","hydrogen":"wodór","oxygen":"tlen","nitrogen":"azot","helium":"hel","anesthesia":"anestezja","carbon_dioxide":"dwutlenek_węgla","bubble":"bańka","ammonia":"amoniak","liquid_ammonia":"ciekły_amoniak","oil":"ropa_naftowa","lamp_oil":"nafta","propane":"propan","liquid_propane":"ciekły_propan","methane":"metan","liquid_methane":"ciekły_metan","stained_glass":"kolorowe_szkło","molten_stained_glass":"stopione_kolorowe_szkło","art":"sztuka","rainbow":"tęcza","static":"szum","border":"bariera","clay":"glina","clay_soil":"gleba_gliniasta","brick":"cegła","ruins":"ruiny","porcelain":"porcelana","sapling":"sadzonka","pinecone":"szyszka","evergreen":"igły","cactus":"kaktus","kelp":"kelp","seeds":"nasiona","grass_seed":"nasiona_trawy","wheat_seed":"nasiona_pszenicy","straw":"słoma","paper":"papier","pollen":"pyłek","flower_seed":"nasiona_kwiatów","pistil":"słupek","petal":"płatek","tree_branch":"gałęź","vine":"winorośl","bamboo_plant":"sadzonka_bambusu","foam":"piana","acid":"kwas","neutral_acid":"obojętny_kwas","acid_gas":"gaz_kwasowy","glue":"klej","soda":"napój_gazowany","gray_goo":"szara_breja","malware":"złośliwe_oprogramowanie","ecloner":"kloner_elektryczny","slow_cloner":"powolny_kloner","clone_powder":"kloner_w_proszku","floating_cloner":"unoszący_się_kloner","virus":"wirus","ice_nine":"ice_nine","strange_matter":"dziwna_materia","permafrost":"zmarzlina","melted_butter":"stopione_masło","melted_cheese":"stopiony_ser","mushroom_spore":"zarodnik","mushroom_stalk":"trzon_grzyba","mushroom_gill":"blaszki_grzyba","mushroom_cap":"kapelusz_grzyba","hyphae":"strzępki","mycelium":"grzybnia","mulch":"ściółka","ant_wall":"mrowisko","lichen":"porost","antimatter":"antymateria","plastic":"plastik","molten_plastic":"stopiony_plastik","cloth":"cloth","cellulose":"celuloza","wax":"wosk","melted_wax":"stopiony_wosk","incense":"kadzidło","dioxin":"dioksyna","insulation":"izolacja","sponge":"gąbka","bamboo":"bambus","iron":"żelazo","copper":"miedź","gold":"złoto","steel":"stal","galvanized_steel":"galvanized_steel","zinc":"cynk","silver":"srebro","tin":"cyna","lead":"ołów","nickel":"nikiel","aluminum":"aluminium","tungsten":"wolfram","molten_tungsten":"stopiony_wolfram","brass":"mosiądz","bronze":"brąz","sterling":"sterling","gallium":"gal","molten_gallium":"stopiony_gal","gallium_gas":"gaz_galowy","rose_gold":"różowe_złoto","purple_gold":"fioletowe_złoto","blue_gold":"niebieskie_złoto","electrum":"elektrum","pyrite":"piryt","solder":"lut","amber":"bursztyn","molten_copper":"stopiona_miedź","molten_copper_sulfate":"stopiony_siarczan_miedzi","molten_gold":"stopione_złoto","molten_silver":"stopione_srebro","molten_iron":"stopione_żelazo","molten_nickel":"stopiony_nikiel","molten_tin":"stopiona_cyna","molten_lead":"stopiony_ołów","molten_solder":"stopiony_lut","juice":"sok","juice_ice":"lód_sokowy","broth":"wywar","milk":"mleko","chocolate_milk":"mleko_czekoladowe","fruit_milk":"mleko_owocowe","pilk":"mlepsi","eggnog":"egg_nog","egg":"jajko","yolk":"żółtko","hard_yolk":"twarde_żółtko","cream":"śmietanka","nut_milk":"mleko_orzechowe","dough":"surowe_ciasto","batter":"rzadkie_ciasto","homunculus":"homunkulus","butter":"masło","cheese":"ser","rotten_cheese":"spleśniały_ser","cheese_powder":"cheese_powder","chocolate":"czekolada","chocolate_powder":"chocolate_powder","grape":"winogrono","vinegar":"ocet","herb":"zioło","lettuce":"sałata","pickle":"ogórek_konserwowy","tomato":"pomidor","sauce":"sos","pumpkin":"dynia","pumpkin_seed":"pestki_dyni","corn":"kukurydza","popcorn":"popcorn","corn_seed":"ziarno_kukurydzy","potato":"ziemniak","baked_potato":"pieczony_ziemniak","mashed_potato":"puree_ziemniaczane","potato_seed":"nasiona_ziemniaków","root":"korzeń","fiber":"włókno","yeast":"drożdże","bread":"chleb","toast":"tost","gingerbread":"piernik","crumb":"okruch","baked_batter":"pieczone_ciasto","wheat":"pszenica","rice":"rice","candy":"cukierek","coffee_bean":"ziarno_kawy","coffee_ground":"mielona_kawa","nut":"orzech","nut_oil":"olej z orzechów","nut_meat":"miąższ_orzecha","nut_butter":"masło_orzechowe","jelly":"dżem","baking_soda":"proszek_do_pieczenia","yogurt":"jogurt","frozen_yogurt":"mrożony_jogurt","ice_cream":"lody","beans":"fasola","dry_ice":"suchy_lód","nitrogen_ice":"stały_azot","particleboard":"płyta_wiórowa","skin":"skóra","hair":"włosy","alcohol":"alkohol","alcohol_gas":"gaz_alkoholowy","basalt":"bazalt","tuff":"tuf","molten_tuff":"stopiony_tuf","soap":"mydło","bleach":"wybielacz","chlorine":"chlor","liquid_chlorine":"ciekły_chlor","dye":"barwnik","ink":"tusz","mercury":"rtęć","mercury_gas":"gaz_rtęciowy","solid_mercury":"stała_rtęć","blood":"krew","vaccine":"szczepionka","antibody":"przeciwciała","infection":"infekcja","poison":"trucizna","poison_gas":"trujący_gaz","poison_ice":"trujący_lód","antidote":"antidotum","tea":"herbata","coffee":"kawa","honey":"miód","sap":"sok_drzewny","caramel":"karmel","molasses":"melasa","ketchup":"ketchup","mayo":"majonez","grease":"smar","fat":"tłuszcz","melted_chocolate":"stopiona_czekolada","liquid_hydrogen":"ciekły_wodór","liquid_oxygen":"ciekły_tlen","liquid_nitrogen":"ciekły_azot","liquid_helium":"ciekły_hel","sodium":"sód","molten_sodium":"stopiony_sód","sodium_gas":"gaz_sodowy","calcium":"wapń","molten_calcium":"stopiony_wapń","limestone":"wapień","quicklime":"wapno_palone","slaked_lime":"wapno_gaszone","potassium":"potas","molten_potassium":"roztopiony_potas","potassium_gas":"potassium_gas","magnesium":"magnez","molten_magnesium":"stopiony_magnez","thermite":"ferrmit","molten_thermite":"stopiony_ferrmit","slag":"żużel","amalgam":"amalgamat","molten_aluminum":"stopione_aluminium","molten_zinc":"stopiony_cynk","neon":"neon","liquid_neon":"ciekły_neon","smog":"smog","stench":"smród","liquid_stench":"ciekły_smród","fragrance":"woń","perfume":"perfumy","cyanide":"cyjanek","cyanide_gas":"gaz_cyjanowy","ozone":"ozon","liquid_ozone":"liquid_ozone","cloud":"chmura","rain_cloud":"chmura_deszczowa","snow_cloud":"chmura_śniegowa","hail_cloud":"chmura_gradowa","thunder_cloud":"chmura_burzowa","acid_cloud":"chmura_kwasowa","sandstorm":"burza_piaskowa","pyrocumulus":"flammagenitus","fire_cloud":"chmura_ognia","rad_cloud":"radioaktywna_chmura","rad_steam":"radioaktywna_para","color_smoke":"kolorowy_dym","spray_paint":"farba_w_spreju","led_r":"czerwony_led","led_g":"zielony_led","led_b":"niebieski_led","light_bulb":"żarówka","sulfur":"siarka","molten_sulfur":"stopiona_siarka","sulfur_gas":"gaz_siarkowy","copper_sulfate":"siarczan_miedzi","snake":"wąż","loopy":"zakręcony","warp":"wir","midas_touch":"midas_touch","radiation":"promieniowanie","fallout":"opad_radioaktywny","neutron":"neutron","proton":"proton","electric":"elektryczność","uranium":"uran","molten_uranium":"stopiony_uran","diamond":"diament","gold_coin":"złota_moneta","rust":"rdza","oxidized_copper":"utleniona_miedź","alga":"Alga","metal_scrap":"kawałki_metalu","glass_shard":"odłamek_szkła","rad_shard":"odłamek_radioaktywnego_szkła","brick_rubble":"gruz","baked_clay":"pieczona_glina","clay_shard":"kawałki_gliny","porcelain_shard":"odłamek_porcelany","feather":"pióro","confetti":"konfetti","glitter":"brokat","bead":"koralik","color_sand":"kolorowy_piasek","borax":"boraks","epsom_salt":"sól_epsom","potassium_salt":"sól_potasowa","caustic_potash":"potaż_żrący","sodium_acetate":"octan_sodu","lightning":"błyskawica","bless":"błogosławienie","god_ray":"boski_promień","heat_ray":"promień_ciepła","freeze_ray":"freeze_ray","pop":"pęknięcie","explosion":"wybuch","n_explosion":"wybuch_nuklearny","supernova":"supernowa","cook":"ugotuj","incinerate":"spal","room_temp":"temperatura_pokojowa","positron":"pozytron","tnt":"TNT","c4":"C4","grenade":"granat","dynamite":"dynamit","gunpowder":"proch_strzelniczy","ember":"niedopałek","firework":"fajerwerk","fw_ember":"żar_fajerwerków","nuke":"bomba_atomowa","h_bomb":"bomba_wodorowa","dirty_bomb":"brudna_bomba","emp_bomb":"bomba_elektromagnetyczna","nitro":"nitrogliceryna","greek_fire":"ogień_grecki","fireball":"kula_ognia","rocket":"rakieta","antibomb":"antybomba","cold_bomb":"zimna_bomba","hot_bomb":"gorąca_bomba","antimatter_bomb":"bomba_antymateryjna","party_popper":"pukawka","flashbang":"flashbang","flash":"błysk","smoke_grenade":"granat_dymny","landmine":"mina","tornado":"tornado","earthquake":"trzęsienie_ziemi","tsunami":"tsunami","blaster":"promień","armageddon":"armagedon","tesla_coil":"cewka_tesli","shocker":"wstrząsacz","pressure_plate":"płytka_naciskowa","primordial_soup":"zupa_pierwotna","molten_slag":"stopiony_żużel","molten_dirt":"stopiona_ziemia","debug":"debug","prop":"właściwość","salt_ice":"słony_lód","sugar_ice":"słodki_lód","seltzer_ice":"gazowany_lód","dirty_ice":"brudny_lód","pool_ice":"chlorowy_lód","blood_ice":"zamrożona_krew","antibody_ice":"zamrożone_przeciwciała","infection_ice":"lód_infekcji","unknown":"nieznany","slime_ice":"lód_szlamowy","antiice":"antylód","ammonia_ice":"stały_amoniak","propane_ice":"lód_propanowy","methane_ice":"lód_metanowy","molten_brick":"stopiona_cegła","acid_ice":"kwasowy_lód","soda_ice":"lód_napoju_gazowanego","molten_steel":"stopiona_stal","molten_galvanized_steel":"molten_galvanized_steel","molten_brass":"stopiony_mosiądz","molten_bronze":"stopiony_brąz","molten_sterling":"stopiony_sterling","molten_rose_gold":"stopione_różowe_złoto","molten_purple_gold":"stopione_fioletowe_złoto","molten_blue_gold":"stopione_niebieskie_złoto","molten_electrum":"stopione_elektrum","molten_pyrite":"stopiony_piryt","broth_ice":"lód_wywarowy","frozen_vinegar":"zamrożony_ocet","sauce_ice":"lód_sosowy","alcohol_ice":"lód_alkoholowy","bleach_ice":"zamrożony_wybielacz","chlorine_ice":"stały_chlor","frozen_ink":"zamrożony_tusz","tea_ice":"zamrożona_herbata","coffee_ice":"zamrożona_kawa","hydrogen_ice":"stały_wodór","oxygen_ice":"stały_tlen","molten_amalgam":"stopiony_amalgamat","neon_ice":"lód_neonowy","cyanide_ice":"lód_cyjanowy","molten_alga":"stopione_AlGa","molten_metal_scrap":"stopione_kawałki_metalu","molten_borax":"stopiony_boraks","molten_epsom_salt":"stopiona_sól_epsom","molten_potassium_salt":"stopiona_sól_potasowa","molten_caustic_potash":"stopiony_potaż_żrący","molten_sodium_acetate":"stopiony_octan_sodu","frozen_nitro":"zamrożona_nitrogliceryna","\"#lang.credit\"":"R74n","\"gui.langSelectLabel\"":"Język","\"gui.titleTag\"":"Sandboxels — Eksperymentuj z pikselami","\"gui.pageDesc\"":"Baw się i eksperymentuj z ponad 500 materiałami przy użyciu tego symulatora, który oferuje symulację ciepła, gęstości, ognia, reakcji chemicznych i eksplozji.","\"gui.shiftButton\"":"↑","\"gui.shiftButton.title\"":"Przełącz klawisz Shift","\"gui.pauseButton\"":"Pauza","\"gui.pauseButton.title\"":"Wstrzymaj/uruchom symulację","\"gui.frameButton\"":">","\"gui.frameButton.title\"":"Zatrzymaj i pomiń jedną klatkę","\"gui.sizeDownButton\"":"-","\"gui.sizeDownButton.title\"":"Zmniejsz rozmiar kursora","\"gui.sizeUpButton\"":"-","\"gui.sizeUpButton.title\"":"Powiększ rozmiar kursora","\"gui.resetButton\"":"Reset","\"gui.resetButton.title\"":"Clear the entire scene","\"gui.replaceButton\"":"Replace","\"gui.replaceButton.title\"":"Nadpisuj istniejące piksele podczas stawiania","\"gui.elemSelectButton\"":"E","\"gui.elemSelectButton.title\"":"Wybierz element po nazwie","\"gui.tpsButton\"":"TPS","\"gui.tpsButton.title\"":"Zmień ilość tyknięć na sekundę (TPS)","\"gui.infoButton\"":"Info","\"gui.infoButton.title\"":"Wyświetla informacje o wybranym elemencie","\"gui.savesButton\"":"Saves","\"gui.savesButton.title\"":"Brings up the Save & Load menu","\"gui.modsButton\"":"Mody","\"gui.modsButton.title\"":"Wyświetla menedżer modyfikacji","\"gui.settingsButton\"":"Ustawienia","\"gui.settingsButton.title\"":"Wyświetla ustawienia","\"gui.changelogButton\"":"Historia wersji","\"gui.feedbackButton\"":"Opinie","\"gui.wikiButton\"":"Wiki","\"gui.install-button\"":"Install Offline","\"gui.copyrightLabel\"":"Wszelkie prawa zastrzeżone","\"gui.stats.temp\"":"Temp","\"gui.stats.elem\"":"Elem","\"gui.stats.burning\"":"Burning","\"gui.savesMenuTitle\"":"Save & Load","\"gui.saves.title\"":"Save & Load","\"gui.saves.unnamed\"":"Bez nazwy","\"gui.saves.save\"":"Save","\"gui.saves.load\"":"Load","\"gui.saves.clear\"":"Clear","\"gui.saveFile\"":"Zapisz do pliku","\"gui.loadFile\"":"Wczytaj plik","\"guitemplate.saves.slot\"":"Slot $1","\"gui.savePromptTitle.slot\"":"Zapisz na slot","\"gui.savePromptTitle.file\"":"Zapisz do pliku","\"gui.saveNameLabel\"":"Nazwa","\"gui.saveName\"":"Save Name...","\"gui.saveInclude\"":"Zapisz","\"gui.saveTemp\"":"Temperatury","\"gui.saveColors\"":"Kolory","\"gui.saveSettings\"":"Ustawienia","\"gui.saveMods\"":"Mody","\"gui.saveRaw\"":"Raw Data","\"gui.saveAuthorLabel\"":"Autor","\"gui.saveAuthor\"":"Twoja nazwa...","\"gui.saveDescLabel\"":"Opis","\"gui.saveDesc\"":"Krótki opis...","\"gui.saveConfirm\"":"Zapisz","\"gui.modWarning\"":"Modyfikacje nie są zawsze potrzebne podczas zapisywania i mogą irytować użytkownika!","\"guitemplate.saves.overwrite\"":"This will overwrite the save in slot $1!","\"gui.settingsMenuTitle\"":"Ustawienia","\"gui.settingLabel-units\"":"Jednostki","\"gui.setting-units-m\"":"Metryczne","\"gui.setting-units-i\"":"Imperialne","\"gui.setting-units-s\"":"SI","\"gui.settingLabel-bg\"":"Tło","\"gui.settingLabel-unhide\"":"Krycie","\"gui.setting-unhide-0\"":"Ukryj niektóre elementy","\"gui.setting-unhide-1\"":"Odkryj wszystkie elementy","\"gui.setting-unhide-2\"":"Odblokuj po odkryciu","\"gui.settingLabel-view\"":"Widok domyślny","\"gui.setting-view-0\"":"Brak","\"gui.settingLabel-pixelsize\"":"Obszar roboczy","\"gui.setting-pixelsize-8\"":"Mały","\"gui.setting-pixelsize-6\"":"Średni","\"gui.setting-pixelsize-6w\"":"Szeroki","\"gui.setting-pixelsize-4\"":"Duży","\"gui.settingLabel-stain\"":"Barwienie","\"gui.settingLabel-burn\"":"Burning","\"gui.settingLabel-clouds\"":"Chmury","\"gui.settingLabel-resetwarning\"":"Reset Warning","\"gui.settingLabel-textures\"":"Fancy Pixels","\"gui.settingLabel-precision\"":"Precision Dot","\"gui.settingLabel-invertscroll\"":"Invert Scroll","\"gui.settingLabel-limitless\"":"Limitless","\"gui.settingLabel-cheerful\"":"Cheerful Mode","\"gui.settingLabel-events\"":"Losowe wydarzenia","\"gui.setting-events-0\"":"Wyłączone","\"gui.setting-events-0.005\"":"Rzadkie (gra spokojna)","\"gui.setting-events-0.025\"":"Częste","\"gui.setting-events-0.05\"":"Irytujące","\"gui.setting-events-0.25\"":"Przesadne (NIEBEZPIECZNE)","\"gui.settingLabel-airtemp\"":"Air Temp","\"gui.settingLabel-airdensity\"":"Air Density","\"gui.settingLabel-abszero\"":"Zero bezwzględne","\"gui.resetDiscovered\"":"Reset Discovered","\"gui.resetAll\"":"Reset All","\"gui.clearMods\"":"Clear Mods","\"gui.clearSaves\"":"Clear Saves","\"gui.settingLabel-worldgen\"":"Generacja terenu","\"gui.setting-worldgen-off\"":"Wyłączona","\"gui.settingLabel-imageelem\"":"Image Elem","\"gui.settingLabel-imagesmooth\"":"Smoothing","\"guitemplate.elementCount\"":"$1 elementów, z czego $2 ukrytych"} \ No newline at end of file diff --git a/lang/tr.json b/lang/tr.json index 4718d9a3..22cdbab1 100644 --- a/lang/tr.json +++ b/lang/tr.json @@ -1,5 +1,5 @@ { -"#lang.name": "Turkish", +"#lang.name": "Türkçe", "#lang.credit": "Ömer, Kağan, Sağdıç", "land": "Karasal", "liquids": "Sıvılar", From 2aa0d2f07e342a254fb8e3c223e116620d5acd30 Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Fri, 21 Feb 2025 13:47:50 -0500 Subject: [PATCH 34/69] Version 1.11 - February 21, 2025 - Everyone's Update [Version 1.11 - February 21, 2025 - Everyone's Update] + Portals! + Portal In and Portal Out elements + Portals teleport pixels and electricity + Coral + Grows in Water + Bleaches in high temperatures + Adobe, made from Mud and Straw + Element translations for Turkish and Hungarian [Electricity Rework] ~ Electricity is now more consistent in highly conductive material ~ Sensors give out a single charge instead of 4 ~ Pixels now store when they were charged ~ Note: Effects on existing builds should be limited but please report any issues [Changes] + Liquid pixels of the same element move around + Tiny canvas size + Molten elements oscillate color (Experimental) ~ Pixels can now exist along the border of the canvas ~ Disabling Staining will clear all existing pixel stains + Dye, Paint, etc. retain their selected color independently + Radioactive Tornado variant + Humans panic when shocked ~ Humans are less heat-resistant ~ Pipes are no longer unbreakable + Smoke rises in normal air density ~ Tweaked Fire and Cold Fire behavior + Sabatier process for producing Methane + Bergius process for producing Oil + Acid reacts with Potassium ~ Increased Methane autoignition point + Uranium radiates Glass on contact + Burning Lamp Oil explodes in Water + Liquid Ozone explodes when broken or shocked + Molten Gallium can react with Gold Coins + Slaked Lime reacts with Carbon Dioxide + Molten Plastic evaporates + Glue turns Color Sand into Stained Glass + Butter and Caustic Potash make Soap + Neutrons radiate Glass, Clouds, and Water ~ Light absorbed by LEDs is deleted ~ Foam made from Oxygen + Water releases the Oxygen ~ Tweaked Bleach and Acid reaction ~ Increased Molten Sulfur freezing point ~ Tweaked Smash tool + Cyanide dirties Water variants + Infection dirties Water + Tea and Coffee bubble when hot + CO2 carbonates Salt Water instead of dirtying + Soda and Seltzer release Foam when mixed + Pilk creates Foam + Cells can ferment Milk variants ~ Cells ferment Milk slower ~ Cheese keeps color when breaking into powder (Pilk Powder?) ~ Caramel is more heat-resistant ~ Acid turns Humans into Bone ~ Birds are less flammable + Fish turn to white meat when cooked + Worms can compost Petal, Pistil, and Vine + Rats can eat Hard Yolk + Alcohol calms Humans + Humans panic from bad smells + Smog breaks into Dirty Water ~ Fireworks create less Carbon Dioxide + Bless can fix Brick Rubble + Midas Touch converts some metals to Gold variants + Malware can affect Snake ~ Pointer retains same speed at any TPS ~ Optimized Cell and Cancer ~ Recolored Pipe Wall ~ Improved Slug, Brick, and Ruins buttons ~ Hid Liquid Oxygen ~ Unhid Liquid Hydrogen ~ Moved Liquid Hydrogen to Liquids ~ Moved Poison Gas to Gases + Liquid Nitrogen alias 'LN2' + Electric alias 'Electron' + Light alias 'Photon' + Nut Oil alias 'Cooking Oil' + Epsom Salt alias 'Magnesium Sulfate' + Pyrite alias 'Iron Sulfide' + Limestone alias 'Calcium Carbonate' + Quicklime alias 'Calcium Oxide' + Slaked Lime alias 'Calcium Hydroxide' ~ Petal displays with dark text ~ Slightly moved Porcelain + Built-in dialog boxes ~ Canvas touches the top of the page ~ Wide canvas size takes up more screen space ~ White border no longer shown on wide canvas size ~ Buttons, menus, and the canvas have thicker borders ~ "Elem" in stats bar is no longer uppercase ~ Unknown has no grain - Loading a save no longer changes your selected element + Ctrl+S to bring up save prompt + Ctrl+Shift+S to instantly save canvas + Retroactive changelogs for versions v0.1-v0.4 + Bluesky social link + Partial translations for Ukrainian, Toki Pona, and Halacae + Finished translations for Spanish and Russian [Bug Fixes] ~ Fixed: Oxygen from hydrolysis immediately turns to Foam ~ Fixed: Menu heights vary dramatically with long categories ~ Fixed: Mod Manager and Info Screen text boxes don't stick to bottom ~ Fixed: Lattice Wars appear without borders ~ Fixed: Smash tool breaks harder elements faster ~ Fixed: Error in console on page load ~ Fixed: Artifacts above stats bar text on Chrome ~ Fixed: Console logging when Hail breaks a pixel ~ Fixed: Milk variants still heat into Yogurt ~ Fixed: Controls still show Smooth View keybind ~ Fixed: "Save to File" button cut off on some small screens ~ Fixed: Many aliases can't be used in Element Select ~ Fixed: Prop tool doesn't change pixel state when changing temperature ~ Fixed: Grenades stop moving while charged ~ Fixed: Lightning doesn't reach bottom on large canvases ~ Fixed: Ghost pixels when placing Foam with low air temperature set ~ Fixed: 'CR' behavior cell errors with low air temperature set [Technical] + Portal 'channel' property can be set with the Prop tool (Integer) + runAfterReset function + isBreakable function + 'breakIntoColorMultiplier' element property + 'onMoveInto' element property, called when another pixel moves into it (function(pixel1,pixel2)) + 'chargeStart' pixel property ~ 'breakIntoColor' element property can be used without 'breakInto' + 'sense' sensor property to detect a certain element ~ Optimized electricity ~ Fire is affected by air density + View setting dropdown includes views added by mods ~ currentSaveData is now always defined, and holds metadata about the current canvas, even non-saves + currentSaveData always contains a UUID for seeded randomness ~ Default max pixel count slightly increased ~ Save version is now sb3 ~ Canvas border width is now stored (Default 1 for old saves) ~ Pixel properties with value "undefined" are skipped + Error message in console for broken translation files + GUI translation support + More GUI elements have IDs + Future standalone mode --- changelog.html | 307 ++++++- changelog.txt | 291 ++++++- controls.html | 17 +- index.html | 1702 ++++++++++++++++++++++++++------------ lang/template.json | 118 +++ mods/building.js | 32 +- mods/classic_textures.js | 3 +- mods/devtests.js | 2 +- mods/glow.js | 1 + mods/survival.js | 4 +- style.css | 121 ++- translate.html | 21 +- 12 files changed, 2040 insertions(+), 579 deletions(-) diff --git a/changelog.html b/changelog.html index d250c86f..ce8b7b74 100644 --- a/changelog.html +++ b/changelog.html @@ -104,11 +104,154 @@

Below are all of the updates to Sandboxels.

-

Suggest new additions on our Feedback Form.

-

Join our Discord or our free Newsletter to be notified when new updates drop.

-

The original plain text version of this is still maintained.

+

Suggest new additions on our Feedback Form.

+

Join our Discord or our free Newsletter to be notified when new updates drop.

+

The original plain text version of this is still maintained.

+

[Version 1.11 - February 21, 2025 - Everyone's Update]

+
    +
  • + Portals!
  • +
  • + Portal In and Portal Out elements
  • +
  • + Portals teleport pixels and electricity
  • +
  • + Coral
  • +
  • + Grows in Water
  • +
  • + Bleaches in high temperatures
  • +
  • + Adobe, made from Mud and Straw
  • +
  • + Element translations for Turkish and Hungarian
  • +
  • [Electricity Rework]
  • +
  • ~ Electricity is now more consistent in highly conductive material
  • +
  • ~ Sensors give out a single charge instead of 4
  • +
  • ~ Pixels now store when they were charged
  • +
  • ~ Note: Effects on existing builds should be limited but please report any issues
  • +
  • [Changes]
  • +
  • + Liquid pixels of the same element move around
  • +
  • + Tiny canvas size
  • +
  • + Molten elements oscillate color (Experimental)
  • +
  • ~ Pixels can now exist along the border of the canvas
  • +
  • ~ Disabling Staining will clear all existing pixel stains
  • +
  • + Dye, Paint, etc. retain their selected color independently
  • +
  • + Radioactive Tornado variant
  • +
  • + Humans panic when shocked
  • +
  • ~ Humans are less heat-resistant
  • +
  • ~ Pipes are no longer unbreakable
  • +
  • + Smoke rises in normal air density
  • +
  • ~ Tweaked Fire and Cold Fire behavior
  • +
  • + Sabatier process for producing Methane
  • +
  • + Bergius process for producing Oil
  • +
  • + Acid reacts with Potassium
  • +
  • ~ Increased Methane autoignition point
  • +
  • + Uranium radiates Glass on contact
  • +
  • + Burning Lamp Oil explodes in Water
  • +
  • + Liquid Ozone explodes when broken or shocked
  • +
  • + Molten Gallium can react with Gold Coins
  • +
  • + Slaked Lime reacts with Carbon Dioxide
  • +
  • + Molten Plastic evaporates
  • +
  • + Glue turns Color Sand into Stained Glass
  • +
  • + Butter and Caustic Potash make Soap
  • +
  • + Neutrons radiate Glass, Clouds, and Water
  • +
  • ~ Light absorbed by LEDs is deleted
  • +
  • ~ Foam made from Oxygen + Water releases the Oxygen
  • +
  • ~ Tweaked Bleach and Acid reaction
  • +
  • ~ Increased Molten Sulfur freezing point
  • +
  • ~ Tweaked Smash tool
  • +
  • + Cyanide dirties Water variants
  • +
  • + Infection dirties Water
  • +
  • + Tea and Coffee bubble when hot
  • +
  • + CO2 carbonates Salt Water instead of dirtying
  • +
  • + Soda and Seltzer release Foam when mixed
  • +
  • + Pilk creates Foam
  • +
  • + Cells can ferment Milk variants
  • +
  • ~ Cells ferment Milk slower
  • +
  • ~ Cheese keeps color when breaking into powder (Pilk Powder?)
  • +
  • ~ Caramel is more heat-resistant
  • +
  • ~ Acid turns Humans into Bone
  • +
  • ~ Birds are less flammable
  • +
  • + Fish turn to white meat when cooked
  • +
  • + Worms can compost Petal, Pistil, and Vine
  • +
  • + Rats can eat Hard Yolk
  • +
  • + Alcohol calms Humans
  • +
  • + Humans panic from bad smells
  • +
  • + Smog breaks into Dirty Water
  • +
  • ~ Fireworks create less Carbon Dioxide
  • +
  • + Bless can fix Brick Rubble
  • +
  • + Midas Touch converts some metals to Gold variants
  • +
  • + Malware can affect Snake
  • +
  • ~ Pointer retains same speed at any TPS
  • +
  • ~ Optimized Cell and Cancer
  • +
  • ~ Recolored Pipe Wall
  • +
  • ~ Improved Slug, Brick, and Ruins buttons
  • +
  • ~ Hid Liquid Oxygen
  • +
  • ~ Unhid Liquid Hydrogen
  • +
  • ~ Moved Liquid Hydrogen to Liquids
  • +
  • ~ Moved Poison Gas to Gases
  • +
  • + Liquid Nitrogen alias 'LN2'
  • +
  • + Electric alias 'Electron'
  • +
  • + Light alias 'Photon'
  • +
  • + Nut Oil alias 'Cooking Oil'
  • +
  • + Epsom Salt alias 'Magnesium Sulfate'
  • +
  • + Pyrite alias 'Iron Sulfide'
  • +
  • + Limestone alias 'Calcium Carbonate'
  • +
  • + Quicklime alias 'Calcium Oxide'
  • +
  • + Slaked Lime alias 'Calcium Hydroxide'
  • +
  • ~ Petal displays with dark text
  • +
  • ~ Slightly moved Porcelain
  • +
  • + Built-in dialog boxes
  • +
  • ~ Canvas touches the top of the page
  • +
  • ~ Wide canvas size takes up more screen space
  • +
  • ~ White border no longer shown on wide canvas size
  • +
  • ~ Buttons, menus, and the canvas have thicker borders
  • +
  • ~ "Elem" in stats bar is no longer uppercase
  • +
  • ~ Unknown has no grain
  • +
  • - Loading a save no longer changes your selected element
  • +
  • + Ctrl+S to bring up save prompt
  • +
  • + Ctrl+Shift+S to instantly save canvas
  • +
  • + Retroactive changelogs for versions v0.1-v0.4
  • +
  • + Bluesky social link
  • +
  • + Partial translations for Ukrainian, Toki Pona, and Halacae
  • +
  • + Finished translations for Spanish and Russian
  • +
  • [Bug Fixes]
  • +
  • ~ Fixed: Oxygen from hydrolysis immediately turns to Foam
  • +
  • ~ Fixed: Menu heights vary dramatically with long categories
  • +
  • ~ Fixed: Mod Manager and Info Screen text boxes don't stick to bottom
  • +
  • ~ Fixed: Lattice Wars appear without borders
  • +
  • ~ Fixed: Smash tool breaks harder elements faster
  • +
  • ~ Fixed: Error in console on page load
  • +
  • ~ Fixed: Artifacts above stats bar text on Chrome
  • +
  • ~ Fixed: Console logging when Hail breaks a pixel
  • +
  • ~ Fixed: Milk variants still heat into Yogurt
  • +
  • ~ Fixed: Controls still show Smooth View keybind
  • +
  • ~ Fixed: "Save to File" button cut off on some small screens
  • +
  • ~ Fixed: Many aliases can't be used in Element Select
  • +
  • ~ Fixed: Prop tool doesn't change pixel state when changing temperature
  • +
  • ~ Fixed: Grenades stop moving while charged
  • +
  • ~ Fixed: Lightning doesn't reach bottom on large canvases
  • +
  • ~ Fixed: Ghost pixels when placing Foam with low air temperature set
  • +
  • ~ Fixed: 'CR' behavior cell errors with low air temperature set
  • +
  • [Technical]
  • +
  • + Portal 'channel' property can be set with the Prop tool (Integer)
  • +
  • + runAfterReset function
  • +
  • + isBreakable function
  • +
  • + 'breakIntoColorMultiplier' element property
  • +
  • + 'onMoveInto' element property, called when another pixel moves into it (function(pixel1,pixel2))
  • +
  • + 'chargeStart' pixel property
  • +
  • ~ 'breakIntoColor' element property can be used without 'breakInto'
  • +
  • + 'sense' sensor property to detect a certain element
  • +
  • ~ Optimized electricity
  • +
  • ~ Fire is affected by air density
  • +
  • + View setting dropdown includes views added by mods
  • +
  • ~ currentSaveData is now always defined, and holds metadata about the current canvas, even non-saves
  • +
  • + currentSaveData always contains a UUID for seeded randomness
  • +
  • ~ Default max pixel count slightly increased
  • +
  • ~ Save version is now sb3
  • +
  • ~ Canvas border width is now stored (Default 1 for old saves)
  • +
  • ~ Pixel properties with value "undefined" are skipped
  • +
  • + Error message in console for broken translation files
  • +
  • + GUI translation support
  • +
  • + More GUI elements have IDs
  • +
  • + Future standalone mode
  • +
+

[Version 1.10.2 - December 15, 2024 - Birthday III]

  • + Cheese Powder, from breaking Cheese
  • @@ -2558,7 +2701,163 @@
  • ~ Gravel can now melt
-

[Public Release - Dec. 15, 2021]

+

[Note: Changelogs for version v0.1-v0.4 were added retroactively in 2025]

+ +

[Version 0.4 - Dec. 20, 2021]

+
    +
  • + Grass
  • +
  • + Algae
  • +
  • + Heater
  • +
  • + Cooler
  • +
  • + Superheater
  • +
  • + Freezer
  • +
  • + Charcoal
  • +
  • + Carbon Dioxide
  • +
  • + Dry Ice
  • +
  • + Oil
  • +
  • + Propane
  • +
  • + Methane
  • +
  • + Oxygen
  • +
  • + Liquid Oxygen
  • +
  • + Tinder
  • +
  • + Static
  • +
  • + Borax
  • +
  • + Bamboo
  • +
  • + Bamboo Plant
  • +
  • + Clay
  • +
  • + Baked Clay
  • +
  • + Brick
  • +
  • + Sapling
  • +
  • + Grass Seed
  • +
  • + Flower Seed
  • +
  • + Pistil
  • +
  • + Petal
  • +
  • + Tree Branch
  • +
  • + Vine
  • +
  • + Burner
  • +
  • + Foam
  • +
  • + Bubble
  • +
  • + Rainbow
  • +
  • + Copper
  • +
  • + Molten Copper
  • +
  • + Oxidized Copper
  • +
  • + Acid
  • +
  • + Dust
  • +
  • + Glue
  • +
  • + Anti Fluid
  • +
  • + Lamp Oil
  • +
  • + Wheat Seed
  • +
  • + Wheat
  • +
  • + Straw
  • +
  • + Gray Goo
  • +
  • + Virus
  • +
  • + Worm
  • +
  • + Termite
  • +
  • + Pixel burning
  • +
  • ~ Renamed Laser Pointer to Pointer
  • +
  • + Element and hidden element count
  • +
  • [Technical]
  • +
  • + Behavior presets FOAM, BUBBLE, STICKY, AGLIQUID
  • +
  • + Behavior rules L1, L2, HT, CO, CC, ST
  • +
+ +

[Version 0.3 - Dec. 17, 2021]

+
    +
  • + Ant
  • +
  • + Frog
  • +
  • + Fish
  • +
  • + Rocket
  • +
  • + Ash
  • +
  • + Meat
  • +
  • + Cooked Meat
  • +
  • + Light
  • +
  • + Laser Pointer
  • +
  • + Element categories (Tools, Land, Liquids, Solids, Gases, Energy, Structure, Special, Life, Weapons)
  • +
  • + Hide button
  • +
  • [Technical]
  • +
  • + Behavior presets STURDYPOWDER, SELFDELETE
  • +
  • + SW behavior rule
  • +
+ +

[Version 0.2 - Dec. 16, 2021]

+
    +
  • + Heat tool
  • +
  • + Cool tool
  • +
  • + Steam
  • +
  • + Ice
  • +
  • + Snow
  • +
  • + Packed Snow
  • +
  • + Wood
  • +
  • + Fire
  • +
  • + Smoke
  • +
  • + Rock
  • +
  • + Magma
  • +
  • + Concrete
  • +
  • + Plasma
  • +
  • + Iron
  • +
  • + Glass
  • +
  • + Blood
  • +
  • + Honey
  • +
  • + Ketchup
  • +
  • + Molasses
  • +
  • + Filler
  • +
  • + Dirt
  • +
  • + Gravel
  • +
  • + Slime
  • +
  • + Ruins
  • +
  • + Void
  • +
  • + Flea
  • +
  • + Fly
  • +
  • + Smoke Grenade
  • +
  • + Torch
  • +
  • + Water Spout
  • +
  • + Bone Marrow
  • +
  • + Bone
  • +
  • + Anti Powder
  • +
  • + Vertical
  • +
  • + Horizontal
  • +
  • + Rain Cloud
  • +
  • + Snow Cloud
  • +
  • + Plant
  • +
  • + Seed
  • +
  • + Molten Glass
  • +
  • + Molten Iron
  • +
  • + Pixel temperature and state changes
  • +
  • + Pause button
  • +
  • + Step button
  • +
  • + Adjustable cursor size and buttons
  • +
  • + Replace mode and button
  • +
  • + Element select "E" button
  • +
  • + Adjustable TPS and button
  • +
  • + Keybinds for pausing, changing cursor size
  • +
  • + Shift key handling
  • +
  • + Stats bar, shows pixel information on hover
  • +
  • + Randomized pixel color, pixel grain, and gradient element buttons
  • +
  • ~ Renamed "Clear" button to "Reset"
  • +
  • [Technical]
  • +
  • + Behavior grid system
  • +
  • + Behavior presets POWDER, AGPOWDER, LIQUID, WALL, UL_UR, GAS, DGAS, SUPPORT, SUPPORTPOWDER, DELETE, FILL
  • +
  • + Autogenerated molten elements
  • +
  • - Removed hard-coded behaviors
  • +
+ +

[Version 0.1.1 - Dec. 15, 2021]

+
    +
  • + Clear button
  • +
  • + Pixels can be deleted by right-clicking
  • +
  • + Touchscreen support
  • +
  • + Element buttons
  • +
+ +

[Version 0.1 - Dec. 15, 2021 - Public Release]

+
    +
  • + Sand
  • +
  • + Water
  • +
  • + Wall
  • +
  • + Elements must be selected with the S, W, and X keys
  • +
  • [Technical]
  • +
  • + Hard-coded behaviors DL_DR (Sand), L_R (Water), WALL (Wall)
  • +
diff --git a/changelog.txt b/changelog.txt index 67195be0..dd3c5de4 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,9 +1,150 @@ -Suggest new additions at https://link.R74n.com/sandboxels-feedback +Suggest new additions at https://sandboxels.R74n.com/feedback See sneak peaks for upcoming updates on the Discord: https://discord.gg/ejUc6YPQuS A fancier version of this changelog can be found here: https://sandboxels.R74n.com/changelog +[Version 1.11 - February 21, 2025 - Everyone's Update] + + Portals! + + Portal In and Portal Out elements + + Portals teleport pixels and electricity + + Coral + + Grows in Water + + Bleaches in high temperatures + + Adobe, made from Mud and Straw + + Element translations for Turkish and Hungarian + [Electricity Rework] + ~ Electricity is now more consistent in highly conductive material + ~ Sensors give out a single charge instead of 4 + ~ Pixels now store when they were charged + ~ Note: Effects on existing builds should be limited but please report any issues + [Changes] + + Liquid pixels of the same element move around + + Tiny canvas size + + Molten elements oscillate color (Experimental) + ~ Pixels can now exist along the border of the canvas + ~ Disabling Staining will clear all existing pixel stains + + Dye, Paint, etc. retain their selected color independently + + Radioactive Tornado variant + + Humans panic when shocked + ~ Humans are less heat-resistant + ~ Pipes are no longer unbreakable + + Smoke rises in normal air density + ~ Tweaked Fire and Cold Fire behavior + + Sabatier process for producing Methane + + Bergius process for producing Oil + + Acid reacts with Potassium + ~ Increased Methane autoignition point + + Uranium radiates Glass on contact + + Burning Lamp Oil explodes in Water + + Liquid Ozone explodes when broken or shocked + + Molten Gallium can react with Gold Coins + + Slaked Lime reacts with Carbon Dioxide + + Molten Plastic evaporates + + Glue turns Color Sand into Stained Glass + + Butter and Caustic Potash make Soap + + Neutrons radiate Glass, Clouds, and Water + ~ Light absorbed by LEDs is deleted + ~ Foam made from Oxygen + Water releases the Oxygen + ~ Tweaked Bleach and Acid reaction + ~ Increased Molten Sulfur freezing point + ~ Tweaked Smash tool + + Cyanide dirties Water variants + + Infection dirties Water + + Tea and Coffee bubble when hot + + CO2 carbonates Salt Water instead of dirtying + + Soda and Seltzer release Foam when mixed + + Pilk creates Foam + + Cells can ferment Milk variants + ~ Cells ferment Milk slower + ~ Cheese keeps color when breaking into powder (Pilk Powder?) + ~ Caramel is more heat-resistant + ~ Acid turns Humans into Bone + ~ Birds are less flammable + + Fish turn to white meat when cooked + + Worms can compost Petal, Pistil, and Vine + + Rats can eat Hard Yolk + + Alcohol calms Humans + + Humans panic from bad smells + + Smog breaks into Dirty Water + ~ Fireworks create less Carbon Dioxide + + Bless can fix Brick Rubble + + Midas Touch converts some metals to Gold variants + + Malware can affect Snake + ~ Pointer retains same speed at any TPS + ~ Optimized Cell and Cancer + ~ Recolored Pipe Wall + ~ Improved Slug, Brick, and Ruins buttons + ~ Hid Liquid Oxygen + ~ Unhid Liquid Hydrogen + ~ Moved Liquid Hydrogen to Liquids + ~ Moved Poison Gas to Gases + + Liquid Nitrogen alias 'LN2' + + Electric alias 'Electron' + + Light alias 'Photon' + + Nut Oil alias 'Cooking Oil' + + Epsom Salt alias 'Magnesium Sulfate' + + Pyrite alias 'Iron Sulfide' + + Limestone alias 'Calcium Carbonate' + + Quicklime alias 'Calcium Oxide' + + Slaked Lime alias 'Calcium Hydroxide' + ~ Petal displays with dark text + ~ Slightly moved Porcelain + + Built-in dialog boxes + ~ Canvas touches the top of the page + ~ Wide canvas size takes up more screen space + ~ White border no longer shown on wide canvas size + ~ Buttons, menus, and the canvas have thicker borders + ~ "Elem" in stats bar is no longer uppercase + ~ Unknown has no grain + - Loading a save no longer changes your selected element + + Ctrl+S to bring up save prompt + + Ctrl+Shift+S to instantly save canvas + + Retroactive changelogs for versions v0.1-v0.4 + + Bluesky social link + + Partial translations for Ukrainian, Toki Pona, and Halacae + + Finished translations for Spanish and Russian + [Bug Fixes] + ~ Fixed: Oxygen from hydrolysis immediately turns to Foam + ~ Fixed: Menu heights vary dramatically with long categories + ~ Fixed: Mod Manager and Info Screen text boxes don't stick to bottom + ~ Fixed: Lattice Wars appear without borders + ~ Fixed: Smash tool breaks harder elements faster + ~ Fixed: Error in console on page load + ~ Fixed: Artifacts above stats bar text on Chrome + ~ Fixed: Console logging when Hail breaks a pixel + ~ Fixed: Milk variants still heat into Yogurt + ~ Fixed: Controls still show Smooth View keybind + ~ Fixed: "Save to File" button cut off on some small screens + ~ Fixed: Many aliases can't be used in Element Select + ~ Fixed: Prop tool doesn't change pixel state when changing temperature + ~ Fixed: Grenades stop moving while charged + ~ Fixed: Lightning doesn't reach bottom on large canvases + ~ Fixed: Ghost pixels when placing Foam with low air temperature set + ~ Fixed: 'CR' behavior cell errors with low air temperature set + [Technical] + + Portal 'channel' property can be set with the Prop tool (Integer) + + runAfterReset function + + isBreakable function + + 'breakIntoColorMultiplier' element property + + 'onMoveInto' element property, called when another pixel moves into it (function(pixel1,pixel2)) + + 'chargeStart' pixel property + ~ 'breakIntoColor' element property can be used without 'breakInto' + + 'sense' sensor property to detect a certain element + ~ Optimized electricity + ~ Fire is affected by air density + + View setting dropdown includes views added by mods + ~ currentSaveData is now always defined, and holds metadata about the current canvas, even non-saves + + currentSaveData always contains a UUID for seeded randomness + ~ Default max pixel count slightly increased + ~ Save version is now sb3 + ~ Canvas border width is now stored (Default 1 for old saves) + ~ Pixel properties with value "undefined" are skipped + + Error message in console for broken translation files + + GUI translation support + + More GUI elements have IDs + + Future standalone mode + [Version 1.10.2 - December 15, 2024 - Birthday III] + Cheese Powder, from breaking Cheese + Chocolate Powder, from breaking Chocolate @@ -2353,4 +2494,152 @@ A fancier version of this changelog can be found here: https://sandboxels.R74n.c ~ Heat & Cool tools look more natural ~ Gravel can now melt +[Note: Changelogs for version v0.1-v0.4 were added retroactively in 2025] + +[Version 0.4 - Dec. 20, 2021] + + Grass + + Algae + + Heater + + Cooler + + Superheater + + Freezer + + Charcoal + + Carbon Dioxide + + Dry Ice + + Oil + + Propane + + Methane + + Oxygen + + Liquid Oxygen + + Tinder + + Static + + Borax + + Bamboo + + Bamboo Plant + + Clay + + Baked Clay + + Brick + + Sapling + + Grass Seed + + Flower Seed + + Pistil + + Petal + + Tree Branch + + Vine + + Burner + + Foam + + Bubble + + Rainbow + + Copper + + Molten Copper + + Oxidized Copper + + Acid + + Dust + + Glue + + Anti Fluid + + Lamp Oil + + Wheat Seed + + Wheat + + Straw + + Gray Goo + + Virus + + Worm + + Termite + + Pixel burning + ~ Renamed Laser Pointer to Pointer + + Element and hidden element count + [Technical] + + Behavior presets FOAM, BUBBLE, STICKY, AGLIQUID + + Behavior rules L1, L2, HT, CO, CC, ST + +[Version 0.3 - Dec. 17, 2021] + + Ant + + Frog + + Fish + + Rocket + + Ash + + Meat + + Cooked Meat + + Light + + Laser Pointer + + Element categories (Tools, Land, Liquids, Solids, Gases, Energy, Structure, Special, Life, Weapons) + + Hide button + [Technical] + + Behavior presets STURDYPOWDER, SELFDELETE + + SW behavior rule + +[Version 0.2 - Dec. 16, 2021] + + Heat tool + + Cool tool + + Steam + + Ice + + Snow + + Packed Snow + + Wood + + Fire + + Smoke + + Rock + + Magma + + Concrete + + Plasma + + Iron + + Glass + + Blood + + Honey + + Ketchup + + Molasses + + Filler + + Dirt + + Gravel + + Slime + + Ruins + + Void + + Flea + + Fly + + Smoke Grenade + + Torch + + Water Spout + + Bone Marrow + + Bone + + Anti Powder + + Vertical + + Horizontal + + Rain Cloud + + Snow Cloud + + Plant + + Seed + + Molten Glass + + Molten Iron + + Pixel temperature and state changes + + Pause button + + Step button + + Adjustable cursor size and buttons + + Replace mode and button + + Element select "E" button + + Adjustable TPS and button + + Keybinds for pausing, changing cursor size + + Shift key handling + + Stats bar, shows pixel information on hover + + Randomized pixel color, pixel grain, and gradient element buttons + ~ Renamed "Clear" button to "Reset" + [Technical] + + Behavior grid system + + Behavior presets POWDER, AGPOWDER, LIQUID, WALL, UL_UR, GAS, DGAS, SUPPORT, SUPPORTPOWDER, DELETE, FILL + + Autogenerated molten elements + - Removed hard-coded behaviors + +[Version 0.1.1 - Dec. 15, 2021] + + Clear button + + Pixels can be deleted by right-clicking + + Touchscreen support + + Element buttons + +[Version 0.1 - Dec. 15, 2021] + + Sand + + Water + + Wall + + Elements must be selected with the S, W, and X keys + [Technical] + + Hard-coded behaviors DL_DR (Sand), L_R (Water), WALL (Wall) + [Public Release - Dec. 15, 2021] \ No newline at end of file diff --git a/controls.html b/controls.html index f8d30fa3..8d5dbf5b 100644 --- a/controls.html +++ b/controls.html @@ -93,11 +93,13 @@ Element info I or / Open settings \ Open saves L + Open save prompt Ctrl + S + Instant save Ctrl + Shift + S Open Mod Manager M Reset canvas R Single step > Fullscreen F or F11 - Normal view 1 or 1 + Normal view 1 or 0 Thermal view 2 Basic view (No effects) 3 Hide canvas H @@ -144,6 +146,19 @@

The original plain text version may not be maintained.

+ diff --git a/index.html b/index.html index c98f3bc0..e4a8d5ab 100644 --- a/index.html +++ b/index.html @@ -3,15 +3,16 @@ - Sandboxels - Experiment with Pixels - + Sandboxels - Experiment with Pixels + - + + @@ -48,8 +49,9 @@ + + + +

< Test

+ + +
+ +This is a test page. + +
+ + + + + + + + + + + + + + + + + + + From 1be29a75ace20cd7f887bcdd4eef91f2ea6ec1bf Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Tue, 25 Feb 2025 11:28:34 -0500 Subject: [PATCH 62/69] Update adtest.html --- adtest.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/adtest.html b/adtest.html index 2b9b4bf1..88a21586 100644 --- a/adtest.html +++ b/adtest.html @@ -57,6 +57,8 @@ This is a test page. +
+ @@ -64,9 +66,7 @@ This is a test page. // Example Only self.__VM = self.__VM || []; self.__VM.push(function (admanager, scope) { - scope.Config.get('mobile_banner').display('slot-1'); - scope.Config.get('billboard').display('slot-6'); - scope.Config.get('video').display('vm-av'); + scope.Config.get('billboard').display('slot-1'); }); From e5b21f74a96d2733363aa3f281756cc31ab1db06 Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Tue, 25 Feb 2025 11:55:59 -0500 Subject: [PATCH 63/69] Update adtest.html --- adtest.html | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/adtest.html b/adtest.html index 88a21586..9e7042c2 100644 --- a/adtest.html +++ b/adtest.html @@ -47,6 +47,7 @@ #content { font-family: Arial, Helvetica, sans-serif; font-size:1.5em; } h2 { text-align: center; margin-bottom:0; margin-top:45px} + @@ -58,20 +59,38 @@ This is a test page.
+
+
+
- - From 4e66a4a88ba98fb1b6df1972691ab101516b71ca Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:01:14 -0500 Subject: [PATCH 64/69] Update adtest.html --- adtest.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adtest.html b/adtest.html index 9e7042c2..4467fce5 100644 --- a/adtest.html +++ b/adtest.html @@ -47,7 +47,7 @@ #content { font-family: Arial, Helvetica, sans-serif; font-size:1.5em; } h2 { text-align: center; margin-bottom:0; margin-top:45px} - + From d49f6bfc941a7594025cab00ab673482970c533b Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:09:08 -0500 Subject: [PATCH 65/69] Update adtest.html --- adtest.html | 1 + 1 file changed, 1 insertion(+) diff --git a/adtest.html b/adtest.html index 4467fce5..68b3942d 100644 --- a/adtest.html +++ b/adtest.html @@ -72,6 +72,7 @@ This is a test page. if (standalone) return; var adscript = document.createElement('script'); adscript.src = "https://hb.vntsm.com/v4/live/vms/sites/sandboxels.r74n.com/index.js"; + adscript.setAttribute("data-disable-placements","vertical-sticky, video_slider"); adscript.addEventListener('load', function() { self.__VM = self.__VM || []; self.__VM.push(function (admanager, scope) { From f5ebeeb4acd221be1d2c182bee2bed79ca41134f Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:13:03 -0500 Subject: [PATCH 66/69] Update index.html --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index efbf767e..a2b8019e 100644 --- a/index.html +++ b/index.html @@ -18677,6 +18677,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">? // add the above elements programmatically when the page loads window.addEventListener('load', function() { if (standalone) return; + if (window.location.protocol === "file:") return; var adscript1 = document.createElement('script'); adscript1.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8485284630785740"; adscript1.crossorigin = "anonymous"; From 1f7a50409eef788ecf1d005850ff6f2bf61ca75b Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:09:54 -0800 Subject: [PATCH 67/69] fixed liquids being visible in all views bug --- mods/liquid_mixing.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/liquid_mixing.js b/mods/liquid_mixing.js index 82896b37..aa651ccd 100644 --- a/mods/liquid_mixing.js +++ b/mods/liquid_mixing.js @@ -2,6 +2,8 @@ window.addEventListener('load', function() { for (var element in elements) { if (elements[element].state === "liquid" && elements[element].behavior != behaviors.MOLTEN) { elements[element].renderer = function(pixel, ctx) { // this part used nouseramefounds code, props to him! + drawDefault(ctx,pixel); + if (!viewInfo[view].colorEffects) { return } if (!pixel.rSeed){pixel.rSeed = [Math.random(), Math.random(), Math.random(), Math.random()]} if (typeof pixel.color == "object"){ let selectedColor = pixel.color[Math.floor(pixel.rSeed[1]*elements[pixel.element].color.length)] @@ -45,7 +47,7 @@ window.addEventListener('load', function() { if (element === "midas_touch" || element === "molasses" || element === "grease" || element === "oil" || element === "lamp_oil" || element === "nut_oil" || element === "honey" || element === "sap" || element === "caramel") { elements[element].polar = 2 } - else if (element === "soap") { + else if (element === "soap" || element === "dye") { elements[element].polar = 3 } else { From 9da39ce34e631e8e9912bb68b258073685019d4a Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:10:36 -0800 Subject: [PATCH 68/69] "realistic" lighting mod --- mods/real_light.js | 754 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 754 insertions(+) create mode 100644 mods/real_light.js diff --git a/mods/real_light.js b/mods/real_light.js new file mode 100644 index 00000000..ada59bc1 --- /dev/null +++ b/mods/real_light.js @@ -0,0 +1,754 @@ +window.addEventListener('load', function() { + for (var element in elements) { + if (!elements[element].onPlace) {elements[element].onPlace = function(pixel) { + pixel.alphaLight = 0.1 + } + } + } +}); + +day = false + +bigCircleCoords = [ + [0,-1], + [0,1], + [1,0], + [-1,0], + [1,1], + [1,-1], + [-1,1], + [-1,-1], + [0,-2], + [0,2], + [2,0], + [-2,0], +]; +bigCircleCoordsShuffle = bigCircleCoords.slice(); + +elements.light_switch = { + color: "#d2dfd7", + behavior: [ + "CR:photon|CR:photon|CR:photon", + "CR:photon|XX|CR:photon", + "CR:photon|CR:photon|CR:photon", + ], + tool: function(pixel) {}, + onSelect: function() { + if (day != true) { + day = true + } + else if (day != false) { + day = false + } + selectElement(prevElement); + }, + category: "tools", + canPlace: false, + darkText: true, + desc: "Use on pixels to move them around." +} + +elements.light = { + color: "#fffdcf", + tick: function(pixel) { + if (Math.random() < 0.01) { + deletePixel(pixel.x,pixel.y); + return; + } + if (pixel.visible < 1000) { + pixel.visible = 10000 + } + if (pixel.bx===undefined) { + // choose 1, 0, or -1 + pixel.bx = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1; + pixel.by = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1; + // if both are 0, make one of them 1 or -1 + if (pixel.bx===0 && pixel.by===0) { + if (Math.random() < 0.5) { pixel.bx = Math.random() < 0.5 ? 1 : -1; } + else { pixel.by = Math.random() < 0.5 ? 1 : -1; } + } + } + // move and invert direction if hit + if (pixel.bx && !tryMove(pixel, pixel.x+pixel.bx, pixel.y)) { + var newX = pixel.x + pixel.bx; + if (!isEmpty(newX, pixel.y, true)) { + var newPixel = pixelMap[pixel.x+pixel.bx][pixel.y]; + if (!elements[newPixel.element].insulate) { + newPixel.temp += 1; + pixelTempCheck(newPixel); + } + if (!elements.light.reactions[newPixel.element]) { + pixel.color = newPixel.color; + } + if (!newPixel.visible) { newPixel.visible = 25 } + else { newPixel.visible += 25 } + if (elements[newPixel.element].state == "liquid" && elements[newPixel.element].movable != false) { + swapPixels(pixel,newPixel) + } + else {pixel.bx = -pixel.bx;} + } + else if (outOfBounds(newX, pixel.y)) { + pixel.bx = -pixel.bx; + } + } + if (pixel.by && !tryMove(pixel, pixel.x, pixel.y+pixel.by)) { + var newY = pixel.y + pixel.by; + if (!isEmpty(pixel.x, newY, true)) { + var newPixel = pixelMap[pixel.x][pixel.y+pixel.by]; + if (!elements[newPixel.element].insulate) { + newPixel.temp += 1; + pixelTempCheck(newPixel); + } + if (!elements.light.reactions[newPixel.element]) { + pixel.color = newPixel.color; + } + if (!newPixel.visible) { newPixel.visible = 25 } + else { newPixel.visible += 25 } + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = newPixel.x + coords[0]; + var y = newPixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var adjacentPixel = pixelMap[x][y]; + if (elements[newPixel.element].id === elements.glass.id || elements[newPixel.element].id === elements.rad_glass.id) { + if (!adjacentPixel.visible) { adjacentPixel.visible = 25 } + else { adjacentPixel.visible += 25 } + } + else { + if (!adjacentPixel.visible) { adjacentPixel.visible = 10 } + else { adjacentPixel.visible += 10 } + } + } + } + if (elements[newPixel.element].state == "liquid" && elements[newPixel.element].movable != false) { + swapPixels(pixel,newPixel) + } + else {pixel.by = -pixel.by;} + } + else if (outOfBounds(pixel.x, newY)) { + pixel.by = -pixel.by; + } + } + }, + reactions: { + "glass": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "glass_shard": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "rad_glass": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] }, + "rad_shard": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] }, + "steam": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "rain_cloud": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "cloud": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "smog": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] }, + "ice": { "color1":"#c2fff9" }, + "rime": { "color1":"#c2fff9" }, + "water": { "color1":"#a1bac9" }, + "salt_water": { "color1":"#a1bac9" }, + "sugar_water": { "color1":"#a1bac9" }, + "dirty_water": { "color1":"#a1c9a8" }, + "seltzer": { "color1":"#c2fff9" }, + "diamond": { "color1":["#c2c5ff","#c2d9ff"] }, + "rainbow": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "static": { "color1":["#ffffff","#bdbdbd","#808080","#424242","#1c1c1c"] } + }, + properties: { + visible: 10000, + }, + temp: 35, + tempLow: -273, + stateLow: ["liquid_light",null], + stateLowColorMultiplier: 0.8, + category: "energy", + state: "gas", + density: 0.00001, + ignoreAir: true, + insulate: true, +} + +elements.photon = { + color: "#ffffff", + grain: 0, + tick: function(pixel) { + if (Math.random() < 0.01) { + deletePixel(pixel.x,pixel.y); + return; + } + if (pixel.visible < 1000) { + pixel.visible = 10000 + } + if (pixel.bx===undefined) { + // choose 1, 0, or -1 + pixel.bx = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1; + pixel.by = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1; + // if both are 0, make one of them 1 or -1 + if (pixel.bx===0 && pixel.by===0) { + if (Math.random() < 0.5) { pixel.bx = Math.random() < 0.5 ? 1 : -1; } + else { pixel.by = Math.random() < 0.5 ? 1 : -1; } + } + } + // move and invert direction if hit + if (pixel.bx && !tryMove(pixel, pixel.x+pixel.bx, pixel.y)) { + var newX = pixel.x + pixel.bx; + if (!isEmpty(newX, pixel.y, true)) { + var newPixel = pixelMap[pixel.x+pixel.bx][pixel.y]; + if (!newPixel.visible && elements[newPixel.element].id != elements.photon.id) { newPixel.visible = 25 } + else if (elements[newPixel.element].id != elements.photon.id) { newPixel.visible += 25 } + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = newPixel.x + coords[0]; + var y = newPixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var adjacentPixel = pixelMap[x][y]; + if (elements[adjacentPixel.element].id === elements.glass.id || elements[adjacentPixel.element].id === elements.rad_glass.id || elements[newPixel.element].state == "liquid" || elements[newPixel.element].state == "gas") { + if (!adjacentPixel.visible) { adjacentPixel.visible = 25 } + else { adjacentPixel.visible += 25 } + } + else { + if (!adjacentPixel.visible) { adjacentPixel.visible = 10 } + else { adjacentPixel.visible += 10 } + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = adjacentPixel.x + coords[0]; + var y = adjacentPixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var adjacentPixel2 = pixelMap[x][y]; + if (elements[adjacentPixel.element].id === elements.glass.id || elements[adjacentPixel.element].id === elements.rad_glass.id || elements[newPixel.element].state == "liquid" || elements[newPixel.element].state == "gas") { + if (!adjacentPixel2.visible) { adjacentPixel2.visible = 25 } + else { adjacentPixel2.visible += 25 } + } + else { + if (!adjacentPixel2.visible) { adjacentPixel2.visible = 5 } + else { adjacentPixel2.visible += 5 } + } + } + } + } + } + } + if (elements[newPixel.element].state == "liquid" && elements[newPixel.element].movable != false) { + swapPixels(pixel,newPixel) + } + else {pixel.bx = -pixel.bx;} + } + else if (outOfBounds(newX, pixel.y)) { + pixel.bx = -pixel.bx; + } + } + if (pixel.by && !tryMove(pixel, pixel.x, pixel.y+pixel.by)) { + var newY = pixel.y + pixel.by; + if (!isEmpty(pixel.x, newY, true)) { + var newPixel = pixelMap[pixel.x][pixel.y+pixel.by]; + if (!newPixel.visible && elements[newPixel.element].id != elements.photon.id) { newPixel.visible = 25 } + else if (elements[newPixel.element].id != elements.photon.id) { newPixel.visible += 25 } + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = newPixel.x + coords[0]; + var y = newPixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var adjacentPixel = pixelMap[x][y]; + if (elements[adjacentPixel.element].id === elements.glass.id || elements[adjacentPixel.element].id === elements.rad_glass.id || elements[newPixel.element].state == "liquid" || elements[newPixel.element].state == "gas") { + if (!adjacentPixel.visible) { adjacentPixel.visible = 25 } + else { adjacentPixel.visible += 25 } + } + else { + if (!adjacentPixel.visible) { adjacentPixel.visible = 10 } + else { adjacentPixel.visible += 10 } + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = adjacentPixel.x + coords[0]; + var y = adjacentPixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var adjacentPixel2 = pixelMap[x][y]; + if (elements[adjacentPixel.element].id === elements.glass.id || elements[adjacentPixel.element].id === elements.rad_glass.id || elements[newPixel.element].state == "liquid" || elements[newPixel.element].state == "gas") { + if (!adjacentPixel2.visible) { adjacentPixel2.visible = 25 } + else { adjacentPixel2.visible += 25 } + } + else { + if (!adjacentPixel2.visible) { adjacentPixel2.visible = 5 } + else { adjacentPixel2.visible += 5 } + } + } + } + } + } + } + if (elements[newPixel.element].state == "liquid" && elements[newPixel.element].movable != false) { + swapPixels(pixel,newPixel) + } + else {pixel.by = -pixel.by;} + } + else if (outOfBounds(pixel.x, newY)) { + pixel.by = -pixel.by; + } + } + }, + temp: 20, + stateLowColorMultiplier: 0.8, + category: "energy", + state: "gas", + density: 0, + ignoreAir: true, + insulate: true, + movable: false +} + +elements.liquid_light = { + color: "#bdbc9d", + //behavior: behaviors.SUPERFLUID, + tick: function(pixel) { + if (Math.random() < 0.0001) { + deletePixel(pixel.x,pixel.y); + return; + } + if (pixel.charge && elements[pixel.element].behaviorOn) { + pixelTick(pixel) + } + if (Math.random() < 0.33) { tryMove(pixel, pixel.x, pixel.y+1) } + if (!isEmpty(pixel.x, pixel.y+1)) { + // go either left or right depending on pixel.flipX + var newx = pixel.flipX ? pixel.x-1 : pixel.x+1; + if (Math.random() < 0.5) { + if (!tryMove(pixel, newx, pixel.y)) { + if (!outOfBounds(newx, pixel.y) && !elements.liquid_light.reactions[pixelMap[newx][pixel.y].element]) { + pixel.color = pixelMap[newx][pixel.y].color; + if (!pixelMap[newx][pixel.y].visible) { pixelMap[newx][pixel.y].visible = 25 } + else { pixelMap[newx][pixel.y].visible += 25 } + } + pixel.flipX = !pixel.flipX; + if (!tryMove(pixel, newx, pixel.y+1) && !outOfBounds(newx, pixel.y+1) && !elements.liquid_light.reactions[pixelMap[newx][pixel.y+1].element]) { + pixel.color = pixelMap[newx][pixel.y+1].color; + if (!pixelMap[newx][pixel.y+1].visible) { pixelMap[newx][pixel.y+1].visible = 25 } + else { pixelMap[newx][pixel.y+1].visible += 25 } + } + } + } + else { + if (!tryMove(pixel, newx, pixel.y+1)) { + if (!outOfBounds(newx, pixel.y+1) && !elements.liquid_light.reactions[pixelMap[newx][pixel.y+1].element]) { + pixel.color = pixelMap[newx][pixel.y+1].color; + if (!pixelMap[newx][pixel.y+1].visible) { pixelMap[newx][pixel.y+1].visible = 25 } + else { pixelMap[newx][pixel.y+1].visible += 25 } + } + if (!tryMove(pixel, newx, pixel.y)) { + pixel.flipX = !pixel.flipX; + if (!outOfBounds(newx, pixel.y) && !elements.liquid_light.reactions[pixelMap[newx][pixel.y].element]) { + pixel.color = pixelMap[newx][pixel.y].color; + if (!pixelMap[newx][pixel.y].visible) { pixelMap[newx][pixel.y].visible = 25 } + else { pixelMap[newx][pixel.y].visible += 25 } + } + } + } + } + } + doDefaults(pixel); + }, + reactions: { + "glass": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "glass_shard": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "rad_glass": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] }, + "rad_shard": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] }, + "steam": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "rain_cloud": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "cloud": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] }, + "smog": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] }, + "laser": { "color1":"#ff0000" }, + }, + temp: -273, + tempHigh: -272, + stateHigh: "light", + category: "energy", + state: "gas", + density: 0.00002, + ignoreAir: true, + viscosity: 0, + insulate: true, + hidden: true +} + +elements.bless = { + color: ["#ffffff","#fffa9c","#00ffff"], + tool: function(pixel) { + if (elements.bless.ignore.indexOf(pixel.element) !== -1) { return; } + if (pixel.burning && !elements[pixel.element].burning) { // stop burning + delete pixel.burning; + delete pixel.burnStart; + } + if (!elements[pixel.element].insulate) { + if (pixel.temp > 100) { + pixel.temp = (pixel.temp+100)/2; + pixelTempCheck(pixel); + if (pixel.del) {return} + } + if (pixel.temp < -200) { + pixel.temp = (pixel.temp-200)/2; + pixelTempCheck(pixel); + if (pixel.del) {return} + } + } + if (pixel.origColor) { + pixel.color = "rgb("+pixel.origColor.join(",")+")"; + delete pixel.origColor; + } + if (pixel.charge) { + delete pixel.charge; + pixel.chargeCD = 16; + } + if (!pixel.visible) { + pixel.visible = 10 + } + else { + pixel.visible += 10 + } + if (elements.bless.reactions[pixel.element] && Math.random()<0.25) { + var r = elements.bless.reactions[pixel.element]; + var elem2 = r.elem2; + if (elem2 !== undefined) { + if (Array.isArray(elem2)) { elem2 = elem2[Math.floor(Math.random()*elem2.length)]; } + if (elem2 === null) { deletePixel(pixel.x,pixel.y) } + else { changePixel(pixel, elem2); } + } + if (r.func) { r.func(pixel,pixel) } + if (r.color2) { pixel.color = pixelColorPick(pixel,r.color2) } + } + }, + ignore: ["sun"], + behavior: [ + "M2|M1|M2", + "M1|DL%25|M1", + "M2|M1|M2", + ], + reactions: { + "cancer": { elem2:null }, + "rust": { elem2: "iron" }, + "oxidized_copper": { elem2: "copper" }, + "blood": { elem2:["antibody",null] }, + "blood_ice": { elem2:"antibody_ice" }, + "dirty_water": { elem2: "water" }, + "plague": { elem2: null }, + "virus": { func: function(pixel1,pixel2){pixel2.heal=true} }, + "filler": { elem2: "wall" }, + "armageddon": { elem2: null }, + "lattice": { elem2: "wall" }, + "vertical": { elem2: "wall" }, + "horizontal": { elem2: "wall" }, + "gray_goo": { elem2: "malware" }, + "infection": { elem2: ["antibody",null] }, + "antibody": { elem2: ["antibody",null] }, + "infection_ice": { elem2: "antibody_ice" }, + "poison": { elem2: "antidote" }, + "poison_gas": { elem2: null }, + "poison_ice": { elem2: null }, + "rotten_meat": { elem2: "meat" }, + "rotten_cheese": { elem2: "cheese", color2:["#B8BA9E","#CDCAB2","#C5CEC0","#7B9691","#41564B"] }, + "carbon_dioxide": { elem2: "oxygen" }, + "pilk": { elem2: "milk" }, + "acid": { elem2: "hydrogen" }, + "acid_gas": { elem2: "hydrogen" }, + "acid_cloud": { elem2: "rain_cloud" }, + "fire_cloud": { elem2: "cloud" }, + "ash": { elem2: null }, + "molten_ash": { elem2: null }, + "pyrocumulus": { elem2: null }, + "cyanide": { elem2: null }, + "cyanide_gas": { elem2: null }, + "ammonia": { elem2: null }, + "liquid_ammonia": { elem2: null }, + "dioxin": { elem2: null }, + "stench": { elem2: null }, + "liquid_stench": { elem2: null }, + "fragrance": { elem2: null }, + "chlorine": { elem2: null }, + "anesthesia": { elem2: null }, + "oil": { elem2: null }, + "bleach": { elem2: null }, + "soda": { elem2: "seltzer" }, + "ink": { elem2: null }, + "dye": { elem2: null }, + "color_smoke": { elem2: null }, + "spray_paint": { elem2: null }, + "cancer": { elem2: null }, + "rat": { elem2: null }, + "flea": { elem2: null }, + "termite": { elem2: null }, + "smog": { elem2: "cloud" }, + "mercury": { elem2: null }, + "slime": { elem2: null }, + "broth": { elem2: "water" }, + "fire": { elem2: "bless" }, + "plasma": { elem2: "bless" }, + "grenade": { elem2: "metal_scrap" }, + "flashbang": { elem2: "metal_scrap" }, + "smoke_grenade": { elem2: "metal_scrap" }, + "greek_fire": { elem2: "smoke" }, + "nitro": { elem2: null }, + "smoke": { elem2: null }, + "lightning": { elem2: null }, + "electric": { elem2: null }, + "positron": { elem2: null }, + "antimatter": { elem2: null }, + "neutron": { elem2: null }, + "proton": { elem2: null }, + "radiation": { elem2: "flash" }, + "uranium": { elem2: "rock" }, + "molten_uranium": { elem2: "magma" }, + "magma": { elem2: "rock" }, + "mercury": { elem2: null }, + "mercury_gas": { elem2: null }, + "solid_mercury": { elem2: null }, + "ice_nine": { elem2: "ice" }, + "strange_matter": { elem2: "neutron" }, + "frozen_frog": { elem2: "frog" }, + "frozen_worm": { elem2: "worm" }, + "molten_thermite": { elem2: "rock" }, + "rad_glass": { elem2: "glass" }, + "rad_shard": { elem2: "glass_shard" }, + "rad_steam": { elem2: "steam" }, + "fallout": { elem2: null }, + "rad_cloud": { elem2: "rain_cloud" }, + "fireball": { elem2: "ball" }, + "bone_marrow": { elem2: "bone" }, + "fly": { elem2: null }, + "dead_bug": { elem2: null }, + "dead_plant": { elem2: "plant" }, + "wood": { func:function(pixel1,pixel2) {if(pixel2.wc){changePixel(pixel2,"tree_branch")}} }, + "slag": { elem2: "rock" }, + "molten_slag": { elem2: "magma" }, + "laser": { elem2: "light" }, + "light": { elem2: "flash" }, + "torch": { elem2: "wood" }, + "explosion": { elem2: null }, + "n_explosion": { elem2: null }, + "supernova": { elem2: null }, + "pop": { elem2: null }, + "ember": { elem2: null }, + "fw_ember": { elem2: null }, + "pollen": { elem2: null }, + "lead": { elem2: "gold" }, + "molten_lead": { elem2: "molten_gold" }, + "dirt": { elem1: "grass", oneway:true }, + "static": { elem2: "rainbow" }, + "tornado": { elem2: null }, + "tsunami": { elem2: null }, + "earthquake": { elem2: null }, + "blaster": { elem2: null }, + "dust": { elem2: null }, + "grease": { elem2: null }, + "meat": { elem2: "cured_meat" }, + "clay_shard": { elem2:"baked_clay" }, + "porcelain_shard": { elem2:"porcelain" }, + "glass_shard": { elem2:"glass" }, + "gunpowder": { elem2:"charcoal" }, + "ruins": { elem2:"rock_wall" }, + "warp": { elem2:null }, + "midas_touch": { elem2:null }, + "web": { elem2:null }, + "heat_ray": { elem2:null }, + }, + temp:20, + state: "gas", + density: 0.001, + canPlace: true, + category: "energy", + stain: -0.5 +} + +viewInfo[1] = { // Real Light View + name: "", + effects: true, + pixel: function(pixel,ctx) { + if (day != true) { + if (pixel.visible && elements[pixel.element].id != elements.photon.id) { + var a = (settings.textures !== 0) ? pixel.alphaLight : undefined; + if (elements[pixel.element].isGas) { + drawPlus(ctx,pixel.color,pixel.x,pixel.y,undefined,a) + if (pixel.visible > 0 && (elements[pixel.element].emit || pixel.emit) || (elements[pixel.element].glow || pixel.glow) || pixel.bright === true || pixel.charge || pixel.burning || pixel.temp > 1025) { + pixel.visible += 1 + } + else if (pixel.visible > 1) { + pixel.visible -= 1 + } + if (pixel.visible > 250) { + pixel.visible = 250 + } + if (pixel.visible > 100 || pixel.bright || (elements[pixel.element].emit || pixel.emit) || (elements[pixel.element].glow || pixel.glow) || pixel.bright === true || pixel.charge || pixel.burning || pixel.temp > 1025) { + pixel.alphaLight = 1 + } + else if (pixel.visible <= 100) { + pixel.alphaLight = (pixel.visible / 100) + if (pixel.alphaLight <= 0.05) { + for (var i = 0; i < squareCoordsShuffle.length; i++) { + var x = pixel.x+squareCoordsShuffle[i][0]; + var y = pixel.y+squareCoordsShuffle[i][1]; + if (isEmpty(x,y)) { + pixel.alphaLight = 0.1 + } + else if (pixel.alphaLight <= 0.025 && !isEmpty(x,y, true)) { + for (var i2 = 0; i2 < bigCircleCoordsShuffle.length; i2++) { + var x2 = pixel.x+bigCircleCoordsShuffle[i2][0]; + var y2 = pixel.y+bigCircleCoordsShuffle[i2][1]; + if (isEmpty(x2,y2)) { + pixel.alphaLight = 0.05 + } + else if (pixel.alphaLight <= 0.015) { + pixel.alphaLight = 0.025 + } + } + } + } + } + } + // if (isEmpty(pixel.x+1,pixel.y) || isEmpty(pixel.x-1,pixel.y) || isEmpty(pixel.x,pixel.y+1) || isEmpty(pixel.x,pixel.y-1)) {} + } + else { + drawSquare(ctx,pixel.color,pixel.x,pixel.y,undefined,a) + if (pixel.visible > 0 && (elements[pixel.element].emit || pixel.emit) || (elements[pixel.element].glow || pixel.glow) || pixel.bright === true || pixel.charge || pixel.burning || pixel.temp > 1025) { + pixel.visible += 1 + } + else if (pixel.visible > 1) { + pixel.visible -= 1 + } + if (pixel.visible > 250) { + pixel.visible = 250 + } + if (pixel.visible > 100 || pixel.bright || (elements[pixel.element].emit || pixel.emit) || (elements[pixel.element].glow || pixel.glow) || pixel.bright === true) { + pixel.alphaLight = 1 + } + else if (pixel.visible < 0.5 && (pixel.charge || pixel.burning || pixel.temp > 1025)) { + pixel.alphaLight = 0.5 + } + else if (pixel.visible <= 100) { + pixel.alphaLight = (pixel.visible / 100) + if (pixel.alphaLight <= 0.05) { + for (var i = 0; i < squareCoordsShuffle.length; i++) { + var x = pixel.x+squareCoordsShuffle[i][0]; + var y = pixel.y+squareCoordsShuffle[i][1]; + if (isEmpty(x,y)) { + pixel.alphaLight = 0.1 + } + else if (pixel.alphaLight <= 0.025 && !isEmpty(x,y, true)) { + for (var i2 = 0; i2 < bigCircleCoordsShuffle.length; i2++) { + var x2 = pixel.x+bigCircleCoordsShuffle[i2][0]; + var y2 = pixel.y+bigCircleCoordsShuffle[i2][1]; + if (isEmpty(x2,y2)) { + pixel.alphaLight = 0.05 + } + else if (pixel.alphaLight <= 0.015) { + pixel.alphaLight = 0.025 + } + } + } + } + } + } + } + if (pixel.charge && view !== 2) { // Yellow glow on charge + if (!elements[pixel.element].colorOn) { + drawSquare(ctx,"rgba(255,255,0,0.5)",pixel.x,pixel.y); + } + } + } + else if (!pixel.visible) { + pixel.visible = 1 + } + } + else { + var a = (settings.textures !== 0) ? pixel.alpha : undefined; + if (((elements[pixel.element].isGas && elements[pixel.element].glow !== false) || elements[pixel.element].glow || pixel.glow) && pixel.glow !== false) { + drawPlus(ctx,pixel.color,pixel.x,pixel.y,undefined,a) + // if (isEmpty(pixel.x+1,pixel.y) || isEmpty(pixel.x-1,pixel.y) || isEmpty(pixel.x,pixel.y+1) || isEmpty(pixel.x,pixel.y-1)) {} + } + else { + drawSquare(ctx,pixel.color,pixel.x,pixel.y,undefined,a) + } + if (pixel.charge && view !== 2) { // Yellow glow on charge + if (!elements[pixel.element].colorOn) { + drawSquare(ctx,"rgba(255,255,0,0.5)",pixel.x,pixel.y); + } + } + } + } +} + +elements.light_bulb.behaviorOn = [ + "XX|CR:light,photon|XX", + "CR:light,photon|XX|CR:light,photon", + "XX|CR:light,photon|XX", +] + +elements.sun.tick = function(pixel) { + // minimum 1726 + // maximum 7726 + if (pixel.eclipse) { pixel.color = pixelColorPick(pixel,"#FD8C03"); var c=0.01} + else if (pixel.temp < 1500) { pixel.color = pixelColorPick(pixel,"#7a4e43"); } + else if (pixel.temp < 3600) { pixel.color = pixelColorPick(pixel,"#ffbdbd"); var c=0.015 } + else if (pixel.temp < 5000) { pixel.color = pixelColorPick(pixel,"#ffd5bd"); var c=0.025 } + else if (pixel.temp < 7000) { pixel.color = pixelColorPick(pixel,"#ffffbd"); var c=0.05 } + else if (pixel.temp < 11000) { pixel.color = pixelColorPick(pixel,"#f7fff5"); var c=0.1 } + else if (pixel.temp < 28000) { pixel.color = pixelColorPick(pixel,"#bde0ff"); var c=0.2 } + else { pixel.color = pixelColorPick(pixel,"#c3bdff"); var c=0.4 } + if (pixel.temp < 1500) { var c=0 } + for (var i = 0; i < adjacentCoords.length; i++) { + var x = pixel.x+adjacentCoords[i][0]; + var y = pixel.y+adjacentCoords[i][1]; + if (isEmpty(x,y)) { + if (Math.random() > c) {continue} + if (Math.random() > 0.75) { + createPixel("light", x, y); + pixelMap[x][y].color = pixel.color; + } + else { + createPixel("photon", x, y); + } + } + else if (!outOfBounds(x,y)) { + var newPixel = pixelMap[x][y]; + if (elements[newPixel.element].id === elements.sun.id) { + if (pixel.eclipse) { newPixel.eclipse = true } + if (pixel.temp!==newPixel.temp) { + var avg = (pixel.temp + newPixel.temp)/2; + pixel.temp = avg; + newPixel.temp = avg; + pixelTempCheck(pixel); + pixelTempCheck(newPixel); + } + } + } + } +} + +elements.sun.tool = function(pixel) { + if (pixel.element === "light" || pixel.element === "photon") { + deletePixel(pixel.x,pixel.y); + } +} + +elements.fire.properties = { bright: true } +elements.plasma.properties = { bright: true } +elements.sun.properties = { bright: true } +elements.cold_fire.properties = { bright: true } +elements.laser.properties = { bright: true } +elements.pointer.properties = { bright: true } +elements.flash.properties = { bright: true } +elements.bless.properties = { bright: true } +elements.lightning.properties = { bright: true } +elements.neutron.properties = { bright: true } +elements.proton.properties = { bright: true } +elements.electric.properties = { bright: true } +elements.radiation.properties = { bright: true } +elements.god_ray.properties = { bright: true } +elements.heat_ray.properties = { bright: true } +elements.freeze_ray.properties = { bright: true } +elements.pop.properties = { bright: true } +elements.explosion.properties = { bright: true } +elements.n_explosion.properties = { bright: true } +elements.supernova.properties = { bright: true } +elements.positron.properties = { bright: true } +elements.fw_ember.properties = { bright: true } +elements.ember.properties = { bright: true } +elements.firebal.properties = { bright: true } +elements.blaster.properties = { bright: true } +elements.armageddon.properties = { bright: true } +elements.rad_cloud.properties = { bright: true } +elements.rad_steam.properties = { bright: true } +elements.midas_touch.properties = { bright: true } +elements.malware.properties = { bright: true } +elements.strange_matter.properties = { bright: true } \ No newline at end of file From c1c1bb5e25cb31d6da923d08101e8d0beed9b599 Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:12:41 -0800 Subject: [PATCH 69/69] added realistic lighting mod to mod list --- mod-list.html | 1 + 1 file changed, 1 insertion(+) diff --git a/mod-list.html b/mod-list.html index dc9da847..9f4f7a9e 100644 --- a/mod-list.html +++ b/mod-list.html @@ -379,6 +379,7 @@ onecolor.jsMakes all placed pixels single-colorednousernamefound paint_event.jsAdds a random event that randomly paints a circleAlice rainbow_tests.jsAdds variants of the rainbow element with different mathsAlice +real_light.jsChanges view code to make everything dark if not hit with a photon or light element, as well as making hot things and glowing things still be visible.Nekonico shader_by_jayd.jsAdds a glow around light elementsJayd Shroomboxels.jsA variant of acid_and_shapes.js that uses a different trigonometric functionAlice singleColor.jsMakes all elements pick one color each time they're drawnstefanblox