From 8d1b9dc567e336a5b51afe491ae05fc0232a3aaf Mon Sep 17 00:00:00 2001 From: SquareScreamYT Date: Thu, 27 Feb 2025 18:24:35 +0800 Subject: [PATCH 1/5] A Chef's Dream 2 --- mod-list.html | 1 + mods/aChefsDream.js | 21 ++- mods/aChefsDream2.js | 327 +++++++++++++++++++++++++++++++++++++++++++ mods/food_mods.js | 2 +- 4 files changed, 349 insertions(+), 2 deletions(-) create mode 100644 mods/aChefsDream2.js diff --git a/mod-list.html b/mod-list.html index a6235e3f..6f7ff304 100644 --- a/mod-list.html +++ b/mod-list.html @@ -267,6 +267,7 @@ Food & Cooking aChefsDream_beta.jsBeta testing for aChefsDream. The code can be found on GitHubSquareScreamYT +aChefsDream2.jsThe sequel to aChefsDream.js, with brand new elements and toolsSquareScreamYT aChefsDream.jsMore foods, animals, tools, and other cooking items. See the YouTube Playlist for updatesSquareScreamYT bananas.jsAdds bananas and banana plantsAlice CherrySoda.jsAdds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.guzzo86 diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js index e2a40c66..f2036861 100644 --- a/mods/aChefsDream.js +++ b/mods/aChefsDream.js @@ -3120,12 +3120,32 @@ elements.ginger = { burnTime: 60, burnInto: "dirt", breakInto: "ginger_juice", + cutInto: "cut_ginger", category: "food", state: "solid", density: 1250, conduct: 0.1, hidden: true } +elements.cut_ginger = { + color: "#ffdd80", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "M2|M1|M2", + ], + category:"food", + tempHigh: 100, + stateHigh: "steam", + burn:15, + burnTime:60, + burnInto: "steam", + breakInto: "juice", + breakIntoColor:"#ffe396", + state: "solid", + density: 1050, + hidden: true +} elements.ginger_rhizome = { color: "#c7ad58", @@ -7881,7 +7901,6 @@ elements.tempura = { temp: 40, tempHigh: 600, stateHigh: ["ash", "smoke"], - tempLow: -20, breakInto: "crumb", isFood: true, density: 100, diff --git a/mods/aChefsDream2.js b/mods/aChefsDream2.js new file mode 100644 index 00000000..793ecd49 --- /dev/null +++ b/mods/aChefsDream2.js @@ -0,0 +1,327 @@ +// created by SquareScreamYT +// the sequel to aChefsDream! + +runAfterLoad(function() { + console.log("Thanks for using aChefsDream2.js! -sqec") + console.log("You may find the prequel at aChefsDream.js") +}) + +var mods_to_include = ["mods/aChefsDream.js"] + +var mods_included = mods_to_include.map(mod => enabledMods.includes(mod)); +var all_mods_included = mods_included.reduce(function(a,b) { return a && b }); + +if(!all_mods_included) { + var mods_needed = mods_to_include.filter(function(modPath) { return !(enabledMods.includes(modPath)) }); + + mods_needed.forEach(function(modPath) { + enabledMods.splice(enabledMods.indexOf("mods/aChefsDream2"),0,modPath); + }); + localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); +} + +// Pork and Pigs + +elements.pig = { + color: ["#9c6732", "#dbb997", "#fcaeae"], + behavior: [ + "M2%1|XX|M2%1", + "M2%10|XX|M2%10", + "XX|M1|XX", + ], + category:"life", + state: "solid", + reactions: { + "petal": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL }, + "corn": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "lettuce": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "wheat": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "grass": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL }, + "grape": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "pumpkin_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "pumpkin": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL }, + "nut": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL }, + "lichen": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL }, + "oxygen": { elem2:"carbon_dioxide", chance:0.3 }, + "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 }, + "dirty_water": { elem1:"rotten_meat", chance:0.0001 }, + }, + egg: "piglet", + foodNeed: 10, + temp: 40, + tempHigh: 75, + stateHigh: "cooked_pork", + tempLow: -18, + stateLow: "frozen_meat", + breakInto: "raw_pork", + burn:85, + burnTime:450, + state: "solid", + density: 1117, + conduct: 0.3, + extractInto: "raw_pork", +}; +elements.piglet = { + color: ["#f7bebe", "#d1a88e"], + behavior: [ + "M2%1|XX|M2%1", + "M2%10|FX%5 AND CH:pig%0.1|M2%10", + "XX|M1|XX", + ], + category: "life", + state: "solid", + foodNeed: 20, + temp: 40, + tempHigh: 75, + stateHigh: "cooked_pork", + tempLow: -18, + stateLow: "frozen_meat", + breakInto: "blood", + burn:85, + burnTime:450, + state: "solid", + density: 900, + conduct: 0.1, + reactions: { + "petal": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL }, + "corn": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "lettuce": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "wheat": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "grass": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL }, + "grape": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "pumpkin_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "pumpkin": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL }, + "nut": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL }, + "lichen": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL }, + "oxygen": { elem2:"carbon_dioxide", chance:0.3 }, + "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 }, + "dirty_water": { elem1:"rotten_meat", chance:0.0001 }, + }, +}; + +elements.barbecued_pork = { + color:["#a1391f","#ab5e32"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp:55, + tempHigh: 600, + stateHigh: ["ash","smoke"], + isFood: true, + hidden: true, +} +elements.cooked_pork = { + color: ["#e6bf8a", "#e3be96"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp: 40, + tempHigh: 600, + stateHigh: ["ash", "smoke"], + hidden: true, + alias: "cooked_pork" +}; + +elements.raw_pork = { + color: ["#ed5d47", "#e0423d"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + burnInto: "cooked_pork", + temp:25, + tempHigh: 200, + stateHigh: "cooked_pork", + reactions: { + "charcoal": {elem1: "barbecued_pork", tempMin: 70}, + "fire": {elem1: "barbecued_pork"} + } +}; + +// Extraction tool + +elements.extract = { + color: "#82452c", + // other needed properties + tool: (pixel) => { + //store extractInto as a variable for legibility + var extractInto = elements[pixel.element].extractInto; + //if there’s no extractInto, it should equal undefined, which is falsey and !undefined = true + if (!extractInto) { return }; + //if extractInto is an array, randomly pick one of its elements + if(extractInto instanceof Array) { extractInto = extractInto[Math.floor(Math.random() * extractInto.length)] }; + //change pixel into the (chosen) element + if (shiftDown) { + if (Math.random() < 0.5) { + var thiselement = pixel.element; + changePixel(pixel, extractInto) + pixelTempCheck(pixel); + if (elements[thiselement].extractIntoColor) { + pixel.color = pixelColorPick(pixel, elements[thiselement].extractIntoColor); + } + } + } + else if (!shiftDown) { + if (Math.random() < 0.1) { + var thiselement = pixel.element; + changePixel(pixel, extractInto) + pixelTempCheck(pixel); + if (elements[thiselement].extractIntoColor) { + pixel.color = pixelColorPick(pixel, elements[thiselement].extractIntoColor); + } + } + } + }, + category: "tools", + canPlace: false, + desc: "Use on pixels to extract the essence from them, if possible. [BETA]" +} + +// spices + +elements.allspice = { + color: ["#7B5B3A", "#A75B3D", "#B67B57", "#C19A6B"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + isFood: true, + temp: 20, + hidden: true, + tempHigh: 250, + stateHigh: ["ash", "smoke"], +} + +elements.cumin = { + color: "#A58459", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + isFood: true, + temp: 20, + hidden: true, + tempHigh: 250, + stateHigh: ["ash", "smoke"], +} + +elements.paprika = { + color: ["#C72C29","#b22b02"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + isFood: true, + temp: 20, + hidden: true, + tempHigh: 250, + stateHigh: ["ash", "smoke"], +} + +elements.turmeric = { + color: ["#E5B635","#D9A322"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + isFood: true, + temp: 20, + hidden: true, + tempHigh: 250, + stateHigh: ["ash", "smoke"], +} + +elements.saffron = { + color: ["#b83b3b","#a82525"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + isFood: true, + temp: 20, + hidden: true, + tempHigh: 250, + stateHigh: ["ash", "smoke"], +} + +elements.sugarcane_plant = { + color: ["#fbc852","#dfad54"], + behavior: [ + "XX|M2%2|XX", + "XX|L2:sugarcane AND C2:sugarcane%10|XX", + "XX|M1|XX", + ], + tick: behaviors.SEEDRISE, + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -2, + stateLow: "sugarcane", + burn: 30, + burnTime: 100, + category: "life", + state: "solid", + density: 686, + breakInto: "cane_sugar", + cooldown: defaultCooldown, + seed: true +} +elements.sugarcane = { + color: ["#7cc05c","#77a052"], + behavior: behaviors.STURDYPOWDER, + tempHigh: 380, + stateHigh: ["ember","fire","fire","fire"], + burn: 10, + burnTime: 200, + burnInto: ["ember","fire","fire","fire"], + category: "food", + state: "solid", + density: 686, + breakInto: "cane_sugar", + seed: "sugarcane_plant" +} +elements.cane_sugar = { + color: "#ffeedb", + behavior: behaviors.POWDER, + reactions: { + "grape": { elem1:null, elem2:"jelly", chance:0.005, tempMin:100 }, + "water": { elem1:null, elem2:"sugar_water"}, + }, + category: "food", + tempHigh: 186, + stateHigh: "caramel", + state: "solid", + density: 1590, + isFood: true +} +elements.tea_leaves = { + color: ["#3e6e26","#507e28","#759e2e"], + reactions: { + "water": { elem2:"tea", tempMin:80 }, + "salt_water": { elem2:"tea", tempMin:80 }, + "sugar_water": { elem2:"tea", tempMin:80 }, + "seltzer": { elem2:"tea", tempMin:80 }, + "stench": { elem2:null, chance:0.25 }, + "steam": { elem2:"fragrance", chance:0.1 }, + "flea": { elem2:null, chance:0.01 }, + "termite": { elem2:null, chance:0.01 }, + "fly": { elem2:null, chance:0.01 }, + "ant": { elem2:null, chance:0.01 }, + "stink_bug": { elem2:null, chance:0.01 }, + }, + behavior: behaviors.POWDER, + tempHigh: 300, + stateHigh: ["fire","smoke","smoke","smoke","ash"], + tempLow: -2, + stateLow: "frozen_plant", + burn:10, + burnTime:300, + burnInto: ["fire","smoke","smoke","smoke","smoke","smoke","smoke","fragrance"], + category:"food", + state: "solid", + density: 1400, + isFood: true, +} \ No newline at end of file diff --git a/mods/food_mods.js b/mods/food_mods.js index bb088d75..59b19109 100644 --- a/mods/food_mods.js +++ b/mods/food_mods.js @@ -1,4 +1,4 @@ -var mods_to_include = ["mods/sbstuff.js","mods/ketchup_mod.js","mods/morefoodsmod.js","mods/weAllScreamFor.js","mods/soups.js","mods/pizzasstuff.js","mods/community_desserts.js","mods/plants.js","mods/aChefsDream.js"] +var mods_to_include = ["mods/sbstuff.js","mods/ketchup_mod.js","mods/morefoodsmod.js","mods/weAllScreamFor.js","mods/soups.js","mods/pizzasstuff.js","mods/community_desserts.js","mods/plants.js","mods/aChefsDream2.js"] var mods_included = mods_to_include.map(mod => enabledMods.includes(mod)); var all_mods_included = mods_included.reduce(function(a,b) { return a && b }); From cb6f2b4f1c53ed57970d83eccf896f070a625512 Mon Sep 17 00:00:00 2001 From: GGodPL <46885632+GGodPL@users.noreply.github.com> Date: Sat, 1 Mar 2025 12:06:37 +0100 Subject: [PATCH 2/5] Update maze.js --- mods/maze.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/mods/maze.js b/mods/maze.js index 07d592a1..27279472 100644 --- a/mods/maze.js +++ b/mods/maze.js @@ -68,14 +68,4 @@ elements.maze = { generateMaze(mouseSize - 1, mouseSize - 1, Math.floor(mousePos.x - mouseSize / 2) + 1, Math.floor(mousePos.y - mouseSize / 2) + 1) } } - -runAfterLoadList.push(() => { - if (!enabledMods.includes("mods/editTools.js")) { - document.addEventListener("mousedown", (ev) => { - if (elements[currentElement].onMouseDown) { - elements[currentElement].onMouseDown(); - } - }) - } -}) } \ No newline at end of file From 6659725b21f8e3e78597830ea507d42636763366 Mon Sep 17 00:00:00 2001 From: redbirdly <155550833+redbirdly@users.noreply.github.com> Date: Sun, 2 Mar 2025 10:30:18 +0800 Subject: [PATCH 3/5] Update lightmap.js --- mods/lightmap.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mods/lightmap.js b/mods/lightmap.js index c4e38e32..45d9fc7d 100644 --- a/mods/lightmap.js +++ b/mods/lightmap.js @@ -6,14 +6,15 @@ var lightmapWidth, lightmapHeight; var lightmapScale = 2; var lightSourceBoost = 2; var pixelSizeQuarter = pixelSizeHalf / 2; -var falloff = 0.8; // BetterSettings.js integration var lightmap_settingsTab = new SettingsTab("Lightmap"); var resolution_setting = new Setting("Resolution (higher number = lower quality)", "resolution", settingType.NUMBER, false, defaultValue=2); +var falloff_setting = new Setting("Falloff (higher number = higher blur radius)", "falloff", settingType.NUMBER, false, defaultValue=0.8); lightmap_settingsTab.registerSettings("Resolution", resolution_setting); +lightmap_settingsTab.registerSettings("Falloff", falloff_setting); settingsManager.registerTab(lightmap_settingsTab); @@ -90,6 +91,7 @@ function propagateLightmap() { var width = lightmap[0].length; var height = lightmap.length; + var falloff = falloff_setting.value; var neighbors = [ { dx: 1, dy: 0 }, { dx: -1, dy: 0 }, @@ -313,6 +315,12 @@ elements.fire.tick = function(pixel) { glowItsOwnColor(pixel); }; +var originalColdFireTick2 = elements.cold_fire.tick; +elements.cold_fire.tick = function(pixel) { + originalColdFireTick2(pixel); + glowItsOwnColor(pixel); +}; + var originalFlashTick = elements.flash.tick; elements.flash.tick = function(pixel) { originalFlashTick(pixel); @@ -354,7 +362,6 @@ elements.sun.tick = glowItsOwnColor; elements.magma.tick = glowItsOwnColor; elements.plasma.tick = glowItsOwnColor; elements.fw_ember.tick = glowItsOwnColor; -elements.cold_fire.tick = glowItsOwnColor; var radioactiveElements = [ "uranium", "radiation", "rad_glass", "fallout", From d47e8db594f36b43e0ee9c273ad41e111e0c3db2 Mon Sep 17 00:00:00 2001 From: redbirdly <155550833+redbirdly@users.noreply.github.com> Date: Sun, 2 Mar 2025 10:30:43 +0800 Subject: [PATCH 4/5] Update sky.js --- mods/sky.js | 72 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 11 deletions(-) diff --git a/mods/sky.js b/mods/sky.js index 03c56dd7..5fa58396 100644 --- a/mods/sky.js +++ b/mods/sky.js @@ -1,25 +1,47 @@ +// Sky.js + +// BetterSettings.js integration if (!enabledMods.includes("mods/betterSettings.js")) { enabledMods.unshift("mods/betterSettings.js"); localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); window.location.reload() }; var sky_settingsTab = new SettingsTab("Sky"); var realtime_setting = new Setting("Use real life time for sky", "real_time", settingType.BOOLEAN, false, defaultValue=false); var initial_hour_setting = new Setting("Initial hour", "initial_hour", settingType.NUMBER, false, defaultValue=8); -var ticks_per_hour_setting = new Setting("Ticks per hour", "ticks_per_hour", settingType.NUMBER, false, defaultValue=150); +var ticks_per_hour_setting = new Setting("Ticks per hour", "ticks_per_hour", settingType.NUMBER, false, defaultValue=300); +var airtemp_setting = new Setting("Change air temperature based on time", "air_temp", settingType.BOOLEAN, false, defaultValue=true); +var drawSun = new Setting("Add sun", "drawSun", settingType.BOOLEAN, false, defaultValue=true); sky_settingsTab.registerSettings("Real time", realtime_setting); sky_settingsTab.registerSettings("Initial hour", initial_hour_setting); sky_settingsTab.registerSettings("Ticks per hour", ticks_per_hour_setting); +sky_settingsTab.registerSettings("Temperature", airtemp_setting); +sky_settingsTab.registerSettings("Sun", drawSun); settingsManager.registerTab(sky_settingsTab); -//function lerpColor(start, end, t) { -// return start.map((s, i) => Math.round(s + (end[i] - s) * t)); -//} // Destructuring makes it faster function lerpColor([r1, g1, b1], [r2, g2, b2], t) { return [r1 + (r2 - r1) * t, g1 + (g2 - g1) * t, b1 + (b2 - b1) * t].map(Math.round); } +function hourToTemp(hour, Tmin=10, Tmax=30) { + return Tmin + (Tmax - Tmin) * Math.pow(Math.sin((Math.PI / 24) * (hour - 4)), 2); +} + +function getSunPositionInRect(x_, y_, w, h) { + // Convert hour to angle + var angle = Math.PI * (18 - hour) / 12; + + // Convert angle to position + var centerX = x_ + (w / 2); + var centerY = y_ + h; + var radius = (w) / 2; + var x = centerX + radius * Math.cos(angle); + var y = centerY - radius * Math.sin(angle); + + return { angle, x, y }; +} + function getSkyColors(hour) { const SKY_COLOR_PAIRS = [ [[0, 0, 15], [0, 0, 30]], // midnight @@ -46,15 +68,38 @@ function getSkyColors(hour) { }; } -function renderSky(ctx) { +function drawSunSquare(ctx, sunPos, size, color, blur) { + ctx.save(); + ctx.filter = `blur(${blur}px)`; + ctx.translate(sunPos.x * pixelSize, sunPos.y * pixelSize); + ctx.rotate(sunPos.angle); + ctx.fillStyle = color; + ctx.fillRect(-size * 0.5, -size * 0.5, size, size); + ctx.restore(); +} + +function renderSkyAndSun(ctx) { // Get sky colors and make gradient const { skyTop, skyBottom } = getSkyColors(hour); const gradient = ctx.createLinearGradient(0, 0, 0, height * pixelSize); gradient.addColorStop(0, skyTop); gradient.addColorStop(1, skyBottom); + ctx.globalAlpha = 1.0; ctx.fillStyle = gradient; ctx.fillRect(0, 0, (width + 1) * pixelSize, (height + 1) * pixelSize); + + // Draw sun + if (hour < 5.5 || hour > 18.5) {return;} + if (!drawSun.value) {return;} + + var sunPos = getSunPositionInRect(width * 0.1, height * 0.1, width * 0.8, height * 0.9); + var sunSize = pixelSize * 9; + var nearSunSetOrRise = Math.pow((1 - Math.cos((Math.PI / 6) * hour)) / 2, 4); + var color = RGBToHex(lerpColor([255, 230, 225], [255, 160, 128], nearSunSetOrRise)); + + drawSunSquare(ctx, sunPos, sunSize, color, 5); // Glow + drawSunSquare(ctx, sunPos, sunSize * 0.75, "#FFFFFF", 1); } function updateDayTime() { @@ -64,28 +109,33 @@ function updateDayTime() { const now = new Date(); hour = now.getHours() + now.getMinutes() / 60; } else { - hour = (hour + (1 / ticks_per_hour_setting.value)) % 24; // Keep within 0-23 + var hours_per_tick = 1 / (ticks_per_hour_setting.value + 1); + hour = (hour + hours_per_tick) % 24; // Keep within 0-23 + } + + if (airtemp_setting.value) { + airTemp = hourToTemp(hour, 12, 26); } } // Sky should be first layer -function prioritizeRenderSky() { - const idx = renderPrePixelList.indexOf(renderSky); +function prioritizeSky() { + const idx = renderPrePixelList.indexOf(renderSkyAndSun); if (idx !== -1) { const [skyFn] = renderPrePixelList.splice(idx, 1); renderPrePixelList.unshift(skyFn); } } -// Resetting canvas also resets time +// Resetting canvas also resets hour function initializeSky() { hour = initial_hour_setting.value; } // Hooks runAfterReset(initializeSky); -runAfterLoad(prioritizeRenderSky); +runAfterLoad(prioritizeSky); runEveryTick(updateDayTime); -renderPrePixel(renderSky); +renderPrePixel(renderSkyAndSun); var hour = initial_hour_setting.value; From a296004d983d79156e28d1a27120e4d34d2c7fda Mon Sep 17 00:00:00 2001 From: Nekonico <163950752+DBNekonico@users.noreply.github.com> Date: Tue, 4 Mar 2025 18:25:59 -0800 Subject: [PATCH 5/5] life, fire and compression update --- mods/sandboxels.js | 4124 +++++++++++++++++++------------------------- 1 file changed, 1751 insertions(+), 2373 deletions(-) diff --git a/mods/sandboxels.js b/mods/sandboxels.js index 3d1a6daf..72a993cd 100644 --- a/mods/sandboxels.js +++ b/mods/sandboxels.js @@ -2,59 +2,1724 @@ window.addEventListener("load", () => { document.getElementById("elementButton-sandboxels_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-sand_screen")?.remove() -}) - -window.addEventListener("load", () => { + document.getElementById("elementButton-wet_sand_screen")?.remove() document.getElementById("elementButton-rock_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-wall_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-water_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-steam_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-ice_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-wood_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-saw_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-cellulose_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-blood_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-paper_screen")?.remove() -}) - -window.addEventListener("load", () => { document.getElementById("elementButton-body_screen")?.remove() + document.getElementById("elementButton-head_screen")?.remove() + document.getElementById("elementButton-bird_screen")?.remove() + document.getElementById("elementButton-fly_screen")?.remove() + document.getElementById("elementButton-rat_screen")?.remove() + document.getElementById("elementButton-oxygen_screen")?.remove() + document.getElementById("elementButton-fire_screen")?.remove() + document.getElementById("elementButton-smoke_screen")?.remove() + document.getElementById("elementButton-simulated_human")?.remove() }) -window.addEventListener("load", () => { - document.getElementById("elementButton-head_screen")?.remove() -}) +elements.sandboxels_screen_off = { + name:"screen", + color: "#454545", + behavior: behaviors.WALL, + behaviorOn: [ + "XX|XX|XX", + "XX|CH:sandboxels_screen|XX", + "XX|XX|XX", + ], + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + conduct: 1, + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], + tempLow: -80, + stateLow: "glass_shard", + category: "simulation", + state: "solid", + density: 1200, + desc: "Shock to turn on." +} + +elements.sandboxels_screen = { + name:"screen", + hidden:true, + color: "#1D1D1D", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + state: "solid", + density: 1200, +} + +elements.simulated_heat = { + color: "#ff0000", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + tool: function(pixel) { + if (elements[pixel.element].isScreen === true) { + pixel.dtemp += 1 + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to heat simulated elements." +} + +elements.simulated_cool = { + color: "#0000ff", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + tool: function(pixel) { + if (elements[pixel.element].isScreen === true) { + pixel.dtemp -= 1 + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to cool simulated elements." +} + +elements.simulated_roomtemp = { + color: "#b1c96d", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + tool: function(pixel) { + if (elements[pixel.element].isScreen === true) { + pixel.dtemp = 20 + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to make simulated elements room temperature." +} + +elements.simulated_smash = { + color: ["#666666","#888888","#666666"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + tool: function(pixel) { + if (elements[pixel.element].isScreen === true && elements[pixel.element].digBreakInto) { + changePixel(pixel,elements[pixel.element].digBreakInto); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to smash simulated elements." +} + +elements.simulated_erase = { + color: "#fdb5ff", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + tool: function(pixel) { + if (elements[pixel.element].isScreen === true) { + changePixel(pixel,"sandboxels_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to erase simulated elements." +} + +elements.simulated_human = { + hidden:true, + color: ["#46433F","#47443C","#4D483D"], + category: "simulation", + properties: { + dead: false, + dir: 1, + panic: 0 + }, + tick: function(pixel) { + if (!isEmpty(pixel.x, pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].element === "sandboxels_screen") { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + newPixel.element = "body_screen"; + pixel.element = "head_screen"; + } + else if (!isEmpty(pixel.x, pixel.y-1),true && pixelMap[pixel.x][pixel.y-1].element === "sandboxels_screen") { + var newPixel = pixelMap[pixel.x][pixel.y-1]; + newPixel.element = "head_screen"; + pixel.element = "body_screen"; + } + else { + changePixel(pixel, "sandboxels_screen"); + } + }, + related: ["suited_body","suited_head"], + cooldown: defaultCooldown, + forceSaveColor: true, +} + +elements.sand_screen = { + name:"screen", + hidden:true, + color: "#e6d577", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + isSolid: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true) && !isEmpty(pixel.x,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x+1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y+1,true) && !isEmpty(pixel.x,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x-1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + } + }, + state: "solid", + density: 1602, +} + +elements.wet_sand_screen = { + name:"screen", + hidden:true, + color: ["#a19348","#b5a85e"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","wet_sand"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + isSolid: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + }, + state: "solid", + density: 1905, +} + +elements.rock_screen = { + name:"screen", + hidden:true, + color: ["#808080","#4f4f4f","#949494"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","rock"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + digBreakInto: "sand_screen", + isScreen: true, + isMoving: true, + isSolid: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true) && !isEmpty(pixel.x,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x+1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y+1,true) && !isEmpty(pixel.x,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x-1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + } + }, + state: "solid", + density: 2550, +} + +elements.saw_screen = { + name:"screen", + hidden:true, + color: ["#dec150","#c7b15a"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sawdust"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true) && !isEmpty(pixel.x,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x+1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y+1,true) && !isEmpty(pixel.x,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x-1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); + pixel.dtemp = newPixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + } + }, + state: "solid", + density: 1200, +} + +elements.cellulose_screen = { + name:"screen", + hidden:true, + color: "#c7d4c9", + behavior: [ + "XX|XX|XX", + "SW:sandboxels_screen|XX|SW:sandboxels_screen", + "SW:sandboxels_screen|XX|SW:sandboxels_screen", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","cellulose"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.2 && !isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x+1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + pixel.dtemp = newPixel.dtemp; + newPixel.dtemp = pixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x-1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + pixel.dtemp = newPixel.dtemp; + newPixel.dtemp = pixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + } + else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + } + } + if (pixel.dtemp > 99) { changePixel(pixel,"paper_screen") } + }, + state: "solid", + density: 1500, +} + +elements.blood_screen = { + name:"screen", + hidden:true, + color: ["#ff0000","#ee0000"], + behavior: [ + "XX|XX|XX", + "SW:sandboxels_screen|XX|SW:sandboxels_screen", + "SW:sandboxels_screen|XX|SW:sandboxels_screen", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","blood"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.2 && !isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + } + else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x+1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + pixel.dtemp = newPixel.dtemp; + newPixel.dtemp = pixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x-1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + pixel.dtemp = newPixel.dtemp; + newPixel.dtemp = pixel.dtemp; + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + } + else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + if (pixel.dtemp > 99) { changePixel(pixel,"steam_screen") } + }, + state: "solid", + density: 1060, +} + +elements.water_screen = { + name:"screen", + hidden:true, + color: "#2167ff", + behavior: [ + "XX|XX|XX", + "SW:sandboxels_screen|XX|SW:sandboxels_screen", + "SW:sandboxels_screen|XX|SW:sandboxels_screen", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","water"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.2 && !isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + if (elements[newPixel.element].id === elements.saw_screen.id || elements[newPixel.element].id === elements.paper_screen.id) { + changePixel(newPixel, "cellulose_screen") + changePixel(pixel, "sandboxels_screen") + } + } + else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x+1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + if (elements[newPixel.element].id === elements.saw_screen.id || elements[newPixel.element].id === elements.paper_screen.id) { + changePixel(newPixel, "cellulose_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { + newPixel = pixelMap[pixel.x-1][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].id === elements.sand_screen.id) { + changePixel(newPixel, "wet_sand_screen") + changePixel(pixel, "sandboxels_screen") + } + if (elements[newPixel.element].id === elements.saw_screen.id || elements[newPixel.element].id === elements.paper_screen.id) { + changePixel(newPixel, "cellulose_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + } + else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.saw_screen.id || elements[newPixel.element].id === elements.paper_screen.id) { + changePixel(newPixel, "cellulose_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (elements[newPixel.element].id === elements.saw_screen.id || elements[newPixel.element].id === elements.paper_screen.id) { + changePixel(newPixel, "cellulose_screen") + changePixel(pixel, "sandboxels_screen") + } + } + } + if (pixel.dtemp < 0) { changePixel(pixel,"ice_screen") } + if (pixel.dtemp > 99) { changePixel(pixel,"steam_screen") } + }, + state: "solid", + density: 997, +} + +elements.steam_screen = { + name:"screen", + hidden:true, + color: "#abd6ff", + properties: { + dtemp: 150, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","steam"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.5) { + pixel.dir1 = 1 + } + else { + pixel.dir1 = -1 + } + if (Math.random() < 0.5) { + pixel.dir2 = 1 + } + else { + pixel.dir2 = -1 + } + if (Math.random() > 0.25 && !isEmpty(pixel.x+(pixel.dir1),pixel.y-(pixel.dir2),true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir1)][pixel.y-(pixel.dir2)]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,pixel.element); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + } + } + if (pixel.dtemp < 100) { changePixel(pixel,"water_screen") } + }, + state: "solid", + density: 0.6, +} + +elements.oxygen_screen = { + name:"screen", + hidden:true, + color: "#99c7ff", + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","oxygen"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.5) { + pixel.dir1 = 1 + } + else { + pixel.dir1 = -1 + } + if (Math.random() < 0.5) { + pixel.dir2 = 1 + } + else { + pixel.dir2 = -1 + } + if (Math.random() > 0.5 && !isEmpty(pixel.x+(pixel.dir1),pixel.y-(pixel.dir2),true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir1)][pixel.y-(pixel.dir2)]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + } + } + }, + state: "solid", + density: 1.292, +} + +elements.fire_screen = { + name:"screen", + hidden:true, + color: ["#ff6b21","#ffa600","#ff4000"], + properties: { + dtemp: 600, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","oxygen"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.975) { + changePixel(pixel,"smoke_screen") + } + if (Math.random() > 0.5) { + pixel.dir1 = 1 + } + else { + pixel.dir1 = -1 + } + if (Math.random() < 0.75) { + pixel.dir2 = 1 + } + else { + pixel.dir2 = -1 + } + if (Math.random() > 0.05 && !isEmpty(pixel.x+(pixel.dir1),pixel.y-(pixel.dir2),true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir1)][pixel.y-(pixel.dir2)]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + } + } + if (pixel.dtemp < 100) { changePixel(pixel,"smoke_screen") } + }, + state: "solid", + density: 0.1, +} + +elements.smoke_screen = { + name:"screen", + hidden:true, + color: "#383838", + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","oxygen"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isMoving: true, + tick: function(pixel) { + if (Math.random() > 0.95) { + changePixel(pixel,"sandboxels_screen") + } + if (Math.random() > 0.5) { + pixel.dir1 = 1 + } + else { + pixel.dir1 = -1 + } + if (Math.random() < 0.5) { + pixel.dir2 = 1 + } + else { + pixel.dir2 = -1 + } + if (Math.random() > 0.5 && !isEmpty(pixel.x+(pixel.dir1),pixel.y-(pixel.dir2),true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir1)][pixel.y-(pixel.dir2)]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + } + } + if (pixel.dtemp > 1000) { changePixel(pixel,"fire_screen") } + }, + state: "solid", + density: 1.292, +} + +elements.body_screen = { + color: ["#A8A7AB","#878689"], + name:"screen", + hidden:true, + behavior: [ + "XX|CH:sandboxels_screen>blood_screen%0.1|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","body"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + digBreakInto: "blood_screen", + isScreen: true, + isSolid: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y-1,true) && pixelMap[pixel.x][pixel.y-1].element === "head_screen") { + var headPixel = pixelMap[pixel.x][pixel.y-1] + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1] + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,"body_screen") + newPixel.dtemp = pixel.dtemp + changePixel(pixel,"head_screen") + pixel.dtemp = headPixel.dtemp + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (Math.random() < 0.1 && !isEmpty(pixel.x+1,pixel.y,true) && !isEmpty(pixel.x+1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + var newHeadPixel = pixelMap[pixel.x+1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel,"body_screen"); + changePixel(newHeadPixel,"head_screen"); + newPixel.dtemp = pixel.dtemp; + newHeadPixel.dtemp = headPixel.dtemp; + } + else if (newPixel.element !== "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + var newPixel2 = newHeadPixel; + var newHeadPixel2 = pixelMap[newHeadPixel.x][newHeadPixel.y-1]; + if (newPixel2.element === "sandboxels_screen" && newHeadPixel2.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel2,"body_screen"); + changePixel(newHeadPixel2,"head_screen"); + newPixel2.dtemp = pixel.dtemp; + newHeadPixel2.dtemp = headPixel.dtemp; + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true) && !isEmpty(pixel.x-1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + var newHeadPixel = pixelMap[pixel.x-1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel,"body_screen"); + changePixel(newHeadPixel,"head_screen"); + newPixel.dtemp = pixel.dtemp; + newHeadPixel.dtemp = headPixel.dtemp; + } + else if (newPixel.element !== "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + var newPixel2 = newHeadPixel; + var newHeadPixel2 = pixelMap[newHeadPixel.x][newHeadPixel.y-1]; + if (newPixel2.element === "sandboxels_screen" && newHeadPixel2.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel2,"body_screen"); + changePixel(newHeadPixel2,"head_screen"); + newPixel2.dtemp = pixel.dtemp; + newHeadPixel2.dtemp = headPixel.dtemp; + } + } + } + } + } + else if (Math.random() < 0.05 && !isEmpty(pixel.x+1,pixel.y,true) && !isEmpty(pixel.x+1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + var newHeadPixel = pixelMap[pixel.x+1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel,"body_screen"); + changePixel(newHeadPixel,"head_screen"); + newPixel.dtemp = pixel.dtemp; + newHeadPixel.dtemp = headPixel.dtemp; + } + else if (newPixel.element !== "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + var newPixel2 = newHeadPixel; + var newHeadPixel2 = pixelMap[newHeadPixel.x][newHeadPixel.y-1]; + if (newPixel2.element === "sandboxels_screen" && newHeadPixel2.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel2,"body_screen"); + changePixel(newHeadPixel2,"head_screen"); + newPixel2.dtemp = pixel.dtemp; + newHeadPixel2.dtemp = headPixel.dtemp; + } + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true) && !isEmpty(pixel.x-1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + var newHeadPixel = pixelMap[pixel.x-1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel,"body_screen"); + changePixel(newHeadPixel,"head_screen"); + newPixel.dtemp = pixel.dtemp; + newHeadPixel.dtemp = headPixel.dtemp; + } + else if (newPixel.element !== "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { + var newPixel2 = newHeadPixel; + var newHeadPixel2 = pixelMap[newHeadPixel.x][newHeadPixel.y-1]; + if (newPixel2.element === "sandboxels_screen" && newHeadPixel2.element === "sandboxels_screen") { + changePixel(pixel,"sandboxels_screen"); + changePixel(headPixel,"sandboxels_screen"); + changePixel(newPixel2,"body_screen"); + changePixel(newHeadPixel2,"head_screen"); + newPixel2.dtemp = pixel.dtemp; + newHeadPixel2.dtemp = headPixel.dtemp; + } + } + } + if (!isEmpty(pixel.x,pixel.y-2,true) && pixelMap[pixel.x][pixel.y-2].element === "head_screen") { + changePixel(pixelMap[pixel.x][pixel.y-2],"sandboxels_screen"); + } + } + else if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + changePixel(newPixel,"body_screen"); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + } + } + }, +} + +elements.head_screen = { + color: ["#46433F","#47443C","#4D483D"], + name:"screen", + hidden:true, + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","head"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + digBreakInto: "blood_screen", + isScreen: true, + isSolid: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + if (Math.random() < 0.1) { + changePixel(newPixel,"blood_screen"); + newPixel.dtemp = pixel.dtemp; + } + else { + changePixel(newPixel,"head_screen"); + newPixel.dtemp = pixel.dtemp; + changePixel(pixel,"sandboxels_screen"); + + } + } + else if (elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + } + } + }, +} + +elements.fly_screen = { + name:"screen", + hidden:true, + color: "#4c4e42", + properties: { + dtemp: 20, + dir: 1, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","fly"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + digBreakInto: "blood_screen", + isScreen: true, + isMoving: true, + isSolid: true, + tick: function(pixel) { + if (outOfBounds(pixel.x+(pixel.dir),pixel.y) || isEmpty(pixel.x+(pixel.dir),pixel.y)) { + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + if (Math.random() > 0.5 && !isEmpty(pixel.x+(pixel.dir),pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir)][pixel.y-1]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true || newPixel.element !== "sandboxels_screen") { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + } + else if (!isEmpty(pixel.x+(pixel.dir),pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir)][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true || newPixel.element !== "sandboxels_screen") { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + } + }, + state: "solid", + density: 600, +} + +elements.bird_screen = { + name:"screen", + hidden:true, + color: "#997457", + properties: { + dtemp: 20, + dir: 1, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","bird"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + digBreakInto: "blood_screen", + isScreen: true, + isMoving: true, + isSolid: true, + tick: function(pixel) { + if (outOfBounds(pixel.x+(pixel.dir),pixel.y) || isEmpty(pixel.x+(pixel.dir),pixel.y)) { + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + if (Math.random() > 0.25 && !isEmpty(pixel.x+(pixel.dir),pixel.y,true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir)][pixel.y]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true || newPixel.element !== "sandboxels_screen") { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].id === elements.fly_screen.id && Math.random() < 0.5) { + changePixel(newPixel, "sandboxels_screen") + } + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + } + else { + if (Math.random() > 0.5 && !isEmpty(pixel.x+(pixel.dir),pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir)][pixel.y+1]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true || newPixel.element !== "sandboxels_screen") { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].id === elements.fly_screen.id && Math.random() < 0.5) { + changePixel(newPixel, "sandboxels_screen") + } + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + } + else if (!isEmpty(pixel.x+(pixel.dir),pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x+(pixel.dir)][pixel.y-1]; + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel, pixel) + } + else if (elements[newPixel.element].isScreen === true || newPixel.element !== "sandboxels_screen") { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].id === elements.fly_screen.id && Math.random() < 0.5) { + changePixel(newPixel, "sandboxels_screen") + } + if (pixel.dir === -1) { + pixel.dir = 1 + } + else if (pixel.dir === 1) { + pixel.dir = -1 + } + } + } + } + }, + state: "solid", + density: 400, +} + +elements.rat_screen = { + color: ["#a698a9","#8c7d82","#ccc3cf"], + name:"screen", + hidden:true, + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + properties: { + dtemp: 20, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","rat"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + digBreakInto: "blood_screen", + isScreen: true, + isSolid: true, + isMoving: true, + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var newPixel = pixelMap[pixel.x][pixel.y+1] + if (newPixel.element === "sandboxels_screen") { + swapPixels(newPixel,pixel); + } + else if (Math.random() < 0.25 && elements[newPixel.element].isScreen === true) { + newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) + pixel.dtemp = newPixel.dtemp + if (elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel, pixel) + } + if (Math.random() < 0.5 && !isEmpty(pixel.x+1,pixel.y,true) && !isEmpty(pixel.x+1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + var newUpPixel = pixelMap[pixel.x+1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" || elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel,pixel); + } + else if (newPixel.element !== "sandboxels_screen" && newUpPixel.element === "sandboxels_screen") { + swapPixels(newUpPixel,pixel); + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true) && !isEmpty(pixel.x-1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + var newUpPixel = pixelMap[pixel.x-1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" || elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel,pixel); + } + else if (newPixel.element !== "sandboxels_screen" && newUpPixel.element === "sandboxels_screen") { + swapPixels(newUpPixel,pixel); + } + } + } + } + else if (Math.random() < 0.25) { + if (Math.random() < 0.5 && !isEmpty(pixel.x+1,pixel.y,true) && !isEmpty(pixel.x+1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x+1][pixel.y]; + var newUpPixel = pixelMap[pixel.x+1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" || elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel,pixel); + } + else if (newPixel.element !== "sandboxels_screen" && newUpPixel.element === "sandboxels_screen") { + swapPixels(newUpPixel,pixel); + } + } + else if (!isEmpty(pixel.x-1,pixel.y,true) && !isEmpty(pixel.x-1,pixel.y-1,true)) { + var newPixel = pixelMap[pixel.x-1][pixel.y]; + var newUpPixel = pixelMap[pixel.x-1][pixel.y-1]; + if (newPixel.element === "sandboxels_screen" || elements[newPixel.element].density < elements[pixel.element].density && elements[newPixel.element].isSolid !== true && elements[newPixel.element].isMoving === true) { + swapPixels(newPixel,pixel); + } + else if (newPixel.element !== "sandboxels_screen" && newUpPixel.element === "sandboxels_screen") { + swapPixels(newUpPixel,pixel); + } + } + } + }, + density: 1450, +} + +elements.ice_screen = { + name:"screen", + hidden:true, + color: "#b2daeb", + behavior: behaviors.WALL, + properties: { + dtemp: 0, + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","ice"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + isScreen: true, + isSolid: true, + tick: function(pixel) { + if (pixel.dtemp > 5) { changePixel(pixel,"water_screen") } + }, + state: "solid", + density: 1200, +} + +elements.wood_screen = { + name:"screen", + hidden:true, + color: "#a0522d", + behavior: behaviors.WALL, + properties: { + dtemp: 20, + }, + digBreakInto: "saw_screen", + isScreen: true, + isSolid: true, + tick: function(pixel) { + if (pixel.dtemp > 400) { changePixel(pixel,"fire_screen") } + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","wood"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + state: "solid", + density: 1200, +} + +elements.paper_screen = { + name:"screen", + hidden:true, + color: "#f0f0f0", + behavior: behaviors.WALL, + properties: { + dtemp: 20, + }, + isScreen: true, + isSolid: true, + tick: function(pixel) { + if (pixel.dtemp > 248) { changePixel(pixel,"fire_screen") } + }, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","paper"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + state: "solid", + density: 1200, +} + +elements.wall_screen = { + name:"screen", + hidden:true, + color: "#808080", + behavior: behaviors.WALL, + properties: { + dtemp: 0, + }, + isScreen: true, + isSolid: true, + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","concrete"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "simulation", + state: "solid", + density: 1200, +} + +elements.simulated_sand = { + color: "#e6d577", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"sand_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on screen to place simulated sand." +} + +elements.simulated_rock = { + color: ["#808080","#4f4f4f","#949494"], + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"rock_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on screen to place simulated sand." +} + +elements.simulated_water = { + color: "#2167ff", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"water_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated water." +} + +elements.simulated_ice = { + color: "#b2daeb", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"ice_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated ice." +} + +elements.simulated_steam = { + color: "#abd6ff", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"steam_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated steam." +} + +elements.simulated_blood = { + color: ["#ff0000","#ee0000"], + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"blood_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated blood." +} + +elements.simulated_fly = { + color: "#4c4e42", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"fly_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated flies." +} + +elements.simulated_bird = { + color: "#997457", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"bird_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated birds." +} + +elements.simulated_rat = { + color: ["#a698a9","#8c7d82","#ccc3cf"], + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"rat_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated rats." +} + +elements.simulated_oxygen = { + color: "#99c7ff", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"oxygen_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated oxygen." +} + +elements.simulated_fire = { + color: ["#ff6b21","#ffa600","#ff4000"], + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"fire_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated fire." +} + +elements.simulated_smoke = { + color: "#383838", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"smoke_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated smoke." +} + +elements.simulated_sawdust = { + color: ["#dec150","#c7b15a"], + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"saw_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on screen to place simulated sawdust." +} + +elements.simulated_wood = { + color: "#a0522d", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"wood_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated wood." +} + +elements.simulated_paper = { + color: "#f0f0f0", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"paper_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated paper." +} + +elements.simulated_wall = { + color: "#808080", + tool: function(pixel) { + if (elements[pixel.element].id === elements.sandboxels_screen.id) { + changePixel(pixel,"wall_screen"); + } + }, + insulate:true, + canPlace: false, + category: "simulation", + desc: "Use on a screen to place simulated wall." +} elements.danger_suit = { color: ["#A8A7AB","#878689"], @@ -65,7 +1730,7 @@ elements.danger_suit = { }, tempHigh: 500, stateHigh: ["molten_aluminum","smoke","ash"], - burn: 10, + burn: 1, burnTime: 300, burnInto: ["molten_aluminum","smoke","smoke","smoke","ash"], category: "simulation", @@ -76,7 +1741,7 @@ elements.danger_suit = { breakInto: "metal_scrap", fireColor: "#A7B3BF", superconductAt: -271.95 -}, +} elements.danger_helmet = { color: ["#323233","#434344"], @@ -86,14 +1751,14 @@ elements.danger_helmet = { }, tempHigh: 1500, stateHigh: ["molten_glass","molten_glass","molten_plastic"], - burn: 10, + burn: 1, burnTime: 200, burnInto: ["glass_shard","glass_shard","glass_shard","glass_shard","dioxin","smoke","dioxin","smoke","stench"], category: "simulation", state: "solid", density: 2500, breakInto: "glass_shard", -}, +} elements.suited_body = { color: ["#A8A7AB","#878689"], @@ -227,7 +1892,7 @@ elements.suited_body = { } } -}, +} elements.suited_head = { color: ["#46433F","#47443C","#4D483D"], @@ -297,7 +1962,7 @@ elements.suited_head = { if (pixel.temp > 37) { pixel.temp -= 1; } else if (pixel.temp < 37) { pixel.temp += 1; } } -}, +} elements.digitalizer = { color: ["#d1c6be","#b5c0ad","#b9b8bc"], @@ -307,7 +1972,6 @@ elements.digitalizer = { }, tempHigh: 1500, stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], tempLow: -80, stateLow: "glass_shard", @@ -317,61 +1981,85 @@ elements.digitalizer = { var newPixel = pixelMap[pixel.x][pixel.y-1]; var screen = pixelMap[pixel.x][pixel.y+1]; if (screen.element === "sandboxels_screen") { - if (newPixel.element === "sand" && screen.element === "sandboxels_screen") { + if (newPixel.element === "sand") { changePixel(screen,"sand_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "ice" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "ice") { changePixel(screen,"ice_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "steam" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "steam") { changePixel(screen,"steam_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "water" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "water") { changePixel(screen,"water_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "wood" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "wood") { changePixel(screen,"wood_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "paper" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "paper") { changePixel(screen,"paper_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "sawdust" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "sawdust") { changePixel(screen,"saw_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "cellulose" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "cellulose") { changePixel(screen,"cellulose_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "blood" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "blood") { changePixel(screen,"blood_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "body" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "body") { changePixel(screen,"blood_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "head" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "head") { changePixel(screen,"blood_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "rock" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "rock") { changePixel(screen,"rock_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (newPixel.element === "wall" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "wall") { changePixel(screen,"wall_screen"); deletePixel(newPixel.x,newPixel.y) } - else if (!isEmpty(pixel.x,pixel.y-2,true) && newPixel.element === "suited_body" && screen.element === "sandboxels_screen") { + else if (newPixel.element === "fly") { + changePixel(screen,"fly_screen"); + deletePixel(newPixel.x,newPixel.y) + } + else if (newPixel.element === "bird") { + changePixel(screen,"bird_screen"); + deletePixel(newPixel.x,newPixel.y) + } + else if (newPixel.element === "rat") { + changePixel(screen,"rat_screen"); + deletePixel(newPixel.x,newPixel.y) + } + else if (newPixel.element === "fire") { + changePixel(screen,"fire_screen"); + deletePixel(newPixel.x,newPixel.y) + } + else if (newPixel.element === "smoke") { + changePixel(screen,"smoke_screen"); + deletePixel(newPixel.x,newPixel.y) + } + else if (newPixel.element === "oxygen") { + changePixel(screen,"oxygen_screen"); + deletePixel(newPixel.x,newPixel.y) + } + else if (!isEmpty(pixel.x,pixel.y-2,true) && newPixel.element === "suited_body") { var headPixel = pixelMap[pixel.x][pixel.y-2]; - if (headPixel.element === "suited_head" && newPixel.element === "suited_body" && screen.element === "sandboxels_screen") { + if (headPixel.element === "suited_head" && newPixel.element === "suited_body") { changePixel(screen,"simulated_human"); deletePixel(newPixel.x,newPixel.y-1) deletePixel(newPixel.x,newPixel.y) @@ -386,2318 +2074,8 @@ elements.digitalizer = { }, state: "solid", density: 1200, - desc: "simulatedizes elements." -}, - -elements.sandboxels_screen_off = { - name:"screen", - color: "#454545", - behavior: behaviors.WALL, - behaviorOn: [ - "XX|XX|XX", - "XX|CH:sandboxels_screen|XX", - "XX|XX|XX", - ], - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], - tempLow: -80, - stateLow: "glass_shard", - category: "simulation", - state: "solid", - density: 1200, - desc: "Shock to turn on." -}, - -elements.sandboxels_screen = { - name:"screen", - hidden:true, - color: "#1D1D1D", - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - state: "solid", - density: 1200, -}, - -elements.simulated_human = { - hidden:true, - color: ["#46433F","#47443C","#4D483D"], - category: "simulation", - properties: { - dead: false, - dir: 1, - panic: 0 - }, - tick: function(pixel) { - if (!isEmpty(pixel.x, pixel.y+1),true && pixelMap[pixel.x][pixel.y+1].element === "sandboxels_screen") { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - newPixel.element = "body_screen"; - pixel.element = "head_screen"; - } - else if (!isEmpty(pixel.x, pixel.y-1),true && pixelMap[pixel.x][pixel.y-1].element === "sandboxels_screen") { - var newPixel = pixelMap[pixel.x][pixel.y-1]; - newPixel.element = "head_screen"; - pixel.element = "body_screen"; - } - else { - changePixel(pixel, "sandboxels_screen"); - } - }, - related: ["suited_body","suited_head"], - cooldown: defaultCooldown, - forceSaveColor: true, -}, - -elements.sand_screen = { - name:"screen", - hidden:true, - color: "#e6d577", - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sand"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (!isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"sand_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"cellulose_screen"); - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"sand_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"cellulose_screen"); - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"sand_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"cellulose_screen"); - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - } - }, - state: "solid", - density: 1200, -}, - -elements.rock_screen = { - name:"screen", - hidden:true, - color: ["#808080","#4f4f4f","#949494"], - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","rock"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (!isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"rock_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"cellulose_screen"); - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"rock_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"cellulose_screen"); - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"rock_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"cellulose_screen"); - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - } - }, - state: "solid", - density: 1200, -}, - -elements.saw_screen = { - name:"screen", - hidden:true, - color: ["#dec150","#c7b15a"], - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","sawdust"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (!isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"saw_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"saw_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"saw_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - } - }, - state: "solid", - density: 1200, -}, - -elements.cellulose_screen = { - name:"screen", - hidden:true, - color: "#c7d4c9", - behavior: [ - "XX|XX|XX", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","cellulose"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (Math.random() > 0.2 && !isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "blood_screen") { - changePixel(newPixel,"cellulose_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"blood_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - if (pixel.dtemp > 99) { changePixel(pixel,"paper_screen") } - }, - state: "solid", - density: 1200, -}, - -elements.blood_screen = { - name:"screen", - hidden:true, - color: ["#ff0000","#ee0000"], - behavior: [ - "XX|XX|XX", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","blood"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (Math.random() > 0.2 && !isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"blood_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"blood_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"blood_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"blood_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"blood_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"blood_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"blood_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"blood_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"blood_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"blood_screen"); - pixel.dtemp = newPixel.dtemp; - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"water_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - if (pixel.dtemp > 124) { changePixel(pixel,"steam_screen") } - }, - state: "solid", - density: 1200, -}, - -elements.water_screen = { - name:"screen", - hidden:true, - color: "#2167ff", - behavior: [ - "XX|XX|XX", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","water"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (Math.random() > 0.2 && !isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"water_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"water_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"water_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x+1,pixel.y,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"water_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (!isEmpty(pixel.x-1,pixel.y,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"water_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "paper_screen") { - changePixel(newPixel,"cellulose_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - if (pixel.dtemp < 0) { changePixel(pixel,"ice_screen") } - if (pixel.dtemp > 99) { changePixel(pixel,"steam_screen") } - }, - state: "solid", - density: 1200, -}, - -elements.steam_screen = { - name:"screen", - hidden:true, - color: "#abd6ff", - behavior: [ - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - "XX|XX|XX", - "SW:sandboxels_screen|XX|SW:sandboxels_screen", - ], - properties: { - dtemp: 150, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","steam"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (Math.random() > 0.75 && !isEmpty(pixel.x+1,pixel.y-1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y-1]; - if (newPixel.element === "sandboxels_screen") { - newPixel.dtemp = pixel.dtemp; - changePixel(newPixel,"steam_screen"); - changePixel(pixel,"sandboxels_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (Math.random() > 0.75 && !isEmpty(pixel.x-1,pixel.y-1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y-1]; - if (newPixel.element === "sandboxels_screen") { - newPixel.dtemp = pixel.dtemp; - changePixel(newPixel,"steam_screen"); - changePixel(pixel,"sandboxels_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (Math.random() > 0.75 && !isEmpty(pixel.x+1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - newPixel.dtemp = pixel.dtemp; - changePixel(newPixel,"steam_screen"); - changePixel(pixel,"sandboxels_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - else if (Math.random() > 0.5 && !isEmpty(pixel.x-1,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - newPixel.dtemp = pixel.dtemp; - changePixel(newPixel,"steam_screen"); - changePixel(pixel,"sandboxels_screen"); - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "sand_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - if (pixel.dtemp < 100) { changePixel(pixel,"water_screen") } - }, - state: "solid", - density: 1200, -}, - -elements.body_screen = { - color: ["#A8A7AB","#878689"], - name:"screen", - hidden:true, - behavior: [ - "XX|CH:sandboxels_screen>blood_screen%0.1|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","body"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (!isEmpty(pixel.x,pixel.y-1,true) && pixelMap[pixel.x][pixel.y-1].element === "head_screen") { - var headPixel = pixelMap[pixel.x][pixel.y-1] - if (!isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1] - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"body_screen") - newPixel.dtemp = pixel.dtemp - changePixel(pixel,"head_screen") - pixel.dtemp = headPixel.dtemp - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2) - pixel.dtemp = newPixel.dtemp - } - } - else if (Math.random() < 0.01 && !isEmpty(pixel.x+1,pixel.y,true) && !isEmpty(pixel.x+1,pixel.y-1,true)) { - var newPixel = pixelMap[pixel.x+1][pixel.y]; - var newHeadPixel = pixelMap[pixel.x+1][pixel.y-1]; - if (newPixel.element === "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { - changePixel(pixel,"sandboxels_screen"); - changePixel(headPixel,"sandboxels_screen"); - changePixel(newPixel,"body_screen"); - changePixel(newHeadPixel,"head_screen"); - newPixel.dtemp = pixel.dtemp; - newHeadPixel.dtemp = headPixel.dtemp; - pixel.dtemp = 0; - headPixel.dtemp = 0; - } - } - else if (Math.random() < 0.01 && !isEmpty(pixel.x-1,pixel.y,true) && !isEmpty(pixel.x-1,pixel.y-1,true)) { - var newPixel = pixelMap[pixel.x-1][pixel.y]; - var newHeadPixel = pixelMap[pixel.x-1][pixel.y-1]; - if (newPixel.element === "sandboxels_screen" && newHeadPixel.element === "sandboxels_screen") { - changePixel(pixel,"sandboxels_screen"); - changePixel(headPixel,"sandboxels_screen"); - changePixel(newPixel,"body_screen"); - changePixel(newHeadPixel,"head_screen"); - newPixel.dtemp = pixel.dtemp; - newHeadPixel.dtemp = headPixel.dtemp; - pixel.dtemp = 0; - headPixel.dtemp = 0; - } - } - if (!isEmpty(pixel.x,pixel.y-2,true) && pixelMap[pixel.x][pixel.y-2].element === "head_screen") { - changePixel(pixelMap[pixel.x][pixel.y-2],"sandboxels_screen"); - } - } - else if (!isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - changePixel(newPixel,"body_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - }, -}, - -elements.head_screen = { - color: ["#46433F","#47443C","#4D483D"], - name:"screen", - hidden:true, - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","head"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (!isEmpty(pixel.x,pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "sandboxels_screen") { - if (Math.random() < 0.1) { - changePixel(newPixel,"blood_screen"); - newPixel.dtemp = pixel.dtemp; - } - else { - changePixel(newPixel,"head_screen"); - newPixel.dtemp = pixel.dtemp; - changePixel(pixel,"sandboxels_screen"); - pixel.dtemp = 0; - } - } - else if (newPixel.element === "water_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "blood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "ice_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "steam_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "wood_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "paper_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "saw_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "cellulose_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - else if (newPixel.element === "rock_screen") { - newPixel.dtemp = ((pixel.dtemp + newPixel.dtemp) / 2); - pixel.dtemp = newPixel.dtemp; - } - } - }, -}, - -elements.ice_screen = { - name:"screen", - hidden:true, - color: "#b2daeb", - behavior: behaviors.WALL, - properties: { - dtemp: 0, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","ice"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - tick: function(pixel) { - if (pixel.dtemp > 5) { changePixel(pixel,"water_screen") } - }, - state: "solid", - density: 1200, -}, - -elements.wood_screen = { - name:"screen", - hidden:true, - color: "#a0522d", - behavior: behaviors.WALL, - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","wood"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - state: "solid", - density: 1200, -}, - -elements.paper_screen = { - name:"screen", - hidden:true, - color: "#f0f0f0", - behavior: behaviors.WALL, - properties: { - dtemp: 20, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","paper"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - state: "solid", - density: 1200, -}, - -elements.wall_screen = { - name:"screen", - hidden:true, - color: "#808080", - behavior: behaviors.WALL, - properties: { - dtemp: 0, - }, - tempHigh: 1500, - stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], - conduct: 1, - breakInto: ["glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","glass_shard","concrete"], - tempLow: -45, - stateLow: "sandboxels_screen_off", - category: "simulation", - state: "solid", - density: 1200, -}, - -elements.simulated_sand = { - color: "#e6d577", - behavior: [ - "CH:sandboxels_screen>sand_screen|CH:sandboxels_screen>sand_screen|CH:sandboxels_screen>sand_screen", - "CH:sandboxels_screen>sand_screen|CH:sandboxels_screen>sand_screen|CH:sandboxels_screen>sand_screen", - "CH:sandboxels_screen>sand_screen|CH:sandboxels_screen>sand_screen|CH:sandboxels_screen>sand_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"sand_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on screen to place simulated sand." -}, - -elements.simulated_rock = { - color: ["#808080","#4f4f4f","#949494"], - behavior: [ - "CH:sandboxels_screen>rock_screen|CH:sandboxels_screen>rock_screen|CH:sandboxels_screen>rock_screen", - "CH:sandboxels_screen>rock_screen|CH:sandboxels_screen>rock_screen|CH:sandboxels_screen>rock_screen", - "CH:sandboxels_screen>rock_screen|CH:sandboxels_screen>rock_screen|CH:sandboxels_screen>rock_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"rock_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on screen to place simulated sand." -}, - -elements.simulated_water = { - color: "#2167ff", - behavior: [ - "CH:sandboxels_screen>water_screen|CH:sandboxels_screen>water_screen|CH:sandboxels_screen>water_screen", - "CH:sandboxels_screen>water_screen|CH:sandboxels_screen>water_screen|CH:sandboxels_screen>water_screen", - "CH:sandboxels_screen>water_screen|CH:sandboxels_screen>water_screen|CH:sandboxels_screen>water_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"water_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated water." -}, - -elements.simulated_ice = { - color: "#b2daeb", - behavior: [ - "CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen", - "CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen", - "CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"ice_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated ice." -}, - -elements.simulated_steam = { - color: "#abd6ff", - behavior: [ - "CH:sandboxels_screen>steam_screen|CH:sandboxels_screen>steam_screen|CH:sandboxels_screen>steam_screen", - "CH:sandboxels_screen>steam_screen|CH:sandboxels_screen>steam_screen|CH:sandboxels_screen>steam_screen", - "CH:sandboxels_screen>steam_screen|CH:sandboxels_screen>steam_screen|CH:sandboxels_screen>steam_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"steam_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated steam." -}, - -elements.simulated_blood = { - color: ["#ff0000","#ee0000"], - behavior: [ - "CH:sandboxels_screen>blood_screen|CH:sandboxels_screen>blood_screen|CH:sandboxels_screen>blood_screen", - "CH:sandboxels_screen>blood_screen|CH:sandboxels_screen>blood_screen|CH:sandboxels_screen>blood_screen", - "CH:sandboxels_screen>blood_screen|CH:sandboxels_screen>blood_screen|CH:sandboxels_screen>blood_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"blood_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated blood." -}, - -elements.simulated_sawdust = { - color: ["#dec150","#c7b15a"], - behavior: [ - "CH:sandboxels_screen>saw_screen|CH:sandboxels_screen>saw_screen|CH:sandboxels_screen>saw_screen", - "CH:sandboxels_screen>saw_screen|CH:sandboxels_screen>saw_screen|CH:sandboxels_screen>saw_screen", - "CH:sandboxels_screen>saw_screen|CH:sandboxels_screen>saw_screen|CH:sandboxels_screen>saw_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"saw_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on screen to place simulated sawdust." -}, - -elements.simulated_wood = { - color: "#a0522d", - behavior: [ - "CH:sandboxels_screen>wood_screen|CH:sandboxels_screen>wood_screen|CH:sandboxels_screen>wood_screen", - "CH:sandboxels_screen>wood_screen|CH:sandboxels_screen>wood_screen|CH:sandboxels_screen>wood_screen", - "CH:sandboxels_screen>wood_screen|CH:sandboxels_screen>wood_screen|CH:sandboxels_screen>wood_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"wood_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated wood." -}, - -elements.simulated_paper = { - color: "#f0f0f0", - behavior: [ - "CH:sandboxels_screen>paper_screen|CH:sandboxels_screen>paper_screen|CH:sandboxels_screen>paper_screen", - "CH:sandboxels_screen>paper_screen|CH:sandboxels_screen>paper_screen|CH:sandboxels_screen>paper_screen", - "CH:sandboxels_screen>paper_screen|CH:sandboxels_screen>paper_screen|CH:sandboxels_screen>paper_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"paper_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated paper." -}, - -elements.simulated_wall = { - color: "#808080", - behavior: [ - "CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen", - "CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen", - "CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen|CH:sandboxels_screen>ice_screen", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sandboxels_screen.id) { - changePixel(pixel,"wall_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to place simulated wall." -}, - -elements.simulated_heat = { - color: "#ff0000", - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sand_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.rock_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.saw_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.water_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.cellulose_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.blood_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.steam_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.ice_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.wood_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.paper_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.head_screen.id) { - pixel.dtemp += 1 - } - else if (elements[pixel.element].id === elements.body_screen.id) { - pixel.dtemp += 1 - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to heat simulated elements." -}, - -elements.simulated_cool = { - color: "#0000ff", - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sand_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.rock_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.saw_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.water_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.cellulose_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.blood_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.steam_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.ice_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.wood_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.paper_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.head_screen.id) { - pixel.dtemp -= 1 - } - else if (elements[pixel.element].id === elements.body_screen.id) { - pixel.dtemp -= 1 - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to cool simulated elements." -}, - -elements.simulated_roomtemp = { - color: "#b1c96d", - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sand_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.rock_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.saw_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.water_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.cellulose_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.blood_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.steam_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.ice_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.wood_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.paper_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.head_screen.id) { - pixel.dtemp = 20 - } - else if (elements[pixel.element].id === elements.body_screen.id) { - pixel.dtemp = 20 - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to make simulated elements room temperature." -}, - -elements.simulated_smash = { - color: ["#666666","#888888","#666666"], - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.rock_screen.id) { - changePixel(pixel,"sand_screen"); - } - else if (elements[pixel.element].id === elements.wood_screen.id) { - changePixel(pixel,"saw_screen"); - } - else if (elements[pixel.element].id === elements.head_screen.id) { - changePixel(pixel,"blood_screen"); - } - else if (elements[pixel.element].id === elements.body_screen.id) { - changePixel(pixel,"blood_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to smash simulated elements." -}, - -elements.simulated_erase = { - color: "#fdb5ff", - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - tool: function(pixel) { - if (elements[pixel.element].id === elements.sand_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.rock_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.saw_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.water_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.cellulose_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.blood_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.steam_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.ice_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.wood_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.paper_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.wall_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.head_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - else if (elements[pixel.element].id === elements.body_screen.id) { - changePixel(pixel,"sandboxels_screen"); - } - }, - insulate:true, - canPlace: false, - category: "simulation", - desc: "Use on a screen to erase simulated elements." -}; + desc: "digitalizes elements." +} if (!elements.malware.reactions) { elements.malware.reactions = {} } elements.malware.reactions.sandboxels_screen = { "elem2": ["sand_screen","sandboxels_screen_off","sandboxels_screen_off","malware"] };