diff --git a/easysurvival.js b/easysurvival.js deleted file mode 100644 index 86fdcc7b..00000000 --- a/easysurvival.js +++ /dev/null @@ -1,917 +0,0 @@ -behaviors = { - POWDER_OLD: [ - "XX|XX|XX", - "XX|XX|XX", - "M2|M1|M2", - ], - POWDER: function(pixel) { - if (pixel.start === pixelTicks) {return} - if (pixel.charge && elements[pixel.element].behaviorOn) { - pixelTick(pixel) - } - if (!tryMove(pixel, pixel.x, pixel.y+1)) { - if (Math.random() < 0.5) { - if (!tryMove(pixel, pixel.x+1, pixel.y+1)) { - tryMove(pixel, pixel.x-1, pixel.y+1); - } - } else { - if (!tryMove(pixel, pixel.x-1, pixel.y+1)) { - tryMove(pixel, pixel.x+1, pixel.y+1); - } - } - } - doDefaults(pixel); - }, - AGPOWDER: [ - "M2|M1|M2", - "XX|XX|XX", - "XX|XX|XX", - ], - LIQUID_OLD: [ - "XX|XX|XX", - "M2|XX|M2", - "M1|M1|M1", - ], - LIQUID: function(pixel) { - if (pixel.start === pixelTicks) {return} - if (pixel.charge && elements[pixel.element].behaviorOn) { - pixelTick(pixel) - } - if (elements[pixel.element].viscosity && (!((Math.random()*100) < 100 / Math.pow(elements[pixel.element].viscosity, 0.25)))) { - var move1Spots = [ - [pixel.x, pixel.y+1] - ] - } - else { - var move1Spots = [ - [pixel.x+1, pixel.y+1], - [pixel.x, pixel.y+1], - [pixel.x-1, pixel.y+1], - ] - } - var moved = false; - for (var i = 0; i < move1Spots.length; i++) { - var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)]; - if (tryMove(pixel, coords[0], coords[1])) { moved = true; break; } - else { move1Spots.splice(move1Spots.indexOf(coords), 1); } - } - if (!moved) { - if (elements[pixel.element].viscosity===undefined || !(!((Math.random()*100) < 100 / Math.pow(elements[pixel.element].viscosity, 0.25)))) { - if (Math.random() < 0.5) { - if (!tryMove(pixel, pixel.x+1, pixel.y)) { - tryMove(pixel, pixel.x-1, pixel.y); - } - } else { - if (!tryMove(pixel, pixel.x-1, pixel.y)) { - tryMove(pixel, pixel.x+1, pixel.y); - } - } - } - } - doDefaults(pixel); - }, - SUPERFLUID_OLD: [ - "XX|XX|XX", - "XX|XX|M2 AND BO", - "XX|M1|M2", - ], - SUPERFLUID: function(pixel) { - if (pixel.start === pixelTicks) {return} - if (pixel.charge && elements[pixel.element].behaviorOn) { - pixelTick(pixel) - } - if (!tryMove(pixel, pixel.x, pixel.y+1)) { - // go either left or right depending on pixel.flipX - var newx = pixel.flipX ? pixel.x-1 : pixel.x+1; - if (Math.random() < 0.5) { - if (!tryMove(pixel, newx, pixel.y)) { - pixel.flipX = !pixel.flipX; - tryMove(pixel, newx, pixel.y+1); - } - } - else { - if (!tryMove(pixel, newx, pixel.y+1)) { - if (!tryMove(pixel, newx, pixel.y)) { pixel.flipX = !pixel.flipX; } - } - } - } - doDefaults(pixel); - }, - LIGHTWEIGHT: [ - "XX|XX|XX", - "XX|FX%0.25|XX", - "M2%10|M1%10|M1%10", - ], - SLIDE: [ - "XX|XX|XX", - "XX|XX|M2 AND BO", - "XX|M1|M1", - ], - AGLIQUID: [ - "M1|M1|M1", - "M2|XX|M2", - "XX|XX|XX", - ], - WALL: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - UL_UR: [ - "M1|M1|M1", - "M2|XX|M2", - "XX|M2|XX", - ], - UL_UR_OPTIMIZED: function(pixel) { - if (pixel.start === pixelTicks) {return} - if (pixel.charge && elements[pixel.element].behaviorOn) { - pixelTick(pixel) - } - var move1Spots = [ - [pixel.x, pixel.y-1], - [pixel.x+1, pixel.y-1], - [pixel.x-1, pixel.y-1], - ] - var moved = false; - for (var i = 0; i < move1Spots.length; i++) { - var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)]; - if (tryMove(pixel, coords[0], coords[1])) { moved = true; break; } - else { move1Spots.splice(move1Spots.indexOf(coords), 1);} - } - if (!moved && !pixel.del) { - var move2Spots = [ - [pixel.x, pixel.y+1], - [pixel.x+1, pixel.y], - [pixel.x-1, pixel.y], - ] - for (var i = 0; i < move2Spots.length; i++) { - var coords = move2Spots[Math.floor(Math.random()*move2Spots.length)]; - if (tryMove(pixel, coords[0], coords[1])) { break; } - else { move2Spots.splice(move2Spots.indexOf(coords), 1); } - } - } - if (!pixel.del) { doDefaults(pixel); } - }, - GAS_OLD: [ - "M2|M1|M2", - "M1|XX|M1", - "M2|M1|M2", - ], - GAS: function(pixel) { - if (pixel.start === pixelTicks) {return} - if (pixel.charge && elements[pixel.element].behaviorOn) { - pixelTick(pixel) - } - var move1Spots = [ - [pixel.x, pixel.y+1], - [pixel.x, pixel.y-1], - [pixel.x+1, pixel.y], - [pixel.x-1, pixel.y], - ] - var moved = false; - for (var i = 0; i < move1Spots.length; i++) { - var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)]; - if (tryMove(pixel, coords[0], coords[1])) { moved = true; break; } - else { move1Spots.splice(move1Spots.indexOf(coords), 1);} - } - if (!moved) { - var move2Spots = [ - [pixel.x+1, pixel.y+1], - [pixel.x-1, pixel.y+1], - [pixel.x+1, pixel.y-1], - [pixel.x-1, pixel.y-1], - ] - for (var i = 0; i < move2Spots.length; i++) { - var coords = move2Spots[Math.floor(Math.random()*move2Spots.length)]; - if (tryMove(pixel, coords[0], coords[1])) { break; } - else { move2Spots.splice(move2Spots.indexOf(coords), 1); } - } - } - doDefaults(pixel); - }, - DGAS: [ - "M2|M1|M2", - "M1|DL%5|M1", - "M2|M1|M2", - ], - SUPPORT: [ - "XX|XX|XX", - "SP|XX|SP", - "XX|M1|XX", - ], - SUPPORTPOWDER: [ - "XX|XX|XX", - "SP|XX|SP", - "M2|M1|M2", - ], - DELETE: [ - "XX|DL|XX", - "DL|XX|DL", - "XX|DL|XX", - ], - FILL: [ - "XX|CL|XX", - "CL|XX|CL", - "XX|CL|XX", - ], - CLONER: [ - "XX|CF|XX", - "CF|XX|CF", - "XX|CF|XX", - ], - SUPERCLONER: [ - "CF|CF|CF", - "CF|CF|CF", - "CF|CF|CF", - ], - STURDYPOWDER: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|M1|XX", - ], - SELFDELETE: [ - "XX|XX|XX", - "XX|DL|XX", - "XX|XX|XX", - ], - FOAM: [ - "XX|XX|XX", - "XX|DL%5|XX", - "M2%25|M1%25|M2%25", - ], - BUBBLE: [ - "XX|XX|XX", - "XX|DL%0.25 AND FX%1|M1%5", - "XX|M1%1|M1%2", - ], - STICKY: [ - "XX|ST|XX", - "ST|XX|ST", - "XX|ST AND M1|XX", - ], - MOLTEN: [ - "XX|CR:fire%2.5|XX", - "M2|XX|M2", - "M1|M1|M1", - ], - RADPOWDER: [ - "XX|CR:radiation%1|XX", - "CR:radiation%1|XX|CR:radiation%1", - "M2|M1|M2", - ], - RADMOLTEN: [ - "XX|CR:fire,fire,fire,radiation%4.5|XX", - "M2 AND CR:radiation%1|XX|M2 AND CR:radiation%1", - "M1|M1|M1", - ], - RADLIQUID: [ - "XX|CR:radiation%2|XX", - "M2 AND CR:radiation%2|XX|M2 AND CR:radiation%2", - "M1|M1|M1", - ], - BOUNCY: function(pixel) { - if (pixel.bx===undefined) { - // choose 1, 0, or -1 - pixel.bx = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1; - pixel.by = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1; - // if both are 0, make one of them 1 or -1 - if (pixel.bx===0 && pixel.by===0) { - if (Math.random() < 0.5) { pixel.bx = Math.random() < 0.5 ? 1 : -1; } - else { pixel.by = Math.random() < 0.5 ? 1 : -1; } - } - } - // move and invert direction if hit - if (!pixel.del && pixel.bx && !tryMove(pixel, pixel.x+pixel.bx, pixel.y)) { pixel.bx = -pixel.bx; } - if (!pixel.del && pixel.by && !tryMove(pixel, pixel.x, pixel.y+pixel.by)) { pixel.by = -pixel.by; } - }, - FEEDPIXEL: function(pixel) { - if (!pixel.food) { pixel.food = 1 } - else { pixel.food ++ } - if (pixel.food > (elements[pixel.element].foodNeed||30)) { - // loop through adjacentCoords and check each pixel to lay an egg - for (var i = 0; i < adjacentCoords.length; i++) { - var x = pixel.x+adjacentCoords[i][0]; - var y = pixel.y+adjacentCoords[i][1]; - if (isEmpty(x, y)) { - if (elements[pixel.element].egg) { - createPixel(elements[pixel.element].egg,x,y) - } - else { - createPixel("egg",x,y) - pixelMap[x][y].animal = elements[pixel.element].baby || pixel.element; - if (elements[pixel.element].eggColor) { - pixelMap[x][y].color = pixelColorPick(pixelMap[x][y],elements[pixel.element].eggColor) - } - } - pixel.food = 0; - break; - } - } - } - }, - KILLPIXEL1: function(pixel) { - pixel.dead = true; - }, - KILLPIXEL2: function(pixel1,pixel2) { - pixel2.dead = true; - }, - FLY: function(pixel, onHit) { - var nx = pixel.flipX ? -1 : 1; - var ny = Math.random() < 0.5 ? -1 : 1; - var hit = false; - if (!tryMove(pixel, pixel.x+nx, pixel.y+ny)) { - if (!tryMove(pixel, pixel.x+nx, pixel.y-ny)) { - if (!tryMove(pixel, pixel.x, pixel.y+ny)) { - if (!tryMove(pixel, pixel.x, pixel.y-ny)) {hit=[pixel.x, pixel.y-ny]} - }else {hit=[pixel.x, pixel.y+ny]} - }else {hit=[pixel.x+nx, pixel.y-ny]} - }else {hit=[pixel.x+nx, pixel.y+ny]} - if (hit && onHit) { - if (!isEmpty(hit[0], hit[1], true)) { - onHit(pixel, pixelMap[hit[0]][hit[1]]); - } - else {onHit(pixel);} - } - if (pixel.del) {return} - if (!isEmpty(pixel.x+nx,pixel.y) || Math.random() < 0.02) { - pixel.flipX = !pixel.flipX; - } - if (pixel.charge && elements[pixel.element].behaviorOn) { - pixelTick(pixel) - } - doDefaults(pixel); - }, - CRAWLER: function(pixel) { - if (Math.random() < 0.08) { // flip - pixel.flipX = !pixel.flipX; - } - var dir = pixel.flipX ? -1 : 1; - var dirY = pixel.flipY ? -1 : 1; - if (!tryMove(pixel,pixel.x,pixel.y+dirY)) { // fall or climb - if (!tryMove(pixel,pixel.x+dir,pixel.y)) { // hits wall - if (!pixel.hilled && !isEmpty(pixel.x+dir,pixel.y,true) && pixelMap[pixel.x+dir][pixel.y].element === "ant_wall") { - pixel.hilled = true; - } - tryMove(pixel,pixel.x+dir,pixel.y + (Math.random() < 0.25 ? 1 : -1)); - } - if (Math.random() < 0.01 && !isEmpty(pixel.x+dir,pixel.y+1,true) && eLists.CRAWLTHRU.indexOf(pixelMap[pixel.x+dir][pixel.y+1].element) !== -1) { - if (!pixel.hilled || !isEmpty(pixel.x+dir,pixel.y,true) && pixelMap[pixel.x+dir][pixel.y].element === "ant_wall") { - var wallCoords = [ - [-1,-1],[1,-1], - [-1,0],[1,0], - [0,1] - ]; - if (!isEmpty(pixel.x,pixel.y-2)) { - wallCoords.push([0,-1]) - } - if (Math.random() < 0.15) { wallCoords.push([-1,1]) } - if (Math.random() < 0.15) { wallCoords.push([1,1]) } - // loop through wallCoords, change pixel to ant_wall if in crawlthru - for (var i = 0; i < wallCoords.length; i++) { - var x = pixel.x+dir+wallCoords[i][0]; - var y = pixel.y+1+wallCoords[i][1]; - if (!isEmpty(x,y,true) && eLists.CRAWLTHRU.indexOf(pixelMap[x][y].element) !== -1) { - changePixel(pixelMap[x][y],"ant_wall"); - } - } - deletePixel(pixel.x+dir,pixel.y+1); - tryMove(pixel,pixel.x+dir,pixel.y+1); - } - } - else if (Math.random() < 0.08 && !isEmpty(pixel.x+dir,pixel.y-1,true) && eLists.CRAWLTHRU.indexOf(pixelMap[pixel.x+dir][pixel.y-1].element) !== -1) { - swapPixels(pixel,pixelMap[pixel.x+dir][pixel.y-1]); - } - } - doDefaults(pixel); - } -} - -elements.supercloner = { - color: "#dddd00", - behavior: behaviors.SUPERCLONER, - ignore: ["ecloner","slow_cloner","clone_powder","floating_cloner","wall","ewall", "cloner"], - category:"inventory", - insulate:true, - hardness: 1, - darkText: true, -} - -if (!settings.survival) { - settings.survival = { - "wall": 9999, - "dirt": 9999, - "sapling": 10, - "seeds": 50, - "ice": 250, - "cloner": 10, - "supercloner": 10 - } -} -settings.survival.cloner = 1; -settings.unhide = 0; -// settings.survivalClone=null; settings.survival = null; saveSettings(); - -survivalTimeout = null; -function survivalSave() { - if (survivalTimeout) { clearTimeout(survivalTimeout); } - survivalTimeout = setTimeout(function(){ - saveSettings(); - },1000); -} -function survivalAdd(element,amount,skipSave) { - if (elements[element].category === "tools") { return } - if (settings.survival[element]) { - settings.survival[element] += amount; - } - else { - settings.survival[element] = amount; - } - survivalUpdate(element); - if (!skipSave) {survivalSave()} -} -function survivalRemove(element,amount,skipSave) { - if (elements[element].category === "tools") { return } - if (settings.survival[element]) { - settings.survival[element] -= amount; - survivalUpdate(element); - } - if (settings.survival[element] <= 0) { - delete settings.survival[element]; - var btn = document.getElementById("elementButton-"+element); - if (btn) { btn.remove(); } - selectElement("unknown"); - } - if (!skipSave) {survivalSave()} -} -function survivalCount(element) { - return settings.survival[element] || 0; -} -function survivalUpdate(element) { - if (element === "gold_coin") { - // if it is not an integer, round it to 0.1 - if (settings.survival.gold_coin % 1 !== 0) { - settings.survival.gold_coin = Math.round(settings.survival.gold_coin*10)/10; - } - document.getElementById("coinCount").innerHTML = settings.survival.gold_coin||0; - } - var btn = document.getElementById("elementButton-"+element); - if (elements[element] && elements[element].category === "tools") { return } - if (btn) { - btn.innerHTML = btn.innerHTML.split("(")[0]+"("+settings.survival[element]+")"; - } - else if (elements[element]) { - createElementButton(element); - document.getElementById("elementButton-"+element).innerHTML += "("+settings.survival[element]+")"; - } -} - -runAfterAutogen(function(){ - elements.erase.name = "pick_up"; - delete elements.paint.category; - delete elements.lookup.category; - delete elements.pick; - delete elements.prop; - elements.radiation.category = "tools"; - for (var element in elements) { - if (elements[element].category !== "tools") { - elements[element].hidden = true; - elements[element].category = "inventory"; - } - } - for (var element in settings.survival) { - if (!elements[element]) { continue; } - if (elements[element].category === "tools") { continue; } - createElementButton(element); - document.getElementById("elementButton-"+element).innerHTML += "("+settings.survival[element]+")"; - } -}); - -delete elements.cloner.behavior; -elements.cloner.tick = function(pixel) { - if (settings.survivalClone) { - if (Math.random() < 0.025) { - // 1 or -1 - var x = pixel.x + (Math.random() < 0.5 ? 1 : -1); - var y = pixel.y + (Math.random() < 0.5 ? 1 : -1); - if (isEmpty(x,y)) { - createPixel(settings.survivalClone,x,y); - } - } - } - else { - for (var i = 0; i < adjacentCoords.length; i++) { - var coords = adjacentCoords[i]; - var x = pixel.x + coords[0]; - var y = pixel.y + coords[1]; - if (!isEmpty(x,y,true)) { - if (pixelMap[x][y].clone) { pixel.clone = pixelMap[x][y].clone; break } - var element = pixelMap[x][y].element; - if (element === pixel.element || elements[pixel.element].ignore.indexOf(element) !== -1) { continue } - settings.survivalClone = element; - survivalSave(); - break; - } - } - } -}; -elements.cloner.ignore = elements.cloner.ignore.concat(["sun","supernova"]); -elements.cloner.desc = "You can only clone one element at a time!" - -elements.smash.tool = function(pixel) { - if (elements[pixel.element].seed === true) { return } - if (elements[pixel.element].breakInto !== undefined || (elements[pixel.element].seed !== undefined && elements[pixel.element].seed !== true)) { - // times 0.25 if not shiftDown else 1 - if (Math.random() < (elements[pixel.element].hardness || 1) * (shiftDown ? 1 : 0.25)) { - var breakInto = elements[pixel.element].breakInto; - if (elements[pixel.element].seed && (!breakInto || Math.random() < 0.5)) { - if (Math.random() < 0.2) { - breakInto = elements[pixel.element].seed; - } - else { - breakInto = null; - } - } - // if breakInto is an array, pick one - if (Array.isArray(breakInto)) { - breakInto = breakInto[Math.floor(Math.random() * breakInto.length)]; - } - if (breakInto === null) { - deletePixel(pixel.x,pixel.y); - return; - } - var oldelement = pixel.element; - changePixel(pixel,breakInto); - pixelTempCheck(pixel); - if (elements[oldelement].breakIntoColor) { - pixel.color = pixelColorPick(pixel, elements[oldelement].breakIntoColor); - } - } - } -}; - -elementWorth = { - "gold_coin": 1, - "diamond": 1000^21, - "ketchup": 150, - "jelly": 120, - "soda": 104, - "toast": 120, - "oil": 1023423, - "bread": 32, - "glass": 54, - "rad_glass": 64, - "glass_shard": 42, - "rad_shard": 312412, - "paper": 512312, - "broth": 512312, - "honey": 125, - "caramel": 53, - "sap": 34, - "candy": 325, - "popcorn": 232, - "flour": 322, - "lettuce": 2232, - "sauce": 2232, - "wood": 999, - "tree_branch": 100000, - "plant": 1, - "mushroom_cap": 1, - "mushroom_gill": 3, - "vine": 1, - "cactus": 1, - "cloner": 2, - "wall": 1000^22, - "fire": 100000^232, - "smoke": 0, - "plasma": 0, - "light": 0, - "laser": 0, - "liquid_light": 0.1, - "flash": 0, - "radiation": 0, - "petal": -1, - "cell": -1, - "cancer": -1, - "foam": -1, -} -elements.sell = { - color: ["#fff0b5","#ffe680","#c48821","#986a1a","#eca832","#f0bb62"], - tool: function(pixel) { - if (elementWorth[pixel.element] === 0) { return; } - deletePixel(pixel.x,pixel.y); - if (elementWorth[pixel.element] === -1) { return; } - survivalAdd("gold_coin",elementWorth*10[pixel.element]||1); - }, - category: "tools", - desc: "Exchanges pixels for their market value in Gold Coins x 10" -} -elements.seeds.name = "seed"; - -/* -~Cloner -~Sell -Shop - Cloner Reset - ~Ammonia - ~Dirt - ~Water - ~Seeds - ~Sapling - ~Pinecone - ~Primordial Soup - ~Worm - ~Bee - ~Human - ~TNT - Seller (Runs Sell tool on pixels that touch it) - Buyer (Cloner but uses store price every time, prompt to select item on select) -Prices tab -*/ -survivalShop = { - "dirt*25": 25, - "water*25": 250, - "ammonia*25": 500, - "seeds*1": 500, - "sapling*1": 500, - "pinecone*1": 500, - "tnt*25": 1000, - "worm*1": 1000, - "bee*1": 5000, - "primordial_soup*5": 10000, - "human*1": 50000, - "sun*1": 500000, - "milk": -200^2, -} -function survivalBuy(element) { - var price = survivalShop[element]; - if (!price) { alert("The shop isn't selling "+element+"!"); return } - if (!settings.survival.gold_coin || settings.survival.gold_coin < price) { alert("You can't afford that!"); return } - survivalRemove("gold_coin",price); - var amount = 1; - if (element.indexOf("*") !== -1) { amount = parseInt(element.split("*")[1]); element = element.split("*")[0]; } - survivalAdd(element,amount); - selectElement(element); -} -function survivalResetCloner() { - if (!settings.survival.gold_coin || settings.survival.gold_coin < 1000) { alert("You can't afford that!"); return } - survivalRemove("gold_coin",1000); - settings.survivalClone = null; - survivalSave(); -} - -worldgentypes = {} -window.addEventListener("load",function(){ - // move to start of tools - var erase = document.getElementById("elementButton-erase"); - var sell = document.getElementById("elementButton-sell"); - var parent = erase.parentElement; - parent.removeChild(sell); - parent.insertBefore(sell,parent.firstChild); - parent.removeChild(erase); - parent.insertBefore(erase,parent.firstChild); - document.getElementById("replaceButton").remove(); - document.getElementById("savesButton").remove(); - document.getElementById("elemSelectButton").remove(); - doRandomEvents = function() {} - worldGen = function() {} - worldgentypes = {} - loadSave = function() {} - showSaves = function() {} - placeImage = function() {} - chooseElementPrompt = function() {} - document.getElementById("toolControls").insertAdjacentHTML("beforeend",``); - createCategoryDiv("shop"); - var shopDiv = document.getElementById("category-shop"); - shopDiv.style.display = "none"; - shopDiv.insertAdjacentHTML("beforeend",`

You have $${settings.survival.gold_coin||0}

`); - for (var element in survivalShop) { - var price = survivalShop[element]; - var button = document.createElement("button"); - var name = element; - var amount = 1; - if (element.indexOf("*") !== -1) { amount = parseInt(element.split("*")[1]); name = element.split("*")[0]; } - var elemname = name; - name = (elements[elemname].name||name).replace(/_/g, " ").replace("."," ").replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}).replace(" ",".").replace(/ /g, ""); - button.classList.add("elementButton"); - button.setAttribute("element",element); - button.setAttribute("category","shop"); - button.setAttribute("title",amount+" "+name+" for $"+price); - button.innerHTML = name+" ("+amount+" for $"+price+")"; - if (elements[elemname]) { - if (elements[elemname].color instanceof Array) { - button.style.backgroundImage = "linear-gradient(to bottom right, "+elements[elemname].color.join(", ")+")"; - // choose the middlemost item in array - var colorObject = elements[elemname].colorObject[Math.floor(elements[elemname].colorObject.length/2)]; - if (elements[elemname].darkText !== false && (elements[elemname].darkText || (colorObject.r+colorObject.g+colorObject.b)/3 > 200)) { - button.className += " bright" - } - } - else { - button.style.background = elements[elemname].color; - var colorObject = elements[elemname].colorObject; - if (elements[elemname].darkText !== false && (elements[elemname].darkText || (colorObject.r+colorObject.g+colorObject.b)/3 > 200)) { - button.className += " bright" - } - } - } - button.addEventListener("click",function(){ - survivalBuy(this.getAttribute("element")); - }); - shopDiv.appendChild(button); - } - shopDiv.insertAdjacentHTML("beforeend",`

`); - - createCategoryDiv("prices"); - var pricesDiv = document.getElementById("category-prices"); - pricesDiv.style.display = "none"; - for (var element in elementWorth) { - if (elementWorth[element] <= 0) { continue } - var name = (elements[element].name||element).replace(/_/g, " ").replace("."," ").replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}).replace(" ","."); - // create text with the name of the element and its worth, separated by • - var text = name+"="+elementWorth[element] + " • "; - pricesDiv.insertAdjacentHTML("beforeend",`${text}`); - } - pricesDiv.innerHTML = pricesDiv.innerHTML.slice(0,-2); - pricesDiv.innerHTML = "

"+pricesDiv.innerHTML+"

"; -}); -runAfterLoad(function(){ - checkUnlock = function(element) { - return; - } - oldClearAll = clearAll; - clearAll = function() { - if (currentPixels && currentPixels.length > 0) { - for (var i = 0; i < currentPixels.length; i++) { - var pixel = currentPixels[i]; - if (pixel && pixel.element) { - survivalAdd(pixel.element,1); - } - } - } - oldClearAll(); - } - mouseAction = function(e,mouseX,mouseY,startPos) { - if (mouseType == "left") { - mouse1Action(e,mouseX,mouseY,startPos); - } - else if (mouseType == "right") { mouse2Action(e,mouseX,mouseY,startPos); } - else if (mouseType == "middle") { mouseMiddleAction(e,mouseX,mouseY); } - } - mouse1Action = function(e,mouseX=undefined,mouseY=undefined,startPos) { - if (currentElement === "erase") { mouse2Action(e,mouseX,mouseY); return; } - else if (currentElement === "pick") { mouseMiddleAction(e,mouseX,mouseY); return; } - // If x and y are undefined, get the mouse position - if (mouseX == undefined && mouseY == undefined) { - // var canvas = document.getElementById("game"); - // var ctx = canvas.getContext("2d"); - lastPos = mousePos; - mousePos = getMousePos(canvas, e); - var mouseX = mousePos.x; - var mouseY = mousePos.y; - } - var cooldowned = false; - if ((mouseSize===1 || elements[currentElement].maxSize===1) && elements[currentElement].cooldown) { - if (pixelTicks-lastPlace < elements[currentElement].cooldown) { - return; - } - cooldowned = true; - } - lastPlace = pixelTicks; - startPos = startPos || lastPos - if (!(isMobile || (cooldowned && startPos.x===lastPos.x && startPos.y===lastPos.y) || elements[currentElement].tool || elements[currentElement].category==="tools")) { - var coords = lineCoords(startPos.x,startPos.y,mouseX,mouseY); - } - else { var coords = mouseRange(mouseX,mouseY); } - var element = elements[currentElement]; - var mixList = []; - // For each x,y in coords - for (var i = 0; i < coords.length; i++) { - var x = coords[i][0]; - var y = coords[i][1]; - - if (currentElement === "mix") { - if (!isEmpty(x,y,true)) { - var pixel = pixelMap[x][y]; - if (!(elements[pixel.element].movable !== true || elements[pixel.element].noMix === true) || shiftDown) { - mixList.push(pixel); - } - } - } - else if (currentElement === "shock") { - if (!isEmpty(x,y,true)) { - // One loop that repeats 5 times if shiftDown else 1 time - for (var j = 0; j < (shiftDown ? 5 : 1); j++) { - var pixel = pixelMap[x][y]; - var con = elements[pixel.element].conduct; - if (con == undefined) {continue} - if (Math.random() < con) { // If random number is less than conductivity - if (!pixel.charge && !pixel.chargeCD) { - pixel.charge = 1; - if (elements[pixel.element].colorOn) { - pixel.color = pixelColorPick(pixel); - } - } - } - else if (elements[pixel.element].insulate != true) { // Otherwise heat the pixel (Resistance simulation) - pixel.temp += 0.25; - pixelTempCheck(pixel); - } - } - } - } - else if (elements[currentElement].tool && !(elements[currentElement].canPlace && isEmpty(x,y))) { - // run the tool function on the pixel - if (!isEmpty(x,y,true)) { - var pixel = pixelMap[x][y]; - // if the current element has an ignore property and the pixel's element is in the ignore property, don't do anything - if (elements[currentElement].ignore && elements[currentElement].ignore.indexOf(pixel.element) != -1) { - continue; - } - elements[currentElement].tool(pixel); - } - } - else if (isEmpty(x, y)) { - if (survivalCount(currentElement) < 1 && elements[currentElement].category !== "tools") { - return; - } - currentPixels.push(new Pixel(x, y, currentElement)); - if (elements[currentElement].customColor || elements[currentElement].singleColor) { - pixelMap[x][y].color = pixelColorPick(currentElement,currentColor); - } - if (elements[currentElement].category !== "tools") { survivalRemove(currentElement,1); } - } - } - if (currentElement == "mix") { - for (var i = 0; i < mixList.length; i++) { - var pixel1 = mixList[Math.floor(Math.random()*mixList.length)]; - var pixel2 = mixList[Math.floor(Math.random()*mixList.length)]; - swapPixels(pixel1,pixel2); - mixList.splice(mixList.indexOf(pixel1),1); - mixList.splice(mixList.indexOf(pixel2),1); - if (elements[pixel1.element].onMix) { - elements[pixel1.element].onMix(pixel1,pixel2); - } - if (elements[pixel2.element].onMix) { - elements[pixel2.element].onMix(pixel2,pixel1); - } - } - - } - } - mouse2Action = function(e,mouseX=undefined,mouseY=undefined,startPos) { - // Erase pixel at mouse position - if (mouseX == undefined && mouseY == undefined) { - // var canvas = document.getElementById("game"); - // var ctx = canvas.getContext("2d"); - lastPos = mousePos; - mousePos = getMousePos(canvas, e); - var mouseX = mousePos.x; - var mouseY = mousePos.y; - } - if (dragStart) { - dragStart = 0; - for (var i = 0; i < draggingPixels.length; i++) { - var pixel = draggingPixels[i]; - delete pixel.drag; - } - draggingPixels = null; - } - // If the current element is "pick" or "lookup", coords = [mouseX,mouseY] - if (currentElement == "pick" || currentElement == "lookup") { - var coords = [[mouseX,mouseY]]; - } - else if (!isMobile) { - startPos = startPos || lastPos - var coords = lineCoords(startPos.x,startPos.y,mouseX,mouseY); - } - else { - var coords = mouseRange(mouseX,mouseY); - } - // For each x,y in coords - for (var i = 0; i < coords.length; i++) { - var x = coords[i][0]; - var y = coords[i][1]; - - if (!isEmpty(x, y)) { - if (outOfBounds(x,y)) { - continue - } - var pixel = pixelMap[x][y]; - survivalAdd(pixel.element,1); - delete pixelMap[x][y]; - // Remove pixel from currentPixels - for (var j = 0; j < currentPixels.length; j++) { - if (currentPixels[j].x == x && currentPixels[j].y == y) { - currentPixels.splice(j, 1); - break; - } - } - } - } - } -}) - -window.addEventListener("beforeunload",function(){ - clearAll(); - saveSettings(); -}); \ No newline at end of file