diff --git a/mod-list.html b/mod-list.html index 1312c8fc..b91092d2 100644 --- a/mod-list.html +++ b/mod-list.html @@ -200,6 +200,8 @@ Food & Cooking bananas.jsAdds bananas and banana plantsAlice ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) +pizzasstuff.jsNew animals, foods, and plants_ilikepizza_ +sbstuff.jsAdds RiceStefan Blox Life & Nature apioforms_pre.jsAn incomplete implementation of elements from the Apioform GameAlice @@ -209,6 +211,7 @@ crimson.jsAdds elements relating to the Crimson from TerrariaAlice fairy_chain.jsAdds way too many fairies to fey_and_more.jsAlice fantastic_creatures.jsAdds various animalsMelecie +fantasy_elements.jsFantasy creatures and substancespixelegend4 fey_and_more.jsAdds fairies, magic, and a lot of other thingsMelecie fwibblen.jsAdds a flying creature that turns nickel into itself, and a second creature that does the same to the first oneAlice human_edit.jsImprovements to humansAlice @@ -216,10 +219,11 @@ mobs.jsAdds Creepers, Zombies, and SkeletonsAlice nocancer.jsRemoves cancer from the game one tick after it is createdmollthecoder nocancer2.jsRemoves cancer from the game altogether. May be incompatible with other mods that spawn cancermollthecoder +pizzasstuff.jsNew animals, foods, and plants_ilikepizza_ primordial_birthpool.jsA cross between Primordial Soup and Birthpool. Requires F&MAlice spring.jsMany nature elements, like sakura trees, butterflies, beehives, and moreR74n -the_ground.jsAdds several rock types, worldgen settings, and gemstonesAlice the_ground_og.jsSimplified and more stable version of the_ground.jsAlice +the_ground.jsAdds several rock types, worldgen settings, and gemstonesAlice toothpaste.jsTeeth and pasteAlice Fun & Games diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index bc0d7e3b..6593c196 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -3669,8 +3669,13 @@ color1 and color2 spread through striped paint like dye does with itself. col } } - //New elements + //No changeTemp for fire=>smoke + elements.fire.tick = function(pixel){ + behaviors.UL_UR_OPTIMIZED(pixel); + if (!pixel.del && settings.burn===0 && (pixelTicks-pixel.start > 70) && Math.random() < 0.1 ) { changePixel(pixel,"smoke",false) } + }; + //New elements elements.cold_fire.burning = true; elements.cold_fire.burnTempChange = -1; elements.cold_fire.burnTime = 25; @@ -7986,7 +7991,7 @@ color1 and color2 spread through striped paint like dye does with itself. col behavior: behaviors.WALL, state: "solid", category: "rainbow variants", - }; + }; //7989 yay soshi! elements.lavashimmer = { color: ["#ff3f00","#200800","#ff3f00","#200800"], @@ -8216,7 +8221,7 @@ color1 and color2 spread through striped paint like dye does with itself. col } }, reactions: { - dye: elements.rainbow.reactions.dye, //7989 yay soshi! + dye: elements.rainbow.reactions.dye, }, behavior: behaviors.WALL, state: "solid", @@ -9648,7 +9653,7 @@ color1 and color2 spread through striped paint like dye does with itself. col for(y = bottomFortyPercent; y < height; y++) { var chance = y > bottomTwentyPercent ? 0.03 : 0.01 var radius = y > bottomTwentyPercent ? 8 : 6 - if(enabledMods.includes("velocity.js") && !isEmpty(x,y,true)) { + if(!isEmpty(x,y,true)) { pixelMap[x][y].vy ??= 0; pixelMap[x][y].vy -= 20; }; @@ -11275,10 +11280,11 @@ color1 and color2 spread through striped paint like dye does with itself. col pixelMap: structuredClone ? structuredClone(pixelMap) : JSON.parse(JSON.stringify(pixelMap)), width: width, height: height, + pixelTicks: pixelTicks, pixelSize: pixelSize, settings: settings, version: 1, - enabledMods: localStorage.enabledMods, + enabledMods: localStorage.enabledMods }; for(i = 0; i < simulationState.pixelMap.length; i++) { var column = simulationState.pixelMap[i]; @@ -11529,6 +11535,7 @@ color1 and color2 spread through striped paint like dye does with itself. col width = json.width; height = json.height; pixelSize = json.pixelSize; + pixelTicks = (json.pixelTicks ?? 0); //currentPixels = json.currentPixels; for(i = 0; i < json.pixelMap.length; i++) { json.pixelMap[i] = json.pixelMap[i].map(x => zeroToNull(x)); @@ -13430,12 +13437,13 @@ Pixel size (rendering only): (Use if the save looks cut o elements.lamp_oil.density = 810; elements.lamp_oil.name = "kerosene"; elements.lamp_oil.forceAutoGen = true; + elements.lamp_oil.burnInto = "smoke,smoke,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","); elements.lamp_oil_gas = { name: "kerosene gas", burn: 100, density: 4.5, tick: elements.lamp_oil.tick, - burnInto: "explosion,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",") + burnInto: "explosion,smoke,smoke,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",") }; elements.gasoline = { @@ -13461,7 +13469,7 @@ Pixel size (rendering only): (Use if the save looks cut o tempLow: -60, burn: 20, burnTime: 500, - burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), + burnInto: "fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), viscosity: 7.04, state: "liquid", density: 755, @@ -13499,7 +13507,7 @@ Pixel size (rendering only): (Use if the save looks cut o forceAutoGen: true, burn: 80, burnTime: 500, - burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), + burnInto: "fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), viscosity: 5.77, state: "liquid", density: 740 @@ -13533,7 +13541,7 @@ Pixel size (rendering only): (Use if the save looks cut o tempLow: -25, burn: 20, burnTime: 500, - burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), + burnInto: "fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), viscosity: 7.04, state: "liquid", density: 755, @@ -13562,7 +13570,7 @@ Pixel size (rendering only): (Use if the save looks cut o burn: 20, burnTime: 600, forceAutoGen: true, - burnInto: "explosion,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), + burnInto: "fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","), viscosity: 7.04, state: "liquid", density: 800, @@ -13578,6 +13586,7 @@ Pixel size (rendering only): (Use if the save looks cut o elements.heavy_fuel_oil = { color: "#1c1a18", + stain: 0.3, behavior: behaviors.LIQUID, tick: function(pixel) { if (pixel.temp > 407 && !pixel.burning) { @@ -13611,7 +13620,7 @@ Pixel size (rendering only): (Use if the save looks cut o viscosity: 700, burnTime: 800, fireElement: ["fire","fire","fire","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"], - burnInto: "explosion,fire,fire,fire,fire,fire,fire,ash,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,poison_gas".split(","), + burnInto: "fire,fire,fire,fire,fire,fire,ash,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,poison_gas".split(","), viscosity: 7.04, state: "liquid", density: 755, @@ -22516,28 +22525,30 @@ Pixel size (rendering only): (Use if the save looks cut o newConcreteTick = elements.concrete.tick; - if(elements.hanging_concrete) { - elements.hanging_concrete.tick = function(pixel) { - newConcreteTick(pixel); + runAfterLoad(function() { //mamma mia that's some tasty spaghetti + if(elements.hanging_concrete) { + elements.hanging_concrete.tick = function(pixel) { + newConcreteTick(pixel); + }; }; - }; - if(elements.attach_concrete) { - oldAttachConcreteTick = elements.attach_concrete.tick ; - elements.attach_concrete.tick = function(pixel) { - oldAttachConcreteTick(pixel); - newConcreteTick(pixel); + if(elements.attach_concrete) { + oldAttachConcreteTick = elements.attach_concrete.tick ; + elements.attach_concrete.tick = function(pixel) { + oldAttachConcreteTick(pixel); + newConcreteTick(pixel); + }; }; - }; - if(elements.crumbling_concrete) { - oldCrumblingConcreteTick = elements.crumbling_concrete.tick ; - newConcreteTick = elements.concrete.tick ; - elements.crumbling_concrete.tick = function(pixel) { - oldCrumblingConcreteTick(pixel); - newConcreteTick(pixel); - }; - }; + if(elements.crumbling_concrete) { + oldCrumblingConcreteTick = elements.crumbling_concrete.tick ; + newConcreteTick = elements.concrete.tick ; + elements.crumbling_concrete.tick = function(pixel) { + oldCrumblingConcreteTick(pixel); + newConcreteTick(pixel); + } + } + }); //Crimson //Made-up lore: Crimson naturally drives rocks towards a somewhat mafic comp. @@ -23995,14 +24006,20 @@ Pixel size (rendering only): (Use if the save looks cut o breakInto: "alumina", }; + + elements.molten_titanium ??= {}; elements.molten_titanium.tempHigh = 3287; + elements.molten_iron ??= {}; elements.molten_iron.tempHigh = 2861; + elements.molten_chromium ??= {}; elements.molten_chromium.tempHigh = 2671; + elements.molten_copper ??= {}; elements.molten_molten_copper.tempHigh = 4700; elements.molten_alumina ??= {}; + elements.molten_alumina.tempHigh = 5400; elements.molten_alumina.reactions ??= {}; - elements.molten_alumina.reactions.iron_scrap = {elem1: "molten_sapphire", elem2: ["molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron",null] }; - elements.molten_alumina.reactions.molten_iron = {elem1: "molten_sapphire", elem2: ["molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron",null] }; - elements.molten_alumina.reactions.titanium_scrap = {elem1: "molten_sapphire", elem2: ["molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium",null] }; - elements.molten_alumina.reactions.molten_titanium = {elem1: "molten_sapphire", elem2: ["molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium",null] }; - elements.molten_alumina.reactions.chromium_scrap = {elem1: "molten_ruby", elem2: ["molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium",null] }; - elements.molten_alumina.reactions.molten_chromium = {elem1: "molten_ruby", elem2: ["molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium",null] }; + elements.molten_alumina.reactions.iron_scrap = {elem1: "molten_sapphire", elem2: ["molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron",null] }; + elements.molten_alumina.reactions.molten_iron = {elem1: "molten_sapphire", elem2: ["molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron","molten_iron",null] }; + elements.molten_alumina.reactions.titanium_scrap = {elem1: "molten_sapphire", elem2: ["molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium",null] }; + elements.molten_alumina.reactions.molten_titanium = {elem1: "molten_sapphire", elem2: ["molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium","molten_titanium",null] }; + elements.molten_alumina.reactions.chromium_scrap = {elem1: "molten_ruby", elem2: ["molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium",null] }; + elements.molten_alumina.reactions.molten_chromium = {elem1: "molten_ruby", elem2: ["molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium","molten_chromium",null] }; elements.molten_alumina.stateLow = "corundum"; //Sapphire @@ -24018,6 +24035,16 @@ Pixel size (rendering only): (Use if the save looks cut o hardness: 0.9, }; + elements.molten_sapphire ??= {}; elements.molten_sapphire.tick = function(pixel) { + if(pixel.temp >= 5040) { + if(Math.random() < 0.005) { //the real proportion of 0.01% is so low that you'd just melt sapphire and get back corundum + changePixel(pixel,Math.random() < 0.5 ? "titanium_gas" : "iron_gas",false) + } else { + changePixel(pixel,"alumina_gas",false) + } + }; + }; + standaloneBrokenFormMaker("sapphire","shard",true,"powders","auto","auto","molten_sapphire",["alumina","alumina","alumina","alumina","alumina","alumina","alumina","alumina","alumina","iron_scrap","titanium_scrap"]).hidden = true; //Ruby @@ -24033,6 +24060,16 @@ Pixel size (rendering only): (Use if the save looks cut o hardness: 0.9, }; + elements.molten_ruby ??= {}; elements.molten_ruby.tick = function(pixel) { + if(pixel.temp >= 5040) { + if(Math.random() < 0.02) { //1% also too low + changePixel(pixel,"chromium_gas",false) + } else { + changePixel(pixel,"alumina_gas",false) + } + }; + }; + standaloneBrokenFormMaker("ruby","shard",true,"powders","auto","auto","molten_sapphire",["alumina","alumina","alumina","alumina","alumina","alumina","alumina","alumina","alumina","chromium_scrap"]).hidden = true; //Spinel (kek) @@ -26326,6 +26363,7 @@ Make sure to save your command in a file if you want to add this preset again.` function changeElementPrompt() { var cmToElement = prompt("Enter what you want to change pixels to"); + if(cmToElement == null) { return }; // replace spaces with underscores cmToElement = cmToElement.replace(/ /g, "_"); cmToElementS = mostSimilarElement(cmToElement); @@ -26805,6 +26843,169 @@ Make sure to save your command in a file if you want to add this preset again.` } } }; + + rayAbsorbElements = []; + rayPassElements = []; + + function summonRay(element,xIn,intensity,radius) { + var forMin = 0 - radius; + var forMax = radius + 1; + if(intensity < 1) { return }; + for(var i = forMin; i < forMax; i++) { + for(var j = 1; j < intensity + 1; j++) { + var pos = {x: xIn + i, y: j}; + if(isEmpty(pos.x,pos.y)) { + createPixel(element,pos.x,pos.y) + } else { + if(outOfBounds(pos.x,pos.y)) { + break + } else { + var pixel = pixelMap[pos.x][pos.y]; + var pElem = pixel.element; + var data = elements[pElem]; + if(rayAbsorbElements.includes(pElem)) { + break + } else if(rayPassElements.includes(pElem)) { + continue + } else { + if(data.state == "gas") { + continue + } else { + break + } + } + } + } + } + } + }; + + elements.orbital_ray_beacon = { + color: "#ebdf91", + behavior: [ + "XX|M2 AND SA|XX", + "SA|XX|SA", + "XX|M1|XX" + ], + breakInto: ["steel_scrap","iron_scrap","copper_scrap","gold_scrap","battery","sapphire","magic"], + temp: 0, + tempHigh: 5010, + insulate: true, + conduct: 1, + stateHigh: ["molten_steel","molten_iron","molten_copper","molten_gold","acid_gas","titanium_gas","molten_sapphire","magic"], + tick: function(pixel) { + pixelTempCheck(pixel); + if(!pixel.charge) { return }; + if(pixel.charge) { + //var intensity = Math.max(1,Math.floor((pixel.temp + 1) / 100)); + if(isEmpty(pixel.x,pixel.y+1,true)) { return }; + var pixelUnder = pixelMap[pixel.x]?.[pixel.y+1]; + if(!pixelUnder) { return }; + switch(pixelUnder.element) { + case "fire": + summonRay("heat_ray",pixel.x,10,5); + break; + case "ultramafic_magma": + case "magma": + case "intermediate_magma": + case "intermediate_felsic_magma": + case "felsic_magma": + case "nellish_magma": + case "rainbow_magma": + case "crimson_magma": + summonRay("heat_ray",pixel.x,16,10); + break; + case "vaporized_ultramafic_magma": + case "vaporized_magma": + case "vaporized_intermediate_magma": + case "vaporized_intermediate_felsic_magma": + case "vaporized_felsic_magma": + case "vaporized_nellish_magma": + case "vaporized_rainbow_magma": + case "vaporized_crimson_magma": + summonRay("heat_ray",pixel.x,24,18); + break; + case "greek_fire": + summonRay("heat_ray",pixel.x,16,25); + break; + case "quark_matter": + summonRay("heat_ray",pixel.x,45,80); + break; + case "cold_fire": + summonRay("cold_ray",pixel.x,10,5); + break; + case "chilly_water": + summonRay("cold_ray",pixel.x,14,8); + break; + case "frostwind": + summonRay("cold_ray",pixel.x,20,15); + break; + case "liquid_frostwind": + summonRay("cold_ray",pixel.x,30,20); + break; + case "gelid_cryotheum": + summonRay("cold_ray",pixel.x,36,25); + break; + case "snow": + summonRay("freeze_ray",pixel.x,3,6); + break; + case "slush": + summonRay("freeze_ray",pixel.x,4,6); + break; + case "packed_snow": + summonRay("freeze_ray",pixel.x,4,7); + break; + case "ice": + summonRay("freeze_ray",pixel.x,4,8); + break; + case "alcohol_ice": + summonRay("freeze_ray",pixel.x,6,11); + break; + case "liquid_nitrogen": + summonRay("freeze_ray",pixel.x,9,18); + break; + case "nitrogen_ice": + summonRay("freeze_ray",pixel.x,11,19); + break; + case "liquid_hydrogen": + summonRay("freeze_ray",pixel.x,14,26); + break; + case "hydrogen_ice": + summonRay("freeze_ray",pixel.x,15,27); + break; + case "liquid_helium": + summonRay("freeze_ray",pixel.x,18,34); + break; + case "tectonic_petrotheum": + summonRay("smash_ray",pixel.x,2,10); + break; + case "bomb": + case "tnt": + summonRay("smash_ray",pixel.x,5,7); + break; + case "cluster_bomb": + summonRay("death_ray",pixel.x,7,11); + break; + case "nuke": + summonRay("annihilation_ray",pixel.x,20,40); + break; + case "cluster_nuke": + summonRay("annihilation_ray",pixel.x,30,60); + break; + case "armageddon": + summonRay("annihilation_ray",pixel.x,40,80); + break; + }; + //if(pixelUnder) { deletePixel(pixelUnder.x,pixelUnder.y) }; + delete pixel.charge; + pixel.chargeCD = 4; + return true; + } + }, + conduct: 1, + category: "machines", + hardness: 0.6 + }; //PUSHERS ## @@ -39388,6 +39589,8 @@ Make sure to save your command in a file if you want to add this preset again.` if(!supports) { behaviors.POWDER(pixel); }; + + elements.concrete.tick doDefaults(pixel); }, @@ -41507,25 +41710,25 @@ Make sure to save your command in a file if you want to add this preset again.` } } }; - if(enabledMods.includes("mods/paint_event.js")) { - randomEvents.paint = function() { - // set the color of a random circle to a random color - var x = Math.floor(Math.random()*(width-1))+1; - var y = Math.floor(Math.random()*(height-1))+1; - var randomR = Math.floor(Math.random() * 256); - var randomG = Math.floor(Math.random() * 256); - var randomB = Math.floor(Math.random() * 256); - var radius = Math.floor(Math.random()*19)+1; - var rColor = "rgb(" + randomR + "," + randomG + "," + randomB + ")"; - var coords = circleCoords(x,y,radius); - for (var i = 0; i < coords.length; i++) { - var coord = coords[i]; - if (!outOfBounds(coord.x,coord.y) && !isEmpty(coord.x,coord.y)) { - pixelMap[coord.x][coord.y].color = rColor; - }; + + randomEvents.paint = function() { + // set the color of a random circle to a random color + var x = Math.floor(Math.random()*(width-1))+1; + var y = Math.floor(Math.random()*(height-1))+1; + var randomR = Math.floor(Math.random() * 256); + var randomG = Math.floor(Math.random() * 256); + var randomB = Math.floor(Math.random() * 256); + var radius = Math.floor(Math.random()*19)+1; + var rColor = "rgb(" + randomR + "," + randomG + "," + randomB + ")"; + var coords = circleCoords(x,y,radius); + for (var i = 0; i < coords.length; i++) { + var coord = coords[i]; + if (!outOfBounds(coord.x,coord.y) && !isEmpty(coord.x,coord.y)) { + pixelMap[coord.x][coord.y].color = rColor; }; }; }; + //Buff mob events if(typeof(maximumCreeperTries) !== "undefined") { minimumCreeperTries = 10; diff --git a/mods/betterMenuScreens.js b/mods/betterMenuScreens.js index 1c0509f1..dc18861c 100644 --- a/mods/betterMenuScreens.js +++ b/mods/betterMenuScreens.js @@ -106,7 +106,7 @@ const inject = () => { /** * - * @param {string} menu Menu do be opened + * @param {string} menu Menu to be opened * @param {boolean} [closeCurrent] Whether it should forcefully close the current screen */ const openMenu = (menu, closeCurrent = false) => { @@ -130,6 +130,7 @@ class MenuScreen { this.showCloseButton = true; this.closeButtonText = "-"; this.closeButtonClass = "XButton"; + this.titleId = null; } /** @@ -141,6 +142,15 @@ class MenuScreen { return this; } + /** + * Sets screen title ID + * @param {string} [id] Screen title element ID + */ + setTitleId(id) { + this.titleId = id; + return this; + } + /** * Sets close button visibility. When false the close button will not be added to the menu screen * @param {boolean} show Visibility of the close button @@ -253,7 +263,7 @@ class MenuScreen { const inner = document.createElement("div"); inner.className = this.innerDivClass ?? "menuScreen"; inner.innerHTML = `${this.showCloseButton ? ` - ${this.title ?? "Menu Screen"}

"; + ${this.title ?? "Menu Screen"}

"; this.nodes.forEach(n => inner.querySelector(".menuText").appendChild(n)); parent.appendChild(inner); document.getElementById(id).appendChild(parent); diff --git a/mods/chess.js b/mods/chess.js index c5d1d0d6..83be06f1 100644 --- a/mods/chess.js +++ b/mods/chess.js @@ -1396,9 +1396,7 @@ class GameScreen { } onKey(ev) { - if (!this.menuScreen) { - player.update(ev); - } else { + if (this.menuScreen) { this.menuScreen.onKey(ev); } } diff --git a/mods/fantasy_elements.js b/mods/fantasy_elements.js index 278ee252..87cc8f4e 100644 --- a/mods/fantasy_elements.js +++ b/mods/fantasy_elements.js @@ -151,7 +151,6 @@ elements.dragon_scale = { reactions: { "fire": { elem1: null, elem2: "dragon_breath" }, "plasma": { elem1: null, elem2: "dragon_breath" }, - "incinerate": { elem1: null, elem2: "ash" }, "goblins_delight": { elem1: "dragon_breath", elem2: null }, "pulsium": { elem1: "dragon_breath", elem2: null }, "oil": { elem1: null, elem2: "dragon_breath" }, @@ -179,7 +178,7 @@ elements.mystic_runes = { }, reactions: { "heat_ray": { elem1: null, elem2: "mystic_runes" }, - "god_ray": { elem1: dragon_scale, elem2: "dragon_scale" }, + "god_ray": { elem1: null, elem2: "mystic_runes" }, "laser": { elem1: null, elem2: "mystic_runes" }, "helium": { elem1: null, elem2: "mystic_runes" }, "oxygen": { elem1: null, elem2: "mystic_runes" }, @@ -203,7 +202,7 @@ elements.enchanted_wood = { // Update the element's behavior }, reactions: { - "fire": { elem1: null, elem2: "mystic_runes" }, + "fire": { elem1: null, elem2: "charcoal" }, "plasma": { elem1: null, elem2: "charcoal" }, "water": { elem1: null, elem2: "mystic_runes" }, }, @@ -211,7 +210,7 @@ elements.enchanted_wood = { // update 1.1 below // adds 3 more extra elements -// by pixelegend4 +// by hackerpro908 // main game by R74N called sandboxels elements.quartzium = { @@ -223,7 +222,6 @@ elements.quartzium = { weight: 100, reactions: { "fire": { elem1: "quartz", elem2: "quartz" }, - "plasma": { elem1: "quartz", elem2: "quartz" }, }, }; elements.quartz = { @@ -243,101 +241,3 @@ elements.moonite = { density: 8076, weight: 100, }; -elements.faustium = { - color: "#8B008B", - behavior: behaviors.SUPERFLUID, - category: "fantasy", - state: "liquid", - density: 800, - viscosity: 0.01, - weight: 300, - reactions: { - "water": { elem1: "moonite", elem2: "moonite" }, - }, -}; - -// update 1.2 -// adds more below -// added faustium reaction - -elements.nebulaflare = { - color: ["#7500FF", "#00FFFB", "#FF00FC"], - behavior: behaviors.GAS, - state: "gas", - density: 0.1, - weight: 0.1, - category: "fantasy", - reactions: { - "fire": { elem1: "moonite", elem2: "moonite" }, - "moonite": { elem1: "quartzium", elem2: "quartzium" }, - - }, -}; - -elements.flaro = { - color: ["#ff4d4d", "#ff9933", "#ffd11a", "#ff9933", "#ff4d4d"], - behavior: behaviors.GAS, - category: "fantasy", - state: "gas", - density: 8076, - weight: 100, -}; - -elements.aurorium = { - color: ["#75c0e0", "#00ff00", "#ffffff", "#00ff00", "#75c0e0"], - behavior: behaviors.GAS, - category: "fantasy", - state: "gas", - density: 55, - weight: 1, - reactions: { - "plasma": { elem1: "explosion", elem2: "explosion" }, - "flaro": { elem1: "nebulaflare", elem2: "nebulaflare" }, - - } -}; - -elements.glimmerium = { - color: ["#ff3333", "#ff6666", "#ff9999", "#ffcc99", "#ff6633"], - behavior: behaviors.LIGHT, - category: "fantasy", - state: "gas", - density: 0.01, - weight: 0.5, - temperature: 3000, - reactions: { - "aurorium": { elem1: "sodium", elem2: "sodium" }, - "flaro": { elem1: "nebulaflare", elem2: "nebulaflare" }, - "pulsium": { elem1: "water", elem2: "water" }, - } -}; - -elements.goblin = { - "color": "#2ae856", - "state": "solid", - "category":"fantasy", - "behavior": [ - "XX|XX|DL", - "XX|FX%0.5|M2%3 AND DL", - "XX|M1|XX", - ], - reactions: { - "goblins_delight": { elem2:null, chance:0.9 }, - - }, -}; - -elements.osmoz = { - color: "#1ff099", - behavior: behaviors.SOLID, - category: "fantasy", - state: "solid", - density: 5000, - weight: 300, - reactions: { - "fire": { elem1: "nebulaflare", elem2: "nebulaflare" }, - } -}; - - - diff --git a/mods/jaydsmods.js b/mods/jaydsmods.js new file mode 100644 index 00000000..1070777b --- /dev/null +++ b/mods/jaydsmods.js @@ -0,0 +1,31 @@ +elements.test_element = { + color: "#ff0000", + behavior: behaviors.POWDER, + category: "land", + state: "solid", + reactions: { + "dirt": { elem1: null, elem2: "mud" }, + } + }, +elements.tsar_bomba = { + color: "#524c41", + behavior: [ + "XX|EX:150>plasma|XX", + "XX|XX|XX", + "M2|M1 AND EX:150>plasma|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} +elements.meese = { + color: "#996515", + behavior: [ + "XX|XX|XX", + "XX|FX%0.25|M2%0.5 AND BO", + "XX|M1|XX", + ], + category: "life" + } \ No newline at end of file diff --git a/mods/morefoodsmod.js b/mods/morefoodsmod.js new file mode 100644 index 00000000..9791eb3b --- /dev/null +++ b/mods/morefoodsmod.js @@ -0,0 +1,47 @@ +elements.chowder = { + color: "#c7c98b", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + reactions: { + "water": { elem1: null, elem2: "soup" }, + }, + }; + + elements.soup = { + color: "#c28719", + behavior: behaviors.LIQUID, + category: "food", + state: "liquid", + stateHigh: "chowder", + tempHigh: 100 + }; + + elements.rice = { + color: "#f6f8ed", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + reactions: { + "broth": { elem1: "risotto", elem2: null }, + "beans": { elem1: null, elem2: "feijoada"}, + }, + }; + + elements.risotto = { + color: "#f8f4e9", + behavior: behaviors.SUPPORTPOWDER, + category: "food", + state: "solid", + }; + + elements.feijoada = { + color: "#291800", + behavior: behaviors.LIQUID, + category: "food", + state: "liquid", + viscosity: 9 + }; + + if (!elements.milk.reactions) elements.milk.reactions = {}; +elements.milk.reactions.corn = { elem1: null, elem2: "chowder" } \ No newline at end of file diff --git a/mods/nastystuff.js b/mods/nastystuff.js new file mode 100644 index 00000000..92e4c9f0 --- /dev/null +++ b/mods/nastystuff.js @@ -0,0 +1,57 @@ +elements.poop = { + color: "#411900", + density: 200, + state: "solid", + burn: 5, + tempHigh: 400, + burnTime: 200, + burnInto: ["driedPoop"], + category: "gross stuff", +} + +elements.driedPoop = { + behavior: behaviors.POWDER, + color: '#181100', + state: 'powder', + category: "gross stuff", + reactions: { + "water": { elem1: null, elem2: "wetPoop" }, + "milk": { elem1: null, elem2: "poopyMilk" }, + + }, + density: 10 +} + +elements.wetPoop = { + behavior: behaviors.LIQUID, + color: "#A9844F", + state: 'liquid', + category: 'gross stuff', + density: '25' +} + +elements.poopyMilk = { + behavior: behaviors.LIQUID, + color: '#BEB2AD', + state: 'liquid', + category: "gross stuff", + density: 10 +} + +elements.peePee = { + behavior: behaviors.LIQUID, + color: '#f1ed00', + state: 'liquid', + category: "gross stuff", + tempHigh: 100, + stateHigh: ["ammonia", "fragrance"], + density: 25 +} + +elements.ammonia = { + behavior: behaviors.GAS, + color: '#E5E4E2', + category: 'gross stuff', + density: .86, + state: 'gas', +} \ No newline at end of file diff --git a/mods/nousersthings.js b/mods/nousersthings.js index 583e8012..b2c6d531 100644 --- a/mods/nousersthings.js +++ b/mods/nousersthings.js @@ -1527,4 +1527,101 @@ elements.invisiblewall = { } }, category: "solids", +}, +elements.bismuth = { + color: ["#818181","#989898","#b0b0b0","#c9c9c9"], + behavior: behaviors.WALL, + category: "solids", + tempHigh: 271.4, + stateHigh: "molten_bismuth", + density: 9780, + state: "solid" +} +function RGBtoHSV(r, g, b) { + if (arguments.length === 1) { + g = r.g, b = r.b, r = r.r; + } + var max = Math.max(r, g, b), min = Math.min(r, g, b), + d = max - min, + h, + s = (max === 0 ? 0 : d / max), + v = max / 255; + + switch (max) { + case min: h = 0; break; + case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break; + case g: h = (b - r) + d * 2; h /= 6 * d; break; + case b: h = (r - g) + d * 4; h /= 6 * d; break; + } + + return { + h: h, + s: s, + v: v + }; +} +function HSVtoRGB(h, s, v) { + var r, g, b, i, f, p, q, t; + if (arguments.length === 1) { + s = h.s, v = h.v, h = h.h; + } + i = Math.floor(h * 6); + f = h * 6 - i; + p = v * (1 - s); + q = v * (1 - f * s); + 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 { + r: Math.round(r * 255), + g: Math.round(g * 255), + b: Math.round(b * 255) + }; +} +elements.molten_bismuth = { + color: ["#ee8d63", "#ef7e5e", "#f06e5c", "#f05c5c"], + behavior: behaviors.MOLTEN, + category: "states", + state: "liquid", + temp: 280, + tick: function(pixel){ + if (pixel.temp <= 261.4){ + pixel.tHue = 0; + for (var i = 0; i < squareCoords.length; i++) { + var coord = squareCoords[i]; + var x = pixel.x+coord[0]; + var y = pixel.y+coord[1]; + if (!isEmpty(x, y, true)){ + if (pixelMap[x][y].element == "bismuth"){ + var otherPixel = pixelMap[x][y] + var nR = parseInt(otherPixel.color.slice(4, otherPixel.color.indexOf(',')), 10) + var nG = parseInt(otherPixel.color.slice(otherPixel.color.indexOf(',') + 1, otherPixel.color.lastIndexOf(',')), 10) + var nB = parseInt(otherPixel.color.slice(otherPixel.color.lastIndexOf(',') + 1, -1), 10) + var hsvResult = RGBtoHSV(nR, nG, nB) + if ((pixel.tHue+1)%1 < hsvResult.h){ + pixel.tHue = hsvResult.h; + } + } + } + } + changePixel(pixel, "bismuth") + if (1 == 1){ + var rgbResult = HSVtoRGB(pixel.tHue + 0.02, 0.8, 0.8); + } else { + var rgbResult = HSVtoRGB(pixel.tHue, 0.8, 0.8); + } + const hexR = rgbResult.r.toString(16).padStart(2, '0'); + const hexG = rgbResult.g.toString(16).padStart(2, '0'); + const hexB = rgbResult.b.toString(16).padStart(2, '0'); + const hexCode = `#${hexR}${hexG}${hexB}`; + pixel.color = pixelColorPick(pixel, hexCode) + } + }, + density: 10049, } diff --git a/mods/obsidian.js b/mods/obsidian.js new file mode 100644 index 00000000..929e0050 --- /dev/null +++ b/mods/obsidian.js @@ -0,0 +1,29 @@ +elements.obsidian = { + color: ["#343434", "#313639"], + behavior: behaviors.SOLID, + category: "solids", + state: "solid", + reactions: { + "sand": { elem1: "obsidian_shard" }, + "dirt": { elem1: "obsidian_shard" }, + "rock": { elem1: "obsidian_shard" }, + "mudstone": { elem1: "obsidian_shard" }, + "packed_snow": { elem1: "obsidian_shard" }, + "gravel": { elem1: "obsidian_shard" }, + "clay": { elem1: "obsidian_shard" }, + "clay_soil": { elem1: "obsidian_shard" }, + "permafrost": { elem1: "obsidian_shard" }, + "mulch": { elem1: "obsidian_shard" }, + "basalt": { elem1: "obsidian_shard" }, + "tuff": { elem1: "mud" }, + "limestone": { elem1: "obsidian_shard" }, + "quicklime": { elem1: "obsidian_shard" }, + "slaked_lime": { elem1: "obsidian_shard" }, + } + }, + elements.obsidian_shard = { + color: ["#343434" , "#313639"], + behavior: behaviors.POWDER, + category: "powders", + state: "solid", + } \ No newline at end of file diff --git a/mods/pizzasstuff.js b/mods/pizzasstuff.js new file mode 100644 index 00000000..f887dc5b --- /dev/null +++ b/mods/pizzasstuff.js @@ -0,0 +1,332 @@ +elements.fruit_slushy = { + color: "#b867cf", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.mold = { + color: "#86ab29", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.chocolate_slushy = { + color: "#4f2e16", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.chocolate_sauce = { + color: "#754828", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.chocolate_ice_cream = { + color: "#704b3a", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.fruit_ice_cream = { + color: "#de6ab7", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.chocolate_yogurt = { + color: "#825c4b", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempLow: 0, + stateLow: "frozen_chocolate_yogurt", +}; + +elements.fruit_yogurt = { + color: "#f587d0", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", + tempLow: 0, + stateLow: "frozen_fruit_yogurt", +}; + +elements.frozen_fruit_yogurt = { + color: "#ffc2ea", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.frozen_chocolate_yogurt = { + color: "#ad8776", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.cooking_oil = { + color: "#c4ab4f", + behavior: behaviors.LIQUID, + category: "liquids", + state: "solid", + reactions: { + "meat": { elem1: null, elem2: "chicken_nuggets" }, + "potato": { elem1: null, elem2: "fries" }, + } +}; + +elements.chicken_nuggets = { + color: "#967242", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.fries = { + color: "#ebba34", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.rose_sauce = { + color: "#f0340e", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.rose_sauce = { + color: "#f0340e", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + hidden: "TRUE", +}; + +elements.smashed_ice = { + color: "#c3d4e6", + behavior: behaviors.LIQUID, + category: "food", + state: "solid", + reactions: { + "grape": { elem1: null, elem2: "fruit_slushy" }, + "green_grape": { elem1: null, elem2: "fruit_slushy" }, + "cherry": { elem1: null, elem2: "fruit_slushy" }, + "chocolate": { elem1: null, elem2: "chocolate_slushy" }, + "juice": { elem1: null, elem2: "fruit_slushy" }, + "chocolate_sauce": { elem1: null, elem2: "chocolate_slushy" }, + }, + density: 100, + tempHigh: 25, + stateHigh: "water", + tempLow: -100, + stateLow: "snow", +}; + +elements.moss = { + color: "#389639", + 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", + + reactions: { + "dna": { elem1: "moth", elem2: null }, + } + +}; + +elements.moth = { + color: "#665233", + behavior: behaviors.BOUNCY, + category: "life", + state: "solid", + burn: 95, + burnTime: 25, + density: 600, + breakInto: "dead_bug", + tempHigh: 100, + stateHigh: "ash", + tempLow: 0, + stateLow: "dead_bug", +}; + +elements.cherry = { + color: "#c41428", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + breakIntoColor: "#450008", +}; + +elements.orange = { + color: "#ff9100", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + breakIntoColor: "#d69c4f", +}; + +elements.kiwi = { + color: "#34611a", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + tempHigh: 256, + stateHigh: "steam", + breakIntoColor: "#517a38", +}; + +elements.green_grape = { + color: "#b6eb7f", + behavior: behaviors.POWDER, + category: "food", + state: "solid", + breakInto: "juice", + breakIntoColor: "#5f8536", + tempHigh: 256, + stateHigh: "steam", +}; + +if (!elements.lettuce.reactions) elements.lettuce.reactions = {}; +elements.lettuce.reactions.ice_cream = { elem1: "moss", elem2: null } + +if (!elements.ketchup.reactions) elements.ketchup.reactions = {}; +elements.ketchup.reactions.yolk = { 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.chocolate.breakInto = "chocolate_sauce" + +if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {}; +elements.ice_cream.reactions.juice = { elem1: "fruit_ice_cream", elem2: null } + +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.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.juice = { 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 } diff --git a/mods/sbstuff.js b/mods/sbstuff.js new file mode 100644 index 00000000..45bb4c84 --- /dev/null +++ b/mods/sbstuff.js @@ -0,0 +1,276 @@ +elements.burnt_rice = { + tempHigh: 999, + stateHigh: "ash", + density: 699, + color: "#242424", + behavior: behaviors.POWDER, + category: "food", + state: "liquid", + reactions: { + "water": { elem1: null, elem2: "dirty_water" } + } +}; + +elements.rice = { + isFood: true, + burnInto: "burnt_rice", + density: 696, + tempHigh: 232, + stateHigh: "burnt_rice", + color: "#d1d1d1", + behavior: behaviors.POWDER, + category: "food", + state: "liquid", +}; + +elements.moth = { + tempHigh: 500, + stateHigh: "ash", + color: "#57381a", + behavior: behaviors.GAS, + category: "life", + state: "solid", +}; + +elements.moss = { + tempHigh: 500, + stateHigh: "ash", + density: 1000, + color: "#2d571a", + behavior: behaviors.POWDER, + category: "land", + state: "solid", +}; + +elements.mc_donalds = { + tempHigh: 6969, + stateHigh: "void", + density: 69, + color: "#ff0000", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.maple_syrup = { + isFood: true, + tempHigh: 500, + stateHigh: "steam", + density: 1333, + hardness: 1, + color: "#9c6000", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", +}; + +elements.boiled_egg = { + isFood: true, + density: 700, + breakInto: "yolk", + tempHigh: 500, + stateHigh: "ash", + color: "#fff9d1", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "liquid", +}; + +elements.dark_oak = { + breakInto: "dark_oak_wood", + tempHigh: 500, + stateHigh: "ash", + color: "#302216", + behavior: behaviors.WALL, + category: "solids", + state: "solid", +}; + +elements.dark_oak_wood = { + tempHigh: 500, + stateHigh: "ash", + color: "#573e28", + behavior: behaviors.SUPPORT, + category: "land", + state: "solid", +}; + +elements.avocado = { + isFood: true, + tempHigh: 500, + breakInto: "guacamole", + stateHigh: "ash", + color: "#254a22", + behavior: behaviors.SUPPORTPOWDER, + category: "food", + state: "liquid", +}; + +elements.guacamole = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: "#a2e09d", + behavior: behaviors.POWDER, + category: "food", + state: "liquid", +}; + +elements.watermelon = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + breakInto: "water_from_the_melon", + color: "#40993f", + behavior: behaviors.SUPPORT, + category: "food", + state: "solid", +}; + +elements.water_from_the_melon = { + isFood: true, + tempHigh: 500, + stateHigh: "steam", + color: "#ff5d47", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", +}; + +elements.nachos = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: "#bd7b26", + behavior: behaviors.SUPPORTPOWDER, + category: "food", + state: "solid", +}; + +elements.cherry = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: "#ff0f0f", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.green_cherry = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: "#5ce344", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.meth = { + hardness: 1, + tempHigh: 5000, + stateHigh: "steam", + color: "#0affef", + behavior: behaviors.POWDER, + category: "powders", + state: "solid", +}; + +elements.garlic = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: "#ffebbd", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + reactions: { + "bread": { elem1: null, elem2: "garlic_bread" }, + } +}; + +elements.garlic_bread = { + isFood: true, + breakInto: "crumb", + tempHigh: 500, + stateHigh: "ash", + color: ["#db9b56", "#288a0c", "#db9b56", "#db9b56", "#db9b56", "#db9b56"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.kiwi = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: ["#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#210a00"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.peanut_butter = { + isFood: true, + tempHigh: 500, + stateHigh: "ash", + color: "#d4903d", + behavior: behaviors.POWDER, + category: "food", + state: "solid", +}; + +elements.poop = { + tempHigh: 500, + stateHigh: "ash", + color: "#331600", + behavior: behaviors.STURDYPOWDER, + category: "special", + state: "solid", +}; + +elements.marshmallow = { + tempHigh: 50, + stateHigh: "cooked_marshmallow", + color: "#ffe4e3", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.cooked_marshmallow = { + tempHigh: 150, + stateHigh: "burnt_marshmallow", + color: "#d49e9d", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "liquid", +}; + +elements.burnt_marshmallow = { + tempHigh: 500, + stateHigh: "ash", + color: "#1c1212", + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", +}; + +elements.ramen = { + tempHigh: 500, + stateHigh: "ash", + color: "#fae34d", + behavior: behaviors.POWDER, + category: "food", + state: "solid", +}; + +elements.cereal = { + tempHigh: 500, + stateHigh: "ash", + color: ["#ba3425", "#baa31e", "#26ba1e", "#1e9dba", "#6f1eba"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "liquid", +};