diff --git a/mods/Lab.js b/mods/Lab.js index f759f1c4..9304d697 100644 --- a/mods/Lab.js +++ b/mods/Lab.js @@ -18,7 +18,7 @@ elements.lab = { "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall", "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall", "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall", - "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:player|XX|XX|XX|XX|XX|XX|CR:wall", + "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:player|CR:player_2|XX|XX|XX|XX|XX|CR:wall", "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall", "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall", "CR:wall|XX|XX|XX|XX|XX|XX|XX|CR:wall|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|XX|CR:wall", @@ -119,8 +119,8 @@ if(enabledMods.includes(libraryMod)) { case 90: sussyKey = "Z"; break; - case 72: - sussyKey = "H"; + case 86: + sussyKey = "V"; break; }; }); @@ -191,7 +191,7 @@ if(enabledMods.includes(libraryMod)) { sussyKey = null; } break; - case "H": //Alt+D is something else in some browsers. + case "V": //Alt+D is something else in some browsers. if(isAlt) { controllablePixelTryCreatePixelNullCheck(userElement,xx+1,yy); }; @@ -221,13 +221,177 @@ if(enabledMods.includes(libraryMod)) { } } }, - } + }; } else { alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`) enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod) localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); }; + +var libraryMod = "mods/code_library.js"; + +if(enabledMods.includes(libraryMod)) { + sussyKey = null; + isShift = false; + isAlt = false; + + document.addEventListener("keydown", function(modifierDownListener) { + // User presses shift + if (modifierDownListener.keyCode == 16) { + isShift = true; + } + // User presses alt + if (modifierDownListener.keyCode == 18) { + isAlt = true; + } + }); + + document.addEventListener("keyup", function(modifierUpListener) { + // User releases shift + if (modifierUpListener.keyCode == 16) { + isShift = false; + } + // User releases alt + if (modifierUpListener.keyCode == 18) { + isAlt = false; + } + }); + + document.addEventListener("keyup", function(sussyListener) { + switch (sussyListener.keyCode) { + case 84: + sussyKey = "T"; + break; + case 70: + sussyKey = "F"; + break; + case 72: + sussyKey = "H"; + break; + case 71: + sussyKey = "G"; + break; + case 81: + sussyKey = "Q"; + break; + case 88: + sussyKey = "X"; + break; + case 90: + sussyKey = "Z"; + break; + case 86: + sussyKey = "V"; + break; + }; + }); + + function controllablePixelTryCreatePixelNullCheck(element,x,y) { + if(!elements[element]) { //catch the null + return false; + }; + if(isEmpty(x,y)) { + tryCreatePixel(element,x,y); + return true; + } else { + return false; + } + } + + elements.player_2 = { + color: "#FFFFFF", + colorOn: "#FFFF00", + behavior: behaviors.WALL, + state: "solid", + density: 2000, + maxSize: 1, + conduct: 1, + hardness: 1, + tick: function(pixel) { + var xx = pixel.x; + var yy = pixel.y; + userElement = currentElement; + if(userElement === pixel.element) { + userElement = null; + }; + if(isShift && !isAlt) { + sussyKey === "Z" ? pixel.color = "rgb(255,191,127)" : pixel.color = "rgb(255,127,127)"; + } + if(isAlt && !isShift) { + sussyKey === "Z" ? pixel.color = "rgb(191,255,127)" : pixel.color = "rgb(127,255,127)"; + } + if(isAlt && isShift) { + sussyKey === "Z" ? pixel.color = "rgb(255,255,0)" : pixel.color = "rgb(255,255,127)"; + } + if(!isAlt && !isShift) { + sussyKey === "Z" ? pixel.color = "rgb(255,255,191)" : pixel.color = "rgb(255,255,255)"; + } + if(sussyKey !== null) { + switch (sussyKey) { + case "T": + isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy-1) : tryMove(pixel,xx,yy-1); + if(!isShift) { + sussyKey = null; + } + break; + case "F": + isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx-1,yy) : tryMove(pixel,xx-1,yy); + if(!isShift) { + sussyKey = null; + } + break; + case "G": + isAlt ? controllablePixelTryCreatePixelNullCheck(userElement,xx,yy+1) : tryMove(pixel,xx,yy+1); + if(!isShift) { + sussyKey = null; + } + break; + case "H": + tryMove(pixel,xx+1,yy); + if(!isShift) { + sussyKey = null; + } + break; + case "V": //Alt+D is something else in some browsers. + if(isAlt) { + controllablePixelTryCreatePixelNullCheck(userElement,xx+1,yy); + }; + if(!isShift) { + sussyKey = null; + } + break; + case "X": + explodeAt(xx,yy,5) + if(!isShift) { + sussyKey = null; + } + break; + case "Z": + if (!pixel.charge && !pixel.chargeCD && !isEmpty(pixel.x,pixel.y,true)) { + pixel.charge = 1; + } + if(!isShift === 0) { + sussyKey = null; + } + break; + case "Q": //Use if a key gets stuck + sussyKey = null; + isShift = null; + isAlt = null; + break; + } + } + }, + }; +} else { + alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`) + enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod) + localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); +}; + + + // i know it looks messy but it works // if u dont belive me test it but place it in the center of the canvas diff --git a/mods/fossils.js b/mods/fossils.js new file mode 100644 index 00000000..3bd63fdc --- /dev/null +++ b/mods/fossils.js @@ -0,0 +1,245 @@ +elements.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.marrow_fossil = { + color: ["#cbb2b3","#c1a8a8","#d0b0b0"], + hidden:true, + behavior: behaviors.SUPPORTPOWDER, + 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: 2550, + hardness: 0.55, + breakInto: ["rock","gravel","gravel","gravel","sand"], +}; + +elements.human_fossil = { + color: ["#bbb3ae","#b4b4b4","#c0c0c0"], + hidden:true, + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "M2%50|M1|M2%50", + ], + 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, + behavior: behaviors.STURDYPOWDER, + 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, + breakInto: ["rock","rock","gravel","gravel","gravel","gravel","gravel","sawdust"], +}; + +elements.skull = { + color: "#d9d9d9", + hidden:true, + behavior: behaviors.SUPPORT, + reactions: { + "water": { elem2:"broth", tempMin:70, color2:"#d7db69" }, + "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 }, + }, + category:"life", + tempHigh: 760, + stateHigh: "quicklime", + state: "solid", + density: 1500, + hardness: 0.5, + breakInto: ["quicklime","bone","bone","bone_marrow"] +}, + +elements.head.breakInto = ["blood","meat","skull"] + +elements.dead_bug.breakInto = ["calcium","calcium","calcium","quicklime"] + +elements.amber.breakInto = ["dna","dna","sap","sap","sap","sap","sap","dead_bug"] + +elements.amber.tempHigh = 185 + +elements.amber.stateHigh = ["sap","sap","sap","calcium","sugar"] + +if (!elements.bone.reactions) { elements.bone.reactions = {} } + elements.bone.reactions.rock = { "elem1": "fossil", chance:0.00005 }; + elements.bone.reactions.sand = { "elem1": "fossil", chance:0.000035 }; + elements.bone.reactions.dirt = { "elem1": "fossil", chance:0.00003 }; + elements.bone.reactions.tuff = { "elem1": "fossil", chance:0.00005 }; + elements.bone.reactions.basalt = { "elem1": "fossil", chance:0.00004 }; + elements.bone.reactions.mudstone = { "elem1": "fossil", chance:0.00004 }; + elements.bone.reactions.packed_sand = { "elem1": "fossil", chance:0.00004 }; + elements.bone.reactions.gravel = { "elem1": "fossil", chance:0.000035 }; + elements.bone.reactions.clay = { "elem1": "fossil", chance:0.00003 }; + elements.bone.reactions.clay_soil = { "elem1": "fossil", chance:0.00003 }; + elements.bone.reactions.permafrost = { "elem1": "fossil", chance:0.000035 }; + elements.bone.reactions.mulch = { "elem1": "fossil", chance:0.00003 }; + elements.bone.reactions.ant_wall = { "elem1": "fossil", chance:0.00002 }; + elements.bone.reactions.limestone = { "elem1": "fossil", chance:0.00005 }; + elements.bone.reactions.quicklime = { "elem1": "fossil", chance:0.000045 }; + elements.bone.reactions.slaked_lime = { "elem1": "fossil", chance:0.000035 }; + + +if (!elements.bone_marrow.reactions) { elements.bone_marrow.reactions = {} } +elements.bone_marrow.reactions.rock = { "elem1": "marrow_fossil", chance:0.00005 }; +elements.bone_marrow.reactions.sand = { "elem1": "marrow_fossil", chance:0.000035 }; +elements.bone_marrow.reactions.dirt = { "elem1": "marrow_fossil", chance:0.00003 }; +elements.bone_marrow.reactions.tuff = { "elem1": "marrow_fossil", chance:0.00005 }; +elements.bone_marrow.reactions.basalt = { "elem1": "marrow_fossil", chance:0.00004 }; +elements.bone_marrow.reactions.mudstone = { "elem1": "marrow_fossil", chance:0.00004 }; +elements.bone_marrow.reactions.packed_sand = { "elem1": "marrow_fossil", chance:0.00004 }; +elements.bone_marrow.reactions.gravel = { "elem1": "marrow_fossil", chance:0.000035 }; +elements.bone_marrow.reactions.clay = { "elem1": "marrow_fossil", chance:0.00003 }; +elements.bone_marrow.reactions.clay_soil = { "elem1": "marrow_fossil", chance:0.00003 }; +elements.bone_marrow.reactions.permafrost = { "elem1": "marrow_fossil", chance:0.000035 }; +elements.bone_marrow.reactions.mulch = { "elem1": "marrow_fossil", chance:0.00003 }; +elements.bone_marrow.reactions.ant_wall = { "elem1": "marrow_fossil", chance:0.00002 }; +elements.bone_marrow.reactions.limestone = { "elem1": "marrow_fossil", chance:0.00005 }; +elements.bone_marrow.reactions.quicklime = { "elem1": "marrow_fossil", chance:0.000045 }; +elements.bone_marrow.reactions.slaked_lime = { "elem1": "marrow_fossil", chance:0.000035 }; + + +if (!elements.wood.reactions) { elements.wood.reactions = {} } +elements.wood.reactions.rock = { "elem1": "petrified_wood", chance:0.000045 }; +elements.wood.reactions.sand = { "elem1": "petrified_wood", chance:0.00003 }; +elements.wood.reactions.dirt = { "elem1": "petrified_wood", chance:0.000025 }; +elements.wood.reactions.tuff = { "elem1": "petrified_wood", chance:0.000045 }; +elements.wood.reactions.basalt = { "elem1": "petrified_wood", chance:0.000035 }; +elements.wood.reactions.mudstone = { "elem1": "petrified_wood", chance:0.000035 }; +elements.wood.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.000035 }; +elements.wood.reactions.gravel = { "elem1": "petrified_wood", chance:0.00003 }; +elements.wood.reactions.clay = { "elem1": "petrified_wood", chance:0.000025 }; +elements.wood.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.000025 }; +elements.wood.reactions.permafrost = { "elem1": "petrified_wood", chance:0.00003 }; +elements.wood.reactions.mulch = { "elem1": "petrified_wood", chance:0.000025 }; +elements.wood.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.000015 }; +elements.wood.reactions.limestone = { "elem1": "petrified_wood", chance:0.000045 }; +elements.wood.reactions.quicklime = { "elem1": "petrified_wood", chance:0.00004 }; +elements.wood.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.00003 }; + + +if (!elements.tree_branch.reactions) { elements.tree_branch.reactions = {} } +elements.tree_branch.reactions.rock = { "elem1": "petrified_wood", chance:0.00005 }; +elements.tree_branch.reactions.sand = { "elem1": "petrified_wood", chance:0.000035 }; +elements.tree_branch.reactions.dirt = { "elem1": "petrified_wood", chance:0.00003 }; +elements.tree_branch.reactions.tuff = { "elem1": "petrified_wood", chance:0.00005 }; +elements.tree_branch.reactions.basalt = { "elem1": "petrified_wood", chance:0.00004 }; +elements.tree_branch.reactions.mudstone = { "elem1": "petrified_wood", chance:0.00004 }; +elements.tree_branch.reactions.packed_sand = { "elem1": "petrified_wood", chance:0.00004 }; +elements.tree_branch.reactions.gravel = { "elem1": "petrified_wood", chance:0.000035 }; +elements.tree_branch.reactions.clay = { "elem1": "petrified_wood", chance:0.00003 }; +elements.tree_branch.reactions.clay_soil = { "elem1": "petrified_wood", chance:0.00003 }; +elements.tree_branch.reactions.permafrost = { "elem1": "petrified_wood", chance:0.000035 }; +elements.tree_branch.reactions.mulch = { "elem1": "petrified_wood", chance:0.00003 }; +elements.tree_branch.reactions.ant_wall = { "elem1": "petrified_wood", chance:0.00002 }; +elements.tree_branch.reactions.limestone = { "elem1": "petrified_wood", chance:0.00005 }; +elements.tree_branch.reactions.quicklime = { "elem1": "petrified_wood", chance:0.000045 }; +elements.tree_branch.reactions.slaked_lime = { "elem1": "petrified_wood", chance:0.000035 };