elements.rad_fluid = { behavior: behaviors.LIQUID, category: "liquids", density: 1500, state: "liquid", emit: true } elements.rad_fluid.color = elements.radiation.color; elements.rad_fluid.reactions = elements.radiation.reactions; elements.time_reverse = { color: "#ffffff", perTick: function() { pixelTicks -= 2; }, rotatable: true, category: "special", canPlace: false, } elements.steam_train = { color: "#DFDFDF", behavior: [ "XX|CR:smoke|XX", "BO AND M1|XX|CR:smoke", "XX|CR:smoke|XX" ], category: "gases", density: 99999, state: "gas", } elements.polish = { color: "#aba593", tool: function(pixel) { if (elements.polish.reactions[pixel.element] && Math.random()<0.25) { var r = elements.polish.reactions[pixel.element]; var color2 = r.color2; if (color2 !== undefined) { if (Array.isArray(color2)) { color2 = color2[Math.floor(Math.random()*color2.length)]; } var rgb = hexToRGB(color2); pixel.color = "rgb("+rgb.r+","+rgb.g+","+rgb.b+")"; } } }, behavior: [ "M2|M1|M2", "M1|DL%10|M1", "M2|M1|M2" ], reactions: { "wood": { color2:"#872b00" }, "glass": { color2:"#526158" }, }, burn: 100, burnTime: 2, state: "gas", canPlace: true, category: "gases", stain: -0.5 } window.addEventListener("load", function() { eLists.FOOD = []; for (var element in elements) { if (elements[element].isFood) { eLists.FOOD.push(element); } } }) elements.food = { color: ["#359100","#74b332","#b9d461","#dede7a"], tick: function(pixel) { // Choose randomly from eLists.SEEDS changePixel(pixel,eLists.FOOD[Math.floor(Math.random()*eLists.FOOD.length)]); }, category: "food" } elements.liquid = { behavior: [ "XX|XX|XX", "M2|XX|M2", "M1|M1|M1" ], category: "special" } elements.gas = { behavior: [ "M1|M1|M1", "M1|XX|M1", "M1|M1|M1" ], state: "gas", category: "special" } elements.liquid_gas = { behavior: [ "M1%25|M1%25|M1%25", "M2|XX|M2", "M1|M1|M1" ], state: "gas", category: "special" } elements.big_behavior = { behavior: [ "CR:wood|CR:wood|CR:wood|CR:wood|CR:wood", "CR:wood|XX|XX|XX|CR:wood", "CR:wood|XX|XX|XX|CR:wood", "CR:wood|XX|XX|XX|CR:wood", "CR:wood|CR:wood|CR:wood|CR:wood|CR:wood", ], category: "special" } /* elements.small_behavior = { behavior: [ "CR:wood|CR:wood|CH:wood|CR:wood|CR:wood" ], category: "special" } elements.big_behavior_del = { behavior: [ "CR:wood|CR:wood|CR:wood|CR:wood|CR:wood", "CR:wood|XX|XX|XX|CR:wood", "CR:wood|XX|DL|XX|CR:wood", "CR:wood|XX|XX|XX|CR:wood", "CR:wood|CR:wood|CR:wood|CR:wood|CR:wood", ], category: "special" } elements.odd_behavior = { behavior: [ "CR:wood|CR:wood|CR:wood|CR:wood", "CR:wood|XX|XX|CR:wood", "CR:wood|XX|XX|CR:wood", "CR:wood|CR:wood|CR:wood|CR:wood", ], category: "special" } elements.big_sponge = { behavior: [ "DL:water|DL:water|DL:water|DL:water|DL:water", "DL:water|DL:water|DL:water|DL:water|DL:water", "DL:water|DL:water|XX|DL:water|DL:water", "DL:water|DL:water|DL:water|DL:water|DL:water", "DL:water|DL:water|DL:water|DL:water|DL:water", ], category: "special" } */ elements.flipbook = { tick: function(pixel) { if (pixel.frame === undefined) { pixel.frame = 0; pixel.color = "#ffffff" } pixel["frame"+pixel.frame] = pixel.color; pixel.frame = (pixel.frame+1)%(pixel.frames || 10); pixel.color = pixel["frame"+pixel.frame] || "#ffffff"; }, category: "special" } elements.clone_fluid = { color: ["#d9d943","#c3c33a"], tick: function(pixel) { behaviors.LIQUID(pixel); // loop through adjacentCoords for (var i=0; i < adjacentCoords.length; i++) { var coords = adjacentCoords[i]; var x = pixel.x + coords[0]; var y = pixel.y + coords[1]; if (!isEmpty(x,y,true) && pixelMap[x][y].element !== "clone_fluid") { changePixel(pixel,pixelMap[x][y].element); } } }, category: "machines", state: "liquid", density: 1000 } // elements.tester = { // behavior: [ // "SM%5 AND MX|SM%5 AND MX|SM%5 AND MX", // "SM%5 AND MX|XX|SM%5 AND MX", // "SM%5 AND MX|SM%5 AND MX|SM%5 AND MX", // ], // category: "special" // } addCanvasLayer("devtests"); addCanvasLayer("devtests2"); canvasLayersPre.unshift(canvasLayers["devtests"]); devtestsCtx = canvasLayers["devtests"].getContext("2d"); devtestsCtx2 = canvasLayers["devtests2"].getContext("2d"); delete canvasLayers.devtests; delete canvasLayers.devtests2; viewInfo[9] = { // Blur name: "blur", pixel: viewInfo[1].pixel, post: function(ctx) { devtestsCtx.canvas.width = ctx.canvas.width; devtestsCtx.canvas.height = ctx.canvas.height; devtestsCtx.filter = "blur(80px)"; // Draw the blurred content on the canvas devtestsCtx.drawImage(canvasLayers["pixels"], 0, 0); devtestsCtx.filter = "none"; }, }; elements.fire.emit = true; elements.lightning.emit = 15; elements.electric.emit = true; elements.plasma.emit = true; elements.uranium.emit = 3; elements.uranium.emitColor = "#009800"; elements.rainbow.emit = true; elements.static.emit = true; elements.flash.emit = true; elements.cold_fire.emit = true; elements.blaster.emit = true; elements.ember.emit = true; elements.fw_ember.emit = 10; elements.bless.emit = true; elements.pop.emit = true; elements.explosion.emit = true; elements.n_explosion.emit = 10; elements.supernova.emit = 20; elements.midas_touch.emit = true; elements.fireball.emit = true; elements.sun.emit = 15; elements.light.emit = 3; elements.liquid_light.emit = true; elements.laser.emit = 3; elements.neutron.emit = 3; elements.proton.emit = 3; elements.radiation.emit = 3; elements.fallout.emit = 3; elements.rad_steam.emit = 2; elements.rad_steam.emitColor = "#6ad48c"; elements.rad_cloud.emit = 2; elements.rad_cloud.emitColor = "#009800"; elements.rad_glass.emit = 2; elements.rad_glass.emitColor = "#009800"; elements.rad_shard.emit = 2; elements.rad_shard.emitColor = "#009800"; elements.malware.emit = 2; elements.border.emit = 2; viewInfo[8] = { // Blur Glow (Emissive pixels only) name: "blurglow", pixel: viewInfo[1].pixel, effects: true, colorEffects: true, pre: function(ctx) { devtestsCtx2.canvas.width = ctx.canvas.width; devtestsCtx2.canvas.height = ctx.canvas.height; }, pixel: viewInfo[1].pixel, post: function(ctx) { devtestsCtx.canvas.width = ctx.canvas.width; devtestsCtx.canvas.height = ctx.canvas.height; devtestsCtx.filter = "blur(30px)"; // Draw the blurred content on the canvas devtestsCtx.drawImage(devtestsCtx2.canvas, 0, 0); devtestsCtx.filter = "none"; }, }; // viewInfo[7] = { // Pixelized Glow (Emissive pixels only) // name: "pixelglow", // pixel: viewInfo[1].pixel, // effects: true, // colorEffects: true, // pre: function(ctx) { // devtestsCtx2.canvas.width = width; // devtestsCtx2.canvas.height = height; // devtestsCtx.canvas.width = ctx.canvas.width; // devtestsCtx.canvas.height = ctx.canvas.height; // if (devtestsCtx.msImageSmoothingEnabled !== false) { // devtestsCtx.msImageSmoothingEnabled = false; // devtestsCtx.mozImageSmoothingEnabled = false; // devtestsCtx.webkitImageSmoothingEnabled = false; // devtestsCtx.imageSmoothingEnabled = false; // } // }, // pixel: viewInfo[1].pixel, // post: function(ctx) { // // devtestsCtx.canvas.width = ctx.canvas.width; // // devtestsCtx.canvas.height = ctx.canvas.height; // // devtestsCtx.filter = "blur(30px)"; // // Draw the blurred content on the canvas // devtestsCtx.filter = "blur(30px)"; // devtestsCtx.drawImage(devtestsCtx2.canvas, 0, 0, width, height, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height); // devtestsCtx.filter = "none"; // devtestsCtx.drawImage(devtestsCtx.canvas, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height, 0, 0, devtestsCtx.canvas.width, devtestsCtx.canvas.height); // }, // }; renderEachPixel(function(pixel,ctx) { if (view === 8) { if (elements[pixel.element].emit || pixel.emit || (elements[pixel.element].colorOn && pixel.charge)) { let a = (settings.textures !== 0) ? pixel.alpha : undefined; let d = elements[pixel.element].emit||true; if (d === true) d = 5; let r = Math.floor(d/2); drawSquare(devtestsCtx2,elements[pixel.element].emitColor||pixel.color,pixel.x-r,pixel.y-r,d,a); // viewInfo[1].pixel(pixel,devtestsCtx2); } if (pixel.charge && !elements[pixel.element].colorOn) { drawSquare(devtestsCtx2,"#ffff00",pixel.x-1,pixel.y-1,3); } } // else if (view === 7) { // let a = (settings.textures !== 0) ? pixel.alpha : undefined; // let d = elements[pixel.element].emit||true; // if (d === true) d = 5; // let r = Math.floor(d/2); // devtestsCtx2.fillStyle = pixel.color; // if (devtestsCtx2.globalAlpha !== a) { devtestsCtx2.globalAlpha = a; } // devtestsCtx2.fillRect(pixel.x-r, pixel.y-r, d, d); // } })