diff --git a/index.html b/index.html index 3f8dcae8..61314622 100644 --- a/index.html +++ b/index.html @@ -16244,7 +16244,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">? Infinite Chef

-

Email us at contact@R74n.com for advertising, help, or education!

+

Email us at contact@R74n.com for advertising, help, or education!

Be notified when Sandboxels and other R74n projects are updated, along with ramblings from the developer!

@@ -16259,10 +16259,10 @@ Cancer, Landmine, Grenade, Smoke Grenade">? + --> +

Support development by subscribing on our Patreon! Many benefits!!

@@ -16285,7 +16285,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">? applications in education. With a hands-on experience, it can give students an understanding of emerging phenomena in many fields, such as biology, chemistry, ecology, geology, cooking, and even virology. There are countless aspects to discover.

We have a thriving community on Discord! There you can post feedback or share your creations.

-

Business inquiries? Education stories? Help needed? Email us at contact@R74n.com!

+

Business inquiries? Education stories? Help needed? Email us at contact@R74n.com!

More links: HelpTipsModsMobileOfflinePrivacy

Thanks to: Serioustar, ggod, Midi_png, personman, fnl4y, PitsPower, swagg boi, kaeud, WeiChei, Trent, u2ce

diff --git a/mod-list.html b/mod-list.html index fed60b74..45c8f386 100644 --- a/mod-list.html +++ b/mod-list.html @@ -151,12 +151,13 @@ save_loading.jsAdds the ability to save and load scenes from files (See the info page of the element)Alice selective_paint.jsAdds a tool to paint only selected elementsSquareScreamYT stripe_paint.jsAdds a tool to paint with stripesAlice +texturepack.jsAdds tools that let you create and share custom texture packsnousernamefound the_ground.jsAdds several rock types, worldgen settings, and gemstonesAlice Science & Chemistry alcohol.jsAdds methanol, (iso-)propanol, and butanolAlice alkahest.jsAdds the alkahest, a liquid which dissolves anythingAlice -aScientistsWish.jsAdds things that related to science, especially radiationCarbon Monoxide, CPU +aScientistsWish.jsAdds things that related to science, especially radiationCarbon Monoxide, salmonfishy bettermetalscrap.jsAllows metal scrap to be melted back into its original materialnousernamefound bigger_star_spawners.jsAdds spawners for larger starsAlice bioooze_and_pyrogens.jsAdds Bio-Ooze from Frackin’ Universe and several heat-producing materials from various games’ modsAlice @@ -225,18 +226,18 @@ Food & Cooking aChefsDream.jsAdds more foods, animals, tools and many other cooking related items. Updates can be found in this YouTube PlaylistSquareScreamYT aChefsDream_beta.jsBeta testing for aChefsDream. The code can be found on GitHubSquareScreamYT -bananas.jsAdds bananas and banana plantsAlice +bananas.jsAdds bananas and banana plantsAlice' +CherrySoda.jsAdds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.guzzo86 community_desserts.jsAdds various desserts from community suggestionsTisquares greenitemsandmore.jsAdds various green things, including apples and more foodzonneschijn7 ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) lemonade.jsAdds lemons and lemonadepersonman / baconthemyth morefoodsmod.jsAdds more foodsClide4 pizzasstuff.jsNew animals, foods, and plants_ilikepizza_ +potato_chips.jsPotato chips.guzzo86 sbstuff.jsAdds many foodsstefanblox soups.jsAdds seasoning and souppixelegend4 weAllScreamFor.jsAdds ice cream toppingsrottenEgghead -CherrySoda.jsAdds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda.guzzo86 -GrapeSoda.jsAdds materials to make Grape soda. Methylanthranilate + seltzer = Grapesoda.guzzo86 Life & Nature advanced_colonies.jsAdds davlers, creatures with complex coloniesDaviStudios diff --git a/mods/10kelements.js b/mods/10kelements.js index 957d4088..711a4ea6 100644 --- a/mods/10kelements.js +++ b/mods/10kelements.js @@ -74,6 +74,14 @@ if (Math.abs(settings.randomcount) == settings.randomcount){ }else(elements["element_"+i].desc += (" or " + reaction)) } } + for (var reaction in elements["element_" + i].reactions){ + if (elements[elements["element_"+i].reactions[reaction].elem1].category == "tools" || elements[elements["element_"+i].reactions[reaction].elem2].category == "tools"){ + console.log(i + " makes a tool...? when it touches " + reaction) + if (!elements["element_"+i].desc){ + elements["element_" + i].desc = "This breaks the laws of physics if it touches " + reaction + }else(elements["element_"+i].desc += (" or " + reaction)) + } + } } } else { for (var i = 1; i <= settings.randomcount; i++){ diff --git a/mods/CherrySoda.js b/mods/CherrySoda.js index 98475765..2561b7e7 100644 --- a/mods/CherrySoda.js +++ b/mods/CherrySoda.js @@ -65,7 +65,7 @@ elements.cherrysoda_gas = { temp: 169, } elements.cherrysoda_ice = { - color: "BF4F9C", + color: "#BF4F9C", behavior: behaviors.wALL, category: "solids", state: "solid", diff --git a/mods/GrapeSoda.js b/mods/GrapeSoda.js index 5716aeac..1d67b1db 100644 --- a/mods/GrapeSoda.js +++ b/mods/GrapeSoda.js @@ -45,7 +45,6 @@ elements.anthranilicacid = { tempLow: -98, burn: 100, burnTime: 100, - burnInto: "carbondioxide" } elements.methanolice = { @@ -68,6 +67,8 @@ elements.anthranilicacid = { stateLow: "methanol", tempLow: 64, temp: 84, + burn: 100, + burnTime: 100, } elements.methylanthranilate = { color: "#FFFBBA", diff --git a/mods/cash_n_more.js b/mods/cash_n_more.js new file mode 100644 index 00000000..e267a8f7 --- /dev/null +++ b/mods/cash_n_more.js @@ -0,0 +1,58 @@ +elements.cash = { + color: "#00e600", + behavior: behaviors.POWDER, + category: "powders", +}; + +delete elements.paper; +delete elements.sponge; + +elements.sponge = { + color: "#ffff1a", + behavior: behaviors.SOLID, + category: "solids", + tool: function(pixel) { + if (pixel.element == "water") { + pixel.element = "wet_sponge" + } + }, +}; + +elements.wet_sponge = { + color: "#cccc00", + behavior: behaviors.SOLID, + category: "solids", +}; + + +elements.paper = { + color: "#ffffff", + behavior: behaviors.SOLID, + category: "solids", +}; + +elements.shredded_paper = { + color: "#ffffff", + behavior: behaviors.POWDER, + category: "powders", +}; + +elements.shredded_cash = { + color: "#004d00", + behavior: behaviors.POWDER, + category: "powders", +}; + +elements.shredder = { + color: "#08b508", + behavior: behaviors.SOLID, + tool: function(pixel) { + if (pixel.element == "cash") { + pixel.element = "shredded_cash" + }, + if (pixel.element == "paper") { + pixel.element = "shredded_money" + } + }, + category: "tools", +}; diff --git a/mods/colorLED.js b/mods/colorLED.js new file mode 100644 index 00000000..ec3a4622 --- /dev/null +++ b/mods/colorLED.js @@ -0,0 +1,38 @@ +elements.led = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: "#666666", + colorOn: "#ffffff", + category: "machines", + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + conduct: 1, + breakInto: "glass_shard", + tick: (pixel) => { + if (pixel.start == pixelTicks) { + pixel.normalColor = pixel.color; + pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 120).join(", ")})`; + } + if (pixel.color != pixel.normalColor && !pixel.charge && !pixel.chargeCD) { + pixel.normalColor = pixel.color; + pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 120).join(", ")})`; + } + if (pixel.charge) { + pixel.color = pixel.chargeColor; + } else { + pixel.color = pixel.normalColor; + } + } +} + +pixelColorPick = (function() { + const oldPixelColorPick = pixelColorPick; + + return function(pixel, customColor = null) { + if (pixel.element == "led" && pixel.color && !customColor) return pixel.color; + return oldPixelColorPick.apply(this, arguments); + } +})() \ No newline at end of file diff --git a/mods/colored_lightbulbs.js b/mods/colored_lightbulbs.js new file mode 100644 index 00000000..84f8ad85 --- /dev/null +++ b/mods/colored_lightbulbs.js @@ -0,0 +1,44 @@ +elements.colored_light_bulb = { + color: "#666666", + colorOn: "#ffffff", + behavior: behaviors.WALL, + category: "machines", + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_copper"], + conduct: 1, + breakInto: "glass_shard", + tick: function(pixel) { + if (pixel.start == pixelTicks) { + pixel.normalColor = pixel.color; + pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 150).join(", ")})`; + } + if (pixel.color != pixel.normalColor && !pixel.charge && !pixel.chargeCD) { + pixel.normalColor = pixel.color; + pixel.chargeColor = `rgb(${pixel.color.replace(/[rgb\(\)]/g, "").split(",").map(a => parseInt(a.trim()) + 150).join(", ")})`; + } + if (pixel.charge) { + pixel.color = pixel.chargeColor; + } else { + pixel.color = pixel.normalColor; + } + if (pixel.charge > 0) { + for (let i = 0; i < adjacentCoords.length; i++){ + let coord = adjacentCoords[i] + let x = coord[0]+pixel.x + let y = coord[1]+pixel.y + if (isEmpty(x, y)){ + //do crap to the pixel + createPixel("light", x, y,), + pixelMap[x][y].color = pixel.chargeColor + } + } + }} +} +pixelColorPick = (function() { + const oldPixelColorPick = pixelColorPick; + + return function(pixel, customColor = null) { + if (pixel.element == "colored_light_bulb" && pixel.color && !customColor) return pixel.color; + return oldPixelColorPick.apply(this, arguments); + } +})() diff --git a/mods/customtemptools.js b/mods/customtemptools.js new file mode 100644 index 00000000..62c8b239 --- /dev/null +++ b/mods/customtemptools.js @@ -0,0 +1,50 @@ +var ct = 100 + +elements.customtemp = { + color: ["#FF0000", "#FF6600", "#FFCC00", "#FFFF00", "#CCFF00", "#66FF00", "#00FF00", "#00FF66", "#00FFCC", "#00FFFF"], + onSelect: function() { + var answer4 = parseInt(prompt("Please input the desired temperature to reach.",(ct||undefined))); + if (!answer4) { return } + ct = answer4; + if (isNaN(answer4)) { + ct = 100 + } + }, + tool: function(pixel) { + pixel.temp = ct, + pixelTempCheck(pixel) + }, + category: "tools", +}; +elements.customheat = { + color: ["#FF0000", "#FFFFFF", "#FF0000"], + onSelect: function() { + var answer4 = parseInt(prompt("Please input the desired temperature increase per tick. (In celsius)",(ct||undefined))); + if (!answer4) { return } + ct = answer4; + if (isNaN(answer4)) { + ct = 100 + } + }, + tool: function(pixel) { + pixel.temp = pixel.temp + ct, + pixelTempCheck(pixel) + }, + category: "tools", +}; +elements.customcool = { + color: ["#0000FF", "#FFFFFF", "#0000FF"], + onSelect: function() { + var answer4 = parseInt(prompt("Please input the desired temperature decrease per tick. (In celsius)",(ct||undefined))); + if (!answer4) { return } + ct = answer4; + if (isNaN(answer4)) { + ct = 100 + } + }, + tool: function(pixel) { + pixel.temp = pixel.temp - ct, + pixelTempCheck(pixel) + }, + category: "tools", +}; diff --git a/mods/heatglow.js b/mods/heatglow.js index 8c8dabc0..2293bc77 100644 --- a/mods/heatglow.js +++ b/mods/heatglow.js @@ -3,7 +3,7 @@ function weightedAverage(num1, num2, weight){ } const heatfunc = function(pixel){ if (pixel.element != "metal_scrap" || eLists.metals.includes(pixel.scrapType) || !pixel.scrapType){{ - if (pixel.ogR == null || pixel.ogG == null || pixel.ogB == null || (pixel.element != pixel.ogElement && pixel.element == "metal_scrap") || (pixel.element != "metal_scrap" && pixel.ogElement == "metal_scrap")){ + if (pixel.ogR == null || pixel.ogG == null || pixel.ogB == null || (pixel.element != pixel.ogElement && pixel.element == "metal_scrap") || (pixel.element != "metal_scrap" && pixel.ogElement == "metal_scrap") || (pixel.element == "oxidized_copper" && pixel.ogElement == "copper")){ pixel.ogR = parseInt(pixel.color.slice(4, pixel.color.indexOf(',')), 10) pixel.ogG = parseInt(pixel.color.slice(pixel.color.indexOf(',') + 1, pixel.color.lastIndexOf(',')), 10) pixel.ogB = parseInt(pixel.color.slice(pixel.color.lastIndexOf(',') + 1, -1), 10) diff --git a/mods/potato_chips.js b/mods/potato_chips.js index e0de48f1..c1beeb75 100644 --- a/mods/potato_chips.js +++ b/mods/potato_chips.js @@ -4,10 +4,10 @@ elements.potato_chip = { density: 1350, color: ["#F7DD93", "#D8A44B"], category: "food", - desc: "Potato chip. Turns potato next to it into potato chip if temp is >= 104.", + desc: "Potato chip. Turns potato next to it into potato chip if temp is >= 104 - 180.", tick: function(pixel) { - if(pixelTicks - pixel.start >= 15) { + if(pixelTicks - pixel.start >= 10) { if (!isEmpty(pixel.x, pixel.y - 1, true)) { if (pixel.temp >= 104 && pixelMap[pixel.x][pixel.y - 1].element === "potato") { changePixel(pixelMap[pixel.x][pixel.y - 1], "potato_chip"); diff --git a/mods/texturepack.js b/mods/texturepack.js new file mode 100644 index 00000000..fdb9de06 --- /dev/null +++ b/mods/texturepack.js @@ -0,0 +1,94 @@ +if (!settings.texturepack){ + settings.texturepack = {} + saveSettings() +} +elements.clear_textures = { + color: "#dd0000", + onSelect: function(){ + var sure = prompt("Are you sure you wanna reset all texture data? Type \"yes\". Also, refresh once you've done this for the changes to apply!", "no"); + if (sure == "yes"){ + settings.texturepack = {} + saveSettings() + } + }, + canPlace: false, + category: "texture tools" +} +var addSave = null +elements.add_texture = { + color: elements.rainbow.color, + category: "texture tools", + canPlace: false, + onSelect: function(){ + var whoelement = prompt("What element would you like to change the texture of? Type no if this was a mistake.", (addSave||"no")) + if (whoelement != "no"){ + addSave = whoelement + var replacehm = prompt("Would you like to overwrite all textures or add? 1 for overwrite, 2 for add.", 2) + var colortodo = prompt("Hex code, please! Also, refresh once you've done this for the changes to apply!", "#ff0000") + if (replacehm == 1){ + if (!replacehm || !colortodo){return} + if (!settings.texturepack[whoelement]){settings.texturepack[whoelement] = []} + settings.texturepack[whoelement] = [colortodo] + elements[whoelement].color = settings.texturepack[whoelement] + saveSettings() + } else { + if (!replacehm || !colortodo){return} + if (!settings.texturepack[whoelement]){settings.texturepack[whoelement] = []} + settings.texturepack[whoelement].push(colortodo) + elements[whoelement].color = settings.texturepack[whoelement] + saveSettings() + } + } + } +} +elements.remove_a_texture = { + color: elements.void.color, + category: "texture tools", + canPlace: false, + onSelect: function(){ + var whoelement = prompt("What element would you like to change the texture of? Type no if this was a mistake.", "no") + if (whoelement != "no"){ + var replacehm = prompt("Would you like to delete all textures of the element or just one? Type 1 for all, 2 for just one.", 2) + var colortodo = prompt(("Ignore this if you chose 1. Index of the color you wanna delete. For reference, here are the current colors:" + settings.texturepack[whoelement]), 0) + if (replacehm == 1){ + delete settings.texturepack[whoelement] + saveSettings() + } else { + delete settings.texturepack[whoelement][colortodo] + elements[whoelement].color = settings.texturepack[whoelement] + saveSettings() + } + } + } +} +elements.list_all_textures = { + color: elements.mix.color, + category: "texture tools", + canPlace: false, + onSelect: function(){ + var whoelement = prompt("What element would you like to see the textures of?") + alert(whoelement + " has the following textures: " + settings.texturepack[whoelement]) + } +} +elements.texture_pack_share_or_load = { + color: elements.image.color, + category: "texture tools", + canPlace: false, + onSelect: function(){ + var whichSL = prompt("Would you like to copy the texture pack to your clipboard or load it from your clipboard? Type 1 for copy, 2 for load.", 1) + if (whichSL == 1){ + var text = JSON.stringify(settings.texturepack) + alert(text) + } else { + var text = prompt("Paste your texture pack here. It should be in the format of a JSON object.") + if (text){ + settings.texturepack = JSON.parse(text) + saveSettings() + } + } + } +} +if (settings.texturepack){ +for (var elementi in settings.texturepack){ + elements[elementi].color = settings.texturepack[elementi] +}} \ No newline at end of file