From a6ad4826867497dfb13772dc5f1d2655f50f8a19 Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Sun, 10 Mar 2024 15:26:35 -0500 Subject: [PATCH 01/30] Add files via upload --- mods/modM.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mods/modM.js diff --git a/mods/modM.js b/mods/modM.js new file mode 100644 index 00000000..aeb826cc --- /dev/null +++ b/mods/modM.js @@ -0,0 +1,19 @@ +console.log("run mod") +elements.turbine = { color: "#524945", + behavior: behaviors.WALL + category: "solids", + state: "solid", + density: 720, +}; +elements.coolant = { color: "#16c1db", + behavior: behaviors.WALL + category: "liquids", + state: "liquid", + density: 720, + tempHigh: 1000, +}; +elements.unstable_coolant = { color: "#16c1db", + behavior: behaviors.DGAS, + category: "gases", + state: "gas", +}; \ No newline at end of file From b83e410c627c793ce3b066006ae91ae1b77dcdbe Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Sun, 10 Mar 2024 15:51:49 -0500 Subject: [PATCH 02/30] modM.js --- mods/modM.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mods/modM.js b/mods/modM.js index aeb826cc..53601f84 100644 --- a/mods/modM.js +++ b/mods/modM.js @@ -16,4 +16,17 @@ elements.unstable_coolant = { color: "#16c1db", behavior: behaviors.DGAS, category: "gases", state: "gas", -}; \ No newline at end of file +}; +elements.hello_world = { + color: "#ff0000", + behavior: behaviors.WALL, + category: "land", + state: "solid", +}; + +elements.hello_world = { + color: "#ff0000", + behavior: behaviors.WALL, + category: "land", + state: "solid", +}; From 11b6a4cede4534d35aad8cf501b14d7de7897d4c Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:52:40 -0500 Subject: [PATCH 03/30] Update modM.js --- mods/modM.js | 172 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 149 insertions(+), 23 deletions(-) diff --git a/mods/modM.js b/mods/modM.js index 53601f84..f9d4cf7f 100644 --- a/mods/modM.js +++ b/mods/modM.js @@ -1,32 +1,158 @@ -console.log("run mod") -elements.turbine = { color: "#524945", - behavior: behaviors.WALL - category: "solids", - state: "solid", - density: 720, -}; -elements.coolant = { color: "#16c1db", - behavior: behaviors.WALL - category: "liquids", - state: "liquid", - density: 720, - tempHigh: 1000, -}; -elements.unstable_coolant = { color: "#16c1db", - behavior: behaviors.DGAS, - category: "gases", - state: "gas", -}; -elements.hello_world = { +elements.heatSensor = { color: "#ff0000", - behavior: behaviors.WALL, + conduct: 1, + category:"machines", + tick: function(pixel) { + if (pixel.temp > 430 ) { + pixel.charge = 5; + } + }, + conduct: 1, +}; +let itemA = "steam"; +elements.turbine = { + behavior: behaviors.WALL, + behavior: behaviors.DELETE, + color: "#826c6e", + tick: function(pixel) { + if(pixel.start == pixelTicks){ + pixel.clone = itemA; + } + + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = pixel.x + coords[0]; + var y = pixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var sensed = pixelMap[x][y]; + if (sensed.element == pixel.clone) { + pixel.charge = 5; + break; + } + } + } + doDefaults(pixel); + }, + conduct: 1, + movable: false, + category:"machines", + darkText: true, + hardness: 1, + + }; + + +elements.coal = { + color: "#3d3c39", + behavior: behaviors.POWDER, category: "land", state: "solid", + + tick: function(pixel) { + if (pixel.temp > 900 && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + }, + + tempHigh:2500, + stateHigh: "fire", + hardness: 0.85, + burn: 100, + burnTime: 3500, }; -elements.hello_world = { - color: "#ff0000", +elements.solid_coal = { + color: "#3d3c39", behavior: behaviors.WALL, category: "land", state: "solid", + breakInto: "coal_dust" + + tick: function(pixel) { + if (pixel.temp > 900 && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + }, + + tempHigh:3000, + stateHigh: "fire", + hardness: 0.85, + burn: 100, + burnTime: 3500, }; + + elements.coal_dust = { + color: "#3d3c39", + behavior: behaviors.POWDER, + category: "land", + state: "solid", + + tick: function(pixel) { + if (pixel.temp > 900 && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + }, + + tempHigh:2000, + stateHigh: "fire", + hardness: 0.85, + burn: 100, + burnTime: 3500, +}; + + +elements.gas = { + color: "#c9c5b1", + behavior: behaviors.LIQUID, + tick: function(pixel) { + if (pixel.temp > 430 && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + }, + tempHigh:3000, + stateHigh: "fire", + viscosity: 0.56, + burn: 100, + burnTime: 10000, + fireColor: "#c9c5b1", + category: "liquids", + state: "liquid", + density: 792, + stain: -0.25, +} + +let itemB = "light"; +elements.solar_panel = { + behavior: behaviors.WALL, + behavior: behaviors.DELETE, + color: "#bebfa3", + tick: function(pixel) { + if(pixel.start == pixelTicks){ + pixel.clone = itemB; + } + + for (var i = 0; i < adjacentCoords.length; i++) { + var coords = adjacentCoords[i]; + var x = pixel.x + coords[0]; + var y = pixel.y + coords[1]; + if (!isEmpty(x,y,true)) { + var sensed = pixelMap[x][y]; + if (sensed.element == pixel.clone) { + pixel.charge = 5; + break; + } + } + } + doDefaults(pixel); + }, + conduct: 1, + movable: false, + category:"machines", + darkText: true, + hardness: 1, + + }; From 871d4c8f014d950d533e579a7ea3ee132b780917 Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Mon, 11 Mar 2024 16:16:11 -0500 Subject: [PATCH 04/30] Update modM.js --- mods/modM.js | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/mods/modM.js b/mods/modM.js index f9d4cf7f..d5576a1d 100644 --- a/mods/modM.js +++ b/mods/modM.js @@ -62,26 +62,6 @@ elements.coal = { burnTime: 3500, }; -elements.solid_coal = { - color: "#3d3c39", - behavior: behaviors.WALL, - category: "land", - state: "solid", - breakInto: "coal_dust" - - tick: function(pixel) { - if (pixel.temp > 900 && !pixel.burning) { - pixel.burning = true; - pixel.burnStart = pixelTicks; - } - }, - - tempHigh:3000, - stateHigh: "fire", - hardness: 0.85, - burn: 100, - burnTime: 3500, -}; elements.coal_dust = { color: "#3d3c39", @@ -156,3 +136,26 @@ elements.solar_panel = { hardness: 1, }; + +elements.titanium = { + conduct: 1, + color: "#a1ada5", + tempHigh:3000, + stateHigh: "molten_titanium", + category: "solids", + state: "soild", + hardness: 1, + density: 792, + behavior: behaviors.WALL, +}; + +elements.molten_titanium = { + conduct: 1, + color: "#d16e04", + tempLow:2999, + stateLow: "titanium", + category: "solids", + state: "soild", + density: 792, + behavior: behaviors.MOLTEN, +}; From 1b4118f03f42878b3fda4fad91e594da9f412003 Mon Sep 17 00:00:00 2001 From: JustAGenericUsername Date: Mon, 11 Mar 2024 17:41:35 -0400 Subject: [PATCH 05/30] d --- mods/nousersthings.js | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/nousersthings.js b/mods/nousersthings.js index 00d4aea5..525a40c7 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -2288,7 +2288,6 @@ elements.selective_void = { selvoid = mostSimilarElement(selvoidans); }, tick: function(pixel){ - var neighbors = 0; if(!pixel.changeElem){ pixel.changeElem = selvoid; } From 590d64c4fe4b141389d88578335b3bad736ccdb7 Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:09:24 -0500 Subject: [PATCH 06/30] Update and rename mods/modM.js to ExtraMachines.js --- mods/modM.js => ExtraMachines.js | 42 +++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) rename mods/modM.js => ExtraMachines.js (80%) diff --git a/mods/modM.js b/ExtraMachines.js similarity index 80% rename from mods/modM.js rename to ExtraMachines.js index d5576a1d..056eaf69 100644 --- a/mods/modM.js +++ b/ExtraMachines.js @@ -12,7 +12,7 @@ elements.heatSensor = { let itemA = "steam"; elements.turbine = { behavior: behaviors.WALL, - behavior: behaviors.DELETE, + color: "#826c6e", tick: function(pixel) { if(pixel.start == pixelTicks){ @@ -26,6 +26,7 @@ elements.turbine = { if (!isEmpty(x,y,true)) { var sensed = pixelMap[x][y]; if (sensed.element == pixel.clone) { + deletePixel(x,y); pixel.charge = 5; break; } @@ -45,8 +46,10 @@ elements.turbine = { elements.coal = { color: "#3d3c39", behavior: behaviors.POWDER, - category: "land", + category: "powders", state: "solid", + density: 208, + conduct: 0.001 tick: function(pixel) { if (pixel.temp > 900 && !pixel.burning) { @@ -68,6 +71,9 @@ elements.coal = { behavior: behaviors.POWDER, category: "land", state: "solid", + stain: 1, + density: 190, + conduct: 0.001 tick: function(pixel) { if (pixel.temp > 900 && !pixel.burning) { @@ -78,7 +84,7 @@ elements.coal = { tempHigh:2000, stateHigh: "fire", - hardness: 0.85, + hardness: 0.3, burn: 100, burnTime: 3500, }; @@ -122,6 +128,7 @@ elements.solar_panel = { if (!isEmpty(x,y,true)) { var sensed = pixelMap[x][y]; if (sensed.element == pixel.clone) { + deletePixel(x,y); pixel.charge = 5; break; } @@ -138,7 +145,7 @@ elements.solar_panel = { }; elements.titanium = { - conduct: 1, + conduct: 0, color: "#a1ada5", tempHigh:3000, stateHigh: "molten_titanium", @@ -150,12 +157,35 @@ elements.titanium = { }; elements.molten_titanium = { - conduct: 1, + conduct: 0, color: "#d16e04", tempLow:2999, stateLow: "titanium", - category: "solids", + category: "states", state: "soild", density: 792, behavior: behaviors.MOLTEN, }; + +elements.solid_coal = { + color: "#3d3c39", + behavior: behaviors.WALL, + category: "land", + state: "solid", + breakInto: "coal_dust", + density: 380, + conduct: 0.001 + + tick: function(pixel) { + if (pixel.temp > 900 && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + }, + + tempHigh:3000, + stateHigh: "fire", + hardness: 0.85, + burn: 100, + burnTime: 3500, +}; From 47841aef14e6913a07852e207724e58f340cc028 Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:41:02 -0500 Subject: [PATCH 07/30] Update ExtraMachines.js --- ExtraMachines.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ExtraMachines.js b/ExtraMachines.js index 056eaf69..7cf06243 100644 --- a/ExtraMachines.js +++ b/ExtraMachines.js @@ -49,7 +49,7 @@ elements.coal = { category: "powders", state: "solid", density: 208, - conduct: 0.001 + conduct: 0.001, tick: function(pixel) { if (pixel.temp > 900 && !pixel.burning) { @@ -73,7 +73,7 @@ elements.coal = { state: "solid", stain: 1, density: 190, - conduct: 0.001 + conduct: 0.001, tick: function(pixel) { if (pixel.temp > 900 && !pixel.burning) { @@ -174,7 +174,7 @@ elements.solid_coal = { state: "solid", breakInto: "coal_dust", density: 380, - conduct: 0.001 + conduct: 0.001, tick: function(pixel) { if (pixel.temp > 900 && !pixel.burning) { From f6241a18bc124011fc48093025539a874459641c Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:43:55 -0500 Subject: [PATCH 08/30] Update ExtraMachines.js --- ExtraMachines.js | 1 - 1 file changed, 1 deletion(-) diff --git a/ExtraMachines.js b/ExtraMachines.js index 7cf06243..14d2951e 100644 --- a/ExtraMachines.js +++ b/ExtraMachines.js @@ -114,7 +114,6 @@ elements.gas = { let itemB = "light"; elements.solar_panel = { behavior: behaviors.WALL, - behavior: behaviors.DELETE, color: "#bebfa3", tick: function(pixel) { if(pixel.start == pixelTicks){ From f5f75e067da8a3752c740edf0a20539d370c53aa Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Mon, 11 Mar 2024 20:21:00 -0500 Subject: [PATCH 09/30] Add files via upload all the current elements --- sandboxels-screenshot (1).png | Bin 0 -> 17105 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sandboxels-screenshot (1).png diff --git a/sandboxels-screenshot (1).png b/sandboxels-screenshot (1).png new file mode 100644 index 0000000000000000000000000000000000000000..1dc044631119e1a997fb4783c9e871f3ae1f3e33 GIT binary patch literal 17105 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 Date: Mon, 11 Mar 2024 20:23:13 -0500 Subject: [PATCH 10/30] Update ExtraMachines.js --- ExtraMachines.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ExtraMachines.js b/ExtraMachines.js index 14d2951e..ee52974e 100644 --- a/ExtraMachines.js +++ b/ExtraMachines.js @@ -46,7 +46,7 @@ elements.turbine = { elements.coal = { color: "#3d3c39", behavior: behaviors.POWDER, - category: "powders", + category: "energy", state: "solid", density: 208, conduct: 0.001, @@ -69,7 +69,7 @@ elements.coal = { elements.coal_dust = { color: "#3d3c39", behavior: behaviors.POWDER, - category: "land", + category: "powders", state: "solid", stain: 1, density: 190, @@ -145,7 +145,7 @@ elements.solar_panel = { elements.titanium = { conduct: 0, - color: "#a1ada5", + color: ["#a1ada5","#ebf5ee","#bac2bc","#848a86","#505251"], tempHigh:3000, stateHigh: "molten_titanium", category: "solids", @@ -169,7 +169,7 @@ elements.molten_titanium = { elements.solid_coal = { color: "#3d3c39", behavior: behaviors.WALL, - category: "land", + category: "energy", state: "solid", breakInto: "coal_dust", density: 380, @@ -188,3 +188,13 @@ elements.solid_coal = { burn: 100, burnTime: 3500, }; + +elements.rubber = { + color: "#ffc0cb", + hardness: 0.5, + tempHigh:180, + state: "solid", + behavior: behaviors.WALL, + conduct: 0, + category: "solids", +}; From 76f13837cd4fabd73f1fc4fa541a1496afe42b6d Mon Sep 17 00:00:00 2001 From: Mecoolnotcool <106288499+Mecoolnotcool@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:30:39 -0500 Subject: [PATCH 11/30] Update ExtraMachines.js --- ExtraMachines.js | 230 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 227 insertions(+), 3 deletions(-) diff --git a/ExtraMachines.js b/ExtraMachines.js index ee52974e..b34bf458 100644 --- a/ExtraMachines.js +++ b/ExtraMachines.js @@ -1,10 +1,11 @@ elements.heatSensor = { color: "#ff0000", conduct: 1, - category:"machines", + category:"test", + behavior: behaviors.WALL, tick: function(pixel) { if (pixel.temp > 430 ) { - pixel.charge = 5; + pixel.charge = 1; } }, conduct: 1, @@ -90,7 +91,7 @@ elements.coal = { }; -elements.gas = { +elements.gasoline = { color: "#c9c5b1", behavior: behaviors.LIQUID, tick: function(pixel) { @@ -198,3 +199,226 @@ elements.rubber = { conduct: 0, category: "solids", }; + +elements.coolant = { + color: "#71ded3", + state: "liquid", + behavior: behaviors.LIQUID, + behavior: [ + "XX|CO:2|XX", + "CO:2|XX|CO:2", + "XX|CO:2|XX", + ], + conduct: 0.5, + category: "test", + +}; + +elements.e_cooler = { + color: elements.cooler.color, + hardness: 0.5, + state: "solid", + behavior: behaviors.WALL, + conduct: 1, + category: "machines", + behaviorOn: [ + "XX|CO:2|XX", + "CO:2|XX|CO:2", + "XX|CO:2|XX", + ], + name: "E-Cooler", +}; + +elements.e_Freezer = { + color: elements.cooler.color, + hardness: 0.5, + state: "solid", + behavior: behaviors.WALL, + conduct: 1, + category: "machines", + behaviorOn: [ + "XX|CO:10|XX", + "CO:10|XX|CO:10", + "XX|CO:10|XX", + ], + name: "E-Freezer", +}; + +elements.e_heater = { + hardness: 0.5, + state: "solid", + behavior: behaviors.WALL, + conduct: 1, + category: "machines", + color: "#881111", + behaviorOn: [ + "XX|HT:4|XX", + "HT:4|XX|HT:4", + "XX|HT:4|XX", + ], + name: "E-Heater", +}; + +elements.e_SuperHeater = { + hardness: 0.5, + state: "solid", + behavior: behaviors.WALL, + conduct: 1, + category: "machines", + color: "#881111", + behaviorOn: [ + "XX|HT:12|XX", + "HT:12|XX|HT:12", + "XX|HT:12|XX", + ], + name: "E-SuperHeater", +}; + +elements.slow_Ecloner = { + color: "#888800", + behavior: behaviors.WALL, + behaviorOn: [ + "XX|CF%10|XX", + "CF%10|XX|CF%10", + "XX|CF%10|XX", + ], + ignore: ["cloner","ecloner","clone_powder","floating_cloner","wall","ewall","turbine","solar_panel"], + category:"machines", + insulate:true, + hardness: 1, + conduct: 1, + name: "E-SlowCloner", +}; + +elements.Android = { + color: ["#a1ada5","#ebf5ee","#bac2bc","#848a86","#505251"], + category: "life", + color: ["#f3e7db","#f7ead0","#eadaba","#d7bd96","#a07e56","#825c43","#604134","#3a312a"], + category: "life", + properties: { + dead: false, + dir: 1, + panic: 0 + }, + tick: function(pixel) { + if (isEmpty(pixel.x, pixel.y+1)) { + createPixel("AndroidBody", pixel.x, pixel.y+1); + pixel.element = "AndroidHead"; + } + else if (isEmpty(pixel.x, pixel.y-1)) { + createPixel("AndroidHead", pixel.x, pixel.y-1); + pixelMap[pixel.x][pixel.y-1].color = pixel.color; + pixel.element = "AndroidBody"; + pixel.color = pixelColorPick(pixel) + } + else { + deletePixel(pixel.x, pixel.y); + } + }, + related: ["AndroidBody","AndroidHead"], + cooldown: defaultCooldown +}; + + +elements.AndroidBody = { + color: ["#a1ada5","#ebf5ee","#bac2bc","#848a86","#505251"], + category: "life", + breakInto: ["oil","metal_scrap","explosion"], + properties: { + dead: false, + dir: 1, + panic: 0 + }, + tick: function(pixel) { + if (tryMove(pixel, pixel.x, pixel.y+1)) { // Fall + if (!isEmpty(pixel.x, pixel.y-2, true)) { // Drag head down + var headpixel = pixelMap[pixel.x][pixel.y-2]; + if (headpixel.element == "AndroidHead") { + if (isEmpty(pixel.x, pixel.y-1)) { + movePixel(pixelMap[pixel.x][pixel.y-2], pixel.x, pixel.y-1); + } + else { + swapPixels(pixelMap[pixel.x][pixel.y-2], pixelMap[pixel.x][pixel.y-1]); + } + } + } + } + doHeat(pixel); + doBurning(pixel); + doElectricity(pixel); + if (pixel.dead) { + // Turn into rotten_meat if pixelTicks-dead > 500 + if (pixelTicks-pixel.dead > 200 && Math.random() < 0.1) { + changePixel(pixel,"rotten_meat"); + } + return + } + + // Find the head + if (!isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "AndroidHead") { + var head = pixelMap[pixel.x][pixel.y-1]; + if (head.dead) { // If head is dead, kill body + pixel.dead = head.dead; + } + } + else { var head = null } + if (pixel.burning) { + pixel.panic += 0.1; + if (head && pixelTicks-pixel.burnStart > 240) { + pixel.color = head.color; + } + } + else if (pixel.panic > 0) { + pixel.panic -= 0.1; + } + + if (isEmpty(pixel.x, pixel.y-1)) { + // create blood if decapitated 10% chance + if (Math.random() < 0.1 && !pixel.charge) { + createPixel("oil", pixel.x, pixel.y-1); + // set dead to true 15% chance + if (Math.random() < 0.15) { + pixel.dead = pixelTicks; + } + } + } + else if (head == null) { return } + else if (Math.random() < 0.1*(isEmpty(pixel.x, pixel.y+1) ? 1 : pixel.panic+1)) { // Move 10% chance + var movesToTry = [ + [1*pixel.dir,0], + [1*pixel.dir,-1], + ]; + // While movesToTry is not empty, tryMove(pixel, x, y) with a random move, then remove it. if tryMove returns true, break. + while (movesToTry.length > 0) { + var move = movesToTry.splice(Math.floor(Math.random() * movesToTry.length), 1)[0]; + if (isEmpty(pixel.x+move[0], pixel.y+move[1]-1)) { + var origx = pixel.x+move[0]; + var origy = pixel.y+move[1]; + if (tryMove(pixel, pixel.x+move[0], pixel.y+move[1]) && pixel.x===origx && pixel.y===origy) { + movePixel(head, head.x+move[0], head.y+move[1]); + break; + } + } + } + // 15% chance to change direction + if (Math.random() < 0.15) { + pixel.dir *= -1; + } + // homeostasis + if (pixel.temp > 37) { pixel.temp -= 1; } + else if (pixel.temp < 37) { pixel.temp += 1; } + } + + } +}; + +elements.AndroidHead = { + color: ["#a1ada5","#ebf5ee","#bac2bc","#848a86","#505251"], + category: "life", + density: 1080, + state: "solid", + conduct: .05, + temp: 69, + breakInto: ["oil","metal_scrap","explosion"], +}; + From ad5f3935761d33f8dc2fd251bf9d5bb7fee8fd7b Mon Sep 17 00:00:00 2001 From: Alexthetransfem <124483815+theenchantedsword@users.noreply.github.com> Date: Wed, 13 Mar 2024 19:56:12 -0500 Subject: [PATCH 12/30] Update plants.js --- mods/plants.js | 499 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 495 insertions(+), 4 deletions(-) diff --git a/mods/plants.js b/mods/plants.js index 23a68e1b..9faf5a52 100644 --- a/mods/plants.js +++ b/mods/plants.js @@ -1,9 +1,10 @@ -//This mod was made by Adora the transfem, https://discord.com/users/778753696804765696 on discord and https://www.tiktok.com/@alextheagenenby?_t=8hoCVI3NRhu&_r=1 on tiktok. -let fruits = ["plum", "peach", "pear", "orange", "apple", "cherry", "mango"]; +//This mod was made by Adora the transfem, https://discord.com/users/778753696804765696 on discord and https://www.tiktok.com/@alextheagenenby?_t=8hoCVI3NRhu&_r=1 on tiktok. Current version: plans.js v1.1.0 +let fruits = ["plum", "peach", "pear", "orange", "apple", "cherry", "mango", "pineapple", "sugarcane"]; let vineExclude = ["tomato", "grape", "fruit_vine", "kiwi"]; -let vines = ['tomato', 'grape', 'kiwi']; +let vines = ['tomato', 'grape', 'kiwi', 'watermelon', 'strawberry', 'cucumber']; let bushes = ["blackberry", "blueberry", "raspberry"]; let allFruits = fruits.concat(vines, bushes) +let rosaceae = ["plum", "peach", "pear", "apple", "cherry", "blackberry", "raspberry", "strawberry"] function interpolateRgb(rgb1, rgb2, ratio) { const interpolatedRgb = { r: Math.round(rgb1.r + (rgb2.r - rgb1.r) * ratio), @@ -89,7 +90,7 @@ elements.fruit_leaves = { let y = pixel.y+adjacentCoords[i][1]; if(isEmpty(x, y) || outOfBounds(x, y)) { continue; } let pixel2 = pixelMap[x][y]; - if(pixel2.element == "fruit_branch" || pixel2.element == "fruit_leaves" || pixel2.element == "wood" || (elements[pixel2.element].properties && elements[pixel2.element].properties.type == "fruit")){ + if(pixel2.element == "fruit_branch" || pixel2.element == "fruit_leaves" || pixel2.element == "wood" || (elements[pixel2.element].properties && elements[pixel2.element].properties.type == "fruit") && pixel2.fruit != "pineapple"){ if(pixel.fruit && !pixel2.fruit){ pixel2.fruit = pixel.fruit; } else if (!pixel.fruit && pixel2.fruit){ @@ -110,6 +111,24 @@ elements.fruit_leaves = { } } } + if(pixel.fruit == "pineapple" && isEmpty(pixel.x, pixel.y-1) && !outOfBounds(pixel.x, pixel.y-1) && pixel.age < 300){ + pixel.blooming = false; + pixel.color = elements.plant.color; + createPixel("unripe_fruit", pixel.x, pixel.y-1); + if(isEmpty(pixel.x, pixel.y-2)){ + createPixel("unripe_fruit", pixel.x, pixel.y-2); + } + if(isEmpty(pixel.x, pixel.y-3)){ + createPixel("fruit_leaves", pixel.x, pixel.y-3); + } + if(isEmpty(pixel.x-1, pixel.y-4)){ + createPixel("fruit_leaves", pixel.x-1, pixel.y-4); + } + if(isEmpty(pixel.x+1, pixel.y-4)){ + createPixel("fruit_leaves", pixel.x+1, pixel.y-4); + } + } + pixel.age++; } } @@ -1066,6 +1085,8 @@ elements.mango_seed = { elements.seed_maker = { category: "machines", behavior: behaviors.WALL, + noMix: true, + movable: false, tick: function(pixel){ for(var i = 0; i < adjacentCoords.length; i++){ let x = pixel.x + adjacentCoords[i][0]; @@ -1074,8 +1095,478 @@ elements.seed_maker = { let pixel2 = pixelMap[x][y]; if(allFruits.includes(pixel2.element)){ changePixel(pixel2, `${pixel2.element}_seed`) + } else if (pixel2.element == "cocoa_pod"){ + changePixel(pixel2, "cocoa_bean"); } } } } } +function xyInRange(x, y, range){ + let i = 0; + while (i < range.length) { + if (x === range[i][0] && y === range[i][1]) { + i++; + return true; + } else { + i++; + } + + } + return false; + +} +elements.watermelon = { + behavior: behaviors.WALL, + color: "#007706", + category: "food", + breakInto: "juice", + breakIntoColor: "#C1674C", + isFood: true, + properties: { + type: "fruit", + age: 0, + }, + tick: function(pixel){ + if(pixel.grow && pixel.age > 400){ + pixel.grow = false; + } + if(pixel.grow && pixel.range){ + for(var i = 0; i < adjacentCoords.length; i++){ + let x = pixel.x + adjacentCoords[i][0]; + let y = pixel.y + adjacentCoords[i][1]; + if(isEmpty(x,y) && xyInRange(x,y,pixel.range) && !outOfBounds(x,y)){ + if(Math.floor(Math.random() * 300) == 1){ + createPixel("watermelon", x, y); + } + } + + } + for(var i = 0; i < adjacentCoords.length; i++){ + let x = pixel.x + adjacentCoords[i][0]; + let y = pixel.y + adjacentCoords[i][1]; + if(!isEmpty(x,y) && !outOfBounds(x,y)){ + let pixel2 = pixelMap[x][y]; + if(["wood","low_fruit_vine","watermelon"].includes(pixel.element)){ + if(!pixel2.range || !pixel2.grow){ + if(pixel.range && !pixel2.range){ + pixel2.range = pixel.range; + } + if(pixel.grow && !pixel2.grow){ + pixel2.grow = pixel.grow; + } + } + if(pixel2.range || pixel2.grow){ + if(!pixel.range && pixel2.range){ + pixel.range = pixel2.range; + } + if(!pixel.grow && pixel2.grow){ + pixel.grow = pixel2.grow; + } + } + } + } + } + } + pixel.age++; + } +} +let sizes = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 9] +elements.low_fruit_vine = { + color: elements.fruit_vine.color, + behavior: behaviors.WALL, + tick: function(pixel){ + if(pixel.fruiting && pixel.fruit == "watermelon"){ + pixel.fruiting = false; + let size = pixel.size; + let range = mouseRange(pixel.x, pixel.y + Math.floor(size / 2 + 1), size) + if(isEmpty(pixel.x, pixel.y + 1) && !outOfBounds(pixel.x, pixel.y + 1)){ + createPixel("watermelon", pixel.x, pixel.y + 1); + let pixel2 = pixelMap[pixel.x][pixel.y + 1]; + pixel2.range = range; + pixel2.grow = true; + } + } else { + if(isEmpty(pixel.x, pixel.y - 1) && !outOfBounds(pixel.x, pixel.y - 1) && Math.floor(Math.random() * 300) == 1 && pixel.fruit && ![undefined, "watermelon"].includes(pixel.fruit)){ + createPixel(pixel.fruit, pixel.x, pixel.y - 1); + } + } + if(Math.floor(Math.random() * 100) == 1 && !["watermelon", undefined].includes(pixel.fruit)){ + eval((Math.floor(Math.random() * 2) == 1) ? ` + if(isEmpty(pixel.x + 1, pixel.y)){ + createPixel("low_fruit_vine", pixel.x + 1, pixel.y); + pixelMap[pixel.x + 1][pixel.y].fruit = pixel.fruit; + }` + : ` + if(isEmpty(pixel.x - 1, pixel.y)){ + createPixel("low_fruit_vine", pixel.x - 1, pixel.y); + pixelMap[pixel.x - 1][pixel.y].fruit = pixel.fruit; + }` + ) + } + } +} +let sizeObj = { + size3: [ + [0,1], + [0,2], + [1,3], + [2,3] + ], + size5:[ + [0,1], + [0,2], + [0,3], + [0,4], + [1,5], + [2,5], + [3,5], + ], + size7: [ + [0,1], + [0,2], + [0,3], + [0,4], + [0,5], + [0,6], + [1,7], + [2,7], + [3,7], + [4,7], + ], + size9: [ + [0,1], + [0,2], + [0,3], + [0,4], + [0,5], + [0,6], + [0,7], + [0,8], + [1,9], + [2,9], + [3,9], + [4,9], + [5,9], + ] +} +elements.watermelon_seed = { + color: "#231A00", + category: "life", + behavior: behaviors.STURDYPOWDER, + tick: function(pixel){ + if(pixel.start == pixelTicks - 10){ + pixel.size = sizes[Math.floor(Math.random() * sizes.length)]; + pixel.direction = Math.floor(Math.random() * 2) + pixel.grow = true; + } + if(pixel.grow && !isEmpty(pixel.x,pixel.y+1) && !outOfBounds(pixel.x,pixel.y+1) && pixelMap[pixel.x][pixel.y + 1].element == "dirt" && pixel.age > 100){ + pixel.fruit = "watermelon"; + let sizeList = sizeObj[`size${pixel.size}`]; + for(var i = 0; i < sizeList.length; i++){ + let x = (pixel.direction == 1) ? pixel.x - sizeList[i][0] : pixel.x + sizeList[i][0]; + let y = pixel.y - sizeList[i][1]; + if(isEmpty(x, y) && !outOfBounds(x, y)){ + createPixel("low_fruit_vine", x, y); + if(i == sizeList.length - 1){ + pixelMap[x][y].fruiting = true; + pixelMap[x][y].size = pixel.size; + pixelMap[x][y].fruit = "watermelon"; + changePixel(pixel,"low_fruit_vine"); + } + } + } + } + pixel.age++; + }, + properties: { + age: 0, + }, +} +elements.strawberry = { + behavior: behaviors.POWDER, + color: "#e5080a", + category: "food", + breakInto: "juice", + breakIntoColor: "#f9c0af", + isFood: true, + properties: { + type: "fruit", + age: 0, + }, +} +elements.strawberry_seed = { + color: "#ffa371", + behavior: behaviors.STURDYPOWDER, + category: "life", + properties: { + age: 0, + }, + tick: function(pixel){ + if(pixel.age > 40){ + changePixel(pixel, "low_fruit_vine"); + pixel.fruit = "strawberry"; + } + pixel.age += 1; + } +} +elements.cucumber = { + behavior: behaviors.POWDER, + color: "#285a1b", + category: "food", + breakInto: "juice", + breakIntoColor: "#80b450", + isFood: true, + properties: { + type: "fruit", + age: 0, + }, +} +let ages = { + pineapple: 140, +} +elements.cucumber_seed = { + color: "#e9f5b5", + behavior: behaviors.STURDYPOWDER, + category: "life", + properties: { + age: 0, + }, + tick: function(pixel){ + if(pixel.age > 40){ + changePixel(pixel, "low_fruit_vine"); + pixel.fruit = "cucumber"; + } + pixel.age += 1; + } +} +elements.unripe_fruit = { + color: "#9eba32", + behavior: behaviors.WALL, + category: "life", + properties: { + age: 0, + fruit: "pineapple", + }, + tick: function(pixel){ + if(pixel.age >= ages[pixel.fruit] && Math.floor(Math.random() * 100) == 1){ + changePixel(pixel, pixel.fruit); + } + pixel.age++; + }, + breakInto: ["poison", "juice", "cyanide"], + breakIntoColor: "#9eba32", +} +elements.pineapple = { + behavior: [["XX", "ST:fruit_leaves", "XX"],["ST:fruit_leaves", "XX", "ST:fruit_leaves"],["M2", "ST:fruit_leaves AND M1", "M2"]], + color: ["#ffcc56", "#e69f05", "#ffc061", "#fad32b"], + category: "food", + breakInto: "juice", + breakIntoColor: "#ffd905", + isFood: true, + properties: { + type: "fruit", + age: 0, + }, +} +elements.pineapple_seed = { + color: "#7b2700", + behavior: behaviors.STURDYPOWDER, + category: "life", + properties: { + age: 0, + }, + tick: function(pixel){ + if(pixel.age > 40){ + changePixel(pixel, "fruit_leaves"); + pixel.fruit = "pineapple"; + } + pixel.age += 1; + } +} +elements.cocoa_pod = { + behavior: [["XX", "ST:fruit_leaves AND ST:fruit_branch", "XX"],["ST:fruit_leaves AND ST:fruit_branch", "XX", "ST:fruit_leaves AND ST:fruit_branch"],["M2", "ST:fruit_leaves AND ST:fruit_branch AND M1", "M2"]], + color: "#9e5648", + category: "food", + breakInto: ["cocoa_butter", "cocoa_bean"], + isFood: true, + properties: { + fruit: "cocoa_pod", + type: "fruit", + } +} +elements.cocoa_bean = { + behavior: behaviors.POWDER, + color: "#ebaf7b", + category: "food", + isFood: true, + properties: { + fruit: "cocoa_pod", + type: "fruit", + age: 0, + }, + tempHigh: 122, + stateHigh: "roasted_cocoa_bean", + tick: function(pixel) { + if (isEmpty(pixel.x,pixel.y+1)) { + movePixel(pixel,pixel.x,pixel.y+1); + } + else { + if (Math.random() < 0.02 && pixel.age > 650 && pixel.temp < 120) { + if (!outOfBounds(pixel.x,pixel.y+1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { + changePixel(dirtPixel,"root"); + } + } + if (isEmpty(pixel.x,pixel.y-1)) { + movePixel(pixel,pixel.x,pixel.y-1); + createPixel(Math.random() > 0.5 ? "wood" : "fruit_branch",pixel.x,pixel.y+1); + if (pixelMap[pixel.x][pixel.y+1].element == "fruit_branch" || pixelMap[pixel.x][pixel.y+1].element == "fruit_leaves"){ + pixelMap[pixel.x][pixel.y+1].fruit = "cocoa_pod"; + } + } + } + else if (pixel.age > 1650) { + changePixel(pixel,"wood"); + } + pixel.age++; + } + doDefaults(pixel); + }, +} + +elements.cocoa_butter = { + behavior: behaviors.STURDYPOWDER, + color: "#ddc996", + category: "food", + isFood: true, + tempHigh: 30, + stateHigh: "melted_cocoa_butter", +} +elements.melted_cocoa_butter = { + behavior: behaviors.LIQUID, + color: "#c78b06", + category: "states", + isFood: true, + viscosity: 2000, + tempLow: 30, + stateLow: "cocoa_butter", + temp: 30, + reactions: { + sugar: { elem1: "melted_white_chocolate", elem2: "melted_white_chocolate" } + } +} +elements.roasted_cocoa_bean = { + behavior: behaviors.POWDER, + color: "#6b3b24", + category: "food", + isFood: true, + breakInto: "cocoa_powder", +} +elements.cocoa_powder = { + behavior: behaviors.POWDER, + color: "#451f16", + category: "food", + isFood: true, + reactions: { + melted_cocoa_butter: { elem1: "chocolate", elem2: "chocolate" } + } +} +elements.extractor = { + category: "machines", + noMix: true, + movable: false, + behavior: behaviors.WALL, + tick: function(pixel){ + for(var i = 0; i < adjacentCoords.length; i++){ + let x = pixel.x + adjacentCoords[i][0]; + let y = pixel.y + adjacentCoords[i][1] + if(!isEmpty(x,y) && !outOfBounds(x,y)){ + let pixel2 = pixelMap[x][y]; + if (pixel2.element == "cocoa_pod"){ + changePixel(pixel2, "cocoa_butter"); + } else if (pixel2.element == "sugarcane"){ + changePixel(pixel2, "sugar"); + } + } + } + } +} +elements.white_chocolate = { + "color": "#f4e6cb", + "behavior": [ + [ + "XX", + "XX", + "XX" + ], + [ + "XX", + "XX", + "XX" + ], + [ + "XX", + "M1", + "XX" + ] + ], + "tempHigh": 31, + "stateHigh": "melted_white_chocolate", + "category": "food", + "state": "solid", + "density": 1325, + "isFood": true, + "movable": true + } +elements.melted_white_chocolate = { + behavior: behaviors.LIQUID, + "color": "#f2d184", + "tempLow": 0, + "stateLow": "white_chocolate", + "tempHigh": 99, + "stateHigh": [ + "steam", + "sugar" + ], + "category": "states", + "viscosity": 40, + "state": "liquid", + "density": 1325, + "hidden": true, + "stain": 0.05, + "isFood": true, + "movable": true + } +elements.sugarcane_seed = { + color: "#c4ae7d", + behavior: behaviors.STURDYPOWDER, + category: "life", + properties: { + age: 0, + }, + tick: function(pixel){ + if(isEmpty(pixel.x, pixel.y-1) && !outOfBounds(pixel.x, pixel.y-1) && Math.floor(Math.random() * 100) == 1 && pixel.age > 40){ + movePixel(pixel,pixel.x,pixel.y-1); + createPixel("sugarcane",pixel.x,pixel.y+1); + } else if (!isEmpty(pixel.x, pixel.y-1) && !outOfBounds(pixel.x, pixel.y-1) && pixelMap[pixel.x][pixel.y-1].element == "sugarcane_seed"){ + deletePixel(pixel.x, pixel.y-1); + } + if(!pixel.age){ + pixel.age = 1; + } else { + pixel.age++; + } + if(pixel.age == 550){ + changePixel(pixel, "sugarcane") + } + } +} +elements.sugarcane = { + color: "#76881c", + breakInto: ["sugar_water", "dead_plant", "dead_plant", "dead_plant"], + isFood: true, + behavior: behaviors.WALL, + category: "food", +} From 5f729880ebdcbf813479ecefdf90c08010777c13 Mon Sep 17 00:00:00 2001 From: GachaYTB Date: Sat, 16 Mar 2024 15:57:42 +0100 Subject: [PATCH 13/30] fix french errors --- lang/fr.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lang/fr.json b/lang/fr.json index 535e7179..da9fc257 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -10,10 +10,10 @@ "weapons":"Armes", "gases":"Des gaz", "food":"Nourriture", -"machines":"Usiner", +"machines":"Machines", "special":"Spécial", "other":"Autre", -"heat":"Chaleur", +"heat":"Réchauffer", "cool":"Refroidir", "erase":"Effacer", "drag":"Traîner", @@ -21,7 +21,7 @@ "mix":"Mélanger", "lookup":"Chercher", "shock":"Choc", -"paint":"Peinture", +"paint":"Peindre", "sand":"Sable", "water":"Eau", "salt_water":"Eau salée", @@ -32,14 +32,14 @@ "dirt":"Saleté", "mud":"Boue", "wet_sand":"Sable mouillé", -"rock":"Rocher", +"rock":"Roche", "rock_wall":"Mur en pierre", "mudstone":"Argile", "packed_sand":"Sable compacté", -"plant":"Usine", +"plant":"Plante", "dead_plant":"Plante morte", "frozen_plant":"Plante gelée", -"grass":"Gazon", +"grass":"Herbe", "algae":"Algues", "concrete":"Béton", "wall":"Mur", @@ -68,13 +68,13 @@ "molten_salt":"Sel dissous", "sugar":"Sucre", "flour":"Farine", -"wire":"Fil", +"wire":"Cable", "battery":"Batterie", "cloner":"Cloneur", "sensor":"Capteur", "heater":"Chauffage", -"cooler":"glacière", -"random":"aléatoire", +"cooler":"Glacière", +"random":"Aléatoire", "image":"Image", "unpaint":"Dépeindre", "uncharge":"Décharger", @@ -83,7 +83,7 @@ "filler":"Remplisseur", "lattice":"Treillis", "gravel":"Gravier", -"slime":"Vase", +"slime":"Slime", "cement":"Ciment", "dust":"Poussière", "void":"Vide", @@ -102,12 +102,12 @@ "hive":"Ruche", "bee":"Abeille", "stink_bug":"Punaise", -"dead_bug":"Bug mort", +"dead_bug":"Insecte mort", "human":"Humain", "body":"Corps", "head":"Tête", "bird":"Oiseau", -"rat":"Manger", +"rat":"Rat", "frog":"Grenouille", "frozen_frog":"Grenouille congelée", "tadpole":"Têtard", @@ -119,7 +119,7 @@ "superheater":"Surchauffeur", "freezer":"Congélateur", "pipe":"Tuyau", -"pipe_wall":"Mur_tuyau", +"pipe_wall":"Mur tuyau", "ewall":"Mur électronique", "torch":"Torche", "spout":"Pec", @@ -129,7 +129,7 @@ "balloon":"Ballon", "antipowder":"Antipoudre", "antimolten":"Antifondu", -"antifire":"Anti-incendie", +"antifire":"Anti-feu", "antifluid":"Antifluide", "antigas":"Antigaz", "vertical":"Verticale", From 973da054e78fc765c878efaf2809690f13067157 Mon Sep 17 00:00:00 2001 From: WoodStuff Date: Sat, 16 Mar 2024 21:47:27 +0100 Subject: [PATCH 14/30] Create nirmod.js --- mods/nirmod.js | 168 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 mods/nirmod.js diff --git a/mods/nirmod.js b/mods/nirmod.js new file mode 100644 index 00000000..bcad6ec8 --- /dev/null +++ b/mods/nirmod.js @@ -0,0 +1,168 @@ +// helper objects for pixel +const cat = { + TOOLS: "tools", + LAND: "land", + LIQUIDS: "liquids", + LIFE: "life", + POWDERS: "powders", + SOLIDS: "solids", + ENERGY: "energy", + WEAPONS: "weapons", + GASES: "gases", + FOOD: "food", + MACHINES: "machines", + SPECIAL: "special", + STATES: "states", +} +const state = { + SOLID: "solid", + LIQUID: "liquid", + GAS: "gas", +} +const bb = { + POWDER_OLD: behaviors.POWDER_OLD, + POWDER: behaviors.POWDER, + AGPOWDER: behaviors.AGPOWDER, + LIQUID_OLD: behaviors.LIQUID_OLD, + LIQUID: behaviors.LIQUID, + SUPERFLUID_OLD: behaviors.SUPERFLUID_OLD, + SUPERFLUID: behaviors.SUPERFLUID, + LIGHTWEIGHT: behaviors.LIGHTWEIGHT, + SLIDE: behaviors.SLIDE, + AGLIQUID: behaviors.AGLIQUID, + WALL: behaviors.WALL, + UL_UR: behaviors.UL_UR, + UL_UR_OPTIMIZED: behaviors.UL_UR_OPTIMIZED, + GAS_OLD: behaviors.GAS_OLD, + GAS: behaviors.GAS, + DGAS: behaviors.DGAS, + SUPPORT: behaviors.SUPPORT, + SUPPORTPOWDER: behaviors.SUPPORTPOWDER, + DELETE: behaviors.DELETE, + FILL: behaviors.FILL, + CLONER: behaviors.CLONER, + STURDYPOWDER: behaviors.STURDYPOWDER, + SELFDELETE: behaviors.SELFDELETE, + FOAM: behaviors.FOAM, + BUBBLE: behaviors.BUBBLE, + STICKY: behaviors.STICKY, + MOLTEN: behaviors.MOLTEN, + RADPOWDER: behaviors.RADPOWDER, + RADMOLTEN: behaviors.RADMOLTEN, + RADLIQUID: behaviors.RADLIQUID, + BOUNCY: behaviors.BOUNCY, + FEEDPIXEL: behaviors.FEEDPIXEL, + KILLPIXEL1: behaviors.KILLPIXEL1, + KILLPIXEL2: behaviors.KILLPIXEL2, + FLY: behaviors.FLY, + CRAWLER: behaviors.CRAWLER, +} + +class Type { + constructor(name) { + this.name = name; + this.color = "#ffffff"; + this.behavior = behaviors.WALL; + this.category = "land"; + this.state = "solid"; + this.hidden = false; + this.density = undefined; + this.tempHigh = undefined; + this.stateHigh = undefined; + this.tempLow = undefined; + this.stateLow = undefined; + this.temp = undefined; + this.reactions = undefined; + this.viscosity = undefined; + } + + setColor(color) { + if (typeof color == "string" && !color.startsWith("#")) color = "#" + color; + this.color = color; + this.colorObject = hexToRGB(color); + } + Add() { + const {...elem} = this; + elements[this.name] = elem; + } +} + +function createPowders() { + const Ni = new Type("nirme"); + Ni.setColor("22b14c"); + Ni.behavior = bb.POWDER; + Ni.category = cat.POWDERS; + Ni.state = state.SOLID; + Ni.density = 1752; + Ni.reactions = { + "water": { elem1: "dull_nirme", elem2: null }, + "salt_water": { elem1: "dull_nirme", elem2: null }, + } + Ni.Add(); + + const DNi = new Type("dull_nirme"); + DNi.setColor("5c916c"); + DNi.behavior = bb.STURDYPOWDER; + DNi.category = cat.STATES; + DNi.state = state.SOLID; + DNi.density = 1752; + DNi.hidden = true; + DNi.Add(); + + const Em = new Type("emerald"); + Em.setColor(["#00f49f", "#2fe094", "#b3ffd6", "#5fd9c5"]); + Em.behavior = bb.POWDER; + Em.category = cat.POWDERS; + Em.state = state.SOLID; + Em.density = 2750; + Em.Add(); +} + +function createMetals() { + const Tg = new Type("thingite"); + Tg.setColor("4f5263"); + Tg.behavior = bb.WALL; + Tg.category = cat.SOLIDS; + Tg.state = state.SOLID; + Tg.density = 9408; + Tg.tempHigh = 700; + Tg.stateHigh = "molten_thingite"; + Tg.Add(); + + const MTg = new Type("molten_thingite"); + MTg.setColor("5f9cba"); + MTg.behavior = bb.MOLTEN; + MTg.category = cat.STATES; + MTg.state = state.LIQUID; + MTg.density = 9408; + MTg.temp = 700; + MTg.tempLow = 600; + MTg.stateLow = "thingite"; + MTg.hidden = true; + MTg.Add(); + + const Or = new Type("orangium"); + Or.setColor("b89256"); + Or.behavior = bb.WALL; + Or.category = cat.SOLIDS; + Or.state = state.SOLID; + Or.density = 12403; + Or.tempHigh = 1600; + Or.stateHigh = "molten_orangium"; + Or.Add(); + + const MOr = new Type("molten_orangium"); + MOr.setColor("cca833"); + MOr.behavior = bb.MOLTEN; + MOr.category = cat.STATES; + MOr.state = state.LIQUID; + MOr.density = 12403; + MOr.temp = 1600; + MOr.tempLow = 1500; + MOr.stateLow = "orangium"; + MOr.hidden = true; + MOr.Add(); +} + +createPowders(); +createMetals(); \ No newline at end of file From 73914fa05b0e9b8a2f3db731ce7d2006aa72d4ed Mon Sep 17 00:00:00 2001 From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com> Date: Sun, 17 Mar 2024 16:04:27 +0800 Subject: [PATCH 15/30] citybuilding.js 1 --- mods/citybuilding.js | 216 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 mods/citybuilding.js diff --git a/mods/citybuilding.js b/mods/citybuilding.js new file mode 100644 index 00000000..e99a655a --- /dev/null +++ b/mods/citybuilding.js @@ -0,0 +1,216 @@ +function building_1_segment() { + if (pixel.foundation = true && pixel.height < pixel.limit) { + if (isEmpty(pixel.x+1,pixel.y-pixel.height) && + isEmpty(pixel.x-1,pixel.y-pixel.height) && + isEmpty(pixel.x+2,pixel.y-pixel.height) && + isEmpty(pixel.x-2,pixel.y-pixel.height) && + isEmpty(pixel.x+2,pixel.y-1-pixel.height) && + isEmpty(pixel.x-2,pixel.y-1-pixel.height) && + isEmpty(pixel.x+1,pixel.y-1-pixel.height) && + isEmpty(pixel.x-1,pixel.y-1-pixel.height) && + isEmpty(pixel.x,pixel.y-1-pixel.height) && + isEmpty(pixel.x,pixel.y-pixel.height)) { + createPixel("glass",pixel.x+1,pixel.y-pixel.height); + createPixel("glass",pixel.x-1,pixel.y-pixel.height); + createPixel("concrete",pixel.x+2,pixel.y-pixel.height); + createPixel("concrete",pixel.x-2,pixel.y-pixel.height); + createPixel("concrete",pixel.x+1,pixel.y-1-pixel.height); + createPixel("concrete",pixel.x-1,pixel.y-1-pixel.height); + createPixel("concrete",pixel.x+2,pixel.y-1-pixel.height); + createPixel("concrete",pixel.x-2,pixel.y-1-pixel.height); + createPixel("concrete",pixel.x,pixel.y-1-pixel.height); + createPixel("concrete",pixel.x,pixel.y-pixel.height); + pixel.height = pixel.height+2 + } + } +} +function filldirt2x5() { + var dirtPixelElem = pixelMap[pixel.x][pixel.y+1]; + if (!isEmpty(pixel.x,pixel.y+1) && !outOfBounds(pixel.x,pixel.y+1)) { + dirtPixelElem = pixelMap[pixel.x][pixel.y+1].element + } + if (isEmpty(pixel.x+1,pixel.y+1)) { + createPixel(dirtPixelElem,pixel.x+1,pixel.y+1); + } + if (isEmpty(pixel.x-1,pixel.y+1)) { + createPixel(dirtPixelElem,pixel.x-1,pixel.y+1); + } + if (isEmpty(pixel.x+2,pixel.y+1)) { + createPixel(dirtPixelElem,pixel.x+2,pixel.y+1); + } + if (isEmpty(pixel.x-2,pixel.y+1)) { + createPixel(dirtPixelElem,pixel.x-2,pixel.y+1); + } + if (isEmpty(pixel.x+2,pixel.y+2)) { + createPixel(dirtPixelElem,pixel.x+2,pixel.y+2); + } + if (isEmpty(pixel.x-2,pixel.y+2)) { + createPixel(dirtPixelElem,pixel.x-2,pixel.y+2); + } +} +elements.building_1 = { + color: "#a78d38", + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1)) { + if (isEmpty(pixel.x+1,pixel.y) && + isEmpty(pixel.x-1,pixel.y) && + isEmpty(pixel.x+2,pixel.y) && + isEmpty(pixel.x-2,pixel.y) && + isEmpty(pixel.x+2,pixel.y-1) && + isEmpty(pixel.x-2,pixel.y-1) && + isEmpty(pixel.x+1,pixel.y-1) && + isEmpty(pixel.x-1,pixel.y-1) && + isEmpty(pixel.x,pixel.y-1) && + isEmpty(pixel.x+2,pixel.y-2) && + isEmpty(pixel.x-2,pixel.y-2) && + isEmpty(pixel.x+1,pixel.y-2) && + isEmpty(pixel.x-1,pixel.y-2) && + isEmpty(pixel.x,pixel.y-2)) { + filldirt2x5(); + movePixel(pixel,pixel.x,pixel.y-1); + createPixel("concrete",pixel.x+1,pixel.y+1); + createPixel("concrete",pixel.x-1,pixel.y+1); + createPixel("concrete",pixel.x+2,pixel.y+1); + createPixel("concrete",pixel.x-2,pixel.y+1); + createPixel("wood",pixel.x,pixel.y+1); + pixel.limit = 10 + Math.floor(Math.random() * 5)*2; + createPixel("concrete",pixel.x+1,pixel.y); + createPixel("concrete",pixel.x-1,pixel.y); + createPixel("concrete",pixel.x+2,pixel.y); + createPixel("concrete",pixel.x-2,pixel.y); + createPixel("concrete",pixel.x+1,pixel.y-1); + createPixel("concrete",pixel.x-1,pixel.y-1); + createPixel("concrete",pixel.x+2,pixel.y-1); + createPixel("concrete",pixel.x-2,pixel.y-1); + createPixel("concrete",pixel.x,pixel.y-1); + pixel.foundation = true; + pixel.height = pixel.height+2 + } + } + if (pixel.foundation == true && pixel.height < pixel.limit) { + building_1_segment(); + } + else if (pixel.foundation == true && pixel.height >= pixel.limit) { + pixel.built = true; + } + if (pixel.built == true) { + changePixel(pixel,"wood"); + } + doDefaults(pixel); + }, + properties: { + height:0, + limit:0, + foundation:false, + built:false + }, + category: "citybuilding", + state: "solid", + density: 1500, + cooldown: defaultCooldown, + seed: true, + maxSize: 1, + excludeRandom: true, + behavior: behaviors.STURDYPOWDER, +}; +elements.building_1_tall = { + color: "#d9c243", + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1)) { + if (isEmpty(pixel.x+1,pixel.y) && + isEmpty(pixel.x-1,pixel.y) && + isEmpty(pixel.x+2,pixel.y) && + isEmpty(pixel.x-2,pixel.y) && + isEmpty(pixel.x+2,pixel.y-1) && + isEmpty(pixel.x-2,pixel.y-1) && + isEmpty(pixel.x+1,pixel.y-1) && + isEmpty(pixel.x-1,pixel.y-1) && + isEmpty(pixel.x,pixel.y-1) && + isEmpty(pixel.x+2,pixel.y-2) && + isEmpty(pixel.x-2,pixel.y-2) && + isEmpty(pixel.x+1,pixel.y-2) && + isEmpty(pixel.x-1,pixel.y-2) && + isEmpty(pixel.x,pixel.y-2)) { + filldirt2x5(); + movePixel(pixel,pixel.x,pixel.y-1); + createPixel("concrete",pixel.x+1,pixel.y+1); + createPixel("concrete",pixel.x-1,pixel.y+1); + createPixel("concrete",pixel.x+2,pixel.y+1); + createPixel("concrete",pixel.x-2,pixel.y+1); + createPixel("wood",pixel.x,pixel.y+1); + pixel.limit = 15 + Math.floor(Math.random() * 10)*2; + createPixel("concrete",pixel.x+1,pixel.y); + createPixel("concrete",pixel.x-1,pixel.y); + createPixel("concrete",pixel.x+2,pixel.y); + createPixel("concrete",pixel.x-2,pixel.y); + createPixel("concrete",pixel.x+1,pixel.y-1); + createPixel("concrete",pixel.x-1,pixel.y-1); + createPixel("concrete",pixel.x+2,pixel.y-1); + createPixel("concrete",pixel.x-2,pixel.y-1); + createPixel("concrete",pixel.x,pixel.y-1); + pixel.foundation = true; + pixel.height = pixel.height+2 + } + } + if (pixel.foundation == true && pixel.height < pixel.limit) { + building_1_segment(); + } + else if (pixel.foundation == true && pixel.height >= pixel.limit) { + pixel.built = true; + } + if (pixel.built == true) { + changePixel(pixel,"wood"); + } + doDefaults(pixel); + }, + properties: { + height:0, + limit:0, + foundation:false, + built:false + }, + category: "citybuilding", + state: "solid", + density: 1500, + cooldown: defaultCooldown, + seed: true, + maxSize: 1, + excludeRandom: true, + behavior: behaviors.STURDYPOWDER, +}; +elements.small_tree_1 = { + color: "#4bd943", + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1)) { + if (isEmpty(pixel.x+1,pixel.y-1) && + isEmpty(pixel.x-1,pixel.y-1) && + isEmpty(pixel.x,pixel.y-1) && + isEmpty(pixel.x+1,pixel.y-2) && + isEmpty(pixel.x-1,pixel.y-2) && + isEmpty(pixel.x,pixel.y-2) && + isEmpty(pixel.x+1,pixel.y-3) && + isEmpty(pixel.x-1,pixel.y-3) && + isEmpty(pixel.x,pixel.y-3)) { + createPixel("wood",pixel.x,pixel.y-1); + createPixel("wood",pixel.x,pixel.y-2); + createPixel("plant",pixel.x,pixel.y-3); + createPixel("plant",pixel.x-1,pixel.y-1); + createPixel("plant",pixel.x-1,pixel.y-2); + createPixel("plant",pixel.x-1,pixel.y-3); + createPixel("plant",pixel.x+1,pixel.y-1); + createPixel("plant",pixel.x+1,pixel.y-2); + createPixel("plant",pixel.x+1,pixel.y-3); + changePixel(pixel,"wood"); + } + } + doDefaults(pixel); + }, + category: "citybuilding", + state: "solid", + density: 1500, + cooldown: defaultCooldown, + seed: true, + maxSize: 1, + excludeRandom: true, + behavior: behaviors.STURDYPOWDER, +}; From be82d4ee7a481ba93dc8d924ab03c7fd2e936c9a Mon Sep 17 00:00:00 2001 From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com> Date: Sun, 17 Mar 2024 16:07:32 +0800 Subject: [PATCH 16/30] mod list --- mod-list.html | 1 + 1 file changed, 1 insertion(+) diff --git a/mod-list.html b/mod-list.html index e4121d69..f5b2b470 100644 --- a/mod-list.html +++ b/mod-list.html @@ -249,6 +249,7 @@ all_around_fillers.jsAdds directional Filler variantsidk73248 allliquids.jsMade all elements liquidsAdora amogus.jsAdds a small amogus structureAlice +citybuilding.jsAdds seeds that create miniature buildings and other city-related itemsSquareScreamYT collab_mod.jsCreated by multiple people, adds random thingsmrapple, ilikepizza, stefanblox elem3.jsAdds all elements and combinations from Elemental 3 [Very Large]Sophie funny elements 2022-11-15.jsAdds a few curated randomly-generated elementsAlice From f786d9842b81d8e8959f3e0522306762fed99503 Mon Sep 17 00:00:00 2001 From: JustAGenericUsername Date: Sun, 17 Mar 2024 12:51:06 -0400 Subject: [PATCH 17/30] this looks good --- mods/heatglow.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/heatglow.js b/mods/heatglow.js index 3f2cbd6d..99824fb4 100644 --- a/mods/heatglow.js +++ b/mods/heatglow.js @@ -1,3 +1,6 @@ +function weightedAverage(num1, num2, weight){ + return ((weight * num1)+((1-weight)*num2)) +} const heatfunc = function(pixel){ if (pixel.ogR == null || pixel.ogG == null || pixel.ogB == null || !(pixel.element == pixel.ogElement)){ pixel.ogR = parseInt(pixel.color.slice(4, pixel.color.indexOf(',')), 10) @@ -21,7 +24,8 @@ const heatfunc = function(pixel){ pixel.newG = ((510*pixel.ctemp)-255); pixel.newB= ((280*pixel.ctemp)-140); } - pixel.color = "rgb(" + pixel.newR + "," + pixel.newG + "," + pixel.newB + ")"; + let weight = (1-(pixel.ctemp/1.3)) + pixel.color = "rgb(" + weightedAverage(pixel.ogR, pixel.newR, weight) + "," + weightedAverage(pixel.ogG, pixel.newG, weight) + "," + weightedAverage(pixel.ogB, pixel.newB, weight) + ")"; } }; if (!eLists.metals) { eLists.metals = [] } @@ -53,9 +57,6 @@ elements.color_baker = { desc: "Use to bake a metals paint color into its 'true' color, for heating purposes.", } /* -function weightedAverage(num1, num2, weight){ - return ((weight * num1)+((1-weight)*num2)) -} const plantfunc = function(pixel){ if (pixel.ogR == null || pixel.ogG == null || pixel.ogB == null){ pixel.ogR = parseInt(pixel.color.slice(4, pixel.color.indexOf(',')), 10) From 1ee40ca3fc90a8328b89e956f3c7b58346c3679a Mon Sep 17 00:00:00 2001 From: JustAGenericUsername Date: Sun, 17 Mar 2024 13:06:51 -0400 Subject: [PATCH 18/30] ooo nice --- mods/heatglow.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/mods/heatglow.js b/mods/heatglow.js index 99824fb4..568d58fd 100644 --- a/mods/heatglow.js +++ b/mods/heatglow.js @@ -8,24 +8,24 @@ const heatfunc = function(pixel){ pixel.ogB = parseInt(pixel.color.slice(pixel.color.lastIndexOf(',') + 1, -1), 10) pixel.ogElement = pixel.element }else{ - pixel.gethigh = (elements[pixel.element].tempHigh) - pixel.halftemp = ((20+pixel.gethigh)/2) - if (pixel.temp <= (pixel.gethigh) - pixel.halftemp){ - pixel.ctemp = 0; - } else if (pixel.temp > (pixel.gethigh)-pixel.halftemp && pixel.temp <= pixel.gethigh){ - pixel.ctemp = ((1/pixel.halftemp)*pixel.temp)-(((pixel.gethigh)-pixel.halftemp)/pixel.halftemp) + var gethigh = (elements[pixel.element].tempHigh) + var halftemp = ((20+gethigh)/2) + if (pixel.temp <= (gethigh) - halftemp){ + var ctemp = 0; + } else if (pixel.temp > (gethigh)-halftemp && pixel.temp <= gethigh){ + var ctemp = ((1/halftemp)*pixel.temp)-(((gethigh)-halftemp)/halftemp) } - if (pixel.ctemp <= 0.5){ - pixel.newR = (((510-(2*pixel.ogR))*pixel.ctemp)+pixel.ogR); - pixel.newG = ((0-((2*pixel.ogG)*pixel.ctemp))+pixel.ogG); - pixel.newB = ((0-((2*pixel.ogB)*pixel.ctemp))+pixel.ogB); - }else if (pixel.ctemp > 0.5){ - pixel.newR = 255; - pixel.newG = ((510*pixel.ctemp)-255); - pixel.newB= ((280*pixel.ctemp)-140); + if (ctemp <= 0.5){ + var newR = (((510-(2*pixel.ogR))*ctemp)+pixel.ogR); + var newG = ((0-((2*pixel.ogG)*ctemp))+pixel.ogG); + var newB = ((0-((2*pixel.ogB)*ctemp))+pixel.ogB); + }else if (ctemp > 0.5){ + var newR = 255; + var newG = ((510*ctemp)-255); + var newB= ((280*ctemp)-140); } - let weight = (1-(pixel.ctemp/1.3)) - pixel.color = "rgb(" + weightedAverage(pixel.ogR, pixel.newR, weight) + "," + weightedAverage(pixel.ogG, pixel.newG, weight) + "," + weightedAverage(pixel.ogB, pixel.newB, weight) + ")"; + let weight = (1-(ctemp/1.3)) + pixel.color = "rgb(" + weightedAverage(pixel.ogR, newR, weight) + "," + weightedAverage(pixel.ogG, newG, weight) + "," + weightedAverage(pixel.ogB, newB, weight) + ")"; } }; if (!eLists.metals) { eLists.metals = [] } From 7184451fafe461a63a8cae089075114e04a47da4 Mon Sep 17 00:00:00 2001 From: JustAGenericUsername Date: Sun, 17 Mar 2024 14:49:54 -0400 Subject: [PATCH 19/30] scuffed circle brush --- mods/nousersthings.js | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/mods/nousersthings.js b/mods/nousersthings.js index 525a40c7..72b0f520 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -2302,4 +2302,44 @@ elements.selective_void = { } } } -} \ No newline at end of file +} +let radiusVar = 0 +let circleElem = 0 +let circleRep = false +elements.scuffed_circle_brush = { + category: "special", + color: elements.drag.color, + excludeRandom: true, + state: "solid", + movable: "false", + onSelect: function(){ + var answerR = prompt("Radius of the brush.",(radiusVar||undefined)); + if (!answerR) { return } + radiusVar = answerR; + var answerE = prompt("Element of the brush.",(circleElem||undefined)); + if (!answerE) { return } + circleElem = answerE; + var answerH = prompt("Replace? y or n. May be laggy.",(circleRep||undefined)); + if (!answerH) { return } + circleRep = answerH; + }, + tick: function(pixel){ + var circlec = circleCoords(pixel.x, pixel.y, radiusVar) + for (var i = 0; i < circlec.length; i++){ + var coord = circlec[i] + var x = coord.x + var y = coord.y + if (isEmpty(x, y)){ + createPixel(circleElem, x, y) + } + else if (!isEmpty(x, y, true) && !(circleRep == "n")){ + deletePixel(x, y) + createPixel(circleElem, x, y) + } + } + var thisx = pixel.x + var thisy = pixel.y + deletePixel(thisx, thisy) + createPixel(circleElem, thisx, thisy) + } +} \ No newline at end of file From fc63ee9002f03616cc91190c6f46b479d704a779 Mon Sep 17 00:00:00 2001 From: slweeb <91897291+slweeb@users.noreply.github.com> Date: Sun, 17 Mar 2024 14:54:06 -0400 Subject: [PATCH 20/30] v1.9.4 - Natural Disasters [Version 1.9.4 - March 17, 2024 - Natural Disasters] + Tornado + Earthquake + Tsunami + Blaster + Sandstorm (Hidden) [Changes] + Scrolling resizes in correct direction on Windows + Invert Scroll setting ~ Humans no longer trample Grass ~ Milk no longer turns to Yogurt when heated + Milk turns to Yogurt in Primordial Soup + Cells can ferment Milk into Yogurt + Cells boil and freeze into some Sugar + Cheese can be made from Nut Milk + Hives show Bee count when hovered + Flies, Fireflies, and Rats get trapped in Glue + Worms can compost Charcoal and Straw + Snails eat Pickles and Grapes + Slugs eat Grapes + Evergreen trees drop Pinecones when burned ~ Pinecones can withstand high temperatures + Wheat dries and freezes into Straw + Straw breaks into Flour + Potato can be deep-fried + Water can explode in hot Nut Oil + Soda can disolve Eggs + Yeast ferments Mashed Potato + Potatoes can charge Zinc or Copper + Batteries explode when melted + Ammonia can spawn Algae in Water + Broth can extinguish small fires + Salt slowly dissolves in Caramel + Ketchup and Baking Soda reaction + Acid kills Plant and Tree Branch before dissolving it + Copper Sulfate kills Termites, Plant, Grass, Algae, and Mushrooms + Caustic Potash and Acid reaction + Nickel can resist Acid + Aluminum breaks into Metal Scrap + Thermite can be made from Metal Scrap + Gallium stains solids + Gold can alloy with AlGa + Electrum breaks into Gold Coins + Electrolysis on Salt Water produces Chlorine + Alcohol can purify Infection + Vaccine and Antibody can cure Rotten Meat and Cheese + Soap releases Fragrance when burned + Soap can be made from Milk + Paper is yellowed by Light and Oxygen + Plant is yellowed by Chlorine + Skin is darkened and reddened by Light + Skin will rash when exposed to irritants + Neutrons can react with Plant, Gunpowder, Yeast, and Firework + Positrons react violently with Electric + Light can kill Plague and Virus ~ Virus no longer eats Light or Loopy ~ Loopy ignores Cloners ~ Cancer is killed by Radiation faster + Cancer can be killed by Laser ~ Diamond is no longer indestructible, but still very strong ~ Diamonds will no longer form if Charcoal is too hot ~ Moved Bubble to Gases + Bubbles pop when cooled or heated ~ Tweaked Bleach and Vinegar reaction ~ Randomized Egg hatching rate ~ Cacti no longer grow arms at their base + Bamboo burns into Embers + Malware can hijack Loopy + Malware can misalign Lattice + Malware can break down Border + Rainbow breaks into Static + Bless revives Tree Branches from Saplings + Bless purifies Pilk + Bless removes Color Smoke and Spray Paint + Packed Snow breaks into Snow + Water can put out Antifire ~ Antifire ignores air density ~ Holding Shift can force mix dense ingredients into Batter ~ Gave unique colors to Supernova, NExplosion, and Pop ~ Recolored Molten Potassium and Molten Magnesium ~ Tweaked charged Hydrogen and Helium colors ~ Moved Ball to Special (For real this time) ~ Moved Perfume to Liquids ~ Moved Amber to Solids ~ Save names are truncated in save menu + Humans always save skin and shirt color in saves + Shift can be held when pressing -/+ buttons + Unpaint tool downgrades colorful element variants + Earthquakes and Tornadoes in random events + Magma alias 'Lava' - Removed Smooth View (Try moreViews.js!) [Bug Fixes] ~ Fixed: Evergreen and Lattice can be dragged ~ Fixed: Cellulose isn't considered a liquid ~ Fixed: Cellulose density too low ~ Fixed: Ketchup could result from recipes with Butter ~ Fixed: Accented element names capitalize incorrectly ~ Fixed: Virus can destroy invincible pixels ~ Fixed: E-cloner doesn't copy temperature ~ Fixed: Middle click begins scrolling on Windows ~ Fixed: Swapping to secondary element doesn't focus category ~ Fixed: Alcohol Gas has 110% flammability ~ Fixed: Acid Gas can destroy some Acid-resistant elements ~ Fixed: Certain Cactus pixel grows instantly ~ Fixed: Typo in Hydrogen and Sulfur reaction ~ Fixed: Antigas places at room temperature ~ Fixed: Hot Antifire burns indefinitely ~ Fixed: Melted Wax viscosity defined twice ~ Fixed: Flash lower state defined twice ~ Fixed: Ketchup boils into Vinegar, which immediately boils ~ Fixed: F11 doesn't toggle fullscreen (May need Shift) ~ Fixed: Water causes Ember to stop burning, etc. ~ Fixed: Bless can create everlasting Fire ~ Fixed: Spawning Liquid Propane causes pulse effect ~ Fixed: Stained Glass and Color Sand can't be painted [Technical] + Prop tool accepts lowercase "-infinity" ~ Prop tool deselects on invalid input + onMouseDown() element property + hoverStat(pixel) element property for hover info, return string + stain1 and stain2 reaction property, accepts hex color code + Shift + W? --- changelog.html | 126 +++++++ changelog.txt | 123 +++++++ controls.html | 1 - controls.txt | 1 - index.html | 779 +++++++++++++++++++++++++++++---------- lang/en_gb.json | 3 +- mods/classic_textures.js | 7 +- mods/devtests.js | 54 --- 8 files changed, 844 insertions(+), 250 deletions(-) diff --git a/changelog.html b/changelog.html index e39c7b8b..58b8d1b7 100644 --- a/changelog.html +++ b/changelog.html @@ -109,7 +109,133 @@

The original plain text version of this is still maintained.

+

[Version 1.9.4 - March 17, 2024 - Natural Disasters]

+
    +
  • + Tornado
  • +
  • + Earthquake
  • +
  • + Tsunami
  • +
  • + Blaster
  • +
  • + Sandstorm (Hidden)
  • +
  • [Changes]
  • +
  • + Scrolling resizes in correct direction on Windows
  • +
  • + Invert Scroll setting
  • +
  • ~ Humans no longer trample Grass
  • +
  • ~ Milk no longer turns to Yogurt when heated
  • +
  • + Milk turns to Yogurt in Primordial Soup
  • +
  • + Cells can ferment Milk into Yogurt
  • +
  • + Cells boil and freeze into some Sugar
  • +
  • + Cheese can be made from Nut Milk
  • +
  • + Hives show Bee count when hovered
  • +
  • + Flies, Fireflies, and Rats get trapped in Glue
  • +
  • + Worms can compost Charcoal and Straw
  • +
  • + Snails eat Pickles and Grapes
  • +
  • + Slugs eat Grapes
  • +
  • + Evergreen trees drop Pinecones when burned
  • +
  • ~ Pinecones can withstand high temperatures
  • +
  • + Wheat dries and freezes into Straw
  • +
  • + Straw breaks into Flour
  • +
  • + Potato can be deep-fried
  • +
  • + Water can explode in hot Nut Oil
  • +
  • + Soda can disolve Eggs
  • +
  • + Yeast ferments Mashed Potato
  • +
  • + Potatoes can charge Zinc or Copper
  • +
  • + Batteries explode when melted
  • +
  • + Ammonia can spawn Algae in Water
  • +
  • + Broth can extinguish small fires
  • +
  • + Salt slowly dissolves in Caramel
  • +
  • + Ketchup and Baking Soda reaction
  • +
  • + Acid kills Plant and Tree Branch before dissolving it
  • +
  • + Copper Sulfate kills Termites, Plant, Grass, Algae, and Mushrooms
  • +
  • + Caustic Potash and Acid reaction
  • +
  • + Nickel can resist Acid
  • +
  • + Aluminum breaks into Metal Scrap
  • +
  • + Thermite can be made from Metal Scrap
  • +
  • + Gallium stains solids
  • +
  • + Gold can alloy with AlGa
  • +
  • + Electrum breaks into Gold Coins
  • +
  • + Electrolysis on Salt Water produces Chlorine
  • +
  • + Alcohol can purify Infection
  • +
  • + Vaccine and Antibody can cure Rotten Meat and Cheese
  • +
  • + Soap releases Fragrance when burned
  • +
  • + Soap can be made from Milk
  • +
  • + Paper is yellowed by Light and Oxygen
  • +
  • + Plant is yellowed by Chlorine
  • +
  • + Skin is darkened and reddened by Light
  • +
  • + Skin will rash when exposed to irritants
  • +
  • + Neutrons can react with Plant, Gunpowder, Yeast, and Firework
  • +
  • + Positrons react violently with Electric
  • +
  • + Light can kill Plague and Virus
  • +
  • ~ Virus no longer eats Light or Loopy
  • +
  • ~ Loopy ignores Cloners
  • +
  • ~ Cancer is killed by Radiation faster
  • +
  • + Cancer can be killed by Laser
  • +
  • ~ Diamond is no longer indestructible, but still very strong
  • +
  • ~ Diamonds will no longer form if Charcoal is too hot
  • +
  • ~ Moved Bubble to Gases
  • +
  • + Bubbles pop when cooled or heated
  • +
  • ~ Tweaked Bleach and Vinegar reaction
  • +
  • ~ Randomized Egg hatching rate
  • +
  • ~ Cacti no longer grow arms at their base
  • +
  • + Bamboo burns into Embers
  • +
  • + Malware can hijack Loopy
  • +
  • + Malware can misalign Lattice
  • +
  • + Malware can break down Border
  • +
  • + Rainbow breaks into Static
  • +
  • + Bless revives Tree Branches from Saplings
  • +
  • + Bless purifies Pilk
  • +
  • + Bless removes Color Smoke and Spray Paint
  • +
  • + Packed Snow breaks into Snow
  • +
  • + Water can put out Antifire
  • +
  • ~ Antifire ignores air density
  • +
  • ~ Holding Shift can force mix dense ingredients into Batter
  • +
  • ~ Gave unique colors to Supernova, NExplosion, and Pop
  • +
  • ~ Recolored Molten Potassium and Molten Magnesium
  • +
  • ~ Tweaked charged Hydrogen and Helium colors
  • +
  • ~ Moved Ball to Special (For real this time)
  • +
  • ~ Moved Perfume to Liquids
  • +
  • ~ Moved Amber to Solids
  • +
  • ~ Save names are truncated in save menu
  • +
  • + Humans always save skin and shirt color in saves
  • +
  • + Shift can be held when pressing -/+ buttons
  • +
  • + Unpaint tool downgrades colorful element variants
  • +
  • + Earthquakes and Tornadoes in random events
  • +
  • + Magma alias 'Lava'
  • +
  • - Removed Smooth View (Try moreViews.js!)
  • +
  • [Bug Fixes]
  • +
  • ~ Fixed: Evergreen and Lattice can be dragged
  • +
  • ~ Fixed: Cellulose isn't considered a liquid
  • +
  • ~ Fixed: Cellulose density too low
  • +
  • ~ Fixed: Ketchup could result from recipes with Butter
  • +
  • ~ Fixed: Accented element names capitalize incorrectly
  • +
  • ~ Fixed: Virus can destroy invincible pixels
  • +
  • ~ Fixed: E-cloner doesn't copy temperature
  • +
  • ~ Fixed: Middle click begins scrolling on Windows
  • +
  • ~ Fixed: Swapping to secondary element doesn't focus category
  • +
  • ~ Fixed: Alcohol Gas has 110% flammability
  • +
  • ~ Fixed: Acid Gas can destroy some Acid-resistant elements
  • +
  • ~ Fixed: Certain Cactus pixel grows instantly
  • +
  • ~ Fixed: Typo in Hydrogen and Sulfur reaction
  • +
  • ~ Fixed: Antigas places at room temperature
  • +
  • ~ Fixed: Hot Antifire burns indefinitely
  • +
  • ~ Fixed: Melted Wax viscosity defined twice
  • +
  • ~ Fixed: Flash lower state defined twice
  • +
  • ~ Fixed: Ketchup boils into Vinegar, which immediately boils
  • +
  • ~ Fixed: F11 doesn't toggle fullscreen (May need Shift)
  • +
  • ~ Fixed: Water causes Ember to stop burning, etc.
  • +
  • ~ Fixed: Bless can create everlasting Fire
  • +
  • ~ Fixed: Spawning Liquid Propane causes pulse effect
  • +
  • ~ Fixed: Stained Glass and Color Sand can't be painted
  • +
  • [Technical]
  • +
  • + Prop tool accepts lowercase "-infinity"
  • +
  • ~ Prop tool deselects on invalid input
  • +
  • + onMouseDown() element property
  • +
  • + hoverStat(pixel) element property for hover info, return string
  • +
  • + stain1 and stain2 reaction property, accepts hex color code
  • +
  • + Shift + W?
  • +
+

[Version 1.9.3 - February 2, 2024 - Mix & Munch]

+

Read More on the Newsletter!

  • + Potassium
  • + Magnesium
  • diff --git a/changelog.txt b/changelog.txt index c828e768..0151f598 100644 --- a/changelog.txt +++ b/changelog.txt @@ -7,6 +7,129 @@ See sneak peaks for upcoming updates on the Discord: https://discord.gg/ejUc6YPQ A fancier version of this changelog can be found here: https://sandboxels.R74n.com/changelog +[Version 1.9.4 - March 17, 2024 - Natural Disasters] + + Tornado + + Earthquake + + Tsunami + + Blaster + + Sandstorm (Hidden) + [Changes] + + Scrolling resizes in correct direction on Windows + + Invert Scroll setting + ~ Humans no longer trample Grass + ~ Milk no longer turns to Yogurt when heated + + Milk turns to Yogurt in Primordial Soup + + Cells can ferment Milk into Yogurt + + Cells boil and freeze into some Sugar + + Cheese can be made from Nut Milk + + Hives show Bee count when hovered + + Flies, Fireflies, and Rats get trapped in Glue + + Worms can compost Charcoal and Straw + + Snails eat Pickles and Grapes + + Slugs eat Grapes + + Evergreen trees drop Pinecones when burned + ~ Pinecones can withstand high temperatures + + Wheat dries and freezes into Straw + + Straw breaks into Flour + + Potato can be deep-fried + + Water can explode in hot Nut Oil + + Soda can disolve Eggs + + Yeast ferments Mashed Potato + + Potatoes can charge Zinc or Copper + + Batteries explode when melted + + Ammonia can spawn Algae in Water + + Broth can extinguish small fires + + Salt slowly dissolves in Caramel + + Ketchup and Baking Soda reaction + + Acid kills Plant and Tree Branch before dissolving it + + Copper Sulfate kills Termites, Plant, Grass, Algae, and Mushrooms + + Caustic Potash and Acid reaction + + Nickel can resist Acid + + Aluminum breaks into Metal Scrap + + Thermite can be made from Metal Scrap + + Gallium stains solids + + Gold can alloy with AlGa + + Electrum breaks into Gold Coins + + Electrolysis on Salt Water produces Chlorine + + Alcohol can purify Infection + + Vaccine and Antibody can cure Rotten Meat and Cheese + + Soap releases Fragrance when burned + + Soap can be made from Milk + + Paper is yellowed by Light and Oxygen + + Plant is yellowed by Chlorine + + Skin is darkened and reddened by Light + + Skin will rash when exposed to irritants + + Neutrons can react with Plant, Gunpowder, Yeast, and Firework + + Positrons react violently with Electric + + Light can kill Plague and Virus + ~ Virus no longer eats Light or Loopy + ~ Loopy ignores Cloners + ~ Cancer is killed by Radiation faster + + Cancer can be killed by Laser + ~ Diamond is no longer indestructible, but still very strong + ~ Diamonds will no longer form if Charcoal is too hot + ~ Moved Bubble to Gases + + Bubbles pop when cooled or heated + ~ Tweaked Bleach and Vinegar reaction + ~ Randomized Egg hatching rate + ~ Cacti no longer grow arms at their base + + Bamboo burns into Embers + + Malware can hijack Loopy + + Malware can misalign Lattice + + Malware can break down Border + + Rainbow breaks into Static + + Bless revives Tree Branches from Saplings + + Bless purifies Pilk + + Bless removes Color Smoke and Spray Paint + + Packed Snow breaks into Snow + + Water can put out Antifire + ~ Antifire ignores air density + ~ Holding Shift can force mix dense ingredients into Batter + ~ Gave unique colors to Supernova, NExplosion, and Pop + ~ Recolored Molten Potassium and Molten Magnesium + ~ Tweaked charged Hydrogen and Helium colors + ~ Moved Ball to Special (For real this time) + ~ Moved Perfume to Liquids + ~ Moved Amber to Solids + ~ Save names are truncated in save menu + + Humans always save skin and shirt color in saves + + Shift can be held when pressing -/+ buttons + + Unpaint tool downgrades colorful element variants + + Earthquakes and Tornadoes in random events + + Magma alias 'Lava' + - Removed Smooth View (Try moreViews.js!) + [Bug Fixes] + ~ Fixed: Evergreen and Lattice can be dragged + ~ Fixed: Cellulose isn't considered a liquid + ~ Fixed: Cellulose density too low + ~ Fixed: Ketchup could result from recipes with Butter + ~ Fixed: Accented element names capitalize incorrectly + ~ Fixed: Virus can destroy invincible pixels + ~ Fixed: E-cloner doesn't copy temperature + ~ Fixed: Middle click begins scrolling on Windows + ~ Fixed: Swapping to secondary element doesn't focus category + ~ Fixed: Alcohol Gas has 110% flammability + ~ Fixed: Acid Gas can destroy some Acid-resistant elements + ~ Fixed: Certain Cactus pixel grows instantly + ~ Fixed: Typo in Hydrogen and Sulfur reaction + ~ Fixed: Antigas places at room temperature + ~ Fixed: Hot Antifire burns indefinitely + ~ Fixed: Melted Wax viscosity defined twice + ~ Fixed: Flash lower state defined twice + ~ Fixed: Ketchup boils into Vinegar, which immediately boils + ~ Fixed: F11 doesn't toggle fullscreen (May need Shift) + ~ Fixed: Water causes Ember to stop burning, etc. + ~ Fixed: Bless can create everlasting Fire + ~ Fixed: Spawning Liquid Propane causes pulse effect + ~ Fixed: Stained Glass and Color Sand can't be painted + [Technical] + + Prop tool accepts lowercase "-infinity" + ~ Prop tool deselects on invalid input + + onMouseDown() element property + + hoverStat(pixel) element property for hover info, return string + + stain1 and stain2 reaction property, accepts hex color code + + Shift + W? + [Version 1.9.3 - February 2, 2024 - Mix & Munch] + Potassium + Magnesium diff --git a/controls.html b/controls.html index 9aabbaab..4a9fa668 100644 --- a/controls.html +++ b/controls.html @@ -99,7 +99,6 @@ Normal view 1 Thermal view 2 Basic view (No effects) 3 - Smooth view (Low performance) 4 Hide canvas H Toggle GUI F1 Capture screenshot C or F2 diff --git a/controls.txt b/controls.txt index b43a71d7..feb2cc6e 100644 --- a/controls.txt +++ b/controls.txt @@ -28,7 +28,6 @@ F or F11 = Toggle Fullscreen 1 or 0 = Normal View 2 = Thermal View 3 = Basic View (No Effects) -4 = Smooth View H = Hide Canvas F1 = Toggle GUI / HUD F2 or C = Capture Screenshot diff --git a/index.html b/index.html index 6f932f7b..deaf7866 100644 --- a/index.html +++ b/index.html @@ -48,7 +48,7 @@