diff --git a/icons/cover-3840x1240px.png b/icons/cover-3840x1240px.png
new file mode 100644
index 00000000..fd892864
Binary files /dev/null and b/icons/cover-3840x1240px.png differ
diff --git a/icons/cover-3840x1240px.webp b/icons/cover-3840x1240px.webp
new file mode 100644
index 00000000..0d403e61
Binary files /dev/null and b/icons/cover-3840x1240px.webp differ
diff --git a/index.html b/index.html
index cfbc7508..2625946e 100644
--- a/index.html
+++ b/index.html
@@ -64,7 +64,7 @@
{
"@context": "https://schema.org",
"@type": ["VideoGame","MobileApplication","WebApplication"],
- "gamePlatform":"Web Browser",
+ "gamePlatform":["Web Browser","Windows","macOS"],
"image":"https://sandboxels.r74n.com/icons/icon.png",
"url": "https://sandboxels.r74n.com",
"name":"Sandboxels",
@@ -78,19 +78,22 @@
"availability":"https://schema.org/InStock"
},
"genre": "Falling-sand game",
- "softwareVersion":"1.10.2",
+ "softwareVersion":"1.11.2",
"datePublished":"2021-12-15",
"dateCreated":"2021-12-15",
"gameTip":"https://sandboxels.r74n.com/controls",
"softwareHelp":"https://sandboxels.r74n.com/controls",
"releaseNotes":"https://sandboxels.r74n.com/changelog",
- "screenshot": "https://sandboxels.r74n.com/icons/wallpaper.png",
+ "screenshot": "https://sandboxels.r74n.com/icons/cover-3840x1240px-text.png",
"softwareRequirements": "HTML5",
"archivedAt": "https://web.archive.org/web/20230519005427/https://sandboxels.r74n.com/",
- "copyrightYear": 2024,
- "copyrightNotice": "©2021-2024. All Rights Reserved. R74n",
+ "copyrightYear": 2021,
+ "copyrightNotice": "©2021-2025. All Rights Reserved. R74n",
"license": "https://sandboxels.r74n.com/license.txt",
- "discussionUrl": "https://r74n.com/discord/",
+ "discussionUrl": ["https://r74n.com/discord/","https://www.reddit.com/r/Sandboxels/","https://steamcommunity.com/app/3664820/discussions/"],
+ "downloadUrl": "https://store.steampowered.com/app/3664820/Sandboxels/",
+ "installUrl": "https://store.steampowered.com/app/3664820/Sandboxels/",
+ "trailer": "https://www.youtube.com/watch?v=TgHnD-KRieM",
"educationalUse": "Hands-on lab experiments and learning",
"headline": "Sandboxels",
"isAccessibleForFree": true,
@@ -121,6 +124,9 @@
console.log("Can't access? Join our Discord: https://R74n.com/discord/");
console.log("Found this on another website? Let us know!");
console.log("©2021-" + new Date().getFullYear() + ". All Rights Reserved. https://sandboxels.R74n.com/license.txt");
+
+ isOnSite = location.hostname === "sandboxels.r74n.com";
+
// If settings is in localStorage, load it. If not, create an empty object.
settings = localStorage.getItem("settings") ? JSON.parse(localStorage.getItem("settings")) : {};
// URL query handling
@@ -12976,6 +12982,11 @@ if (standalone) {
var script = document.createElement('script');
script.src = "mods/glow.js";
document.head.appendChild(script);
+ if (standaloneType === "steam") {
+ var script = document.createElement('script');
+ script.src = "mods/steam_port.js";
+ document.head.appendChild(script);
+ }
}
var currentMonth = new Date().getMonth();
@@ -15894,7 +15905,7 @@ behaviorRules = {
ctx.drawImage(placingImage,0,0,newWidth,newHeight);
var newImage = ctx.getImageData(0,0,newWidth,newHeight);
var elem = (settings.imageelem || "wood");
- if ((!elements[elem] || elements[elem].tool || elements[elem].canPlace===false) && elem !== "paint") { elem = "wood";}
+ if ((!elements[elem] || elements[elem].tool || elements[elem].canPlace===false) && elem !== "paint" && !elements[elem].canPlace) { elem = "wood";}
// loop through each pixel in the ImageData
for (var x = 0; x < newWidth; x++) {
for (var y = 0; y < newHeight; y++) {
@@ -16240,7 +16251,7 @@ behaviorRules = {
if (r) autoResizeCanvas();
focusGame();
},
- html: standalone ? null : `
`,
+ html: (standalone || !isOnSite) ? null : `
`,
type: "confirm",
wasPaused: pause
}
@@ -19100,6 +19111,7 @@ if (document.referrer && document.referrer.indexOf("r74n.") === -1) {
}
function loadPlaylight() {
+ if (!isOnSite) { location.href = "https://r74n.com"; return }
if (typeof playlightSDK === "undefined") {
document.getElementById("playlightButton").value = "Loading...";
document.head.insertAdjacentHTML("beforeend",``);
diff --git a/mod-list.html b/mod-list.html
index c8e47173..bb10e3cc 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -122,6 +122,7 @@
| classic_explosives.js | Re-adds 4 explosives removed in v1.9.3 | R74n |
| classic_textures.js | Use textures from early versions of the game | R74n |
| color_everything.js | Allows every element to have a custom color | R74n |
+| death_count.js | Messages counting when Humans die | R74n |
| devtests.js | Experimental features from the Sandboxels developer | R74n |
| edible_everything.js | Allows every element to be mixed into Batter and Dough | R74n |
| fools.js | Re-adds FOOLS Mode | R74n |
@@ -189,9 +190,11 @@
| boiling_things.js | Various elements can be vaporized | Alice |
| bouncing_balls.js | New types of balls that bounce accurately and roll | Nekonico |
| chalcopyrite.js | The chalcopyrite ore | Sophie |
+| chalk.js | Chalk | CharsonBurensen |
| charsonsmoduno.js | Arsenic, Beryllium, Silicon, compounds, and some fake elements | CharsonBurensen |
| chem.js | Several chemistry and physics-related elements | lllllllllwith10ls |
| clf3.js | Chlorine Trifluoride | Alice |
+| cmur.js | CharsonsModUno (???) | CharsonBurensen |
| debrisable.js | Expands the number of breakable elements, changes erosion, and adds way to craft certain elements from breaking other elements | Nekonico |
| fire_extinguisher.js | Fire extinguisher blocks and realistic firefighting foam to put out nearly anything | Dr_Lego |
| fire_mod.js | Various properties to change fire behavior and radioactive fire | Alice |
@@ -248,6 +251,7 @@
| spouts.js | Spouts for all liquids | kaeud |
| state_voids.js | Several elements that delete specific states of matter | Alice |
| switches.js | Electrical switches that can be toggled | Alice |
+| thiquovite.js | Thiquovite and wall builders | CharsonBurensen |
| ticking_temp_stuff.js | Heater and Cooler variants | Alice |
| video.js | Video player | ggod |
| waterspout.js | Re-adds the old Water Spout | mollthecoder |
@@ -296,6 +300,7 @@
| cat.js | Cats and cat food | SquareScreamYT |
| cells.js | Several experimental edits of the Cell element | Alice |
| children.js | Pesky little gremlins | Taterbob |
+| coldblooded.js | Lizards, axolotls, snakes, and more | Cube14yt |
| colonies.js | Rockets that contain settlers to terraform a planet | Nekonico |
| crimson.js | Elements relating to the Crimson from Terraria | Alice |
| dogs.js | Simple dog and dog food | hedera-ivy |
@@ -363,6 +368,7 @@
| sports_beta.js | Several sports items | BluBun5193 |
| star_wars.js | Various items from Star Wars by Disney | SeaPickle754 |
| sus.js | Among Us crewmate | Nv7 |
+| thiquovite.js | Thiquovite and wall builders | CharsonBurensen |
| triggerable_random_powders.js | Powders with different abilities, such as heating and cooling | Alice |
| troll.js | Various dumb elements that iterate randomly on the entire screen | Alice |
| WhisperingTheory.js | Powder and gas variant of heater and cooler | kaeud |
diff --git a/mods/Temperature+.js b/mods/Temperature+.js
new file mode 100644
index 00000000..ee46f74a
--- /dev/null
+++ b/mods/Temperature+.js
@@ -0,0 +1,47 @@
+elements.ultra_heat = {
+ color: "#ff0000",
+ category: "Temperature+",
+ tool: function(pixel) {
+ pixel.temp += 500;
+ }
+}
+
+elements.infinite_heat = {
+ color: "#ff0000",
+ category: "Temperature+",
+ tool: function(pixel) {
+ pixel.temp += Infinity;
+ }
+}
+
+elements.ultra_freeze = {
+ color: "#00ccff",
+ category: "Temperature+",
+ tool: function(pixel) {
+ pixel.temp -= 500;
+ }
+}
+
+elements.infinite_freeze = {
+ color: "#00ccff",
+ category: "Temperature+",
+ tool: function(pixel) {
+ pixel.temp -= Infinity;
+ }
+}
+
+elements.absolute_zero = {
+ color: "#66ccff",
+ category: "Temperature+",
+ tool: function(pixel) {
+ pixel.temp = -273.15;
+ }
+}
+
+elements.neutralize = {
+ color: "#cccccc",
+ category: "Temperature+",
+ tool: function(pixel) {
+ pixel.temp = 20;
+ }
+}
diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js
index f2036861..93318077 100644
--- a/mods/aChefsDream.js
+++ b/mods/aChefsDream.js
@@ -1134,7 +1134,7 @@ elements.dry_icing = {
elements.cream.reactions.baked_batter = {elem2: "cake" }
-elements.sugar.breakInto = {elem1: "icing_sugar"}
+elements.sugar.breakInto = "icing_sugar"
elements.boiler = {
color: "#73fff8",
diff --git a/mods/adaceythings.js b/mods/adaceythings.js
new file mode 100644
index 00000000..161bc4e5
--- /dev/null
+++ b/mods/adaceythings.js
@@ -0,0 +1,222 @@
+elements.luigi = {
+ color: "#4cbb17",
+ behavior: behaviors.WALL,
+ category: "special",
+ state: "solid",
+ density: 985
+}
+elements.luigi_ball = {
+ color: "#3dae0a",
+ behavior: behaviors.BOUNCY,
+ category: "special",
+ state: "solid",
+ density: 666.67
+}
+elements.pickle_juice = {
+ color: "#edff75",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ density: 1050,
+ tempLow:-21,
+ stateLow:"pickle_juice_ice",
+ reactions: {
+ "cucumber": {elem2:"pickle"},
+ }
+};
+elements.pickle_juice_ice = {
+ color: "#f4ff86",
+ behavior: behaviors.WALL,
+ category: "states",
+ state: "solid",
+ density: 962,
+ tempHigh:-21,
+ stateHigh:"pickle_juice"
+}
+elements.cucumber = {
+ color: "#04540c",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ density: 410,
+ reactions: {
+ "salt_water": {elem1:"pickle",elem2:"pickle_juice"},
+ "vinegar": {elem1:"pickle",elem2:"pickle_juice"},
+ "yogurt": {elem1:null,elem2:"tzatziki"},
+ }
+};
+elements.tzatziki = {
+ color: "#ebf2ec",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "liquid",
+ density: 1014.421,
+ alias:["cacık","tarator"]
+}
+elements.argon = {
+ color: "#efd7f7",
+ behavior: behaviors.GAS,
+ category: "gases",
+ state: "gas",
+ density: 1.784,
+ tempLow:-186,
+ stateLow:"liquid_argon"
+}
+elements.liquid_argon = {
+ color: "#f5defa",
+ behavior: behaviors.LIQUID,
+ category: "states",
+ state: "liquid",
+ density: 1395.4,
+ tempLow:-189,
+ stateLow:"argon_ice",
+ tempHigh:-186,
+ stateHigh:"argon"
+}
+elements.argon_ice = {
+ color: "#f5e5ff",
+ behavior: behaviors.WALL,
+ category: "states",
+ state: "solid",
+ density: 1648,
+ tempHigh:-189,
+ stateHigh:"liquid_argon"
+}
+elements.krypton = {
+ color: "#fae5c0",
+ behavior: behaviors.GAS,
+ category: "gases",
+ state: "gas",
+ density: 3.749,
+ tempLow:-153,
+ stateLow:"liquid_krypton"
+}
+elements.liquid_krypton = {
+ color: "#fcebc6",
+ behavior: behaviors.LIQUID,
+ category: "states",
+ state: "liquid",
+ density: 2413,
+ tempLow:-157,
+ stateLow:"krypton_ice",
+ tempHigh:-153,
+ stateHigh:"krypton"
+}
+elements.krypton_ice = {
+ color: "#feeecb",
+ behavior: behaviors.WALL,
+ category: "states",
+ state: "solid",
+ density: 2800,
+ tempHigh:-157,
+ stateHigh:"liquid_krypton"
+}
+elements.xenon = {
+ color: "#c9bae3",
+ behavior: behaviors.GAS,
+ category: "gases",
+ state: "gas",
+ density: 5.894,
+ tempLow:-108,
+ stateLow:"liquid_xenon"
+}
+elements.liquid_xenon = {
+ color: "#cdbfe8",
+ behavior: behaviors.LIQUID,
+ category: "states",
+ state: "liquid",
+ density: 2942,
+ tempLow:-112,
+ stateLow:"xenon_ice",
+ tempHigh:-108,
+ stateHigh:"xenon"
+}
+elements.xenon_ice = {
+ color: "#daceee",
+ behavior: behaviors.WALL,
+ category: "states",
+ state: "solid",
+ density: 3408,
+ tempHigh:-112,
+ stateHigh:"liquid_xenon"
+}
+elements.NaK = {
+ color: "#575050",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ density: 866,
+ reactions: {
+ "water": {elem1:["caustic_potash","hydrogen"],elem2:"fire"}
+ }
+};
+elements.obsidian = {
+ color: ["#020202","#3d2856","#281f3f","#110d1d","#06030c"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ density: 2400,
+ tempHigh:900,
+ stateHigh:"magma"
+}
+elements.polonium={
+ color: "#1ff2dd",
+ category:"solids",
+ customColor: false,
+ hidden:false,
+ state: "solid",
+ density: 9320,
+ behavior: [
+ "XX|CR:radiation%4|XX",
+ "CR:radiation%5|CH:lead%1.444|CR:radiation%5",
+ "XX|XX|XX",
+ ],
+ canPlace: true,
+ glow: true,
+ reactions: {
+ "acid": {elem1:null,elem2:"pink_polonium_solution"},
+ "neutral_acid": {elem1:null,elem2:"pink_polonium_solution"},
+ "vinegar": {elem1:null,elem2:"pink_polonium_solution"}
+ }
+};
+elements.stable_polonium={
+ color: "#18ecd5",
+ category:"solids",
+ customColor: false,
+ hidden:false,
+ state: "solid",
+ density: 9320,
+ canPlace: true,
+ glow: true,
+ reactions: {
+ "acid": {elem1:null,elem2:"pink_polonium_solution"},
+ "neutral_acid": {elem1:null,elem2:"pink_polonium_solution"},
+ "vinegar": {elem1:null,elem2:"pink_polonium_solution"}
+ }
+};
+elements.pink_polonium_solution={
+ color: "#ed95dd",
+ category:"liquids",
+ customColor: false,
+ hidden:false,
+ state: "liquid",
+ canPlace: true,
+ behavior: [
+ "CH:light%1|CH:light%2|CH:light%1",
+ "XX|CH:yellow_polonium_solution%3.5|XX",
+ "XX|XX|XX",
+ ],
+ glow: false
+};
+elements.yellow_polonium_solution={
+ color: "#f2f538",
+ category:"liquids",
+ customColor: false,
+ hidden:false,
+ state: "liquid",
+ canPlace: true,
+ glow: false
+}
+elements.water.reactions.pickle = {elem1:"pickle_juice", elem2:"pickle"}
+elements.salt_water.reactions.pickle = {elem1:"pickle_juice", elem2:"pickle"}
+elements.sodium.reactions.potassium = {elem1:"NaK",elem2:null}
diff --git a/mods/chalk.js b/mods/chalk.js
new file mode 100644
index 00000000..30829e8b
--- /dev/null
+++ b/mods/chalk.js
@@ -0,0 +1,499 @@
+elements.calcium_chloride = {
+ color: ["#D3DDE8", "#C6CCD5", "#BCC7D3", "#DDE4EB"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "powders",
+ hidden: false,
+ breakInto: ["calcium", "chlorine"],
+ state: "solid",
+ tempHigh: 772,
+ reactions: {
+ "sodium_carbonate": { elem1:"foam", elem2:["colour_pick_chalk_powder","chalk_powder1","chalk_powder3","chalk_powder2","chalk_powder4","chalk_powder5","chalk_powder6","chalk_powder7","chalk_powder8","chalk_powder9",] },
+ "sodium": { elem1:"salt", elem2:"calcium" },
+ "ice": { elem2:"water", chance: 0.5 },
+ "dust": { elem2: null, chance: 0.5 },
+ "water": { elem2: null, chance: 0.8 },
+ "rotten_meat": { elem2: "meat" },
+ "laser": { elem1: ["calcium","chlorine"] },
+ }
+};
+
+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: false,
+ breakInto: ["sodium", "carbon_dioxide"],
+ state: "solid",
+ tempHigh: 851,
+ reactions: {
+ "calcium_chloride": { elem1:"foam", elem2:"colour_pick_chalk" },
+ "chlorine": { elem1:"salt", elem2:"carbon_dioxide" },
+ "laser": { elem1: ["carbon_dioxide","sodium"] },
+ }
+};
+
+
+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" }
+
+elements.colour_pick_chalk = {
+ color: ["#FF4DFF", "#B24DFF", "#4D52FF", "#4DB0FF", "#4DFFDF", "#64FF4D", "#FFE74D", "#FF994D", "#FF5B4D", "#FF794D", "#FFB14D", "#A8FF4D", "#4DFF85", "#4DD6FF"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: true,
+ category: "chalk",
+ breakInto: "colour_pick_chalk_powder",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk1 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ffaaaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder1",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+elements.rainbow_chalk = {
+ name: "Rainbow Chalk",
+ onPlace: behaviors.DO_TICK,
+ tick: function(pixel) {
+ if (pixel.start-1 <= pixelTicks) {
+ if (pixel.colorstart === undefined) {
+ pixel.colorstart = pixel.start;
+ }
+ pixel.color = "hsl(" + pixel.colorstart + ",100%,65%)";
+ }
+ },
+ color: ["#ff4d4d","#ffac4d","#ffff4d","#4dff4d","#4dffff","#4d4dff","#ff4dff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder_r",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+
+elements.chalk2 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ff80aa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder2",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk3 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ffffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder3",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk4 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#80ffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder4",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk5 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#aaff80"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder5",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk6 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#aaffff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder6",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk7 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#aa80ff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder7",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk8 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#80aaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder8",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk9 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ffaaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ breakInto: "chalk_powder9",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder1 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ffaaaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+elements.chalk_powder_r = {
+ name: "Rainbow Chalk Powder",
+ onPlace: behaviors.DO_TICK,
+ tick: function(pixel) {
+ behaviors.POWDER(pixel);
+ if (pixel.start-1 <= pixelTicks) {
+ if (pixel.colorstart === undefined) {
+ pixel.colorstart = pixel.start;
+ }
+ pixel.color = "hsl(" + pixel.colorstart + ",100%,65%)";
+ }
+ },
+ color: ["#ff4d4d","#ffac4d","#ffff4d","#4dff4d","#4dffff","#4d4dff","#ff4dff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder2 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ff80aa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder3 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ffffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder4 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#80ffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder5 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#aaff80"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder6 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#aaffff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder7 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#aa80ff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder8 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#80aaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder9 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ffaaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.colour_pick_chalk_powder = {
+ color: ["#FF4DFF", "#B24DFF", "#4D52FF", "#4DB0FF", "#4DFFDF", "#64FF4D", "#FFE74D", "#FF994D", "#FF5B4D", "#FF794D", "#FFB14D", "#A8FF4D", "#4DFF85", "#4DD6FF"],
+ stain: 0.3,
+ behavior: behaviors.POWDER,
+ stainSelf: true,
+ customColor: true,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+elements.i_chalk_powder = {
+ name: "Incendiary Chalk Powder",
+ behavior: [
+"XX|CR:fire%5 AND CR:ember%0.1|XX",
+"XX|CH:pop,ember%0.05 AND HT:5%2|XX",
+"M2|M1|M2",
+],
+ color: ["#ffb37d"],
+ stain: 0.5,
+ stainSelf: true,
+ temp: 70,
+ canContain: true,
+ related: ["art", "calcium", "calcium_chloride", "sodium_carbonate"],
+ customColor: false,
+ hidden: false,
+ category: "chalk",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "flashbang",
+};
\ No newline at end of file
diff --git a/mods/cmur.js b/mods/cmur.js
new file mode 100644
index 00000000..5947dc9c
--- /dev/null
+++ b/mods/cmur.js
@@ -0,0 +1,5195 @@
+//charsonsmodunoremake
+
+
+
+//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: ["#D3DDE8", "#C6CCD5", "#BCC7D3", "#DDE4EB"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "powders",
+ hidden: true,
+ breakInto: ["calcium", "chlorine"],
+ state: "solid",
+ tempHigh: 772,
+ reactions: {
+ "sodium_carbonate": { elem1:"foam", elem2:"colour_pick_chalk" },
+ "sodium": { elem1:"salt", elem2:"calcium" },
+ "ice": { elem2:"water", chance: 0.5 },
+ "dust": { elem2: null, chance: 0.5 },
+ "water": { elem2: null, chance: 0.8 },
+ "rotten_meat": { elem2: "meat" },
+"laser": { elem1: ["calcium","chlorine"] },
+ }
+};
+
+
+
+
+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.calcium.reactions) { // Include this block once
+ elements.calcium.reactions = {} // This creates the property if it doesn't exist
+}
+elements.sand.reactions.clay_soil = { elem1: "silt" }
+
+if (!elements.calcium.reactions) { // Include this block once
+ elements.calcium.reactions = {} // This creates the property if it doesn't exist
+}
+elements.wet_sand.reactions.water = { elem1: "quicksand", chance: 0.02 }
+
+
+if (!elements.water.reactions) { // Include this block once
+ elements.water.reactions = {} // This creates the property if it doesn't exist
+}
+elements.water.reactions.rust = { elem1: "hydrated_iron_oxide" }
+
+
+
+
+if (!elements.sun.reactions) { // Include this block once
+ elements.sun.reactions = {} // This creates the property if it doesn't exist
+}
+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
+}
+elements.aluminum.reactions.oxygen = { elem1: "alumina" }
+
+if (!elements.plastic.reactions) { // Include this block once
+ elements.plastic.reactions = {} // This creates the property if it doesn't exist
+}
+elements.plastic.reactions.radiation = { elem1: "latex", chance: 0.5 }
+
+
+
+
+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" }
+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
+}
+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:"colour_pick_chalk" },
+ "chlorine": { elem1:"salt", elem2:"carbon_dioxide" },
+ "laser": { elem1: ["carbon_dioxide","sodium","baking_soda"] },
+ }
+};
+
+
+
+
+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",
+ conduct: 1,
+ breakInto: ["silicon_shard", "silica"],
+ tempHigh: 1414,
+ reactions: {
+ "oxygen": { elem1:"silicate", elem2:"pop" },
+ "dough": { elem1:"boiling_catalyst", elem2:"pop", minTemp: 1000 },
+ }
+};
+
+elements.silt = {
+ color: ["#8a7965", "#6e604f"],
+ behavior: [
+ "XX|SW:water|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ behaviorOn: [
+ "M1%3|XX|M1%3",
+ "M1|XX|M1",
+ "XX|M1%5|XX",
+],
+ category: "land",
+ conduct: 0.5,
+ state: "solid",
+renderer: renderPresets.HEATGLOW,
+ tempHigh: 800,
+ stateHigh: "glass",
+ reactions: {
+ "water": { elem1:"carried_silt", chance: 0.5 },
+ }
+};
+
+elements.carried_silt = {
+ color: ["#8a7965", "#6e604f"],
+ behavior: [
+ "M1%3|SW:water|M1%3",
+ "XX|CH:silt%10|M1",
+ "XX|M1|XX",
+],
+ category: "states",
+hidden:true,
+ conduct: 0.5,
+ state: "solid",
+ tempHigh: 800,
+ stateHigh: "glass",
+};
+
+elements.silicon_shard = {
+ color: ["#95b1cf", "#8d9eb0"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "solid",
+ tempHigh: 1414,
+renderer: renderPresets.HEATGLOW,
+ stateHigh: "glass",
+ breakInto: ["silicon_shard", "silicon_shard", "dust", "silica"],
+ conduct: 1,
+ reactions: {
+ "oxygen": { elem1:"silicate", elem2:"pop", chance: 0.5 },
+ }
+};
+
+
+elements.boiling_catalyst = {
+ color: ["#9ed4e2", "#67a7b8"],
+ behavior: behaviors.LIQUID,
+ category: "states",
+ hidden: true,
+ state: "gas",
+ temp: 1200,
+ tempLow: 800,
+ stateLow: "catalyst",
+ reactions: {
+ "boiling_catalyst": { elem1:["steam","bubble","foam"], chance: 0.1 },
+ }
+};
+
+elements.catalyst = {
+ color: ["#9ed4e2", "#67a7b8"],
+ behavior: [
+ "XX|SW%50 AND CO:5|XX",
+ "M2|XX|M2",
+ "XX|M1 AND SW%10 AND HT:5|XX",
+],
+ behaviorOn: [
+ "XX|SW AND CO:5 AND M1%10|XX",
+ "M1 AND SW|XX|M1 AND SW",
+ "XX|M1 AND SW AND HT:5|XX",
+],
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ conduct: 1,
+ tempHigh: 1000,
+ stateHigh: "boiling_catalyst",
+ tempLow: -50,
+ stateLow: "silica",
+ reactions: {
+ "mercury": { elem1: null, chance: 0.3 },
+ "molten_plastic": { elem2: "latex_catalyst", chance: 0.3 },
+ }
+};
+
+
+elements.latex_catalyst = {
+ color: ["#8a9c9a", "#6d7877"],
+ singleColor: true,
+ behavior: behaviors.LIQUID,
+ category: "states",
+ hidden: true,
+ state: "liquid",
+ temp: 20,
+ tempLow: -20,
+ stateLow: "latex",
+ reactions: {
+ "ammonia": { elem1:["frisket"], elem2:"foam",chance:0.5 },
+ }
+};
+
+
+elements.alumina = {
+ color: ["#989ECE", "#DADAFF", "#E6E1FF"],
+ renderer: renderPresets.HEATGLOW,
+ 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: false,
+ state: "solid",
+ renderer: renderPresets.HEATGLOW,
+ tempHigh: 9500,
+ related: ["hyper_powder", "hyper_brick", "hyper_sand", "hyper_glass"],
+ density: 3300,
+ conduct: 1,
+ 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",
+ breakInto: ["hyper_aluminum", "hyper_aluminum", "hyper_aluminum", "hyper_aluminum", "hyper_powder"],
+ hardness: 0.95,
+ reactions: {
+ "steel": { elem2:"galvanized_steel" },
+ "rock_wall": { elem2:"wall" },
+ "aluminum": {elem2: "hyper_aluminum", charged:true},
+ "radiation": {elem1: "aluminum", chance:0.4},
+ }
+};
+
+elements.hyper_powder = {
+ color: ["#9baac9"],
+ behavior: function(pixel) {
+ if (pixel.start === pixelTicks) {return}
+ if (pixel.charge && elements[pixel.element].behaviorOn) {
+ pixelTick(pixel);
+ return;
+ }
+ if (!tryMove(pixel, pixel.x, pixel.y+1)) {
+ if (Math.random() < 0.5) {
+ if (!tryMove(pixel, pixel.x+1, pixel.y+1)) {
+ tryMove(pixel, pixel.x-1, pixel.y+1);
+ }
+ } else if (!tryMove(pixel, pixel.x-1, pixel.y+1)) {
+ tryMove(pixel, pixel.x+1, pixel.y+1);
+ }
+ }
+ doDefaults(pixel);
+},
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ tempHigh: 500,
+ conduct: 1,
+ burn: 40,
+ renderer: renderPresets.HEATGLOW,
+ charge: 3,
+ stateHigh: "hyper_brick",
+ hardness: 0.95,
+ reactions: {
+ "steel": { elem2:"galvanized_steel" },
+ "sand": { elem1:"hyper_sand", elem2:"flash", minTemp: 300 },
+ "rock_wall": { elem2:"wall" },
+ "aluminum": {elem2: "hyper_aluminum", charged:true},
+"radiation": {elem1: "rust", chance:0.4},
+ }
+};
+
+elements.hyper_sand = {
+ color: ["#dae8e8"],
+ behavior: [
+ "XX|CR:smoke%10|XX",
+ "XX|CH:magnesium,silicate,pop,silicate,magnesium,pop%1|XX",
+ "M2|M1 AND M1|M2",
+],
+ behaviorOn: [
+ "XX|CR:smoke%10 AND CH:magnesium>hyper_sand|XX",
+ "XX|CH:magnesium%0.01|XX",
+ "M2|M1 AND M1|M2",
+],
+ category: "land",
+ hidden: true,
+ state: "solid",
+ tempHigh: 2000,
+ conduct: 1,
+ renderer: renderPresets.HEATGLOW,
+ charge: 1,
+ stateHigh: "hyper_glass",
+ hardness: 0.45,
+ reactions: {
+ "steel": { elem2:"galvanized_steel" },
+ "rock_wall": { elem2:"wall" },
+ "aluminum": {elem2: "hyper_aluminum", charged:true},
+"radiation": {elem1: "sand", chance:0.4},
+ }
+};
+
+elements.hyper_brick = {
+ color: ["#61829e", "#80a1ad", "#6c8b96", "#698087", "#284266"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ colorPattern: textures.BRICK,
+ colorKey: {
+ "l": "#80a1ad",
+ "r": "#6c8b96",
+ "d": "#698087",
+ "w": "#284266"},
+ hidden: true,
+ state: "solid",
+renderer: renderPresets.HEATGLOW,
+ tempHigh: 9500,
+ conduct: 1,
+ 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",
+ breakInto: ["hyper_brick", "hyper_powder"],
+ hardness: 0.95,
+ reactions: {
+ "steel": { elem2:"galvanized_steel" },
+ "rock_wall": { elem2:"wall" },
+ "aluminum": {elem2: "hyper_aluminum", charged:true},
+"radiation": {elem1: "brick", chance:0.4},
+ }
+};
+
+elements.hyper_glass = {
+ color: ["#61829e", "#dae8e8", "#a3cccc"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ colorPattern: textures.GLASS,
+ colorKey: {
+ "g": "#c3e6e6",
+ "S": "#6c8b96"},
+ state: "solid",
+ alpha: 0.5,
+ tempHigh: 9500,
+renderer: renderPresets.HEATGLOW,
+ conduct: 1,
+ charge: 3,
+ stateHigh: "molten_aluminum",
+ breakInto: ["hyper_glass", "hyper_sand"],
+ hardness: 0.95,
+ reactions: {
+ "steel": { elem2:"galvanized_steel" },
+ "rock_wall": { elem2:"wall" },
+ "aluminum": {elem2: "hyper_aluminum", charged:true},
+"radiation": {elem1: "stained_glass", chance:0.4},
+ }
+};
+
+
+
+
+
+
+elements.silicate = {
+ color: ["#A6B5B8", "#A7A8A0", "#665953", "#BDDAE8"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+renderer: renderPresets.HEATGLOW,
+ hidden: true,
+ breakInto: "silica",
+ state: "solid",
+ tempHigh: 500,
+ stateHigh: "molten_silicon",
+ reactions: {
+ "alumina": { elem1:"kaolin", elem2:"kaolin" },
+ }
+};
+
+
+
+
+elements.silica = {
+ color: ["#ACAA9B", "#CAC7B6", "#979A93"],
+ behavior: behaviors.LIGHTWEIGHT,
+ behaviorOn: [
+ "M1%3|XX|M1%3",
+ "M1|XX|M1",
+ "XX|M1%5|XX",
+],
+ conduct: 0.5,
+ category: "powders",
+ hidden: true,
+renderer: renderPresets.HEATGLOW,
+ state: "solid",
+ tempHigh: 5000,
+ stateHigh: "molten_ash",
+ reactions: {
+ "head": { elem1: null, func: behaviors.KILLPIXEL2 }, //silicosis reference.
+ }
+};
+
+
+
+
+
+
+
+
+elements.kaolin = {
+ color: ["#d3e2e6", "#e1e9eb", "#ede7e4", "#fcfcfc"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ hidden: true,
+ state: "solid",
+renderer: renderPresets.HEATGLOW,
+ tempHigh: 500,
+ stateHigh: "porcelain",
+ reactions: {
+ "fired_clay": { elem1:"porcelain", elem2:"porcelain" },
+ "blood": { elem2: null },
+ "dirt": { elem1: "clay", elem2:"clay_soil" },
+ }
+};
+
+
+
+
+elements.kaolinite = {
+ color: ["#3b3b3b", "#575757", "#fcfcfc"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "solids",
+ hidden: true,
+ state: "solid",
+ tempHigh: 500,
+ stateHigh: "molten_slag",
+renderer: renderPresets.HEATGLOW,
+ breakInto: ["rock", "kaolin"],
+ reactions: {
+ "water": { elem1: "silicate", elem2:"dirty_water" },
+ }
+};
+
+
+
+
+elements.colour_pick_chalk = {
+ color: ["#FF4DFF", "#B24DFF", "#4D52FF", "#4DB0FF", "#4DFFDF", "#64FF4D", "#FFE74D", "#FF994D", "#FF5B4D", "#FF794D", "#FFB14D", "#A8FF4D", "#4DFF85", "#4DD6FF"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: true,
+ category: "solids",
+renderer: renderPresets.HEATGLOW,
+ breakInto: "colour_pick_chalk_powder",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk1 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ffaaaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder1",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk2 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ff80aa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder2",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk3 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ffffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder3",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk4 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#80ffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder4",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk5 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#aaff80"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder5",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk6 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#aaffff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder6",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk7 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#aa80ff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder7",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk8 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#80aaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder8",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk9 = {
+ name: "Chalk",
+ behavior: behaviors.WALL,
+ color: ["#ffaaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "solids",
+ breakInto: "chalk_powder9",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder1 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ffaaaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder2 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ff80aa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder3 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ffffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder4 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#80ffaa"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder5 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#aaff80"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder6 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#aaffff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder7 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#aa80ff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder8 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#80aaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.chalk_powder9 = {
+ name: "Chalk Powder",
+ behavior: behaviors.POWDER,
+ color: ["#ffaaff"],
+ stain: 0.5,
+ stainSelf: true,
+ canContain: true,
+ related: ["art", "calcium"],
+ customColor: false,
+ hidden: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.colour_pick_chalk_powder = {
+ color: ["#FF4DFF", "#B24DFF", "#4D52FF", "#4DB0FF", "#4DFFDF", "#64FF4D", "#FFE74D", "#FF994D", "#FF5B4D", "#FF794D", "#FFB14D", "#A8FF4D", "#4DFF85", "#4DD6FF"],
+ stain: 0.3,
+ behavior: behaviors.POWDER,
+ stainSelf: true,
+ customColor: true,
+ category: "powders",
+ state: "solid",
+ tempHigh: 590,
+ stateHigh: "ash",
+};
+
+
+
+
+elements.powdered_lime = {
+ color: ["#96F10E", "#BEF00F"],
+ stain: 0.2,
+ density: 2,
+ hidden: true,
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "M2|M1 AND SW:water,milk|M2",
+],
+ category: "food",
+ desc: "Mmm, yum, powder!",
+renderer: renderPresets.HEATGLOW,
+stateHigh: "ash",
+tempHigh: 1000,
+ state: "solid",
+ reactions: {
+ "water": { elem1:"foam", elem2:"limeade", chance: 0.7 },
+ "milk": { elem1:"foam", elem2:"limilk", chance: 0.4 },
+ "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.limeade = {
+ color: ["#96F10E", "#BEF00F", "#96F10E"],
+ stainSelf: true,
+ alpha: 0.9,
+ stain: 0.12,
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+ tempHigh: 105,
+ stateHigh: "foam",
+ tempLow: 0,
+ stateLow: "limeade_ice",
+ reactions: {
+ "head": { elem1: null, chance: 0.7, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.limeade_ice = {
+ color: ["#42f593", "#42f5b3", "#96F10E"],
+ singleColor: true,
+ alpha: 0.95,
+ stain: 0.1,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ temp: -7,
+ hidden: true,
+ state: "solid",
+ tempHigh: 1,
+ stateHigh: ["limeade", "slush"],
+ reactions: {
+ "head": { elem1: null, chance: 0.1, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.limilk = {
+ color: ["#d4ffe1"],
+ singleColor: true,
+ behavior: [
+ "XX|XX|XX",
+ "M2|XX|M2",
+ "M1|M1|M1",
+],
+ category: "food",
+ state: "liquid",
+ tempHigh: 105,
+ stateHigh: "foam",
+ tempLow: 0,
+ stateLow: "l_ice_cream",
+ reactions: {
+ "head": { elem1: null, chance: 0.7, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.l_ice_cream = {
+ color: ["#8cfaad", "#9effbb"],
+ singleColor: false,
+ alpha: 0.95,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ temp: -10,
+ hidden: false,
+ state: "solid",
+ tempHigh: 30,
+ stateHigh: ["limilk", "slush"],
+ breakInto: "limilkshake",
+ reactions: {
+ "head": { elem1: null, chance: 0.8, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.limilkshake = {
+ color: ["#d4ffe1"],
+ singleColor: true,
+ behavior: [
+ "XX|XX|XX",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ category: "food",
+ hidden: true,
+ state: "liquid",
+ tempHigh: 30,
+ stateHigh: "limilk",
+ reactions: {
+ "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+//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: 450,
+renderer: renderPresets.HEATGLOW,
+ 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: 5,
+ tempHigh: 450,
+ 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: "no longer stupid",
+ temp: 20,
+ tempLow: 10,
+ tempHigh: 40,
+ renderer: renderPresets.WOODCHAR,
+ stateHigh: "nut_sauce",
+ breakInto: "nut_sauce",
+ conduct: 1,
+ reactions: {
+ "head": { elem1: null, chance: 0.55, func: behaviors.FEEDPIXEL },
+ "juice": { elem1:"party_popper", elem2:"party_popper" },
+ "water": { elem1:"nut_sauce", elem2:"bubble" },
+"laser": { elem1:"almond_tree", elem2:"pop" },
+ }
+};
+
+elements.almond_tree = {
+ color: ["#403a35", "#9c836b"],
+ behavior: [
+ "CR:plant,almond_tree%0.2 AND CC:plant>#243d2b AND CC:wood>#403a35|CR:almond_tree%2 AND CC:plant>#243d2b AND CC:wood>#403a35|CR:plant,almond_tree%0.2 AND CC:plant>#243d2b AND CC:wood>#403a35",
+ "CR:almond_tree%0.5 AND CR:almond%1 AND CC:plant>#243d2b AND CC:wood>#403a35|XX|CR:almond_tree%0.5 AND CR:almond%1 AND CC:plant>#243d2b AND CC:wood>#403a35",
+ "XX|CH:almond_tree>wood%5 AND CC:wood>#403a35|XX",
+],
+ category: "life",
+ singleColor: true,
+ state: "solid",
+ density: 100,
+ temp: 20,
+ tempLow: 10,
+ tempHigh: 40,
+ renderer: renderPresets.WOODCHAR,
+ stateHigh: "dead_plant",
+ breakInto: "dead_plant",
+ conduct: 1,
+ reactions: {
+ "juice": { elem1:"party_popper", elem2:"party_popper" },
+"dirt": { elem2:"almond_tree", chance: 0.1 },
+"grass": { elem2:"almond_tree", chance: 0.1 },
+ }
+};
+
+
+
+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: 500,
+renderer: renderPresets.HEATGLOW,
+ hidden: true,
+ stateHigh: ["blaster", "floating_cloner"],
+ stateHighColor: "#EF5810",
+ stateLow: "glue",
+ conduct: 1,
+ reactions: {
+ "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+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: [
+ "XX|XX|XX",
+ "M2|XX|M2",
+ "M1|M1 AND SW:milk|M1",
+],
+ 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, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+
+
+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",
+renderer: renderPresets.WOODCHAR,
+ isFood: true,
+ hidden: true,
+ desc: "I dont think this is biologically accurate",
+ breakInto: ["maple_syrup", "maple_powder"],
+ stateHigh: ["ash", "smoke", "baked_breeze"],
+ 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: "silica",
+ 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.terracotta_brick = {
+ color: ["#B97140", "#c98c63"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ colorPattern: textures.BRICK,
+ colorKey: {
+ "l": "#B97140",
+ "r": "#cf8859",
+ "d": "#8a6746",
+ "w": "#59330e"},
+ state: "solid",
+ tempHigh: 500,
+ stateHigh: "molten_terracotta",
+ breakInto: ["terracotta", "silica"],
+ hardness: 0.95,
+};
+
+
+elements.heated_terracotta = {
+ color: "#db773d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "states",
+ state: "solid",
+ temp: 500,
+ stateHighName: "molten_terracotta",
+ renderer: renderPresets.HEATGLOW,
+ tempHigh: 1000,
+ hidden: true,
+ tempLow: 20,
+ stateLow: ["terracotta"],
+};
+
+
+
+
+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, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+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: [
+ ["XX","XX","XX"],
+ ["XX","XX","XX"],
+ ["XX","XX","XX"]
+ ],
+ behaviorOn: [
+ ["CR:null","XX","CR:null"],
+ ["XX","XX","XX"],
+ ["CR:null","XX","CR:null"]
+ ],
+ behavior: behaviors.WALL,
+ category: "machines",
+ state: "solid",
+ desc: "null",
+ tempLow: -40,
+ breakInto: "emp_bomb",
+ stateLow: "unknown",
+ conduct: 0.2,
+ 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.5,
+ 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" },
+ "colour_pick_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_shard" },
+ "clay": { elem1: "foam", elem2: "porcelain_shard" },
+ "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_shard" },
+ "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.beta_purificanol = {
+ color: "#ffffff",
+ behavior: behaviors.GAS,
+ category: "soaps",
+ viscosity: 100,
+ state: "gas",
+ desc: "soap 3.0, but liquid",
+ extinguish: true,
+ stain: -0.5,
+ 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" },
+ "colour_pick_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_shard" },
+ "clay": { elem1: "foam", elem2: "porcelain_shard" },
+ "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_shard" },
+ "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, func: behaviors.FEEDPIXEL },
+ "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: [
+ "CR:electric%0.5|CR:electric%1|CR:electric%0.5",
+ "XX|XX|XX",
+ "M2|M1|M2",
+],
+ category: "special",
+ state: "liquid",
+ tempHigh: 999999,
+ stateHigh: "plasma",
+ tempLow: -25,
+ reactions: {
+ "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: "sweet_savour",
+ renderer: renderPresets.WOODCHAR,
+ conduct: 1,
+ breakInto: "banana_milk",
+ breakIntoColor: "#d8b284",
+ reactions: {
+ "head": { elem1: null, chance: 0.35, func: behaviors.FEEDPIXEL },
+ "milk": { elem1: null, elem2: "banana_milk" },
+ }
+};
+
+
+
+
+elements.banana_milk = {
+ color: "#fdfdce",
+ behavior: [
+"XX|XX|XX",
+"M2|XX|M2",
+"M1|M1 AND CH:head>asl_hd%5|M1",
+],
+ category: "food",
+ state: "liquid",
+ density: 10000,
+ charge: 1,
+ superconductAt: 100,
+ burn: 100,
+ viscosity: 29,
+ tempLow: -7,
+ hidden: true,
+ stateLowName: "banana_ice",
+ tempHigh: 239,
+ stateHigh: "steam",
+ fireColor: "#DD00FF",
+ burnInto: "sour_scent",
+ conduct: 1,
+ reactions: {
+ "head": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL },
+ "asl_hd": { elem1: null, chance: 0.9, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+//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 birds and worms.",
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|EX:5>firework|XX",
+ "XX|XX|XX",
+],
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "solid",
+ foodNeed: 7,
+ breakInto: ["fire", "cooked_meat", "slime"],
+ glow: true,
+ temp: 300,
+ baby: "pyrus_minimus",
+ singleColor: true,
+ fireColor: "#ff5b14",
+ conduct: 1,
+ reactions: {
+ "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 },
+ }
+};
+
+
+
+
+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" },
+ "ash": { elem1: "ashen_arsenic", elem2: "flash" },
+ }
+};
+
+elements.ashen_arsenic = {
+ color: ["#59544e"],
+ behavior: [
+ "XX|CR:poison_gas%1|XX",
+ "XX|XX|XX",
+ "M2|M1|M2",
+],
+ category: "powders",
+ renderer: renderPresets.WOODCHAR,
+ hidden: true,
+ state: "solid",
+ temp: 40,
+ stateHigh: "explosion",
+ fireColor: "#9ed1db",
+ tempHigh: 300,
+ reactions: {
+ "water": { elem1: "arsenic", elem2: "dirty_water", chance: 0.5 },
+ "radiation": { elem1: "cindarsenic", chance: 0.5 },
+ }
+};
+
+elements.cindarsenic = {
+ color: ["#b8561d", "#8a6651", "#606660"],
+ behavior: [
+ "XX|CR:radiation,fire%2|XX",
+ "XX|XX|XX",
+ "M2|M1|M2",
+],
+ category: "weapons",
+ state: "solid",
+ temp: 40,
+ burn: 40,
+ burnTime: Infinity,
+ renderer: renderPresets.WOODCHAR,
+ fireColor: "#c9248d",
+ tempHigh: 400,
+ reactions: {
+ "water": { elem1: "ashen_arsenic", elem2: "dirty_water", chance: 0.3 },
+ }
+};
+
+
+
+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, func: behaviors.KILLPIXEL2 },
+ }
+};
+
+
+
+
+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, func: behaviors.KILLPIXEL2 },
+ }
+};
+
+
+
+
+elements.contaminol = {
+ color: "#005F00",
+ behavior: [
+ "XX|CR:sour_scent,radiation%2|XX",
+ "M1|XX|M1",
+ "M2|M1|M2"
+],
+ 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": { elem1: "poison", chance: 0.05, func: behaviors.KILLPIXEL2 },
+ "volatilium": { elem2: "beryllium_volatilium_alloy" },
+ }
+};
+
+
+
+
+elements.beryllium_oxide = {
+ color: "#c9c9d1",
+ behavior: [
+ "XX|CO:3|XX",
+ "CO:3|HT:2|CO:3",
+ "M2|M1|M2",
+],
+ category: "powders",
+ state: "solid",
+ temp: 20,
+ insulate: 1,
+ conduct: 10,
+ reactions: {
+ "molten_copper": { elem1: "superwire", elem2: "foam" },
+ "molten_tungsten": { elem1: "superwire", elem2: "foam" },
+ }
+};
+
+
+
+
+elements.superwire = {
+ color: ["#4d4d4d", "#6e140d", "#0d516e", "#3e484d"],
+ desc: "A versatile, strong wire that is still breakable.",
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+],
+ singleColor: true,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ tempHigh: 9000,
+ noMix: true,
+ stateHigh: "molten_slag",
+ insulate: 1,
+ conduct: 2,
+ breakInto: "superwire_end",
+ tempLow: 0,
+ stateLow: "off_superwire",
+ hardness: 0.99,
+};
+
+
+
+
+elements.hyperwire = {
+ color: ["#94a6b0", "#cfdde6", "#cccccc", "#edde58", "#d1bf19"],
+ desc: "A versatile, unbreakable wire.",
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+],
+ singleColor: true,
+ noMix: true,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ tempHigh: 9000,
+ stateHigh: "porcelain",
+ insulate: 1,
+ conduct: 2,
+ tempLow: -273,
+ stateLow: ["superwire_end", "galvanized_steel"],
+ hardness: 1,
+};
+
+
+
+
+elements.superwire_end = {
+ name: "StrippedWire",
+ color: ["#4d4d4d", "#6e140d", "#e3591e", "#732e10"],
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "SH%1 AND CR:electric%1|XX|SH%1 AND CR:electric%1",
+ "CR:electric%1|CH:oxidised_copper%1|CR:electric%1",
+ "SH%1 AND CR:electric%1|XX|SH%1 AND CR:electric%1",
+],
+ category: "states",
+ hidden: true,
+ state: "solid",
+ temp: 20,
+ tempHigh: 500,
+ stateHigh: ["molten_slag", "electric"],
+ insulate: 0,
+ conduct: 4,
+ tempLow: 0,
+ stateLow: "off_superwire",
+ hardness: 0.3,
+};
+
+
+
+
+elements.off_superwire = {
+ name: "DefectiveWire",
+ color: ["#208a2a", "#e3591e", "#732e10"],
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|CH:rust%10|XX",
+ "XX|XX|XX",
+],
+ singleColor: true,
+ category: "states",
+ state: "solid",
+ hidden: true,
+ breakInto: "rust",
+ stateHigh: "molten_metal_scrap",
+ tempHigh: 570,
+ temp: 20,
+ insulate: 1,
+ conduct: 0,
+ hardness: 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": { elem1: "electric", func: behaviors.KILLPIXEL2 }
+ }
+};
+
+
+
+
+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, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.brioche_steam = {
+ color: "#ab8c60",
+ behavior: [
+ "M1|M1|M1",
+ "M1|CH:brioche_tcloud%2|M1",
+ "M1|M1|M1"
+],
+ category: "gases",
+ state: "gas",
+ density: 720,
+ temp: 80,
+ tempLow: 30,
+ desc: "how does this make any sense?",
+ stateLow: ["brioche"],
+ isFood: true,
+};
+
+
+
+
+elements.brioche_tcloud = {
+ color: "#ab8c60",
+ name: "BriocheCloud",
+ behavior: [
+ "XX|M1|XX",
+ "XX|CH:brioche_cloud%5|XX",
+ "XX|XX|XX"
+],
+ category: "gases",
+ state: "gas",
+ density: 720,
+ temp: 40,
+ tempLow: 20,
+ tempHigh: 60,
+ desc: "how does this make any sense??",
+ stateLow: ["fancy_flour"],
+ stateHigh: ["brioche_storm"],
+ isFood: true,
+};
+
+
+
+
+elements.brioche_cloud = {
+ color: "#ab8c60",
+ hidden: true,
+ behavior: [
+ "XX|M1%3|XX",
+ "M1%5|XX|M1%5",
+ "XX|CR:brioche%3|XX"
+],
+ category: "gases",
+ state: "gas",
+ density: 720,
+ temp: 40,
+ tempLow: 20,
+ tempHigh: 100,
+ desc: "how does this make any sense??",
+ stateLow: ["fancy_flour"],
+ stateHigh: ["brioche_storm"],
+ isFood: true,
+};
+
+
+
+
+elements.brioche_storm = {
+ color: "#825634",
+ behavior: [
+ "XX|XX|XX",
+ "M1%5|XX|M1%5",
+ "XX|CR:brioche%3 AND CR:heat_ray%0.1 AND CR:melted_butter%3 AND CR:melted_chocolate%5|XX"
+],
+ category: "gases",
+ insulate: true,
+ state: "gas",
+ density: 720,
+ temp: 100,
+ tempLow: 40,
+ tempHigh: 350,
+ desc: "how does this make any sense???",
+ stateLow: ["brioche_cloud"],
+ stateHigh: ["brioche_disaster"],
+ isFood: true,
+};
+
+
+
+
+elements.brioche_disaster = {
+ color: "#823934",
+ behavior: [
+ "XX|XX|XX",
+ "M1%5|XX|M1%5",
+ "XX|CR:brioche AND CR:heat_ray%5 AND CR:melted_butter AND CR:melted_chocolate|XX"
+],
+ category: "gases",
+ insulate: true,
+ state: "gas",
+ density: 720,
+ temp: 350,
+ tempLow: 100,
+ desc: "how does this make any sense????????????????????????",
+ stateLow: ["brioche_storm"],
+ 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, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.brioche = {
+ color: ["#c2770e", "#b06227"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1 AND SW:brioche_cloud AND SW:brioche_tcloud|XX"
+],
+ category: "food",
+ temp: 30,
+ tempHigh: 80,
+ tempLow: 10,
+ stateHigh: ["baked_breeze", "ash"],
+ stateLow: ["cold_brioche"],
+ burn: 55,
+ isFood: true,
+ breakInto: "fancy_flour",
+ reactions: {
+ "head": { elem1: null, chance: 0.7, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+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%5 AND EX:10>brick_rubble,radiation%1|XX|M1%5 AND EX:10>brick_rubble,radiation%1",
+ "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: ["baked_breeze", "smoke"],
+};
+
+
+
+
+elements.irradiate = {
+ color: ["#2edb93", "#00ff00"],
+ category: "tools",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:radiation|XX",
+ "XX|XX|XX",
+],
+};
+
+
+
+
+
+elements.pyrane = {
+ color: "#fc7c19",
+ behavior: [
+ "M1|M1 AND CR:fire%10|M1",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ 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", "#ff9169", "#eb6434"],
+ behavior: behaviors.MOLTEN,
+ stain: 0.3,
+ category: "states",
+ temp: 137,
+ tempLow: -20,
+ stateLow: ["fyrium"],
+ reactions: {
+ "water": { elem1:"explosion", elem2: "steam" }
+ }
+};
+
+
+
+
+elements.nitrol_fuel = {
+ color: "#4f180e",
+ behavior: [
+ "XX|XX|XX",
+ "M2|XX|M2",
+ "M1|M1 AND SW:water,wood|M1",
+],
+ 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: [
+ ["XX", "XX", "XX"],
+ ["M2", "XX", "M2"],
+ ["M1", "M1 AND SW:water AND CH:water>hydroid%10", "M1"]
+ ],
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -20,
+ density: 12,
+ conduct: 1,
+ stain: 0.7,
+ desc: "this is NOT water",
+ stateHigh: ["pyrane", "steam"],
+ stateLow: ["hydroid_ice"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5 },
+ "head": { elem2: "hydroid", chance: 0.5 },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem2: "hydroid_ice" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ "milk": { elem1: "lactoid", elem2: "lactoid" }
+ }
+};
+
+
+
+
+
+
+
+
+//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 skibidi-edited 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.tweakium = {
+ color: "#22dfce",
+ behavior: [
+ "XX|M1|XX",
+ "M1|CH:liquid_light%5|M1",
+ "XX|M2|XX",
+],
+ category: "special",
+ state: "gas",
+ density: 720,
+ temp: 80,
+ reactions: {
+ "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 },
+ }
+};
+
+
+
+
+elements.tocopheryl_gas = {
+ color: "#96e3d4",
+ behavior: behaviors.GAS,
+ category: "gases",
+ state: "gas",
+ density: 720,
+ temp: 80,
+ tempLow: 0,
+ stateLow: ["tocopherol"],
+};
+
+
+
+
+elements.sunlight = {
+ color: "#ffc9c9",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:light%0.01 AND DL%1 AND CO:1|XX",
+ "M1 AND BO|M1 AND BO|XX",
+],
+ category: "energy",
+ state: "gas",
+ glow: true,
+ density: 720,
+ stain: 0.5,
+ temp: 5600,
+ tempLow: -273,
+ stateLow: ["liquid_light"],
+ reactions: {
+ "water": { elem1:null, elem2:"steam" },
+ }
+};
+
+
+
+
+elements.tocopheryl_acetate = {
+ color: "#cffdff",
+ behavior: [
+ "XX|XX|XX",
+ "M2|XX|M2",
+ "M1|M1 AND SW:water,zinc|M1",
+],
+ category: "liquids",
+ viscosity: 999999,
+ state: "liquid",
+ density: 720,
+ temp: 30,
+ tempHigh: 96,
+ stateHigh: ["tocopheryl_gas"],
+ reactions: {
+ "zinc": { elem1:"sunscreen", elem2:"sunscreen" },
+ "laser": { elem1:"acetatine" },
+ "water": { elem1:"soapy_water", elem2:"soapy_water" },
+ }
+};
+
+elements.acetatine = {
+ color: "#7b8b9c",
+ alpha: 0.5,
+ glow: false,
+ behavior: [
+ "XX|SW:water,tocopheryl_acetate|XX",
+ "XX|XX|XX",
+ "M2|M1|M2",
+],
+ category: "powders",
+ state: "solid",
+ density: 720,
+ temp: 15,
+ tempHigh: 154,
+ stateHigh: ["tocopheryl_gas"],
+ reactions: {
+ "plastic": { elem1:"flash", elem2:"sr_pl" },
+ }
+};
+
+
+
+elements.nahnium = {
+ color: ["#bfa6f5", "#b5a5d9"],
+ behavior: [
+ "HT:5|CR:tweakium%1|HT:5",
+ "CR:liquid_light%5|XX|CR:liquid_light%5",
+ "XX|M1|XX",
+],
+ category: "powders",
+ temp: 30,
+ tempHigh: 80,
+ tempLow: 10,
+ reactions: {
+ "nahnium": { elem1:"nahnium", elem2:"glass_shard", chance: 0.01 },
+ }
+};
+
+
+
+
+elements.sunscreen = {
+ color: "#ffeeff",
+ behavior: [
+ "XX|XX|XX",
+ "M2|XX|M2",
+ "M1|M1 AND SW:water|M1",
+],
+ category: "liquids",
+ temp: 0,
+ stain: -0.1,
+ tempHigh: 9600,
+ stateHigh: ["tocopheryl_gas"],
+ reactions: {
+ "light": { elem2: null },
+ "sunlight": { elem2: null },
+ "water": { elem1:"soapy_water", elem2:"soapy_water" },
+ }
+};
+
+
+
+
+elements.stupidine = {
+ color: "#4e4b75",
+ behavior: [
+ ["XX","CR:sweet_savour%1","XX"],
+ ["XX","XX","XX"],
+ ["XX","M1","XX"]
+],
+ category: "solids",
+ state: "solid",
+ temp: 20,
+ tempHigh: 137,
+ stateHigh: "liquid_stupidine",
+ tempLow: -31,
+ stateLow: "activated_stupidine",
+ reactions: {
+ "iron": { elem2:"stupid", chance:0.01 },
+ "light": { elem2:"nahnium", 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: [
+ "M1|M1 AND CR:sour_scent%1|M1",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ category: "gases",
+ state: "gas",
+ temp: 500,
+ tempHigh: 1000,
+ stateHigh: ["fireball", "explosion"],
+ tempLow: 200,
+ stateLow: "liquid_stupidine",
+};
+
+
+
+
+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", func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.skibidine = {
+ color: ["#51649c", "#949c51"],
+ behavior: [
+ "XX|SW:carbon_dioxide|XX",
+ "M2|XX|M2",
+ "M1|M1 AND SW:carbon_dioxide|M1",
+],
+ category: "liquids",
+ state: "liquid",
+ tempHigh: 250,
+ stateHigh: "skibidiness",
+ 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"},
+ }
+};
+
+
+
+
+elements.right_missile = {
+ color: ["#8a9499", "#9e9e9e", "#d1d1d1"],
+ category: "missiles",
+ 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: "missiles",
+ 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"],
+];
+
+
+
+
+elements.blessing_missile_right = {
+ color: ["#47446e", "#3a32a8"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|M1 AND EX:20>blessed_explosion",
+ "XX|XX|XX",
+],
+ category: "missiles",
+ state: "solid",
+ temp: 40,
+ tempHigh: 2000,
+ stateHigh: "bless",
+ breakInto: "bless",
+ fireColor: ["#ff00bb", "#ff80bb", "#ffffbb", "#00ffbb", "#bb00ff", "#80bb80"],
+ fireElement: "blessed_fire",
+ conduct: 10,
+};
+
+
+
+
+elements.blessing_missile_left = {
+ color: ["#47446e", "#3a32a8"],
+ behavior: [
+ "XX|XX|XX",
+ "M1 AND EX:20>blessed_explosion|XX|XX",
+ "XX|XX|XX",
+],
+ category: "missiles",
+ state: "solid",
+ temp: 40,
+ tempHigh: 2000,
+ stateHigh: "bless",
+ breakInto: "bless",
+ fireColor: ["#ff00bb", "#ff80bb", "#ffffbb", "#00ffbb", "#bb00ff", "#80bb80"],
+ fireElement: "blessed_fire",
+ conduct: 10,
+};
+
+
+
+
+elements.blessed_explosion = {
+ color: ["#47446e", "#ffff00"],
+ alpha: 0.5,
+ behavior: [
+ "CR:bless%3.5|CR:bless%3.5|CR:bless%3.5",
+ "CR:bless%3.5|CH:bless,bless,cooked_meat,brioche,chocolate%5|CR:bless%3.5",
+ "CR:bless%3.5|CR:bless%3.5|CR:bless%3.5",
+],
+ category: "weapons",
+ state: "gas",
+ temp: 40,
+ breakInto: "bless",
+ conduct: 10,
+};
+
+
+
+
+elements.blessed_fire = {
+ color: ["#ff00bb", "#ff80bb", "#ffffbb", "#00ffbb", "#bb00ff", "#80bb80"],
+ alpha: 0.5,
+ behavior: [
+ "CR:bless%3.5 AND M1|CR:bless%3.5 AND M1|CR:bless%3.5 AND M1",
+ "CR:bless%3.5|CR:bless%3.5%10 AND DL%5|CR:bless%3.5",
+ "CR:bless%3.5|CR:bless%3.5|CR:bless%3.5",
+],
+ category: "energy",
+ state: "gas",
+ temp: 40,
+ breakInto: "bless",
+ conduct: 10,
+};
+
+
+
+
+elements.blessing_nuke = {
+ color: ["#47446e", "#3a32a8"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1 AND EX:42>blessed_explosion|XX",
+],
+ category: "weapons",
+ state: "solid",
+ temp: 40,
+ tempHigh: 2000,
+ stateHigh: "bless",
+ breakInto: "bless",
+ fireColor: ["#ff00bb", "#ff80bb", "#ffffbb", "#00ffbb", "#bb00ff", "#80bb80"],
+ fireElement: "blessed_fire",
+ conduct: 10,
+};
+
+
+
+
+elements.blessing_firework = {
+ color: ["#f53874"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|CH:b_flyerwork|XX",
+ "XX|XX|XX",
+],
+ category: "special",
+ state: "solid",
+ temp: 40,
+ tempHigh: 2000,
+ stateHigh: "bless",
+ breakInto: "bless",
+ burnInto: "b_flyerwork",
+ buren: 100,
+ fireColor: ["#ff00bb", "#ff80bb", "#ffffbb", "#00ffbb", "#bb00ff", "#80bb80"],
+ fireElement: "blessed_fire",
+ conduct: 1,
+};
+
+elements.b_flyerwork = {
+ color: ["#eb4034"],
+ name: "Blessing Firework",
+ hidden: true,
+ behavior: [
+ "XX|M1 AND M1 AND SW AND EX:5>blessed_explosion AND LB:bless,blessed_fire%5|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+],
+ category: "states",
+ state: "solid",
+ temp: 40,
+ tempHigh: 2000,
+ stateHigh: "bless",
+ breakInto: "bless",
+ fireColor: ["#ff00bb", "#ff80bb", "#ffffbb", "#00ffbb", "#bb00ff", "#80bb80"],
+ fireElement: "blessed_fire",
+ conduct: 1,
+};
+
+
+
+
+elements.brioche_nuke = {
+ color: ["#bd6019", "#874009"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1 AND EX:33>brioche_explosion|XX",
+],
+ category: "weapons",
+ state: "solid",
+ temp: 10,
+};
+
+
+
+
+elements.brioche_explosion = {
+ color: ["#bd6019", "#874009"],
+ behavior: [
+ "CR:pop|CR:melted_butter%3|CR:pop",
+ "CR:brioche%3|CH:brioche|CR:brioche%3",
+ "CR:pop|CR:melted_butter%3|CR:pop",
+],
+ category: "food",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.dirt_floor = {
+ color: ["#6e3b0e"],
+ behavior: [
+ "XX|M2 AND C2:dirt_floor2|XX",
+ "XX|XX|M1 AND LB:dirt,dirt,dirt,dirt,dirt,dirt,rock AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.dirt_floor2 = {
+ color: ["#b05e17"],
+ behavior: [
+ "XX|M2 AND C2:grass_floor|XX",
+ "XX|XX|M1 AND LB:dirt,dirt,dirt,dirt,sand,sand,rock,sand AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ hidden: true,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.grass_floor = {
+ color: ["#107312"],
+ behavior: [
+ "XX|M2 AND C2:grass_floor2|XX",
+ "XX|XX|M1 AND LB:grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,seeds,mulch,grass,dirt AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ category: "machines",
+ hidden: true,
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.dirt_floor_alt = {
+ color: ["#6e3b0e"],
+ behavior: [
+ "XX|M2 AND C2:dirt_floor2_a|XX",
+ "XX|XX|M1 AND LB:dirt,dirt,dirt,dirt,sand,sand,rock AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.dirt_floor2_a = {
+ color: ["#b05e17"],
+ behavior: [
+ "XX|M2 AND C2:grass_floor_a|XX",
+ "XX|XX|M1 AND LB:dirt,dirt,dirt,dirt,sand,sand,rock,worm AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ hidden: true,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.grass_floor_a = {
+ color: ["#107312"],
+ behavior: [
+ "XX|M2 AND C2:grass_floor2_a|XX",
+ "XX|XX|M1 AND LB:grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,grass,seeds,mulch,grass,ant,dirt AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ category: "machines",
+ hidden: true,
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.grass_floor2 = {
+ color: ["#17b019"],
+ behavior: [
+ "XX|M2 AND C2:sapling|XX",
+ "XX|XX|M1 AND LB:grass,grass,grass,grass,grass,grass,grass,grass,seeds,grass AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ hidden: true,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.grass_floor2_a = {
+ color: ["#17b019"],
+ behavior: [
+ "XX|M2 AND C2:sapling|XX",
+ "XX|XX|M1 AND LB:grass,grass,grass,grass,grass,grass,grass,grass,seeds,grass,ant,bee AND BO",
+ "XX|XX|XX",
+],
+ breakInto: null,
+ hidden: true,
+ category: "machines",
+ state: "solid",
+ temp: 20,
+};
+
+
+
+
+elements.solar_panel = {
+ color: ["#88a383"],
+ behavior: [
+ "XX|CH:sunlight,light>stored_electric|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ tempHigh: 2000,
+ stateHigh: ["molten_gallium", "molten_glass", "light"],
+ breakInto: ["gallium", "glass_shard", "rust"],
+ conduct: 1,
+};
+
+
+
+
+elements.stored_electric = {
+ color: ["#88a383"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:electric%5|XX",
+ "M1|XX|M1",
+],
+ category: "energy",
+ state: "gas",
+ temp: 20,
+ conduct: 1,
+};
+
+
+
+
+elements.iodic_acid = {
+ color: ["#332255"],
+ behavior: [
+ "XX|CR:bubble%0.01 AND CH:foam%1 AND CH:iodic_acid%10|XX",
+ "M1%5|CH:iodic_vapour%0.4|M1%5",
+ "M1|HT:4 AND CH:foam%1 AND CH:iodic_acid%4.5 AND M1 AND SW:water|M1",
+],
+ category: "liquids",
+ tempHigh: 13500,
+ stateHigh: "iodic_vapour",
+ state: "liquid",
+ temp: 20,
+ tempLow: -5,
+ stateLow: "nahnium",
+ stateLowColor: "#604d7d",
+ conduct: 1,
+ stain: -0.4,
+ reactions: {
+ "bless": { elem1: "glass_shard" },
+ }
+};
+
+
+
+
+elements.iodic_vapour = {
+ color: ["#5522cc"],
+ behavior: [
+ "M1|M1%5|M1",
+ "M1%5|CH:iodic_acid%0.4|M1%5",
+ "M1|M1%5|M1",
+],
+ category: "gases",
+ state: "gas",
+ temp: 20,
+ conduct: 1,
+ tempHigh: 15,
+ stateHigh: "iodic_acid",
+ stain: 0.4,
+ reactions: {
+ "bless": { elem1: "oxygen" },
+ }
+};
+
+
+
+
+
+
+
+
+elements.colour_magma = {
+ color: ["#ff4d4d","#ffac4d","#ffff4d","#4dff4d","#4dffff","#4d4dff","#ff4dff"],
+ onPlace: behaviors.DO_TICK,
+ tick: function(pixel) {
+ behaviors.MOLTEN(pixel);
+ if (pixel.start-1 <= pixelTicks) {
+ if (pixel.colorstart === undefined) {
+ pixel.colorstart = pixel.start;
+ }
+ pixel.color = "hsl(" + pixel.colorstart + ",100%,65%)";
+ }
+ },
+ burning: true,
+ burnTime: Infinity,
+ fireColor: ["#FF4DFF", "#B24DFF", "#4D52FF", "#4DB0FF", "#4DFFDF", "#64FF4D", "#FFE74D", "#FF994D", "#FF5B4D", "#FF794D", "#FFB14D", "#A8FF4D", "#4DFF85", "#4DD6FF"],
+ temp: 1000,
+ category: "liquids",
+ state: "solid",
+ renderer: renderPresets.MOLTEN,
+ density: 2725,
+ tempLow: 800,
+ stateLow: "colour_rock",
+};
+
+
+
+
+elements.colour_rock = {
+ color: ["#ff4d4d","#ffac4d","#ffff4d","#4dff4d","#4dffff","#4d4dff","#ff4dff"],
+ onPlace: behaviors.DO_TICK,
+ tick: function(pixel) {
+ behaviors.STURDYPOWDER(pixel);
+ if (pixel.start-1 <= pixelTicks) {
+ if (pixel.colorstart === undefined) {
+ pixel.colorstart = pixel.start;
+ }
+ pixel.color = "hsl(" + pixel.colorstart + ",70%,45%)";
+ }
+ },
+ category: "land",
+ state: "solid",
+ renderer: renderPresets.HEATGLOW,
+ density: 2520,
+ tempHigh: 950,
+ stateHigh: "colour_magma",
+ breakInto: ["color_sand", "color_sand", "color_sand", "bead"],
+};
+
+
+
+
+elements.lactoid = {
+ color: ["#deeeff"],
+ behavior: [
+ "XX|XX|XX",
+ "M1 AND SW:water AND CH:water>hydroid%5 AND CH:hydroid>lactoid%1 AND CH:milk>lactoid%10|XX|M1 AND SW:water AND CH:water>hydroid%5 AND CH:hydroid>lactoid%1 AND CH:milk>lactoid%10",
+ "M1|M1 AND SW:water AND CH:water>hydroid%5 AND CH:hydroid>lactoid%1 AND CH:milk>lactoid%10|M1",
+],
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -25,
+ density: 12,
+ conduct: 1,
+ stain: 0.7,
+ desc: "this is NOT milk",
+ stateHigh: ["pyrane", "steam", "salt"],
+ stateLow: ["lactoid_ice"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "head": { elem1: null, elem2: "hydroid", chance: 0.01, func: behaviors.FEEDPIXEL },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem1: "lactoid_ice", elem2: "lactoid_ice" },
+ "slush": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ }
+};
+
+
+
+
+elements.lactoid_ice = {
+ color: ["#bacbe0"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ category: "states",
+ hidden: true,
+ state: "solid",
+ temp: -25,
+ tempHigh: -20,
+ density: 12,
+ stain: 0.7,
+ stateHigh: ["lactoid"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "head": { elem1: null, elem2: "hydroid", chance: 0.5, func: behaviors.FEEDPIXEL },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem1: "lactoid_ice", elem2: "lactoid_ice" },
+ "slush": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ }
+};
+
+
+
+
+elements.hydroid_ice = {
+ color: ["#316787"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ category: "states",
+ hidden: true,
+ state: "solid",
+ temp: -20,
+ tempHigh: -18,
+ density: 12,
+ stain: 0.7,
+ stateHigh: ["hydroid"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "head": { elem1: null, elem2: "hydroid", chance: 0.5, func: behaviors.FEEDPIXEL },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem2: "hydroid_ice" },
+ "ice_cream": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ }
+};
+
+
+
+
+elements.hydroid_milkshake = {
+ color: ["#69acff", "#94b2d6", "#699bff"],
+ behavior: [
+ "XX|M1%0.1|XX",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -40,
+ stateLow: "hydroid_ice",
+ density: 12,
+ conduct: 1,
+ stain: 0.7,
+ desc: "somehow edible",
+ stateHigh: ["pyrane", "steam", "salt", "sugar"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "head": { elem1: null, func: behaviors.FEEDPIXEL }
+ }
+};
+
+
+
+
+elements.lime = {
+ color: ["#63f20a", "#57cf0c"],
+ behavior: behaviors.POWDER,
+ category: "life",
+ state: "solid",
+ temp: 20,
+ tempHigh: 80,
+ renderer: renderPresets.WOODCHAR,
+ stateHigh: ["steam", "fragrance"],
+ breakInto: ["lime_juice"],
+ stateHighColor: "#ccff00",
+ reactions: {
+ "head": { elem1: null, chance: 0.065, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.lime_juice = {
+ color: ["#75ff1f", "#a5ff52"],
+ behavior: behaviors.LIQUID,
+ singleColor: true,
+ category: "food",
+ hidden: true,
+ state: "liquid",
+ temp: 20,
+ tempHigh: 80,
+ stateHigh: ["steam", "fragrance"],
+ stateHighColor: "#ccff00",
+ reactions: {
+ "head": { elem1: "blood", elem2: null, chance: 0.1, func: behaviors.KILLPIXEL2 },
+ "sugar": { elem1: "limeade", elem2: null, chance: 0.1 },
+ "pilk": { elem1: "lilk", elem2: "lilk", chance: 0.3 },
+ "milk": { elem1: null, elem2: "butter", chance: 0.1 },
+ }
+};
+
+
+
+
+elements.lilk = {
+ color: ["#0dd650"],
+ desc: "Dairy free! Contains peanuts.",
+ behavior: [
+ "XX|XX|XX",
+ "M1%0.1|XX|M1%0.1",
+ "M1%1|M1%5|M1%1",
+],
+ singleColor: true,
+ density: 400,
+ category: "food",
+ hidden: true,
+ state: "liquid",
+ temp: 20,
+ tempHigh: 80,
+ stateHigh: ["steam", "fragrance"],
+ stateHighColor: "#ccff00",
+ stateLow: ["nut_butter"],
+ stateLowColor: "#0dd650",
+ reactions: {
+ "head": { elem1: null, chance: 0.5, func: behaviors.FEEDPIXEL },
+ "lime_juice": { elem1: "lilk", elem2: "lilk", chance: 0.3 },
+ "pilk": { elem1: "lilk", elem2: "lilk", chance: 0.3 },
+ }
+};
+
+
+
+
+//scents
+
+
+
+
+elements.sour_scent = {
+ color: "#eecc00",
+ behavior: [
+ "M1|M1|M1",
+ "M1|XX|M1",
+ "M1|M1 AND CH:plant,grass,sapling,flower_seed,petal,vine>dead_plant%5|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ tempLow: -5,
+ stateLow: ["sour_sauce"],
+ reactions: {
+ "head": { elem1: null },
+ }
+};
+
+elements.sour_sauce = {
+ color: "#e3b317",
+ behavior: [
+ "XX|XX|XX",
+ "M1|XX|M1",
+ "M1|M1 AND CH:plant,grass,sapling,flower_seed,petal,vine>dead_plant%1|M1",
+],
+ hidden: false,
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ stain: 0.3,
+ tempHigh: 50,
+ stateHigh: ["sour_scent"],
+ reactions: {
+ "head": { elem1: null },
+ }
+};
+
+elements.cremoid = {
+ color: ["#f2fffe"],
+ behavior: [
+ "XX|SW:milk,lactoid,butyroid,melted_butter,water AND CR:bubble%1|XX",
+ "M1 AND SW:water|CH:butyroid%0.1|M1 AND SW:water",
+ "M1|M1|M1",
+],
+ category: "food",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -25,
+ density: 12,
+ conduct: 1,
+ desc: "this is NOT cream",
+ stateHigh: ["pyrane", "steam"],
+ stateLow: ["icecream", "hydroid_milkshake"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "head": { elem1: null, chance: 0.01, func: behaviors.FEEDPIXEL },
+ "ice": { elem1: "lactoid_ice", elem2: "lactoid_ice" },
+ "slush": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ }
+};
+
+elements.butyroid = {
+ color: ["#a3f1ff"],
+ behavior: [
+ "XX|XX|XX",
+ "M1%2|CH:butter%0.1|M1%2",
+ "M1|M1|M1",
+],
+ category: "food",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 33,
+ density: 120,
+ conduct: 1,
+ desc: "this is NOT cream",
+ stateHigh: ["pyrane", "melted_butter"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "head": { elem1: null, chance: 0.01, func: behaviors.FEEDPIXEL },
+ }
+};
+
+elements.sweet_savour = {
+ color: "#ff1133",
+ behavior: [
+ "M1|M1|M1",
+ "M1|DL%3|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ tempLow: -5,
+ stateLow: ["sweet_syrup"],
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+elements.sweet_syrup = {
+ color: "#d11204",
+ behavior: [
+ "XX|XX|XX",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "food",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ stain: 0.1,
+ stateHigh: ["sugar"],
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+elements.hydrated_iron_oxide = {
+ color: "#bd5515",
+ behavior: [
+ "XX|XX|XX",
+ "M1|XX|M1",
+ "M1|M1 AND CH:plant,grass,sapling,flower_seed,petal,vine>dead_plant%1 AND CH:iron,steel,aluminium>rust AND SW:rust,blood,infection%5|M1",
+],
+ hidden: false,
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ stain: 0.1,
+ tempHigh: 100,
+ stateHigh: ["rust", "steam"],
+ reactions: {
+ "head": { elem2: ["infection", "rust"], chance: 0.03 },
+ "body": { elem2: ["infection", "rust"], chance: 0.03 },
+ "bless": { elem1: "iron" },
+ }
+};
+
+
+
+elements.umami_umbre = {
+ color: "#808000",
+ behavior: [
+ "M1|M1|M1",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ tempLow: -5,
+ stateLow: ["mushroom_soup"],
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+elements.mushroom_soup = {
+ color: "#808000",
+ behavior: [
+ "XX|XX|XX",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "food",
+ state: "liquid",
+ stain: 0.3,
+ temp: 20,
+ tempHigh: 150,
+ stateHigh: ["umami_umbre", "steam", "salt", null],
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.bitter_breeze = {
+ color: "#ddff11",
+ behavior: [
+ "M1|M1|M1",
+ "M1|DL%1|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ tempLow: -5,
+ stateLow: ["lime_juice"],
+ reactions: {
+ "head": { elem1: null },
+ }
+};
+
+
+
+
+elements.baked_breeze = {
+ color: "#ab8b6b",
+ behavior: [
+ "M1|M1|M1",
+ "M1|DL%10|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ tempLow: -5,
+ stateLow: ["fancy_flour"],
+ stateLowColor: "#ab8c60",
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.citric_savour = {
+ color: "#dddd11",
+ behavior: [
+ "M1|M1|M1",
+ "M1|DL%7|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ stateLowColor: "#fcc40a",
+ tempLow: -5,
+ stateLow: ["citric_sauce"],
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+elements.citric_sauce = {
+ color: "#11dd30",
+ behavior: [
+ "M1%5|XX|M1%5",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "liquids",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 320,
+ stateHigh: ["citric_savour"],
+ stain: 0.7,
+ reactions: {
+ "head": { elem1: null, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
+elements.chemical_odour = {
+ color: "#1155cc",
+ behavior: [
+ "M1|M1|M1",
+ "M1|DL:0.3|M1",
+ "M1|M1|M1",
+],
+ hidden: false,
+ category: "scents",
+ state: "gas",
+ temp: 20,
+ tempLow: -5,
+ stateLow: ["plastic"],
+ reactions: {
+ "head": { elem1: null, elem2: "bone", chance: 0.01, func: behaviors.KILLPIXEL2 },
+ }
+};
+
+
+//SCENT END
+
+
+
+
+
+elements.quicksand = {
+ color: ["#9e9045", "#b4a75d"],
+ behavior: [
+ "XX|SW:body,head,water,rock,dirt AND CH:blood>sand AND CH:sand>wet_sand%5 AND SW:wet_sand%3 AND SW:sand%1 AND CC:head,body,bone,blood,cooked_meat,meat,rotten_meat>#9f9146|XX",
+ "M2%0.1 AND CH:blood>sand AND CH:sand>wet_sand%5 AND SW:wet_sand%1|XX|M2%0.1 AND CH:blood>sand AND CH:sand>wet_sand%5 AND SW:wet_sand%1",
+ "M2%5|M1%85 AND CH:blood>sand AND CH:sand>wet_sand%5 AND CC:water>9e9045,b4a75d AND CC:head,body,bone,blood,cooked_meat,meat,rotten_meat>#9f9146|M2%5"
+],
+ category: "land",
+ temp: 20,
+ tempHigh: 1700,
+ tempLow: 0,
+ state: "solid",
+ stain: 0.1,
+ stateHigh: ["glass", "steam"],
+ stateLow: ["wet_sand", "ice"],
+ desc: "this is NOT sand",
+ burn: 0,
+ conduct: 0.4,
+ reactions: {
+ "head": { elem2: "bone", chance: 0.1, func: behaviors.KILLPIXEL2 },
+ "body": { elem2: "bone", chance: 0.1, func: behaviors.KILLPIXEL2 },
+ "bone": { elem2: null, chance: 0.05 },
+ }
+};
+
+
+
+
+elements.hed_bod = {
+ color: ["#ffffff"],
+ behavior: [
+ "XX|DL AND CR:head|XX",
+ "XX|CH:body|XX",
+ "XX|XX|XX"
+],
+ category: "special",
+ temp: 20,
+};
+
+
+
+
+
+elements.melted_butter.reactions.bread = { "elem1": null, "elem2":"brioche" },
+elements.water.reactions.fancy_flour = { "elem1": null, "elem2":"fancy_dough" },
+elements.fire.reactions.nitrogen = { "elem1": null, "elem2": "pyrane" };
+
+
+elements.redstone_dust = {
+ color: ["#880000"],
+ behavior: [
+ "XX|CC:sand>00ff00|XX",
+ "XX|CC:880000|XX",
+ "M2|M1|M2"
+],
+ behaviorOn: [
+ "CC:redstone_dust>cc0000|CC:redstone_dust>cc0000|CC:redstone_dust>cc0000",
+ "CC:redstone_dust>cc0000|CC:cc0000|CC:redstone_dust>cc0000",
+ "M2 AND CC:redstone_dust>cc0000|M1 AND CC:redstone_dust>cc0000|M2 AND CC:redstone_dust>cc0000"
+],
+ category: "machines",
+ temp: 20,
+ hardness: 0.3,
+ desc: "Idea from Minecraft.",
+ burn: 70,
+ breakInto: ["redstone_dust", "redstone_dust", "redstone_dust", null],
+ stateHigh: ["redstone_dust", "redstone_dust", "redstone_dust", null],
+ tempHigh: 800,
+ fireElement: ["laser", "smoke"],
+ burnInto: null,
+ burnTime: 1,
+ conduct: 0.867,
+};
+
+
+elements.redstone_block = {
+ color: ["#880000"],
+ behavior: [
+ "XX|SH:redstone_dust AND CC:redstone_dust>cc0000|XX",
+ "SH:redstone_dust AND CC:redstone_dust>cc0000|XX|SH:redstone_dust AND CC:redstone_dust>cc0000",
+ "XX|SH:redstone_dust AND CC:redstone_dust>cc0000|XX"
+],
+ category: "machines",
+ temp: 20,
+ hardness: 0.6,
+ desc: "Idea from Minecraft.",
+ breakInto: "redstone_dust",
+};
+
+
+elements.drowsiness = {
+ color: ["#aa00cc"],
+ behavior: [
+ "M1 AND CH:head>asl_hd AND CH:body>asl_bd|M1 AND CH:head>asl_hd AND CH:body>asl_bd|M1 AND CH:head>asl_hd AND CH:body>asl_bd",
+ "M1 AND CH:head>asl_hd AND CH:body>asl_bd|DL%45|M1 AND CH:head>asl_hd AND CH:body>asl_bd",
+ "M1 AND CH:head>asl_hd AND CH:body>asl_bd|M1 AND CH:head>asl_hd AND CH:body>asl_bd|M1 AND CH:head>asl_hd AND CH:body>asl_bd",
+],
+ category: "energy",
+ state: "gas",
+ temp: 20,
+ tempLow: -10,
+ stateLow: "melatonin",
+};
+
+
+elements.melatonin = {
+ color: ["#ddccff"],
+ behavior: behaviors.POWDER,
+ category: "special",
+ temp: 20,
+ reactions: {
+ "head": { elem1: null, elem2: "asl_hd", chance: 0.1, func: behaviors.FEEDPIXEL },
+ "body": { elem1: null, elem2: "asl_bd", chance: 0.1, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+elements.asl_hd = {
+ name: "Head (Asleep)",
+ color: ["#4a4a4a"],
+ //old behavior: [
+ //"XX|CR:yawn%0.1|XX",
+ //"XX|CH:wuh%0.3|XX",
+ //"XX|M1 AND CH:body>asl_bd|XX"
+//],
+ behavior: [
+ "XX|XX|XX",
+ "XX|DL|XX",
+ "XX|M1 AND CH:body>asl_bd|XX"
+],
+ category: "unused",
+ hidden: true,
+ temp: 20,
+ breakInto: ["blood", "meat", "bone"],
+ tempHigh: 150,
+ tempLow: -30,
+ stateHigh: "cooked_meat",
+ stateLow: "frozen_meat",
+};
+
+
+elements.asl_bd = {
+ name: "Sleeping Human",
+ color: ["#50555c"],
+behavior: [
+ "DL:blood|DL:blood AND CR:yawn%0.04 AND DL:head|DL:blood",
+ "DL:blood|CH:wub%2|DL:blood",
+ "DL:blood|M1 AND DL:blood|DL:blood"
+],
+ category: "life",
+ temp: 20,
+ breakInto: ["blood", "meat", "bone"],
+ tempHigh: 150,
+ tempLow: -30,
+ stateHigh: "cooked_meat",
+ stateLow: "frozen_meat",
+};
+
+
+elements.wuh = {
+ name: "Head (Waking Up)",
+ color: ["#a19b8c"],
+ behavior: [
+ "DL:blood|DL:blood|DL:blood",
+ "DL:blood|CH:head|DL:blood",
+ "DL:blood|CH:wub>body|DL:blood"
+],
+ category: "unused",
+ hidden: true,
+ temp: 20,
+ breakInto: ["blood", "meat", "bone"],
+ tempHigh: 150,
+ tempLow: -30,
+ stateHigh: "cooked_meat",
+ stateLow: "frozen_meat",
+};
+
+
+elements.wub = {
+ name: "Body (Waking Up)",
+ color: ["#8c95a1"],
+ behavior: [
+ "DL:blood|DL:blood AND CR:wuh|DL:blood",
+ "DL:blood|XX|DL:blood",
+ "DL:blood|M1 AND DL:blood|DL:blood"
+],
+ category: "life",
+ state: "liquid",
+ temp: 20,
+ breakInto: ["blood", "meat", "bone"],
+ tempHigh: 150,
+ tempLow: -30,
+ stateHigh: "cooked_meat",
+ stateLow: "frozen_meat",
+};
+
+
+elements.nullium = {
+ color: ["#000000"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|DL|XX",
+ "XX|XX|XX"
+],
+ category: "special",
+ temp: 20,
+ breakInto: null,
+};
+
+
+elements.yawn = {
+ color: ["#eeeeff"],
+ behavior: [
+ "M1 AND CH:head>asl_hd%5|M1 AND CH:head>asl_hd%5|M1 AND CH:head>asl_hd%5",
+ "M1|DL%1|M1",
+ "M1|CH:head>asl_hd AND M1|M1",
+],
+ category: "special",
+ state: "gas",
+ temp: 20,
+};
+
+elements.acetone = {
+ color: ["#b8e3da"],
+ behavior: [
+ "XX|CR:chemical_odour,fragrance,foam%1|XX",
+ "M2|XX|M2",
+ "M1|M1 AND CO:2%40 AND SM%1 AND DL%0.1 AND CC:water>#bce3db |M1",
+],
+ category: "liquids",
+ temp: 20,
+ viscosity: 100,
+ state: "liquid",
+ density: 720,
+ stain: 0.2,
+ alpha: 0.8,
+ reactions: {
+ "water": { elem2: "foam", chance: 0.3 },
+ "head": { elem2: null, chance: 0.3 },
+ "body": { elem2: null, chance: 0.3 },
+ }
+};
+
+elements.drill = {
+ color: ["#6F6F6F", "#868686", "#666666"],
+ behavior: [
+ "XX|LB:carbon_dioxide AND DL AND SH|XX",
+ "SH|SH AND HT:5|SH",
+ "XX|M1 AND LB:carbon_dioxide,electric AND SW AND HT:3 AND SM AND SH|XX",
+],
+ category: "machines",
+ temp: 20,
+ tempHigh: 1000,
+ stateHigh: "molten_metal_scrap",
+ breakInto: "metal_scrap",
+ state: "solid",
+ density: 1050,
+ conduct: 5,
+};
+
+elements.heat_lamp = {
+ color: "#ffd6cf",
+ behavior: [
+"XX|XX|XX",
+"XX|XX|XX",
+"XX|XX|XX",
+],
+ behaviorOn: [
+"XX|XX|XX",
+"XX|XX|XX",
+"XX|CR:elec_light%5 AND CH:inv_ht%0|XX",
+],
+ category: "machines",
+ state: "solid",
+ charge: 0,
+ tempHigh: 1500,
+ stateHigh: "molten_metal_scrap",
+ breakInto: ["metal_scrap", "electric", "flash"],
+ conduct: 1,
+ reactions: {
+ "malware": { elem1: "fan", chance: 0.9 },
+ }
+};
+
+elements.powerful_heat_lamp = {
+ color: "#ffb1a3",
+ behavior: [
+"XX|XX|XX",
+"XX|XX|XX",
+"XX|XX|XX",
+],
+ behaviorOn: [
+"XX|XX|XX",
+"XX|XX|XX",
+"CR:elec_light%1 AND CH:inv_ht%0||CR:elec_light%2 AND CH:inv_ht%0 AND HT:5%10 AND CR:heat_ray%5|CR:elec_light%1 AND CH:inv_ht%0|",
+],
+ category: "machines",
+ state: "solid",
+ temp: 80,
+ tempHigh: 2500,
+ stateHigh: "molten_metal_scrap",
+ breakInto: ["metal_scrap", "electric", "flash", "fire", "heat_ray"],
+ conduct: 1,
+ reactions: {
+ "malware": { elem1: "fan", chance: 0.9 },
+ }
+};
+
+elements.fan = {
+ color: "#cfe2ff",
+ behavior: [
+"XX|XX|XX",
+"XX|XX|XX",
+"XX|XX|XX",
+],
+ behaviorOn: [
+"XX|XX|XX",
+"XX|XX|CR:e_wind%5",
+"XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+ charge: 0,
+ tempHigh: 1500,
+ stateHigh: "molten_metal_scrap",
+ breakInto: ["metal_scrap", "electric", "flash", "snow", "freeze_ray"],
+ conduct: 1,
+ reactions: {
+ "malware": { elem1: "heat_lamp", chance: 0.9 },
+ }
+};
+
+elements.inv_ht = {
+ color: "#aa0000",
+ behavior: [
+"XX|XX|XX",
+"XX|XX|XX",
+"XX|M1 AND BO AND HT:3|XX",
+],
+ category: "energy",
+ state: "gas",
+ hidden: true,
+ alpha: 0.1,
+ tempLow: 10,
+ stateLow: null,
+};
+
+elements.inv_co = {
+ color: "#0000aa",
+ behavior: [
+"XX|XX|XX",
+"XX|XX|M1 AND BO AND CO:3",
+"XX|XX|XX",
+],
+ category: "energy",
+ state: "gas",
+ alpha: 0.1,
+ hidden: true,
+ tempHigh: 100,
+ stateHigh: null,
+};
+
+elements.elec_light = {
+ color: "#ddddff",
+ name: "Artificial Light",
+ behavior: [
+"XX|HT:3|XX",
+"HT:4|DL%2|HT:4",
+"XX|M1 AND BO AND HT:4|XX",
+],
+ category: "energy",
+ state: "gas",
+ alpha: 0.7,
+ temp: 40,
+ tempLow: -200,
+ tempHigh: 300,
+ stateLow: "liquid_light",
+ stateHigh: "light",
+};
+
+elements.e_wind = {
+ color: "#eeeefa",
+ name: "Wind",
+ behavior: [
+"XX|CO:3|M1%5 AND BO",
+"CO:3|CH:oxygen%0.4|M1 AND BO AND CO:3",
+"XX|CO:3|M1%5 AND BO",
+],
+ category: "gases",
+ state: "gas",
+ alpha: 0.7,
+ temp: 10,
+ tempLow: -30,
+ tempHigh: 35,
+ stateHigh: "cloud",
+};
+
+elements.frisket = {
+ color: ["#d1ffdc"],
+ behavior: [
+ "XX|CR:sour_scent,ammonia%0.1|XX",
+ "M1%7|CH:dried_frisket%0.5|M1%7",
+ "M2|M1%50|M2"
+],
+ category: "liquids",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -200,
+ stateHigh: ["steam", "ammonia", "liquid_latex"],
+ stateLow: ["dried_frisket"],
+ desc: "masking fluid used in art that smells like seafood",
+ burn: 30,
+ conduct: 1,
+};
+
+elements.dried_frisket = {
+ color: ["#68d995"],
+ behavior: [
+ "XX|CR:sour_scent,ammonia%0.05|XX",
+ "XX|XX|XX",
+ "XX|XX|XX"
+],
+ category: "solids",
+ renderer: renderPresets.HEATGLOW,
+ temp: 20,
+ alpha: 0.9,
+ movable: true,
+ tempHigh: 200,
+ stateHigh: ["ammonia", "latex"],
+ breakInto: ["dried_frisket", null],
+ desc: "masking fluid used in art that smells like seafood, dried",
+ burn: 0.1,
+ conduct: 0.1,
+ reactions: {
+ "nitrogen": { elem1: "frisket", elem2:"foam", chance: 0.1 },
+ }
+};
+
+elements.sr_pl = {
+ name: "Sun Resistant Plastic",
+ color: "#505a66",
+ behavior: [
+"DL:light,sunlight|DL:light,sunlight|DL:light,sunlight",
+"DL:light,sunlight|XX|DL:light,sunlight",
+"DL:light,sunlight|DL:light,sunlight|DL:light,sunlight",
+],
+conduct: 1,
+behaviorOn: [
+"CR:light,sunlight|CR:light,sunlight|CR:light,sunlight",
+"CR:light,sunlight|HT:10|CR:light,sunlight",
+"CR:light,sunlight|CR:light,sunlight|CR:light,sunlight",
+],
+ category: "solids",
+ state: "solid",
+ hidden: true,
+renderer: renderPresets.HEATGLOW,
+stateHigh: ["molten_gallium", "molten_glass", "molten_plastic", "tocopheryl_gas", "molten_rose_gold"],
+ alpha: 0.5,
+ tempHigh: 6177,
+};
+
+elements.latex = {
+ color: ["#aabfbd"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|XX|XX"
+],
+ category: "solids",
+ renderer: renderPresets.HEATGLOW,
+ temp: 20,
+ movable: true,
+ tempHigh: 200,
+ stateHighName: ["liquid_latex"],
+ burn: 0.03,
+ conduct: 0.03,
+ reactions: {
+ "head": { elem2: "explosion", chance: 0.005, func: behaviors.KILLPIXEL2 },
+ "ammonia": { elem1: "frisket", elem2:"foam", minTemp: 100 },
+ }
+};
+
+elements.human_missile = {
+ color: ["#8a9499", "#9e9e9e", "#d1d1d1"],
+ category: "missiles",
+ state: "solid",
+ temp: 20,
+ tempHigh: 2000,
+ stateHigh: "molten_metal_scrap",
+ breakInto: "metal_scrap",
+ fireColor: "#e342a5",
+};
+
+
+
+
+elements.human_missile.behavior = [
+ ["XX","XX","XX"],
+ ["XX","XX","M1 AND LB:hed_bod%20 AND EX:3>explosion"],
+ ["XX","XX","XX"],
+];
+
+elements.e_fence = {
+ name: "Electric Fence",
+ color: ["#baba9c"],
+ behavior: [
+"XX|XX|XX",
+"XX|XX|XX",
+"XX|XX|XX",
+],
+ behaviorOn: [
+ "XX|SH|XX",
+ "SH AND CH:head,body>ash,pop,cooked_meat AND HT:3%20|XX|SH AND CH:head,body>ash,pop,cooked_meat AND HT:3%20",
+ "XX|SH|XX"
+],
+ charge: 1,
+ category: "machines",
+ density: 7850,
+ temp: 20,
+ tempHigh: 1956,
+ renderer: renderPresets.HEATGLOW,
+ stateHigh: ["molten_metal_scrap", "molten_steel"],
+ breakInto: ["metal_scrap", "electric", "explosion", "electrum"],
+ conduct: 0.1,
+};
\ No newline at end of file
diff --git a/mods/coldblooded.js b/mods/coldblooded.js
new file mode 100644
index 00000000..b6c94f57
--- /dev/null
+++ b/mods/coldblooded.js
@@ -0,0 +1,465 @@
+/* changelog
+v 0.1 added snake
+v 0.11 "axolotl" eats fish
+v 0.2 crocodiles scales and axolotls actually eat fish now
+
+thats it for now
+*/
+
+// Only run this if the human, head, and body elements exist
+if (elements.human && elements.head && elements.body) {
+ // Human
+ const oldHumanTick = elements.human.tick;
+ elements.human.tick = function (pixel) {
+ if (oldHumanTick) oldHumanTick(pixel);
+ if (pixel.poisoned !== undefined) {
+ pixel.poisoned--;
+ if (pixel.poisoned <= 0) {
+ deletePixel(pixel.x, pixel.y);
+ return;
+ }
+ }
+ };
+
+ // Head
+ const oldHeadTick = elements.head.tick;
+ elements.head.tick = function (pixel) {
+ if (oldHeadTick) oldHeadTick(pixel);
+ if (pixel.poisoned !== undefined) {
+ pixel.poisoned--;
+ if (pixel.poisoned <= 0) {
+ deletePixel(pixel.x, pixel.y);
+ return;
+ }
+ }
+ };
+
+ // Body
+ const oldBodyTick = elements.body.tick;
+ elements.body.tick = function (pixel) {
+ if (oldBodyTick) oldBodyTick(pixel);
+ if (pixel.poisoned !== undefined) {
+ pixel.poisoned--;
+ if (pixel.poisoned <= 0) {
+ deletePixel(pixel.x, pixel.y);
+ return;
+ }
+ }
+ };
+}
+
+
+function eatBee(pixel1, pixel2) {
+ pixel1.color = "#5c138a";
+ pixel1.poisoned ??= 30;
+}
+
+function poisonOther(pixel1, pixel2) {
+ if (!pixel2) return;
+ pixel2.color = "#5c138a";
+ pixel2.poisoned ??= 30;
+}
+
+elements.human.reactions.snake =
+ { attr1: { panic: 5 } }
+
+elements.fish.reactions.toad_tadpole =
+ { elem2: null, chance: 0.25, func: behaviors.FEEDPIXEL },
+
+ elements.glue.reactions.scale =
+ { elem1: null, elem2: "scale_plate" },
+
+ elements.lizard = {
+ color: ["#00ff1a", "#038f11"],
+ behavior: [
+ ["XX", "XX", "M2%1"],
+ ["XX", "FX%5", "M1%15"],
+ ["M2", "M1", "M2"],
+ ],
+ category: "life",
+ state: "solid",
+ reactions: {
+ "fly": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "ant": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.3 },
+ "termite": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.3 },
+ "worm": { elem2: null, func: behaviors.FEEDPIXEL },
+ "bee": { elem2: null, func: eatBee, chance: 0.05 },
+ "firefly": { elem2: null, func: eatBee, chance: 0.4 },
+ "fish": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
+ "pool_water": { chance: 0.001, elem1: "rotten_meat" },
+ "dirty_water": { chance: 0.0001, elem1: "rotten_meat" },
+ "radiation": { elem1: ["ash", "meat", "cooked_meat", "rotten_meat", "snake", "crocodile", null], chance: 0.4 },
+ "mercury": { elem1: "rotten_meat", chance: 0.1 },
+ "bleach": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.025 },
+ "uranium": { elem1: "rotten_meat", chance: 0.1 },
+ "cyanide": { elem1: "rotten_meat", chance: 0.1 },
+ "chlorine": { elem1: "meat", chance: 0.1 },
+ "alcohol": { elem1: "meat", chance: 0.025 },
+ "vinegar": { elem1: "rotten_meat", chance: 0.001 },
+ "poison": { elem1: "rotten_meat", elem2: null }
+ },
+ foodNeed: 5,
+ temp: 20,
+ tempHigh: 120,
+ stateHigh: ["cooked_meat", "scale"],
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ breakInto: ["blood", "scale"],
+ density: 1050,
+ eggColor: "#ffffff",
+ tick: function (pixel) {
+ if (pixel.poisoned !== undefined) {
+ pixel.poisoned--;
+ if (pixel.poisoned <= 0) {
+ deletePixel(pixel.x, pixel.y);
+ return;
+ }
+ }
+ },
+ };
+
+
+
+elements.toad = {
+ color: ["#693800", "#945a18"],
+ behavior: [
+ ["XX", "XX", "M2%3 AND SW:water, salt_water, dirty_water, pool_water, seltzer%5"],
+ ["XX", "FX%25", "M2%6 AND SW:water, salt_water, dirty_water, pool_water, seltzer%8"],
+ ["M2", "M1 AND SW:water, salt_water, dirty_water, pool_water, seltzer%8", "M2 AND SW:water, salt_water, dirty_water, pool_water, seltzer%8"],
+ ],
+
+ category: "life",
+ state: "solid",
+ reactions: {
+ "fly": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "ant": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "termite": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "worm": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "spider": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "dead_bug": { elem2: null, chance: 0.2, func: behaviors.FEEDPIXEL },
+ "bee": { elem2: null, func: eatBee, chance: 0.1 },
+ "firefly": { elem2: null, func: eatBee, chance: 0.4 },
+ "oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
+ "algae": { elem2: null, chance: 0.1, func: behaviors.FEEDPIXEL },
+ "kelp": { elem2: "water", chance: 0.1, func: behaviors.FEEDPIXEL },
+ "snail": { elem2: "limestone", func: behaviors.FEEDPIXEL, chance: 0.05 },
+ "slug": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "pool_water": { chance: 0.005, elem1: "rotten_meat" },
+ "dirty_water": { chance: 0.0001, elem1: "rotten_meat" },
+ "radiation": { elem1: ["ash", "meat", "rotten_meat", "cooked_meat", "toad_tadpole", "tadpole", "frog", null], chance: 0.4 },
+ "mercury": { elem1: "rotten_meat", chance: 0.1 },
+ "bleach": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.025 },
+ "uranium": { elem1: "rotten_meat", chance: 0.1 },
+ "cyanide": { elem1: "rotten_meat", chance: 0.1 },
+ "chlorine": { elem1: "meat", chance: 0.1 },
+ "alcohol": { elem1: "meat", chance: 0.025 },
+ "vinegar": { elem1: "rotten_meat", chance: 0.001 },
+ "poison": { elem1: "rotten_meat", elem2: null }
+ },
+ foodNeed: 10,
+ baby: "toad_tadpole",
+ temp: 18,
+ tempHigh: 100,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ breakInto: "slime",
+ density: 1200,
+ tick: function (pixel) {
+ if (pixel.poisoned !== undefined) {
+ pixel.poisoned--;
+ if (pixel.poisoned <= 0) {
+ deletePixel(pixel.x, pixel.y);
+ return;
+ }
+ }
+ },
+};
+
+
+elements.toad_tadpole = {
+ color: "#87b574",
+ behavior: [
+ "XX|XX|M2%25 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%14",
+ "XX|FX%0.5|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%14",
+ "M2|M1|M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%14",
+ ],
+ reactions: {
+ "algae": { elem2: null, chance: 0.25 },
+ "kelp": { elem2: "water", chance: 0.25 },
+ "pool_water": { chance: 0.70, elem1: null },
+ "dirty_water": { chance: 0.70, elem1: null },
+ "bleach": { elem1: null, chance: 0.05 },
+ "poison": { elem1: null },
+ "radiation": { elem1: ["toad", "toad", "frog", "worm", null], chance: 0.4 },
+ },
+ tempHigh: 100,
+ stateHigh: "steam",
+ tempLow: -10,
+ stateLow: "ice",
+ breakInto: ["slime", null],
+ category: "life",
+ hidden: true,
+ state: "solid",
+ density: 1450,
+ conduct: 0.2,
+ tick: function (pixel) {
+
+ if (pixelTicks - pixel.start > 500 && Math.random() <= 0.05) {
+ changePixel(pixel, "toad");
+ }
+ }
+},
+
+ elements.newt = {
+ color: ["#db8727", "#945a18"],
+ behavior: [
+ ["XX", "XX", "SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%15"],
+ ["XX", "FX%5", "M2%25 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%15"],
+ ["M2", "M1 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%15", "M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%15"],
+ ],
+ category: "life",
+ state: "solid",
+ reactions: {
+ "fly": { elem2: null, func: behaviors.FEEDPIXEL },
+ "termite": { elem2: null, func: behaviors.FEEDPIXEL },
+ "ant": { elem2: null, func: behaviors.FEEDPIXEL },
+ "worm": { elem2: null, func: behaviors.FEEDPIXEL },
+ "slug": { elem2: null, func: behaviors.FEEDPIXEL },
+ "snail": { elem2: "limestone", func: behaviors.FEEDPIXEL },
+ "pool_water": { chance: 0.70, elem1: null },
+ "dirty_water": { chance: 0.70, elem1: null },
+ "oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
+ "radiation": { elem1: ["ash", "meat", "cooked_meat", "rotten_meat", "axolotl", null], chance: 0.4 },
+ "mercury": { elem1: "rotten_meat", chance: 0.1 },
+ "bleach": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.025 },
+ "uranium": { elem1: "rotten_meat", chance: 0.1 },
+ "cyanide": { elem1: "rotten_meat", chance: 0.1 },
+ "chlorine": { elem1: "meat", chance: 0.1 },
+ "alcohol": { elem1: "meat", chance: 0.025 },
+ "vinegar": { elem1: "rotten_meat", chance: 0.001 }
+ },
+ foodNeed: 10,
+ temp: 18,
+ tempHigh: 100,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ breakInto: "slime",
+ density: 1200,
+ eggColor: "#ffeeab",
+ };
+
+elements.axolotl = {
+ color: ["#ff99ff", "#ffe100", "#785705"],
+ behavior: [
+ ["XX", "XX", "SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%10"],
+ ["XX", "FX", "M2%15 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%10"],
+ ["M2", "M1", "M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%10"],
+ ],
+ category: "life",
+ state: "solid",
+ reactions: {
+ "fly": { elem2: null, func: behaviors.FEEDPIXEL },
+ "termite": { elem2: null, func: behaviors.FEEDPIXEL },
+ "ant": { elem2: null, func: behaviors.FEEDPIXEL },
+ "worm": { elem2: null, func: behaviors.FEEDPIXEL },
+ "slug": { elem2: null, func: behaviors.FEEDPIXEL },
+ "snail": { elem2: "limestone", func: behaviors.FEEDPIXEL },
+ "fish": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "pool_water": { chance: 0.70, elem1: null },
+ "dirty_water": { chance: 0.70, elem1: null },
+ "radiation": { elem1: ["ash", "meat", "cooked_meat", "rotten_meat", "newt"], chance: 0.4 },
+ "mercury": { elem1: "rotten_meat", chance: 0.1 },
+ "bleach": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.025 },
+ "uranium": { elem1: "rotten_meat", chance: 0.1 },
+ "cyanide": { elem1: "rotten_meat", chance: 0.1 },
+ "chlorine": { elem1: "meat", chance: 0.1 },
+ "alcohol": { elem1: "meat", chance: 0.025 },
+ "vinegar": { elem1: "rotten_meat", chance: 0.001 },
+ "oxygen": { elem2: "carbon_dioxide", chance: 0.5 }
+ },
+ foodNeed: 20,
+ temp: 18,
+ tempHigh: 90,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ breakInto: ["slime", "blood"],
+ density: 1000,
+ eggColor: ["#dcdcdc", "#a9a9a9", "#2b2b2b"],
+ tick: function (pixel) {
+ pixel.lifetime ??= 900;
+
+ let up = pixel.y > 0 ? pixelMap[pixel.x][pixel.y - 1] : null;
+ let down = pixel.y < pixelMap[0].length - 1 ? pixelMap[pixel.x][pixel.y + 1] : null;
+ let left = pixel.x > 0 ? pixelMap[pixel.x - 1][pixel.y] : null;
+ let right = pixel.x < pixelMap.length - 1 ? pixelMap[pixel.x + 1][pixel.y] : null;
+
+ if (
+ (up && up.element === "water") ||
+ (down && down.element === "water") ||
+ (left && left.element === "water") ||
+ (right && right.element === "water")) {
+ pixel.lifetime = 900;
+ } else {
+ pixel.lifetime--;
+ if (pixel.lifetime <= 0 && Math.random() <= 0.1) {
+ deletePixel(pixel.x, pixel.y);
+ createPixel("meat", pixel.x, pixel.y);
+ }
+ }
+ }
+};
+
+elements.snake = {
+ color: ["#006400", "#90ee90", "#00ff00"],
+ behavior: [
+ ["XX", "XX", "XX"],
+ ["XX", "FX%15", "M2%10"],
+ ["M2", "M1", "M1"],
+ ],
+ reactions: {
+ "frog": { elem2: null, func: behaviors.FEEDPIXEL },
+ "toad": { elem2: null, func: behaviors.FEEDPIXEL },
+ "lizard": { elem2: null, func: behaviors.FEEDPIXEL },
+ "worm": { elem2: null, func: behaviors.FEEDPIXEL },
+ "slug": { elem2: null, func: behaviors.FEEDPIXEL },
+ "snail": { elem2: "limestone", func: behaviors.FEEDPIXEL },
+ "egg": {
+ elem2: "egg",
+ func: function (pixel1, pixel2) {
+ if (pixel2.animal === "snake") return; // Don't eat own egg
+ behaviors.FEEDPIXEL(pixel1, pixel2);
+ }
+ },
+ "radiation": { elem1: ["ash", "meat", "cooked_meat", "rotten_meat", "lizard", "crocodile", null], chance: 0.4 },
+ "oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
+ "mercury": { elem1: "rotten_meat", chance: 0.1 },
+ "bleach": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.025 },
+ "uranium": { elem1: "rotten_meat", chance: 0.1 },
+ "cyanide": { elem1: "rotten_meat", chance: 0.1 },
+ "chlorine": { elem1: "meat", chance: 0.1 },
+ "alcohol": { elem1: "meat", chance: 0.025 },
+ "vinegar": { elem1: "rotten_meat", chance: 0.001 },
+ "poison": { elem1: null }
+ },
+ category: "life",
+ state: "solid",
+ density: 1050,
+ temp: 20,
+ tempHigh: 120,
+ stateHigh: "cooked_meat",
+ tempLow: -10,
+ stateLow: "frozen_meat",
+ breakInto: "blood",
+
+ tick: function (pixel) {
+ const directions = [
+ [0, -1], [-1, -1], [1, -1],
+ [-1, 0], [1, 0],
+ [0, 1], [-1, 1], [1, 1]
+ ];
+
+ for (let [dx, dy] of directions) {
+ let x = pixel.x + dx;
+ let y = pixel.y + dy;
+ if (!isEmpty(x, y)) {
+ let other = pixelMap[x]?.[y];
+ if (other && (other.element === "head" || other.element === "body" || other.element === "crocodile") && Math.random() <= 0.5) {
+ poisonOther(pixel, other);
+ }
+ }
+ }
+ }
+};
+
+elements.crocodile = {
+ color: ["#065e13", "#0c751c"],
+ behavior: [
+ ["XX", "XX", "XX AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
+ ["XX", "FX%10", "M2%15 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
+ ["M2", "M1", "M1 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water%5"],
+ ],
+ category: 'life',
+ state: 'solid',
+ foodNeed: 10,
+ reactions: {
+ "fish": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "bird": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "rat": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.5 },
+ "frog": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "toad": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "snake": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.4 },
+ "axolotl": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "lizard": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "newt": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "body": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "head": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "human": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "slug": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "snail": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "bone": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.1 },
+ "bone_marrow": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.4 },
+ "homonculus": { elem2: null, func: behaviors.FEEDPIXEL, chance: 0.2 },
+ "radiation": { elem1: ["ash", "meat", "cooked_meat", "rotten_meat", "lizard", "snake", null], chance: 0.4 },
+ "oxygen": { elem2: "carbon_dioxide", chance: 0.5 },
+ "mercury": { elem1: "rotten_meat", chance: 0.1 },
+ "bleach": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.025 },
+ "uranium": { elem1: "rotten_meat", chance: 0.1 },
+ "cyanide": { elem1: "rotten_meat", chance: 0.1 },
+ "chlorine": { elem1: "meat", chance: 0.1 },
+ "alcohol": { elem1: "meat", chance: 0.025 },
+ "vinegar": { elem1: "rotten_meat", chance: 0.001 },
+ "poison": { elem1: null }
+ },
+ temp: 18,
+ tempHigh: 100,
+ stateHigh: ["cooked_meat", "scale"],
+ tempLow: -10,
+ stateLow: "frozen_meat",
+ breakInto: ["blood", "scale"],
+ density: 1100
+}
+
+elements.scale = {
+ category: "powders",
+ color: ['#076607', '#1cb01c', '#0ef00e'],
+ behavior: behaviors.POWDER,
+ tempHigh: 900,
+ stateHigh: ["ash", "ash", "ash", "smoke", "stench", "stench", "stench"],
+ breakInto: "dust",
+ hardness: 0.3,
+ reactions: {
+ "glue": {
+ elem1: "scale_plate", elem2: null,
+ }
+ }
+}
+
+elements.scale_plate = {
+ category: "solids",
+ color: ['#044404', '#137a13', '#0aa00a'],
+ hardness: 0.8,
+ breakInto: "scale",
+ tick: function (pixel) {
+ // 2 temp highs
+ const hot = ["scale", "dioxin", "cyanide_gas"];
+ const hotter = ["ash", "ash", "ash", "smoke", "stench", "stench", "stench", "dioxin", "cyanide_gas"];
+ if (pixel.temp >= 475 && pixel.temp <= 900) {
+ let chosen = hot[Math.floor(Math.random() * hot.length)];
+ changePixel(pixel, chosen);
+ }
+ if (pixel.temp >= 900) {
+ let chosen = hotter[Math.floor(Math.random() * hotter.length)];
+ changePixel(pixel, chosen);
+ }
+ }
+ }
diff --git a/mods/cursor.js b/mods/cursor.js
new file mode 100644
index 00000000..d6876ce2
--- /dev/null
+++ b/mods/cursor.js
@@ -0,0 +1,3 @@
+document.head.insertAdjacentHTML("beforeend",``)
\ No newline at end of file
diff --git a/mods/death_count.js b/mods/death_count.js
new file mode 100644
index 00000000..a6d1602c
--- /dev/null
+++ b/mods/death_count.js
@@ -0,0 +1,35 @@
+let dc_oldOnChange = elements.head.onChange;
+let dc_oldOnDelete = elements.head.onDelete;
+let dc_oldTick = elements.head.tick;
+
+let deathCount = 0;
+function announceDeath() {
+ clearLog();
+ deathCount++;
+ logMessage(deathCount+" Humans have died.")
+}
+
+runAfterReset(function() {
+ deathCount = 0;
+})
+
+elements.head.onChange = function(pixel) {
+ dc_oldOnChange(pixel);
+
+ if (pixelTicks - pixel.start > 30) announceDeath();
+
+}
+
+elements.head.onDelete = function(pixel) {
+ dc_oldOnDelete(pixel);
+
+ if (pixelTicks - pixel.start > 30) announceDeath();
+}
+
+elements.head.tick = function(pixel) {
+ dc_oldTick(pixel);
+
+ if (pixel.dead && pixel.deadA === undefined) {
+ pixel.deadA = true;
+ }
+}
\ No newline at end of file
diff --git a/mods/hydroid.js b/mods/hydroid.js
new file mode 100644
index 00000000..e0f78fa4
--- /dev/null
+++ b/mods/hydroid.js
@@ -0,0 +1,224 @@
+elements.pyrane = {
+ color: "#fc7c19",
+ behavior: [
+ "M1|M1 AND CR:fire%10|M1",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ hidden: true,
+ category: "hydroid",
+ state: "gas",
+ temp: 50,
+ tempLow: -20,
+ stateLow: ["fyrium"],
+ reactions: {
+ "dirt": { elem1:"pyrane", elem2:"fire" },
+ "hydrogen": { elem1:"hydroid", elem2:"hydroid" },
+ }
+};
+
+elements.hydroid = {
+ color: "#3a0ca6",
+ behavior: [
+ ["XX", "XX", "XX"],
+ ["M2", "XX", "M2"],
+ ["M1", "M1 AND SW:water AND CH:water>hydroid%10", "M1"]
+ ],
+ category: "hydroid",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -20,
+ density: 12,
+ conduct: 1,
+ stain: 0.7,
+ desc: "this is NOT water",
+ stateHigh: ["pyrane", "steam"],
+ stateLow: ["hydroid_ice"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5 },
+ "head": { elem2: "hydroid", chance: 0.5 },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem2: "hydroid_ice" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ "milk": { elem1: "lactoid", elem2: "lactoid" }
+ }
+};
+
+elements.lactoid = {
+ color: ["#deeeff"],
+ behavior: [
+ "XX|XX|XX",
+ "M1 AND SW:water AND CH:water>hydroid%5 AND CH:hydroid>lactoid%1 AND CH:milk>lactoid%10|XX|M1 AND SW:water AND CH:water>hydroid%5 AND CH:hydroid>lactoid%1 AND CH:milk>lactoid%10",
+ "M1|M1 AND SW:water AND CH:water>hydroid%5 AND CH:hydroid>lactoid%1 AND CH:milk>lactoid%10|M1",
+],
+ category: "hydroid",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -25,
+ density: 12,
+ conduct: 1,
+ stain: 0.7,
+ desc: "this is NOT milk",
+ stateHigh: ["pyrane", "steam", "salt"],
+ stateLow: ["lactoid_ice"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "head": { elem1: null, elem2: "hydroid", chance: 0.01, func: behaviors.FEEDPIXEL },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem1: "lactoid_ice", elem2: "lactoid_ice" },
+ "slush": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ }
+};
+
+elements.lactoid_ice = {
+ color: ["#bacbe0"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ category: "states",
+ hidden: true,
+ state: "solid",
+ temp: -25,
+ tempHigh: -20,
+ density: 12,
+ stain: 0.7,
+ stateHigh: ["lactoid"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "head": { elem1: null, elem2: "hydroid", chance: 0.5, func: behaviors.FEEDPIXEL },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem1: "lactoid_ice", elem2: "lactoid_ice" },
+ "slush": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ }
+};
+
+
+
+
+elements.hydroid_ice = {
+ color: ["#316787"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ category: "states",
+ hidden: true,
+ state: "solid",
+ temp: -20,
+ tempHigh: -18,
+ density: 12,
+ stain: 0.7,
+ stateHigh: ["hydroid"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "body": { elem2: "hydroid", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "head": { elem1: null, elem2: "hydroid", chance: 0.5, func: behaviors.FEEDPIXEL },
+ "maple_syrup": { elem2: "hydroid" },
+ "magma": { elem2: "hydroid" },
+ "oil": { elem2: "hydroid" },
+ "juice": { elem2: "hydroid" },
+ "ice": { elem2: "hydroid_ice" },
+ "ice_cream": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ "blood": { elem2: "hydroid" },
+ "infection": { elem2: "hydroid" },
+ }
+};
+
+
+
+
+elements.hydroid_milkshake = {
+ color: ["#69acff", "#94b2d6", "#699bff"],
+ behavior: [
+ "XX|M1%0.1|XX",
+ "M1|XX|M1",
+ "M1|M1|M1",
+],
+ category: "hydroid",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -40,
+ stateLow: "hydroid_ice",
+ density: 12,
+ conduct: 1,
+ stain: 0.7,
+ desc: "somehow edible",
+ stateHigh: ["pyrane", "steam", "salt", "sugar"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "head": { elem1: null, func: behaviors.FEEDPIXEL }
+ }
+};
+
+elements.cremoid = {
+ color: ["#f2fffe"],
+ behavior: [
+ "XX|SW:milk,lactoid,butyroid,melted_butter,water AND CR:bubble%1|XX",
+ "M1 AND SW:water|CH:butyroid%0.1|M1 AND SW:water",
+ "M1|M1|M1",
+],
+ category: "hydroid",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 100,
+ tempLow: -25,
+ density: 12,
+ conduct: 1,
+ desc: "this is NOT cream",
+ stateHigh: ["pyrane", "steam"],
+ stateLow: ["icecream", "hydroid_milkshake"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "head": { elem1: null, chance: 0.01, func: behaviors.FEEDPIXEL },
+ "ice": { elem1: "lactoid_ice", elem2: "lactoid_ice" },
+ "slush": { elem1: "hydroid_milkshake", elem2: "hydroid_milkshake" },
+ }
+};
+
+elements.butyroid = {
+ color: ["#a3f1ff"],
+ behavior: [
+ "XX|XX|XX",
+ "M1%2|CH:butter%0.1|M1%2",
+ "M1|M1|M1",
+],
+ category: "hydroid",
+ state: "liquid",
+ temp: 20,
+ tempHigh: 33,
+ density: 120,
+ conduct: 1,
+ desc: "this is NOT cream",
+ stateHigh: ["pyrane", "melted_butter"],
+ reactions: {
+ "fire": { elem2: "explosion" },
+ "head": { elem1: null, chance: 0.01, func: behaviors.FEEDPIXEL },
+ }
+};
+
+
+
+
diff --git a/mods/industry.js b/mods/industry.js
new file mode 100644
index 00000000..79b9546e
--- /dev/null
+++ b/mods/industry.js
@@ -0,0 +1,308 @@
+// Industry, made by PogDog.
+// For that sweet sweet feeling of destroying the Ozone.
+// Thanks nouser for the help, especially with the conveyors.
+
+// Conveyors!
+
+
+elements.conveyer_right = {
+ color: "#9999ff",
+ behavior: behaviors.SOLID,
+ category: "industry",
+ state: "wall",
+ density: 2500,
+ data: {},
+ movable: false,
+ noMix: true,
+};
+
+elements.conveyer_left = {
+ color: "#9999cc",
+ behavior: behaviors.SOLID,
+ category: "industry",
+ state: "wall",
+ density: 2500,
+ data: {},
+ movable: false,
+ noMix: true,
+};
+
+runAfterLoad(function () {
+ runEveryTick(function () {
+ // RIGHTWARD movement: scan right to left
+ for (let x = width - 1; x >= 0; x--) {
+ for (let y = height - 1; y >= 0; y--) {
+ const pixel = pixelMap[x][y];
+ if (pixel && pixel.element === "conveyer_right") {
+ for (let dy = 1; dy <= 10; dy++) {
+ const targetY = y - dy;
+ if (targetY < 0) break;
+ const stackPixel = pixelMap[x]?.[targetY];
+ if (!stackPixel || !elements[stackPixel.element]?.movable) break;
+ if (isEmpty(x + 1, targetY)) {
+ movePixel(stackPixel, x + 1, targetY);
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // LEFTWARD movement: scan left to right
+ for (let x = 0; x < width; x++) {
+ for (let y = height - 1; y >= 0; y--) {
+ const pixel = pixelMap[x][y];
+ if (pixel && pixel.element === "conveyer_left") {
+ for (let dy = 1; dy <= 10; dy++) {
+ const targetY = y - dy;
+ if (targetY < 0) break;
+ const stackPixel = pixelMap[x]?.[targetY];
+ if (!stackPixel || !elements[stackPixel.element]?.movable) break;
+ if (isEmpty(x - 1, targetY)) {
+ movePixel(stackPixel, x - 1, targetY);
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ }
+ });
+});
+
+// Oven
+
+elements.oven = {
+ color: "#734700",
+ behavior: behaviors.SOLID,
+ category: "industry",
+ state: "solid",
+ density: 3000,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ let x = pixel.x;
+ let y = pixel.y + 1;
+ if (isEmpty(x, y)) {
+ createPixel("heat_ray", x, y);
+ let ray = pixelMap[x][y];
+
+ }
+ }
+};
+
+// Freezer
+
+
+elements.freezer = {
+ color: "#055b61",
+ behavior: behaviors.SOLID,
+ category: "industry",
+ state: "solid",
+ density: 3000,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ let x = pixel.x;
+ let y = pixel.y + 1;
+ if (isEmpty(x, y)) {
+ createPixel("freeze_ray", x, y);
+ let ray = pixelMap[x][y];
+
+ }
+ }
+};
+
+// Exhaust
+
+
+elements.exhaust = {
+ color: "#292929",
+ category: "industry",
+ state: "gas",
+ density: 1.8,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ const x = pixel.x;
+ const y = pixel.y;
+ const gasTypes = ["carbon_dioxide", "methane", "oxygen", "carbon_dioxide"]; // I am aware this isn't ideal, but it works for my purpouses.
+
+ for (let i = 0; i < gasTypes.length; i++) {
+ let ty = y - 1 - i;
+ if (ty < 0) break;
+ if (isEmpty(x, ty)) {
+ createPixel(gasTypes[i], x, ty);
+ }
+ }
+ }
+};
+
+
+// cancer machine!!1
+
+elements.irradiator = {
+ color: "#a0ff00",
+ category: "industry",
+ state: "solid",
+ density: 3000,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ const beamWidth = 1;
+ const beamLength = 20; // how far down the beam goes
+ const startX = pixel.x - Math.floor(beamWidth / 2);
+ const endX = startX + beamWidth - 1;
+
+ for (let y = pixel.y + 1; y <= pixel.y + beamLength; y++) {
+ if (y < 0 || y >= height) break;
+ for (let x = startX; x <= endX; x++) {
+ if (x < 0 || x >= width) continue;
+ if (isEmpty(x, y)) {
+ createPixel("radiation", x, y);
+ }
+ }
+ }
+ }
+};
+
+
+// Mixer
+
+elements.mix_beam = {
+ color: "#ffff99",
+ category: "energy",
+ state: "gas",
+ density: 0.1,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ const x = pixel.x;
+ const y = pixel.y;
+
+ if (y + 1 >= height) {
+ deletePixel(x, y);
+ return;
+ }
+
+ const below = pixelMap[x]?.[y + 1];
+
+ if (!below) {
+ movePixel(pixel, x, y + 1);
+ } else {
+ const mixCoords = [];
+
+ for (let dx = -1; dx <= 1; dx++) {
+ for (let dy = 0; dy <= 10; dy++) {
+ const nx = x + dx;
+ const ny = y + 1 + dy;
+
+ if (isEmpty(nx, ny)) continue;
+ const p = pixelMap[nx]?.[ny];
+ if (p) {
+ mixCoords.push({ x: nx, y: ny, element: p.element });
+ }
+ }
+ }
+
+ // Shuffle the element types
+ const shuffledElements = mixCoords.map(p => p.element)
+ .sort(() => Math.random() - 0.5);
+
+ // Assign shuffled elements back to original coordinates
+ for (let i = 0; i < mixCoords.length; i++) {
+ const pos = mixCoords[i];
+ changePixel(pixelMap[pos.x][pos.y], shuffledElements[i]);
+ }
+
+ deletePixel(x, y);
+ }
+ }
+};
+
+
+// Mixer emitter
+
+elements.beam_mixer_emitter = {
+ color: "#ffcc00",
+ category: "industry",
+ state: "solid",
+ behavior: behaviors.WALL,
+ tick: function(pixel) {
+ if (isEmpty(pixel.x, pixel.y + 1)) {
+ createPixel("mix_beam", pixel.x, pixel.y + 1);
+ }
+ }
+};
+
+// Shocker. Legit just irradiator, but a different element.
+
+
+
+elements.charger = {
+ color: "#f2f200",
+ category: "industry",
+ state: "solid",
+ density: 3000,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ const beamWidth = 1;
+ const beamLength = 20; // how far down the beam goes
+ const startX = pixel.x - Math.floor(beamWidth / 2);
+ const endX = startX + beamWidth - 1;
+
+ for (let y = pixel.y + 1; y <= pixel.y + beamLength; y++) {
+ if (y < 0 || y >= height) break;
+ for (let x = startX; x <= endX; x++) {
+ if (x < 0 || x >= width) continue;
+ if (isEmpty(x, y)) {
+ createPixel("electric", x, y);
+ }
+ }
+ }
+ }
+};
+
+// adios beam
+
+elements.deleter_beam = {
+ color: "#ff4444",
+ category: "energy",
+ state: "gas",
+ density: 0.1,
+ movable: false,
+ noMix: true,
+ tick: function(pixel) {
+ const x = pixel.x;
+ const y = pixel.y;
+
+ if (y + 1 >= height) {
+ deletePixel(x, y);
+ return;
+ }
+
+ const below = pixelMap[x]?.[y + 1];
+
+ if (!below) {
+ movePixel(pixel, x, y + 1);
+ } else {
+ deletePixel(x, y);
+ deletePixel(below.x, below.y);
+ }
+ }
+};
+
+
+elements.deleter_beam_emitter = {
+ color: "#ff2222",
+ category: "industry",
+ state: "solid",
+ behavior: behaviors.WALL,
+ tick: function(pixel) {
+ if (isEmpty(pixel.x, pixel.y + 1)) {
+ createPixel("deleter_beam", pixel.x, pixel.y + 1);
+ }
+ }
+};
diff --git a/mods/nekonicos_stuff.js b/mods/nekonicos_stuff.js
index 9f2b6824..d4901b1f 100644
--- a/mods/nekonicos_stuff.js
+++ b/mods/nekonicos_stuff.js
@@ -1491,12 +1491,10 @@ grabWeights = function(pixel){
let result;
if (elements[pixelMap[pixel.x][pixel.y-i].element].breakInto !== undefined) {
if (Array.isArray(elements[pixelMap[pixel.x][pixel.y-i].element].breakInto)) {
- result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto[Math.floor(Math.random() * elements[pixel.element].breakInto.length)];
- weight += elements.result.density
+ weight += elements.elements[pixelMap[pixel.x][pixel.y-i].element].breakInto[0].density
}
- else {
- result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto;
- weight += elements.result.density
+ else if (!Array.isArray(elements[pixelMap[pixel.x][pixel.y-i].element].breakInto)) {
+ weight += elements.elements[pixelMap[pixel.x][pixel.y-i].element].breakInto.density
}
}
}
@@ -1531,12 +1529,10 @@ grabAllWeights = function(pixel){
let result;
if (elements[pixelMap[pixel.x][pixel.y-i].element].breakInto !== undefined) {
if (Array.isArray(elements[pixelMap[pixel.x][pixel.y-i].element].breakInto)) {
- result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto[Math.floor(Math.random() * elements[pixel.element].breakInto.length)];
- weight += elements.result.density
+ weight += elements.elements[pixelMap[pixel.x][pixel.y-i].element].breakInto[0].density
}
- else {
- result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto;
- weight += elements.result.density
+ else if (!Array.isArray(elements[pixelMap[pixel.x][pixel.y-i].element].breakInto)) {
+ weight += elements.elements[pixelMap[pixel.x][pixel.y-i].element].breakInto.density
}
}
}
diff --git a/mods/plants.js b/mods/plants.js
index 9faf5a52..a739f157 100644
--- a/mods/plants.js
+++ b/mods/plants.js
@@ -1,23 +1,175 @@
-//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', '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),
- g: Math.round(rgb1.g + (rgb2.g - rgb1.g) * ratio),
- b: Math.round(rgb1.b + (rgb2.b - rgb1.b) * ratio),
- };
- return interpolatedRgb;
+let vineGrow = ["wood", "rock_wall", "straw", "wall", "ewall", "bush_cane", "bush_base", "fruit_branch"];
+let plants = {
+ tree: [],
+ vine: ["grape", "tomato"],
+ bush: [],
+ includes: function(target){
+ for(item in this){
+ if(this[item] && Array.isArray(this[item]) && this[item].includes(target)){return true;}
+ }
+ return false;
+ }
}
+let ethyleneChance = {
+ tomato: 0.000055,
+ orange: 0.000005,
+ strawberry: 0.000005,
+ grape: 0.000005,
+ blueberry: 0.000005,
+ apple: 0.00005,
+ avocado: 0.00005,
+ plum: 0.00005,
+ peach: 0.00005,
+ apricot: 0.00005,
+ pear: 0.00005,
+ mango: 0.000005,
+ kiwi: 0.000005,
+ lemon: 0.000005,
+ raspberry: 0.000005,
+ blackberry: 0.000005,
+ get: function(name){
+ return this[name] || 0.00000035;
+ }
+}
+elements.tomato.properties = {
+ type: "fruit",
+ fruit: "tomato",
+};
+elements.grape.properties = {
+ type: "fruit",
+ fruit: "grape",
+};
+class vineSeed {
+ category = "life";
+ behavior = behaviors.POWDER;
+ tick = function(pixel){
+ if(pixel.age > 40){
+ changePixel(pixel, (elements[pixel.element].low) ? "low_fruit_vine" : "fruit_vine");
+ }
+ pixel.age += 1;
+ };
+ properties = {
+ age: 0,
+ };
+ constructor(fruit, color, low = false){
+ this.properties.fruit = fruit;
+ this.color = color;
+ this.low = low;
+ };
+}
+
+class treeSeed {
+ properties = {
+ age: 0,
+ fruit: "",
+ };
+ 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 > 50 && pixel.temp < 100) {
+ if (!outOfBounds(pixel.x,pixel.y+1)) {
+ var dirtPixel = pixelMap[pixel.x][pixel.y+1];
+ if (["dirt", "mud", "sand", "wet_sand", "clay_soil", "mycelium"].includes(dirtPixel.element)) {
+ 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].element == "wood"){
+ pixelMap[pixel.x][pixel.y+1].fruit = pixel.fruit;
+ pixelMap[pixel.x][pixel.y+1].age = pixel.age;
+ }
+ }
+ }
+ else if (pixel.age > 1000) {
+ changePixel(pixel,"wood");
+ }
+ pixel.age++;
+ }
+ doDefaults(pixel);
+ };
+ breakInto = ["sawdust", "sap"];
+ burnInto = ["charcoal", "sap", "ember"];
+ tempHigh = 100;
+ stateHigh = "dead_plant";
+ tempLow = -40;
+ stateLow = "frozen_plant";
+ burn = 40;
+ burnTime = 50;
+ category = "life";
+ seed = true;
+ constructor(fruit, colours){
+ this.properties.fruit = fruit;
+ this.color = colours;
+ }
+}
+
+class fruit {
+ category = "food";
+ behavior = [["XX", "ST:fruit_leaves AND ST:fruit_branch AND ST:wood", "XX"],["ST:fruit_leaves AND ST:fruit_branch AND ST:wood", "XX", "ST:fruit_leaves AND ST:fruit_branch AND ST:wood"],["M2", "ST:fruit_leaves AND ST:fruit_branch AND ST:wood AND M1", "M2"]];
+ breakInto = "juice";
+ properties = {
+ type: "fruit",
+ };
+ isFood = true;
+ constructor(name, colour, jColour, type = "tree", sColour = false, extract = false, low = false){
+ this.properties.fruit = name;
+ this.color = colour;
+ this.breakIntoColor = jColour;
+ this.extract = (extract == false) ? undefined : extract;
+ if(type == "bush"){
+ this.behavior = [["XX", "ST:bush_cane", "XX"],["ST:bush_cane", "XX", "ST:bush_cane"],["M2", "ST:bush_cane AND M1", "M2"]];
+ } else if (type == "vine"){
+ this.behavior = behaviors.VINEFRUIT;
+ }
+ plants[type].push(name);
+ if(sColour != false){
+ if(type == "bush"){
+ elements[`${name}_seed`] = new bushSeed(name, sColour);
+ } else if (type == "vine"){
+ elements[`${name}_seed`] = new vineSeed(name, sColour, low);
+ } else {
+ elements[`${name}_seed`] = new treeSeed(name, sColour);
+ }
+ }
+ };
+ tick = function(pixel){
+ let chance = ethyleneChance.get(pixel.fruit);
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(isEmpty(x,y) && !outOfBounds(x,y) && Math.random() < chance){
+ createPixel("ethylene", x, y);
+ }
+ }
+ }
+}
+elements.tomato.tick = function(pixel){
+ let chance = ethyleneChance.get(pixel.fruit);
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(isEmpty(x,y) && !outOfBounds(x,y) && Math.random() < chance){
+ createPixel("ethylene", x, y);
+ }
+ }
+}
+elements.grape.tick = function(pixel){
+ let chance = ethyleneChance.get(pixel.fruit);
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(isEmpty(x,y) && !outOfBounds(x,y) && Math.random() < chance){
+ createPixel("ethylene", x, y);
+ }
+ }
+}
+elements.wood.properties = {age: 0, fruit: ""};
elements.fruit_branch = {
color: elements.tree_branch.color,
behavior: [
- "CR:fruit_leaves,fruit_branch%2|CR:fruit_leaves,fruit_leaves,fruit_leaves,fruit_branch%2|CR:fruit_leaves,fruit_branch%2",
+ "XX|XX|XX",
"XX|XX|XX",
"XX|XX|XX",
],
@@ -35,16 +187,30 @@ elements.fruit_branch = {
hardness: 0.15,
breakInto: ["sap","sawdust"],
seed: "apple_seed",
+ properties: {
+ age: 0,
+ fruit: "",
+ },
tick: function(pixel){
+ let pos = [[-1, -1], [0, -1], [1, -1]];
+ for(let i = 0; i < pos.length; i++){
+ let x = pixel.x+pos[i][0], y = pixel.y+pos[i][1];
+ if(isEmpty(x,y) && !outOfBounds(x,y)){
+ if(Math.random() < 0.035){
+ let elemArr = (pos[i][0] == 0) ? ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_branch","fruit_branch"] : ["fruit_branch", "fruit_branch", "fruit_leaves", "fruit_leaves", "wood"];
+ createPixel(elemArr[Math.round(Math.random()*elemArr.length)], 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)) { continue; }
let pixel2 = pixelMap[x][y];
if(pixel2.element == "fruit_branch" || pixel2.element == "fruit_leaves" || pixel2.element == "wood"){
- if(pixel.fruit && !pixel2.fruit){
+ if(pixel.fruit != "" && pixel2.fruit == ""){
pixel2.fruit = pixel.fruit;
- } else if (!pixel.fruit && pixel2.fruit){
+ } else if (pixel.fruit == "" && pixel2.fruit != ""){
pixel.fruit = pixel2.fruit;
}
}
@@ -76,6 +242,10 @@ elements.fruit_leaves = {
state: "solid",
density: 1050,
hidden: true,
+ properties: {
+ age: 0,
+ fruit: "",
+ },
tick: function(pixel){
if(pixelTicks == pixel.start + 1 && pixel.blooming == undefined){
if(Math.floor(Math.random() * 3) == 2){
@@ -90,17 +260,33 @@ 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") && pixel2.fruit != "pineapple"){
+ if((["fruit_vine", "fruit_branch", "fruit_leaves", "low_fruit_vine", "wood"].includes(pixel2.element) || (pixel2.type && pixel2.type == "fruit")) && pixel2.fruit != "pineapple"){
if(pixel.fruit && !pixel2.fruit){
pixel2.fruit = pixel.fruit;
} else if (!pixel.fruit && pixel2.fruit){
pixel.fruit = pixel2.fruit;
- }
+ }
+ if(pixel.age && !pixel2.age){
+ pixel2.age = pixel.age;
+ } else if (!pixel.age && pixel2.age){
+ pixel.age = pixel2.age;
+ }
}
}
if(pixel.blooming){
+ let chance = 0.0025;
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y)){
+ let p2 = pixelMap[x][y];
+ if(["ethylene","propylene"].includes(p2.element)){
+ chance = [0.01, 0.0035][["ethylene","propylene"].indexOf(p2.element)] || chance;
+
+ }
+ }
+ }
if(pixelTicks > pixel.start + 150){
- if(Math.floor(Math.random() * 400) == 3){
+ if(Math.random() < chance){
if(pixel.fruit){
if(pixel.fruit == "random"){
changePixel(pixel, fruits[Math.floor(Math.random() * fruits.length)]);
@@ -132,707 +318,37 @@ elements.fruit_leaves = {
}
}
-elements.apple_seed = {
- color: "#1A0E00",
- 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 > 50 && pixel.temp < 100) {
- 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].element == "wood"){
- pixelMap[pixel.x][pixel.y+1].fruit = "apple";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"apple"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.apple = {
- 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: "#ff0004",
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#FF4747",
- isFood: true,
- properties: {
- fruit: "apple",
- type: "fruit",
- }
-}
-elements.pear_seed = {
- color: "#1A0E00",
- 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 > 50 && pixel.temp < 100) {
- 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 = "pear";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"pear"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.pear = {
- 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: "#97FF43",
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#ABFF8D",
- isFood: true,
- properties: {
- fruit: "pear",
- type: "fruit",
- }
-}
-elements.cherry_seed = {
- color: "#b56233",
- 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 > 50 && pixel.temp < 100) {
- 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 = "cherry";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"cherry"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.cherry = {
- 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: "#750000",
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#8a0000",
- isFood: true,
- properties: {
- fruit: "cherry",
- type: "fruit",
- }
-}
-elements.milk = {
- color: "#fafafa",
- behavior: behaviors.LIQUID,
- onMix: function(milk1, milk2) {
- if (shiftDown && Math.random() < 0.01) {
- changePixel(milk1,"butter")
- }
- },
- reactions: {
- "melted_chocolate": { elem1:"chocolate_milk", elem2:null },
- "chocolate": { elem1:"chocolate_milk", elem2:"melted_chocolate", chance:0.05 },
- "coffee_ground": { elem1:"chocolate_milk", chance:0.05 },
- "juice": { elem1:"fruit_milk", elem2:null, chance:0.05, func: function(pixel1, pixel2){
- let newrgb = interpolateRgb(getRGB('rgb(250,250,250)'), getRGB(pixel2.color), 0.25);
- pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
- }},
- "soda": { elem1:"pilk", elem2:null, chance:0.1 },
- "yolk": { elem1:"eggnog", elem2:null, chance:0.1 },
- "dirt": { elem1: null, elem2: "mud" },
- "sand": { elem1: null, elem2: "wet_sand" },
- "clay_soil": { elem1: null, elem2: "clay" },
- "caramel": { color1:"#C8B39A", elem2:null, chance:0.05 },
- "sugar": { elem2:null, chance:0.005},
- },
- tempLow: 0,
- stateLow: "ice_cream",
- stateLowColorMultiplier: [0.97,0.93,0.87],
- tempHigh: 93,
- stateHigh: "yogurt",
- viscosity: 1.5,
- category: "liquids",
- state: "liquid",
- density: 1036.86,
- isFood: true
-}
-elements.cream = {
- color: "#f7f7f7",
- behavior: behaviors.LIQUID,
- onMix: function(milk1, milk2) {
- if ((shiftDown && Math.random() < 0.01) || (elements[milk2.element].id === elements.milk.id && Math.random() < 0.00025)) {
- changePixel(milk1,"butter")
- }
- },
- reactions: {
- "dirt": { elem1: null, elem2: "mud" },
- "sand": { elem1: null, elem2: "wet_sand" },
- "clay_soil": { elem1: null, elem2: "clay" },
- "melted_chocolate": { color1:"#664934", elem2:null },
- "chocolate": { color1:"#664934", elem2:"melted_chocolate", chance:0.05 },
- "juice": { elem1:"fruit_milk", elem2:null, chance:0.05, func: function(pixel1, pixel2){
- let newrgb = interpolateRgb(getRGB('rgb(250,250,250)'), getRGB(pixel2.color), 0.25);
- pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
- }},
- "soda": { elem1:"pilk", elem2:null, chance:0.1 },
- "yolk": { elem1:"#eggnog", elem2:null, chance:0.1 },
- "caramel": { color1:"#C8B39A", chance:0.05 },
- "sugar": { elem2:null, chance:0.005},
- },
- viscosity: 1.5,
- tempHigh: 1000,
- stateHigh: ["smoke","smoke","smoke","steam","steam","calcium"],
- tempLow: 0,
- stateLow: "ice_cream",
- stateLowColorMultiplier: 0.97,
- category: "liquids",
- hidden: true,
- isFood: true,
- state: "liquid",
- density: 959.97,
-}
-function getRGB(rgb){
- let rgb2 = rgb.replace(")", "").replace("rgb(", "").replace(/,/g, "r").split("r")
- return { r: parseInt(rgb2[0]), g: parseInt(rgb2[1]), b: parseInt(rgb2[2]) };
-}
-elements.peach = {
- 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: ["#ffb485", "#ffa770", "#ff7b61", "#ff512e", "#ff350d"],
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#ffa74f",
- isFood: true,
- properties: {
- fruit: "peach",
- type: "fruit",
- }
-}
-elements.peach_seed = {
- color: "#240c00",
- 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 > 50 && pixel.temp < 100) {
- 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 = "peach";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"peach"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.plum = {
- 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: "#1c0030",
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#d2880a",
- isFood: true,
- properties: {
- fruit: "plum",
- type: "fruit",
- }
-}
-elements.plum_seed = {
- color: "#240c00",
- 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 > 50 && pixel.temp < 100) {
- 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 = "plum";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"plum"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.juice.reactions.juice = {
- func: function(pixel1, pixel2){
- if(pixel1.color != pixel2.color){
- if(Math.floor(Math.random() * 1000) == 1){
- let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.5);
- pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
- pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
- }
- }
- }
-}
-elements.juice.onMix = function(pixel){
- let num = Math.floor(Math.random() * 4);
- let x = pixel.x + adjacentCoords[num][0];
- let y = pixel.y + adjacentCoords[num][1];
- if(!isEmpty(x,y) && !outOfBounds(x,y)){
- let pixel2 = pixelMap[x][y];
- if(pixel.color != pixel2.color && pixel2.element == "juice"){
- let condition;
- if(shiftDown == 0){
- condition = (Math.floor(Math.random() * 2) == 1);
- } else {
- condition = true;
- }
- if(condition){
- let newrgb = interpolateRgb(getRGB(pixel.color), getRGB(pixel2.color), 0.5);
- pixel.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
- pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
- }
- }
- }
- }
-elements.vine.behavior = [["XX", "ST:vine", "XX"],["ST:vine", "XX", "ST:vine"],["XX", "ST:vine AND M1", "XX"]]
-elements.apricot = {
- 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: ["#ffa100", "#FF5D00", "#FF7A00", "#FF9700"],
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#ffa836",
- isFood: true,
- properties: {
- fruit: "apricot",
- type: "fruit",
- }
-}
-elements.apricot_seed = {
- color: "#291300",
- 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 > 50 && pixel.temp < 100) {
- 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 = "apricot";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"apricot"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.orange = {
- 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: "#FFB400",
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#FFDB00",
- isFood: true,
- properties: {
- fruit: "orange",
- type: "fruit",
- }
-}
-elements.orange_seed = {
- color: "#291300",
- 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 > 50 && pixel.temp < 100) {
- 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 = "orange";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"orange"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.random_seed = {
- color: "#291300",
- tick: function(pixel) {
- if(pixel.start == pixelTicks){
- pixel.fruit = fruits[Math.floor(Math.random() * fruits.length)];
- }
- if (isEmpty(pixel.x,pixel.y+1)) {
- movePixel(pixel,pixel.x,pixel.y+1);
- }
- else {
- if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) {
- 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 = pixel.fruit;
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.multi_seed = {
- color: "#291300",
- tick: function(pixel) {
- pixel.fruit = fruits[Math.floor(Math.random() * fruits.length)]
- if (isEmpty(pixel.x,pixel.y+1)) {
- movePixel(pixel,pixel.x,pixel.y+1);
- }
- else {
- if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) {
- 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 = "random";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-elements.fruit_vine = {
- category: "life",
- color: elements.plant.color,
- behavior: [["XX", "ST:fruit_vine AND ST:wood", "XX"], ["ST:fruit_vine AND ST:wood", "XX", "ST:fruit_vine AND ST:wood"], ["XX", "ST:fruit_vine AND M1 AND ST:wood", "XX"]],
- properties: {
+
+
+class bushSeed{
+ behavior = behaviors.STURDYPOWDER;
+ category = "life";
+ properties = {
age: 0,
- },
- tick: function(pixel){
- if(Math.floor(Math.random() * 100) == 1 && pixel.age > 25 && pixel.age < 500){
- for(var i = 0; i < squareCoords.length; i++){
- let x1 = pixel.x + squareCoords[i][0];
- let y1 = pixel.y + squareCoords[i][1];
- if(!isEmpty(x1,y1) && !outOfBounds(x1,y1) && !vineExclude.includes(pixelMap[x1][y1].element)){
- let randomNum = Math.floor(Math.random() * 4);
- let x2 = x1 + squareCoords[randomNum][0];
- let y2 = y1 + squareCoords[randomNum][1];
- if(isEmpty(x2,y2) && !outOfBounds(x2,y2)){
- createPixel("fruit_vine", x2, y2);
- pixelMap[x2][y2].fruit = pixel.fruit;
- }
- }
- }
- }
- pixel.age += 1;
- if(pixel.fruit){
- 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) && Math.floor(Math.random() * 1000) == 5){
- createPixel(pixel.fruit, x, y);
- }
- }
- }
- if(!pixel.fruit){
- for(var i = 0; i < squareCoords.length; i++){
- let x = pixel.x + squareCoords[i][0];
- let y = pixel.y + squareCoords[i][1];
- if(isEmpty(x,y) || outOfBounds(x,y)){ continue; }
- let pixel2 = pixelMap[x][y];
- if(pixel2.fruit){
- pixel.fruit = pixel2.fruit;
- } else { continue; }
- }
- }
- }
-}
-elements.grape.behavior = [["XX", "ST:fruit_vine", "XX"], ["ST:fruit_vine", "XX", "ST:fruit_vine"], ["M2", "ST:fruit_vine AND M1", "M2"]];
-elements.tomato.behavior = elements.grape.behavior;
-elements.tomato_seed = {
- color: "#FFFAAD",
- category: "life",
- behavior: behaviors.POWDER,
- tick: function(pixel){
+ };
+ tick = function(pixel){
if(pixel.age > 40){
- changePixel(pixel, "fruit_vine");
- pixel.fruit = "tomato";
+ let x1 = pixel.x - 1;
+ let y = pixel.y;
+ let x2 = pixel.x + 1;
+ if(isEmpty(x1,y) && !outOfBounds(x1,y)){
+ createPixel("bush_base", x1, y);
+ pixelMap[x1][y].fruit = pixel.fruit;
+ }
+ if(isEmpty(x2,y) && !outOfBounds(x2,y)){
+ createPixel("bush_base", x2, y);
+ pixelMap[x2][y].fruit = pixel.fruit;
+ }
+ if(!isEmpty(x1, y) && !isEmpty(x2, y)){
+ deletePixel(pixel.x, pixel.y);
+ }
}
- pixel.age += 1;
- },
- properties: {
- age: 0,
- },
-}
-elements.grape_seed = {
- color: "#231A00",
- category: "life",
- behavior: behaviors.POWDER,
- tick: function(pixel){
- if(pixel.age > 40){
- changePixel(pixel, "fruit_vine");
- pixel.fruit = "grape";
+ pixel.age += 1;
+ };
+ constructor(fruit, colour){
+ this.properties.fruit = fruit;
+ this.color = colour;
}
- pixel.age += 1;
- },
- properties: {
- age: 0,
- },
-}
-elements.kiwi = {
- behavior: elements.grape.behavior,
- color: "#403000",
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#21A800",
- isFood: true,
- properties: {
- type: "fruit",
- }
-}
-elements.kiwi_seed = {
- color: "#231A00",
- category: "life",
- behavior: behaviors.POWDER,
- tick: function(pixel){
- if(pixel.age > 40){
- changePixel(pixel, "fruit_vine");
- pixel.fruit = "kiwi";
- }
- pixel.age += 1;
- },
- properties: {
- age: 0,
- },
}
elements.bush_base = {
color: elements.wood.color,
@@ -885,7 +401,7 @@ elements.bush_cane = {
if(isEmpty(x,y) && !outOfBounds(x,y)){
createPixel("fruit_leaves", x, y);
pixelMap[x][y].fruit = pixel.fruit;
- pixel.blooming = trueFalse(1, 1)[Math.floor(Math.random() * 2)];
+ pixel.blooming = [true, false][Math.floor(Math.random() * 2)];
}
}
}
@@ -898,675 +414,331 @@ elements.bush_cane = {
tempLow: -2,
stateLow: "frozen_plant",
}
-function trueFalse(numTrue, numFalse){
- let list = [];
- for(var i = 0; i < numTrue; i++){
- list.push(true);
- }
- for(var i = 0; i < numFalse; i++){
- list.push(false);
- }
- return list;
-}
-elements.raspberry_seed = {
- color: "#ffe099",
- behavior: behaviors.STURDYPOWDER,
- category: "life",
- properties: {
- age: 0,
- },
- tick: function(pixel){
- if(pixel.age > 40){
- let x1 = pixel.x - 1;
- let y = pixel.y;
- let x2 = pixel.x + 1;
- if(isEmpty(x1,y) && !outOfBounds(x1,y)){
- createPixel("bush_base", x1, y);
- pixelMap[x1][y].fruit = "raspberry";
- }
- if(isEmpty(x2,y) && !outOfBounds(x2,y)){
- createPixel("bush_base", x2, y);
- pixelMap[x2][y].fruit = "raspberry";
- }
- if(!isEmpty(x1, y) && !isEmpty(x2, y)){
- deletePixel(pixel.x, pixel.y);
- }
- }
- pixel.age += 1;
- }
-}
-elements.raspberry = {
- behavior: [["XX", "ST:bush_cane", "XX"],["ST:bush_cane", "XX", "ST:bush_cane"],["M2", "ST:bush_cane AND M1", "M2"]],
- color: ["#b00009", "#bf000a", "#d10812", "#db1822"],
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#ff2b36",
- isFood: true,
- properties: {
- fruit: "raspberry",
- type: "fruit",
- }
-}
-elements.blueberry_seed = {
- color: "#ffe099",
- behavior: behaviors.STURDYPOWDER,
- category: "life",
- properties: {
- age: 0,
- },
- tick: function(pixel){
- if(pixel.age > 40){
- let x1 = pixel.x - 1;
- let y = pixel.y;
- let x2 = pixel.x + 1;
- if(isEmpty(x1,y) && !outOfBounds(x1,y)){
- createPixel("bush_base", x1, y);
- pixelMap[x1][y].fruit = "blueberry";
- }
- if(isEmpty(x2,y) && !outOfBounds(x2,y)){
- createPixel("bush_base", x2, y);
- pixelMap[x2][y].fruit = "blueberry";
- }
- if(!isEmpty(x1, y) && !isEmpty(x2, y)){
- deletePixel(pixel.x, pixel.y);
- }
- }
- pixel.age += 1;
- }
-}
-elements.blueberry = {
- behavior: [["XX", "ST:bush_cane", "XX"],["ST:bush_cane", "XX", "ST:bush_cane"],["M2", "ST:bush_cane AND M1", "M2"]],
- color: ["#01082b", "#060e3d", "#111b52", "#1e2866"],
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#726778",
- isFood: true,
- properties: {
- fruit: "blueberry",
- type: "fruit",
- }
-}
-elements.blackberry_seed = {
- color: "#ffe099",
- behavior: behaviors.STURDYPOWDER,
- category: "life",
- properties: {
- age: 0,
- },
- tick: function(pixel){
- if(pixel.age > 40){
- let x1 = pixel.x - 1;
- let y = pixel.y;
- let x2 = pixel.x + 1;
- if(isEmpty(x1,y) && !outOfBounds(x1,y)){
- createPixel("bush_base", x1, y);
- pixelMap[x1][y].fruit = "blackberry";
- }
- if(isEmpty(x2,y) && !outOfBounds(x2,y)){
- createPixel("bush_base", x2, y);
- pixelMap[x2][y].fruit = "blackberry";
- }
- if(!isEmpty(x1, y) && !isEmpty(x2, y)){
- deletePixel(pixel.x, pixel.y);
- }
- }
- pixel.age += 1;
- }
-}
-elements.blackberry = {
- behavior: [["XX", "ST:bush_cane", "XX"],["ST:bush_cane", "XX", "ST:bush_cane"],["M2", "ST:bush_cane AND M1", "M2"]],
- color: ["#0c0021", "#070014", "#080017", "#09001a"],
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#2e0000",
- isFood: true,
- properties: {
- fruit: "blackberry",
- type: "fruit",
- }
-}
-elements.mango = {
- 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: ["#d63a45", "#e97341", "#9d9f3e", "#e4791b"],
- category: "food",
- breakInto: "juice",
- breakIntoColor: "#ffa300",
- isFood: true,
- properties: {
- fruit: "mango",
- type: "fruit",
- }
-}
-elements.mango_seed = {
- color: "#240c00",
- 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 > 50 && pixel.temp < 100) {
- 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 = "mango";
- }
- }
- }
- else if (pixel.age > 1000) {
- changePixel(pixel,"wood");
- }
- pixel.age++;
- }
- doDefaults(pixel);
- },
- properties: {
- "age":0,
- fruit:"mango"
- },
- tempHigh: 100,
- stateHigh: "dead_plant",
- tempLow: -2,
- stateLow: "frozen_plant",
- burn: 65,
- burnTime: 15,
- category: "life",
- state: "solid",
- density: 1500,
- cooldown: defaultCooldown,
- seed: true,
-};
-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];
- let y = pixel.y + adjacentCoords[i][1]
- if(!isEmpty(x,y) && !outOfBounds(x,y)){
- 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,
+ color: elements.plant.color,
behavior: behaviors.WALL,
+ category: "life",
+ properties: {
+ age: 0,
+ },
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;
+ if(isEmpty(pixel.x, pixel.y - 1) && !outOfBounds(pixel.x, pixel.y - 1) && Math.random() < ((pixel.age/50000 > 0.005) ? 0.005 : (pixel.age/50000)) && pixel.fruit && ![undefined, "watermelon", "pumpkin"].includes(pixel.fruit)){
+ createPixel("fruit_leaves", pixel.x, pixel.y - 1);
+ pixelMap[pixel.x][pixel.y - 1].blooming = true;
+ pixelMap[pixel.x][pixel.y - 1].color = "#FFE2E2";
+ pixelMap[pixel.x][pixel.y - 1].fruit = pixel.fruit;
}
- } 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", "pumpkin", undefined].includes(pixel.fruit)){
+ let num = (Math.random() > 0.5) ? -1 : 1;
+ if(isEmpty(pixel.x + num, pixel.y)){
+ createPixel("low_fruit_vine", pixel.x + num, pixel.y);
+ pixelMap[pixel.x + num][pixel.y].fruit = pixel.fruit;
}
}
- 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;
- }`
- )
- }
+ pixel.age++;
}
}
-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],
- ]
+let str = "";
+for(let i = 0; i < vineGrow.length; i++){
+ str += (i == vineGrow.length-1) ? `ST:${vineGrow[i]}` : `ST:${vineGrow[i]} AND `;
}
-elements.watermelon_seed = {
- color: "#231A00",
+elements.fruit_vine = {
category: "life",
- behavior: behaviors.STURDYPOWDER,
+ color: elements.plant.color,
+ behavior: [["XX", str, "XX"], [str, "XX", str], ["XX", str + " AND M1", "XX"]],
+ properties: {
+ age: 0,
+ },
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");
+ if(Math.floor(Math.random() * 100) == 1 && pixel.age > 25 && pixel.age < 500){
+ for(var i = 0; i < squareCoords.length; i++){
+ let x1 = pixel.x + squareCoords[i][0];
+ let y1 = pixel.y + squareCoords[i][1];
+ if(!isEmpty(x1,y1) && !outOfBounds(x1,y1) && vineGrow.includes(pixelMap[x1][y1].element)){
+ //pixel.drag = true;
+ let randomNum = Math.floor(Math.random() * 4);
+ let x2 = x1 + squareCoords[randomNum][0];
+ let y2 = y1 + squareCoords[randomNum][1];
+ if(isEmpty(x2,y2) && !outOfBounds(x2,y2)){
+ createPixel("fruit_vine", x2, y2);
+ pixelMap[x2][y2].fruit = pixel.fruit;
}
+ } //else {pixel.drag = false;}
+ }
+ }
+ pixel.age += 1;
+ if(pixel.fruit){
+ 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) && Math.floor(Math.random() * 5000) == 5 && pixel.age > 650){
+ createPixel("fruit_leaves", x, y);
+ pixelMap[x][y].blooming = true;
+ pixelMap[x][y].color = "#FFE2E2";
}
}
}
- 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);
+ if(!pixel.fruit){
+ for(var i = 0; i < squareCoords.length; i++){
+ let x = pixel.x + squareCoords[i][0];
+ let y = pixel.y + squareCoords[i][1];
+ if(isEmpty(x,y) || outOfBounds(x,y)){ continue; }
+ let pixel2 = pixelMap[x][y];
+ if(pixel2.fruit){
+ pixel.fruit = pixel2.fruit;
+ } else { continue; }
}
- 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",
+behaviors.VINEFRUIT = ["XX|ST:fruit_vine AND ST:low_fruit_vine|XX",
+"ST:fruit_vine AND ST:low_fruit_vine|XX|ST:fruit_vine AND ST:low_fruit_vine",
+"M2|M1|M2"];
+elements.grape.behavior = behaviors.VINEFRUIT;
+elements.tomato.behavior = behaviors.VINEFRUIT;
+elements.grape_seed = new vineSeed("grape",["#281B01", "#2D1F06", "#2D1F06"]);
+elements.tomato_seed = new vineSeed("tomato", ["#F8F5D1","#E7E5CF","#E3E1C5"]);
+elements.apple = new fruit("apple", ["#FF0507", "#EC0A0D", "#F22426", "#DC2C2E"], ["#F9C497", "#EED3BB", "#EEDEBB"]);
+elements.apple_seed = new treeSeed("apple", ["#3B1C01", "#3E2107", "#3A1C02"]);
+function colorMix(p1, p2, bias = 0.5){
+ p1.color = interpolateRgb(getRGB(p1.color), getRGB(p2.color), bias);
+ p2.color = interpolateRgb(getRGB(p1.color), getRGB(p2.color), bias);
}
-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" }
- }
+function interpolateRgb(rgb1, rgb2, ratio = 0.5) {
+ const interpolatedRgb = {
+ r: Math.round(rgb1.r + (rgb2.r - rgb1.r) * ratio),
+ g: Math.round(rgb1.g + (rgb2.g - rgb1.g) * ratio),
+ b: Math.round(rgb1.b + (rgb2.b - rgb1.b) * ratio),
+ };
+ return normalize(interpolatedRgb);
}
-elements.roasted_cocoa_bean = {
- behavior: behaviors.POWDER,
- color: "#6b3b24",
- category: "food",
- isFood: true,
- breakInto: "cocoa_powder",
+function getRGB(rgb){
+ let rgb2 = rgb.replace(")", "").replace("rgb(", "").replace(/,/g, "r").split("r")
+ return { r: parseInt(rgb2[0]), g: parseInt(rgb2[1]), b: parseInt(rgb2[2]) };
}
-elements.cocoa_powder = {
- behavior: behaviors.POWDER,
- color: "#451f16",
- category: "food",
- isFood: true,
- reactions: {
- melted_cocoa_butter: { elem1: "chocolate", elem2: "chocolate" }
- }
+
+elements.juice.tick = function(pixel){
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.005){
+ colorMix(pixel, pixelMap[x][y]);
+ }
+ }
}
-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.juice.onMix = function(pixel){
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.5){
+ colorMix(pixel, pixelMap[x][y]);
+ }
+ }
}
-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;
+elements.fruit_milk.tick = function(pixel){
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.005){
+ colorMix(pixel, pixelMap[x][y]);
+ }
+ }
+}
+elements.fruit_milk.onMix = function(pixel){
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.5){
+ colorMix(pixel, pixelMap[x][y]);
+ }
+ }
+}
+function normalize(obj){
+ return `rgb(${obj.r},${obj.g},${obj.b})`;
+}
+
+elements.milk.reactions.juice = {func: function(p1, p2){
+ let rgb = interpolateRgb(getRGB(p1.color), getRGB(p2.color), 0.25);
+ changePixel(p1, "fruit_milk");
+ changePixel(p2, "fruit_milk");
+ p1.color = rgb;
+ p2.color = rgb;
+ }
+};
+elements.juice.reactions.carbon_dioxide = { func: function(p1,p2){
+ let rgb = interpolateRgb(getRGB(p1.color), getRGB(elements.water.color), 0.2);
+ changePixel(p1, "soda");
+ changePixel(p2, "foam");
+ p1.color = rgb;
+ p2.color = rgb;
+ }
+}
+elements.juice.reactions.seltzer = { func: function(p1,p2){
+ let rgb = interpolateRgb(getRGB(p1.color), getRGB(p2.color), 0.5);
+ changePixel(p1, "soda");
+ changePixel(p2, "foam");
+ p1.color = rgb;
+ p2.color = rgb;
+ }
+}
+
+elements.milk.reactions.soda = {
+ func: function(p1,p2){
+ let rgb = interpolateRgb(getRGB(p1.color), getRGB(p2.color), 0.5);
+ changePixel(p1, "pilk");
+ changePixel(p2, "pilk");
+ p1.color = rgb;
+ p2.color = rgb;
+ }
+}
+
+elements.seed_maker = {
+ behavior: behaviors.WALL,
+ category: "machines",
+ tick: function(pixel){
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if((!isEmpty(x,y) && !outOfBounds(x,y)) && plants.includes(pixelMap[x][y].element)){
+ changePixel(pixelMap[x][y], `${pixelMap[x][y].element}_seed`);
+ }
+ }
+ }
+}
+let r;
+if(settings.cleargases){
+ if(settings.bg != undefined){
+ r = interpolateRgb(hexToRGB("#E5EAEA"), hexToRGB(settings.bg), 0.85);
} else {
- pixel.age++;
+ r = interpolateRgb(hexToRGB("#E5EAEA"), {r:0,g:0,b:0}, 0.85);
}
- if(pixel.age == 550){
- changePixel(pixel, "sugarcane")
- }
- }
+};
+elements.ethylene = {
+ behavior: behaviors.GAS,
+ category: "gases",
+ reactionCatalysts: {
+ gold: {e1: "water", product: "alcohol", chance: 0.025},
+ copper: {e1: "oxygen", product: "vinegar", chance: 0.025}
+ },
+ reactions: {
+ oxidized_copper: { elem1: "vinegar", elem2: "copper", chance: 0.025},
+ },
+ color: r || ["#fffffc", "#f7f7f2", "#eaebe6", "#ededed", "#f7f7f2", "#f2f2f2"],
+ colorObject: (r != undefined) ? r.split("(")[1].split(")")[0].split(",") : undefined,
+ state: "gas",
+ burnInto: ["carbon_dioxide", "steam"],
+ burn: 100,
+ burnTime: 15,
+ stateHigh: "fire",
+ tempHigh: 425,
+ tick: function(pixel){
+ catalyse(pixel);
+ if(settings.cleargases){
+ let rgb;
+ if(settings.bg != undefined){
+ rgb = interpolateRgb(hexToRGB("#E5EAEA"), hexToRGB(settings.bg), 0.85);
+ } else {
+ rgb = interpolateRgb(hexToRGB("#E5EAEA"), {r:0,g:0,b:0}, 0.85);
+ }
+ pixel.color = rgb;
+ }else if (!["#fffffc", "#f7f7f2", "#eaebe6", "#ededed", "#f7f7f2", "#f2f2f2"].includes(pixel.color)){
+ pixel.color = ["#fffffc", "#f7f7f2", "#eaebe6", "#ededed", "#f7f7f2", "#f2f2f2"][Math.floor(Math.random()*6)];
+ };
+ },
}
-elements.sugarcane = {
- color: "#76881c",
- breakInto: ["sugar_water", "dead_plant", "dead_plant", "dead_plant"],
- isFood: true,
- behavior: behaviors.WALL,
- category: "food",
+elements.propylene = {
+ behavior: behaviors.GAS,
+ category: "gases",
+ reactionCatalysts: {
+ nickel: {e1: "hydrogen", product: "propane", chance: 0.025},
+ },
+ color: r || ["#fffffc", "#f7f7f2", "#eaebe6", "#ededed", "#f7f7f2", "#f2f2f2"],
+ colorObject: (r != undefined) ? r.split("(")[1].split(")")[0].split(",") : undefined,
+ state: "gas",
+ burnInto: ["carbon_dioxide", "steam"],
+ burn: 100,
+ burnTime: 15,
+ stateHigh: "fire",
+ tempHigh: 425,
+ tick: function(pixel){
+ catalyse(pixel);
+ let rgb;
+ if(settings.cleargases){
+ if(settings.bg != undefined){
+ rgb = interpolateRgb(hexToRGB("#E5EAEA"), hexToRGB(settings.bg), 0.85);
+ } else {
+ rgb = interpolateRgb(hexToRGB("#E5EAEA"), {r:0,g:0,b:0}, 0.85);
+ }
+ pixel.color = rgb;
+ } else if (!["#fffffc", "#f7f7f2", "#eaebe6", "#ededed", "#f7f7f2", "#f2f2f2"].includes(pixel.color)){
+ pixel.color = ["#fffffc", "#f7f7f2", "#eaebe6", "#ededed", "#f7f7f2", "#f2f2f2"][Math.floor(Math.random()*6)];
+ };
+ },
}
+elements.propane.reactionCatalysts = {
+ aluminum: {e2: "hydrogen", product: "propylene", chance: 0.035},
+ gallium: {e2: "hydrogen", product: "propylene", chance: 0.025},
+};
+elements.propane.tick = function(pixel){
+ catalyse(pixel);
+}
+function catalyse(pixel){
+ let rC = elements[pixel.element].reactionCatalysts;
+ let neighbors = [];
+ let p = [];
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(!isEmpty(x,y) && !outOfBounds(x,y)){
+ neighbors.push(pixelMap[x][y].element);
+ p.push(pixelMap[x][y]);
+ }
+ }
+ for(item in rC){
+ if(neighbors.includes(item) && neighbors.includes(rC[item].e1) && Math.random() < rC[item].chance){
+ changePixel(pixel, rC[item].product);
+ if(rC[item].e2 != undefined){
+ changePixel(p[neighbors.indexOf(rC[item].e1)], rC[item].e2);
+ } else {
+ let P = p[neighbors.indexOf(rC[item].e1)];
+ deletePixel(P.x, P.y);
+ }
+ } else if (rC[item].e1 == undefined){
+ if(neighbors.includes(item) && rC[item].e2 != undefined && Math.random() < rC[item].chance){
+ for(let i = 0; i < squareCoords.length; i++){
+ let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
+ if(isEmpty(x,y) && !outOfBounds(x,y)){
+ createPixel(rC[item].e2, x, y);
+ changePixel(pixel, rC[item].product);
+ }
+ }
+ }
+ }
+ }
+}
+elements.orange = new fruit("orange", ['#FA9A14', '#E88D0F', '#F0963D', '#F4810E'], ['#FFDA0B', '#FFEA09', '#FFD609', '#FCC921'], "tree");
+elements.orange_seed = new treeSeed("orange", ['#EEE9C7', '#F4F1D0', '#E8E4C4', '#DBD5AF']);
+elements.kiwi = new fruit("kiwi", ['#886002', '#7D5B0D', '#876412', '#97620F'], ['#7DB410', '#86BC1B', '#95CE22', '#91CF12'], "vine");
+elements.kiwi_seed = new vineSeed("kiwi", ['#3E2A01', '#392804', '#473307', '#1E1500']);
+elements.raspberry = new fruit("raspberry", ['#FF201C', '#EF3D3A', '#FA5350', '#DF3E3B'], ['#FF4450', '#F43643', '#DF2C38', '#E92344'], "bush");
+elements.raspberry_seed = new bushSeed("raspberry", ['#572600', '#4C2506', '#592E0D', '#5E3211']);
+elements.blueberry = new fruit("blueberry", ['#322954', '#3F3366', '#2B1B5E', '#4C3C81'], ['#51042C', '#550E33', '#420D28', '#520F32'], "bush", ['#78573A', '#72492D', '#7D5438', '#704F3A']);
+elements.blackberry = new fruit("blackberry", ['#1A013A', '#1E073A', '#3D0A49', '#33043F'], ['#DC5F5F', '#D76D6D', '#BF6363', '#B05D5D'], "bush", ['#DA7878', '#C87B7B', '#AD6161', '#915656']);
+elements.strawberry = new fruit("strawberry", ['#FE3030', '#E93030', '#DE1F1F', '#CE0B0B'], ['#EA5C46', '#E24B34', '#CE5A48', '#E7604B'], "vine", ['#B27F65', '#AA7358', '#A27553', '#AF8B62'], false, true);
+elements.pear = new fruit("pear", ["#F1F8A7", "#DCE398", "#E3EE7E", "#D6E07F"], ["#F6F9D5", "#F6F9D5", "#E8ECC6", "#E8ECC0"], "tree", ["#3B1C01", "#3E2107", "#3A1C02"]);
+elements.mango = new fruit("mango", ["#F74E3E", "#E95D51", "#EE853B", "#D77026", "#F8BF46", "#F8B524", "#95C408", "#A5CD2D"], ["#FFC905", "#FFD605", "#FFE205", "#FFF305", "#FCE118"], "tree", ["#E8EABB", "#E3E5BA", "#EAEDC0", "#E8EAB1", "#D8DBA5"]);
+elements.lemon = new fruit("lemon", ["#FCF924", "#FCF924", "#EEEA1A", "#F6F212", "#FBF70B"], ["#F6F373", "#EEEC77", "#E3E267", "#F3F18B"], "tree", ["#F8F7B2", "#E9E9B1", "#E9E8A7", "#F1EFA4"]);
+elements.plum = new fruit("plum", ["#67486E", "#705476", "#634A69", "#785281"], ["#D58D77", "#DC9984", "#CA8D7A", "#CF816A"], "tree", ["#A08C5D", "#907D50", "#9B8551", "#AA9563"]);
+elements.peach = new fruit("peach", ["#F76856", "#EA5D4A", "#EA6D4A", "#E5785A", "#FE824A", "#EE7A45", "#FAA543", "#F59D39", "#FF744D"], ["#F86F1F", "#EC742F", "#EC832F", "#EC9A2F", "#ECA62F"], "tree", ["#735940", "#7B5C3D", "#7D5935"]);
+elements.apricot = new fruit("apricot", ["#F5A61F", "#F5A61F", "#EA9B12", "#F8A109"], ["#F2B016", "#F2AD0C", "#FBB81E", "#FFB301"], "tree", ["#735940", "#7B5C3D", "#7D5935"]);
+elements.avocado = new fruit("avocado", ["#3c9419", "#348514", "#367a1b", "#2f7d10"], ["#cff74a", "#caf244", "#c1e649", "#b3d640"], "tree", ["#4d290a", "#4d2b0d", "#63360f", "#572d09"]);
+elements.avocado.breakInto = "guacamole";
+elements.guacamole = {
+ color: ["#cff74a", "#caf244", "#c1e649", "#b3d640"],
+ behavior: behaviors.LIQUID,
+ viscosity: 950,
+ category: "food",
+ state: "liquid",
+ isFood: true,
+}
+settingsMenu.innerHTML += `
+
+
+`;
diff --git a/mods/reactor_supplies_and_others.js b/mods/reactor_supplies_and_others.js
new file mode 100644
index 00000000..5118b122
--- /dev/null
+++ b/mods/reactor_supplies_and_others.js
@@ -0,0 +1,88 @@
+elements.reactor_water = {
+ color: "#00FFCB",
+ behavior: behaviors.LIQUID,
+ category: "reactor_supplies",
+ state: "liquid",
+ density: 1050,
+ tempHigh:200,
+ tempLow:-40,
+ stateHigh: "reactor_water_steam",
+ stateLow: "reactor_water_ice",
+};
+
+elements.reactor_container_body_user = {
+ color: "#676767",
+ behavior: behaviors.SOLID,
+ category: "reactor_supplies",
+ state: "solid",
+ tempHigh: 700,
+ tempLow: -200,
+ temp: 50,
+ stateHigh: "molten_reactor_conatainer",
+ stateLow: "frozen_reactor_container",
+};
+
+elements.molten_reactor_container = {
+ color: "#FF5000",
+ behavior: behaviors.LIQUID,
+ category: "reactor_supplies",
+ state: "liquid",
+ tempLow: 50,
+ temp: 700,
+ stateLow: "reactor_container_body_user",
+};
+
+elements.frozen_reactor_container = {
+ color: "#7FA0A8",
+ behavior: behaviors.SOLID,
+ category: "reactor_supplies",
+ state: "solid",
+ tempHigh: 50,
+ temp: -200,
+ stateHigh: "reactor_container_body_user",
+};
+
+elements.reactor_water_steam = {
+ color: "#8CF193",
+ behavior: behaviors.GAS,
+ category: "reactor_supplies",
+ state: "gas",
+ tempLow: 150,
+ temp: 200,
+ stateLow: "reactor_water",
+};
+
+elements.reactor_water_ice = {
+ color: "#BBF5E6",
+ behavior: behaviors.SOLID,
+ category: "reactor_supplies",
+ state: "solid",
+ tempHigh: 20,
+ stateHigh: "reactor_water",
+ temp: -40,
+};
+
+elements.the_fun_tool = {
+ color: "#FF0000",
+ category: "reactor_supplies",
+ tool: function(pixel) {
+ if (pixel.elemet == "reactor_water") {
+ pixel.element = "explosion";
+ };
+ if (pixel.element == "reactor_water_ice") {
+ pixel.element = "explosion";
+ };
+ if (pixel.element == "reactor_water_steam") {
+ pixel.element = "explosion";
+ };
+ if (pixel.element == "molten_reactor_container") {
+ pixel.element = "explosion";
+ };
+ if (pixel.element == "frozen_reactor_container") {
+ pixel.element = "explosion";
+ };
+ if (pixel.element == "reactor_container_body_user") {
+ pixel.element = "explosion";
+ };
+ }
+};
\ No newline at end of file
diff --git a/mods/shade.js b/mods/shade.js
new file mode 100644
index 00000000..e7bafdac
--- /dev/null
+++ b/mods/shade.js
@@ -0,0 +1,46 @@
+"use strict";
+// Shade.ts -> Shade.js
+// Constants
+const SHADOW_UPDATE_INTERVAL = 4;
+const SHADOW_BLUR_RADIUS = 5;
+const SHADOW_INTENSITY = 128;
+// Canvases
+let shadowCanvas1;
+let shadowCanvasCtx1;
+let shadowCanvas2;
+let shadowCanvasCtx2;
+
+function initializeShade() {
+ shadowCanvas1 = new OffscreenCanvas(width + 1, height + 1);
+ shadowCanvasCtx1 = shadowCanvas1.getContext('2d');
+ shadowCanvas2 = new OffscreenCanvas(width + 1, height + 1);
+ shadowCanvasCtx2 = shadowCanvas2.getContext("2d");
+}
+
+function updateShadows() {
+ if (pixelTicks % SHADOW_UPDATE_INTERVAL !== 0)
+ return;
+ const shadowCanvasImageData1 = shadowCanvasCtx1.createImageData(width + 1, height + 1);
+ const shadowCanvasData1 = shadowCanvasImageData1.data;
+ for (let pixel of currentPixels) {
+ const exposed = getNeighbors(pixel).length !== 4;
+ const alphaIndex = (pixel.y * (width + 1) + pixel.x) * 4 + 3;
+ shadowCanvasData1[alphaIndex] = exposed ? 0 : SHADOW_INTENSITY;
+ }
+ shadowCanvasCtx1.putImageData(shadowCanvasImageData1, 0, 0);
+ // Blur the shadows
+ shadowCanvasCtx2.clearRect(0, 0, shadowCanvas2.width, shadowCanvas2.height);
+ shadowCanvasCtx2.filter = `blur(${SHADOW_BLUR_RADIUS}px)`;
+ shadowCanvasCtx2.drawImage(shadowCanvas1, 0, 0, shadowCanvas2.width, shadowCanvas2.height);
+ shadowCanvasCtx2.filter = "none";
+}
+
+function drawShadows(ctx) {
+ ctx.globalAlpha = 1.0;
+ ctx.drawImage(shadowCanvas2, 0, 0, canvas.width, canvas.height);
+}
+
+// Hooks
+runAfterReset(initializeShade);
+runEveryTick(updateShadows);
+renderPostPixel(drawShadows);
diff --git a/mods/spouts.js b/mods/spouts.js
index 8dd95b93..39f1a3cf 100644
--- a/mods/spouts.js
+++ b/mods/spouts.js
@@ -62,9 +62,9 @@ elements.pool_water_spout = {
stateHigh: "molten_steel",
conduct: 0.42,
behavior: [
- "XX|CR:pool_water_spout|XX",
- "CR:pool_water_spout|XX|CR:pool_water_spout",
- "XX|CR:pool_water_spout|XX",
+ "XX|CR:pool_water|XX",
+ "CR:pool_water|XX|CR:pool_water",
+ "XX|CR:pool_water|XX",
],
}
@@ -712,4 +712,4 @@ elements.cyanide_spout = {
"CR:cyanide|XX|CR:cyanide",
"XX|CR:cyanide|XX",
],
-}
\ No newline at end of file
+}
diff --git a/mods/themostrandomstuff.js b/mods/themostrandomstuff.js
new file mode 100644
index 00000000..63fe4dc3
--- /dev/null
+++ b/mods/themostrandomstuff.js
@@ -0,0 +1,523 @@
+elements.clump = {
+ color: ["#1e0042", "#7d4db8"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "mythic",
+ state: "solid",
+ stateHigh: "ash",
+ tempHigh: 500,
+ tempLow: -45,
+ stateLow: "ice",
+ desc: "first element",
+}
+elements.block = {
+ color: "#9e0000",
+ behavior: behaviors.WALL,
+ category: "mythic",
+ state: "solid",
+ reactions: {
+ "clump": { elem1: "gassed", elem2: "oil" },
+ }
+}
+elements.plok = {
+ color: "#d4d4d4",
+ behavior: behaviors.LIQUID,
+ category: "mythic",
+ state: "liquid",
+}
+elements.gassed = {
+ color: "#1c2a7a",
+ behavior: behaviors.GAS,
+ category: "mythic",
+ state: "gas",
+ reactions: {
+ "plok": { elem1: "clump", elem2: "clump" },
+ }
+}
+elements.pilnol = {
+ color: "#290052",
+ behavior: behaviors.LIQUID,
+ category: "mythic",
+ state: "liquid",
+ stateHigh: "ash",
+ tempHigh: 500,
+ tempLow: -10,
+ stateLow: "block",
+}
+elements.plox = {
+ color: "#FFFFFF",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ desc: "It just... exists."
+}
+elements.philosophers_stone = {
+ color: "#FFD700",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ reactions: {
+ "silver": { elem1: "gold", elem2: "gold" },
+ "zinc": { elem1: "gold", elem2: "gold" },
+ "aluminum": { elem1: "gold", elem2: "gold" },
+ "steel": { elem1: "gold", elem2: "gold" },
+ "nickel": { elem1: "gold", elem2: "gold" },
+ }
+}
+elements.xnopyt = {
+ color: "#FF0000",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "n_explosion",
+ desc: "Then, xnopyt, AAAAA...."
+}
+elements.midas_touch_alternate = {
+ color: "#FFD700",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ reactions: {
+ "head": { elem1: "gold", elem2:"gold" },
+ "body": { elem1: "gold", elem2:"gold" }
+ },
+ desc: "This is made before the midas touch released."
+}
+elements.tainted_flesh = {
+ breakInto: "dead_tainted_flesh",
+ color: "#0a0014",
+ behavior: behaviors.WALL,
+ category: "mythic",
+ state: "solid",
+ reactions: {
+ "meat": { elem1: "rotten_meat", elem2:"rotten_meat" },
+ "cheese": { elem1: "rotten_cheese", elem2: "rotten_cheese" }
+ },
+}
+elements.mold = {
+ color: "#347557",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ reactions: {
+ "meat": { elem1: "rotten_meat", elem2:"rotten_meat" },
+ "cheese": { elem1: "rotten_cheese", elem2: "rotten_cheese" }
+ },
+ desc: "Don't eat this, it's moldy! Ew."
+}
+elements.dead_tainted_flesh = {
+ hidden: true,
+ color: "#290e63",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+}
+elements.core = {
+ temp: 10000,
+ color: "#add8e6",
+ behavior: behaviors.WALL,
+ category: "mythic",
+ state: "gas",
+ tempHigh: 100000,
+ stateHigh: "supernova",
+ desc: "DO NOET HEET IT UP1!!!11!!1!1",
+}
+elements.sand_exploder = {
+ color: "#ff0000",
+ tool: function(pixel) {
+ if (pixel.element == "sand") {
+ pixel.element = "explosion"
+ }
+ },
+ category: "tools",
+}
+elements.tainted_flesh_exploder = {
+ color: "#0a0014",
+ tool: function(pixel) {
+ if (pixel.element == "tainted_flesh") {
+ pixel.element = "explosion"
+ }
+ },
+ category: "tools",
+}
+elements.thelm = {
+ color: "#0a0014",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ tempHigh: 9000,
+ stateHigh: "plok",
+ desc: "ITS OVER 9000!",
+}
+elements.klome = {
+ color: "#ffffff",
+ behavior: behaviors.POWDER,
+ category: "mythic",
+ state: "solid",
+ tempHigh: 500,
+ stateHigh: "thelm",
+ tempLow: -50,
+ stateLow: "plox",
+ desc: "I don't think that's sugar.",
+}
+elements.lard = {
+ color: "#f5efe9",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 50,
+ stateHigh: "liquid_lard",
+ burn: 50,
+ burnTime: 100,
+ burnInto: ["smoke", "ash"],
+ isFood: true,
+}
+elements.liquid_lard = {
+ color: "#fff8f6",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "steam",
+ tempLow: 50,
+ stateLow: "lard",
+ burn: 40,
+ burnTime: 80,
+ burnInto: ["smoke", "steam"],
+}
+elements.vanilla_extract = {
+ color: "#5C4033",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "steam",
+ tempLow: 1,
+ stateLow: "ice",
+ reactions: {
+ "soda": { elem1: "nuka_cola", elem2: "nuka_cola" }
+ },
+ desc: "hi, i'm vanilla extract."
+}
+elements.nuka_cola = {
+ hidden: true,
+ color: "#522d05",
+ behavior: behaviors.LIQUID,
+ category: "fallout",
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "carbon_dioxide",
+ tempLow: 1,
+ stateLow: "ice",
+ reactions: {
+ "uranium": { elem1: "nuka_cola_quantum", elem2: "nuka_cola_quantum" }
+ },
+ desc: "A refreshing Nuka-Cola!"
+}
+elements.nuka_cola_quantum = {
+ hidden: true,
+ color: "#54e5ff",
+ behavior: behaviors.LIQUID,
+ category: "fallout",
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "carbon_dioxide",
+ tempLow: 1,
+ stateLow: "ice",
+ desc: "A refreshing Nuka-Cola Quantum!"
+}
+elements.cabbage = {
+ color: ["#d0e3a8", "#dee8ca"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "ash",
+ tempLow: 1,
+ stateLow: "ice",
+ isFood: true,
+ reactions: {
+ salt: { elem1: "sauerkraut", elem2: "sauerkraut" }
+ },
+ desc: "It's cabbage."
+}
+elements.sauerkraut = {
+ color: ["#979704", "#999904"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "ash",
+ tempLow: 1,
+ stateLow: "ice",
+ isFood: true,
+ desc: "Awww, big bowl of sauerkraut! Every single morning! It was driving me crazy!"
+}
+elements.sulfuric_acid = {
+ color: "#ededed",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "steam",
+ tempLow: 1,
+ stateLow: "ice",
+ reactions: {
+ pool_water: { elem1: "grey_mixture", elem2: "grey_mixture" }
+ },
+}
+elements.grey_mixture = {
+ color: "#808080",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "brown_mixture",
+ tempLow: 1,
+ stateLow: "ice",
+}
+elements.brown_mixture = {
+ color: "#7d6648",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ tempHigh: 500,
+ stateHigh: "steam",
+ tempLow: 1,
+ stateLow: "ice",
+ reactions: {
+ metal_scrap: { elem1: "brown_mixture", elem2: "brown_mixture" },
+ methylamine: { elem1: "solid_blue_crystal", elem2: "solid_blue_crystal" }
+ },
+}
+elements.methylamine = {
+ color: "#ededed",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ tempHigh: 200,
+ stateHigh: "steam",
+ tempLow: 20,
+ stateLow: "ice",
+}
+elements.solid_blue_crystal = {
+ breakInto: "not_suspicious_blue_crystal",
+ color: "#00eaff",
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ tempHigh: 500,
+ stateHigh: "ash",
+ tempLow: 20,
+ stateLow: "ice",
+}
+elements.not_suspicious_blue_crystal = {
+ color: ["#00eaff", "#3ddfff"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "melted_blue_crystal",
+ tempLow: -20,
+ stateLow: "blue_crystal_ice",
+ desc: "It's not what it looks like!",
+}
+elements.melted_blue_crystal = {
+ color: "#00bbff",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ tempHigh: 500,
+ stateHigh: "steam",
+ tempLow: 20,
+ stateLow: "not_suspicious_blue_crystal",
+}
+elements.blue_crystal_ice = {
+ color: "#29eaff",
+ behavior: behaviors.WALL,
+ category: "states",
+ state: "solid",
+ tempHigh: 1,
+ stateHigh: "not_suspicious_blue_crystal",
+}
+elements.silt = {
+ color: "#a8947d",
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1200,
+ stateHigh: "molten_dirt",
+ tempLow: -50,
+ stateLow: "permafrost",
+ reactions: {
+ water: { elem1: "mud" },
+ clay: { elem1: "silty_clay" }
+ },
+}
+elements.marble = {
+ breakInto: "dust",
+ color: "#e5e5e5",
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ tempHigh: 1339,
+ stateHigh: "magma",
+}
+elements.silty_clay = {
+ hidden: true,
+ color: "#a67d5a",
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1700,
+ stateHigh: ["molten_dirt", "molten_glass",],
+ tempLow: -50,
+ stateLow: "permafrost",
+ reactions: {
+ sand: { elem1: "loam" }
+ },
+}
+elements.loam = {
+ hidden: true,
+ color: "#8c5a3c",
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1700,
+ stateHigh: ["molten_dirt", "porcelain", "molten_glass",],
+ tempLow: -50,
+ stateLow: "permafrost",
+ reactions: {
+ dead_plant: { elem1: "peat" }
+ },
+}
+elements.granite = {
+ color: ["#946553", "#483028", "#a99187"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1260,
+ stateHigh: "magma",
+}
+elements.diorite = {
+ color: ["#e4e5e5", "#bbbbbc", "#888888"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1300,
+ stateHigh: "magma",
+}
+elements.andesite = {
+ color: ["#666767", "#a4a796", "#87868a"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1250,
+ stateHigh: "magma",
+}
+elements.rhyolite = {
+ color: ["#917971", "#6b4b3e", "#bdaaa4"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 722,
+ stateHigh: "magma",
+}
+elements.gabbro = {
+ color: ["#353434", "#aeada1", "#95866d"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1175,
+ stateHigh: "magma",
+}
+elements.obsidian = {
+ breakInto: "obsidian_shard",
+ color: ["#010101", "#3b2752", "#261d3c"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1100,
+ stateHigh: "magma",
+}
+elements.obsidian_shard = {
+ hidden: true,
+ color: ["#020202", "#4e3d61", "#2d263d"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1100,
+ stateHigh: "magma",
+}
+elements.chalk = {
+ breakInto: "dust",
+ color: "#FFFFFF",
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1000,
+ stateHigh: "dust",
+}
+elements.slate = {
+ color: ["#424140", "#8b8a8d", "#434143"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 2000,
+ stateHigh: "magma",
+}
+elements.quartz = {
+ color: ["#e4dfd7", "#f7f4f3", "#b7a58e"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 1678,
+ stateHigh: "magma",
+}
+elements.sandstone = {
+ breakInto: "sand",
+ color: ["#D2B48C", "#e6ddae", "#d1c192", "#dad1a4"],
+ behavior: [
+ "XX|XX|XX",
+ "SP|XX|SP",
+ "XX|M1|XX",
+ ],
+ category: "land",
+ state: "solid",
+ tempHigh: 1000,
+ stateHigh: "sand",
+}
+elements.lignite = {
+ color: "#3d3f43",
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 214,
+ stateHigh: "charcoal",
+}
+elements.conglomerate = {
+ color: ["#9b7a5e", "#b09760", "#bdb397", "#a98a75", "#b89961", "#bab2a1"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 118,
+ stateHigh: "charcoal",
+}
+elements.dacite = {
+ color: ["#817a70", "#646c63", "#d6d2d4"],
+ behavior: behaviors.POWDER,
+ category: "land",
+ state: "solid",
+ tempHigh: 900,
+ stateHigh: "magma",
+}
+elements.peat = {
+ hidden: true,
+ color: ["#5c4033", "#6e4f3a", "#4e3728"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "land",
+ tempHigh: 100,
+ stateHigh: "lignite",
+ state: "solid",
+ density: 500,
+};
diff --git a/mods/thiquovite.js b/mods/thiquovite.js
new file mode 100644
index 00000000..3a5206c9
--- /dev/null
+++ b/mods/thiquovite.js
@@ -0,0 +1,1745 @@
+elements.thiquovite = {
+ color: "#e3f9ff",
+ behavior: behaviors.POWDER,
+ category: "special",
+ state: "solid",
+ density: 100,
+ desc: "Sounds familliar.",
+ temp: -5,
+ reactions: {
+ "screen": { elem2:"ring" },
+ "ring": { elem2:"pen" },
+ "rr": { elem2:"pen" },
+ "rl": { elem2:"pen" },
+ "ru": { elem2:"pen" },
+ "rd": { elem2:"pen" },
+ "diamond_block": { elem2:"pen" },
+ "pen": { elem2:"king" },
+ }
+};
+
+elements.screen = {
+ color: ["#505e4c", "#4b6943"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|CC:#505e4c|XX",
+ "XX|XX|XX",
+],
+ behaviorOn: [
+ "XX|CR:light|XX",
+ "SW:screen|CC:#8bcc78|SW:screen",
+ "XX|CR:light|XX",
+],
+ category: "machines",
+ state: "solid",
+ conduct: 1,
+ breakInto: ["glass_shard", "electric"],
+ reactions: {
+ "bread": { elem1:"food_screen" },
+ "cheese": { elem1:"food_screen" },
+ }
+};
+
+elements.food_screen = {
+ name: "Screen",
+ desc: "Now on Food Channel.",
+ color: ["#505e4c", "#4b6943"],
+ behavior: [
+ "CH:screen>food_screen|CH:screen>food_screen|CH:screen>food_screen",
+ "CH:screen>food_screen|CC:#505e4c|CH:screen>food_screen",
+ "CH:screen>food_screen|CH:screen>food_screen|CH:screen>food_screen",
+],
+ behaviorOn: [
+ "XX|CR:light AND CR:toast,melted_cheese|XX",
+ "CR:toast,melted_cheese|CC:d91f16|CR:toast,melted_cheese",
+ "CR:toast,melted_cheese|CR:light|CR:toast,melted_cheese",
+],
+ category: "machines",
+ hidden: true,
+ state: "solid",
+ conduct: 1,
+ breakInto: ["glass_shard", "electric"],
+};
+
+elements.ring = {
+ color: "#9ab3b1",
+ maxSize: 1,
+ behavior: [
+ "XX|CR:ru AND CH:ring>nullium|XX",
+ "CR:rl AND CH:ring>nullium|DL|CR:rr AND CH:ring>nullium",
+ "XX|CR:rd AND CH:ring>nullium|XX",
+],
+ category: "special",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["silver", "diamond"],
+};
+
+elements.nullium = {
+ color: "#000000",
+ behavior: [
+ "XX|XX|XX",
+ "XX|DL|XX",
+ "XX|XX|XX",
+],
+ category: "special",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ hidden: true,
+};
+
+
+elements.rr = {
+ hidden: true,
+ name: "Ring",
+ color: "#9ab3b1",
+ behavior: [
+ "XX|CR:diamond_block|CR:diamond_block",
+ "XX|CH:silver|CR:diamond_block",
+ "XX|CR:diamond_block|CR:diamond_block",
+],
+ category: "special2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["silver", "diamond"],
+};
+
+elements.rl = {
+ hidden: true,
+ name: "Ring",
+ color: "#9ab3b1",
+ behavior: [
+ "CR:diamond_block|CR:diamond_block|XX",
+ "CR:diamond_block|CH:silver|XX",
+ "CR:diamond_block|CR:diamond_block|XX",
+],
+ category: "special2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["silver", "diamond"],
+};
+
+elements.ru = {
+ hidden: true,
+ name: "Ring",
+ color: "#9ab3b1",
+ behavior: [
+ "CR:diamond_block|CR:diamond_block|CR:diamond_block",
+ "CR:diamond_block|CH:silver|CR:diamond_block",
+ "XX|XX|XX",
+],
+ category: "special2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["silver", "diamond"],
+};
+
+elements.rd = {
+ hidden: true,
+ name: "Ring",
+ color: "#9ab3b1",
+ behavior: [
+ "XX|XX|XX",
+ "CR:diamond_block|CH:silver|CR:diamond_block",
+ "CR:diamond_block|CR:diamond_block|CR:diamond_block",
+],
+ category: "special2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["silver", "diamond"],
+};
+
+elements.corner = {
+ hidden: true,
+ name: "Ring",
+ color: "#9ab3b1",
+ behavior: [
+ "CR:ruins|CR:diamond_block|CR:ruins",
+ "CR:ruins|XX|CR:ruins",
+ "CR:ruins|CR:ruins|CR:ruins",
+],
+ category: "special2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["dust"],
+};
+
+elements.diamond_block = {
+ color: ["#28d8de", "#03f4fc"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ density: 100,
+ breakInto: ["diamond"],
+ tempHigh: 540,
+ stateHigh: "diamond",
+};
+
+elements.pen = {
+ color: "#454545",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:pen_length|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["foam", "plastic"],
+};
+
+elements.red_pen = {
+ color: "#801f1f",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:red_pen_length|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["red_ink", "plastic"],
+};
+
+elements.blue_pen = {
+ color: "#19235e",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:blue_pen_length|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["blue_ink", "plastic"],
+};
+
+elements.pen_length = {
+ name: "Pen",
+ hidden: true,
+ color: "#454545",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:pen_length,pen_tip|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["foam", "plastic"],
+};
+
+elements.red_pen_length = {
+ name: "RedPen",
+ hidden: true,
+ color: "#801f1f",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:red_pen_length,red_pen_tip|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["red_ink", "plastic"],
+};
+
+elements.blue_pen_length = {
+ name: "BluePen",
+ hidden: true,
+ color: "#19235e",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:blue_pen_length,blue_pen_tip|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["blue_ink", "plastic"],
+};
+
+elements.pen_tip = {
+ color: "#b3b4bd",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:ink%2|XX",
+],
+ category: "machines2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["foam", "metal_scrap"],
+};
+
+elements.red_pen_tip = {
+ color: "#eb4444",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:red_ink%1|XX",
+],
+ category: "machines2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["red_ink", "metal_scrap"],
+};
+
+elements.blue_pen_tip = {
+ color: "#737ee6",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:blue_ink%1|XX",
+],
+ category: "machines2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["blue_ink", "metal_scrap"],
+};
+
+elements.blue_ink = {
+ color: "#1421db",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ stain: 0.3,
+ breakInto: ["foam", "copper_sulfate"],
+ burn: 115,
+ burnInto: "dioxin",
+ tempHigh: 350,
+ stateHigh: "dioxin",
+ reactions: {
+ "alcohol": { elem2:"acid" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.red_ink = {
+ color: "#db1414",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ stain: 0.3,
+ breakInto: ["foam", "brick_rubble"],
+ burn: 115,
+ burnInto: "dioxin",
+ tempHigh: 350,
+ stateHigh: "dioxin",
+ reactions: {
+ "alcohol": { elem2:"acid" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.king = {
+ color: ["#7d2074", "#63207d", "#9e2626"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:king1,king2,king3,king4|XX",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king1 = {
+ color: ["#7d2074"],
+ hidden: true,
+ name: "King",
+ behavior: [
+ "XX|CR:king_head1 AND CH:thiquovite>king_head1|XX",
+ "M1%3 AND CH:king_head1>nullium|XX|M1%3 AND CH:king_head1>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king2 = {
+ color: ["#63207d"],
+ hidden: true,
+ name: "King",
+ behavior: [
+ "XX|CR:king_head2 AND CH:thiquovite>king_head2|XX",
+ "M1%3 AND CH:king_head2>nullium|XX|M1%3 AND CH:king_head2>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king3 = {
+ color: ["#9e2626"],
+ hidden: true,
+ name: "King",
+ behavior: [
+ "XX|CR:king_head3 AND CH:thiquovite>king_head3|XX",
+ "M1%3 AND CH:king_head3>nullium|XX|M1%3 AND CH:king_head3>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king4 = {
+ color: ["#7d2074"],
+ hidden: true,
+ name: "King",
+ behavior: [
+ "XX|CR:king_head4 AND CH:thiquovite>king_head4|XX",
+ "M1%3 AND CH:king_head4>nullium|XX|M1%3 AND CH:king_head4>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king_head1 = {
+ color: ["#998148"],
+ hidden: true,
+ name: "KingHead",
+ behavior: [
+ "XX|CR:crown AND CH:king_head1>nullium|XX",
+ "CH:crown>nullium|XX|CH:crown>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king_head2 = {
+ color: ["#7a6431"],
+ hidden: true,
+ name: "KingHead",
+ behavior: [
+ "XX|CR:crown AND CH:king_head2>nullium|XX",
+ "CH:crown>nullium|XX|CH:crown>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king_head3 = {
+ color: ["#bf993f"],
+ hidden: true,
+ name: "KingHead",
+ behavior: [
+ "XX|CR:crown AND CH:king_head3>nullium|XX",
+ "CH:crown>nullium|XX|CH:crown>nullium",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+elements.king_head4 = {
+ color: ["#d1b269"],
+ name: "KingHead",
+ behavior: [
+ "XX|CR:crown AND CH:king_head4>nullium|XX",
+ "CH:crown>nullium|XX|CH:crown>nullium",
+ "XX|M1|XX",
+],
+ hidden: true,
+ category: "life",
+ state: "solid",
+ density: 100,
+ breakInto: ["meat", "bone_meal"],
+};
+
+
+elements.crown = {
+ color: ["#ffde00", "#d9b516", "#b39824"],
+ name: "Crown",
+ behavior: [
+ "CH:crown>nullium|CH:crown>nullium|CH:crown>nullium",
+ "CH:crown>nullium|XX|CH:crown>nullium",
+ "CH:crown>nullium|M1|XCH:crown>nulliumX",
+],
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 100,
+ breakInto: ["gold_coin"],
+};
+
+elements.tiger = {
+ color: ["#c4711d", "#d16813", "#ff7300"],
+ behavior: [
+ "M1%10|XX|M1%10",
+ "M1%20|XX|M1%20",
+ "M1|CH:water>foam AND M1|M1",
+],
+ foodNeed: 12,
+ egg: "newborn",
+ baby: "baby_tiger",
+ category: "life",
+ burn: 95,
+ burnInto: "cooked_meat",
+ tempHigh: 160,
+ stateHigh: ["cooked_meat", "ash"],
+ tempLow: -30,
+ stateLow: ["frozen_meat"],
+ state: "solid",
+ breakInto: ["meat", "bone_meal"],
+ reactions: {
+ "rat": { elem2: "blood", chance: 0.2, func: behaviors.KILLPIXEL2 },
+ "head": { elem2:"bone", chance: 0.01, func: behaviors.KILLPIXEL2 },
+ "body": { elem2:"bone", chance: 0.01, func: behaviors.FEEDPIXEL },
+ "bird": { elem2:"feather", chance: 0.3, func: behaviors.FEEDPIXEL },
+ "meat": { elem2: null, chance: 0.3, func: behaviors.FEEDPIXEL },
+ "ant": { elem2: null, func: behaviors.KILLPIXEL2 },
+ "spider": { elem2: null, func: behaviors.KILLPIXEL2 },
+ "fish": { elem2: null, func: behaviors.FEEDPIXEL },
+ "plant": { elem2: "dead_plant" },
+ "grass": { elem2: "dead_plant" },
+ "radiation": { elem1: "rotten_meat", chance: 0.1 },
+ "bone": { elem1: "blood", chance: 0.3 },
+ "blood": { elem2: null, chance: 0.3 },
+ "infection": { elem1: "rotten_meat", chance: 0.01 },
+ "rotten_meat": { elem1: "rotten_meat", chance: 0.01 },
+ }
+};
+
+elements.baby_tiger = {
+ color: ["#b88f74", "#e39764"],
+ behavior: [
+ "M1%30|XX|M1%30",
+ "M1%10|CH:tiger%0.2|M1%10",
+ "M1|CH:water>foam AND M1|M1",
+],
+ category: "life",
+ state: "solid",
+ breakInto: ["meat", "bone_meal"],
+ burn: 95,
+ tempLow: -30,
+ stateLow: ["frozen_meat"],
+ burnInto: "cooked_meat",
+ tempHigh: 160,
+ stateHigh: ["cooked_meat", "ash"],
+ reactions: {
+ "rat": { elem1: "tiger", chance: 0.3, elem2:"blood", func: behaviors.KILLPIXEL2 },
+ "ant": { elem2: null, chance: 0.3, func: behaviors.KILLPIXEL2 },
+ "spider": { elem2: null, chance: 0.3, func: behaviors.KILLPIXEL2 },
+ "fish": { elem1: "tiger", chance: 0.3, elem2: null, func: behaviors.KILLPIXEL2 },
+ "grass": { elem2: "dead_plant" },
+ "radiation": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "rotten_meat", chance: 0.01 },
+ "rotten_meat": { elem1: "rotten_meat", chance: 0.01 },
+ }
+};
+
+elements.newborn = {
+ color: ["#f5c4d3", "#dbae7f"],
+ behavior: [
+ "XX|XX|XX",
+ "M1%0.1|CH:baby_tiger%0.2|M1%0.1",
+ "XX|M1|XX",
+],
+ category: "life",
+ state: "solid",
+ breakInto: ["meat", "bone_meal"],
+ burn: 95,
+ tempLow: -30,
+ stateLow: ["frozen_meat"],
+ burnInto: "cooked_meat",
+ tempHigh: 160,
+ stateHigh: ["cooked_meat", "ash"],
+ reactions: {
+ "radiation": { elem1: "rotten_meat", chance: 0.1 },
+ "infection": { elem1: "infection", chance: 0.01 },
+ "rotten_meat": { elem1: "rotten_meat", chance: 0.01 },
+ }
+};
+
+elements.rad_spider = {
+ color: ["#6f21ff", "#ae21ff", "#d621ff"],
+ behavior: [
+ "M1%5 AND CR:rad_web%1|XX|M1%5 AND CR:rad_web%1",
+ "CR:radiation%2 AND M1%10|CO:2|CR:radiation%2 AND M1%10",
+ "M1%5 AND CR:rad_web%1|M1 AND CR:rad_web|M1%5 AND CR:rad_web%1",
+],
+ category: "life",
+ state: "solid",
+ breakInto: ["dead_bug", "hot_bomb"],
+ burn: 1,
+ foodNeed: 10,
+ egg: "rad_spider",
+ burnInto: "radiation",
+ tempHigh: 3000,
+ stateHigh: ["radiation", "ash"],
+ reactions: {
+ "spider": { elem2: "rad_spider", chance: 0.3 },
+ "dna": { elem2: "rad_spider", chance: 0.01 },
+ "cell": { elem2: "rad_spider", chance: 0.01 },
+ "radiation": { elem2: "rad_spider", chance: 0.001 },
+ "rotten_meat": { elem1: "rotten_meat", chance: 0.01 },
+ "ant": { elem2: null, chance: 0.3, func: behaviors.FEEDPIXEL },
+ "fly": { elem2: null, chance: 0.3, func: behaviors.FEEDPIXEL },
+ "chocolate": { elem1: "hyper_spider", elem2: null, chance: 0.3, func: behaviors.FEEDPIXEL },
+ }
+};
+
+elements.hyper_spider = {
+ color: ["#ff0044", "#f200ff", "#00ffc8"],
+ behavior: [
+ "M1%20 AND CR:hyper_web%5|XX|M1%20 AND CR:hyper_web%5",
+ "CR:radiation%2 AND M1%10|CO:2|CR:radiation%2 AND M1%10",
+ "M1%20 AND CR:hyper_web%5|M1 AND CR:hyper_web|M1%10 AND CR:hyper_web%5",
+],
+ category: "life",
+ state: "solid",
+ breakInto: ["dead_bug", "hot_bomb"],
+ burn: 1,
+ foodNeed: 3,
+ egg: "rad_spider",
+ burnInto: "radiation",
+ tempHigh: 6000,
+ stateHigh: ["radiation", "plague"],
+ reactions: {
+ "spider": { elem2: "rad_spider", chance: 0.5 },
+ "rad_spider": { elem2: "hyper_spider", chance: 0.3 },
+ "dna": { elem2: "rad_spider", chance: 0.1 },
+ "cell": { elem2: "rad_spider", chance: 0.1 },
+ "radiation": { elem2: "rad_spider", chance: 0.1 },
+ "rotten_meat": { elem1: "rotten_meat", chance: 0.01 },
+ "ant": { elem2: null, chance: 0.3, func: behaviors.FEEDPIXEL },
+ "fly": { elem2: null, chance: 0.3, func: behaviors.FEEDPIXEL },
+ "chocolate": { elem2: "hyper_spider", chance: 0.3, func: behaviors.FEEDPIXEL },
+ }
+};
+
+if (!elements.radiation.reactions) { // Include this block once
+ elements.radiation.reactions = {} // This creates the property if it doesn't exist
+}
+elements.radiation.reactions.web = { elem2: "rad_web" }
+elements.radiation.reactions.spider = { elem2: "rad_spider" }
+elements.radiation.reactions.snow = { elem2: "thiquovite" }
+
+elements.rad_web = {
+ color: ["#7de387", "#b4d1b7", "#8f9c90"],
+ behavior: [
+ "CR:rad_web%0.01|CR:radiation%0.1|CR:rad_web%0.01",
+ "CR:radiation%0.1|CH:radiation%0.1|CR:radiation%0.1",
+ "CR:rad_web%0.01|CR:rad_web%1|CR:rad_web%0.01",
+],
+ category: "life",
+ hidden: true,
+ state: "solid",
+ breakInto: ["dust", "rad_shard"],
+ burn: 80,
+ burnInto: "radiation",
+ tempHigh: 100,
+ stateHigh: ["radiation", "ash"],
+ reactions: {
+ "spider": { elem2: "rad_spider", chance: 0.1 },
+ "dna": { elem2: "rad_spider", chance: 0.01 },
+ "cell": { elem2: "rad_spider", chance: 0.01 },
+ "radiation": { elem1: "rad_spider", chance: 0.001 },
+ "water": { elem1: "glue" },
+ }
+};
+
+elements.hyper_web = {
+ color: ["#4fe85e", "#4fbfe8", "#b2ccd6"],
+ behavior: [
+ "CR:hyper_web%0.1|CR:radiation%0.1|CR:hyper_web%0.1",
+ "CR:radiation%0.1|CH:ruins%0.1|CR:radiation%0.1",
+ "CR:rad_web%0.01|CR:hyper_web%5|CR:rad_web%0.01",
+],
+ category: "life",
+ hidden: true,
+ state: "solid",
+ breakInto: ["rad_spider", "rad_shard"],
+ burn: 40,
+ burnInto: ["radiation", "plague"],
+ tempHigh: 300,
+ stateHigh: ["radiation", "ash"],
+ reactions: {
+ "spider": { elem2: "rad_spider", chance: 0.1 },
+ "dna": { elem2: "rad_spider", chance: 0.1 },
+ "cell": { elem2: "rad_spider", chance: 0.1 },
+ "radiation": { elem1: "rad_spider", chance: 0.001 },
+ "water": { elem1: "glue" },
+ }
+};
+
+elements.vw = {
+ name: "Vertical Wall",
+ desc: "Makes a wall that goes up and down, like this line: |",
+ hard: 1,
+ color: ["#7D7D7D"],
+ behavior: [
+ "XX|CR:vw|XX",
+ "XX|CH:wall|XX",
+ "XX|CR:vw|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.hw = {
+ name: "Horizontal Wall",
+ desc: "Makes a wall that goes left and right, like this line: -",
+ hard: 1,
+ color: ["#7D7D7D"],
+ behavior: [
+ "XX|XX|XX",
+ "CR:hw|CH:wall|CR:hw",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.bltr = {
+ name: "BL-TR Wall",
+ desc: "Creates a slope from bottom left to top right, like this slash: /",
+ hard: 1,
+ color: ["#7D7D7D"],
+ behavior: [
+ "XX|XX|CR:bltr",
+ "XX|CH:wall|XX",
+ "CR:bltr|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.tlbr = {
+ name: "TL-BR Wall",
+ desc: "Creates a slope from top left to bottom right, like this slash: \\",
+ hard: 1,
+ color: ["#7D7D7D"],
+ behavior: [
+ "CR:tlbr|XX|XX",
+ "XX|CH:wall|XX",
+ "XX|XX|CR:tlbr",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.evw = {
+ name: "E-Vertical Wall",
+ desc: "Makes an electric wall that goes up and down, like this line: |",
+ hard: 1,
+ color: ["#6c8da6"],
+ behavior: [
+ "XX|CR:evw|XX",
+ "XX|CH:ew|XX",
+ "XX|CR:evw|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.ehw = {
+ name: "E-Horizontal Wall",
+ desc: "Makes an electric wall that goes left and right, like this line: -",
+ hard: 1,
+ color: ["#6c8da6"],
+ behavior: [
+ "XX|XX|XX",
+ "CR:ehw|CH:ew|CR:ehw",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.ew = {
+ name: "E-Wall", //cooler e-wall.
+ desc: "Electric wall, blue variant",
+ hard: 1,
+ charge: 2,
+ conduct: 1,
+ color: ["#6c8da6"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|SH|XX",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.ebltr = {
+ name: "E-BL-TR Wall",
+ desc: "Creates an electric slope from bottom left to top right, like this slash: /",
+ hard: 1,
+ color: ["#6c8da6"],
+ behavior: [
+ "XX|XX|CR:ebltr",
+ "XX|CH:ew|XX",
+ "CR:ebltr|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.etlbr = {
+ name: "E-TL-BR Wall",
+ desc: "Creates a electric slope from top left to bottom right, like this slash: \\",
+ hard: 1,
+ color: ["#6c8da6"],
+ behavior: [
+ "CR:etlbr|XX|XX",
+ "XX|CH:ew|XX",
+ "XX|XX|CR:etlbr",
+],
+ category: "machines",
+ state: "solid",
+};
+
+elements.bw = {
+ name: "Breakable Wall",
+ desc: "Breakable wall.",
+ hard: 0.5,
+ color: ["#CB4141"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+],
+ tempHigh: 1540,
+ stateHigh: "molten_brick",
+ category: "solids",
+ state: "solid",
+ breakInto: "brick_rubble",
+};
+
+elements.bvw = {
+ name: "Breakable Vertical Wall",
+ desc: "Makes a breakable wall that goes up and down, like this line: |",
+ hard: 0.5,
+ color: ["#CB4141"],
+ behavior: [
+ "XX|CR:bvw|XX",
+ "XX|CH:bw|XX",
+ "XX|CR:bvw|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.bhw = {
+ name: "Breakable Horizontal Wall",
+ desc: "Makes a breakable wall that goes left and right, like this line: -",
+ hard: 0.5,
+ color: ["#CB4141"],
+ behavior: [
+ "XX|XX|XX",
+ "CR:bhw|CH:bw|CR:bhw",
+ "XX|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.bbltr = {
+ name: "Breakable BL-TR Wall",
+ desc: "Creates a breakable slope from bottom left to top right, like this slash: /",
+ hard: 0.5,
+ color: ["#CB4141"],
+ behavior: [
+ "XX|XX|CR:bbltr",
+ "XX|CH:bw|XX",
+ "CR:bbltr|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.btlbr = {
+ name: "Breakable TL-BR Wall",
+ desc: "Creates a breakable slope from top left to bottom right, like this slash: \\",
+ hard: 0.5,
+ color: ["#CB4141"],
+ behavior: [
+ "CR:btlbr|XX|XX",
+ "XX|CH:bw|XX",
+ "XX|XX|CR:btlbr",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uvw = {
+ name: "Unstoppable Vertical Wall",
+ desc: "Makes a wall that goes up and down, like this line: |",
+ hard: 1,
+ color: ["#66e36a"],
+ behavior: [
+ "XX|CR:uvw|XX",
+ "XX|XX|XX",
+ "XX|CR:uvw|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uhw = {
+ name: "Unstoppable Horizontal Wall",
+ desc: "Makes a wall that goes left and right, like this line: -",
+ hard: 1,
+ color: ["#66e36a"],
+ behavior: [
+ "XX|XX|XX",
+ "CR:uhw|XX|CR:uhw",
+ "XX|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.ubltr = {
+ name: "Unstoppable BL-TR Wall",
+ desc: "Creates a slope from bottom left to top right, like this slash: /",
+ hard: 1,
+ color: ["#66e36a"],
+ behavior: [
+ "XX|XX|CR:ubltr",
+ "XX|XX|XX",
+ "CR:ubltr|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.utlbr = {
+ name: "Unstoppable TL-BR Wall",
+ desc: "Creates a slope from top left to bottom right, like this slash: \\",
+ hard: 1,
+ color: ["#66e36a"],
+ behavior: [
+ "CR:utlbr|XX|XX",
+ "XX|XX|XX",
+ "XX|XX|CR:utlbr",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uevw = {
+ name: "Unstoppable E-Vertical Wall",
+ desc: "Makes an electric wall that goes up and down, like this line: |",
+ hard: 1,
+ color: ["#6be8be"],
+ conduct: 1,
+ behavior: [
+ "XX|CR:uevw|XX",
+ "XX|SH|XX",
+ "XX|CR:uevw|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uehw = {
+ name: "Unstoppable E-Horizontal Wall",
+ desc: "Makes an electric wall that goes left and right, like this line: -",
+ hard: 1,
+ color: ["#6be8be"],
+ conduct: 1,
+ behavior: [
+ "XX|XX|XX",
+ "CR:uehw|SH|CR:uehw",
+ "XX|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uew = {
+ name: "E-Wall",
+ desc: "Electric wall, teal edition",
+ hard: 1,
+ charge: 2,
+ conduct: 1,
+ hidden: true,
+ color: ["#6be8be"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|SH|XX",
+ "XX|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uebltr = {
+ name: "Unstoppable E-BL-TR Wall",
+ desc: "Creates an electric slope from bottom left to top right, like this slash: /",
+ hard: 1,
+ color: ["#6be8be"],
+ conduct: 1,
+ behavior: [
+ "XX|XX|CR:uebltr",
+ "XX|SH|XX",
+ "CR:uebltr|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.uetlbr = {
+ name: "Unstoppable E-TL-BR Wall",
+ desc: "Creates a electric slope from top left to bottom right, like this slash: \\",
+ hard: 1,
+ color: ["#6be8be"],
+ conduct: 1,
+ behavior: [
+ "CR:uetlbr|XX|XX",
+ "XX|SH|XX",
+ "XX|XX|CR:uetlbr",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.whmisium_a = {
+ color: ["#869aa3"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1 AND EX:10>methane,fire|XX",
+],
+ desc: "Class A - Compressed Gas - Contents under high pressure. - Cylinder may explode or burst when heated, dropped or damaged.",
+ category: "special",
+ state: "solid",
+ tempHigh: 50,
+ stateHigh: "explosion",
+};
+
+elements.whmisium_b = {
+ color: ["#694b2a", "#69562a", "#69412a"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:hot_bomb%0.01|XX",
+ "M1|M1|M1",
+],
+ desc: "Class B - Flammable and Combustible Material - May catch fire when exposed to heat, spark or flame. May burst into flames.",
+ category: "special",
+ state: "liquid",
+ tempHigh: 40,
+ stateHigh: "explosion",
+ reactions: {
+ "fire": { elem1: "explosion", chance: 0.5 },
+ "electric": { elem1: "explosion", chance: 0.5 },
+ }
+};
+
+elements.whmisium_c = {
+ color: ["#ffd20a", "#ff8d0a"],
+ behavior: [
+ "XX|CR:nitrogen%1|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ desc: "Class C - Oxidizing Material - May cause fire or explosion when in contact with wood, fuels or other combustible material.",
+ category: "special",
+ tempHigh: 40,
+ stateHigh: "explosion",
+ state: "solid",
+ reactions: {
+ "whimisium_b": { elem1: ["explosion", "fire"], chance: 0.5 },
+ "wood": { elem2: "explosion", chance: 0.5 },
+ "charcoal": { elem2: "explosion", chance: 0.5 },
+ "ash": { elem2: "explosion", chance: 0.5 },
+ "oil": { elem1: "explosion", chance: 0.5 },
+ "oxygen": { elem1: "explosion", chance: 0.5 },
+ }
+};
+
+elements.whmisium_d1 = {
+ color: ["#2b7d10", "#43802f"],
+ behavior: [
+ "XX|CR:poison_gas%1|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ desc: "Class D, Division 1 - Poisonous and Infectious Material: Immediate and Serious Toxic Effects - A single exposure may be fatal or cause serious or permanent damage to health.",
+ category: "special",
+ state: "solid",
+ reactions: {
+ "head": { elem2: ["explosion", "poison_gas"], chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "body": { elem2: ["explosion", "poison_gas"], chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "fire": { elem1: "poison_gas", chance: 0.5 },
+ "oxygen": { elem2: "explosion", chance: 0.5 },
+ }
+};
+
+elements.whmisium_d2 = {
+ color: ["#a7ff8a", "#62ff2e"],
+ behavior: [
+ "XX|CR:poison_gas%5|XX",
+ "CR:radiation%0.1|XX|CR:radiation%0.1",
+ "XX|M1|XX",
+],
+ desc: "Class D, Division 2 - Poisonous and Infectious Material: Other Toxic Effects - May cause irritation. Repeated exposure may cause cancer, birth defects or other permanent damage to health.",
+ category: "special",
+ state: "solid",
+ reactions: {
+ "head": { elem1: ["explosion", "poison_gas"], elem2: "cancer", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "body": { elem1: ["explosion", "poison_gas"], elem2: "cancer", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "fire": { elem1: "poison_gas", chance: 0.5 },
+ "oxygen": { elem1: "cancer", elem2: "explosion", chance: 0.5 },
+ }
+};
+
+elements.whmisium_d3 = {
+ color: ["#6e1d44", "#6e441d", "#943931", "#ff3d2b"],
+ behavior: [
+ "XX|CR:poison_gas%10|XX",
+ "CR:radiation%1 AND M1%5|XX|CR:radiation%1 AND M1%5",
+ "M1|M1|M1",
+],
+ desc: "Class D, Division 3 - Poisonous and Infectious Material: Bio-hazardous Infectious Materials - May cause disease or serious illness. Drastic exposures may result in death.",
+ category: "special",
+ state: "liquid",
+};
+
+elements.whmisium_e = {
+ color: ["#ff738c", "#ff739a", "#ff73b7"],
+ behavior: [
+ "XX|CR:rad_steam%2|XX",
+ "M1 AND CR:rad_steam%0.2|XX|M1 AND CR:rad_steam%0.2",
+ "M1|M1 AND CH:rust%5|M1",
+],
+ desc: "Class E - Corrosive Material - Causes severe eye and skin Irritation upon contact. Can cause severe tissue damage with prolonged exposure. May be harmful to the respiratory system if inhaled.",
+ category: "special",
+ state: "liquid",
+ reactions: {
+ "head": { elem1: ["explosion", "poison_gas"], elem2: "cancer", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "body": { elem1: ["explosion", "poison_gas"], elem2: "cancer", chance: 0.5, func: behaviors.KILLPIXEL2 },
+ "rust": { elem2: "nitrogen", chance: 0.5 },
+ }
+};
+
+elements.whmisium_f = {
+ color: ["#7D7D7D", "#7D7D7D", "#7D7D7D", "#f4005e", "#00f4b3", "#7600f4"],
+ behavior: [
+ "XX|HT:1|XX",
+ "XX|EX:50>explosion,fire,methane,radiation%0.01|XX",
+ "HT:1|M1|HT:1",
+],
+ desc: "Class F - Dangerously Reactive Material - May react violently causing explosion, fire or release of toxic gases when exposed to light, heat, vibration or extreme heat, vibration temperatures.",
+ category: "special",
+ state: "solid",
+ temp: 20,
+ tempHigh: 23,
+ stateHigh: ["explosion", "fire", "methane", "radiation"],
+ reactions: {
+ "fire": { elem1: ["explosion", "fire", "methane", "radiation"] },
+ "electric": { elem1: ["explosion", "fire", "methane", "radiation"] },
+ "light": { elem1: ["explosion", "fire", "methane", "radiation"] },
+ "head": { elem1: ["explosion", "fire", "methane", "radiation"], func: behaviors.KILLPIXEL2 },
+ "body": { elem1: ["explosion", "fire", "methane", "radiation"], func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.thermium = {
+ color: ["#f4005e"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|HT:1|XX",
+ "XX|M1|XX",
+],
+ desc: "Hot.",
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ tempLow: -20,
+ stateLow: "cryonine",
+};
+
+elements.cryonine = {
+ color: ["#5e00ff"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|CO:2|XX",
+ "XX|M1|XX",
+],
+ desc: "Cold.",
+ category: "machines",
+ state: "solid",
+ temp: -20,
+ tempHigh: 20,
+ stateHigh: "thermium",
+};
+
+elements.bad_plane = {
+ name: "Plane",
+ desc: "Stationary. Cheap.",
+ color: ["#bdbdbd", "#8d9dba"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|CH:bad_flying_plane|XX",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+};
+
+elements.good_plane = {
+ name: "Plane",
+ desc: "Stationary. Expensive.",
+ color: ["#a1b3bf", "#8ec7ed"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|CH:good_flying_plane|XX",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+};
+
+elements.takeoff_plane = {
+ desc: "Taking off. Expensive.",
+ name: "Plane",
+ color: ["#a1b3bf", "#8ec7ed"],
+ hidden: true,
+ behavior: [
+ "XX|XX|M1 AND SH",
+ "XX|CH:good_flying_plane%10|M1",
+ "XX|XX|XX",
+],
+ category: "states",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+};
+
+elements.good_flying_plane = {
+ desc: "In flight. Expensive.",
+ name: "Plane",
+ color: ["#a1b3bf", "#8ec7ed"],
+ hidden: true,
+ behavior: [
+ "XX|CH:crashing_plane|M1 AND SH",
+ "XX|SH AND CH:crashing_plane%0.1|M1 AND BO",
+ "XX|XX|XX",
+],
+ category: "states",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+};
+
+elements.bad_flying_plane = {
+ name: "Plane",
+ desc: "In flight. Cheap.",
+ color: ["#bdbdbd", "#8d9dba"],
+ hidden: true,
+ behavior: [
+ "XX|XX|M1 AND SH",
+ "XX|SH|M1 AND LB:carbon_dioxide%1 AND EX:15>explosion AND SH",
+ "XX|XX|XX",
+],
+ category: "states",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+ reactions: {
+ "bless": { elem1: "good_plane" },
+ "aluminum": { elem1: "good_plane" },
+ "metal_scrap": { elem1: "good_plane" },
+ }
+};
+
+elements.crashing_plane = {
+ name: "Plane",
+ color: ["#bf931b"],
+ hidden: true,
+ burning: true,
+ burnTime: 300,
+ behavior: [
+ "CR:smoke%20|LB:turbulence%1|XX",
+ "EX:3>molten_metal_scrap|HT:2|M1 AND CH:good_flying_plane>crashing_plane%3",
+ "EX:3>molten_metal_scrap|M1 AND EX:10>explosion|EX:3>molten_metal_scrap",
+],
+ category: "states",
+ state: "solid",
+ temp: 50,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+ burnInto: "explosion",
+ reactions: {
+ "water": { elem1: "bad_plane" },
+ "dirt": { elem1: "metal_scrap" },
+ }
+};
+
+elements.bad_wind = {
+ name: "Turbulence",
+ color: ["#bdbdbd", "#8d9dba"],
+ behavior: [
+ "M1 AND SH|M1 AND SH|M1 AND SH",
+ "M1 AND SH|DL%0.5|M1 AND SH",
+ "M1 AND SH|M1 AND SH|M1 AND SH",
+],
+ alpha: 0.5,
+ category: "energy",
+ state: "gas",
+ temp: 20,
+ glow: true,
+ tempLow: -20,
+ stateLow: "tornado",
+ reactions: {
+ "good_flying_plane": { elem2: ["bad_flying_plane", "crashing_plane"] },
+ "fire_flying_plane": { elem2: ["bad_flying_plane", "crashing_plane"] },
+ "sand": { elem1: "sandstorm" },
+ }
+};
+
+elements.fire_plane = {
+ name: "FirePlane",
+ desc: "Stationary. Produces water.",
+ color: ["#a83632", "#d41e17"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|CH:fire_flying_plane|XX",
+ "XX|XX|XX",
+],
+ category: "machines",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+};
+
+elements.fire_flying_plane = {
+ desc: "In flight. Produces water.",
+ name: "FirePlane",
+ color: ["#a83632", "#d41e17"],
+ hidden: true,
+ behavior: [
+ "XX|EX:10>explosion|M1 AND LB:water",
+ "XX|XX|M1 AND BO AND LB:water",
+ "XX|XX|XX",
+],
+ category: "states",
+ state: "solid",
+ temp: 20,
+ conduct: 3,
+ tempHigh: 500,
+ stateHigh: "molten_metal_scrap",
+};
+
+if (!elements.feather.reactions) { // Include this block once
+ elements.feather.reactions = {} // This creates the property if it doesn't exist
+}
+elements.feather.reactions.iron = { elem1: null, elem2: "bad_plane" }
+elements.feather.reactions.aluminum = { elem1: null, elem2: "good_plane" }
+elements.feather.reactions.steel = { elem1: null, elem2: "fire_plane" }
+
+elements.green_pen = {
+ color: "#158f56",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:green_pen_length|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["green_ink", "plastic"],
+};
+
+elements.green_pen_length = {
+ name: "GreenPen",
+ hidden: true,
+ color: "#158f56",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:green_pen_length,green_pen_tip|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["green_ink", "plastic"],
+};
+
+elements.green_pen_tip = {
+ color: "#0acf73",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:green_ink%2|XX",
+],
+ category: "machines2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["green_ink", "metal_scrap"],
+};
+
+elements.green_ink = {
+ color: "#05ff8a",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ stain: 0.3,
+ breakInto: ["foam", "oxidized_copper"],
+ burn: 115,
+ burnInto: "dioxin",
+ tempHigh: 350,
+ stateHigh: "dioxin",
+ reactions: {
+ "alcohol": { elem2:"acid" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.orange_pen = {
+ color: "#db730b",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:orange_pen_length|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["orange_ink", "plastic"],
+};
+
+elements.orange_pen_length = {
+ name: "OrangePen",
+ hidden: true,
+ color: "#db730b",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:orange_pen_length,orange_pen_tip|XX",
+],
+ category: "machines",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["orange_ink", "plastic"],
+};
+
+elements.orange_pen_tip = {
+ color: "#ffa347",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:orange_ink%2|XX",
+],
+ category: "machines2",
+ state: "solid",
+ density: 100,
+ conduct: 1,
+ breakInto: ["orange_ink", "metal_scrap"],
+};
+
+elements.orange_ink = {
+ color: "#faa850",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ stain: 0.3,
+ breakInto: ["foam", "rust"],
+ burn: 115,
+ burnInto: "dioxin",
+ tempHigh: 350,
+ stateHigh: "dioxin",
+ reactions: {
+ "alcohol": { elem2:"acid" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.hacked_screen = {
+ name: "Screen",
+ desc: "Error 404.",
+ color: ["#505e4c", "#4b6943"],
+ behavior: [
+ "CH:screen>hacked_screen|CH:screen>hacked_screen|CH:screen>hacked_screen",
+ "CH:screen>hacked_screen|CC:#ff00dc|CH:screen>hacked_screen",
+ "CH:screen>hacked_screen|CH:screen>hacked_screen|CH:screen>hacked_screen",
+],
+ behaviorOn: [
+ "XX|CR:light AND CR:malware,snake|XX",
+ "CR:malware,snake|CC:d91f16|CR:malware,snake",
+ "CR:laser|CR:light|CR:laser",
+],
+ category: "machines",
+ hidden: true,
+ state: "solid",
+ conduct: 1,
+ breakInto: ["glass_shard", "electric"],
+};
+
+elements.thiquovite_ray = {
+ name: "ThiquoviteRay",
+ desc: "I'm in the thick of it, everybody knows They know me where it snows, I skied in and they froze I don't know no nothin' 'bout no ice, I'm just cold Forty somethin' milli' subs or so, I've been told",
+ color: ["#3df5d6", "#6edbc9"],
+ behavior: [
+ "CO:5|CR:thiquovite%10|CO:5",
+ "CO:5|CO:5|CO:5",
+ "CO:5|M1 AND LB:cold_fire AND CO:5 AND EX:3>thiquovite,ice|CO:5",
+],
+ category: "energy",
+ state: "gas",
+};
+
+elements.marble = {
+ color: ["#50fa6c", "#50fae3", "#508efa"],
+ behavior: [
+ "M2|XX|M2",
+ "M1%1|XX|M1%50",
+ "M1|M1|M1",
+],
+ category: "special",
+ state: "solid",
+ density: 100,
+ conduct: 100,
+ alpha: 0.7,
+ breakInto: ["glass_shard", "confetti"],
+ reactions: {
+ "glass": { elem2:"glass_shard" },
+ "body": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.avw = {
+ name: "Colourful Vertical Wall",
+ desc: "Makes a wall that goes up and down, like this line: |",
+ hard: 0.5,
+ color: ["#E3333E", "#EACB63", "#0BBD60", "#6D40AE", "#0974DC"],
+ tempHigh: 500,
+ stateHigh: "party_popper",
+ breakInto: "confetti",
+ behavior: [
+ "XX|CR:avw|XX",
+ "XX|CH:aw|XX",
+ "XX|CR:avw|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.ahw = {
+ name: "Colourful Horizontal Wall",
+ desc: "Makes a wall that goes left and right, like this line: -",
+ hard: 0.5,
+ color: ["#E3333E", "#EACB63", "#0BBD60", "#6D40AE", "#0974DC"],
+ tempHigh: 500,
+ stateHigh: "party_popper",
+ breakInto: "confetti",
+ behavior: [
+ "XX|XX|XX",
+ "CR:ahw|CH:aw|CR:ahw",
+ "XX|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.abltr = {
+ name: "Colourful BL-TR Wall",
+ desc: "Creates a slope from bottom left to top right, like this slash: /",
+ hard: 0.5,
+ color: ["#E3333E", "#EACB63", "#0BBD60", "#6D40AE", "#0974DC"],
+ tempHigh: 500,
+ stateHigh: "party_popper",
+ breakInto: "confetti",
+ behavior: [
+ "XX|XX|CR:abltr",
+ "XX|CH:aw|XX",
+ "CR:abltr|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.atlbr = {
+ name: "Colourful TL-BR Wall",
+ desc: "Creates a slope from top left to bottom right, like this slash: \\",
+ hard: 0.5,
+ color: ["#E3333E", "#EACB63", "#0BBD60", "#6D40AE", "#0974DC"],
+ tempHigh: 500,
+ stateHigh: "party_popper",
+ breakInto: "confetti",
+ behavior: [
+ "CR:atlbr|XX|XX",
+ "XX|CH:aw|XX",
+ "XX|XX|CR:atlbr",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.aw = {
+ name: "Colourful Wall",
+ desc: "oooo colourful",
+ hard: 0.5,
+ color: ["#E3333E", "#EACB63", "#0BBD60", "#6D40AE", "#0974DC"],
+ tempHigh: 500,
+ stateHigh: "party_popper",
+ breakInto: "confetti",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+],
+ category: "machines2",
+ state: "solid",
+};
+
+elements.cerulite = {
+ color: "#438CFF",
+ behavior: [
+ "XX|CR:cerulic_oxide%5 AND CR:flash%25|XX",
+ "XX|XX|XX",
+ "M1%5|M1|M1%5",
+],
+ category: "land",
+ state: "solid",
+ density: 250,
+ conduct: 30,
+ tempHigh: 239,
+ stateHigh: "cerulic_liquid",
+ reactions: {
+ "rock": { elem1:"cerulium" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.cerulic_liquid = {
+ color: ["#BE7B00", "#F6A300", "#FFAE6F"],
+ behavior: [
+ "XX|CR:cerulic_oxide%2 AND CR:fire%2 AND CR:pop|XX",
+ "XX|XX|XX",
+ "M1|M1|M1",
+],
+ category: "liquids",
+ temp: 300,
+ state: "solid",
+ density: 125,
+ conduct: 30,
+ tempLow: 40,
+ stateLow: "cerulium",
+ reactions: {
+ "magma": { elem1:"cerulium" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.cerulic_oxide = {
+ color: ["#08009E", "#0E00EF"],
+ behavior: [
+ "M1|M1|M1",
+ "M1|DL%10|M1",
+ "M1|M1|M1",
+],
+ category: "gases",
+ temp: 300,
+ state: "gas",
+ density: 250,
+ conduct: 30,
+ tempHigh: 300,
+ stateHigh: "pop",
+ reactions: {
+ "ash": { elem1:"cerulium" },
+ "oxygen": { elem1:"cerulite" },
+ "head": { elem2:"bone", func: behaviors.KILLPIXEL2 },
+ }
+};
+
+elements.cerulium = {
+ color: ["#4F5AFF", "#658FFF", "#5DC8FF"],
+ behavior: [
+ "XX|CR:cerulic_oxide%0.1|XX",
+ "XX|XX|XX",
+ "XX|M1|XX",
+],
+ category: "solids",
+ state: "solid",
+ density: 250,
+ conduct: 30,
+ tempHigh: 1500,
+ stateHigh: "cerulic_liquid",
+};
+
+elements.random_element = {
+ color: ["#ff9f9c", "#c91c1c", "#1c53c9", "#0e2963"],
+ category: "tools",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:random|XX",
+ "XX|XX|XX",
+],
+};
diff --git a/mods/uncook.js b/mods/uncook.js
new file mode 100644
index 00000000..eb758282
--- /dev/null
+++ b/mods/uncook.js
@@ -0,0 +1,51 @@
+elements.UnCook = {
+ color: ["#ffffff", "#aeefff", "#00ccff"],
+ tool: function(pixel) {
+ if (pixel.element == "cooked_meat") {
+ changePixel(pixel, "meat")
+ pixel.temp = 20
+ }
+ if (pixel.element == "hard_yolk") {
+ changePixel(pixel, "yolk")
+ pixel.temp = 20
+ }
+ if (pixel.element == "toast") {
+ changePixel(pixel, "bread")
+ pixel.temp = 20
+ }
+ if (pixel.element == "bread") {
+ if (Math.random() <= 0.7) {
+ changePixel(pixel, "dough")
+ }
+ else{
+ changePixel(pixel, "yeast")
+ }
+ pixel.temp = 20
+ }
+ if (pixel.element == "baked_batter") {
+ changePixel(pixel, "batter")
+ pixel.temp = 20
+ }
+ if (pixel.element == "baked_potato") {
+ changePixel(pixel, "potato")
+ pixel.temp = 20
+ }
+ if (pixel.element == "caramel") {
+ changePixel(pixel, "sugar")
+ pixel.temp = 20
+ }
+ if (pixel.element == "nut_butter") {
+ changePixel(pixel, "nut_meat")
+ pixel.temp = 20
+ }
+ if (pixel.element == "nut_oil") {
+ changePixel(pixel, "nut_meat")
+ pixel.temp = 20
+ }
+ if (pixel.element == "popcorn") {
+ changePixel(pixel, "corn")
+ pixel.temp = 20
+ }
+ },
+ category: "tools",
+};
\ No newline at end of file