diff --git a/mod-list.html b/mod-list.html
index 9f4f7a9e..3424c33a 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -269,6 +269,7 @@
| Food & Cooking |
| aChefsDream_beta.js | Beta testing for aChefsDream. The code can be found on GitHub | SquareScreamYT |
+| aChefsDream2.js | The sequel to aChefsDream.js, with brand new elements and tools | SquareScreamYT |
| aChefsDream.js | More foods, animals, tools, and other cooking items. See the YouTube Playlist for updates | SquareScreamYT |
| bananas.js | Adds bananas and banana plants | Alice |
| CherrySoda.js | Adds 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 });
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",
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
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"] };
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;