diff --git a/fast_lightmap.js b/fast_lightmap.js new file mode 100644 index 00000000..58cd9553 --- /dev/null +++ b/fast_lightmap.js @@ -0,0 +1,285 @@ +// Redbirdly's Mod that adds a better light system +// this is the faster version of lightmap.js (although lower quality) + +let lightmap = []; +let nextLightmap = []; +let lightmapWidth, lightmapHeight; +let pixelSizeQuarter = pixelSizeHalf / 2; +let lightmapScale = 3; + +// Define RGB colors +let lightColor = [255, 223, 186]; +let sunColor = [255*8, 210*8, 26*8]; +let lampColor = [255*4, 223*4, 186*4]; +let laserColor = [255, 0, 0]; +let ledRColor = [255, 0, 0]; +let ledGColor = [0, 255, 0]; +let ledBColor = [0, 0, 255]; +let fireColor = [255, 69, 0]; +let plasmaColor = [160, 69, 255]; +let coldFireColor = [0, 191, 255]; +let magmaColor = [255, 140, 0]; +let neonColor = [255*2, 60*2, 10*2]; + +function initializeLightmap(width, height) { + lightmapWidth = Math.ceil(width / lightmapScale); + lightmapHeight = Math.ceil(height / lightmapScale); + + for (let y = 0; y < lightmapHeight; y++) { + lightmap[y] = []; + nextLightmap[y] = []; + for (let x = 0; x < lightmapWidth; x++) { + lightmap[y][x] = { color: [0, 0, 0] }; + nextLightmap[y][x] = { color: [0, 0, 0] }; + } + } +} + +function deepCopy(source, target) { + for (let y = 0; y < source.length; y++) { + target[y] = []; + for (let x = 0; x < source[y].length; x++) { + target[y][x] = { ...source[y][x] }; + } + } +} + +function propagateLightmap() { + if (!lightmap || !lightmap[0]) { return; } + let width = lightmap[0].length; + let height = lightmap.length; + + let neighbors = [ + { dx: 1, dy: 0 }, + { dx: -1, dy: 0 }, + { dx: 0, dy: 1 }, + { dx: 0, dy: -1 }, + ]; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let totalColor = [0, 0, 0]; + let neighborCount = 0; + neighbors.forEach(({ dx, dy }) => { + let nx = x + dx; + let ny = y + dy; + if (nx >= 0 && ny >= 0 && nx < width && ny < height) { + totalColor[0] += lightmap[ny][nx].color[0]; + totalColor[1] += lightmap[ny][nx].color[1]; + totalColor[2] += lightmap[ny][nx].color[2]; + neighborCount++; + } + }); + nextLightmap[y][x] = { + color: [ + Math.min(Math.max(0, totalColor[0] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[1] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[2] / neighborCount * 0.8), 255*8) + ] + }; + } + } + + deepCopy(nextLightmap, lightmap); +} + +function rgbToHsv(r, g, b) { + r /= 255, g /= 255, b /= 255; + let max = Math.max(r, g, b), min = Math.min(r, g, b); + let h, s, v = max; + + let d = max - min; + s = max === 0 ? 0 : d / max; + + if (max === min) { + h = 0; + } else { + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + + return [h, s, v]; +} + +function hsvToRgb(h, s, v) { + let r, g, b; + + let i = Math.floor(h * 6); + let f = h * 6 - i; + let p = v * (1 - s); + let q = v * (1 - f * s); + let t = v * (1 - (1 - f) * s); + + switch (i % 6) { + case 0: r = v, g = t, b = p; break; + case 1: r = q, g = v, b = p; break; + case 2: r = p, g = v, b = t; break; + case 3: r = p, g = q, b = v; break; + case 4: r = t, g = p, b = v; break; + case 5: r = v, g = p, b = q; break; + } + + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; +} + +function renderLightmap() { + if (!canvas) { return; } + if (!lightmap || !lightmap[0]) { return; } + let context = canvas.getContext('2d'); + let width = lightmap[0].length; + let height = lightmap.length; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let { color } = lightmap[y][x]; + let [r, g, b] = color; + if (r > 0 || g > 0 || b > 0) { + let [h, s, v] = rgbToHsv(r, g, b); + let newColor = hsvToRgb(h, s, 1); + let alpha = v; + + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha*0.4})`; + context.fillRect( + x * pixelSize * lightmapScale, + y * pixelSize * lightmapScale, + pixelSize * lightmapScale, + pixelSize * lightmapScale + ); + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`; + context.fillRect( + (x * pixelSize - pixelSizeHalf) * lightmapScale, + (y * pixelSize - pixelSizeHalf) * lightmapScale, + pixelSize * lightmapScale * 2, + pixelSize * lightmapScale * 2 + ); + } + } + } +} + +elements.sun.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: sunColor }; +}; + +let originalLightTick = elements.light.tick; +elements.light.tick = function(pixel) { + originalLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +let originalLiquidLightTick = elements.liquid_light.tick; +elements.liquid_light.tick = function(pixel) { + originalLiquidLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +elements.magma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.neon.tick = function(pixel) { + if (!pixel.charge || pixel.charge <= 0) {return;} + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: neonColor }; +}; + +elements.light_bulb.behaviorOn = null +elements.light_bulb.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 10;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lampColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_r.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledRColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_g.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledGColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_b.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledBColor }; + } + pixel.lightIntensity -= 1; +}; + +let originalLaserTick = elements.laser.tick; +elements.laser.tick = function(pixel) { + originalLaserTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: laserColor }; +}; + +let originalFireTick2 = elements.fire.tick; +elements.fire.tick = function(pixel) { + originalFireTick2(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.cold_fire.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: coldFireColor }; +}; + +elements.plasma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: plasmaColor }; +}; + +// Wait for loading +// if it loads too soon then width will be undefined +setTimeout(() => { initializeLightmap(width, height); }, 700); + +// Add code to functions instead of replacing them +let originalTick = tick; +tick = function() { + originalTick(); + if (!paused) {propagateLightmap();} +}; +// Even after updating tick(), setInterval still uses the old tick(), reset setInterval +resetInterval(tps); + +let originalDrawPixels = drawPixels; +drawPixels = function(forceTick = false) { + originalDrawPixels(forceTick); + renderLightmap(); +}; diff --git a/lightmap.js b/lightmap.js new file mode 100644 index 00000000..93ddcdf0 --- /dev/null +++ b/lightmap.js @@ -0,0 +1,285 @@ +// Redbirdly's Mod that adds a better light system +// if the mod is too laggy, use fast_lightmap.js + +let lightmap = []; +let nextLightmap = []; +let lightmapWidth, lightmapHeight; +let pixelSizeQuarter = pixelSizeHalf / 2; +let lightmapScale = 2; + +// Define RGB colors +let lightColor = [255, 223, 186]; +let sunColor = [255*8, 210*8, 26*8]; +let lampColor = [255*4, 223*4, 186*4]; +let laserColor = [255, 0, 0]; +let ledRColor = [255, 0, 0]; +let ledGColor = [0, 255, 0]; +let ledBColor = [0, 0, 255]; +let fireColor = [255, 69, 0]; +let plasmaColor = [160, 69, 255]; +let coldFireColor = [0, 191, 255]; +let magmaColor = [255, 140, 0]; +let neonColor = [255*2, 60*2, 10*2]; + +function initializeLightmap(width, height) { + lightmapWidth = Math.ceil(width / lightmapScale); + lightmapHeight = Math.ceil(height / lightmapScale); + + for (let y = 0; y < lightmapHeight; y++) { + lightmap[y] = []; + nextLightmap[y] = []; + for (let x = 0; x < lightmapWidth; x++) { + lightmap[y][x] = { color: [0, 0, 0] }; + nextLightmap[y][x] = { color: [0, 0, 0] }; + } + } +} + +function deepCopy(source, target) { + for (let y = 0; y < source.length; y++) { + target[y] = []; + for (let x = 0; x < source[y].length; x++) { + target[y][x] = { ...source[y][x] }; + } + } +} + +function propagateLightmap() { + if (!lightmap || !lightmap[0]) { return; } + let width = lightmap[0].length; + let height = lightmap.length; + + let neighbors = [ + { dx: 1, dy: 0 }, + { dx: -1, dy: 0 }, + { dx: 0, dy: 1 }, + { dx: 0, dy: -1 }, + ]; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let totalColor = [0, 0, 0]; + let neighborCount = 0; + neighbors.forEach(({ dx, dy }) => { + let nx = x + dx; + let ny = y + dy; + if (nx >= 0 && ny >= 0 && nx < width && ny < height) { + totalColor[0] += lightmap[ny][nx].color[0]; + totalColor[1] += lightmap[ny][nx].color[1]; + totalColor[2] += lightmap[ny][nx].color[2]; + neighborCount++; + } + }); + nextLightmap[y][x] = { + color: [ + Math.min(Math.max(0, totalColor[0] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[1] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[2] / neighborCount * 0.8), 255*8) + ] + }; + } + } + + deepCopy(nextLightmap, lightmap); +} + +function rgbToHsv(r, g, b) { + r /= 255, g /= 255, b /= 255; + let max = Math.max(r, g, b), min = Math.min(r, g, b); + let h, s, v = max; + + let d = max - min; + s = max === 0 ? 0 : d / max; + + if (max === min) { + h = 0; + } else { + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + + return [h, s, v]; +} + +function hsvToRgb(h, s, v) { + let r, g, b; + + let i = Math.floor(h * 6); + let f = h * 6 - i; + let p = v * (1 - s); + let q = v * (1 - f * s); + let t = v * (1 - (1 - f) * s); + + switch (i % 6) { + case 0: r = v, g = t, b = p; break; + case 1: r = q, g = v, b = p; break; + case 2: r = p, g = v, b = t; break; + case 3: r = p, g = q, b = v; break; + case 4: r = t, g = p, b = v; break; + case 5: r = v, g = p, b = q; break; + } + + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; +} + +function renderLightmap() { + if (!canvas) { return; } + if (!lightmap || !lightmap[0]) { return; } + let context = canvas.getContext('2d'); + let width = lightmap[0].length; + let height = lightmap.length; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let { color } = lightmap[y][x]; + let [r, g, b] = color; + if (r > 0 || g > 0 || b > 0) { + let [h, s, v] = rgbToHsv(r, g, b); + let newColor = hsvToRgb(h, s, 1); + let alpha = v; + + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha*0.4})`; + context.fillRect( + x * pixelSize * lightmapScale, + y * pixelSize * lightmapScale, + pixelSize * lightmapScale, + pixelSize * lightmapScale + ); + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`; + context.fillRect( + (x * pixelSize - pixelSizeHalf) * lightmapScale, + (y * pixelSize - pixelSizeHalf) * lightmapScale, + pixelSize * lightmapScale * 2, + pixelSize * lightmapScale * 2 + ); + } + } + } +} + +elements.sun.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: sunColor }; +}; + +let originalLightTick = elements.light.tick; +elements.light.tick = function(pixel) { + originalLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +let originalLiquidLightTick = elements.liquid_light.tick; +elements.liquid_light.tick = function(pixel) { + originalLiquidLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +elements.magma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.neon.tick = function(pixel) { + if (!pixel.charge || pixel.charge <= 0) {return;} + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: neonColor }; +}; + +elements.light_bulb.behaviorOn = null +elements.light_bulb.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 10;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lampColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_r.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledRColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_g.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledGColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_b.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledBColor }; + } + pixel.lightIntensity -= 1; +}; + +let originalLaserTick = elements.laser.tick; +elements.laser.tick = function(pixel) { + originalLaserTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: laserColor }; +}; + +let originalFireTick2 = elements.fire.tick; +elements.fire.tick = function(pixel) { + originalFireTick2(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.cold_fire.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: coldFireColor }; +}; + +elements.plasma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: plasmaColor }; +}; + +// Wait for loading +// if it loads too soon then width will be undefined +setTimeout(() => { initializeLightmap(width, height); }, 700); + +// Add code to functions instead of replacing them +let originalTick = tick; +tick = function() { + originalTick(); + if (!paused) {propagateLightmap();} +}; +// Even after updating tick(), setInterval still uses the old tick(), reset setInterval +resetInterval(tps); + +let originalDrawPixels = drawPixels; +drawPixels = function(forceTick = false) { + originalDrawPixels(forceTick); + renderLightmap(); +}; diff --git a/mods/fast_lightmap.js b/mods/fast_lightmap.js new file mode 100644 index 00000000..58cd9553 --- /dev/null +++ b/mods/fast_lightmap.js @@ -0,0 +1,285 @@ +// Redbirdly's Mod that adds a better light system +// this is the faster version of lightmap.js (although lower quality) + +let lightmap = []; +let nextLightmap = []; +let lightmapWidth, lightmapHeight; +let pixelSizeQuarter = pixelSizeHalf / 2; +let lightmapScale = 3; + +// Define RGB colors +let lightColor = [255, 223, 186]; +let sunColor = [255*8, 210*8, 26*8]; +let lampColor = [255*4, 223*4, 186*4]; +let laserColor = [255, 0, 0]; +let ledRColor = [255, 0, 0]; +let ledGColor = [0, 255, 0]; +let ledBColor = [0, 0, 255]; +let fireColor = [255, 69, 0]; +let plasmaColor = [160, 69, 255]; +let coldFireColor = [0, 191, 255]; +let magmaColor = [255, 140, 0]; +let neonColor = [255*2, 60*2, 10*2]; + +function initializeLightmap(width, height) { + lightmapWidth = Math.ceil(width / lightmapScale); + lightmapHeight = Math.ceil(height / lightmapScale); + + for (let y = 0; y < lightmapHeight; y++) { + lightmap[y] = []; + nextLightmap[y] = []; + for (let x = 0; x < lightmapWidth; x++) { + lightmap[y][x] = { color: [0, 0, 0] }; + nextLightmap[y][x] = { color: [0, 0, 0] }; + } + } +} + +function deepCopy(source, target) { + for (let y = 0; y < source.length; y++) { + target[y] = []; + for (let x = 0; x < source[y].length; x++) { + target[y][x] = { ...source[y][x] }; + } + } +} + +function propagateLightmap() { + if (!lightmap || !lightmap[0]) { return; } + let width = lightmap[0].length; + let height = lightmap.length; + + let neighbors = [ + { dx: 1, dy: 0 }, + { dx: -1, dy: 0 }, + { dx: 0, dy: 1 }, + { dx: 0, dy: -1 }, + ]; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let totalColor = [0, 0, 0]; + let neighborCount = 0; + neighbors.forEach(({ dx, dy }) => { + let nx = x + dx; + let ny = y + dy; + if (nx >= 0 && ny >= 0 && nx < width && ny < height) { + totalColor[0] += lightmap[ny][nx].color[0]; + totalColor[1] += lightmap[ny][nx].color[1]; + totalColor[2] += lightmap[ny][nx].color[2]; + neighborCount++; + } + }); + nextLightmap[y][x] = { + color: [ + Math.min(Math.max(0, totalColor[0] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[1] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[2] / neighborCount * 0.8), 255*8) + ] + }; + } + } + + deepCopy(nextLightmap, lightmap); +} + +function rgbToHsv(r, g, b) { + r /= 255, g /= 255, b /= 255; + let max = Math.max(r, g, b), min = Math.min(r, g, b); + let h, s, v = max; + + let d = max - min; + s = max === 0 ? 0 : d / max; + + if (max === min) { + h = 0; + } else { + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + + return [h, s, v]; +} + +function hsvToRgb(h, s, v) { + let r, g, b; + + let i = Math.floor(h * 6); + let f = h * 6 - i; + let p = v * (1 - s); + let q = v * (1 - f * s); + let t = v * (1 - (1 - f) * s); + + switch (i % 6) { + case 0: r = v, g = t, b = p; break; + case 1: r = q, g = v, b = p; break; + case 2: r = p, g = v, b = t; break; + case 3: r = p, g = q, b = v; break; + case 4: r = t, g = p, b = v; break; + case 5: r = v, g = p, b = q; break; + } + + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; +} + +function renderLightmap() { + if (!canvas) { return; } + if (!lightmap || !lightmap[0]) { return; } + let context = canvas.getContext('2d'); + let width = lightmap[0].length; + let height = lightmap.length; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let { color } = lightmap[y][x]; + let [r, g, b] = color; + if (r > 0 || g > 0 || b > 0) { + let [h, s, v] = rgbToHsv(r, g, b); + let newColor = hsvToRgb(h, s, 1); + let alpha = v; + + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha*0.4})`; + context.fillRect( + x * pixelSize * lightmapScale, + y * pixelSize * lightmapScale, + pixelSize * lightmapScale, + pixelSize * lightmapScale + ); + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`; + context.fillRect( + (x * pixelSize - pixelSizeHalf) * lightmapScale, + (y * pixelSize - pixelSizeHalf) * lightmapScale, + pixelSize * lightmapScale * 2, + pixelSize * lightmapScale * 2 + ); + } + } + } +} + +elements.sun.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: sunColor }; +}; + +let originalLightTick = elements.light.tick; +elements.light.tick = function(pixel) { + originalLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +let originalLiquidLightTick = elements.liquid_light.tick; +elements.liquid_light.tick = function(pixel) { + originalLiquidLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +elements.magma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.neon.tick = function(pixel) { + if (!pixel.charge || pixel.charge <= 0) {return;} + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: neonColor }; +}; + +elements.light_bulb.behaviorOn = null +elements.light_bulb.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 10;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lampColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_r.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledRColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_g.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledGColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_b.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledBColor }; + } + pixel.lightIntensity -= 1; +}; + +let originalLaserTick = elements.laser.tick; +elements.laser.tick = function(pixel) { + originalLaserTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: laserColor }; +}; + +let originalFireTick2 = elements.fire.tick; +elements.fire.tick = function(pixel) { + originalFireTick2(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.cold_fire.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: coldFireColor }; +}; + +elements.plasma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: plasmaColor }; +}; + +// Wait for loading +// if it loads too soon then width will be undefined +setTimeout(() => { initializeLightmap(width, height); }, 700); + +// Add code to functions instead of replacing them +let originalTick = tick; +tick = function() { + originalTick(); + if (!paused) {propagateLightmap();} +}; +// Even after updating tick(), setInterval still uses the old tick(), reset setInterval +resetInterval(tps); + +let originalDrawPixels = drawPixels; +drawPixels = function(forceTick = false) { + originalDrawPixels(forceTick); + renderLightmap(); +}; diff --git a/mods/fossils.js b/mods/fossils.js index b6d2024e..d8e97c67 100644 --- a/mods/fossils.js +++ b/mods/fossils.js @@ -95,6 +95,39 @@ elements.human_fossil = { breakInto: ["rock","gravel","gravel","gravel","sand"], }; +elements.dino_fossil = { + color: ["#bbb3ae","#b4b4b4","#c0c0c0"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "M2%75|M1|M2%75", + ], + reactions: { + "water": {elem1: "wet_sand", chance: 0.00035}, + "salt_water": {elem1: "wet_sand", chance: 0.0005}, + "sugar_water": {elem1: "wet_sand", chance: 0.0004}, + "seltzer": {elem1: "wet_sand", chance: 0.0004}, + "dirty_water": {elem1: "wet_sand", chance: 0.0004}, + "soda": {elem1: "wet_sand", chance: 0.0004}, + "lichen": {elem1: "dirt", chance: 0.0025}, + "bone": {elem2: "fossil", chance: 0.000025}, + "bone_marrow": {elem2: "marrow_fossil", chance: 0.00002}, + "skull": {elem2: ["human_fossil","human_fossil","fossil"], chance: 0.000025}, + "wood": {elem2: "petrified_wood", chance: 0.000015}, + "tree_branch": {elem2: "petrified_wood", chance: 0.000015}, + "grape": {elem2: "juice", chance: 0.1, color2: "#291824"}, + "wheat": {elem2: "flour"}, + "primordial_soup": {elem1: "wet_sand", chance: 0.001} + }, + tempHigh: 950, + stateHigh: "magma", + category: "life", + state: "solid", + density: 2600, + hardness: 0.55, + breakInto: ["rock","gravel","gravel","gravel","sand"], +}; + elements.petrified_wood = { color: ["#4e4e3e","#464646","#52533a"], hidden:true, @@ -133,22 +166,22 @@ elements.skull = { "salt_water": { elem2:"broth", tempMin:70, color2:"#d7db69" }, "sugar_water": { elem2:"broth", tempMin:70, color2:"#d7db69" }, "seltzer": { elem2:"broth", tempMin:70, color2:"#d7db69" }, - "rock": { "elem1": "fossil", chance:0.00005 }, - "sand": { "elem1": "fossil", chance:0.000035 }, - "dirt": { "elem1": "fossil", chance:0.00003 }, - "tuff": { "elem1": "fossil", chance:0.00005 }, - "basalt": { "elem1": "fossil", chance:0.00004 }, - "mudstone": { "elem1": "fossil", chance:0.00004 }, - "packed_sand": { "elem1": "fossil", chance:0.00004 }, - "gravel": { "elem1": "fossil", chance:0.000035 }, - "clay": { "elem1": "fossil", chance:0.00003 }, - "clay_soil": { "elem1": "fossil", chance:0.00003 }, - "permafrost": { "elem1": "fossil", chance:0.000035 }, - "mulch": { "elem1": "fossil", chance:0.00003 }, - "ant_wall": { "elem1": "fossil", chance:0.00002 }, - "limestone": { "elem1": "fossil", chance:0.00005 }, - "quicklime": { "elem1": "fossil", chance:0.000045 }, - "slaked_lime": { "elem1": "fossil", chance:0.000035 }, + "rock": { "elem1": "human_fossil", chance:0.00005 }, + "sand": { "elem1": "human_fossil", chance:0.000035 }, + "dirt": { "elem1": "human_fossil", chance:0.00003 }, + "tuff": { "elem1": "human_fossil", chance:0.00005 }, + "basalt": { "elem1": "human_fossil", chance:0.00004 }, + "mudstone": { "elem1": "human_fossil", chance:0.00004 }, + "packed_sand": { "elem1": "human_fossil", chance:0.00004 }, + "gravel": { "elem1": "human_fossil", chance:0.000035 }, + "clay": { "elem1": "human_fossil", chance:0.00003 }, + "clay_soil": { "elem1": "human_fossil", chance:0.00003 }, + "permafrost": { "elem1": "human_fossil", chance:0.000035 }, + "mulch": { "elem1": "human_fossil", chance:0.00003 }, + "ant_wall": { "elem1": "human_fossil", chance:0.00002 }, + "limestone": { "elem1": "human_fossil", chance:0.00005 }, + "quicklime": { "elem1": "human_fossil", chance:0.000045 }, + "slaked_lime": { "elem1": "human_fossil", chance:0.000035 }, }, category:"life", tempHigh: 760, @@ -168,22 +201,22 @@ elements.dino_bones = { "salt_water": { elem2:"broth", tempMin:70 }, "sugar_water": { elem2:"broth", tempMin:70 }, "seltzer": { elem2:"broth", tempMin:70 }, - "rock": { "elem1": "fossil", chance:0.00005 }, - "sand": { "elem1": "fossil", chance:0.000035 }, - "dirt": { "elem1": "fossil", chance:0.00003 }, - "tuff": { "elem1": "fossil", chance:0.00005 }, - "basalt": { "elem1": "fossil", chance:0.00004 }, - "mudstone": { "elem1": "fossil", chance:0.00004 }, - "packed_sand": { "elem1": "fossil", chance:0.00004 }, - "gravel": { "elem1": "fossil", chance:0.000035 }, - "clay": { "elem1": "fossil", chance:0.00003 }, - "clay_soil": { "elem1": "fossil", chance:0.00003 }, - "permafrost": { "elem1": "fossil", chance:0.000035 }, - "mulch": { "elem1": "fossil", chance:0.00003 }, - "ant_wall": { "elem1": "fossil", chance:0.00002 }, - "limestone": { "elem1": "fossil", chance:0.00005 }, - "quicklime": { "elem1": "fossil", chance:0.000045 }, - "slaked_lime": { "elem1": "fossil", chance:0.000035 }, + "rock": { "elem1": "dino_fossil", chance:0.00005 }, + "sand": { "elem1": "dino_fossil", chance:0.000035 }, + "dirt": { "elem1": "dino_fossil", chance:0.00003 }, + "tuff": { "elem1": "dino_fossil", chance:0.00005 }, + "basalt": { "elem1": "dino_fossil", chance:0.00004 }, + "mudstone": { "elem1": "dino_fossil", chance:0.00004 }, + "packed_sand": { "elem1": "dino_fossil", chance:0.00004 }, + "gravel": { "elem1": "dino_fossil", chance:0.000035 }, + "clay": { "elem1": "dino_fossil", chance:0.00003 }, + "clay_soil": { "elem1": "dino_fossil", chance:0.00003 }, + "permafrost": { "elem1": "dino_fossil", chance:0.000035 }, + "mulch": { "elem1": "dino_fossil", chance:0.00003 }, + "ant_wall": { "elem1": "dino_fossil", chance:0.00002 }, + "limestone": { "elem1": "dino_fossil", chance:0.00005 }, + "quicklime": { "elem1": "dino_fossil", chance:0.000045 }, + "slaked_lime": { "elem1": "dino_fossil", chance:0.000035 }, }, category:"life", tempHigh: 760, @@ -220,10 +253,10 @@ elements.coal = { }, elements.bug_amber = { - color: "#ffc000", + color: ["#ffc000","#b67f18","#c86305","#cf7a19","#e4ae3a"], temp: 20, tempHigh: 345, - stateHigh: ["smoke","sap","sap","calcium","sugar"], + stateHigh: ["smoke","sap","sap","dead_bug","sap"], breakInto: [null,null,null,"dna","dna","sap","sap","sap","sap","sap","dead_bug"], category: "solids" }, @@ -232,7 +265,7 @@ elements.hive_amber = { color: "#ffc000", temp: 20, tempHigh: 345, - stateHigh: ["smoke","honey","honey","calcium","sugar"], + stateHigh: ["smoke","smoke","honey","honey","honey","dead_bug","dead_bug","sap"], breakInto: [null,"dna","dna","honey","honey","honey","honey","honey","sap","dead_bug",null,"dna","dna","honey","honey","honey","honey","honey","sap","dead_bug","bee"], category: "solids" }, @@ -257,11 +290,12 @@ elements.dinosaur = { density: 1500, conduct: 0.25, reactions: { - "bird": { elem2: [null,null,null,null,null,"feather"], chance: 0.3, func: behaviors.FEEDPIXEL }, + "bird": { elem2: [null,null,null,null,null,null,"blood","feather"], chance: 0.3, func: behaviors.FEEDPIXEL }, "head": { elem2: [null,null,null,null,null,null,null,"blood","blood","skull"], chance: 0.5, func: behaviors.FEEDPIXEL }, "body": { elem2: [null,null,null,null,null,null,"blood","blood","bone"], chance: 0.5, func: behaviors.FEEDPIXEL }, "plant": { elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL }, - "bone": { elem2: ["bone_marrow","blood",null], chance: 0.3, }, + "bone": { elem2: ["bone_marrow","blood","quicklime",null,null,null], chance: 0.3, }, + "skull": { elem2: ["bone_marrow","blood","quicklime",null,null,null], chance: 0.1, }, "bone_marrow": { elem2: ["blood","blood",null], chance: 0.3, func: behaviors.FEEDPIXEL }, "blood": { elem2: null, chance: 0.1, func: behaviors.FEEDPIXEL }, "meat": { elem2: null, chance: 0.5, func: behaviors.FEEDPIXEL }, @@ -269,6 +303,10 @@ elements.dinosaur = { "cured_meat": { elem2: null, chance: 0.4, func: behaviors.FEEDPIXEL }, "fly": { elem2: null, chance: 0.05, func: behaviors.FEEDPIXEL }, "ant": { elem2: null, chance: 0.05, func: behaviors.FEEDPIXEL }, + "worm": { elem2: null, chance: 0.05, func: behaviors.FEEDPIXEL }, + "wood": { elem2: "sawdust", chance: 0.04 }, + "glass": { elem2: "glass_shard", chance: 0.05 }, + "concrete": { elem2: "dust", chance: 0.03 }, } }; diff --git a/mods/jaydstuff.js b/mods/jaydstuff.js index 27d0311f..4a14dabe 100644 --- a/mods/jaydstuff.js +++ b/mods/jaydstuff.js @@ -1,4 +1,7 @@ //jaydstuff +//ooooo dependencies +if (!enabledMods.includes("mods/nousersthings.js")) { enabledMods.unshift("mods/nousersthings.js"); localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); alert("'nousersthings.js' is (not) a dependency for 'jaydstuff.js.js' and has been added. Please reload for it to take effect, also im dumb.") } +else { elements.super_raincloud = { color: "#0000ff", behavior: [ @@ -308,7 +311,7 @@ elements.ultimate_reset = { color: "#ff0000", behavior: [ "XX|XX|XX", - "XX|EX:10000>flash AND CR:ultimate_reset%0.01|XX", + "XX|EX:1000000000000000000000000000000000000000000000000>ultimate_reset,flash AND CR:ultimate_reset|XX", "XX|XX|XX", ], category: "tools", @@ -316,9 +319,320 @@ elements.ultimate_reset = { excludeRandom: true, cooldown: defaultCooldown }, +elements.ultimate_reset_2 = { + color: "#ff0000", + onSelect: function() { + for (let i = 0; i < 10e+20000000000000; i++) { + console.log("hi"); + } + }, + category: "tools", + state: "solid", + excludeRandom: true, + cooldown: defaultCooldown +},/* +elements.ultimate_reset_3 = { + color: "#ff0000", + behavior: Array(1000).fill(Array(1000).fill("CC:#")), + category: "tools", + state: "solid", + excludeRandom: true, + cooldown: defaultCooldown +},*/ +textures.transparency = [ + "wwwggg", + "wwwggg", + "wwwggg", + "gggwww", + "gggwww", + "gggwww" +] elements.Methionylthreonylthreonylglutaminylalrylglycylphenylalanylprolylvalylprolyylglycylarginylalanyllysylleucylthreonylglutamylleucylleucylvalyllysylalanutaminylvalylarginylvalylthreonylglycglutaminylglutamylglycylaspartylleucyylthreonylserylthreonylalanylglutamylglutaminylthreonylarginylisoleucylglunylglutaminylleucylprolylhistidyllysyylglutaminylserylprolylserylprolylisoonylserylprolylisoleucylarginylserylvtamylglycyltyrosylvalylalanylserylsercylarginyltyrosylglycylvalylglutaminyserylalanylseryltyrosylalanylalanylglulalanyllysylglutamylvalyllysylglutaminlanylalanylvalylalanylthreonylvalylvallalanylarginylvalylarginylglutamylproltamylglutaminylthreonylalanylglutaminyeonylalanylvalylhistidylisoleucylglutaglutaminylvalylarginyllysylglutamylalathreonyllysylvalylvalylvalylalanylalanlutaminylglutamylleucyllysylserylarginleucylthreonylthreonyllysylglutaminylgalylthreonylhistidylglutamylglutaminylylglutamyllysylthreonylphenylalanylvalylalanylalanyllysylalanyllysylglutamyloleucylserylglutamylglutamylisoleucylttaminylvalylthreonylglutaminylglutamylylthreonylarginyllysylthreonylvalylvalnylthreonylprolyllysylvalyllysylglutamlarginylglycylarginylglutamylglycylisolutamylglutaminylvalylglutaminylisoleuethionylarginyllysylglutamylalanylgluthreonylisoleucylalanylvalylalanylthreoutaminylglutamylthreonylisoleucylleucyonylmethionylalanylthreonylarginylglututaminylvalylthreonylhistidylglycyllyslalanylglutamylalanylvalylalanylthreonylglutaminylalanylarginylvalylarginylglycylhistidylleucylglutamylglutamylserthreonylthreonylleucylglutamyltyrosylgleucylserylalanylalanyllysylvalylalanynylprolylalanylserylglutamylprolylhistllysylprolylarginylvalylisoleucylglutanylhistidylisoleucyllysylthreonylthreohionylhistidylisoleucylserylserylglutaeonylaspartylleucylthreonylthreonylglulaspartyllysylarginylprolylarginylthrealanylthreonylvalylseryllysylisoleucylylhistidylglycyltyrosylglutamylalanylslisoleucylalanylthreonylleucylglutamineonylserylserylalanylglutaminyllysylisalanylprolylthreonylvalyllysylprolylsenylalanylglutamylprolylthreonylprolyllolylphenylalanylalanylaspartylthreonylerylglutamylalanylglycylvalylglutamylvlylserylisoleucylthreonylglycylthreonyylarginylphenylalanylglutamylvalylleucyllysylvalylthreonylglutamylthreonylalalylglutamylisoleucylprolylvalylthreonrylglycylleucyllysylasparaginylvalylthlutamylserylvalylthreonylleucylglutamycyltyrosylprolylserylprolylthreonylvallutamylaspartyltyrosylglutaminylisoleutylphenylalanylglutaminylisoleucylthreylisoleucylalanylarginylleucylmethionyylalanylalanylglutamylaspartylserylglyinylserylalanylvalylasparaginylglutamyonylserylcysteinyltyrosylleucylalanylvtamylphenylalanylglutamyllysylglutamylglutamyllysylphenylalanylthreonylthreoylalanylvalylglutamylserylarginylaspartylthreonylserylleucylthreonylglutamyllglycylglutamylprolylalanylalanylprolyyllysylprolylvalylvalylglutaminyllysyllvalylvalylphenylalanylglycylcysteinylnylprolyllysylprolylhistidylvalyltyroslylprolylleucylthreonylthreonylglycylttyrosylasparaginyllysylglutaminylthreoylvalylisoleucylserylmethionylthreonyllanylglycylglutamyltyrosylthreonylisolsylhistidylglycylglutamylthreonylseryllutamylglutamylalanylaspartyltyrosylglylglutaminylglutaminylglutamylmethionytaminylvalylthreonylalanylphenylalanylylvalylglycylglutamylthreonylalanylprorylglutamyltyrosylglutamyllysylglutamyinylalanylleucylisoleucylarginyllysylleonylvalylvalylvalylarginylthreonyltyrglutamylphenylalanylhistidylisoleucylsylarginylleucylisoleucyllysylglutamyliucylisoleucyllysylthreonylthreonylleucmylglutamylaspartylglycylglutamylglutalisoleucylserylglutamylserylglutamylallanylaspartylleucylarginylisoleucyllyslleucylglutamylglycylmethionylglycylvaeinyllysylmethionylserylglycyltyrosylpyltryptophyltyrosyllysylaspartylglycyllycylglutamylarginyltyrosylglutaminylmlutaminylaspartylglycylarginylalanylselvalylleucylprolylglutamylaspartylglutlanylphenylalanylalanylserylasparaginynylisoleucylcysteinylserylglycyllysyllylalanylprolylleucylglycylalanylprolylnylleucylglutamylprolylvalylserylarginrolylarginylserylvalylserylarginylseryylprolylalanylarginylmethionylserylprolalanylarginylmethionylserylprolylalanarginylarginylleucylglutamylglutamylthylleucylglutamylarginylleucyltyrosyllyyllysylprolylvalylserylphenylalanyllysylasparaginylcysteinylarginylphenylalacylarginylprolylmethionylprolylglutamyylalanylhistidylaspartylglycylglutaminylaspartyltyrosylthreonylhistidyllysylartylglycylthreonylglutaminylserylleucylthreonylprolylserylaspartylserylglyclylalanylglutaminylasparaginylarginylaylserylvalylisoleucylleucylthreonylvalylglutaminylvalyllysylprolylmethionylplysylasparaginylvalylasparaginylisoleueucylglutamylmethionyllysylvalylarginylylasparaginylprolylaspartylisoleucylvlserylaspartylisoleucylisoleucylvalylplisoleucylarginylisoleucylglutamylglycalanylleucyllysylisoleucylaspartylseryylserylalanyltryptophyltyrosylthreonylginyllysylalanylglycylarginylaspartyltlvalylasparaginylvalylglutamylvalylgluylglutamylprolylglutamylarginyllysylleglycylthreonyltyrosylarginylalanyllysylglutamylleucylglutamylprolylleucylhisaminylglutamylglutaminyltryptophylglutosylaspartyllysylglutamyllysylglutaminphenylalanyllysyllysyllysylleucylthreoinylphenylalanylglycylprolylalanylhistginylleucylthreonylprolylisoleucylseryylvalylglutamyltryptophylleucylhistidytamylalanylalanylasparaginylarginylleuinylglutamylphenylalanylglycyltyrosylclycylvalylalanyltyrosylserylarginylasphreonylcysteinylarginylalanylthreonylalaspartylhistidylthreonylserylalanylthrtylglutamyllysylserylleucylvalylglutalylglutamylglycylarginyllysylglycylleuylglutamylleucylglutamylarginylmethionlleucylthreonylglycylvalylthreonylthrelysylglutaminyllysylprolylaspartylisolylprolylvalylarginylvalylleucylglutamylphenylalanylarginylcysteinylarginylvaminylprolyllysylvalylasparaginyltryptolutaminylleucylisoleucylarginyllysylsealylarginyltyrosylaspartylglycylisoleuleucylvalylaspartylcysteinyllysylserylylvalyllysylvalylthreonylalanylglutamyylisoleucylglutamylhistidyllysylvalyllylglutaminylarginylglutamylaspartylpheinylarginylalanylprolylglutamylprolylatidylvalylhistidylglutamylprolylglycylutamylvalylglutaminyllysylvalylaspartythreonylglutamylthreonyllysylglutamylvnylglutamylarginylisoleucylthreonylhisylglutamylserylglutamylglutamylleucylaginylarginylthreonylglutamylglutamylglleucylthreonylalanylvalylglutamylleucylglutamylseryltyrosylglutamylglutamylllaspartylglutamylleucylleucylhistidyltlthreonylglutamylglutamylglutamyllysylamylglycyllysylisoleucylthreonylisoleurolylaspartyllysylisoleucylglutamylleulalanylprolyllysylisoleucylphenylalanyserylglutaminylthreonylvalylglycylglutidylphenylalanylarginylvalylarginylvallylglutamylcysteinylglutamyltryptophylysylisoleucylglutamylarginylserylasparltyrosyltryptophylprolylglutamylaspartleucylvalylisoleucylarginylaspartylvalylalanylserylisoleucylmethionylvalyllycylalanylglycylglutamylthreonylserylseleucylvalylglutaminylalanyllysylglutamanylthreonylglutaminylglutamylleucylglylglutamyllysylaspartylthreonylmethionlcysteinylglutamylthreonylserylglutamyysyltryptophyltyrosyllysylaspartylglyctamylglycylaspartyllysyltyrosylarginylyllysylvalylhistidylphenylalanylleucylylaspartylthreonylserylaspartylalanylglvalylleucylvalylglutamylaspartylglutaeonylalanyllysylleucylisoleucylvalylgllphenylalanylvalyllysylglutamylleucylgalylprolylglutamylseryltyrosylserylglysoleucylvalylserylprolylglutamylasparayptophyltyrosylhistidylasparaginylaspaparaginylglycyllysyltyrosylthreonylisoycylarginylglutaminylasparaginylleucylonyllysylglutamylaspartylglutaminylglyvalylisoleucylaspartylglycyllysyllysylllysylmethionyllysylprolylarginylprolyaminylglycylleucylserylaspartylglutamilaspartylisoleucylvalylglutaminylleucyglutamylserylvalylglutamylglycylvalyltylglutaminylglutamylvalylglutaminylprolisoleucylvalylisoleucylaspartyllysylgylleucylisoleucylglutamylaspartylmethianylglycylasparaginyltyrosylserylphenylleucylglycylleucylserylthreonylserylgerylvalylaspartylvalylisoleucylthreonyraginylvalylisoleucylglutamylglycylthrcysteinyllysylvalylserylvalylprolylaspyptophyltyrosylleucylasparaginylaspartrolylaspartylaspartylarginylvalylglutalthreonyllysylglutaminylarginylleucylvonylhistidylalanylserylaspartylglutamyeucylvalylglycylarginylvalylglutamylthylleucylserylvalylglutamyllysylisoleuccylleucylarginylaspartylleucylthreonylutaminylasparaginylvalylvalylphenylalahistidylserylglycylisoleucylaspartylvalalanyllysylaspartyllysylglutamylisoleyllysylisoleucylglutamylalanylhistidylcylthreonylvalylleucylasparaginylmethilutamylglycyllysyltyrosylthreonylphenysparaginylmethionylthreonylserylglycyllglycylalanylisoleucylseryllysylprolyleonylvalylalanylglutamylserylglutaminytamylcysteinylglutamylvalylalanylasparlglutamyltryptophylleucylarginylaspartucylthreonylasparaginylasparaginylisoltylglycylhistidyllysylarginylarginyllehreonyllysylleucylaspartylaspartylisolyrosyllysylvalylalanylthreonylseryllysylvalylglutamylalanylvalyllysylisoleucraginylleucylthreonylvalylthreonylglutlvalylphenylalanylthreonylvalylglutamyginylvalyllysylglycylvalylglutaminyltrycylvalylvalylleucylglutamylserylasparleucylserylvalyllysylglycylthreonylisoeucyllysylasparaginylcysteinylalanylislyltyrosylglycylphenylalanylarginylleuerylalanylarginylleucylhistidylvalylgloleucyllysyllysylprolyllysylaspartylvaraginylalanylthreonylvalylalanylphenylistidylaspartylthreonylvalylprolylvalyllysylserylvalylglutamylisoleucyllysylinylleucylvalylserylglutamylarginyllysleucylglutaminylasparaginylisoleucylselutamyltyrosylthreonylalanylvalylvalylinyllysylalanyllysylleucylphenylalanylisoleucylthreonyllysylthreonylmethionyalylprolylglutamylthreonyllysylthreonyteinylglutamylvalylserylhistidylphenylthionyltryptophylleucyllysylasparaginyylmethionylserylglutamyllysylphenylalaylglycyllysylleucylhistidylglutaminyllaraginylthreonylserylthreonylglutamylareonylphenylalanylvalylcysteinylglycylerylalanylthreonylleucylthreonylvalylteucylthreonylserylmethionylleucyllysyllutamylglutamyllysylaspartylthreonylisvalylthreonylvalylasparaginyltyrosylglsyltryptophylleucyllysylasparaginylglythreonylaspartyllysylcysteinylglutaminlleucylthreonylhistidylserylleucylaspaalylhistidylphenylalanylglycylaspartylphenylalanylvalylalanylglycyllysylalanylleucyltyrosylvalylglutamylalanylargilanylarginyllysylhistidylisoleucyllysylutamyllysyllysylarginylalanylmethionymylvalylserylglutamylprolylaspartylisophylmethionyllysylaspartylaspartylglutucylthreonylaspartylarginylisoleucyllylysyltyrosylvalylhistidylarginylleucylrginylmethionylserylaspartylalanylglycnylglycylglycylasparaginylvalylserylthvalylglutamylglycylarginylaspartylvalycyllysyllysylglutamylvalylglutaminylvaarginylalanylvalylvalylglutamylphenylaylaspartylaspartylvalylaspartylalanylhylglycylisoleucylglutamylisoleucylaspalutaminylglutamylarginylhistidyllysyltnylisoleucylhistidylarginylmethionylpheonylarginylglutaminylserylaspartylalanylalanylvalylalanylglycylarginylasparlleucyltyrosylvalylasparaginylalanylpralylleucylglutaminylglutamylleucylglutminylserylglycyllysylprolylalanylarginnylisoleucylserylglycylarginylprolylglyptophyltyrosyllysylglutamylglutamylglycylphenylalanyllysylcysteinyllysylpheylglutaminylglutamyltyrosylthreonylleunylphenylalanylprolylglutamylaspartylaeinylglutamylalanyllysylasparaginylaspylthreonylserylalanylserylleucylserylvlvalylserylprolylaspartylglutaminylglulylprolylalanylisoleucylisoleucylthreoreonylvalylthreonylserylglutamylglycylalanylglutaminylcysteinylarginylvalylsylvalylseryltryptophyltyrosylseryllysyolylserylarginylphenylalanylphenylalanlphenylalanylglutamylaspartylthreonyltucylalanylglutamylalanyltyrosylprolylgyltyrosylthreonylphenylalanylvalylalanglycylglutaminylvalylserylserylthreonyglutamylalanylprolylglutamylserylisoleoleucylglutamylglutaminylglutamylisolenyllysylglutamylphenylalanylserylseryllutamylglutamylglutamylglycylleucylhisminylleucylseryllysylisoleucylasparagiucylleucylserylglutamylserylprolylvalyanylaspartylserylglutamyllysylglutamylphenylalanylisoleucyllysylglutamylvalyeucylserylmethionylglycylaspartylvalylnylvalylisoleucylglycylisoleucylprolyltryptophylphenylalanylphenylalanylaspanylprolylserylalanylaspartyltyrosyllysrtylglycylaspartylaspartylhistidylseryylalanylthreonyllysylleucylglutamylasphreonylcysteinylmethionylalanylserylasthreonylisoleucylcysteinylserylalanyltylseryllysylglycylglutamylglycylhistidonylglutamylserylalanylvalylalanyllysyylglycylprolylcysteinylprolylprolylhislleucyllysylprolylisoleucylarginylcystolylalanylisoleucylphenylalanylglutamytamylprolylalanylprolylthreonylvalylthutamylasparaginyllysylglutaminylleucylyrosylthreonylisoleucylisoleucylhistidlserylglycylthreonylphenylalanylisoleuutaminylarginylglutamylaspartylserylgllysylalanylglutamylasparaginylmethionyysteinylalanylalanylglutamylleucylleucthreonylaspartylmethionylthreonylasparyllysylserylthreonylprolylglutamylalanlprolylglutaminylthreonylprolylleucyllalanylleucylaspartylserylglutamylglutalphenylalanylvalyllysylaspartylthreonyucylisoleucylthreonylglutamylglutamylalseryltyrosylglutamylhistidylisoleucyllleucylserylserylglutaminylleucylprolyylleucylglutaminylserylisoleucylleucylylthreonylprolylglutamylserylthreonylateinylisoleucylasparaginylglycylserylinylprolylleucyllysylglutamylprolylseryeucylglutaminylisoleucylvalylglutaminyalanylseryllysylglutamylglycylisoleucymylprolylglutamylthreonylglutaminylalaglutamyllysylisoleucylphenylalanylprollglutamylglutaminylisoleucylasparaginyolylleucyllysylthreonylleucylleucylalaraginyltyrosylprolylglutaminylserylserionylhistidylseryltyrosylleucylthreonylylleucylserylleucyllysylglutamyllysylsparaginylarginylglutamylglutaminylargsylglutaminylglutamylalanylglutaminylslglutaminylserylleucylalanylglutamylgllglutaminylserylprolylaspartylvalylmetasparaginyltyrosylglutamylprolylleucylylcysteinylthreonylglutamylglycylglycymylserylalanylasparaginylprolylleucylgminylaspartylserylalanylvalylarginyliserylleucylarginylphenylalanylprolylleulglutaminylvalylleucylleucyllysylglutaaraginylvalylvalylmethionylprolylprolyylglutamylseryllysylarginylglutamylprolylglutaminylglutamylvalylglutaminylglllysylglutamylserylleucylleucylserylglglutaminylarginylleucylasparaginylleuccysteinylarginylalanylleucylglutaminyllglutaminylprolylglycylleucylphenylalainylasparaginylisoleucylglutamyllysylvlasparaginylisoleucylthreonylglutaminyucylmethionylcysteinylmethionyltyrosylserylvalylthreonylglutamylglutamylvalylglutamylaspartylvalylaspartylprolylgleucyllysylmethionylglutamylleucylarginylisoleucylisoleucyltyrosylglutamylgluylthreonylalanylglutamylglycylprolylarlycylalanyllysylthreonylserylleucylgluartylserylphenylalanylserylglycylserylsoleucylthreonylglutamylprolylglutamyllisoleucylserylthreonylglutamylglutamyaginylvalylglutaminylserylarginylvalyleonylprolylvalylthreonyllysylglycylvalspartylglutamyllysylglutaminylaspartylglutamylglutamyllysylglutamylglutamylsreonylglutamylglutamylvalylalanylthreotamylalanylglutamylglycylglycylleucyliprolylmethionylisoleucylhistidylthreonvalylserylglutamylglutamylglycylaspartnylthreonylserylisoleucylthreonylasparaginyltryptophyltyrosylphenylalanylglulylserylaspartylglutamyllysylphenylalapartylglutaminylasparaginylthreonyltyrartyllysylvalylasparaginylthreonylglutlglutamyltyrosylvalylcysteinylglutamyllglycyllysylthreonylalanylthreonylseryllysylarginylalanylalanylprolylvalylisutamylprolylleucylglutamylvalylalanylllphenylalanylthreonylcysteinylglutamyllasparaginylvalylarginylphenylalanylglalanylglycylarginylglutamylisoleucyltyeinylserylisoleucylarginylserylseryllyglutamylisoleucylleucylarginylthreonylylglycylglutamyltyrosylthreonylcysteinyltyrosylglycylserylvalylserylcysteinyylvalylthreonylvalylprolylglycylglycylleucylleucylprolylglutamylarginyllysylutamylvalylvalylleucyllysylserylvalyllmylglutamylglutamylglutamylprolyllysylglutamyllysylvalyllysyllysylprolylalanolylprolyllysylprolylvalylglutamylglutlvalylthreonyllysylarginylglutamylargiylthreonyllysylvalylprolylglutamylisolylleucylprolylalanylprolylglutamylprolnylglutamylvalyllysylthreonylisoleucyllprolylglutamylprolylthreonylprolylisoylvalylprolylvalylvalylglycyllysyllysylyllysylglutamylglutamylalanylalanyllylysylglycylvalylprolyllysyllysylthreonlalanylglutamylarginylarginyllysylleuccylglutamyllysylprolylprolylaspartylglnyltyrosylglutaminylleucyllysylalanylvlyllysylglutamylisoleucyllysylaspartyltamylserylglutamylphenylalanylvalylglylanylglutamylcysteinylleucylvalylserylhreonylthreonyltryptophylmethionyllysyeucylarginylglutamylserylprolyllysylhilanylaspartylglycyllysylaspartylarginycylaspartylvalylglutaminylleucylserylahreonylcysteinylvalylleucylarginylleucylthreonylserylthreonylalanyllysylleucrolylvalylarginylphenylalanylvalyllysyamylvalylthreonylvalylvalyllysylglycylserylcysteinylglutamylleucylasparaginyalyltryptophylarginyllysylaspartylglycysylprolylglycylarginylisoleucylvalylpylmethionylarginylalanylleucylthreonylspartylaspartylthreonylaspartylalanylgreonylvalylglutamylasparaginylalanylasysteinylserylserylcysteinylvalyllysylvnylaspartyltryptophylleucylvalyllysylpinylhistidylvalyllysylprolyllysylglycylalanylcysteinylaspartylisoleucylalanyinylisoleucyllysyltryptophylphenylalanlisoleucylprolylalanylglutamylprolylasmylisoleucylleucylarginylaspartylglycyucyllysylisoleucyllysylasparaginylalanoleucylalanylglutamyltyrosylalanylvalyylarginyltyrosylprolylalanyllysylleucylglutamylvalylglutamylleucylleucyllysyylthreonylisoleucyltyrosylglutamyllysyylaspartylalanylglutamylisoleucylserylylglycylglutaminyltryptophyllysylleucyinylprolylserylprolylthreonylcysteinyllglycylglycyllysylarginylphenylalanyllyllysylleucylaspartylglutaminylalanylgaminylalanylleucylasparaginylalanylisoylleucylthreonylvalyllysylglutamylisolanylalanylvalylprolylleucyllysylaspartrginylarginylglutaminylalanylarginylphcylthreonylarginylglutamylalanylasparaysylglycylprolylaspartylisoleucylisolenylalanylaspartylisoleucylisoleucylalaisoleucylleucylvalylisoleucylasparaginylaspartylaspartylglutamylglycylvalyltutamylglycyllysyllysylthreonylserylalareonylglycylisoleucylarginylleucyllysyucylglutamylaspartylglutaminylthreonyleonylalanylthreonylphenylalanylvalylcylutamyllysylmethionylhistidylvalylvalyinylaspartylalanyllysylleucylhistidyltcylisoleucylserylserylglutamylglycyllymylmethionyllysylglutamylvalylthreonyllglutaminylisoleucyllysylalanylglutamiylthreonylalanylglutaminylleucyllysylvlyltyrosylphenylalanylthreonylvalyllysylalanylvalylglutamyllysylaspartylglutteinylglutamylvalylseryllysylaspartylvlalanyllysylaspartylglycylglutamylglutlysyltyrosylserylisoleucyllysylalanylaoleucylleucyllysylisoleucyllysyllysylaylglycylglutamyltyrosylvalylcysteinylatyllysylthreonyllysylalanylasparaginylinylleucylisoleucylglutamylvalylglutamylglutamylvalylphenylalanylvalylglycyllalanylglutamylisoleucylglutamylleucyltidylglycylglutaminyltryptophyllysylleylthreonylalanylserylprolylaspartylcystamylaspartylglycyllysyllysylhistidyliylasparaginylcysteinylglutaminylleucylylvalylserylphenylalanylglutaminylalanalanylalanylasparaginylleucyllysylvalyleucylphenylalanylisoleucylthreonylproylphenylalanylglutamyllysylaspartylglulcysteinylglutamylvalylserylarginylglularginyltryptophylleucyllysylglycylthreonylglycylaspartylaspartylarginylphenlaspartylglycylthreonyllysylhistidylselalanylalanylphenylalanylglutamylasparnylphenylalanylglutamylalanylglutamylaycyllysylleucylisoleucylisoleucylglutalphenylalanylleucylthreonylprolylleucysylglutamyllysylglutamylserylalanylvalleucylserylhistidylaspartylasparaginyllphenylalanyllysylasparaginylaspartylgnylthreonylarginylserylvalylserylmethillysylthreonylhistidylserylisoleucylthylserylisoleucylaspartylaspartylthreonlylglutamylalanylmethionylglycylmethiocylthreonylvalylleucylglutamylglycylasonylglycyllysylleucylglutaminylaspartylysylaspartylglutamylvalylisoleucylleuucylseryllysylalanylaspartylalanylprolysylaspartylglycyllysylglutamylisoleuclanylvalylisoleucyllysylthreonylasparteucylisoleucylleucyllysyllysylalanylleylglutaminyltyrosylthreonylcysteinylasyllysylthreonylserylglycyllysylleucylainylglutamylisoleucyllysylleucylvalylalglutamylvalylmethionylglutamylthreonylalanylglutamylthreonylglutamylisoleuceucylhistidylalanylasparaginyltryptophnylleucylleucylglutaminylthreonylprolylysylglutamylglutamylglycyllysylisoleustidylasparaginylcysteinylarginylleucyycylvalylaspartylphenylalanylglutaminyerylserylalanylhistidylleucylarginylvaglycylleucylleucylarginylprolylleucyllnylalanylglycylglutamylthreonylalanyltlglutamylleucylseryltyrosylglutamylaspyptophyltyrosylleucyllysylglycyllysyllyllysylvalylvalylprolylarginylserylgluylleucylthreonylleucylarginylaspartylvylglycylglutamylvalylglutaminylleucyltnyllysylthreonylhistidylalanylasparagiamylprolylprolylvalylglutamylphenylalalaspartylglutaminylthreonylvalylglutamlvalylleucylglutamylcysteinylglutamylvalanyllysylvalyllysyltryptophylphenylaglutamylisoleucylleucyllysylseryllysyllanylaspartylglycylarginylvalylarginylpartylcysteinylthreonylprolylglutamylalthreonylcysteinylaspartylalanyllysylaylcysteinylasparaginylleucylasparaginylglutamylphenylalanylleucylarginylprolminylvalylarginylglutamyllysylglutamyllutamylcysteinylglutamylleucylserylargalyllysyltryptophylphenylalanyllysylaslysyllysylglycyllysyllysyltyrosylasparylalanylvalylarginylisoleucylleucylvallleucylleucylaspartylaspartylglutamylalutamylvalylarginylthreonylalanylarginlthreonylvalylleucylglutamylglutamylglyllysylasparaginylleucylalanylasparagimylthreonylaspartylthreonylisoleucyllylseryllysylprolylglycylalanylglutamylvglycylaspartylglutamylglutamylisoleucyinyltyrosylglutamylisoleucylleucylthreylisoleucylleucylvalylisoleucylglutamilutamylaspartylalanylglycylasparaginyleucylprolylserylserylarginylthreonylastidylglutamylleucylalanylalanylglutamylylglutaminylasparaginylleucylglutamylyllysylalanylglutamylphenylalanylvalylutamylserylphenylalanylprolylvalylglutlaspartyllysylthreonylleucylglutamylseylvalylisoleucylalanylaspartylglycyllyllysylaspartylalanylthreonylleucylglutyltyrosylvalylvalylmethionylvalylglycynylhistidylleucylthreonylvalylisoleucylvalylvalylprolylleucyllysylaspartylthaminylglutaminylglutamylvalylvalylphenlvalylasparaginylthreonylglutamylglycyenylalanylarginylasparaginylglutamylglpartylserylseryllysyltyrosylisoleucyliylleucylvalyltyrosylthreonylleucylargistidylleucylaspartylaspartylglutaminylvalylserylleucylthreonylasparaginylhisylvalyllysylserylalanylalanylasparaginmylglutamylaspartylleucylarginylisoleupartylisoleucylglutamylthreonylmethionnylphenylalanyltryptophylcysteinyllysyaginylvalylthreonylleucyllysyltryptophtamylglutamylvalylprolylphenylalanylasyrosylarginylvalylaspartyllysyltyrosyllisoleucyllysylaspartylcysteinylglycyllycylglutamyltyrosylisoleucylvalylthreysylserylvalylalanylglutamylleucylleucrolylthreonylglutamylphenylalanylvalyltylglutaminylthreonylvalylthreonylglutnylvalylphenylalanylserylcysteinylglutylalanylasparaginylvalyllysyltryptophyinylglutamylisoleucyllysylglutamylglyclglutamyllysylaspartylglycylserylisolesoleucyllysylaspartylcysteinylarginyllnylglutamyltyrosylalanylcysteinylglycyerylarginylalanylarginylleucylphenylalrolylvalylglutamylisoleucylisoleucylarisoleucylleucylglutamylalanylprolylglyanylleucylalanylglutamylleucylasparagialylglutaminyltryptophylleucylarginylavalylvalylglutaminylglycylaspartyllysyylserylglutamylglycyllysylisoleucylhisylcysteinylaspartylisoleucyllysylprolytamyltyrosylarginylphenylalanylisoleuclanylarginylalanyllysylleucylglutamyllsoleucyllysylthreonylalanylaspartylglurtylvalylglycyllysylprolylleucylthreonspartylalanyltyrosylprolyllysylalanylgylalanyllysylglutamylasparaginylglutameonylisoleucylaspartylthreonylthreonylylphenylalanylarginylisoleucylleucylglllysylglycylarginyltyrosyllysylisoleucysylhistidylglycyllysylalanylglutamylgylleucyllysylvalylisoleucylaspartylvalaraginylleucylglutamylvalylthreonylgluycylglutamylvalylserylleucylalanyltryphreonylaspartylglycylglycylseryllysylivalylglutamylarginylarginylaspartylisotophylvalylleucylalanylthreonylaspartylglutamylphenylalanylthreonylvalylthreylglycylvalylglutamyltyrosylleucylphennylasparaginylarginylvalylglycylthreonthreonylaspartylasparaginylprolylvalylsylaspartylvalylprolylglycylprolylprolleucylthreonylaspartylvalylasparaginylleucylthreonyltryptophylglutamylprolylglycylalanylglutamylisoleucylthreonylaamylleucylarginylaspartyllysylthreonylrtylthreonylalanylmethionylthreonylvalylserylalanylthreonylvalylthreonylaspanylglutamyltyrosylserylphenylalanylargaraginylarginylisoleucylglycylvalylglyonylprolylphenylalanylvalyllysylvalylalarginylprolylserylprolylprolylvalylaspartylglutaminylthreonylglutaminylseryptophylglutamylprolylprolylleucyllysyleucylleucylglycyltyrosylisoleucylisolelglutamylglycyllysylaspartylasparaginylasparaginylmethionyllysylleucylvalylpysylvalylthreonylglycylleucylglutamyllucyltyrosylarginylvalylserylalanylglutylserylaspartylprolylserylglutamylisolylalanylaspartylaspartylalanylphenylalionylaspartylleucylserylalanylphenylalylvalylisoleucylvalylprolylasparaginylcylvalylprolylserylthreonylglycyltyrosthreonyltryptophylcysteinylphenylalanyamylthreonylglycylaspartylarginylvalylrylalanyltyrosylalanylglutamylleucylvalarginylserylaspartyllysylglycylisoleuglutamylasparaginylarginylvalyllysylthsoleucylaspartylvalylasparaginylvalylinylprolyllysylglutamylleucyllysylphenynyllysylaspartylserylvalylhistidylleucrolylaspartylaspartylaspartylglycylglyyrosylvalylvalylglutamyllysylarginylglltryptophylthreonyllysylvalylmethionylpartylleucylglutamylphenylalanylthreontaminylglycyllysylglutamyltyrosylleucynylarginylasparaginyllysylcysteinylglytyrosylvalylaspartylglutamylprolylvalyrolylalanylthreonylvalylprolylaspartylllysyltryptophylarginylaspartylarginylucylphenylalanylleucylthreonyltryptophnylaspartylglycylglycylserylarginylisolylglutamylarginylcysteinylprolylarginlvalylalanylcysteinylglycylglutamylpromethionylglutamylvalylthreonylglycylletophyltyrosylalanyltyrosylarginylvalylylglutaminylglycylalanylseryllysylprollglutamylisoleucylglutaminylalanylvalyalanylprolylglutamylisoleucylphenylalaucylalanylglycylleucylthreonylvalyllyslglutamylleucylprolylalanylthreonylvalprolyllysylisoleucylthreonyltryptophyllisoleucylleucyllysylglutaminylaspartyucylglutamylasparaginylvalylprolyllysyleucylvalylaspartylseryllysylarginylserosylisoleucylisoleucylglutamylalanylvarginylalanylthreonylalanylvalylvalylgspartyllysylprolylglycylprolylprolylalucylthreonylaspartylvalylthreonylaspareucylthreonyltryptophylasparaginylprolylglycylseryllysylisoleucylthreonylaspginylarginylalanylthreonylaspartylseryylleucylserylserylthreonylvalyllysylasyllysylalanylthreonyllysylleucylisoleurosylisoleucylphenylalanylarginylvalylionyltyrosylglycylalanylglycylglutamyllylisoleucylthreonylalanyllysyltyrosyllprolylglycylprolylprolylthreonylarginisoleucylthreonyllysylaspartylalanylvacysteinylglutamylprolylaspartylaspartyleucylthreonylglycyltyrosyltryptophylvolylaspartylthreonylaspartyllysyltryptyllysylmethionylprolylvalyllysylaspartyllysylglycylleucylthreonylasparaginylalanylarginylvalylleucylalanylglutamylglycyllysylprolylseryllysylserylthreoneucyllysylaspartylprolylisoleucylasparylglycyllysylprolylthreonylvalyllysylalvalylarginylleucylasparaginyltryptophylaspartylglycylglycylalanyllysylisolecylglutamylmethionylleucyllysylthreonytophylvalylarginylvalylalanylglutamylgtaminylhistidylleucylleucylprolylglycyminylglutamyltyrosylserylphenylalanylaginyllysylalanylglycylglutamylserylgluaspartylprolylvalylleucylcysteinylargiprolylserylprolylprolylarginyltryptophaginylisoleucylthreonyllysylasparaginyryptophylthreonylvalylprolylglutamyllysoleucylthreonylasparaginyltyrosylisoltylvalylarginylarginyllysylglycyltryptlthreonylthreonylvalyllysylaspartylthreonylprolylleucylthreonylglutamylglycylarginylvalylalanylalanylglutamylasparylserylaspartyltyrosylthreonylglutamylleucylalanyllysylaspartylthreonylphenyprolylprolyltyrosylalanylleucylalanylvarginylhistidylvalylaspartylleucyllysylasparaginylaspartylglycylglycylarginyrosylvalylisoleucylglutamyllysyllysylgrginyltryptophylvalyllysylalanylglycylrtylcysteinylasparaginylphenylalanylareucylglutamylglycylthreonylglutamylvalalylarginylalanylglutamylasparaginylglylprolylserylglutamylprolylthreonylglulutamylaspartylprolylthreonylserylprolrtylleucylhistidylvalylthreonylaspartyoleucylalanylisoleucylalanyltryptophylaginylglycylglycylserylprolylisoleucylglutamylmethionylcysteinylprolylvalylglmethionylarginylvalylasparaginylserylleucyllysylphenylalanyllysylvalylglutapartyllysylglutamyltyrosylvalylleucylaginylalanylisoleucylglycylvalylserylglerylglutamylasparaginylvalylvalylalanyyllysylprolylthreonylisoleucylaspartyltylisoleucylisoleucylvalylisoleucylgluisoleucylprolylvalylprolylphenylalanylthreonylvalylseryltryptophylhistidyllylysylalanylserylaspartylarginylleucyltartylhistidylisoleucylserylalanylhistirylvalylarginylalanylaspartylalanylglylthreonylleucylglutamylasparaginyllysynylserylisoleucylasparaginylvalyllysylcylprolylcysteinyllysylaspartylisoleucthreonyllysylserylserylcysteinyllysyllylprolylglutamylphenylalanylaspartylglucylhistidyltyrosylvalylleucylglutamylrginylarginylthreonyltyrosylisoleucylpmylasparaginyllysylleucylseryltryptophsoleucylprolylasparaginylglycylglutamyinylvalyllysylalanylvalylasparaginyllyyrosylisoleucylglutamylleucyllysylaspautaminylaspartylprolyllysylglutaminylplaspartylvalylglutamylvalylhistidylasplalanylmethionylthreonylisoleucylthreoltyrosylaspartylglycylglycylseryllysyleucylisoleucylglutamyllysylisoleucylalnyltryptophyllysylarginylcysteinylasparolylisoleucylleucylthreonyltyrosylthrlglutamylglycyllysylglutamyltyrosylglunylalanylglutamylasparaginylalanylalanlserylarginylalanylthreonylprolylprolyolylisoleucylaspartylalanylprolyllysylserylleucylglutamylvalyllysylarginylglleucylaspartylalanylserylisoleucylseryonylisoleucylthreonyltryptophylisoleucalylisoleucylvalylprolylglutamylglutamlanylprolylleucylvalylarginylarginylarinylglutamylglutamylglutamylprolylphenonylglutaminylarginylleucylserylisoleuylglycylglutamylserylglutaminylleucylaylarginylprolylaspartylhistidylglycyllvalylglutamylasparaginylaspartylhistidrolylcysteinylthreonylvalylserylvalyllolylprolylisoleucylasparaginylphenylalylisoleucylarginyllysylthreonylserylvautamylprolylprolylleucylaspartylaspartlisoleucylasparaginyltyrosylthreonyllethreonyllysylprolylaspartylserylglutamonylserylthreonylleucylarginylhistidylonyllysylleucylisoleucylglutamylglycylnylarginylvalylarginylalanylglutamylasrolylglycylprolylprolylcysteinylvalylsylaspartylprolylphenylalanylglycylprolllysylprolylisoleucylvalylglutamylasparylmethionylleucylvalyllysyltryptophyltylasparaginylglycylserylprolylisoleucylglutamyllysylarginylglutamylvalylaspphylserylarginylvalylasparaginyllysylsucyllysylalanylasparaginylvalylaspartyucylthreonyltyrosylvalylphenylalanylarparaginylalanylalanylglycylprolylglycyserylaspartylprolyllysylthreonylalanyllprolylprolylglycylprolylprolylisoleuclthreonylserylserylthreonylthreonylisohylglutamylprolylprolylalanylphenylalatamylisoleucylvalylglycyltyrosylphenyleucylvalylglycylthreonylasparaginyllysreonylglutamyllysylmethionylisoleucyllreonylvalyllysylglutamylisoleucylarginyllysylleucylarginylvalylserylalanylvatamylglycylprolylprolylglycylglutamyltlvalylalanylglutamylprolylglutaminylglylleucylaspartylvalylserylvalyllysylglcylmethionylalanylglycyllysylthreonylllylvalylthreonylglycylarginylprolylvallthreonyllysylglutamylglutamylglycylglginylvalylvalylisoleucylaspartylasparalutamylleucylisoleucylisoleucyllysylastylhistidylglycylarginyltyrosylvalylisginylserylcysteinylglycylseryllysylphealylglutamylvalylphenylalanylaspartylvpartylleucyllysylprolylvalylvalylthreocysteinylleucylleucylasparaginyltryptortylaspartylglycylglycylserylglutamylisoleucylisoleucylglutamylarginyllysylathreonyltryptophylarginylglutaminylprolarginylseryllysylcysteinylaspartylisotamylglycylglutaminylglutamyltyrosyllylalanyllysylasparaginyllysylphenylalanvalylglutamylisoleucylglycylprolylisollleucylglycylprolylprolylthreonylseryltyrosylthreonylglutamylarginylglutaminonylleucylaspartyltryptophyllysylglutacylglycylserylprolylisoleucylglutaminytamyllysylarginylarginylhistidylaspartutamylarginylvalylasparaginyllysylargieonylserylphenylalanylleucylvalylglutalhistidylglutaminylmethionyltyrosylglulanylvalylasparaginylglutamylisoleucylrylleucylprolylleucylasparaginylvalylvrtylglutamylvalylprolylprolylthreonyliylvalylarginylglycylaspartylthreonylitrampamylprolylvalylhistidylisoleucylprolleucylprolylmethionylprolyllysylisolearaginylglutamylthreonylvalylisoleucylalanylleucylglutaminylisoleucylthreonyinylserylglutamylalanyllysylthreonylglylalanylvalylarginylglutamylaspartyllyylthreonylalanylserylasparaginylarginyarginylasparaginylvalylhistidylvalylglolylserylprolylprolylarginylasparaginysoleucyllysylalanylglutamylserylcysteispartylalanylprolylleucylaspartylaspareucylthreonylhistidyltyrosylvalylisolenylserylarginyllysyllysylalanylglutamyeonylasparaginylthreonylalanylvalylgluucyltryptophyllysylleucylisoleucylprollglutamylphenylalanylarginylvalylarginlglycylisoleucylserylaspartylglutamylclvalylisoleucylglutaminylaspartylprolyolylprolylglycyllysylprolyllysylvalyllylserylmethionylleucylvalylseryltryptotylasparaginylglycylglycylserylprolyliphylleucylglutamyllysylarginylglutamylptophylserylarginylvalylserylarginylalylglycylleucyllysylglycylvalylglutamylrginylleucylleucylglutamylglycylvalyllginylalanylmethionylalanylisoleucylaspglycylprolylprolylserylglutamylprolylsylglycylaspartylprolylisoleucylphenylaserylcysteinylprolylglutamylvalyllysyllisoleucylserylleucylglycyltryptophyllglycylglycylserylprolylisoleucyllysylgethionylglutaminylglutamylglutamylglycllysylarginylvalylasparaginylglutamylpreonylthreonylcysteinylglutamylcysteinlysylglutamylleucylarginyllysyltyrosyllalanylvalylasparaginylglutamylalanylgylaspartylthreonylthreonylglycylglutamrtylisoleucylglutaminylglutamylglutamyleucylaspartylisoleucylglycylalanylglucysteinyllysylalanylglycylserylglutamilanylvalylisoleucyllysylglycylarginylpryptophylglutamylphenylalanylaspartylghionyllysylaspartylglycylvalylhistidylrtylalanylglutaminylleucylglutamylthreerylvalylisoleucylisoleucylisoleucylprrylhistidylthreonylglycyllysyltyrosylsaraginyllysylalanylglycylglutaminyllyslarginylvalyllysylvalylmethionylaspartlaspartylleucyllysylvalylserylaspartylcysteinylarginylleucylseryltryptophyllaspartylglycylglycylaspartylarginylisocylglutamyllysylarginylthreonylisoleucylthreonyllysylvalylasparaginylprolylathreonylphenylalanylvalylvalylprolylasaminylglutaminyltyrosylphenylalanylphelutamylasparaginylarginylphenylalanylgylglutamylthreonylisoleucylglutaminylaaspartylprolylisoleucyltyrosylprolylprsylleucyllysylisoleucylglycylleucylisonylvalylhistidylleucylseryltryptophyllartylglycylglycylserylprolylvalylthreotamylcysteinylleucylalanyltryptophylasysyllysylglutamylalanyltryptophylarginylarginylaspartylvalylglutamylglutamyllvalylglutamylaspartylleucylvalylglutamylphenylalanylarginylvalyllysylalanylalylseryllysylprolylserylalanylthreonycysteinylglutaminylarginylprolylaspartylaspartylleucyllysylglutamylphenylalautamylglycylthreonylasparaginylvalylassoleucyllysylglycylvalylprolylphenylalptophylphenylalanyllysylalanylprolylprinyllysylglutamylprolylvalylleucyltyroaraginyllysylleucylvalylvalylaspartylacylvalylisoleucylprolylglutaminylserylglycylleucyltyrosylthreonylisoleucylthinylleucylglycylthreonylalanylseryllysaraginylvalylleucylglycylarginylprolylisoleucyllysylphenylalanylglutamylserymethionylthreonylleucylseryltryptophylylaspartylglycylglycylseryllysylisoleusoleucylglutamyllysylarginylglutamylaltryptophylvalylhistidylvalylserylseryllthreonyltyrosylthreonylisoleucylprolytidylglutamyltyrosylvalylphenylalanylaminylasparaginyllysyltyrosylglycylisolrtylserylglutamylprolylglutamylthreonyylalanylserylvalylprolylglycylalanylprlserylserylvalylthreonylarginylasparagraginyltryptophylglutamylglutamylprolylserylprolylvalylthreonylglycyltyrosylsylaspartylthreonylthreonylseryllysylaparaginylarginylaspartylprolylisoleucyglycylvalylseryltyrosyllysylvalylthreocylserylaspartyltyrosylglutaminylphenyleucylasparaginylalanylalanylglycylvalylserylaspartylprolylalanylthreonylalaanylprolylprolylglycylprolylprolylphenartyltryptophylthreonyllysylserylserylhylserylprolylprolylleucyllysylaspartylglycyltyrosylisoleucylvalylglutamyltyylglutamylglutamyltryptophylglutamyllyvalylarginylglycylthreonyllysylleucylvlutamylglycylalanylphenylalanyltyrosyllanylvalylasparaginylisoleucylalanylglycylglutamylvalylthreonylaspartylvalylrtylarginylleucylvalylserylprolylasparanylserylvalylarginylaspartylarginylisylglycylvalylisoleucylarginylisoleucylcyllysylprolylprolylprolylthreonylvalyonylasparaginylglutamylarginylthreonyllthreonylisoleucylglutamylthreonylthreethionylvalylisoleucyllysylasparaginylidylglutaminylglycylvalyltyrosylseryllutamylalanylglycylglutamylarginyllysyllaspartylvalylleucylaspartylvalylprolylylphenylalanylleucylalanylhistidylasputamylserylcysteinyllysylleucylthreonylutamylaspartylaspartylglycylglycylserltyrosylvalylisoleucylglutamyllysylarginylalanyltryptophylthreonylprolylvalyylarginylglutaminylasparaginylalanyltholeucylglutaminylglycyllysylalanyltyrosoleucylalanylalanylglutamylasparaginylprolylphenylalanylvalylglutamylthreonleucylarginylglutamylprolylisoleucylthlylglutamylaspartylleucylglutamylvalylraginylthreonylvalylthreonylleucylthreyllysyltyrosylaspartylglycylglycylserynyltyrosylvalylleucylglutamylserylargitamyllysylphenylalanylhistidyllysylvalginylleucylleucylserylarginyllysyltyrosylglutamylglycylaspartylthreonyltyroslanylvalylasparaginylisoleucylvalylglyphenylalanylcysteinylthreonyllysylprolpartylglutamylleucylalanylprolylprolyllphenylalanylarginylaspartyllysylleucylglutamylalanylphenylalanylalanylleucylycyllysylprolyllysylprolyllysylvalylsrtylglutamylalanylaspartylvalylleucylgnylhistidylisoleucyllysylthreonylthreoleucylglutamyllysylisoleucyllysylalanyyllysyltyrosylcysteinylvalylvalylvalylcylserylarginyllysylglycylphenylalanylvalylvalylaspartylhistidylprolylglycylerylphenylalanylaspartylglutamylvalyltlvalylisoleucylseryltryptophyllysylproylglycylseryllysylisoleucylthreonylasputamyllysyllysylglutamylvalylglycyllysrolylvalylthreonylserylalanylserylalanylvalylseryllysylleucylleucylglutamylghenylalanylarginylisoleucylhistidylalaglycylisoleucylserylaspartylprolylleucysylalanyllysylaspartylarginylphenylallprolylaspartylglutaminylprolylisoleucllysylaspartylserylalanylleucylvalylthlylhistidylaspartylglycylglycyllysylprosylisoleucylleucylglutamyllysylarginylarginyltryptophylalanylarginylvalylthistidylprolyltyrosylthreonyllysylphenyucylleucylglutamylglycylcysteinylglutainylvalylserylalanylglutamylasparaginyycylaspartylprolylserylprolylprolylserllysylaspartylprolylisoleucylalanyllysaginylprolylglutamylalanylisoleucylaspaginylserylvalylaspartylleucylthreonylinylhistidylaspartylglycylglycylseryllleucylvalylglutamyltyrosylglutaminyllymyltryptophylarginylarginylalanylasparlserylcysteinylprolylglutamylthreonyllleucylarginylaspartylglycylglutaminyltnylvalylleucylalanylvalylasparaginylalylprolylalanylhistidylvalylprolylglutatylarginylleucylglutamylprolylprolylglalanylasparaginylmethionylalanylarginyllysylvalylglycylaspartylthreonylleucysoleucyllysylglycylvalylprolylphenylalhyllysyllysylglutamylaspartylarginylasylarginylisoleucylaspartylvalylthreonylutamylisoleucylarginylasparaginylalancylglycylisoleucyltyrosylserylleucylthlalanylglycylseryllysylthreonylvalylseaspartyllysylprolylglycylprolylprolylarylglutamylisoleucylarginyllysylaspartyltryptophyllysylglutamylprolylleucylaylisoleucylthreonylasparaginyltyrosylvrtylvalylalanylserylalanylglutaminyltrlthreonylseryllysyllysyllysylserylhistleucylasparaginylglutamylglycylasparaganylarginylvalylalanylalanylglutamylasinylglycylprolylphenylalanylvalylglutayllysylalanylleucylaspartylprolylleucyolyllysylaspartylleucylhistidylhistidyeonylglutamylvalylserylleucylvalyltryplarginylaspartylglycylglycylserylprolyylvalylglutamyltyrosylglutaminylglutamspartyltryptophylisoleucyllysylphenylaraginylleucylglutamylcysteinylvalylvaltaminylglycyllysylthreonyltyrosylarginylglutamylasparaginylisoleucylvalylglythreonylthreonylisoleucylprolylisoleucyllysylleucylvalylprolylprolylserylvaleucylisoleucylglutamylglycylleucylvalyonylvalylarginylphenylalanylprolylalanlylprolylvalylprolylthreonylalanyllysyglycylserylglutamylisoleucyllysylthreohreonylvalylglutamylthreonylaspartylaslleucylthreonylisoleucyllysylasparaginrtylthreonylglycylglutamyltyrosylglutaaraginylalanylalanylglycylseryllysylthlthreonylvalylleucylaspartylvalylprolyolylisoleucylasparaginylisoleucylleucylhistidylmethionylthreonylisoleucylserysylaspartylaspartylglycylglycylserylpylisoleucylvalylglutamyllysylglutaminyylthreonyltryptophylglycylvalylvalylseyllysylleucyllysylisoleucylprolylhistiinylglutamyltyrosylvalylphenylalanylarraginyllysylisoleucylglycylvalylglycylonylprolylthreonylvalylalanyllysylhistlylserylprolylprolylglycyllysylprolylvhreonylglutamylasparaginylalanylalanyllleucylprolyllysylserylaspartylglycylgycyltyrosyltyrosylmethionylglutamylargcyllysyltryptophylvalylarginylvalylasplalanylaspartylleucyllysylphenylalanylosylglutamylglycylasparaginylthreonyltlylphenylalanylalanylglutamylasparaginlprolylserylprolylserylserylaspartylprginylprolylisoleucyllysylprolylprolylgylprolyllysylleucyllysylaspartyllysylspartylleucylvalyltryptophylthreonyllysycylserylprolylisoleucylleucylglycyltytaminyllysylprolylglycylthreonylalanylnylisoleucylasparaginyllysylaspartylglnylcysteinylalanylphenylalanylarginylvamylglycylasparaginylglutamyltyrosylarsylalanylalanylasparaginylisoleucylvallarginylglutamylleucylalanylglutamylselisoleucylleucylhistidylprolylprolylgllylthreonylcysteinylarginylaspartylvallglycylglutaminylthreonylisoleucylargillysylglycylarginylprolylglutamylprolylthreonyllysylglutamylglycyllysylvalylnylvalylaspartylleucylisoleucylglutamiglutamylleucylglutaminylisoleucyllysylartylhistidylglycyllysyltyrosylisoleucnylserylserylglycylhistidylalanylglutalasparaginylvalylleucylaspartylarginylylasparaginylleucyllysylvalylthreonylalasparaginylcysteinylthreonylisoleucylrolylleucylaspartylasparaginylglycylglsparaginylphenylalanylisoleucylvalylglraginylglutaminyllysylglycyltryptophyltylvalylthreonyllysylarginylleucylisolucylalanylasparaginylasparaginylglutamvalylcysteinylalanylglutamylasparaginyhreonylisoleucylglutamylthreonyllysyltsoleucylasparaginylprolylisoleucylaspaylglutamylasparaginylleucylhistidylisolthreonylphenylalanylvalyltyrosylleucylaspartyltyrosylaspartylglycylglycylsesylhistidylvalylglutamylarginylarginyltyltryptophylglutamylarginylvalylhistiutamylthreonylhistidyltyrosylmethionyllutamylasparaginylglutaminylisoleucyltlylglutaminylthreonyllysylasparaginylgartyltryptophylvalyllysylthreonylglutaamylaspartylleucylglutaminyllysylprolyylserylglycylvalylleucylthreonylvalyllleucylarginylleucylglutamylalanylglycylalanylprolylglutamylvalylalanyltryptotylalanylthreonylaspartylleucylthreonylisoleucylaspartylthreonylarginylalanylserylleucylthreonyllysylalanyllysylartyrosylvalylvalylthreonylalanylthreonyylphenylalanylvalylalanyltyrosylalanylaspartyllysylprolylglycylprolylvalylarlvalylaspartylvalylserylserylaspartylayltryptophylaspartylprolylprolylglutaminylglutamylisoleucylglutaminylasparagysylcysteinylglutamylthreonyllysylargieonyltyrosylserylalanylthreonylvalylleeonylvalylthreonylarginylleucylisoleuctyrosylisoleucylphenylalanylarginylvalysylisoleucylglycylthreonylglycylprolyolylvalylisoleucylalanyllysylthreonylllarginylprolylaspartylprolylprolylglutylglutamylglutamylmethionylthreonylvalrolylglutamyltyrosylaspartylglycylglyctyrosylphenylalanylleucylglutamyllysylonylarginyltryptophylvalylprolylvalylaprolylglutamylarginylarginylmethionylllleucylprolylaspartylhistidylglutamyltvalyllysylalanylglutamylasparaginylgluglutamylprolylserylleucylprolylserylarartylprolylisoleucylglutamylprolylprolinylphenylalanylarginylvalylvalylasparylisoleucylthreonylleucylglycyltryptopartylglycylglycylalanylprolylisoleucyltamylmethionylarginylprolyllysylisoleuspartylglutamylglycyltryptophyllysylarylalanylglutaminylleucylvalylarginyllylthreonylserylleucylaspartylglutamylatrampamylphenylalanylarginylvalylcysteininylvalylglycylisoleucylglycylarginylpmylalanylisoleucyllysylprolyllysylglutolylglutamylisoleucylaspartylleucylaspylleucylvalylisoleucylvalylarginylalaninylleucylphenylalanylalanylisoleucylvlprolyllysylvalylthreonyltryptophylargylasparaginylvalylvalylarginyllysylglyylaspartylthreonylmethionylalanylphenyparaginylserylthreonylarginylaspartylaleucylthreonylleucylvalylasparaginylprvalylphenylalanylvalylasparaginylvalylrolylglycylprolylvalylserylaspartylleuonyllysylthreonylserylcysteinylhistidyolylglutamylasparaginylaspartylglycylgstidyltyrosylisoleucylvalylglutamyllysnyllysylthreonyltryptophylserylthreonysyllysylthreonylserylphenylalanylhistilylprolylglycylasparaginylglutamyltyrohreonylalanylvalylasparaginylglutamyltthreonylaspartylvalylprolyllysylprolyllleucylserylglutamylprolylaspartylprollanylthreonylglutamylmethionylthreonylleucylalanyltryptophylleucylprolylprolalanyllysylisoleucylaspartylglycyltyroginylglutamylglutamylglutamylglutaminyhylthreonylglutamyltyrosylserylvalylvalylvalylthreonylglycylleucyllysylglutaylalanylarginylvalylalanylalanylarginyerylleucylprolylarginylglutamylalanylganyllysylglutamylglutaminylleucylleucythionylprolylglutamylglutaminylisoleucllysyllysylleucylarginylisoleucylglutalysylprolylhistidylprolylthreonylcysteglutamylaspartylglutamylvalylvalylthrealylhistidyllysylalanylaspartylserylseleucyllysylaspartylvalylthreonylarginyosylserylleucylthreonylalanylglutamylaspartylthreonylglutaminyllysylisoleucytylalanylprolylglycylprolylprolylglutaylisoleucylserylaspartylisoleucylasparylleucylseryltryptophylhistidylisoleuclglycylserylasparaginylisoleucylthreonlutamyllysylcysteinylaspartylvalylseryylthreonylalanylleucylalanylserylvalylarginylvalylglycyllysylleucylisoleucylylisoleucylphenylalanylarginylvalylarglphenylalanylglycylisoleucylserylglutaysylmethionylvalylalanylglutaminylphenylprolylserylglutamylprolyllysylasparalvalylasparaginyllysylaspartylcysteinyyptophylaspartylarginylprolylaspartylsisoleucylisoleucylglycyltyrosylleucylilarginylasparaginylserylleucylleucyltraspartylthreonylleucylvalylarginylseryinylalanylglycylleucylvalylglutamylglyalanylarginylisoleucyltyrosylalanylleulserylprolylprolylseryllysylprolylthrenylarginylmethionylprolylvalylaspartylylvalylisoleucylaspartylvalylthreonylloleucyltryptophylalanylarginylprolyllyllysylisoleucylisoleucylglycyltyrosylpinyllysylleucylprolylglycylaspartyllysparaginylthreonylalanylprolylhistidylglutamylglutamyltyrosylthreonylalanylthysylalanylglutaminyltyrosylglutaminylpanylarginylthreonylalanylvalylasparagilutamylprolylserylaspartylprolylvalyltlasparaginylvalylprolylprolylarginylisylmethionyllysylserylleucylleucylthreoparaginylvalylcysteinylleucylaspartylallysylprolylmethionylprolylthreonylvalglycylthreonylleucylleucyllysylprolylathionylalanylmethionylglutaminylarginyleucylglutamylleucylphenylalanylserylvserylglycylaspartyltyrosylthreonylisolnylserylserylglycylseryllysylserylalanvalylleucylaspartyllysylprolylglycylpreucylasparaginyllysylmethionyltyrosylseucylseryltryptophylglutamylprolylprollserylglutamylisoleucylthreonylasparagsylarginylglutamylthreonylserylarginylutaminylvalylserylalanylthreonylvalylplserylvalylglutamyllysylleucylisoleucysylglutaminylphenylalanylarginylisoleuyllysyltyrosylglycylvalylglycylaspartytamylprolylalanylisoleucylalanyllysylaylprolylglycylarginylcysteinylaspartylraginylisoleucylthreonyllysylaspartylhryptophyllysylprolylprolylalanylaspartoleucylthreonylglycyltyrosylleucylleucnylglutaminylalanylvalylasparaginyltrylarginyllysylprolylisoleucylisoleucylganylthreonylglycylleucylglutaminylglututamylphenylalanylarginylvalylthreonylylglycylprolylglycyllysylprolylserylasyrosylalanylarginylaspartylprolylglutalprolylalanylphenylalanylprolyllysylvarginylserylserylvalylserylleucylseryltosylaspartylglycylglycylserylprolylisoalylglutamylvalyllysylarginylalanylaspphylvalylarginylcysteinylasparaginylleylglutaminyllysylthreonylarginylphenylucylmethionylglutamylaspartylthreonylgnylarginylvalyltyrosylalanylvalylasparrylaspartylprolylserylaspartylvalylproyllysylaspartylisoleucylleucylisoleucyhistidylaspartylalanylaspartylleucylarucylarginylalanylglycylvalylthreonylmelylvalyllysylglycylarginylprolylprolylhylseryllysylprolylasparaginylvalylasplisoleucylglycylleucylaspartylisoleucyanylaspartylthreonylphenylalanylleucylvalylasparaginyllysyltyrosylaspartylalylthreonylleucylglutamylasparaginylsertyrosylthreonylisoleucylvalylvalyllysylycylprolylprolylisoleucylasparaginylvucylseryllysylaspartylserylalanyltyrosolylprolylisoleucylisoleucylaspartylglucylasparaginyltyrosylvalylvalylglutammylarginyllysylseryltryptophylserylthrysteinylseryllysylthreonylserylphenylaeucylglutamylglutamylglycyllysylseryltylvalylphenylalanylalanylglutamylasparlglycylaspartylprolylglycylglutamylthrlalanylserylglutaminylthreonylprolylglysylvalylarginylserylvalylseryllysylseyltryptophyllysyllysylprolylhistidylseisoleucylisoleucylglycyltyrosylvalylvaylglutamylglutamylasparaginyllysyltrypyllysylserylleucylserylleucylglutaminycylthreonylglutamylglycyllysylglutamylalylserylalanylglutamylasparaginylglutthreonylprolylserylglutamylisoleucylthylaspartylvalylvalylalanylprolylaspartucylprolylaspartylleucylcysteinyltyrosnylserylasparaginylphenylalanylarginyllysylglycyllysylprolylalanylprolylseryylglutamylaspartylprolylleucylalanyltherylvalylglutamylserylserylalanylvalyloleucylvalyltyrosylaspartylcysteinylglcyllysyltyrosylthreonylisoleucylthreonglycylthreonyllysylglutamylglycylthreolvalylglycyllysylprolylglycylisoleucyllysylphenylalanylaspartylglutamylvalylylthreonylleucyllysyltryptophylalanylpcylglycylserylglutamylisoleucylthreonylutamyllysylarginylaspartylserylvalylalvalylthreonylcysteinylalanylserylalannylphenylalanylarginylvalylthreonylarghionylglutamyltyrosylthreonylphenylalasparaginyllysyltyrosylglycylvalylglycyamylprolylisoleucylvalylalanylarginylhlylprolylaspartylalanylprolylprolylprospartylvalylarginylhistidylaspartylserlthreonylaspartylprolyllysyllysylthreothreonylglycyltyrosylhistidylleucylgluylasparaginylserylleucylleucyltryptophlthreonylprolylisoleucylarginylmethionalylthreonylglycylleucylthreonylglutamylphenylalanylarginylvalylmethionylalaglycylvalylglycyllysylprolylserylleucylalanylleucylaspartylprolylisoleucylasglutamylvalylisoleucylasparaginylisolevalylthreonylleucylisoleucyltryptophylspartylglycylglycylhistidyllysylleucylglutamyllysylarginylaspartylleucylprolllysylalanylasparaginylhistidylvalylasylalanylphenylalanylthreonylvalylthreolglycyllysyltyrosylglutamylphenylalanyasparaginylthreonylalanylglycylalanylimylserylthreonylglutamylthreonylisoleulutamyltyrosylglutamylalanylprolylthrelylthreonylisoleucyllysylaspartylglycyglycylaspartylthreonylisoleucylvalylleisoleucylleucylglycyllysylprolylleucylllysylalanylglycyllysylaspartylisoleucylthreonylglutaminylisoleucylthreonylslmethionylleucylthreonylisoleucyllysylpartylalanylglycylglutamyltyrosylthreosparaginylprolylphenylalanylglycylthrelysylvalylthreonylvalylleucylaspartylvrolylvalylglutamylisoleucylserylasparalanylthreonylleucylthreonyltryptophyltpartylglycylglycylserylprolylisoleucyltamyllysylarginylglutamylthreonylserylylvalylvalylserylglutamylaspartylisolehistidylvalylalanylthreonyllysylleucyllglutamyltyrosylisoleucylphenylalanylanylhistidyltyrosylglycyllysylglycylgluamylprolylvalyllysylmethionylvalylaspaprolylglycylprolylprolylglutamyllysylpalylthreonyllysylasparaginylthreonylalylarginylprolylvalylaspartylaspartylgleonylglycyltyrosylhistidylvalylglutamyrylleucylarginyltryptophylvalylarginylalylserylaspartylleucylarginylcysteinyaminylglutamylglycylserylthreonyltyroserylalanylglutamylasparaginylarginylalylserylglutamylalanylserylaspartylserylanylalanyltyrosylprolylprolylglycylprtidylvalylthreonylaspartylthreonylthrelalanyltryptophylglycyllysylprolylhistylglutamylisoleucylthreonylglycyltyrosnyllysylvalylglycylaspartylglutamylalathreonylthreonylglycylthreonylalanyllenylphenylalanylvalylvalylprolylaspartymyllysyltyrosylasparaginylphenylalanyllasparaginylaspartylalanylglycylvalylgucylprolylaspartylvalylglutamylisoleuconylalanylprolylaspartylphenylalanylgleucylarginylarginylthreonylleucylvalylisoleucylarginylisoleucylphenylalanylvylprolylalanylprolylglutamylvalylthreosparaginylisoleucylasparaginylleucyllynylisoleucylglutamylasparaginylthreonyeucylleucylisoleucylisoleucylprolylgluosylaspartylthreonylglycyllysylphenylalglutamylasparaginylprolylalanylglycyllylasparaginylvalylarginylvalylleucylalylleucylasparaginylleucylarginylprolyysylaspartylserylvalylthreonylleucylhilleucylisoleucylaspartylglycylglycylsenyltyrosylisoleucylvalylglutamyllysylalysylseryltyrosylserylthreonylalanylthllysylcysteinylthreonyltyrosyllysylvalglycylcysteinylglutamyltyrosylphenylalylalanylglutamylasparaginylglutamyltyrolylthreonylglutamylthreonylthreonylglutamylalanylprolylserylprolylprolylasplmethionylaspartylisoleucylthreonyllysyltryptophylprolyllysylprolyllysylhistsoleucylthreonylglycyltyrosylvalylisolllysylglycylserylaspartylglutaminyltryeonylthreonylvalyllysylglycylleucylgluraginylleucylthreonylglutamylglycylglulanylglutaminylvalylmethionylalanylvalylserylalanylprolylarginylglutamylserysylglutamylglutaminylthreonylmethionyleucylarginylglycylisoleucyltyrosylglutyllysylalanylglycylaspartylasparaginyllprolylvalylleucylglycylarginylprolylltophyllysyllysylglycylaspartylglutamineonylglutaminylarginylvalylasparaginyllalanylthreonylserylthreonylisoleucylllglutamylcysteinylvalylarginylserylaspleucylthreonylalanylarginylasparaginylycylaspartylvalylisoleucylthreonylisollisoleucylprolylglycylprolylprolylthrelalanylaspartylglutamylvalylserylserylenylalanylseryltryptophylaspartylprolylycylglycylvalylprolylisoleucylserylasethionylarginylglutaminylthreonylasparalylglutamylleucylalanylthreonylthreononyltyrosyllysylalanylthreonylarginyllutamyltyrosylglutaminylphenylalanylargaginylarginyltyrosylglycylvalylglycylpanyltryptophylisoleucylvalylalanylaspaylvalylprolylglycylprolylprolylglycyltlalanylvalylthreonyllysylaspartylseryltophylhistidylglutamylprolylleucylseryleucylleucylglycyltyrosylhistidylvalylasparaginylglycylisoleucylleucyltryptoylalanylleucylvalylprolylglycylasparagserylglycylleucylthreonylaspartylglycyylalanylarginylvalylisoleucylalanylgluyllysylseryllysylprolylseryllysylprolyalanylleucylaspartylprolylisoleucylaspalylprolylleucylasparaginylisoleucylthhreonylleucyllysyltryptophylalanyllysylglycylphenylalanyllysylisoleucylthreoyllysylarginylaspartylleucylprolylaspallysylalanylasparaginylphenylalanylserlasparaginylglutamylphenylalanylthreontamylaspartylalanylalanyltyrosylglutamalanyllysylasparaginylalanylalanylglycerylglutamylprolylserylaspartylalanyliartylaspartylvalylglutamylalanylprolylyllysylphenylalanyllysylaspartylthreonycylglutamylalanylphenylalanylarginyllylglycylarginylprolylprolylprolylthreolysylaspartylglycyllysylglutamylleucylucylglutamylisoleucyllysylisoleucylalalasparaginylleucylvalylasparaginyllysylaspartylserylglycylalanyltyrosylthreoraginylprolylglycylglycylphenylalanylaanylasparaginylvalyllysylvalylleucylasylglutamylglycylprolylleucylalanylvalyglutamyllysylcysteinylvalylleucylseryleucylaspartylaspartylglycylglycylalanysylisoleucylvalylglutaminyllysylarginyalanyltryptophylthreonylasparaginylvallvalylthreonyllysylleucyllysylvalylthrparaginylglutamyltyrosylisoleucylphenyalylasparaginyllysyltyrosylglycylvalylerylglutamylprolylvalylleucylalanylvallylprolylaspartylprolylprolyllysylaspahreonylisoleucylthreonyllysylaspartylsptophylglycylhistidylprolylaspartylserisoleucylisoleucylasparaginyltyrosylisspartyllysylalanylglycylglutaminylargilasparaginyllysyllysylthreonylleucylthysylvalylserylglycylleucylthreonylglututamylphenylalanylarginylisoleucylmethlalanylglycylisoleucylserylalanylprolyylalanyltyrosyllysylalanylcysteinylaspprolylglycylprolylprolylglycylasparagithreonylserylarginylserylserylisoleucyraginyllysylprolylisoleucyltyrosylaspacylthreonylglycyltyrosylmethionylvalylglutamylglutamylaspartylglutamyltryptolprolylprolylalanylglycylleucyllysylalleucylthreonylglycylleucylthreonylglutrosyllysylisoleucylarginylisoleucyltyrglutamylglycylleucylglycylglutamylprolonylprolyllysylalanylglutamylaspartylautamylisoleucylglutamylleucylaspartylalvalylthreonylisoleucylarginylalanylcyylleucylphenylalanylvalylprolylisoleucrolylglutamylvalyllysyltryptophylalanymylserylleucylaspartyllysylalanylserylryltyrosylthreonylleucylleucylisoleucyinylarginylphenylalanylaspartylserylglonylvalylglutamylasparaginylserylserylanylvalylasparaginylvalylarginylvalyllolylprolylglutaminylaspartylleucyllysyylthreonylserylvalylthreonylleucylthreeucylleucylaspartylglycylglycylseryllyisoleucylvalylglutamyllysylarginylgluttyrosylserylthreonylvalylalanylthreonyhreonylseryltryptophyllysylvalylaspartlglycylcysteinylseryltyrosyltyrosylpheutamylasparaginylglutamyltyrosylglycylutamylthreonylalanylglutamylserylvalylylleucylprolylprolylglycyllysylisoleuclylthreonylarginylasparaginylserylvalylysylprolylglutamylhistidylaspartylglylglycyltyrosylisoleucylvalylglutamylmelserylaspartyllysyltryptophylalanylthrsylvalylthreonylglutamylalanylthreonylcylglutaminylglycylglutamylglutamyltyrrylalanylglutaminylasparaginylglutamylolylarginylglutaminylleucylserylvalylptylleucylvalylisoleucylprolylprolylalanylalanylasparaginylthreonylphenylalanutamylaspartylleucyllysylvalylaspartylcylarginylprolylthreonylprolylalanylvaspartylasparaginylvalylprolylleucyllysvalylasparaginylalanylglutamylserylthrserylleucylleucylthreonylisoleucyllysyamylaspartylvalylglycylhistidyltyrosylginylserylalanylglycylglutamylalanylisginylvalylisoleucylvalylleucylaspartylylglycylprolylvalyllysylmethionylaspartylserylisoleucylthreonylleucylseryltrsylaspartylglycylglycylserylserylisoleoleucylvalylglutamyllysylarginylaspartonyltryptophylglutaminylisoleucylvalylylthreonylthreonylisoleucyllysylalanylglycylcysteinylglutamyltyrosylglutaminlalanylglutamylasparaginylarginyltyrosucylasparaginylserylglutamylprolylthrelylphenylalanyllysylvalylprolylglycylplvalylthreonylleucylserylserylarginylalutaminyltryptophylasparaginylglutamyllycylserylarginylvalylisoleucylglycyltlysylglutamylarginylasparaginylserylisucylasparaginyllysylthreonylprolylisolhenylalanyllysylthreonylthreonylglycylutamyltyrosylglutamylphenylalanylarginylisoleucylvalylglycylisoleucylglycyllmylcysteinyltyrosylvalylalanylarginylalprolylglycylarginylprolylglutamylalanginylasparaginylserylvalylthreonylleuclylthreonyltyrosylaspartylglycylglycylrosylisoleucylvalylglutamyllysyllysylgginyltryptophylmethionyllysylalanylseroleucylisoleucylaspartylthreonylhistidglycylleucylvalylglutamylaspartylhistiylarginylvalylisoleucylalanylarginylasnylalanylserylglutamylprolylserylglutaylthreonylalanylarginylaspartylglutamyoleucylserylmethionylaspartylprolyllysucylvalylvalylhistidylalanylglycylglutrtylalanylaspartylisoleucyltyrosylglyclisoleucylglutaminyltryptophylisoleucymylleucylserylasparaginylthreonylalanylserylthreonylaspartylphenylalanylalanlaspartylalanylvalylarginylvalylasparteucylleucyllysylalanyllysylasparaginylylvalylthreonylvalylasparaginylvalyllyglycylprolylprolylglutamylglycylprolylthreonylalanylglutamyllysylcysteinyltholylprolylleucylglutaminylaspartylglycucylasparaginyltyrosylisoleucylvalylgllserylarginylleucylvalyltryptophylthreinylvalylglutaminylthreonylleucylserylcylleucylglutamylglycylasparaginylglutnylisoleucylmethionylalanylvalylasparalutamylprolylleucylglutamylserylglutamginylprolylphenylalanylvalylvalylprolylylglutamylvalylthreonylthreonylvalyltsoleucylvalylvalyltryptophylglutamylarlglycylserylglutamylisoleucylleucylglyrginylaspartyllysylglutamylglycylisolelcysteinylhistidyllysylarginylleucyliseucylarginylvalylthreonylglycylleucyliaspartyltyrosylglutamylphenylalanylarginylalanylalanylglycylleucylserylglutayltyrosylglutaminyllysylalanylcysteinylprolylglycylprolylprolylasparaginylasspartylisoleucylthreonylarginylserylsetophylseryllysylprolylisoleucyltyrosylylisoleucylglutaminylglycyltyrosylisolartylvalylasparaginylvalylglycylglutamnylthreonylprolylprolylthreonylglycyliaraginylisoleucylglutamylvalylglutamyldylglutamyltyrosylasparaginylphenylalasoleucylasparaginyllysylalanylglycylvartylvalylprolylglycylprolylisoleucylisucylglutamylalanylprolylaspartylisoleuamylleucylarginyllysylisoleucylisoleucglycylglycylserylleucylarginylleucylphglycylarginylprolylthreonylprolylglutaalylaspartylglycylglutamylisoleucylargoleucylaspartylvalylthreonylserylseryllleucylaspartylasparaginylvalylasparagyllysyltyrosylthreonylleucylthreonylleycylthreonyllysylserylalanylphenylalancylaspartylthreonylprolylserylprolylprlthreonylglutamylisoleucylthreonyllysyreonyltryptophylglutamylprolylprolyllelysylisoleucyllysylasparaginyltyrosyliutamylalanylthreonylarginyllysylseryltlasparaginylcysteinylhistidyllysylaspalaspartylglutaminylleucylglutaminylgluosylphenylalanylarginylvalylthreonylalsylglycylisoleucylglycylleucylprolylallprolylisoleucyllysylvalylalanylglutamglycyllysylisoleucylthreonylvalylasparraginylserylvalylserylleucylseryltrypttidylaspartylglycylglycylseryllysylisoleucylvalylglutamylmethionylglutaminylyltryptophylserylglutamylcysteinylalanminylalanylvalylisoleucylthreonylasparlglutamylglutamyltyrosylleucylphenylalaraginylglutamyllysylglycylarginylseryanylvalylprolylisoleucylvalylalanyllysmylprolylaspartylvalyllysylprolylalanyvalylglutaminylvalylglycylglutaminylasalylprolylisoleucylserylglycylarginylpreonyltryptophylthreonyllysylaspartylgnylthreonylthreonylarginylisoleucylaspeucylaspartylleucylthreonylthreonylleunylhistidyllysylaspartylaspartylglycylcylthreonylvalylalanylasparaginylvalyllanylserylisoleucylglutamylisoleucylvalaspartylprolylprolyllysylglycylprolyltylvalylserylalanylglutamylserylisoleuaraginylprolylprolylleucyltyrosylthreosoleucylthreonylasparaginyltyrosylisolartylthreonylthreonylthreonylthreonylvylalanylthreonylvalylalanylarginylthrellysylleucyllysylthreonylglycylthreonynylarginylisoleucylphenylalanylalanylgcylglutaminylserylphenylalanylalanylleeucylvalylalanylglutaminyltyrosylprolyolylprolylglycylthreonylprolylphenylalryllysylaspartylserylmethionylvalylisolutamylprolylvalylasparaginylasparaginucylglycyltyrosylhistidylleucylglutamyinylserylisoleucylleucyltryptophylthrenylisoleucylisoleucylhistidylaspartyltlanylglutaminylasparaginylleucylglutamrosylglutamylphenylalanylarginylvalylteucylvalylglycylvalylglycyllysylalanylysteinyltyrosylvalylalanylarginylasparlylglycylthreonylprolylglutamylprolylisparaginylglutamylisoleucylthreonylleulprolylvalyltyrosylaspartylglycylglycycyltyrosylisoleucylvalylglutamyllysylalycylarginyltryptophylmethionyllysylalginylvalylisoleucylglutamylthreonylgluylglycylleucylthreonylglutamylaspartylnylalanylarginylvalylisoleucylalanyllynylisoleucylseryllysylprolylserylasparylthreonylalanyllysylaspartylglutamylveucylserylmethionylaspartylprolyllysylisoleucylvalylvalylasparaginylalanylglinylleucylglutamylalanylaspartylvalylhlthreonylisoleucylglutamyltryptophyllemylisoleucylglutamylglutamylserylalanyysylasparaginylthreonylaspartylphenylaylvalyllysylaspartylalanylisoleucylargutaminyltyrosylisoleucylleucylarginylacylseryllysylserylphenylalanylprolylvaaspartylarginylprolylglycylprolylprolylvalylthreonylglycylvalylthreonylserylreonyltryptophylserylprolylprolylleucylaspartylisoleucylserylhistidyltyrosylmylthreonylserylarginylleucylalanyltrylglutamylvalylvalylthreonylasparaginyleucylleucylglutamylglycylasparaginylglylisoleucylmethionylalanylvalylasparagutamylprolylleucylglutamylserylalanylpaginylprolylphenylalanylvalylleucylproylglutamylvalylthreonylasparaginylisolnylthreonylvalylcysteinyltryptophylaspspartylglycylglycylserylglutamylisoleualylglutamyllysylarginylaspartylarginyhylisoleucyllysylcysteinylasparaginyllaspartylleucylarginylleucylarginylvalyylaspartylhistidylglutamyltyrosylglutanylglutamylasparaginylalanylalanylglyclylalanylthreonylvalyltyrosyltyrosyllyylphenylalanyllysylprolylglycylprolylpdylisoleucylvalylaspartylthreonylthreoreonylleucylalanyltryptophylglycyllysyylglycylserylglutamylisoleucylleucylglcylcysteinyllysylalanylaspartylglutamyylisoleucylvalylthreonylprolylglutaminhreonylarginylphenylalanylglutamylisolylhistidylglutaminylglutamyltyrosyllysnylleucylasparaginyllysylvalylglycylleylvalylprolylglycylthreonylvalyllysylptamylalanylprolylglutamylleucylaspartyrginyllysylglycylisoleucylvalylvalylarrginylisoleucylhistidylisoleucylprolyllmethionylprolylglutamylisoleucylthreoutamylglycylglutamylphenylalanylthreonucylglutamyllysylglycylvalylasparaginyylisoleucylaspartylasparaginylcysteinyalanylglycyllysyltyrosylisoleucylleucylserylglycylseryllysylserylalanylphenyleucylaspartylthreonylprolylglycylprolalanylvalyllysylglutamylvalylarginyllyeucylvalyltryptophylglutamylprolylprollycylalanyllysylvalyllysylasparaginyltginylglutamylserylthreonylarginyllysylserylseryllysylcysteinylseryllysylthreamylasparaginylleucylthreonylglutamylghenylalanylarginylvalylmethionylalanylanylglycylvalylglycylvalylprolylvalylgalyllysylalanylalanylglutamylprolylprolthreonylleucylthreonylaspartylvalylseylleucylmethionyltryptophylglutamyllyscylglycylserylarginylvalylleucylglycyllutaminylprolyllysylglycylthreonylglutlylalanylglutamylseryllysylvalylcysteinylglycylleucylserylserylglycylglutamilanylarginylvalyllysylalanyltyrosylaspylaspartylprolylarginylvalylleucylglycsylaspartylleucylthreonylisoleucylglutrolylphenylalanylasparaginylthreonyltyglycylglutamylaspartylleucyllysylisoleleucylglycylarginylprolylarginylprolylvalyllysylaspartylglycylglutamylprolylylarginylvalylasparaginylvalylglutamylthreonylvalylleucylhistidylisoleucyllypartylaspartylphenylalanylglycyllysyltreonylasparaginylserylalanylglycylthreylleucylserylvalylisoleucylvalylleucylylvalylglycylprolylvalylarginylphenylaylaspartylphenylalanylvalylvalylisoleulylalanyltyrosylthreonylglycylglycylcyraginyltyrosylisoleucylvalylglutamyllyhreonylthreonylthreonyltryptophylhistilvalylalanylarginylthreonylthreonylisoucyllysylthreonylglycylthreonylglutamyylisoleucylphenylalanylalanylglutamylaserylalanylprolylleucylaspartylseryllynyltyrosylprolylphenylalanyllysylglutareonylprolylphenylalanylvalylthreonylsaminylmethionylleucylvalylglutaminyltrasparaginylaspartylglycylglycylthreonyylhistidylleucylglutamylglutaminyllysyucylleucyltryptophylvalyllysylleucylasylglutaminylaspartylthreonyllysylphenyeucylaspartylglutamylglycylleucylglutavalylserylalanylglutamylasparaginylisoylprolylseryllysylvalylserylglutamylcyylaspartylprolylcysteinylaspartylprolylanylisoleucylvalylisoleucylthreonylareonylleucyllysyltryptophyllysyllysylprylseryllysylisoleucylthreonylglycyltyrlaspartylleucylprolylaspartylglycylargerylphenylalanylthreonylasparaginylvalnylalanylthreonylvalylserylglycylleucyinyltyrosylglutamylphenylalanylarginylnylalanylalanylglycylasparaginylphenyltylserylserylglycylalanylisoleucylthreoleucylaspartylalanylprolylasparaginylltyrosyllysylaspartylvalylisoleucylvalthreonylphenylalanylvalylleucylglutamyyllysylprolylisoleucylprolylaspartylvalglycyllysylglutamylleucylglutamylglutionylglutamylisoleucyllysylserylthreonhreonylleucylvalylvalyllysylaspartylcyrtylglycylglycylglutaminyltyrosylisoleylvalylglycylglycylthreonyllysylserylillysylvalylleucylaspartylarginylprolylylleucyllysylvalylthreonylglycylvalylttyrosylleucylalanyltryptophylasparagintylglycylglycylalanylasparaginylisoleuleucylglutamyllysylarginylglutamylthreylthreonylglutaminylvalylserylthreonylasparaginyltyrosyllysylvalylthreonyllynylglutamyltyrosylisoleucylphenylalanyparaginyllysyltyrosylglycylisoleucylglylglycylprolylvalylthreonylalanylcysteolylprolylglycylprolylprolylserylthreooleucylthreonyllysylaspartylserylmethinylarginylprolylvalylaspartylaspartylglglutamylglycyltyrosylisoleucylleucylgtamylglycylvalylarginyltryptophylthreosylthreonylleucylthreonylaspartylleucylycylleucylthreonylglutamylglycylhistiarginylvalylalanylalanylglutamylasparalutamylprolylserylglutamylprolylserylvlcysteinylaspartylalanylleucyltyrosylpsparaginylprolyllysylvalylthreonylaspaalylserylleucylalanyltryptophylseryllyycylglycylalanylprolylvalyllysylglycylglutamylalanylalanylalanylaspartylglutinylthreonylprolylprolylthreonylglycylylphenylalanylthreonylvalylthreonyllyseonylglutamyltyrosylasparaginylphenylalisoleucylasparaginylserylglutamylglycreonylleucylprolylglycylserylvalylvalyleucylglutamylprolylprolylglutamylisolpartylleucylarginyllysylvalylvalylvalyonylleucylarginylleucylphenylalanylvalylprolylglutamylprolylglutamylvalyllysamylglycylisoleucylleucylthreonylasparglutamylvalylthreonylserylserylphenylaoleucylaspartylasparaginylvalylthreonyycylarginyltyrosylasparaginylleucylthraginylserylglycylseryllysylthreonylalalarginylvalylleucylaspartylserylprolylucylthreonylisoleucylarginylglutamylvaonylleucylseryltryptophylglutamylprolylglycylalanyllysylisoleucylthreonylaspyllysylarginylglutamylthreonylthreonylonylisoleucylthreonylasparaginylasparathreonylphenylalanylarginylisoleucylglutamylglycylcysteinylseryltyrosyltyrosnylserylasparaginylglutamyltyrosylglycglutamylthreonylthreonylglutamylprolylrolylleucylprolylprolylglycylarginylvathreonylarginylasparaginylthreonylalanlutamyllysylprolylglutamylserylaspartyeonylglycyltyrosylvalylvalylglutamylmelserylglutamyllysyltryptophylserylthrellysylthreonylleucylglutamylalanylthrenylalanylglycylglutamylglutamyltyrosylalanylvalylasparaginylglutamyllysylglylglutaminylleucylglycylvalylprolylvalyeucylglutamylisoleucyllysylprolylserylylhistidylthreonylphenylalanylasparagilutaminylleucyllysylisoleucylaspartylvginylprolylglutaminylalanylthreonylvalaspartylglycylglutaminylthreonylleucyllvalylasparaginylvalylserylserylserylllserylisoleucyllysylglutamylalanylseryreonyltyrosylglutamylleucylcysteinylvalserylisoleucylthreonylvalylprolylisollleucylaspartylarginylprolylglycylprollisoleucylaspartylglutamylvalylserylcyylisoleucylseryltryptophylasparaginylplycylglycylcysteinylglutaminylisoleucylylglutamyllysyllysylglutamylthreonylthylhistidylisoleucylvalylserylglutaminerylisoleucyllysylisoleucylvalylarginylutamyltyrosylglutaminylphenylalanylarparaginylarginyltyrosylglycyllysylserylalanylvalylvalylalanylglutamyltyrosylglycylprolylprolylglycylthreonylprolylyllysylserylthreonylmethionylleucylvalprolylvalylasparaginylaspartylglycylglltyrosylhistidylleucylglutamyltyrosyllcylleucyltryptophylseryllysylalanylaspylalanylaspartylthreonylglutaminylvalylglutamylglycylleucylmethionyltyrosylganylglutamylasparaginylisoleucylalanylseryllysylserylcysteinylglutamylprolyllylcysteinylaspartylprolylprolylglycylylasparaginylisoleucylthreonylarginyllophylseryllysylprolylhistidyltyrosylascylthreonylglycyltyrosylisoleucylvalyllprolylaspartylglycylarginyltryptophylsylthreonylasparaginylisoleucylglutaminylglutamylvalylthreonylglutamylleucylrginyltyrosylglutamylphenylalanylarginaraginylalanylalanylaspartylserylvalylylthreonylglycylprolylisoleucylisoleucutamylprolylprolylarginylvalylmethionylanylarginylaspartylvalylisoleucylvalylleucyllysylisoleucylasparaginylalanyllprolylleucylprolylvalylisoleucylserylisoleucylglutamylisoleucylglutamylgluttamylisoleucylisoleucylserylthreonylasucylleucylthreonylvalyllysylaspartylcytylthreonylglycylglutaminyltyrosylvalyylvalylalanylglycylthreonylarginylseryyllysylvalylleucylaspartyllysylprolylgleucylglutamylisoleucylasparaginylglyccysteinylserylleucylseryltryptophylglyspartylglycylglycylalanylaspartylisolerginyllysyllysylarginylglutamylthreonylthreonylisoleucylcysteinylglutamylglylthreonylserylcysteinyllysylvalylthreoraginylglutamyltyrosylisoleucylphenylalasparaginyllysyltyrosylglycylvalylglylvalylalanylisoleucyllysylalanylleucylalylprolylserylprolylprolylthreonylserrylvalylthreonyllysylglutamylserylmethhylserylarginylprolylglutamylserylaspacylserylglycyltyrosylisoleucylisoleucylasparaginylserylleucylarginyltryptophlysylprolylvalyltyrosylaspartylleucylaleucylarginylglutamylglycylcysteinylglvalyltyrosylalanylglutamylasparaginylarolylserylglutamylthreonylserylprolyllaspartylprolylvalylphenylalanylleucylplyllysylisoleucylvalylaspartylserylglyreonylisoleucylalanyltryptophylvalyllyglycylglycylalanylprolylisoleucylthreoyltyrosyllysyllysylserylaspartylaspartreonylserylisoleucylglutaminylserylleuosylthreonylisoleucylserylglycylleucylltyrosylvalylphenylalanylarginylvalyllglycylalanylserylaspartylprolylserylasminylisoleucylalanyllysylglutamylargincylphenylalanylaspartylisoleucylaspartlthreonylleucylisoleucylvalyllysylalanonylmethionylthreonylvalylprolylphenylylprolylasparaginylvalylleucyltryptophspartylleucylarginylthreonylarginylalaonylaspartylserylarginylthreonylseryllaginylalanylasparaginylarginylasparagihreonylleucylthreonylisoleucylglutaminalanylserylleucylthreonylleucylvalylvaprolylglycylprolylprolylthreonylasparaylaspartylvalylthreonyllysylglutamylseaspartylvalylprolylglutamylasparaginylyllysylasparaginyltyrosylhistidylisolenylseryllysyllysylalanyltryptophylvalyaginylcysteinylasparaginylarginylleucyraginylleucylglutaminylglutamylglycylalanylarginylvalylserylglycylglutamylasvalylglycylisoleucylprolylalanylglutamysylisoleucylthreonylglutamyllysylprolcylglycylvalylthreonylserylisoleucylseylthreonyltryptophylleucyllysylprolylgserylarginylisoleucylvalylhistidyltyroutamyllysylglycylglutaminyllysylasparalanylvalylalanyllysylserylthreonylhistucylarginylglutamylasparaginylserylglularginylvalylphenylalanylalanylglutamyeucylserylaspartylprolylarginylglutamylisoleucyllysylglutamylglutaminylleucycylaspartylmethionyllysylasparaginylphylvalyltyrosylvalylarginylalanylglycylartylisoleucylprolylisoleucylserylglycthreonylleucylserylarginylaspartylglycnylmethionylarginylphenylalanylasparagylalanylglutamylasparaginylleucylthreolutamylserylvalylthreonylalanylaspartyisoleucylthreonylalanylalanylasparaginysylalanylphenylalanylisoleucylasparagylarginylprolylglycylprolylprolylthreoerylaspartylisoleucylthreonylglutamylgltryptophylglutamylprolylprolyllysyltyminylvalylthreonylasparaginyltyrosylisamylthreonylserylthreonylalanylvalyltrlanylthreonylvalylalanylarginylthreonynyllysylleucylthreonylthreonylglycylglylalanylarginylisoleucyllysylalanylgluglycylisoleucylserylaspartylhistidylisvalylthreonylvalyllysylleucylprolyltyrlylprolylserylthreonylprolyltryptophylylarginylglutamylserylisoleucylthreonymylprolylvalylserylasparaginylglycylglsylhistidylleucylglutamylmethionyllysyleucylleucyltryptophylglutaminyllysylaleucylarginylthreonylthreonylhistidylpylisoleucylserylalanylglycylleucylisolinylvalyltyrosylalanylglutamylasparagiylprolylserylhistidylprolylserylglutamspartylalanylcysteinylglutamylprolylprsoleucylthreonylaspartylisoleucylserylylseryltryptophylglutaminylglutaminylpylglycylseryllysylisoleucylthreonylglyinylarginylaspartylleucylprolylaspartyylalanylserylphenylalanylthreonylasparglutaminylphenylalanylthreonylisoleucylasparaginylserylglutaminyltyrosylglutlanylalanylarginylasparaginylalanylvalnylprolylserylglutamylvalylvalylglycylleucylaspartylseryltyrosylglycylglycylrolylleucylglutamyltyrosylthreonylglutanylglycylthreonylserylvalyllysylleucylycyllysylprolylalanylprolylthreonylisylaspartylaspartyllysylglutamylleucylgeucylvalylcysteinylvalylglutamylasparaalanylserylisoleucylleucylisoleucyllysylasparaginylserylglycylcysteinyltyrossparaginylalanylmethionylalanylserylalinylvalylglutaminylisoleucylleucylaspaycylglycylprolylisoleucylglutamylphenyanylglutamyllysylisoleucylthreonylleucylalanylaspartylaspartylglycylglycylalyrosylisoleucylvalylglutamyllysylarginvalyltryptophylserylmethionylvalylseryamylcysteinylisoleucylisoleucylthreonyeucyllysylglycylasparaginylglutamyltyrylarginylalanylvalylasparaginyllysyltyrolylleucylglutamylserylaspartylserylvylphenylalanylvalylthreonylprolylglycylutamylvalylthreonyllysylisoleucylthrehreonylvalylvalyltryptophylserylarginylglycylserylaspartylisoleucylserylglyclysylarginylaspartyllysyllysylserylleulvalylleucyllysylglutamylthreonylisolelutaminyllysylvalylthreonylglycylleucypartyltyrosylglutaminyltyrosylarginylvalanylalanylglycylglutaminylglycylprolrylglutamylphenylalanyltyrosyllysylalaartylprolylprolylglycylprolylprolylalaanylaspartylserylthreonyllysylserylsertophylseryllysylprolylvalyltyrosylaspaeonylglycyltyrosylvalylvalylglutamylismylglutamylglutamylglutamyltryptophyltsylglycylglutamylvalylarginylthreonyltylasparaginylleucyllysylprolylglycylvalanylarginylvalylserylalanylvalylasparylglycylglutamylprolylisoleucylglutamyvalylglutaminylalanyllysylaspartylisolamylisoleucylaspartylleucylaspartylvalalylisoleucylalanyllysylalanylglycylgleucylisoleucylprolylphenylalanyllysylgnylvalylthreonyltryptophylarginyllysylcylglycylserylaspartylalanylarginyltyrylthreonylaspartylserylserylserylleucyminylvalylthreonylarginylasparaginylasleucylleucylthreonylisoleucylglutamylaprolyllysylserylserylthreonylvalylserynylprolylalanylalanylcysteinylglutaminstidylvalylserylarginylglycylthreonylvspartylprolylprolylleucylisoleucylaspalisoleucylasparaginyltyrosylvalylisolenylthreonyllysylarginylthreonyltryptoplcysteinylserylserylthreonylserylphenyleucylserylglutamyllysylthreonylprolyllarginylvalylleucylalanylglutamylasparcylglycylglutamylprolylcysteinylglutamyllysylalanylalanylglutamylvalylprolyllleucylserylmethionyllysylaspartylseryleucylleucylseryltryptophylthreonyllyslglycylglycylserylvalylisoleucylthreonarginyllysylglycyllysylglycylglutamylgtidylalanylglycylisoleucylseryllysylthtamylvalylserylglutaminylleucyllysylgltamylphenylalanylarginylvalylphenylalasylglycylleucylserylaspartylprolylvalyucylthreonylvalyllysylglutamylleucylismylvalylaspartylleucylserylaspartylisoalylthreonylvalylarginylisoleucylglycyucylglutamylleucylprolyltyrosyllysylgleucylseryltryptophylleucyllysylaspartymylserylglutamylphenylalanylvalylargintamylasparaginyllysylisoleucylthreonyllalanyllysyllysylglutamylhistidylglycyleucylleucylaspartylasparaginylalanylvvalylprolylisoleucylthreonylvalylisolelseryllysylprolyllysylglycylprolylisoltamylisoleucyllysylalanylaspartylserylaspartylvalylprolylglutamylaspartylaspsoleucylthreonylcysteinyltyrosylserylilthreonylserylglutaminylthreonylasparaysteinylserylserylvalylalanylarginylthlprolylasparaginylleucylvalyllysylaspaphenylalanylarginylvalylarginylalanylgcylvalylserylglutaminylprolylleucylvalalanyllysylhistidylglutaminylphenylalaylprolylglycyllysylprolylvalylisoleucyylaspartylglycylmethionylserylleucylthlvalyltyrosylaspartylglycylglycylserylanylhistidylvalylglutamyllysyllysylgluylleucyltryptophylglutaminyllysylvalylucylserylglycylarginylglutamyltyrosylaylglutamylglycylleucylaspartyltyrosylgrosylalanylglutamylasparaginylserylalalaspartylprolylseryllysylphenylalanyltvalylaspartylprolylprolylglycylthreonyrtylvalylthreonylarginylglutamylthreonophylasparaginylprolylprolylleucylargioleucylvalylglycyltyrosylserylisoleucyylasparaginylglutamylarginyltryptophylnylalanylthreonylaspartylvalylserylgluonylvalylthreonylglycylleucylserylprolmylphenylalanylarginylisoleucylisoleucylglycylthreonylisoleucylserylprolylprisoleucylisoleucylmethionylthreonylarglprolylprolylisoleucylvalylglutamylphelphenylalanylaspartylglycylleucylisoleylserylleucylarginylisoleucyllysylalanlprolylvalylprolylarginylvalylthreonylglycylvalylglutamylisoleucylglutamyllyonylglutamylisoleucylthreonylasparaginylleucylphenylalanylvalylarginylaspartidylarginylglycylvalyltyrosylthreonylvlanylserylglycylserylalanyllysylalanylylglutaminylaspartylthreonylprolylglyccylarginylphenylalanylthreonylasparagiysylmethionylthreonylleucyltryptophyltasparaginylaspartylglycylcysteinylalanrosylisoleucylisoleucylglutamyllysylarucylalanyltryptophylalanylleucylisoleuutamylalanylglutaminylseryltyrosylthreucylasparaginylglycylasparaginylglutamnylvalylserylalanylvalylasparaginyllysnylprolylleucylaspartylserylaspartylprucylglutaminyltyrosylthreonylvalylprolylprolylglutamylprolylserylasparaginylerylisoleucylthreonylleucylthreonyltryerylaspartylglycylglycylserylglutamyliisoleucylleucylglutamylarginylarginylgyltryptophylvalyllysylvalylisoleucylseglutamylthreonylarginylphenylalanyllysglutamylglycylasparaginylglutamyltyrosmethionylalanylglutamylasparaginylalanylserylglycylisoleucylserylarginylleuctamylprolylvalylasparaginylprolylprolyyllysylvalylthreonylaspartylthreonylseeucylglutamyltryptophylseryllysylprolycylmethionylglutamylisoleucylisoleucylamylmethionylcysteinyllysylthreonylasphistidyllysylvalylasparaginylalanylglunylarginyltyrosylthreonylvalylthreonyllglutamylglutamyltyrosyllysylphenylalaasparaginylglycylalanylglycyllysylglycylthreonylglycylthreonylisoleucyllysyleonylalanylprolylglutamylleucylaspartyphenylalanyllysylglutaminylthreonylhislanylserylisoleucylarginylleucylphenylnylglycylarginylprolylthreonylprolylthylprolylaspartylserylasparaginylleucylleucylhistidylthreonylthreonylaspartyllthreonylvalylglutamylasparaginylcystepartylalanylglycyllysyltyrosylthreonylnylasparaginylserylglycylseryllysylseronylvalyllysylvalylleucylaspartylthreoolylisoleucylthreonylphenylalanyllysylerylalanylthreonylleucylmethionyltryptylaspartylglycylglycylalanylarginylisoalylglutamyllysylarginylglutamylalanyllutaminylvalylisoleucylserylglutamyllyylisoleucylphenylalanyllysylvalylasparlycylvalylprolyltyrosyltyrosylphenylalaraginylglutamyltyrosylglycylvalylglycionylprolylglutamylprolylisoleucylvalyolylalanylprolylprolylarginylarginyllenylseryllysylserylserylalanylvalylleucaspartylhistidylaspartylglycylglycylserosylleucylleucylglutamylmethionylargiylleucyltryptophylvalylglutamylalanylglleucylthreonylphenylalanylthreonylvalllysylthreonylglutamyltyrosylglutamylpysylasparaginylaspartylalanylglycyltyrmylalanylphenylalanylserylserylvalylisglutaminylisoleucylglutamylprolylthreoylisoleucylthreonylasparaginylglutaminysylalanylglycylserylprolylphenylalanyylisoleucylserylglycylarginylprolylalayllysylleucylglutamylglutamylmethionylspartylarginylvalylserylisoleucylthreoinylthreonylthreonylleucylthreonylvalyglycylaspartylserylglycylarginyltyrosyutamylasparaginylthreonylalanylglycylvalylthreonylvalylvalylvalylisoleucylglhreonylglycylprolylisoleucylglutamylvaylserylcysteinylvalylleucylseryltryptoylglycylglycylglycylthreonylglutamylisoleucylvalylglutamyllysylarginylglutamtryptophylglutaminylleucylvalylasparagonylglutaminylisoleucyllysylvalylthreoylmethionylglutamyltyrosylserylphenylaasparaginylarginylphenylalanylglycylvarylalanylprolylisoleucylisoleucylalanyvalylprolylprolylserylalanylprolylthreylhistidylvalylserylalanylasparaginylatryptophylglutamylglutamylprolyltyrosyysylisoleucylisoleucylglycyltyrosyltrymylarginylasparaginylthreonylisoleucylsparaginyllysylvalylprolylcysteinylleusyllysylvalylthreonylglycylleucylvalylglutaminylphenylalanylarginylthreonyltalanylglycylvalylseryllysylalanylserylleucylmethionylalanylglutaminylasparagglycylarginylprolylglutamylvalylthreonthreonylvalylserylleucylisoleucyltryptaspartylglycylglycylseryllysylvalylvalutamylarginyllysylprolylvalylserylglutltryptophylleucyllysylcysteinylasparagrylaspartylasparaginylphenylalanylphenleucylserylglutamylglycylaspartylthreoylvalylleucylalanyllysylasparaginylalaysylglycylserylglutamylserylthreonylglinylaspartylglutamyltyrosylalanylprolyartylalanylarginylleucylhistidylglycyllarginylalanylglycylserylaspartylleucyylglycylglycyllysylprolylglutamylprolyhreonyllysylglycylaspartyllysylglutamymyllysylvalylserylleucylglutaminyltyrothreonylalanylvalylisoleucyllysylphenylaspartylserylglycyllysyltyrosylthreonylalanylserylglycylthreonyllysylalanylalylleucylaspartylserylprolylglycylproylvalylserylarginylvalylthreonylglutameucylalanyltryptophylserylleucylprolylcylalanylglutamylisoleucylthreonylhistginylarginylglutamylthreonylserylarginsoleucylvalylglutamylglycylglutamylcyssylvalylvalylthreonylarginylleucylisoltamyltyrosylisoleucylphenylalanylarginllysyltyrosylglycylprolylglycylvalylprlisoleucylvalylalanylarginylasparaginyprolylserylprolylprolylglycylisoleucylreonylglycyllysylglutamylhistidylisoleptophylthreonyllysylprolylglutamylserytamylisoleucylserylasparaginyltyrosyllmyllysylglutamylserylleucylarginyltrypyllysylaspartyltyrosylvalylvalyltyrosyvalylthreonylserylleucylmethionylglutautaminylphenylalanylarginylvalylthreonlglycylasparaginylserylglutamylprolylsphenylalanylisoleucylserylcysteinylargnylprolylglycylprolylprolylserylalanylonylthreonyllysylhistidylserylisoleucyllysylprolylmethionyltyrosylaspartylglvalylglycyltyrosylvalylleucylglutamylmrtylthreonylaspartylglutaminyltryptophylasparaginylalanylthreonylisoleucylarnylalanylthreonylvalylprolylaspartylleysyltyrosylserylphenylalanylarginylvallysylglycylmethionylserylglutamyltyrosglutamylisoleucylglutamylprolylvalylglucylprolylaspartylleucylglutamylleucylsylthreonylvalylthreonylisoleucylarginnylleucylmethionylvalylserylvalylseryllisoleucylthreonyltryptophylseryllysylucylalanylserylarginylalanylisoleucylitamylseryltyrosylserylleucylleucylisolinylarginyltyrosylaspartylalanylglycylylalanylglutamylasparaginylglutaminylsonylvalylleucylvalyllysylvalyltyrosylasteinylprolylserylvalyllysylvalyllysylrylvalylthreonylisoleucylthreonyltryptlisoleucylaspartylglycylglycylalanylprtyrosylisoleucylvalylglutamyllysylargiinylalanylphenylalanyllysylthreonylvalyllysylthreonylleucyltyrosylarginylisolglycylthreonylmethionylhistidyltyrosyylglutamylasparaginylisoleucyltyrosylgysteinylglutamylthreonylserylaspartylaalylprolylleucylvalylprolylalanyllysylylthreonyllysylserylthreonylvalylthreosylprolylleucyltyrosylaspartylglycylglltyrosylvalylleucylglutamylalanylcysteylarginyltryptophylmethionyllysylvalylnylvalylleucylglutamylhistidylthreonylglutamylglycylglutamylglutaminyltyrosyarginylalanylglutaminylasparaginylglutolylarginylglutamylthreonylvalylthreonlaspartylleucylarginylvalylleucylprolyylthreonylmethionylprolylglutaminyllyslylalanylglycylarginylprolylvalylglutacylalanylglycylarginylprolylprolylprolalanylphenylalanylalanylglycylseryllyslarginylvalylthreonylvalylglutamylthrellysylleucylthreonylisoleucylarginylglnylaspartylthreonylglycylglutamyltyrosasparaginylvalylthreonylglycylthreonylcyllysylvalylisoleucylisoleucylleucylalthreonylglycylprolylisoleucyllysylisortylalanylthreonylserylisoleucylthreonrolylprolylglutamylleucylaspartylglycyltyrosylvalylvalylglutamylglutaminylarrolylglycyltryptophylleucylprolylvalylnylserylthreonylphenylalanyllysylphenylglutamylglycylasparaginylglutamyltyronylalanylthreonylasparaginylarginylphetyrosylleucylglutaminylserylglutamylvalserylserylisoleucylarginylisoleucylprnylleucylglutaminylisoleucylphenylalanglycylmethionylthreonylleucylthreonyltlaspartylaspartylglycylglycylserylglutleucylvalylglutamylarginyllysylglutamyryptophylvalylarginylvalylasparaginyllylthreonylarginyltyrosylarginylserylthlycylleucylglutamyltyrosylglutamylhistucylasparaginylalanylarginylglycylserylseryllysylprolylisoleucylvalylalanylmylprolylprolylglycyllysylprolylglutamieonylaspartylthreonylthreonylarginylthyptophylserylvalylprolylglutamylaspartylthreonylglycyltyrosylleucylisoleucylylaspartylglutaminylhistidylglutamyltraginylthreonylthreonylprolylthreonyllyhreonylleucylthreonylhistidylleucylprorosylarginylphenylalanylarginylvalyllelglycylglycylprolylglycylglutamylprolyeonylvalyllysylvalylthreonylglutamylmespartyltyrosylglutamylleucylaspartylglmylglycylisoleucylphenylalanylvalylargeucylarginylleucylthreonylisoleucylprohenylalanylprolylisoleucylcysteinyllysycylglutaminylaspartylisoleucylseryllylanylthreonylserylglutamylthreonylhisteucyllysylglutamylalanylaspartylarginyyrosylaspartylleucylvalylleucylglutamyyllysylalanylvalyltyrosylisoleucyllysyrylprolylasparaginylserylprolylglutamyspartylaspartylisoleucylglutaminylvalytryptophylarginylprolylprolylalanylasprtylisoleucylleucylglycyltyrosylisoleuamylvalylprolyllysylalanylalanyltryptolserylarginylvalylarginylglycylthreonyucyllysylglutamylasparaginylvalylglutaylvalylserylalanylglutamylasparaginylglseryllysylprolylleucyllysylserylglutallysylthreonylprolylleucylasparaginylplasparaginylprolylprolylglutamylvalylllserylvalylserylleucylseryltryptophylstylglycylglycylserylarginylvalylthreonamylarginyllysylglutamylthreonylseryltylhistidylasparaginyllysylthreonylglutonylmethionyltyrosylthreonylvalylthreolanylglutamyltyrosylglutaminylphenylalglutaminylasparaginylaspartylvalylglycrolylalanylserylglutamylprolylvalylvallalanylaspartyllysylprolylserylglutamiylisoleucylleucylserylisoleucylseryllyglutaminyltryptophylglutamyllysylprolycyllysylglutamylisoleucylleucylglycyltlarginylglutaminylserylglycylaspartylsasparaginyllysylglutamylarginylisoleuclalanylthreonylisoleucylglycylglycylletamyltyrosylglutamylphenylalanylarginyaraginylglutamylthreonylglycylleucylsenylalanylmethionylserylisoleucyllysyltylglutamylalanylprolylglycylisoleucylapartylvalylthreonylthreonyllysylleucyllleucylserylcysteinylglutaminylisoleuclylaspartylisoleucyllysyltryptophyltyrlutamylleucylisoleucylglutaminylserylaylserylaspartylglycylarginylthreonylhithionylthreonylglutamylglutamylglutamilyltyrosylthreonylcysteinylisoleucylallglycylglutamylvalylglutamylthreonylseaminylalanylthreonylprolylglutaminylphylprolylleucyllysylglutamyllysyltyrosylthreonylleucylarginylleucylhistidylvarginylprolylvalylprolylalanylmethionyldylglycylglutaminyllysylleucylleucylglaraginylisoleucylthreonylisoleucylglutidyltyrosylthreonylhistidylleucylvalylminylarginyllysylthreonylhistidylalanyinylleucylserylasparaginylvalylphenylanylisoleucylleucylaspartylvalylglutamyolylaspartyllysylprolylthreonylglycylplalanylleucylleucyllysylasparaginylseryllysylprolylprolylalanylaspartylasparucylthreonylasparaginyltyrosylvalylvalnyllysylglutamylglycylalanylglutamyltrerylalanylisoleucylserylvalylthreonyltylasparaginylleucylthreonylglutamylasphenylalanylarginylvalylserylalanylglutylglycylisoleucylserylaspartylprolylleylisoleucylisoleucyllysylserylprolylphalanylprolylglycyllysylprolylthreonylilysylaspartylserylcysteinylvalylvalylanylserylaspartylglycylglycylalanyllysytyrosylleucylglutamyllysylarginylglutaysyltryptophylisoleucylserylvalylthreolarginylglutamylthreonylvalylphenylalaisoleucylglutamylglycylleucylglutamyltlyllysylcysteinylglutamylasparaginylleyltryptophylserylglutamylisoleucylserylyllysylserylaspartylvalylprolylisoleuenylalanyllysylglutamylglutamylleucylaalylarginyltyrosylglutaminylserylaspareinyllysylvalylthreonylglycylhistidylptryptophyltyrosylarginylglutaminylglycanylaspartylglycylleucyllysyltyrosylarnylalanyllysylglycylglycyltyrosylhistiylalanylserylvalylthreonylaspartylaspasylglutaminylvalylarginylalanylthreonyerylvalylserylglycylthreonylalanylseryolylalanyllysylisoleucylhistidylleucylycylmethionylglycylalanylvalylhistidyllylvalylserylisoleucyllysylisoleucylprlylaspartylprolylvalylisoleucylthreonytaminylaspartylleucylisoleucylaspartylltyrosylglutaminylvalylisoleucylvalyltonylserylleucylvalylphenylalanylprolylyllysylaspartylalanylglycylphenylalanysylasparaginylarginylphenylalanylglycyreonylvalylglutamylleucylaspartylvalylolylprolylarginylglycylvalyllysylvalylrtylserylvalylasparaginylleucylthreonyanylserylaspartylglycylglycylseryllysylisoleucylvalylglutamyllysylcysteinylaarginyltryptophylleucylarginylvalylglyhreonylarginyltyrosylthreonylvalylisollycyllysylthreonylseryltyrosylglutaminalanylglutamylasparaginyllysylphenylalylglutamylprolylserylglutamylprolylthraspartyllysylthreonylarginylalanylmethamylglutamylvalylaspartylglutamylthreoylthreonyllysylalanylserylhistidylseryrosylglutamyllysyltyrosylmethionylisolycylarginylglycylglutamylphenylalanylgysteinylvalylglutamylthreonylserylseryalanyllysylphenylalanylvalyllysylvalylylvalylleucylvalyllysyllysylglutamylisnylisoleucylalanylarginylhistidylarginlleucylhistidylglutamylserylphenylalantamylleucylvalylmethionylisoleucylphenylserylglycylleucylaspartylisoleucylphsparaginylthreonylserylalanylphenylalalarginylglutamylisoleucylvalylseryltyrteinylglutamylalanylleucylglutaminylphylasparaginylisoleucylglycylhistidylphrolylglutamylasparaginylisoleucylisolelarginylserylserylthreonylisoleucyllyslanylglycylglutaminylalanylarginylglutylasparaginylphenylalanylarginylleucyllylglutamyltyrosyltyrosylalanylprolylgdylaspartylvalylvalylserylthreonylalanylserylleucylglycylthreonylleucylvalylisoleucylasparaginylprolylphenylalanylinylglutaminylglutaminylisoleucylisolehionylasparaginylalanylglutamyltyrosyllglutamylalanylphenylalanyllysylglutamanylmethionylaspartylphenylalanylvalylylglutamylarginyllysylserylarginylmethnylleucylglutaminylhistidylprolyltrypteucylglutamylarginylvalylserylthreonyleucyllysylhistidylarginylarginyltyrosyucyllysyllysylaspartylleucylasparaginyylarginylisoleucylserylcysteinylglycylutaminyllysylglycylvalylserylvalylalanoleucylglutamylisoleucylglycylprolylvathionylhistidylalanylvalylglycylglutamlysyltyrosylvalylcysteinyllysylisoleuclglutaminylserylthreonylglutaminylvalynylglycylvalylarginylglutaminylleucylgltyrosylglutamylisoleucylthreonyltyrosisoleucylleucyltyrosylvalyllysylasparttylaspartylglycylthreonyltyrosylarginylaspartyltyrosylglycylglutamylaspartylylphenylalanylvalyllysylglycylvalylargosyltyrosylcysteinylarginylarginylthreylarginylarginylthreonylaspartylthreonmylarginylprolylprolylglutamylphenylalylasparaginyllysylthreonylalanyltyrosylarginylphenylalanylglycylvalylthreonyylglutamylprolylhistidylvalylthreonylttaminyllysylisoleucyllysylprolylglycylyltyrosylthreonylphenylalanylglutamylslglutaminylleucylthreonylisoleucylaspapartylaspartylaspartylalanylglutamyltylasparaginyllysyltyrosylglycylglutamylsylleucylthreonylvalylthreonylleucylhiartylserylthreonylleucylarginylprolylmcylleucylalanylasparaginylalanylglutamglutaminylserylvalylcysteinylphenylalaylglycylisoleucylprolylprolylprolylthrysylaspartylglycylglutaminylprolylleuclisoleucylglutamylisoleucylisoleucylhiyrosyltyrosylalanylleucylhistidylisoleolylglutamylaspartylthreonylglycyltyrolthreonylasparaginylthreonylalanylglycinylalanylhistidylleucylglutaminylvalyllysyllysylglutaminylglutamylphenylalaistidylglutamylarginylhistidylvalylglurtyllysylthreonylleucylarginylmethionyglycylthreonylglutamylserylvalylprolyllysylglutamylalanylleucylarginylglutamylprolylalanylvalylserylthreonyllysyltylalanylarginylleucylglutamylisoleucyllutamylarginyllysylleucylarginylmethioglutamylprolylarginyllysyltyrosyllysylglutamylglutamylaspartylglutaminylargianylvalylprolylmethionylserylaspartylmlysylisoleucylarginylaspartylglutaminyyllysylleucylaspartylarginylvalylvalylginylisoleucylarginylleucylserylarginyalanyltyrosylvalylmethionylprolylleucyrtylglutaminyltyrosylarginylprolyllysysylleucylserylglutaminylaspartylaspartylprolylalanylarginylarginylarginylthrylaspartylphenylalanyltyrosyltyrosylarylleucylglycylaspartylisoleucylserylaseucylprolylisoleucylaspartylaspartyltynylthreonylglutamylglutamylglutamylargamylglutamylleucylglutamylleucylglycylrolylserylarginylserylprolylprolylhistserylleucylarginyltyrosylserylserylproylvalylglutamylglutamylthreonylarginyltyrosylserylthreonyltyrosylhistidylisoamylalanylserylthreonylseryltyrosylalainylhistidylalanylglutaminylalanylalanylglutaminylarginylglutaminylarginylisylglutamylaspartylglutamylglutamylleuchreonylthreonylglutaminylhistidylleucyamylleucylaspartylphenylalanylmethionyylarginyllysyllysylserylarginylarginylnylglutamylisoleucylthreonylglutamylissylglutamylisoleucylseryllysylhistidyllserylserylserylalanylserylarginylleuclserylleucylserylprolylthreonyltyrosylinylprolylvalylserylglutamylleucylisolminylprolylalanylglutamylglutamyltyrotrampamylarginylarginylserylprolylthreonnylprolylarginylserylprolylserylprolylleucylserylarginylphenylalanylglutamylylaspartylisoleucylphenylalanylserylarysylalanylalanylleucyllysylthreonylgluginyllysyltyrosylglutamylvalylleucylsealanylthreonylleucylaspartylhistidylaleucylarginylmethionylarginylserylhistilglutaminylasparaginylthreonylarginylpylvalylglutaminylseryllysylprolylthreoyltyrosylhistidylasparaginylglycylvalyrylseryllysylisoleucylhistidyltyrosyltylvalylleucylthreonylleucylglutamylisoylthreonylaspartylaspartylserylglycyltteinylthreonylasparaginyltyrosyllysylgosylalanylthreonylleucylaspartylvalylthreonylthreonyltyrosylalanylserylglutaglutamylvalylprolylarginylserylvalylphnylarginylthreonylglutamylalanyltyrosylysyllysylthreonylserylglutamylmethionlarginylglutamylvalyllysylserylglutamilarginylglutamylserylleucylserylseryltrylalanylglutamylmethionyllysylserylalylserylleucylglutamylglutamyllysylserycyllysylthreonylthreonylleucylalanylalysylprolylarginylserylmethionylthreonyserylalanylarginylphenylalanylserylcyslglutamylprolylvalylprolylthreonylvalyylglycylglutaminylvalylleucylserylthreminylvalylthreonylthreonylthreonyllysynylglutamylisoleucylserylserylvalylglulycylasparaginyltyrosylserylvalylvalylylglycyllysylglutaminylglutamylalanylgreonylisoleucylglutaminyllysylalanylarylvalylthreonylserylprolylprolylarginylarginylvalyllysylserylprolylglutamylanylvalyllysylserylprolylglutamylprolylserylprolylthreonylglutamylthreonyllysyllysylvalylglutaminylhistidylleucylprylisoleucylthreonylglutaminylphenylalaeryllysylglutamylisoleucylalanyllysylltamylserylserylvalylleucylarginylalanyyltyrosyllysylaspartylglycyllysyllysyllhistidylphenylalanylglutaminylphenylartylglycylthreonyltyrosylglutamylleucyylleucylthreonylglutamylserylaspartylgcysteinylglutamylisoleucylserylglycylgylthreonylasparaginylleucylglutaminylplalanylphenylalanyllysylserylisoleucyllisoleucylserylglutamylthreonyllysyllyonylthreonylglutamylserylthreonylvalyllprolyllysylalanylprolylglutamylprolylisoleucylvalylthreonylglycylleucylglutserylserylaspartylserylvalylalanyllysythreonylglycylglutamylprolylarginylprolthreonyllysylaspartylglycyllysylalanylycyllysyltyrosyllysylleucylserylglutalanylphenylalanylleucylglutamylisoleuconylserylaspartylserylglycylleucyltyrosylasparaginylserylalanylglycylserylvacylthreonylisoleucyllysylalanylisoleucylglutaminyllysylvalylserylthreonylgluoleucylthreonylprolylglutaminyllysyllyylglutamylisoleucylserylglutaminyllysyutamylisoleucyllysylmethionylserylglutmyllysylleucylalanylleucyllysylglutamylisoleucylserylglutamylglutamylvalyllyrylleucylglutamyllysylserylisoleucylvalthreonyllysylthreonylserylglutaminylanylthreonylhistidylalanylglutamylisoleeonylglutaminylmethionylserylisoleucylarginylleucylvalylleucyllysylalanylaspthreonylaspartylvalyllysyltryptophylvaamylleucylthreonylasparaginylserylglutycylvalylserylglycylserylaspartylglutallysylglutaminylalanylserylhistidylargleucylthreonylcysteinylisoleucylserylleucylvalyllysylcysteinylglutaminyltyrollysylglutamylleucylserylaspartylalanyerylglutaminylprolylarginylserylglutamglutamylglycylglutaminylasparaginylvalylglutamylisoleucylserylglycylglutamyllutamyltryptophylphenylalanyllysylaspaucylserylisoleucylserylserylasparaginyylarginylasparaginylvalyltyrosylseryllginylalanylserylvalylserylaspartylseryllysylalanyllysylasparaginylphenylalanerylalanylthreonylalanylserylleucylmetlutamylglutamylprolylserylarginylglutaerylglycylaspartylthreonylserylleucylgylserylglutaminylserylvalylglutaminylminylglutamylalanylserylphenylalanylsererylalanylserylserylmethionylthreonylganylserylmethionylserylalanylglutaminylutaminylglutamylserylphenylalanylvalyrylphenylalanylmethionylglycylisoleucylutaminylleucylglutamylserylserylthreoanylglycylisoleucylarginylglycylisoleuylalanylleucylprolylserylaspartylisolelycyllysylvalylleucylthreonylvalylalanylglycylglutamylprolylthreonylprolylglysteinylglycylglycylarginyllysylisoleulutaminylglycylarginylphenylalanylhisteonylaspartylaspartylleucylthreonylthrnylaspartylvalylglutaminyllysylglutamilthreonylleucylserylleucylglycylasparalaspartylserylalanylthreonylvalylasparinylserylisoleucine = { - color: "#ffffff", + color: ["#ff00dc", "#010001"], + colorPattern: textures.transparency, + colorKey: { + "g": "#ff00dc", + "w": "#010001" + }, behavior: behaviors.LIQUID, category: "jaydstuff", - state: "liquid", -}; \ No newline at end of file + state: "liquid" +}, +elements.left_push = { + color: ["#ffa500","#ff0000"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + tryMove(p,p.x-1,p.y); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x-1,pixel.y)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + excludeRandom: true, +}, +elements.right_push = { + color: ["#ffa500","#ff0000"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + tryMove(p,p.x+1,p.y); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x+1,pixel.y)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + excludeRandom: true, +}, +elements.up_push = { + color: ["#ffa500","#ff0000"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + tryMove(p,p.x,p.y-1); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x,pixel.y-1)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + excludeRandom: true, +}, +elements.down_push = { + color: ["#ffa500","#ff0000"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + tryMove(p,p.x,p.y+1); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x,pixel.y+1)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + excludeRandom: true, +}, +elements.leftquake = { + color: ["#bda791","#997756","#613d19"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (p.element === "leftquake") { + if (pixel !== p) { + pixel.mag += 3; + deletePixel(p.x,p.y); + } + return; + } + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + if (p.del || !elements[p.element].movable) { return } + tryMove(p,p.x+1,p.y); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x-1,pixel.y)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + maxSize: 1, + cooldown: defaultCooldown, + excludeRandom: true, +}, +elements.rightquake = { + color: ["#bda791","#997756","#613d19"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (p.element === "rightquake") { + if (pixel !== p) { + pixel.mag += 3; + deletePixel(p.x,p.y); + } + return; + } + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + if (p.del || !elements[p.element].movable) { return } + tryMove(p,p.x-1,p.y); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x+1,pixel.y)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + maxSize: 1, + cooldown: defaultCooldown, + excludeRandom: true, +}, +elements.upquake = { + color: ["#bda791","#997756","#613d19"], + tick: function(pixel) { + if (pixel.stage) { + var coords = circleCoords(pixel.x,pixel.y,pixel.stage); + if (pixel.stage >= pixel.mag) { + deletePixel(pixel.x,pixel.y); + return; + } + coords.forEach(function(coord){ + var x = coord.x; + var y = coord.y; + if (!isEmpty(x,y,true)) { + var p = pixelMap[x][y]; + if (p.element === "upquake") { + if (pixel !== p) { + pixel.mag += 3; + deletePixel(p.x,p.y); + } + return; + } + if (elements[p.element].breakInto) { + if (Math.random() < (elements[p.element].hardness || 1) * 0.25) { + breakPixel(p); + } + } + if (p.del || !elements[p.element].movable) { return } + tryMove(p,p.x,p.y+1); + } + }) + pixel.stage++; + } + else if (!tryMove(pixel,pixel.x,pixel.y-1)) { + // random 10 to 20 + pixel.mag = Math.floor(Math.random() * 10) + 20; + pixel.stage = 1; + } + }, + category: "weapons", + state: "solid", + density: 100000000, + maxSize: 1, + cooldown: defaultCooldown, + excludeRandom: true, +//hello nouser if you are reading this: +}; +}; +//get triggered \ No newline at end of file diff --git a/mods/lightmap.js b/mods/lightmap.js new file mode 100644 index 00000000..93ddcdf0 --- /dev/null +++ b/mods/lightmap.js @@ -0,0 +1,285 @@ +// Redbirdly's Mod that adds a better light system +// if the mod is too laggy, use fast_lightmap.js + +let lightmap = []; +let nextLightmap = []; +let lightmapWidth, lightmapHeight; +let pixelSizeQuarter = pixelSizeHalf / 2; +let lightmapScale = 2; + +// Define RGB colors +let lightColor = [255, 223, 186]; +let sunColor = [255*8, 210*8, 26*8]; +let lampColor = [255*4, 223*4, 186*4]; +let laserColor = [255, 0, 0]; +let ledRColor = [255, 0, 0]; +let ledGColor = [0, 255, 0]; +let ledBColor = [0, 0, 255]; +let fireColor = [255, 69, 0]; +let plasmaColor = [160, 69, 255]; +let coldFireColor = [0, 191, 255]; +let magmaColor = [255, 140, 0]; +let neonColor = [255*2, 60*2, 10*2]; + +function initializeLightmap(width, height) { + lightmapWidth = Math.ceil(width / lightmapScale); + lightmapHeight = Math.ceil(height / lightmapScale); + + for (let y = 0; y < lightmapHeight; y++) { + lightmap[y] = []; + nextLightmap[y] = []; + for (let x = 0; x < lightmapWidth; x++) { + lightmap[y][x] = { color: [0, 0, 0] }; + nextLightmap[y][x] = { color: [0, 0, 0] }; + } + } +} + +function deepCopy(source, target) { + for (let y = 0; y < source.length; y++) { + target[y] = []; + for (let x = 0; x < source[y].length; x++) { + target[y][x] = { ...source[y][x] }; + } + } +} + +function propagateLightmap() { + if (!lightmap || !lightmap[0]) { return; } + let width = lightmap[0].length; + let height = lightmap.length; + + let neighbors = [ + { dx: 1, dy: 0 }, + { dx: -1, dy: 0 }, + { dx: 0, dy: 1 }, + { dx: 0, dy: -1 }, + ]; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let totalColor = [0, 0, 0]; + let neighborCount = 0; + neighbors.forEach(({ dx, dy }) => { + let nx = x + dx; + let ny = y + dy; + if (nx >= 0 && ny >= 0 && nx < width && ny < height) { + totalColor[0] += lightmap[ny][nx].color[0]; + totalColor[1] += lightmap[ny][nx].color[1]; + totalColor[2] += lightmap[ny][nx].color[2]; + neighborCount++; + } + }); + nextLightmap[y][x] = { + color: [ + Math.min(Math.max(0, totalColor[0] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[1] / neighborCount * 0.8), 255*8), + Math.min(Math.max(0, totalColor[2] / neighborCount * 0.8), 255*8) + ] + }; + } + } + + deepCopy(nextLightmap, lightmap); +} + +function rgbToHsv(r, g, b) { + r /= 255, g /= 255, b /= 255; + let max = Math.max(r, g, b), min = Math.min(r, g, b); + let h, s, v = max; + + let d = max - min; + s = max === 0 ? 0 : d / max; + + if (max === min) { + h = 0; + } else { + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + + return [h, s, v]; +} + +function hsvToRgb(h, s, v) { + let r, g, b; + + let i = Math.floor(h * 6); + let f = h * 6 - i; + let p = v * (1 - s); + let q = v * (1 - f * s); + let t = v * (1 - (1 - f) * s); + + switch (i % 6) { + case 0: r = v, g = t, b = p; break; + case 1: r = q, g = v, b = p; break; + case 2: r = p, g = v, b = t; break; + case 3: r = p, g = q, b = v; break; + case 4: r = t, g = p, b = v; break; + case 5: r = v, g = p, b = q; break; + } + + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; +} + +function renderLightmap() { + if (!canvas) { return; } + if (!lightmap || !lightmap[0]) { return; } + let context = canvas.getContext('2d'); + let width = lightmap[0].length; + let height = lightmap.length; + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + let { color } = lightmap[y][x]; + let [r, g, b] = color; + if (r > 0 || g > 0 || b > 0) { + let [h, s, v] = rgbToHsv(r, g, b); + let newColor = hsvToRgb(h, s, 1); + let alpha = v; + + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha*0.4})`; + context.fillRect( + x * pixelSize * lightmapScale, + y * pixelSize * lightmapScale, + pixelSize * lightmapScale, + pixelSize * lightmapScale + ); + context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`; + context.fillRect( + (x * pixelSize - pixelSizeHalf) * lightmapScale, + (y * pixelSize - pixelSizeHalf) * lightmapScale, + pixelSize * lightmapScale * 2, + pixelSize * lightmapScale * 2 + ); + } + } + } +} + +elements.sun.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: sunColor }; +}; + +let originalLightTick = elements.light.tick; +elements.light.tick = function(pixel) { + originalLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +let originalLiquidLightTick = elements.liquid_light.tick; +elements.liquid_light.tick = function(pixel) { + originalLiquidLightTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lightColor }; +}; + +elements.magma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.neon.tick = function(pixel) { + if (!pixel.charge || pixel.charge <= 0) {return;} + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: neonColor }; +}; + +elements.light_bulb.behaviorOn = null +elements.light_bulb.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 10;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: lampColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_r.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledRColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_g.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledGColor }; + } + pixel.lightIntensity -= 1; +}; + +elements.led_b.tick = function(pixel) { + if (pixel.charge > 0) {pixel.lightIntensity = 4;} + if (pixel.lightIntensity > 0) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: ledBColor }; + } + pixel.lightIntensity -= 1; +}; + +let originalLaserTick = elements.laser.tick; +elements.laser.tick = function(pixel) { + originalLaserTick(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: laserColor }; +}; + +let originalFireTick2 = elements.fire.tick; +elements.fire.tick = function(pixel) { + originalFireTick2(pixel); + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: fireColor }; +}; + +elements.cold_fire.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: coldFireColor }; +}; + +elements.plasma.tick = function(pixel) { + let x = Math.floor(pixel.x / lightmapScale); + let y = Math.floor(pixel.y / lightmapScale); + lightmap[y][x] = { color: plasmaColor }; +}; + +// Wait for loading +// if it loads too soon then width will be undefined +setTimeout(() => { initializeLightmap(width, height); }, 700); + +// Add code to functions instead of replacing them +let originalTick = tick; +tick = function() { + originalTick(); + if (!paused) {propagateLightmap();} +}; +// Even after updating tick(), setInterval still uses the old tick(), reset setInterval +resetInterval(tps); + +let originalDrawPixels = drawPixels; +drawPixels = function(forceTick = false) { + originalDrawPixels(forceTick); + renderLightmap(); +}; diff --git a/mods/mossstuff.js b/mods/mossstuff.js new file mode 100644 index 00000000..72336bd3 --- /dev/null +++ b/mods/mossstuff.js @@ -0,0 +1,2333 @@ + + + +elements.freeze_ray = { + color: ["#8cf9ff","#5c59ff"], + tick: function(pixel) { + var x = pixel.x; + for (var y = pixel.y; y < height; y++) { + if (outOfBounds(x, y)) { + break; + } + if (isEmpty(x, y)) { + if (Math.random() > 0.05) { continue } + createPixel("flash", x, y); + pixelMap[x][y].color = "#96b6ff"; + pixelMap[x][y].temp = -257; + } + else { + if (elements[pixelMap[x][y].element].isGas) { continue } + if (elements[pixelMap[x][y].element].id === elements.heat_ray.id) { break } + pixelMap[x][y].temp -= 100; + pixelTempCheck(pixelMap[x][y]); + break; + } + } + deletePixel(pixel.x, pixel.y); + }, + temp: -257, + category: "energy", + state: "gas", + excludeRandom: true, + noMix: true +}; + +elements.devil_ray = { + color: ["#ba0000","#8f0000"], + tick: function(pixel) { + var x = pixel.x; + for (var y = pixel.y+1; y < height; y++) { + if (outOfBounds(x, y)) { + break; + } + if (isEmpty(x, y)) { + if (Math.random() > 0.1) { continue } + createPixel("flash", x, y); + pixelMap[x][y].color = ["#990000"]; + } + else { + if (elements[pixelMap[x][y].element].id === elements.flash.id) { continue } + if (elements[pixelMap[x][y].element].id === elements.god_ray.id) { break } + if (!elements[pixelMap[x][y].element].isGas && isEmpty(x, y-1)) { + createPixel("curse", x, y-1); + } + if (Math.random() > 0.1) { continue } + elements.bless.tool(pixelMap[x][y]) + } + } + deletePixel(pixel.x, pixel.y); + }, + category: "energy", + state: "gas", + density: 1, + excludeRandom: true, + noMix: true +}; + +elements.beer = { + color: ["#ffc43d","#ffc43d"], + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 100, + stateHigh: ["fire","steam","steam"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.root_beer = { + color: ["#8b2f02","#732803"], + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + tempHigh: 100, + stateHigh: ["fire","steam","steam"], + isFood: true, +}; + +elements.fruit_slushy = { + color: ["#d43968","#ec5885","#f57ca1","#fba9c2","#ffe3eb"], + stateLowColorMultiplier: 1.3, + stateLow: "slushy_ice", + tempLow: "-50", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 100, + stateHigh: ["fire","steam","steam"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.mold = { + color: ["#b6d7a8","#6d9d5c","#ad8d6f"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], +}; + +elements.chocolate_slushy = { + color: ["#c3ae9a","#ae967f","#977b5f","#876b4f","#816346"], + stateLowColorMultiplier: 1.3, + tempLow: "-50", + stateLow: "slushy_ice", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 100, + stateHigh: ["fire","steam","steam"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.chocolate_sauce = { + color: ["#491904","#54240b","#5e2d0b","#69371b","#764636"], + density: 10, + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.chocolate_ice_cream = { + color: ["#a47551","#523a28"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 1096, + tempHigh: 15, + stateHigh: "cream", + temp: 0, + isFood: true, +}; + +elements.fruit_ice_cream = { + color: ["#f8d8d8","#f6c1c1","#e39898"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 1096, + tempHigh: 15, + stateHigh: "cream", + temp: 0, + isFood: true, +}; + +elements.snow_cone = { + color: ["#ebfeed","#f4fff5","#fefaff","#fff3fe","#fcf2fb"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 1096, + tempHigh: 15, + stateHigh: "smashed_ice", + temp: 0, + isFood: true, +}; + +elements.mint_ice_cream = { + + color: ["#ebfdff","#d5fff7","#ceffe9","#dfffde","#daffd5"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 1096, + tempHigh: 15, + stateHigh: "cream", + temp: 0, + isFood: true, + reactions: { + "chocolate": { elem1: "mint_chocolate_ice_cream", elem2: null }, + } +}; + +elements.mint_chocolate_ice_cream = { + color: ["#311e08","#d5fff7","#ceffe9","#dfffde","#daffd5",], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 1096, + tempHigh: 15, + stateHigh: "cream", + temp: 0, + isFood: true, +}; + + +elements.chocolate_yogurt = { + color: ["#a87848","#a57e57","#c1a07f","#e2c5ac","#efd0b1"], + stateLowColorMultiplier: 1.3, + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempLow: 0, + stateHigh: ["fire","steam","steam"], + tempHigh: 450, + stateLow: "frozen_chocolate_yogurt", + isFood: true, +}; + +elements.fruit_yogurt = { + color: ["#ffc3d8","#ffabd6","#ff96c5","#ff84c2","#ff5daf"], + stateLowColorMultiplier: 1.3, + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempLow: 0, + stateLow: "frozen_fruit_yogurt", + isFood: true, + stateHigh: ["fire","steam","steam"], + tempHigh: 450, +}; + +elements.frozen_fruit_yogurt = { + color: ["#ffdfdf","#ffc0c0","#ff9b9b"], + stateHighColorMultiplier: 0.7, + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 902, + tempHigh: 0, + stateHigh: "fruit_yogurt", + temp: 0, + isFood: true, +}; + +elements.frozen_chocolate_yogurt = { + color: ["#a87848","#a57e57","#c1a07f","#e2c5ac","#efd0b1"], + stateHighColorMultiplier: 0.7, + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + density: 902, + tempHigh: 0, + stateHigh: "chocolate_yogurt", + temp: 0, + isFood: true, +}; + +elements.frying_oil = { + color: "#c4ab4f", + behavior: behaviors.LIQUID, + category: "liquids", + state: "solid", + reactions: { + "meat": { elem1: null, elem2: "chicken_nuggets" }, + "potato": { elem1: null, elem2: "fries" }, + "advanced_dough": { elem1: null, elem2: "churros" }, + "snow": { elem1: null, elem2: "fried_snow" }, + }, + tempHigh: 350, + stateHigh: ["fire","steam","steam"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.chicken_nuggets = { + color: ["#8f411c","#a35935"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.advanced_dough = { + color: ["#f3e6c6","#f9e8a2","#ebd27b","#dba94e","#c08932"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 94, + stateHigh: "croissant", + reactions: { + "electric": { elem1: "steampunk_pancakes", elem2: null }, + } +}; + +elements.fries = { + color: ["#f4c63e","#f6d165","#f8dd8b"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], +}; + +elements.fried_snow = { + color: ["#f6c66a","#d29829","#905c1b"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.battery_acid = { + color: ["#8fff00","#1de446"], + behavior: behaviors.LIQUID, + category: "machines", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["steam","dioxin","stench"], + burn:3, + burnTime:500, + burnInto: ["steam","dioxin","stench"], + isFood: true, +}; + + +elements.steampunk_pancakes = { + color: "#252a33", + behavior: behaviors.POWDER, + category: "machines", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + //I have no idea why i added this, but when i removed it and started the mod, the mod removed itself. Words can't explain my fucking confusion. +}; + + +elements.churros = { + color: ["#ce9958","#b8732d","#9f633b"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + reactions: { + "chocolate": { elem1: "chocolate_churros", elem2: null }, + "chocolate_sauce": { elem1: "chocolate_churros", elem2: null }, + } +}; + +elements.chocolate_churros = { + color: ["#9f6204","#875200","#764100","#582c00","#492100"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], +}; + +/*elements.color_pick = { + color: ["#ff0000","#ffd100","#00ff4b","#0005ff"], + behavior: [ + "CF|CF|CF", + "CF|DL%5|CF", + "CF|CF|CF", + ], + category: "tools", + maxSize: 0, + darkText: true, + canPlace: false, + desc: "Use on a pixel to select its element." +};*/ + +elements.croissant = { + color: ["#c68028","#ad7023","#905c1b","#794d16","#674112"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + breakInto: "crumb", + tempHigh: 550, + stateHigh: "ash", + burnInto: "smoke" +}; + +elements.eggy_dough = { + color: ["#df8c43","#e5a369","#ecba8e","#f2d1b4","#f9e8d9"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + tempHigh: 75, + stateHigh: "french_toast", + burnInto: "smoke" +}; + +elements.french_toast = { + color: ["#a77644","#af7b4b","#af7f57"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "crumb", + tempHigh: 550, + stateHigh: "ash", + burnInto: "smoke" +}; + +elements.rose_sauce = { + color: ["#db2300","#e24f33"], + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.seasoning = { + color: ["#945239","#896251"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.parmesan = { + color: ["#ffffdd","#ffffe4","#ffffeb","#fffff1","#fffff8"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.baking_powder = { + color: "#fffaed", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + reactions: { + "flour": { elem1: null, elem2: "advanced_dough" }, + }, + tempHigh: 350, + stateHigh: ["fire","fire","ash"], + burn:3, + burnTime:500, + burnInto: ["fire","smoke","smoke","steam","ash"], + isFood: true, +}; + +elements.smashed_ice = { + color: ["#e3fdff","#d1f7ff","#c0f7ff"], + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + reactions: { + "grape": { elem1: null, elem2: "fruit_slushy" }, + "blood_orange": { elem1: null, elem2: "fruit_slushy" }, + "canary_melon": { elem1: null, elem2: "fruit_slushy" }, + "honeydew_melon": { elem1: null, elem2: "fruit_slushy" }, + "cranberry": { elem1: null, elem2: "fruit_slushy" }, + "pitaya": { elem1: null, elem2: "fruit_slushy" }, + "coconut": { elem1: null, elem2: "fruit_slushy" }, + "cloudberry": { elem1: null, elem2: "fruit_slushy" }, + "crabapple": { elem1: null, elem2: "fruit_slushy" }, + "cactus_pear": { elem1: null, elem2: "fruit_slushy" }, + "pear": { elem1: null, elem2: "fruit_slushy" }, + "purpleberry": { elem1: null, elem2: "fruit_slushy" }, + "yellowberry": { elem1: null, elem2: "fruit_slushy" }, + "pomegranate": { elem1: null, elem2: "fruit_slushy" }, + "guava": { elem1: null, elem2: "fruit_slushy" }, + "raspberry": { elem1: null, elem2: "fruit_slushy" }, + "gooseberry": { elem1: null, elem2: "fruit_slushy" }, + "fig": { elem1: null, elem2: "fruit_slushy" }, + "durian": { elem1: null, elem2: "fruit_slushy" }, + "passionfruit": { elem1: null, elem2: "fruit_slushy" }, + "starfruit": { elem1: null, elem2: "fruit_slushy" }, + "rambutan": { elem1: null, elem2: "fruit_slushy" }, + "nance": { elem1: null, elem2: "fruit_slushy" }, + "nectarine": { elem1: null, elem2: "fruit_slushy" }, + "loganberry": { elem1: null, elem2: "fruit_slushy" }, + "currant": { elem1: null, elem2: "fruit_slushy" }, + "banana": { elem1: null, elem2: "fruit_slushy" }, + "blackberry": { elem1: null, elem2: "fruit_slushy" }, + "blueberry": { elem1: null, elem2: "fruit_slushy" }, + "green_apple": { elem1: null, elem2: "fruit_slushy" }, + "lemon": { elem1: null, elem2: "fruit_slushy" }, + "green_grape": { elem1: null, elem2: "fruit_slushy" }, + "cherry": { elem1: null, elem2: "fruit_slushy" }, + "apple": { elem1: null, elem2: "fruit_slushy" }, + "orange": { elem1: null, elem2: "fruit_slushy" }, + "kiwi": { elem1: null, elem2: "fruit_slushy" }, + "strawberry": { elem1: null, elem2: "fruit_slushy"}, + "chocolate": { elem1: null, elem2: "chocolate_slushy" }, + "chocolate_sauce": { elem1: null, elem2: "chocolate_slushy" }, + }, + density: 100, + tempHigh: 25, + stateHigh: "water", + tempLow: -100, + stateLow: "snow_cone", +}; + +elements.anti_torch = { + color: "#d68542", + behavior: [ + "XX|CR:cold_fire|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + reactions: { + "water": { elem1:"wood" }, + "sugar_water": { elem1:"wood" }, + "salt_water": { elem1:"wood" }, + "seltzer": { elem1:"wood" }, + "dirty_water": { elem1:"wood" }, + "pool_water": { elem1:"wood" }, + "steam": { elem1:"wood" }, + "smog": { elem1:"wood" }, + "rain_cloud": { elem1:"wood" }, + "cloud": { elem1:"wood" }, + "snow_cloud": { elem1:"wood" }, + "hail_cloud": { elem1:"wood" }, + "thunder_cloud": { elem1:"wood" }, + "ice_nine": { elem1:"wood" } + }, + temp:-250, + category: "special", + breakInto: "sawdust", + insulate: true, +}; + +elements.moss = { + color: ["#355438","#416044","#4c7450","#68946c","#81a984"], + behavior: behaviors.STURDYPOWDER, + category: "life", + state: "solid", + burn: 5, + burnTime: 15, + density: 1400, + breakInto: "dead_plant", + tempHigh: 120, + stateHigh: "dead_plant", + tempLow: -4, + stateLow: "frozen_plant", + alias: "mercedes benz", + reactions: { + "dna": { elem1: "moth", elem2: null }, + } + +}; + +elements.moth = { + color: ["#df8830","#e9b477","#a1591a","#a87a46","#4e3212"], + behavior: behaviors.FLY, + category: "life", + state: "solid", + burn: 95, + burnTime: 25, + density: 600, + breakInto: "dead_bug", + tempHigh: 100, + stateHigh: "ash", + tempLow: 0, + stateLow: "dead_bug", +}; + +elements.holy_fire = { + color: ["#FEFFF8","#FFF0CE","#FFE792"], + behavior: [ + "M1|M1|M1", + "M2|CH:bless%8|M2", + "XX|M2|XX", + ], + reactions: { + "fire": { elem1: "bless", elem2: "bless" }, + "plasma": { elem1: "light", elem2: "light" } + }, + temp:750, + tempLow:200, + tempHigh:1200, + stateLow: "bless", + stateHigh: "bless", + category: "energy", + state: "gas", + density: 0.1, + ignoreAir: true +}; + +elements.curse = { + color: ["#d27979","#bf4040","#752727"], + tool: function(pixel) { + if (elements.bless.ignore.indexOf(pixel.element) !== -1) { return; } + if (pixel.burning) { // stop burning + delete pixel.burning; + delete pixel.burnStart; + } + if (pixel.temp > 100) { + pixel.temp = (pixel.temp+100)/2; + pixelTempCheck(pixel); + if (pixel.del) {return} + } + if (pixel.temp < -200) { + pixel.temp = (pixel.temp-200)/2; + pixelTempCheck(pixel); + if (pixel.del) {return} + } + if (pixel.origColor) { + pixel.color = "rgb("+pixel.origColor.join(",")+")"; + delete pixel.origColor; + } + if (pixel.charge) { + delete pixel.charge; + pixel.chargeCD = 16; + } + if (elements.bless.reactions[pixel.element] && Math.random()<0.25) { + var r = elements.bless.reactions[pixel.element]; + var elem2 = r.elem2; + if (elem2 !== undefined) { + if (Array.isArray(elem2)) { elem2 = elem2[Math.floor(Math.random()*elem2.length)]; } + if (elem2 === null) { deletePixel(pixel.x,pixel.y) } + else { changePixel(pixel, elem2); } + } + if (r.func) { r.func(pixel,pixel) } + } + }, + ignore: ["sun"], + behavior: [ + "M2|M1|M2", + "M1|DL%25|M1", + "M2|M1|M2", + ], + reactions: { + "cell": { elem2: "cancer" }, + "iron": { elem2: "rust" }, + "copper": { elem2: "oxidized_copper" }, + "antibody": { elem2:["blood",null] }, + "antibody_ice": { elem2:"blood_ice" }, + "dirty_water": { elem2: "water" }, + "dna": { elem2: "plague" }, + "antibody": { elem2: ["infection",null] }, + "infection": { elem2: ["infection",null] }, + "antidote": { elem2: "poison" }, + "meat": { elem2: "rotten_meat" }, + "cheese": { elem2: "rotten_cheese" }, + "oxygen": { elem2: "carbon_dioxide" }, + "hydrogen": { elem2: "acid_gas" }, + "cloud": { elem2: "fire_cloud" }, + "perfume": { elem2: "liquid_stench" }, + "fragrance": { elem2: "stench" }, + "seltzer": { elem2: "soda" }, + "cloud": { elem2: "smog" }, + "water": { elem2: "broth" }, + "bless": { elem2: "plasma" }, + "metal_scrap": { elem2: "grenade" }, + "smoke": { elem2: "greek_fire" }, + "rock": { elem2: "uranium", chance: 0.01}, + "magma": { elem2: "molten_uranium", chance: 0.01}, + "ice": { elem2: "ice_nine", chance: 0.01}, + "frog": { elem2: "frozen_frog" }, + "worm": { elem2: "frozen_worm" }, + "rock": { elem2: "molten_thermite", chance: 0.01}, + "glass": { elem2: "rad_glass", chance: 0.2 }, + "shard": { elem2: "rad_shard", chance: 0.2 }, + "steam": { elem2: "rad_steam", chance: 0.2 }, + "rain_cloud": { elem2: "rad_cloud", chance: 0.2 }, + "ball": { elem2: "ball", chance: 0.2 }, + "bone": { elem2: "bone_marrow", chance: 0.2 }, + "plant": { elem2: "dead_plant" }, + "rock": { elem2: "rock", chance: 0.01 }, + "magma": { elem2: "molten_slag", chance: 0.01 }, + "light": { elem2: "laser", chance: 0.2 }, + "flash": { elem2: "light", chance: 0.2 }, + "wood": { elem2: "torch", chance: 0.01 }, + "gold": { elem2: "lead", chance: 0.2 }, + "molten_gold": { elem2: "molten_lead", chance: 0.2 }, + "grass": { elem2: null }, + "rainbow": { elem2: "static" }, + }, + temp:20, + state: "gas", + density: 0.001, + canPlace: true, + category: "energy", + stain: -0.5 +}; + +elements.parrot = { + color: ["#234d20","#36802d","#77ab59","#c9df8a","#f0f7da","#f90f0b","#f7ab4d","#fdfc0d","#0564b2","#60a3e6"], + behavior: behaviors.FLY, + category: "life", + state: "solid", + burn: 40, + burnTime: 100, + density: 400, + breakInto: ["feather","blood"], + tempHigh: 120, + stateHigh: "cooked_meat", + tempLow: -18, + stateLow: "frozen_meat", + reactions: { + "fly": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "firefly": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL }, + "bee": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "worm": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "ant": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL }, + "dead_bug": { elem2:null, chance:0.04, func:behaviors.FEEDPIXEL }, + "lichen": { elem2:null, chance:0.04, func:behaviors.FEEDPIXEL }, + "termite": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL }, + "flea": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL }, + "mushroom_cap": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL }, + "mushroom_gill": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL }, + "seeds": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "flower_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "wheat_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "corn_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "corn": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "potato_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "grass_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "pumpkin": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL }, + "pumpkin_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, + "plague": { elem1:"plague", chance:0.05 }, + "oxygen": { elem2:"carbon_dioxide", chance:0.5 } + }, + foodNeed: 20, + temp: 41, + tempHigh: 120, + stateHigh: "cooked_meat", + stateHighColor: "#E4CFB9", + tempLow: -18, + stateLow: "frozen_meat", + category:"life", + burn:50, + burnTime:100, + breakInto: ["feather","blood"], + state: "solid", + density: 400, + conduct: 0.5 +}; + +elements.cherry = { + color: ["#ff0000","#e30202","#c00000","#9c0101"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: "#450008", + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#bf4545","#982828"] }, + } +}; + +elements.strawberry = { + color: ["#fb2943","#ff0033"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#bf0147","#c61548","#cc2857","#c62354","#c11848"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#a82953","#941540"] }, + } +}; + +elements.apple = { + color: ["#fc3434","#f91515","#d30404","#9f0606","#aa0404"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffda69","#ffdb84"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f4ff49","#ffec2f"] }, + } +}; + +elements.green_apple = { + color: ["#a8da61","#66cc00","#66cc33","#00cc00","#009900"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffda69","#ffdb84"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f4ff49","#ffec2f"] }, + } +}; + +elements.orange = { + color: ["#ff9a00","#ffc100","#ff8100"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + breakIntoColor: ["#ffc659","#ffb646","#ffa700","#ff8d00"], + tempHigh: 256, + stateHigh: "steam", + isFood: true, + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fbd808","#ff9005"] }, + } +}; + +elements.kiwi = { + color: ["#a9c77e","#61ab5a"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#a9c77e","#bad98f"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#a5d04c","#bbdc79"] }, + } +}; + +elements.blueberry = { + color: ["#3e476f","#49598c","#5076b0","#5086c1","#8aa4ff"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#8abeee","#8aacf4","#9591ee","#787fdb","#7c74ce"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#5086c1","#5076b0"] }, + } +}; + +elements.plum = { + color: ["#b62d82","#951661","#7c1249","#52001e","#360011"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#bf66c9","#d499db","#eacced"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#d8b2d8","#b266b2"] }, + } +}; + +elements.blackberry = { + color: ["#2b0521","#3e0930","#4f123e","#601a4c","#6b2356"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#a941a1","#ba59b2","#c570bf"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ba59b2","#c570bf"] }, + } +}; + +elements.peach = { + color: ["#f6a192","#f6b092","#f6c492","#f6cf92","#f6d992"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#fce5b8","#fcdab8","#fccfb8"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffe7dc","#ffdac8"] }, + } +}; + +elements.lemon = { + color: ["#ffaa1d","#ffd300","#ffdf00","#ffff00","#fff44f"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#f8ff80","#f6ff6c","#f5ff57","#f3ff39","#f0ff00"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffffd8","#fffecf"] }, + } +}; + +elements.green_grape = { + color: ["#b6f271","#a1f02f","#97d60c","#65ba14","#8bc33a"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + breakIntoColor: ["#5f8536","#7ba84a"], + tempHigh: 256, + stateHigh: "steam", + isFood: true, + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ecffdc","#c3ffa8"] }, + } +}; +elements.banana = { + color: ["#ffb400","#ffc100","#ffdb00","#ffe700","#f0ff00"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: "#f0f060", + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fdf8d6","#f9efa6"] }, + } +}; + +elements.blood_orange = { + color: ["#db4437","#fc3d39","#e5302d","#f6602d","#f65026"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff4600","#ff8353"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffc7b4","#ffa485"] }, + } +}; + +elements.canary_melon = { + color: ["#e9ff0c","#e9ff0c","#ffed0c"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffff9e","#fffcaa"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#e5ffb3","#ecff9c"] }, + } +}; + +elements.honeydew_melon = { + color: ["#b9ffa3","#c9ffa3","#d9ffa3"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#e9ffa3","#f9ffa3"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#e8ffc9","#e8ffc8"] }, + } +}; + +elements.cranberry = { + color: ["#471016","#7a1927","#69202f"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "sauce", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ba4242","#7a1717"], + reactions: { + "soda": { elem1: null, elem2: "sprite_cranberry" }, + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffc0c5","#ff8f99"] }, + } +}; + +elements.pitaya = { + color: ["#f6a9d8","#d4306e","#6ab81f"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff84ae","#ffafca"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffd4e3","#ffafca"] }, + } +}; + +elements.coconut = { + color: ["#6b3314","#583203","#673e1c"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "milk", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#f7e5d8","#fdefe5","#fff7f1"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fff2db","#ffefd4"] }, + } +}; + +elements.cloudberry = { + color: ["#ff9636","#ffb169","#ffc896"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffe1c7","#fff9f3"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffd7ab","#ffcb93"] }, + } +}; + +elements.crabapple = { + color: ["#850b0b","#a32d2d","#ab4545"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff8fcf","#ffb2de"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffd2ec","#ffb2de"] }, + } +}; + +elements.cactus_fruit = { + color: ["#ff95b0","#ff80a0","#ff7489"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#75d802","#72d202"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#bbffc1","#84ff90"] }, + } +}; + +elements.pear = { + color: ["#669900","#669933","#9ec419"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#c8e39e","#99cc99"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#c3ff9c","#bcff92"] }, + } +}; + +elements.purpleberry = { + color: ["#8b04a8","#a236b9","#b968cb"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#c08cc3","#e49cc2"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fee6e4","#fbc3c4"] }, + } +}; + +elements.yellowberry = { + color: ["#ffe505","#fffb05","#fdfa72"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#fffec8","#fffdaf"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fffec8","#fffdaf"] }, + } +}; + +elements.pomegranate = { + color: ["#950000","#c93434","#df5555","#8f163f","#6d0606"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ee717f","#e94254"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f4a1a9","#ee717f"] }, + } +}; + +elements.guava = { + color: ["#1ae132","#44e788","#0a7a22"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff5a76","#ff8fa2"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f6c8cd","#f2acb5"] }, + } +}; + +elements.raspberry = { + color: ["#f90064","#980036","#60081a"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#f23a72","#fb79a0"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffb1f4","#ff91ce"] }, + } +}; + +elements.gooseberry = { + color: ["#63041c","#760024","#81052a"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#8b0031","#920436"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f1ffdb","#e3ffb7"] }, + } +}; + +elements.fig = { + color: ["#1d1d3b","#2a2854","#402459"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff4a4a","#ea3838"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ff8d8d","#ffabab"] }, + } +}; + +elements.durian = { + color: ["#b07939","#c09461","#d0af88"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#faffaf","#fbffbf"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#feffe7","#f9ffb3"] }, + } +}; + +elements.passionfruit = { + color: ["#9d3385","#b15c9d","#c485b6"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffdede","#ffe4e4"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#d8adce","#c485b6"] }, + } +}; + +elements.starfruit = { + color: ["#d5eb00","#ddef33","#e6f366"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#f2d553","#f5dd75"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#faeeba","#f7e698"] }, + } +}; + +elements.rambutan = { + color: ["#ff4a4a","#ea3838"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#faffaf","#fbffbf"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fde0e0","#f4c1c1"] }, + } +}; + +elements.nance = { + color: ["#ffff00","#ffff33"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffff66","#ffff99"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fffee0","#fffec8"] }, + } +}; + +elements.nectarine = { + color: ["#c92c0f","#cc4c58","#ea6161"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ffbd8b","#ffdbc0"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffc3ad","#ffa584"] }, + } +}; + +elements.loganberry = { + color: ["#db1515","#e53939","#fd5f5f"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff8f8f","#ffb7b7"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#9c91a5","#bdb5c3"] }, + } +}; + +elements.currant = { + color: ["#ff1828","#ff505c"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#ff878f","#ffbcc0"], + reactions: { + "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#cc6b69","#bb3a37"] }, + } +}; + +elements.sprite_cranberry = { + color: ["#65000f","#89001c","#b40024"], + behavior: [ + "XX|CR:foam%2|XX", + "M2|XX|M2", + "M2|M1|M2", + ], + category: "liquids", + state: "solid", +}; + +elements.mint = { + color: ["#72e88d","#53bd6c"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + reactions: { + "cream": { elem1: null, elem2: "toorhpaste" }, + "ice_cream": { elem1: null, elem2: "mint_ice_cream" }, + } +}; + +elements.broccoli = { + color: ["#004909","#046b00","#0b8500"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#00b215","#0b8500"], +}; + +elements.broccoli_seed = { + color: "#b6c981", + behavior: [ + "XX|M2%0.25|XX", + "XX|L2:broccoli AND C2:broccoli%30|XX", + "XX|M1|XX", + ], + tempHigh: 400, + stateHigh: "fire", + tempLow: -2, + stateLow: "frozen_plant", + burn: 50, + burnTime: 20, + breakInto: null, + category: "life", + state: "solid", + density: 769, + hidden: true, + cooldown: defaultCooldown, + seed: true, +}; + +elements.hot_pepper = { + color: ["#ffd013","#fb8a24","#ff5c3a","#d61439","#81032d"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + reactions: { + "sauce": { elem1: null, elem2: "hot_sauce" }, + } +}; + +elements.hot_sauce = { + color: ["#ff0000","#f00000","#d20000","#c50000","#b00000"], + behavior: behaviors.LIQUID, + density: 10, + category: "food", + state: "solid", +}; + +elements.squash = { + color: ["#f2ab15","#f5bc44","#f7cd73"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#efbe79","#ffd599"], +}; + +elements.zuchinni = { + color: ["#375822","#58704a","#73816a"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + breakIntoColor: ["#80a568","#a3c88c"], +}; + +elements.olive = { + color: ["#445626","#52682d","#6e8b3d"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "olive_oil", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.eggplant = { + color: ["#490b43","#30093a","#23033a"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + breakIntoColor: ["#674ea7","#351c75"], + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.onion = { + color: ["#62121b","#a92940","#c04b65","#d8699e"], + behavior: + [ + ["XX","CH:onion>stench","XX"], + ["XX","XX","XX"], + ["XX","M1","XX"] + ], + category: "food", + state: "solid", + breakInto: ["stench", null, null, null, null], + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.cinnamon = { + color: ["#cda67a","#986544","#6a462f"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.garlic = { + color: ["#f7f3e1","#f6f3c3","#f0e6bd"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + breakInto: "garlic_clove", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.garlic_clove = { + color: ["#b8b17f","#6b5628"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.carrot = { + color: ["#ea820b","#e89116","#e8a32b","#efb538"], + density: 675, + behavior: behaviors.POWDER, + category: "food", + state: "solid", + burnInto: "ash", + burn: 10, + burnTime: 300, + breakInto: "juice", + breakIntoColor: "#f1b956", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.asparagus = { + color: ["#77ab56","#92bc78","#adcd9a"], + density: 675, + behavior: behaviors.POWDER, + category: "food", + state: "solid", + tempHigh: 173, + stateHigh: "roasted_asparagus", + burnInto: "ash", + burn: 10, + burnTime: 300, + breakInto: "juice", + breakIntoColor: "#c9ddbb", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.roasted_asparagus = { + color: ["#849273","#9aa58d","#c0cbb3"], + density: 675, + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + breakInto: "juice", + breakIntoColor: ["#849273","#9aa58d","#c0cbb3"], + tempHigh: 400, + stateHigh: "ash", + burnInto: "ash", + burn: 20, + burnTime: 300, + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.oreo = { + color: "#120600", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + tempHigh: 256, + stateHigh: "steam", + isFood: true, + reactions: { + "toorhpaste": { elem1: "poison_oreo", elem2: null }, + } +}; + +elements.poison_oreo = { + color: "#001112", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.sprinkles = { + color: ["#fbfa8f","#c5ecbd","#7ac7bf","#f29fa9","#e1848e"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.whipped_cream = { + color: ["#fffff0","#fffff3","#fffff6","#fffff9","#fffffc"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempHigh: 130, + stateHigh: "steam", + isFood: true, +}; + +elements.olive_oil = { + color: ["#efcc3f","#efd672","#f1e09a"], + density: 675, + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + burn: 10, + burnTime: 300, + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.seafoam = { + color: ["#a3c1ad","#a0d6b4","#5f9ea0","#317873","#49796b"], + behavior: behaviors.LIQUID, + category: "life", + state: "solid", +}; + +elements.pipis = { + color: ["#00BFFF","#0085B0"], + behavior: behaviors.POWDER, + category: "life", + state: "solid", + tempHigh: 256, + stateHigh: "steam", + isFood: true, +}; + +elements.frog_bomb = { + color: ["#0f2105","#274e13","#6aa84f"], + behavior: [ + "XX|EX:10>frog|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>frog|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "molten_steel", + excludeRandom: true, + cooldown: defaultCooldown +}, + +elements.cash_bomb = { + color: ["#e69138","#f1c232","#f6b26b"], + behavior: [ + "XX|EX:10>gold_coin|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>gold_coin|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "molten_steel", + excludeRandom: true, + cooldown: defaultCooldown +}, + +elements.pi_pis = { + color: ["#0b5394","#073763","#3d85c6"], + behavior: [ + "XX|EX:10>pipis|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>pipis|M2", + ], + behaviorOn: [ + "XX|XX|XX", + "XX|EX:6>metal_scrap,fire,fire,fire%1|XX", + "XX|XX|XX", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "molten_steel", + excludeRandom: true, + conduct: 1, + cooldown: defaultCooldown, + nocheer: true +}, + +elements.holy_hand_grenade = { + color: ["#ffd966","#ffc000","#fff2cc"], + behavior: [ + "XX|EX:20>bless,holy_fire%1|XX", + "XX|XX|XX", + "M2|M1 AND EX:20>bless,holy_fire%1|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "bless", + excludeRandom: true, + cooldown: defaultCooldown +}, + +elements.unholy_feet_bomb = { + color: ["#661a0e","#6b1f13","#803226"], + behavior: [ + "XX|EX:20>curse,fire%1|XX", + "XX|XX|XX", + "M2|M1 AND EX:20>curse,fire%1|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "curse", + excludeRandom: true, + cooldown: defaultCooldown, +}, + +//for(i = 1, i++, i>10){ + +//} +/* +for (let i = 0; i < 100; i++) { + if(unholy_feet_bomb.hidden == false) { + if(curse.hidden == false) { + if(holy_hand_grenade.hidden == false) { + unholy_feet_bomb.hidden = false; + } + } + } + i = 0; + } + */ + + +elements.chocolate_fountain = { + color: "#3e1d07", + behavior: [ + "XX|CR:melted_chocolate|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + category:"special", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + state: "solid", +}; + +elements.legacy_rocket = { + color: "#ff0000", + behavior: [ + "XX|M1|XX", + "XX|DL%1|XX", + "CR:smoke|CR:fire|CR:smoke", + ], + category: "legacy", + hidden:true, + state: "solid", + temp:700, + density: 7300, + conduct: 0.73, + tempHigh: 1455.5, + stateHigh: "molten_steel" +}; + +elements.legacy_dough = { + color: "#bfac91", + behavior: behaviors.STURDYPOWDER, + onMix: function(dough,ingredient) { + if (elements[ingredient.element].isFood && elements[ingredient.element].id !== elements.dough.id && elements[ingredient.element].id !== elements.flour.id && elements[ingredient.element].id !== elements.batter.id && elements[ingredient.element].id !== elements.bread.id) { + var rgb1 = dough.color.match(/\d+/g); + var rgb2 = ingredient.color.match(/\d+/g); + // average the colors + var rgb = [ + Math.round((parseInt(rgb1[0])+parseInt(rgb2[0]))/2), + Math.round((parseInt(rgb1[1])+parseInt(rgb2[1]))/2), + Math.round((parseInt(rgb1[2])+parseInt(rgb2[2]))/2) + ]; + changePixel(ingredient, "dough") + // convert rgb to hex + var hex = RGBToHex(rgb); + dough.color = pixelColorPick(dough, hex); + // 50% change to delete ingredient + if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); } + else { + ingredient.color = pixelColorPick(ingredient, hex); + } + } + }, + reactions: { + "milk": { elem2:"broth", color2:"#ECC891", tempMin:70 }, + "cream": { elem2:"broth", color2:"#ECC891", tempMin:70 }, + }, + category: "legacy", + tempHigh: 94, + stateHigh: "bread", + //stateHighColorMultiplier: 0.9, + burn:40, + burnTime:25, + burnInto:"ash", + state: "solid", + density: 526.9, + isFood: true +}; + +elements.legacy_batter = { + color: "#d4bc85", + behavior: behaviors.LIQUID, + onMix: function(batter,ingredient) { + if (elements[ingredient.element].isFood && elements[ingredient.element].id !== elements.batter.id && elements[ingredient.element].id !== elements.flour.id && elements[ingredient.element].id !== elements.yolk.id && elements[ingredient.element].id !== elements.dough.id && elements[ingredient.element].id !== elements.baked_batter.id) { + var rgb1 = batter.color.match(/\d+/g); + var rgb2 = ingredient.color.match(/\d+/g); + // average the colors + var rgb = [ + Math.round((parseInt(rgb1[0])+parseInt(rgb2[0]))/2), + Math.round((parseInt(rgb1[1])+parseInt(rgb2[1]))/2), + Math.round((parseInt(rgb1[2])+parseInt(rgb2[2]))/2) + ]; + changePixel(ingredient, "batter") + // convert rgb to hex + var hex = RGBToHex(rgb); + batter.color = pixelColorPick(batter, hex); + // 50% change to delete ingredient + if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); } + else { + ingredient.color = pixelColorPick(ingredient, hex); + } + } + }, + category: "legacy", + tempHigh: 94, + stateHigh: "baked_batter", + stateHighColorMultiplier: 0.9, + burn:40, + burnTime:25, + burnInto:"ash", + state: "liquid", + viscosity: 10000, + density: 1001, + hidden: true, + isFood: true +}; + +elements.legacy_lattice = { + color: "#cb4cd9", + behavior: [ + "CL|XX|CL", + "XX|XX|XX", + "CL|XX|CL", + ], + hidden: true, + category:"legacy", + excludeRandom: true +}; + +elements.top_lattice = { + color: "#cb4cd9", + behavior: [ + "CL|XX|CL", + "XX|XX|XX", + "XX|XX|XX", + ], + hidden: true, + category:"special", + excludeRandom: true +}; + +elements.bottom_lattice = { + color: "#cb4cd9", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "CL|XX|CL", + ], + hidden: true, + category:"special", + excludeRandom: true +}; + +elements.right_lattice = { + color: "#cb4cd9", + behavior: [ + "XX|XX|CL", + "XX|XX|XX", + "XX|XX|CL", + ], + hidden: true, + category:"special", + excludeRandom: true +}; + +elements.left_lattice = { + color: "#cb4cd9", + behavior: [ + "CL|XX|XX", + "XX|XX|XX", + "CL|XX|XX", + ], + hidden: true, + category:"special", + excludeRandom: true +}; + +elements.amethyst = { + color: ["#9868e0","#482888","#7848b8","#c898f0","#a878f0"], + behavior: behaviors.POWDER, + hidden: true, + category: "powders", +}; + +elements.quartz = { + color: ["#f6fff9","#f3f9f9","#f6fcf9","#fefefe","#fdfffe"], + behavior: behaviors.POWDER, + hidden: true, + category: "powders", + tempHigh: 1900, + stateHigh: "magma", + reactions: { + "molten_iron": { elem1: "amethyst", elem2: null }, + } +}; + +elements.ruby = { + color: ["#850014","#ae001a","#e10531","#a50727","#6b0015"], + behavior: behaviors.POWDER, + category: "powders", + tempHigh: 900, + stateHigh: "carbon_dioxide", + state: "solid", + density: 3515, + hardness: 1, + alias: "Lamp Oil, Rope, Bombs, you want it? It's yours my friend, as long as you have enough rubies.", +}; + +elements.slushy_ice = { + color: ["#f6fff9","#f3f9f9","#f6fcf9","#fefefe","#fdfffe"], + behavior: behaviors.WALL, + temp: -5, + tempHigh: 5, + stateHigh: "smashed_ice", + category: "states", + state: "solid", + density: 917, + breakInto: "smashed_ice", + isFood: true, +}; + +elements.toorhpaste = { + color: ["#31ffe0","#65ffe8","#97ffef","#c9fff7","#f3fffd"], + behavior: behaviors.LIQUID, + category: "liquids", + state: "solid", + reactions: { + "juice": { elem1: "poison", elem2: null }, + }, + tempHigh: 170, + stateHigh: "steam", + isFood: true, +}; + +if (!elements.lettuce.reactions) elements.lettuce.reactions = {}; +elements.lettuce.reactions.ice_cream = { elem1: "moss", elem2: null } + +if (!elements.advanced_dough.reactions) elements.advanced_dough.reactions = {}; +elements.advanced_dough.reactions.yolk = { elem1: "eggy_dough", elem2: null } + +if (!elements.yeast.reactions) elements.yeast.reactions = {}; +elements.yeast.reactions.flour = { elem1: "beer", elem2: null } + +if (!elements.beer.reactions) elements.beer.reactions = {}; +elements.beer.reactions.fiber = { elem1: "root_beer", elem2: null } + +if (!elements.cheese.reactions) elements.cheese.reactions = {}; +elements.cheese.reactions.seasoning = { elem1: "parmesan", elem2: null } + +if (!elements.sodium.reactions) elements.sodium.reactions = {}; +elements.sodium.reactions.neutral_acid = { elem1: "baking_powder", elem2: null } + +if (!elements.toast.reactions) elements.toast.reactions = {}; +elements.toast.reactions.chocolate = { elem1: "oreo", elem2: null } + +if (!elements.ketchup.reactions) elements.ketchup.reactions = {}; +elements.ketchup.reactions.mayo = { elem1: "rose_sauce", elem2: null } + +if (!elements.bread.reactions) elements.bread.reactions = {}; +elements.bread.reactions.rotten_cheese = { elem1: "mold", elem2: null } + +if (!elements.bread.reactions) elements.bread.reactions = {}; +elements.bread.reactions.dirty_water = { elem1: "mold", elem2: null } + +if (!elements.toast.reactions) elements.toast.reactions = {}; +elements.toast.reactions.rotten_cheese = { elem1: "mold", elem2: null } + +if (!elements.toast.reactions) elements.toast.reactions = {}; +elements.toast.reactions.dirty_water = { elem1: "mold", elem2: null } + +if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {}; +elements.baked_batter.reactions.rotten_cheese = { elem1: "mold", elem2: null } + +if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {}; +elements.baked_batter.reactions.dirty_water = { elem1: "mold", elem2: null } + +if (!elements.bread.reactions) elements.bread.reactions = {}; +elements.bread.reactions.worm = { elem1: "mold", elem2: null } + +if (!elements.bread.reactions) elements.bread.reactions = {}; +elements.bread.reactions.mud = { elem1: "mold", elem2: null } + +if (!elements.toast.reactions) elements.toast.reactions = {}; +elements.toast.reactions.worm = { elem1: "mold", elem2: null } + +if (!elements.toast.reactions) elements.toast.reactions = {}; +elements.toast.reactions.mud = { elem1: "mold", elem2: null } + +if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {}; +elements.baked_batter.reactions.worm = { elem1: "mold", elem2: null } + +if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {}; +elements.baked_batter.reactions.mud = { elem1: "mold", elem2: null } + +elements.sugar_ice.breakInto = "smashed_ice" + +elements.algae.breakInto = "seafoam" + +elements.battery.breakInto = "battery_acid" + +elements.art.burn = 5 +elements.art.burnTime = 300 +elements.art.burnInto = ["ember","charcoal","fire"] + + +elements.herb.breakInto = "seasoning" + +elements.chocolate.breakInto = "chocolate_sauce" + +elements.magma.stateLow = ["basalt","basalt","basalt","basalt","basalt","basalt","basalt","rock","quartz"] + +if (!elements.bless.reactions) elements.bless.reactions = {}; +elements.bless.reactions.mold = { elem2: null } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.broccoli = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.squash = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.zuchinni = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.olive = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.eggplant = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.onion = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.garlic = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.garlic_clove = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.asparagus = { elem1: null, elem2: "pickle" } + +if (!elements.vinegar.reactions) elements.vinegar.reactions = {}; +elements.vinegar.reactions.asparagus = { elem1: null, elem2: "pickle" } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.grape = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.jelly = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.cherry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.orange = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.kiwi = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.green_grape = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.blood_orange = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.canary_melon = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.honeydew_melon = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.cranberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.pitaya = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.coconut = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.cloudberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.crabapple = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.cactus_fruit = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.pear = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.purpleberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.yellowberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.pomegranate = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.guava = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.raspberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.gooseberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.fig = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.durian = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.passionfruit = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.starfruit = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.rambutan = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.nance = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.nectarine = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.loganberry = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.currant = { elem1: "fruit_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.chocolate = { elem1: "chocolate_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.chocolate_sauce = { elem1: "chocolate_ice_cream", elem2: null } + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.melted_chocolate = { elem1: "chocolate_ice_cream", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.grape = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.green_grape = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.cherry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.kiwi = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.orange = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.jelly = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.chocolate = { elem1: "chocolate_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.chocolate_sauce = { elem1: "chocolate_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.melted_chocolate = { elem1: "chocolate_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.blood_orange = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.canary_melon = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.honeydew_melon = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.cranberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.pitaya = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.coconut = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.cloudberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.crabapple = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.cactus_fruit = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.pear = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.purpleberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.yellowberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.pomegranate = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.guava = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.raspberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.gooseberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.fig = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.durian = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.passionfruit = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.starfruit = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.rambutan = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.nance = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.nectarine = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.loganberry = { elem1: "fruit_yogurt", elem2: null } + +if (!elements.yogurt.reactions) elements.yogurt.reactions = {}; +elements.yogurt.reactions.currant = { elem1: "fruit_yogurt", elem2: null } + + +//dev notes area below +/* +uhhhh i just finished changing every color in the mod and now i have enough hex codes for a lifetime +oh god i added like 2 million new fruits +*/ \ No newline at end of file diff --git a/mods/pizzasstuff.js b/mods/pizzasstuff.js index cc28b4ce..279bebdc 100644 --- a/mods/pizzasstuff.js +++ b/mods/pizzasstuff.js @@ -1,3 +1,7 @@ +removeMod("pizzasstuff.js"); +addMod("mossstuff.js"); +reload(); + elements.freeze_ray = { color: ["#8cf9ff","#5c59ff"], tick: function(pixel) { diff --git a/mods/scp.js b/mods/scp.js index db64a288..55e23bd3 100644 --- a/mods/scp.js +++ b/mods/scp.js @@ -33,21 +33,12 @@ window.addEventListener("load", () => { }) window.addEventListener("load", () => { document.getElementById("elementButton-mad_682")?.remove() -}) +}) -// Coding junk past this point +// Coding junk above this point // also hi jonny ray -elements.anomalous_essence = { - hidden: true, - color: "#f7ead0", - behavior: behaviors.GAS, - category: "scp", - state: "gas", - density: 0.50, -}; - elements.SCP_008 = { color: "#11111f", behavior: [ @@ -58,22 +49,22 @@ elements.SCP_008 = { reactions: { "head": { elem1:null, elem2:"z_head" , chance:0.5 }, "body": { elem1:null, elem2:"z_body" , chance:0.5 }, - "skin": { elem1:null, elem2: ["infected_skin","infected_skin","infected_meat"] , chance:0.3 }, - "blood": { elem1:null, elem2:"infection" , chance:0.6 }, - "meat": { elem1:null, elem2:"infected_meat" , chance:0.4 }, - "rotten_meat": { elem1:null, elem2:"infected_meat" , chance:0.5 }, - "frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.3 }, + "skin": { elem1:null, elem2: ["infected_skin","infected_skin","infected_meat"] , chance:0.3 }, + "blood": { elem1:null, elem2:"infection" , chance:0.6 }, + "meat": { elem1:null, elem2:"infected_meat" , chance:0.4 }, + "rotten_meat": { elem1:null, elem2:"infected_meat" , chance:0.5 }, + "frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.3 }, "frog": { elem2:"SCP_008" , chance:0.5 }, "ant": { elem2:"SCP_008" , chance:0.5 }, "bee": { elem2:"SCP_008" , chance:0.5 }, "fish": { elem2:"SCP_008" , chance:0.5 }, "firefly": { elem2:"SCP_008" , chance:0.5 }, - "chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 }, - "liquid_chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 }, - "light": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 }, + "chlorine": { elem1: null , chance:0.01 }, + "liquid_chlorine": { elem1: null , chance:0.01 }, + "light": { elem1: null , chance:0.01 }, }, tempHigh: 750, - stateHigh: [null,null,null,null,null,null,null,null,"anomalous_essence"], + stateHigh: null, tempLow: -100, stateLow: "frozen_008", category: "scp", @@ -85,20 +76,20 @@ elements.frozen_008 = { color: "#242424", behavior: [ "XX|XX|XX", - "XX|DL%0.001|X", - "XX|M1%1.0|XX", + "M2%0.001|DL%0.001|M2%0.001", + "M2%0.01|M1%1.0|M2%0.01", ], reactions: { "head": { elem1:null, elem2:"z_head" , chance:0.4 }, "body": { elem1:null, elem2:"z_body" , chance:0.4 }, - "skin": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 }, - "blood": { elem1:null, elem2:"infection" , chance:0.6 }, - "meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 }, - "rotten_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.5 }, - "frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 }, - "chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 }, - "liquid_chlorine": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 }, - "light": { elem1: [null,null,null,null,null,null,null,null,"anomalous_essence"] , chance:0.01 }, + "skin": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 }, + "blood": { elem1:null, elem2:"infection" , chance:0.6 }, + "meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 }, + "rotten_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.5 }, + "frozen_meat": { elem1:null, elem2:"frozen_infected_meat" , chance:0.4 }, + "chlorine": { elem1: null , chance:0.01 }, + "liquid_chlorine": { elem1: null , chance:0.01 }, + "light": { elem1: null , chance:0.01 }, }, temp: -50, tempHigh: 0, @@ -109,12 +100,12 @@ elements.frozen_008 = { }, elements.infected_skin = { - color: ["#11111f","#75816B","#4D6B53"], + color: ["#75816B","#4D6B53"], singleColor: true, behavior: [ - "XX|CR:stench,stench,stench,SCP_008,fly%0.05 AND CH:meat>infected_meat%1|XX", - "CH:meat>infected_meat%1|XX|CH:meat>infected_meat%1", - "M2%1.0|M1%1.0 AND CH:meat>infected_meat%1|M2%1.0", + "XX|CR:stench,stench,stench,SCP_008,fly%0.05 AND CH:skin>infected_skin%25|XX", + "CH:skin>infected_skin%25|CH:infected_meat%0.5|CH:skin>infected_skin%25", + "M2%1|M1%1.0 AND CH:skin>infected_skin%25|M2%1", ], tick: function(pixel) { if (pixel.temp > 40 && Math.random() < 0.003) { @@ -140,12 +131,16 @@ elements.infected_skin = { pixel2.color = pixelColorPick(pixel2,RGBToHex(pixel1.color.match(/\d+/g))) if (pixel1.origColor) { pixel2.origColor = pixel1.origColor } } }, - "skin": { chance:0.01, func:function(pixel1,pixel2){ - changePixel(pixel2,"infected_skin"); - pixel2.color = pixelColorPick(pixel2,RGBToHex(pixel1.color.match(/\d+/g))) - if (pixel1.origColor) { pixel2.origColor = pixel1.origColor } - } }, - "blood": { elem2:"infection" , chance:0.6 }, + "water": { elem2:"dirty_water" }, + "salt_water": { elem2:"dirty_water" , chance:0.5 }, + "sugar_water": { elem2:"dirty_water" }, + "seltzer": { elem2:"dirty_water" }, + "meat": { elem2:"infected_meat", chance:0.5 }, + "rotten_meat": { elem2:"infected_meat", chance:0.5 }, + "frozen_meat": { elem2:"frozen_infected_meat", chance:0.5 }, + "fly": { elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2}, + "blood": { elem2:"infection" , chance:0.6 }, + "skin": { elem2:"infected_skin" , chance:0.6 }, "acid": { elem1:"infection" }, "soap": { elem1:null, elem2:null, chance:0.005 }, "light": { stain1:"#825043" }, @@ -179,19 +174,21 @@ elements.infected_skin = { elements.infected_meat = { color: ["#b8b165","#b89765"], behavior: [ - "XX|CR:stench,stench,stench,SCP_008,fly%0.25 AND CH:rotten_meat,meat>infected_meat%1|XX", - "SP%99 AND CH:rotten_meat,meat>infected_meat%1|XX|SP%99 AND CH:rotten_meat,meat>infected_meat%1", - "XX|M1 AND CH:rotten_meat,meat>infected_meat%1|XX", + "XX|CR:stench,stench,stench,SCP_008,fly%0.25 AND CH:skin>infected_skin%1|XX", + "SP%25 AND CH:skin>infected_skin%1|XX|SP%25 AND CH:skin>infected_skin%1", + "M2%0.5|M1 AND CH:meat>infected_meat%1|M2%0.5", ], reactions: { "water": { elem2:"dirty_water" }, - "salt_water": { elem2:"dirty_water" }, + "salt_water": { elem2:"dirty_water" , chance:0.5 }, "sugar_water": { elem2:"dirty_water" }, - "dirty_water": { elem2:"broth", tempMin:70, color2:"#d7db69" }, "seltzer": { elem2:"dirty_water" }, - "fly": { elem1: [null,null,"SCP_008"] , elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2}, - "blood": { elem2:"infection" , chance:0.6 }, - "skin": { elem2:"infected_skin" , chance:0.6 }, + "meat": { elem2:"infected_meat", chance:0.5 }, + "rotten_meat": { elem2:"infected_meat", chance:0.5 }, + "frozen_meat": { elem2:"frozen_infected_meat", chance:0.5 }, + "fly": { elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2}, + "blood": { elem2:"infection" , chance:0.6 }, + "skin": { elem2:"infected_skin" , chance:0.6 }, }, tempHigh: 300, stateHigh: ["SCP_008","ash","ammonia"], @@ -209,19 +206,22 @@ elements.infected_meat = { }, elements.frozen_infected_meat = { - color: "#242424", + color: ["#82AEC0","#80808F","#9CAC98"], behavior: [ - "XX|CH:rotten_meat,frozen_meat>frozen_infected_meat%1|XX", - "SP%99 AND CH:rotten_meat,frozen_meat>frozen_infected_meat%1|XX|SP%99 AND CH:rotten_meat,frozen_meat>frozen_infected_meat%1", - "XX|M1 AND CH:rotten_meat,frozen_meat>frozen_infected_meat%1|XX", + "XX|XX|XX", + "SP%95|XX|SP%95", + "XX|M1 AND CH:frozen_meat,meat>frozen_infected_meat%1|XX", ], reactions: { "water": { elem2:"dirty_water" }, "salt_water": { elem1:"infected_meat",elem2:"dirty_water" , chance:0.5 }, "sugar_water": { elem2:"dirty_water" }, "seltzer": { elem2:"dirty_water" }, - "fly": { elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2}, - "blood": { elem2:"infection" , chance:0.6 }, + "meat": { elem2:"frozen_infected_meat", chance:0.5 }, + "rotten_meat": { elem2:"frozen_infected_meat", chance:0.5 }, + "frozen_meat": { elem2:"frozen_infected_meat", chance:0.5 }, + "fly": { elem2: ["dead_bug","dead_bug","SCP_008"] , chance:0.2}, + "blood": { elem2:"infection" , chance:0.6 }, }, temp: -20, tempHigh: 10, @@ -512,7 +512,7 @@ elements.black_acid = { tempLow: -58.88, burn: 30, burnTime: 10, - burnInto: ["fire","fire","fire","fire","fire","fire","fire","fire","ash","ash","fire","fire","fire","fire","ash","ash","anomalous_essence"], + burnInto: ["fire","fire","fire","fire","fire","fire","fire","fire","ash","ash","fire","fire","fire","fire","ash","ash"], fireColor: "#111111", state: "liquid", density: 1105, @@ -523,14 +523,14 @@ elements.SCP_055 = { color: "#00000f", excludeRandom: true, behavior: [ - ["XX","XX","XX"], - ["XX","CH:REDACTED","XX"], - ["XX","XX","XX"] + "XX","XX","XX", + "XX","CH:REDACTED","XX", + "XX","XX","XX" ], category: "scp", state: "solid", tempHigh: 55055055055, - stateHigh: ["metal_scrap","metal_scrap","smoke","smoke","smoke","smoke","smoke","smoke","smoke",null,"anomalous_essence"], + stateHigh: ["metal_scrap","metal_scrap","smoke","smoke","smoke","smoke","smoke","smoke","smoke",null], }, elements.REDACTED = { @@ -538,9 +538,9 @@ elements.REDACTED = { color: "#00000f", excludeRandom: true, behavior: [ - ["XX","xx","XX"], - ["XX","EX","XX"], - ["XX","XX","XX"] + "EX|CL|EX", + "CL|EX:99999999999999999999999>REDACTED|CL", + "EX|CL|EX", ], category: "scp", state: "solid", @@ -579,7 +579,7 @@ elements.doc_head = { hidden: true, color: ["#f7ead0","#faf9f6","#e9e6db"], category: "scp", - breakInto: ["rotten_meat","bone","bone","blood","anomalous_essence"], + breakInto: ["rotten_meat","bone","bone","blood"], properties: { dead: false }, @@ -635,7 +635,7 @@ elements.doc_body = { hidden: true, color: ["#11111f","#242424"], category: "scp", - breakInto: ["rotten_meat","rotten_meat","bone","blood","anomalous_essence"], + breakInto: ["rotten_meat","rotten_meat","bone","blood"], properties: { dead: false, dir: 1, @@ -766,7 +766,7 @@ elements.z_head = { hidden: true, color: ["#75816B","#4D6B53"], category: "scp", - breakInto: ["rotten_meat","bone","bone","blood","anomalous_essence"], + breakInto: ["rotten_meat","bone","bone","blood"], properties: { dead: false }, @@ -823,7 +823,7 @@ elements.z_body = { hidden: true, color: ["#11111f","#069469","#047e99","#7f5fb0"], category: "scp", - breakInto: ["rotten_meat","rotten_meat","bone","blood","anomalous_essence"], + breakInto: ["rotten_meat","rotten_meat","bone","blood"], properties: { dead: false, dir: 1, @@ -920,7 +920,7 @@ elements.z_body = { burnInto: "rotten_meat", forceSaveColor: true, reactions: { - "head": { elem2 : "z_head" , chance:1.0 }, + "head": { elem2 : "z_head" , chance:1.0 }, "body": { elem2 : "z_body" , chance:1.0 }, }, }, @@ -957,7 +957,8 @@ elements.shy_head = { hidden: true, color: ["#f7ead0","#faf9f6","#e9e6db"], category: "scp", - breakInto: ["bone","bone","blood","bone","bone","blood","bone","bone","blood","bone","bone","blood","anomalous_essence"], + hardness: 1, + breakInto: ["rotten_meat","bone","bone","blood","bone","bone","blood","bone","bone","blood","bone","bone","blood"], properties: { dead: false }, @@ -1026,11 +1027,13 @@ elements.shy_body = { hidden: true, color: ["#f7ead0","#faf9f6","#e9e6db"], category: "scp", - breakInto: ["bone","bone","blood","bone","bone","blood","bone","bone","blood","bone","bone","blood","anomalous_essence"], + breakInto: ["rotten_meat","bone","blood","bone","bone","blood","bone","bone","blood","bone","bone","blood"], + hardness: 1, properties: { dead: false, dir: 1, - panic: 0 + panic: 0, + anger: 0 }, tick: function(pixel) { if (tryMove(pixel, pixel.x, pixel.y+1)) { // Fall @@ -1111,7 +1114,58 @@ elements.shy_body = { if (pixel.temp > 37) { pixel.temp -= 1; } else if (pixel.temp < 37) { pixel.temp += 1; } } - + if (pixel.dir == 1) { + if (!isEmpty(pixel.x+2, pixel.y-1, true) && pixelMap[pixel.x+2][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+3, pixel.y-1, true) && pixelMap[pixel.x+2][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+4, pixel.y-1, true) && pixelMap[pixel.x+4][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+5, pixel.y-1, true) && pixelMap[pixel.x+5][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+5, pixel.y-1, true) && pixelMap[pixel.x+5][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+6, pixel.y-1, true) && pixelMap[pixel.x+6][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+7, pixel.y-1, true) && pixelMap[pixel.x+7][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x+8, pixel.y-1, true) && pixelMap[pixel.x+8][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + } + else if (pixel.dir == -1) { + if (!isEmpty(pixel.x-2, pixel.y-1, true) && pixelMap[pixel.x-2][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-3, pixel.y-1, true) && pixelMap[pixel.x-3][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-4, pixel.y-1, true) && pixelMap[pixel.x-4][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-5, pixel.y-1, true) && pixelMap[pixel.x-5][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-5, pixel.y-1, true) && pixelMap[pixel.x-5][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-6, pixel.y-1, true) && pixelMap[pixel.x-6][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-7, pixel.y-1, true) && pixelMap[pixel.x-7][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + else if (!isEmpty(pixel.x-8, pixel.y-1, true) && pixelMap[pixel.x-8][pixel.y-1].element == "head") { + pixel.panic += 0.1; + } + } }, density: 1080, state: "solid", @@ -1301,10 +1355,10 @@ elements.tickle_monster = { conduct: .5, temp: 20, tempHigh: 350, - stateHigh: ["smoke","smoke","smoke","slime","anomalous_essence"], + stateHigh: ["smoke","smoke","smoke","slime"], burn: .1, burnTime: 300, - burnInto: ["smoke","smoke","smoke","slime","anomalous_essence"], + burnInto: ["smoke","smoke","smoke","slime"], stain: 0.03, }, @@ -1322,8 +1376,8 @@ elements.hyper_tickle_monster = { reactions: { "sugar_water": { elem2 : "water" }, "dirty_water": { elem2 : "water" }, - "candy": { elem2 : null }, - "sugar": { elem2 : null }, + "candy": { elem2 : null }, + "sugar": { elem2 : null }, "sauce": { elem2 : null }, "salt": { elem2 : null }, "cheese": { elem2 : null }, @@ -1350,7 +1404,7 @@ elements.hyper_tickle_monster = { "melted_chocolate": { elem2 : null }, "alchohol": { elem2 : null }, "pilk": { elem2 : null }, - "soda": { elem2 : null }, + "soda": { elem2 : null }, "coffee": { elem2 : null }, "seltzer": { elem2 : null }, }, @@ -1358,10 +1412,10 @@ elements.hyper_tickle_monster = { conduct: .5, temp: 20, tempHigh: 350, - stateHigh: ["smoke","smoke","smoke","slime","anomalous_essence"], + stateHigh: ["smoke","smoke","smoke","slime"], burn: .1, burnTime: 300, - burnInto: ["smoke","smoke","smoke","slime","anomalous_essence"], + burnInto: ["smoke","smoke","smoke","slime"], stain: 0.08, }; diff --git a/mods/tech.js b/mods/tech.js index a01b4c45..3f4cc908 100644 --- a/mods/tech.js +++ b/mods/tech.js @@ -98,6 +98,7 @@ elements.nvidia_cpu = { "XX|SH|XX", ], category: "tech", + temp: 25, // Starting temperature (room temperature in Celsius) tempHigh: 1000, // Melting point for realism stateHigh: "molten_silicon", // Assuming it melts into molten silicon reactions: { @@ -109,8 +110,44 @@ elements.nvidia_cpu = { breakInto: ["silicon", "metal_scrap"], conduct: 10, // Moderate conductivity density: 2330, // Density of silicon + tick: function(pixel) { + if (!pixel.heatTick) { + pixel.heatTick = 0; + } + pixel.heatTick++; + if (pixel.heatTick >= 300) { // 300 ticks ~ 5 seconds + pixel.temp += 2; // Increase temperature by 2 degrees Celsius + pixel.heatTick = 0; // Reset heatTick counter + } + + // Check for cooling fan nearby + let cooled = false; + for (let dx = -1; dx <= 1; dx++) { + for (let dy = -1; dy <= 1; dy++) { + if (dx === 0 && dy === 0) continue; + let neighbor = pixelMap[pixel.x + dx]?.[pixel.y + dy]; + if (neighbor && neighbor.element === "spinning_cooler_fan") { + cooled = true; + } + } + } + + if (cooled) { + if (!pixel.coolTick) { + pixel.coolTick = 0; + } + pixel.coolTick++; + if (pixel.coolTick >= 300) { // 300 ticks ~ 5 seconds + pixel.temp -= 2; // Decrease temperature by 2 degrees Celsius + pixel.coolTick = 0; // Reset coolTick counter + } + } else { + pixel.coolTick = 0; // Reset coolTick counter if no cooler is nearby + } + }, }; + elements.molten_silicon = { color: "#ffcc99", behavior: behaviors.LIQUID, @@ -149,3 +186,97 @@ elements.silicon = { density: 2330, }; +elements.glowing_rainbow_led = { + color: ["#FF0000", "#FF7F00", "#FFFF00", "#00FF00", "#0000FF", "#4B0082", "#8B00FF"], // Colors of the rainbow + behavior: [ + "XX|XX|XX", + "XX|SH|XX", + "XX|XX|XX", + ], + category: "tech", + state: "solid", + density: 300, // Arbitrary density for LED + tempHigh: 150, // Melting point for realism + stateHigh: "molten_plastic", + reactions: { + "water": { elem1: "short_circuit", elem2: "steam" }, + "salt_water": { elem1: "short_circuit", elem2: "null" }, + "acid": { elem1: "corroded_led", elem2: "null" }, + "poison": { elem1: "corroded_led", elem2: "null" }, + }, + tick: function(pixel) { + // Function to cycle through colors + if (!pixel.colorIndex) { + pixel.colorIndex = 0; // Initialize color index + } + pixel.colorIndex = (pixel.colorIndex + 1) % elements.glowing_rainbow_led.color.length; + pixel.color = elements.glowing_rainbow_led.color[pixel.colorIndex]; + }, +}; + +elements.corroded_led = { + color: "#707070", + behavior: behaviors.POWDER, + category: "tech", + tempHigh: 800, + stateHigh: "ash", + conduct: 1, +}; + +elements.spinning_cooler_fan = { + color: "#4a90e2", // Blue color for the fan + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + category: "tech", + state: "solid", + density: 800, // Arbitrary density for the fan + tick: function(pixel) { + // Define movement pattern + if (!pixel.moveStep) { + pixel.moveStep = 0; // Initialize movement step + } + + // Determine the current movement direction + let directions = [ + {dx: 0, dy: -1}, // Move up + {dx: 1, dy: 0}, // Move right + {dx: 0, dy: 1}, // Move down + {dx: -1, dy: 0} // Move left + ]; + + let move = directions[pixel.moveStep]; + + // Attempt to move in the current direction + let newX = pixel.x + move.dx; + let newY = pixel.y + move.dy; + + if (isEmpty(newX, newY)) { + // If the next position is empty, move there + movePixel(pixel, newX, newY); + } + + // Advance to the next step in the movement pattern + pixel.moveStep = (pixel.moveStep + 1) % directions.length; + }, +}; + +function isEmpty(x, y) { + // Check if the position (x, y) is empty + if (x >= 0 && y >= 0 && x < width && y < height) { + return !pixelMap[x][y]; + } + return false; +} + +function movePixel(pixel, newX, newY) { + // Move the pixel to the new position + if (isEmpty(newX, newY)) { + pixelMap[pixel.x][pixel.y] = null; // Clear the current position + pixel.x = newX; + pixel.y = newY; + pixelMap[newX][newY] = pixel; // Set the new position + } +} diff --git a/mods/weapons.js b/mods/weapons.js index ecf0d417..ef40c968 100644 --- a/mods/weapons.js +++ b/mods/weapons.js @@ -37,7 +37,7 @@ elements.fat_man = { excludeRandom: true, cooldown: defaultCooldown }, - elements.self_propelled_bomb = { +elements.self_propelled_bomb = { color: "#71797E", tick: function(pixel) { if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) { @@ -75,6 +75,7 @@ elements.left_missile = { "M1 AND EX:10|XX|EX:10", "M2|EX:10|XX", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -87,6 +88,7 @@ elements.right_missile = { "EX:10|XX|M1 AND EX:10", "XX|EX:10|M2", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -99,6 +101,7 @@ elements.up_missile = { "EX:10|XX|EX:10", "XX|EX:10|XX", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -167,6 +170,7 @@ elements.left_bullet = { "M1 AND EX:5|XX|XX", "M2|XX|XX", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -179,6 +183,7 @@ elements.left_bullet = { "XX|XX|M1 AND EX:5", "XX|XX|M2", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -239,6 +244,7 @@ elements.left_rocket = { "M1 AND EX:10|XX|XX", "XX|XX|XX", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -251,6 +257,7 @@ elements.left_rocket = { "XX|XX|M1 AND EX:10", "XX|XX|XX", ], + state: "solid", category:"ammunition", density: 1300, excludeRandom: true, @@ -609,8 +616,6 @@ elements.fast_bomb = { for (var i=0; i<3; i++) { if (!tryMove(pixel, pixel.x, pixel.y+1)) { if (!isEmpty(pixel.x, pixel.y+1,true)) { - var newPixel = pixelMap[pixel.x][pixel.y+1]; - if (newPixel.element === "fast_bomb") { break; } } } } @@ -734,4 +739,160 @@ elements.tank_right = { "XX|XX|M1", "XX|M1|M1", ], -} \ No newline at end of file +}, +elements.realistic_missile_left = { + color: "#524c41", + category: "weapons", + state: "solid", + behavior: [ + "XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|M1 AND EX:20>missile_shrapnel|XX|EX:20>missile_shrapnel|CR:smoke AND EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX", + ], + tick: function(pixel) { + for (var i=0; i<3; i++) { + if (!tryMove(pixel, pixel.x-1, pixel.y)) { + if (!isEmpty(pixel.x-1, pixel.y,true)) { + } + } + } + }, + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +}, +elements.realistic_missile_right = { + color: "#524c41", + category: "weapons", + state: "solid", + behavior: [ + "XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|CR:smoke AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX|M1|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel", + "XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX", + ], + tick: function(pixel) { + for (var i=0; i<3; i++) { + if (!tryMove(pixel, pixel.x+1, pixel.y)) { + if (!isEmpty(pixel.x+1, pixel.y,true)) { + } + } + } + }, + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +}, + elements.missile_shrapnel = { + color: "#71797E", + behavior: [ + "XX|XX|XX", + "XX|EX:5 %20|XX", + "M2%20|M1%20|M2%20", + ], + burn: 90, + burnTime: 100, + density: 2000, + conduct: 1, + state: "solid", + category: "ammunition" +}, +elements.vlms_left = { + color: "#71797E", + tick: function(pixel) { + if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + if (pixel.burning) { + if (!tryMove(pixel, pixel.x, pixel.y-1)) { + // tryMove again to the top left or top right + tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y-1); + } + if (pixelTicks-pixel.burnStart > 50 && Math.random() < 0.1) { + explodeAt(pixel.x, 10, 4, "realistic_missile_left"); + deletePixel(pixel.x,pixel.y) + } + } + else { + if (!tryMove(pixel, pixel.x, pixel.y+1)) { + // tryMove again to the bottom left or bottom right + tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y+1); + } + } + doDefaults(pixel); + }, + burn: 90, + burnTime: 100, + density: 2000, + conduct: 1, + state: "solid", + category: "weapons" +}, +elements.vlms_right = { + color: "#71797E", + tick: function(pixel) { + if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + if (pixel.burning) { + if (!tryMove(pixel, pixel.x, pixel.y-1)) { + // tryMove again to the top left or top right + tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y-1); + } + if (pixelTicks-pixel.burnStart > 50 && Math.random() < 0.1) { + explodeAt(pixel.x, 10, 4, "realistic_missile_right"); + deletePixel(pixel.x,pixel.y) + } + } + else { + if (!tryMove(pixel, pixel.x, pixel.y+1)) { + // tryMove again to the bottom left or bottom right + tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y+1); + } + } + doDefaults(pixel); + }, + burn: 90, + burnTime: 100, + density: 2000, + conduct: 1, + state: "solid", + category: "weapons" +}, +createAtXvar = 0; +createAtYvar = 0; +create1var = ""; +elements.element_spawner = { + color: "#71797E", + onSelect: function() { + var answer1 = prompt("Please input the x value.",(createAtXvar||undefined)); + if (!answer1) {return} + createAtXvar = parseInt(answer1); + var answer2 = prompt("Please input the y value.",(createAtYvar||undefined)); + if (!answer2) {return} + createAtYvar = parseInt(answer2); + var answer3 = prompt("Please input what element should spawn.",(create1var||undefined)); + if (!answer3) {return} + create1var = answer3; + }, + tick: function(pixel) { + if (pixel.charge){ + createPixel(create1var, createAtXvar, createAtYvar); + } + doDefaults(pixel); + }, + density: 1, + conduct: 1, + state: "solid", + category: "machines" +} + \ No newline at end of file