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.jsRe-adds 4 explosives removed in v1.9.3R74n classic_textures.jsUse textures from early versions of the gameR74n color_everything.jsAllows every element to have a custom colorR74n +death_count.jsMessages counting when Humans dieR74n devtests.jsExperimental features from the Sandboxels developerR74n edible_everything.jsAllows every element to be mixed into Batter and DoughR74n fools.jsRe-adds FOOLS ModeR74n @@ -189,9 +190,11 @@ boiling_things.jsVarious elements can be vaporizedAlice bouncing_balls.jsNew types of balls that bounce accurately and rollNekonico chalcopyrite.jsThe chalcopyrite oreSophie +chalk.jsChalkCharsonBurensen charsonsmoduno.jsArsenic, Beryllium, Silicon, compounds, and some fake elementsCharsonBurensen chem.jsSeveral chemistry and physics-related elementslllllllllwith10ls clf3.jsChlorine TrifluorideAlice +cmur.jsCharsonsModUno (???)CharsonBurensen debrisable.jsExpands the number of breakable elements, changes erosion, and adds way to craft certain elements from breaking other elementsNekonico fire_extinguisher.jsFire extinguisher blocks and realistic firefighting foam to put out nearly anythingDr_Lego fire_mod.jsVarious properties to change fire behavior and radioactive fireAlice @@ -248,6 +251,7 @@ spouts.jsSpouts for all liquidskaeud state_voids.jsSeveral elements that delete specific states of matterAlice switches.jsElectrical switches that can be toggledAlice +thiquovite.jsThiquovite and wall buildersCharsonBurensen ticking_temp_stuff.jsHeater and Cooler variantsAlice video.jsVideo playerggod waterspout.jsRe-adds the old Water Spoutmollthecoder @@ -296,6 +300,7 @@ cat.jsCats and cat foodSquareScreamYT cells.jsSeveral experimental edits of the Cell elementAlice children.jsPesky little gremlinsTaterbob +coldblooded.jsLizards, axolotls, snakes, and moreCube14yt colonies.jsRockets that contain settlers to terraform a planetNekonico crimson.jsElements relating to the Crimson from TerrariaAlice dogs.jsSimple dog and dog foodhedera-ivy @@ -363,6 +368,7 @@ sports_beta.jsSeveral sports itemsBluBun5193 star_wars.jsVarious items from Star Wars by DisneySeaPickle754 sus.jsAmong Us crewmateNv7 +thiquovite.jsThiquovite and wall buildersCharsonBurensen triggerable_random_powders.jsPowders with different abilities, such as heating and coolingAlice troll.jsVarious dumb elements that iterate randomly on the entire screenAlice WhisperingTheory.jsPowder and gas variant of heater and coolerkaeud 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