diff --git a/mod-list.html b/mod-list.html index 8ad490b1..c06bbae9 100644 --- a/mod-list.html +++ b/mod-list.html @@ -171,6 +171,7 @@ nellfire.jsAdds a weird transforming flame and several rock typesAlice Neutronium Mod.jsVariety of scientific elements
ExplosionsStellarX20 neutronium_compressor.jsAdds a compressor (in reference to Minecraft’s Avaritia mod) that compresses 10,000 pixels of an element into a “singularity”Alice +noblegas.jsAdds the missing noble gasesnousernamefound random_rocks.jsRandomly generates rocks on game loadAlice roseyiede.jsAdds several variants of a substance called roseyiedeAlice some_tf_liquids.jsAdds various liquids from the Thermal Foundation Minecraft modAlice @@ -242,6 +243,7 @@ all_around_fillers.jsAdds directional Filler variantsidk73248 allliquids.jsMade all elements liquidsAlex amogus.jsAdds a small amogus structureAlice +collab_mod.jsCreated by multiple people, adds random thingsmrapple, ilikepizza, stefanblox elem3.jsAdds all elements and combinations from Elemental 3 [Very Large]Sophie funny elements 2022-11-15.jsAdds a few curated randomly-generated elementsAlice funny_liquid_2.jsAdds urineAlice @@ -277,6 +279,7 @@ Technical Libraries & Tests a_bundle_of_tests.jsSeveral test functionsAlice +all_stain.jsMakes every element stain solidsstefanblox betterMenuScreens.jsLibrary for mods to create their own menusggod changePixelDebug.jsMakes the changePixel() function abort and log to console when it tries to change to a non-existent elementAlice changeTempReactionParameter.jsAdds the changeTemp property to modded reactionsAlice diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js index e026916d..800c9e8a 100644 --- a/mods/aChefsDream.js +++ b/mods/aChefsDream.js @@ -2,7 +2,7 @@ Created by SquareScreamYT and RealerRaddler Thanks to Alice, nousernamefound and Fioushemastor for helping :) -v1.3.2 +v1.4 Changelog (v1.0) - added chickens @@ -170,6 +170,28 @@ Changelog (v1.3.2) - added turnips - added turnip seeds and leaves - added turnip juice + + + +Changelog (v1.4) + - added baking powder + - added corn starch + - added maple syrup + - added pancakes + - added pancake mix + - added pancake batter + - added normal pancakes + - added crispy pancakes + - added burnt pancakes + - added strawberries + - added strawberries + - added strawberry seeds, stem, and leaves + - added strawberry juice + - added whipped cream + - chicken eggs no longer hatch under 20 degrees + - added ginger + - added ginger juice + - added ginger rhizomes, pseudostems and leaves */ /* @@ -262,16 +284,22 @@ elements.chicken_egg = { color: ["#e0d3ab","#d9cdb5"], behavior: [ "XX|XX|XX", - "XX|FX%5 AND CH:chick%0.1|XX", + "XX|FX%5|XX", "M2%30|M1|M2%30", ], + tick: function(pixel) { + if (Math.random() < 0.1 && pixel.temp > 20) { + changePixel(pixel,"chick") + } + doDefaults(pixel); + }, category: "food", state: "solid", - temp: 30, + temp: 20, tempLow: -18, stateLow: "frozen_chicken_egg", breakInto: ["yolk"], - tempHigh: 500, + tempHigh: 400, stateHigh: ["calcium", "ash"], burn:50, burnTime:450, @@ -1700,7 +1728,7 @@ elements.grape = { stateHigh: ["steam","sugar"], category: "food", state: "solid", - density: 1154, + density: 825, breakInto: "grape_juice", ignoreAir: true, isFood: true @@ -2013,7 +2041,6 @@ elements.coconut_milk = { reactions: { "melted_chocolate": { elem1:"chocolate_milk", elem2:null }, "chocolate": { elem1:"chocolate_milk", elem2:"melted_chocolate", chance:0.05 }, - "coffee_ground": { elem1:"chocolate_milk", chance:0.05 }, "juice": { elem1:"fruit_milk", elem2:null, chance:0.05 }, "soda": { elem1:"pilk", elem2:null, chance:0.1 }, "yolk": { elem1:"eggnog", elem2:null, chance:0.1 }, @@ -2529,7 +2556,7 @@ elements.turnip_leaves = { } elements.turnip = { color: ["#945bb3","#a05cbd","#a053b8","#b364c4"], - behavior: behaviors.STURDYPOWDER, + behavior: behaviors.POWDER, category:"food", tempHigh: 100, stateHigh: ["steam"], @@ -2557,3 +2584,567 @@ elements.turnip_juice = { hidden: true, temp: 30, }; + +elements.corn = { + color: ["#f8d223","#d6ba2a","#f7f5ba","#dbd281","#cdb12d"], + tick: function(pixel) { + if (pixel.temp >= 180) { + changePixel(pixel,"popcorn"); + if (isEmpty(pixel.x,pixel.y-1)) { + tryMove(pixel,pixel.x,pixel.y-1); + if (isEmpty(pixel.x-1,pixel.y)) { createPixel("pop",pixel.x-1,pixel.y) } + if (isEmpty(pixel.x+1,pixel.y)) { createPixel("pop",pixel.x+1,pixel.y) } + if (isEmpty(pixel.x,pixel.y-1)) { createPixel("pop",pixel.x,pixel.y-1) } + if (isEmpty(pixel.x,pixel.y+1)) { createPixel("pop",pixel.x,pixel.y+1) } + } + } + doDefaults(pixel) + }, + category: "food", + burn: 10, + burnTime: 200, + breakInto: "corn_starch", + breakIntoColor: ["#ffe9a8","#ffecb3","#ffe28a"], + state: "solid", + density: 721, + seed: "corn_seed", + isFood: true, + movable: false, +} + +elements.corn_starch = { + color: ["#fcf2e1","#f2e7d3","#fcf3de"], + behavior: behaviors.POWDER, + reactions: { + "water": { elem1: "dough", elem2: null }, + "salt_water": { elem1: "dough", elem2: null }, + "sugar_water": { elem1: "dough", elem2: null }, + "seltzer": { elem1: "dough", elem2: null }, + "pool_water": { elem1: "dough", elem2: null }, + "juice": { elem1: "dough", elem2: null }, + "yolk": { elem1: "batter", elem2: null }, + "yogurt": { elem1: "batter", elem2: null }, + "honey": { elem1:"gingerbread", elem2:null }, + "molasses": { elem1:"gingerbread", elem2:null }, + "sap": { elem1:"gingerbread", elem2:null }, + "caramel": { elem1:"gingerbread", elem2:null }, + "broth": { elem1:"dough", elem2:null }, + "soda": { elem1:"dough", elem2:null }, + "tea": { elem1:"dough", elem2:null }, + "blood": { elem1:"dough", elem2:null }, + "infection": { elem1:"dough", elem2:null }, + "antibody": { elem1:"dough", elem2:null }, + "milk": { elem1:"dough", elem2:null }, + "cream": { elem1:"dough", elem2:null }, + "melted_butter": { elem1:"sauce", elem2:null, color1:"#DF8D32" }, + }, + category: "food", + tempHigh: 400, + stateHigh: "fire", + burn:40, + burnTime:25, + state: "solid", + density: 600, + isFood: true +} + +elements.baking_powder = { + color: "#fffaf0", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + burn: 40, + tempHigh: 400, + stateHigh: ["salt","carbon_dioxide"], + burnTime: 25, + density: 600, + isFood: true, + reactions: { + "flour": { elem1: "pancake_mix", elem2: null, color1: "#e8b77b"}, + }, +}; + +if (!elements.baking_soda.reactions) elements.baking_soda.reactions = {}; +elements.baking_soda.reactions.neutral_acid = { elem1: "baking_powder", elem2: null } + +elements.pancake_mix = { + color: ["#f2e9c7","#f7ebbe"], + behavior: behaviors.POWDER, + reactions: { + "water": { elem1: "pancake_batter", elem2: null }, + }, + category: "food", + tempHigh: 400, + stateHigh: "fire", + burn:40, + burnTime:25, + state: "solid", + density: 600, + isFood: true +}, + +elements.pancake_batter = { + color: "#e6da9e", + behavior: behaviors.LIQUID, + category: "food", + tempHigh: 70, + stateHigh: "pancake", + stateHighColorMultiplier: 0.9, + burn:40, + burnTime:25, + burnInto:"ash", + state: "liquid", + viscosity: 10000, + density: 1001, + hidden: true, + isFood: true +} +elements.sap = { + color: ["#b67f18","#c86305","#cf7a19","#e4ae3a"], + behavior: behaviors.LIQUID, + reactions: { + "dead_bug": { elem1:"amber", elem2:null, chance:0.1 }, + "ant": { elem1:"amber", elem2:null, chance:0.1 }, + "fly": { elem1:"amber", elem2:null, chance:0.1 }, + "flea": { elem1:"amber", elem2:null, chance:0.1 }, + "termite": { elem1:"amber", elem2:null, chance:0.1 }, + "worm": { elem1:"amber", elem2:null, chance:0.1 }, + "bee": { elem1:"amber", elem2:null, chance:0.1 }, + "firefly": { elem1:"amber", elem2:null, chance:0.1 }, + "stinkbug": { elem1:"amber", elem2:null, chance:0.1 }, + "slug": { elem1:"amber", elem2:null, chance:0.1 }, + "snail": { elem1:"amber", elem2:null, chance:0.1 }, + }, + tempHigh: 104, + stateHigh: ["maple_syrup","maple_syrup","maple_syrup","sap"], + tempLow: 0, + stateLowName: "amber", + category:"liquids", + state: "liquid", + viscosity: 15, + density: 1400 +} +elements.maple_syrup = { + color: ["#fabb34","#facc34","#fabb34"], + behavior: behaviors.LIQUID, + tempHigh: 170, + stateHigh: ["sugar","smoke","smoke"], + tempLow: 0, + category:"liquids", + state: "liquid", + viscosity: 15, + hidden: true, + density: 1400 +} +elements.pancake = { + color: "#e0d080", + behavior: behaviors.STURDYPOWDER, + tempHigh: 95, + stateHigh: "crispy_pancake", + category: "food", + burn: 10, + burnTime: 400, + burnInto: ["smoke","smoke","smoke","ash"], + breakInto: "crumb", + state: "solid", + density: 233.96, + hidden: true, + isFood: true +} +elements.crispy_pancake = { + color: "#c7a34a", + behavior: behaviors.STURDYPOWDER, + tempHigh: 150, + stateHigh: "burnt_pancake", + category: "food", + burn: 10, + burnTime: 400, + burnInto: ["smoke","smoke","smoke","ash"], + breakInto: "crumb", + state: "solid", + density: 233.96, + hidden: true, + isFood: true +} +elements.burnt_pancake = { + color: "#332709", + behavior: behaviors.STURDYPOWDER, + tempHigh: 550, + stateHigh: "ash", + category: "food", + burn: 10, + burnTime: 400, + burnInto: ["smoke","smoke","smoke","ash"], + breakInto: "crumb", + state: "solid", + density: 233.96, + hidden: true, + isFood: true +} +elements.strawberry_seed = { + color: "#7a7133", + behavior: behaviors.STURDYPOWDER, + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "mercury": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "stench": { elem2:null, chance:0.25 }, + }, + tick: function(pixel) { + if (isEmpty(pixel.x,pixel.y+1)) { + movePixel(pixel,pixel.x,pixel.y+1); + } + else { + if (Math.random() < 0.02 && pixel.temp < 100) { + if (!outOfBounds(pixel.x,pixel.y+1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { + changePixel(pixel,"strawberry_stem"); + } + } + } + pixel.age++; + } + doDefaults(pixel); + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:15, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050, + cooldown: defaultCooldown +} +elements.strawberry_stem = { + color: "#419c2f", + behavior: [ + "CR:strawberry_stem,strawberry_leaves,strawberry_leaves,strawberry_leaves,strawberry_leaves%3|CR:strawberry_stem,strawberry_leaves,strawberry_leaves,strawberry_leaves,strawberry_leaves%3|CR:strawberry_stem,strawberry_leaves,strawberry_leaves,strawberry_leaves,strawberry_leaves%3", + "CR:strawberry_stem,strawberry_leaves,strawberry_leaves,strawberry_leaves,strawberry_leaves%3|XX|CR:strawberry_stem,strawberry_leaves,strawberry_leaves,strawberry_leaves,strawberry_leaves%3", + "XX|M1|XX", + ], + tick: function(pixel) { + if (isEmpty(pixel.x,pixel.y+1)) { + movePixel(pixel,pixel.x,pixel.y+1); + } + else { + if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) { + if (!outOfBounds(pixel.x,pixel.y+1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { + changePixel(dirtPixel,"root"); + } + } + } + pixel.age++; + } + doDefaults(pixel); + }, + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "mercury": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "stench": { elem2:null, chance:0.25 }, + }, + properties: { + "age":0 + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:15, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050, +} +elements.strawberry_leaves = { + color: "#4bad37", + behavior: [ + "XX|CR:strawberry%2|XX", + "CR:strawberry%2|XX|CR:strawberry%2", + "M2|M1|M2", + ], + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "mercury": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "stench": { elem2:null, chance:0.25 }, + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:15, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050 +} +elements.strawberry = { + color: "#f04b3c", + behavior: [ + "XX|ST:strawberry_stem,strawberry_leaves|XX", + "ST:strawberry_stem,strawberry_leaves|XX|ST:strawberry_stem,strawberry_leaves", + "M2|M1|M2", + ], + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "mercury": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "stench": { elem2:null, chance:0.25 }, + }, + category:"food", + tempHigh: 100, + stateHigh: "dead_plant", + burn:15, + burnTime:60, + burnInto: "dead_plant", + breakInto: "strawberry_juice", + state: "solid", + density: 1050 +} +elements.strawberry_juice = { + color: "#e03a3a", + behavior: behaviors.LIQUID, + category: "liquids", + tempHigh: 100, + stateHigh: ["steam","sugar"], + burn: 70, + burnTime: 300, + burnInto: ["steam", "smoke"], + state: "liquid", + density: 825, + hidden: true, + temp: 30, + tempLow: 0 +}; + +elements.cream = { + color: "#f7f7f7", + behavior: behaviors.LIQUID, + onMix: function(cream1, cream2) { + if ((shiftDown && Math.random() < 0.01) || (elements[cream2.element].id === elements.cream.id && Math.random() < 0.1)) { + changePixel(cream1,"whipped_cream") + } + }, + reactions: { + "dirt": { elem1: null, elem2: "mud" }, + "sand": { elem1: null, elem2: "wet_sand" }, + "clay_soil": { elem1: null, elem2: "clay" }, + "melted_chocolate": { color1:"#664934", elem2:null }, + "chocolate": { color1:"#664934", elem2:"melted_chocolate", chance:0.05 }, + "juice": { elem1:"fruit_milk", elem2:null, chance:0.05 }, + "soda": { elem1:"pilk", elem2:null, chance:0.1 }, + "yolk": { elem1:"#eggnog", elem2:null, chance:0.1 }, + "caramel": { color1:"#C8B39A", chance:0.05 }, + "sugar": { elem2:null, chance:0.005}, + }, + viscosity: 1.5, + tempHigh: 1000, + stateHigh: ["smoke","smoke","smoke","steam","steam","calcium"], + tempLow: 0, + stateLow: "ice_cream", + stateLowColorMultiplier: 0.97, + category: "liquids", + hidden: true, + isFood: true, + state: "liquid", + density: 959.97, +} +elements.whipped_cream = { + color: "#fafafa", + behavior: behaviors.LIQUID, + reactions: { + "dirt": { elem1: null, elem2: "mud" }, + "sand": { elem1: null, elem2: "wet_sand" }, + "clay_soil": { elem1: null, elem2: "clay" }, + "melted_chocolate": { color1:"#664934", elem2:null }, + "chocolate": { color1:"#664934", elem2:"melted_chocolate", chance:0.05 }, + "juice": { elem1:"fruit_milk", elem2:null, chance:0.05 }, + "soda": { elem1:"pilk", elem2:null, chance:0.1 }, + "yolk": { elem1:"#eggnog", elem2:null, chance:0.1 }, + "caramel": { color1:"#C8B39A", chance:0.05 }, + "sugar": { elem2:null, chance:0.005}, + }, + viscosity: 1.5, + tempHigh: 1000, + stateHigh: ["smoke","smoke","smoke","steam","steam","calcium"], + tempLow: 0, + stateLow: "ice_cream", + stateLowColorMultiplier: 0.97, + category: "food", + hidden: true, + isFood: true, + state: "liquid", + density: 959.97, + viscosity: 2500000 +} + +elements.ginger = { + color: ["#b88f30","#d6a73a"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "M2 AND CH:dirt,mud,sand,wet_sand,clay_soil,clay,mycelium,grass,color_sand>ginger,fiber%0.5|M1 AND CH:dirt,mud,sand,wet_sand,clay_soil,clay,mycelium,grass,color_sand>ginger,fiber,fiber%0.5|M2 AND CH:dirt,mud,sand,wet_sand,clay_soil,clay,mycelium,grass,color_sand>ginger,fiber%0.5", + ], + reactions: { + "flour": { elem1:"gingerbread", elem2:null }, + "bread": { elem1:"gingerbread", elem2:null }, + }, + tempHigh: 275, + stateHigh: "dirt", + tempLow: -50, + stateLow: "fiber", + burn: 20, + burnTime: 60, + burnInto: "dirt", + breakInto: "ginger_juice", + category: "food", + state: "solid", + density: 1250, + conduct: 0.1, + hidden: true +} + +elements.ginger_rhizome = { + color: "#c7ad58", + tick: function(pixel) { + if (isEmpty(pixel.x,pixel.y+1)) { + movePixel(pixel,pixel.x,pixel.y+1); + } + else { + if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) { + if (!outOfBounds(pixel.x,pixel.y+1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { + changePixel(dirtPixel,"ginger"); + } + } + if (isEmpty(pixel.x,pixel.y-1)) { + movePixel(pixel,pixel.x,pixel.y-1); + createPixel("ginger_pseudostem",pixel.x,pixel.y+1); + } + if (isEmpty(pixel.x+1,pixel.y) && Math.random() < 0.2) { + createPixel("ginger_leaves",pixel.x+1,pixel.y); + } + if (isEmpty(pixel.x-1,pixel.y) && Math.random() < 0.2) { + createPixel("ginger_leaves",pixel.x-1,pixel.y); + } + } + else if (pixel.age > 250) { + changePixel(pixel,"ginger_leaves"); + } + pixel.age++; + } + doDefaults(pixel); + }, + properties: { + "age":0 + }, + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -2, + stateLow: "frozen_plant", + burn: 65, + burnTime: 15, + category: "life", + state: "solid", + density: 1500, + breakInto: "ginger_juice", + cooldown: defaultCooldown, + seed: true, + behavior: [ + "XX|XX|XX", + "XX|FX%10|XX", + "XX|M1|XX", + ], + reactions: { + "flour": { elem1:"gingerbread", elem2:null }, + "bread": { elem1:"gingerbread", elem2:null }, + }, +}; + +elements.ginger_pseudostem = { + color: "#69a82d", + behavior: behaviors.STURDYPOWDER, + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "mercury": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "stench": { elem2:null, chance:0.25 }, + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:15, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050 +} +elements.ginger_leaves = { + color: "#52bd31", + behavior: behaviors.WALL, + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "mercury": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "stench": { elem2:null, chance:0.25 }, + "carbon_dioxide": { elem2:"oxygen", chance:0.25 }, + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:15, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050 +} +elements.ginger_juice = { + color: "#ccc056", + behavior: behaviors.LIQUID, + category: "liquids", + tempHigh: 100, + stateHigh: ["steam","sugar"], + burn: 70, + burnTime: 300, + burnInto: ["steam", "smoke"], + state: "liquid", + density: 825, + hidden: true, + temp: 30, + tempLow: 0, + reactions: { + "flour": { elem1:"gingerbread", elem2:null }, + "bread": { elem1:"gingerbread", elem2:null }, + }, +}; diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index bc37daca..9a880696 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -4177,7 +4177,6 @@ color1 and color2 spread through striped paint like dye does with itself. col return }) }; - doDefaults(pixel); }, temp:6000, @@ -4195,6 +4194,39 @@ color1 and color2 spread through striped paint like dye does with itself. col ignoreAir: true }; + elements.holy_bomb = { + color: ["#dbb260", "#94591e"], + tick: function(pixel) { + if(!isEmpty(pixel.x,pixel.y-1,true)) { //[0][1] EX (ignore bounds) + var newPixel = pixelMap[pixel.x][pixel.y-1]; + var newElement = newPixel.element; + var newInfo = elements[newElement]; + if(newInfo.state !== "gas" && newElement !== pixel.element) { + explodeAtPlus(pixel.x,pixel.y,13,"holy_fire","plasma",null,firebombFire); + }; + }; + if(!isEmpty(pixel.x,pixel.y+1,true)) { //[2][1] EX (don't ignore bounds, non-bound case) + var newPixel = pixelMap[pixel.x][pixel.y+1]; + var newElement = newPixel.element; + var newInfo = elements[newElement]; + if(newInfo.state !== "gas" && newElement !== pixel.element) { + explodeAtPlus(pixel.x,pixel.y,13,"holy_fire","plasma",null,firebombFire); + }; + }; + if(outOfBounds(pixel.x,pixel.y+1)) { //[2][1] EX (don't ignore bounds, bound case) + explodeAtPlus(pixel.x,pixel.y,13,"holy_fire","plasma",null,firebombFire); + }; + if(!tryMove(pixel,pixel.x,pixel.y+1)) { //behaviors.POWDER + Math.random() < 0.5 ? tryMove(pixel,pixel.x-1,pixel.y+1) : tryMove(pixel,pixel.x+1,pixel.y+1); + }; + }, + category: "weapons", + state: "solid", + density: 4000, + excludeRandom: true, + desc: "A bomb that burns the world to pure ash.
To enable automatic bomb generation, set the generateBombs query parameter.", + }; + elements.bless.ignore ??= []; elements.bless.ignore.push("holy_fire"); @@ -4288,6 +4320,39 @@ color1 and color2 spread through striped paint like dye does with itself. col ignoreAir: true }; + elements.god_slayer_bomb = { + color: ["#a43dcc", "#49b6d1"], + tick: function(pixel) { + if(!isEmpty(pixel.x,pixel.y-1,true)) { //[0][1] EX (ignore bounds) + var newPixel = pixelMap[pixel.x][pixel.y-1]; + var newElement = newPixel.element; + var newInfo = elements[newElement]; + if(newInfo.state !== "gas" && newElement !== pixel.element) { + explodeAtPlus(pixel.x,pixel.y,40,"god_slayer_fire","plasma"); + }; + }; + if(!isEmpty(pixel.x,pixel.y+1,true)) { //[2][1] EX (don't ignore bounds, non-bound case) + var newPixel = pixelMap[pixel.x][pixel.y+1]; + var newElement = newPixel.element; + var newInfo = elements[newElement]; + if(newInfo.state !== "gas" && newElement !== pixel.element) { + explodeAtPlus(pixel.x,pixel.y,40,"god_slayer_fire","plasma"); + }; + }; + if(outOfBounds(pixel.x,pixel.y+1)) { //[2][1] EX (don't ignore bounds, bound case) + explodeAtPlus(pixel.x,pixel.y,40,"god_slayer_fire","plasma"); + }; + if(!tryMove(pixel,pixel.x,pixel.y+1)) { //behaviors.POWDER + Math.random() < 0.5 ? tryMove(pixel,pixel.x-1,pixel.y+1) : tryMove(pixel,pixel.x+1,pixel.y+1); + }; + }, + category: "weapons", + state: "solid", + density: 4500, + excludeRandom: true, + desc: "A bomb that makes gods tremble.
To enable automatic bomb generation, set the generateBombs query parameter.", + }; + elements.cloner.burnTime = Infinity; elements.cloner.burnInto = "cloner"; @@ -28481,6 +28546,7 @@ Make sure to save your command in a file if you want to add this preset again.` }) }); lightlikes = ["light","flash","laser","radiation","insulate_flash"]; + firelikes = ["fire","plasma","smoke","stellar_plasma","liquid_plasma","liquid_stellar_plasma"]; grbBreakIntos = Object.keys(elements).filter(function(elemName) { var to = typeof(elements[elemName]); if(to == "undefined") { @@ -28661,6 +28727,75 @@ Make sure to save your command in a file if you want to add this preset again.` noMix: true }; + elements.melt_ray = { + color: ["#ffbf7f","#ffffbf"], + 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.02) { continue } + createPixel("insulate_flash", x, y); + pixelMap[x][y].color = "#e1f8fc"; + } + else { + var otherPixel = pixelMap[x][y]; + var otherInfo = elements[otherPixel.element]; + //Gas: Heat, always penetrate + if (otherInfo.isGas) { + if(Math.random() < 0.05 && otherInfo.stateLow) { + meltPixel(otherPixel) + }; + if(elements[otherPixel.element].isSun) { + otherPixel.temp += 0.5; + } else { + otherPixel.temp += 50; + }; + continue; + }; + + //Self: Break + if (otherInfo.id === elements.melt_ray.id) { break } + + //Non-gas, Melt chance, heat more, half penetrate + if(Math.random() < 0.05 && !otherInfo.isGas) { + meltPixel(otherPixel) + }; + pixelMap[x][y].temp += 200; + + if(Math.random() < 0.05) { + + if(!isEmpty(x,y-1,false)) { + if(pixelMap[x]?.[y-1]?.element && lightlikes.includes(pixelMap[x][y-1].element)) { + deletePixel(x,y-1); + }; + }; + var newPlasma = tryCreatePixelReturn("liquid_plasma",x,y-1); + if(newPlasma) { newPlasma.temp += 500 }; + }; + + //Penetrate snow and ice + if(firelikes && firelikes.includes(otherPixel.element)) { + continue; + }; + + if(Math.random() < 0.7) { //thanks, I hate random continue + continue; + }; + break; + } + } + deletePixel(pixel.x, pixel.y); + }, + temp: 4000, + category: "energy", + state: "gas", + excludeRandom: true, + noMix: true + }; + elements.smash_ray = { color: ["#ff9999", "#8c8279"], tick: function(pixel) { diff --git a/mods/alchemy.js b/mods/alchemy.js index f0a61288..31a69de7 100644 --- a/mods/alchemy.js +++ b/mods/alchemy.js @@ -1,11 +1,30 @@ -// Warning: This mod will remove all of your previously unlocked elements. +// unhide oxygen (air), dirt (earth), fire, and water +if (!settings.alchemyUnlocked) { + settings.alchemyUnlocked = { + "oxygen": true, + "dirt": true, + "fire": true, + "water": true, + }; +} +if (settings.unlocked.alchemymod) { + for (var element in settings.unlocked) { + if (settings.unlocked[element]) { + settings.alchemyUnlocked[element] = true + } + } +} // loop through the elements object if (elements.explosion) { elements.explosion.category = "tools"; } for (var element in elements) { - if (elements[element].category !== "tools") { + if (settings.alchemyUnlocked[element]) { + elements[element].hidden = false; + if (elements[element].category !== "tools") { elements[element].category = "alchemy mod"; } + } + else if (elements[element].category !== "tools") { // give the element the hidden attribute true elements[element].hidden = true; // set its category to "alchemy mod" @@ -16,13 +35,35 @@ for (var element in elements) { // set the unhide setting to Unlock as Discovered (2) settings.unhide = 2; -// unhide oxygen (air), dirt (earth), fire, and water -if (!settings.unlocked.alchemymod) { - settings.unlocked = { - "oxygen": true, - "dirt": true, - "fire": true, - "water": true, - "alchemymod": true, - }; -} \ No newline at end of file +runAfterLoad(function(){ + checkUnlock = function(element) { + if (elements[element] && elements[element].hidden && !settings.alchemyUnlocked[element]) { + settings.alchemyUnlocked[element] = true; + if (settings.unhide === 2) { + createElementButton(element) + var categoryButton = document.querySelector(".categoryButton[current='true']"); + var currentCategory = categoryButton.getAttribute("category"); + if (currentCategory !== elements[element].category) { + document.getElementById("categoryButton-"+elements[element].category).classList.add("notify"); + } + // add notify to the elementButton of the element + document.getElementById("elementButton-"+element).classList.add("notify"); + } + saveSettings(); + } + } +}) +runAfterAutogen(function(){ + for (var element in elements) { + if (elements[element].category === "states") { + elements[element].category = "alchemy mod" + } + } +}) +window.addEventListener("load",function(){ + for (var element in elements) { + if (elements[element].hidden && document.getElementById("elementButton-"+element)) { + document.getElementById("elementButton-"+element).remove() + } + } +}) \ No newline at end of file diff --git a/mods/all_stain.js b/mods/all_stain.js new file mode 100644 index 00000000..46bb1fbb --- /dev/null +++ b/mods/all_stain.js @@ -0,0 +1,7 @@ +window.addEventListener('load', function() { + for (var element in elements) { + elements[element].stain = 0.1; + } +}); + +// sorry alice \ No newline at end of file diff --git a/mods/applestuff.js b/mods/applestuff.js new file mode 100644 index 00000000..c8f74992 --- /dev/null +++ b/mods/applestuff.js @@ -0,0 +1,80 @@ +elements.cat = { + color: ["#ffffff", "#494949", "#ffc505"], + behavior: [ + "XX|XX|XX", + "M2%25|XX|M2%25", + "XX|M1|XX", + ], + category: "life", + state: "solid", + desc: "cat.", + tempHigh: 100, + stateHigh: "meat", + tempLow: 0, + stateLow: "frozen_meat" +}; + +elements.the_hot_destroyer = { + color: "#ff0000", + behavior: behaviors.POWDER, + category: "weapons", + state: "solid", + desc: "literally just is super hot, destroys anything that can be melted", + temp: Infinity, + reactions: { + "the_cold_destroyer": {elem1: null, elem2: null} + } +}; + +elements.the_cold_destroyer = { + color: "#00ccff", + behavior: behaviors.POWDER, + category: "weapons", + state: "solid", + desc: "literally just is super cold, freezes anything that can be frozen", + temp: -Infinity, + reactions: { + "the_hot_destroyer": {elem1: null, elem2: null} + } +}; + +elements.plutoneeum = { + color: ["#38a30e", "#0d662b", "#5d995d"], + behavior: behaviors.RADPOWDER, + category: "powders", + state: "solid", + desc: "misspelled on purpose to avoid conflicts with other mods", +}; + +elements.lipstick = { + color: "#a30000", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + viscosity: 650, + tempHigh: 100, + stateHigh: "steam", + desc: "this mod is meant to have a description to everything but i don't know what to put here... its lipstick i guess?" +}; + +elements.very_hot_gold = { + color: ["#fff0b5","#986a1a","#f0bb62"], + behavior: behaviors.WALL, + category: "solids", + density: 19300, + conduct: 0.81, + hardness: 0.25, + breakInto: "gold_coin", + temp: Infinity, + desc: "i'm running out of ideas, have this i guess" +}; + +elements.sour_patch_kids = { + color:["#ff0000", "#00ff00", "#c8ff02", "#ff00c8"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + desc: "don't think their meant to be purple" +}; + +// this piece of text is gonna change every update diff --git a/mods/noblegas.js b/mods/noblegas.js new file mode 100644 index 00000000..4d5a2540 --- /dev/null +++ b/mods/noblegas.js @@ -0,0 +1,105 @@ +elements.argon = { + color: elements.neon.color, + behavior: behaviors.GAS, + colorOn: ["#c831ee","#d683eb","#7a258f"], + category: "gases", + state: "gas", + tempLow: -185.8, + stateLow: "liquid_argon", + density: 1.784, + conduct: 0.8 +} +elements.liquid_argon = { + color: elements.neon.color, + behavior: behaviors.LIQUID, + colorOn: ["#c831ee","#d683eb","#7a258f"], + category: "states", + state: "liquid", + tempHigh: -183.8, + stateHigh: "argon", + density: 1401, + tempLow: -189.3, + stateLow: "frozen_argon", + conduct: 0.8 +} +elements.frozen_argon = { + color: elements.neon.color, + behavior: behaviors.WALL, + colorOn: ["#c831ee","#d683eb","#7a258f"], + category: "states", + state: "solid", + tempHigh: -187.3, + stateHigh: "liquid_argon", + density: 1616, + conduct: 0.8 +} +elements.krypton = { + color: elements.neon.color, + behavior: behaviors.GAS, + colorOn: ["#c49dce","#ac8ab4","#715579"], + category: "gases", + state: "gas", + tempLow: -153.22, + stateLow: "liquid_krypton", + density: 3.75, + conduct: 0.8 +} +elements.liquid_krypton = { + color: elements.neon.color, + behavior: behaviors.LIQUID, + colorOn: ["#c49dce","#ac8ab4","#715579"], + category: "states", + state: "liquid", + tempHigh: -150.22, + stateHigh: "krypton", + density: 2423, + tempLow: -157.36, + stateLow: "frozen_krypton", + conduct: 0.8 +} +elements.frozen_krypton = { + color: elements.neon.color, + behavior: behaviors.WALL, + colorOn: ["#c49dce","#ac8ab4","#715579"], + category: "states", + state: "solid", + tempHigh: -154.36, + stateHigh: "liquid_krypton", + density: 2160, + conduct: 0.8 +} +elements.xenon = { + color: elements.neon.color, + behavior: behaviors.GAS, + colorOn: ["#627eca","#4572d3","#333cb1"], + category: "gases", + state: "gas", + tempLow: -108, + stateLow: "liquid_xenon", + density: 5.9, + conduct: 0.8 +} +elements.liquid_xenon = { + color: elements.neon.color, + behavior: behaviors.LIQUID, + colorOn: ["#627eca","#4572d3","#333cb1"], + category: "states", + state: "liquid", + tempHigh: -104, + stateHigh: "xenon", + density: 2948, + tempLow: -111.8, + stateLow: "frozen_xenon", + conduct: 0.8 +} +elements.frozen_xenon = { + color: elements.neon.color, + behavior: behaviors.WALL, + colorOn: ["#627eca","#4572d3","#333cb1"], + category: "states", + state: "solid", + tempHigh: -109.8, + stateHigh: "liquid_xenon", + density: 3410, + conduct: 0.8 +} \ No newline at end of file