diff --git a/mods/sandboxels.js b/mods/sandboxels.js index b9d044ed..8f3aaf56 100644 --- a/mods/sandboxels.js +++ b/mods/sandboxels.js @@ -63,7 +63,9 @@ elements.sand_screen = { 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"); @@ -71,26 +73,29 @@ elements.sand_screen = { 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 === "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,"sand_screen"); - - changePixel(pixel,"sandboxels_screen"); - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"sand_screen"); - pixel.dtemp = newPixel.dtemp; newPixel.dtemp = pixel.dtemp; changePixel(pixel,"sandboxels_screen"); - } - } - 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"); - - changePixel(pixel,"sandboxels_screen"); + pixel.dtemp = 0; } else if (newPixel.element === "water_screen") { changePixel(newPixel,"sand_screen"); @@ -98,6 +103,53 @@ elements.sand_screen = { 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 === "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 === "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 === "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; + } } } }, @@ -129,7 +181,9 @@ elements.rock_screen = { 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"); @@ -137,26 +191,29 @@ elements.rock_screen = { 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 === "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,"rock_screen"); - - changePixel(pixel,"sandboxels_screen"); - } - else if (newPixel.element === "water_screen") { - changePixel(newPixel,"rock_screen"); - pixel.dtemp = newPixel.dtemp; newPixel.dtemp = pixel.dtemp; changePixel(pixel,"sandboxels_screen"); - } - } - 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"); - - changePixel(pixel,"sandboxels_screen"); + pixel.dtemp = 0; } else if (newPixel.element === "water_screen") { changePixel(newPixel,"rock_screen"); @@ -164,6 +221,53 @@ elements.rock_screen = { 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 === "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 === "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 === "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; + } } } }, @@ -195,22 +299,74 @@ elements.water_screen = { 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 === "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 === "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 === "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; } } } @@ -218,17 +374,176 @@ elements.water_screen = { 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 === "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 === "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 < 1) { changePixel(pixel,"ice_screen") } + 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","water"], + tempLow: -45, + stateLow: "sandboxels_screen_off", + category: "digital", + 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 === "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 === "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 === "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 === "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, @@ -250,7 +565,7 @@ elements.ice_screen = { stateLow: "sandboxels_screen_off", category: "digital", tick: function(pixel) { - if (pixel.dtemp > 0) { changePixel(pixel,"water_screen") } + if (pixel.dtemp > 5) { changePixel(pixel,"water_screen") } }, state: "solid", density: 1200, @@ -328,6 +643,24 @@ elements.digital_ice = { desc: "Use on a screen to place digital ice." }, +elements.digital_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: "digital", + desc: "Use on a screen to place digital ice." +}, + elements.digital_heat = { color: "#ff0000", behavior: [ @@ -337,16 +670,19 @@ elements.digital_heat = { ], tool: function(pixel) { if (elements[pixel.element].id === elements.sand_screen.id) { - pixel.dtemp += 2 + pixel.dtemp += 1 } else if (elements[pixel.element].id === elements.rock_screen.id) { - pixel.dtemp += 2 + pixel.dtemp += 1 } else if (elements[pixel.element].id === elements.water_screen.id) { - pixel.dtemp += 2 + 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 += 2 + pixel.dtemp += 1 } }, insulate:true, @@ -364,16 +700,19 @@ elements.digital_cool = { ], tool: function(pixel) { if (elements[pixel.element].id === elements.sand_screen.id) { - pixel.dtemp -= 2 + pixel.dtemp -= 1 } else if (elements[pixel.element].id === elements.rock_screen.id) { - pixel.dtemp -= 2 + pixel.dtemp -= 1 } else if (elements[pixel.element].id === elements.water_screen.id) { - pixel.dtemp -= 2 + 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 -= 2 + pixel.dtemp -= 1 } }, insulate:true, @@ -382,6 +721,36 @@ elements.digital_cool = { desc: "Use on a screen to cool digital elements." }, +elements.digital_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.water_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 + } + }, + insulate:true, + canPlace: false, + category: "digital", + desc: "Use on a screen to make digital elements room temperature." +}, + elements.digital_smash = { color: ["#666666","#888888","#666666"], behavior: [ @@ -399,4 +768,11 @@ elements.digital_smash = { category: "digital", desc: "Use on a screen to smash digital elements." }; - + +if (!elements.malware.reactions) { elements.malware.reactions = {} } + elements.malware.reactions.sandboxels_screen = { "elem2": ["sand_screen","sandboxels_screen_off",null], chance:0.1 }; + elements.malware.reactions.sand_screen = { "elem2": ["ice_screen","sandboxels_screen_off",null], chance:0.1 }; + elements.malware.reactions.rock_screen = { "elem2": ["water_screen","sandboxels_screen_off",null], chance:0.1 }; + elements.malware.reactions.water_screen = { "elem2": ["steam_screen","sandboxels_screen_off",null], chance:0.1 }; + elements.malware.reactions.steam_screen = { "elem2": ["rock_screen","sandboxels_screen_off",null], chance:0.1 }; + elements.malware.reactions.ice_screen = { "elem2": ["sand_screen","sandboxels_screen_off",null], chance:0.1 };