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!
@@ -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: Help • Tips • Mods • Mobile • Offline • Privacy
Thanks to: Serioustar, ggod, Midi_png, personman, fnl4y, PitsPower, swagg boi, kaeud, WeiChei, Trent, u2ce
Translation by R74n
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.js Adds the ability to save and load scenes from files (See the info page of the element) Alice
selective_paint.js Adds a tool to paint only selected elements SquareScreamYT
stripe_paint.js Adds a tool to paint with stripes Alice
+texturepack.js Adds tools that let you create and share custom texture packs nousernamefound
the_ground.js Adds several rock types, worldgen settings, and gemstones Alice
Science & Chemistry
alcohol.js Adds methanol, (iso-)propanol, and butanol Alice
alkahest.js Adds the alkahest, a liquid which dissolves anything Alice
-aScientistsWish.js Adds things that related to science, especially radiation Carbon Monoxide, CPU
+aScientistsWish.js Adds things that related to science, especially radiation Carbon Monoxide, salmonfishy
bettermetalscrap.js Allows metal scrap to be melted back into its original material nousernamefound
bigger_star_spawners.js Adds spawners for larger stars Alice
bioooze_and_pyrogens.js Adds Bio-Ooze from Frackin’ Universe and several heat-producing materials from various games’ mods Alice
@@ -225,18 +226,18 @@
Food & Cooking
aChefsDream.js Adds more foods, animals, tools and many other cooking related items. Updates can be found in this YouTube Playlist SquareScreamYT
aChefsDream_beta.js Beta testing for aChefsDream. The code can be found on GitHub SquareScreamYT
-bananas.js Adds bananas and banana plants Alice
+bananas.js Adds bananas and banana plants Alice '
+CherrySoda.js Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda. guzzo86
community_desserts.js Adds various desserts from community suggestions Tisquares
greenitemsandmore.js Adds various green things, including apples and more food zonneschijn7
ketchup_mod.js Adds a bunch of ketchup related stuff, plus a few other condiments Nubo318 (main dev), Devi, Alice (contributors)
lemonade.js Adds lemons and lemonade personman / baconthemyth
morefoodsmod.js Adds more foods Clide4
pizzasstuff.js New animals, foods, and plants _ilikepizza_
+potato_chips.js Potato chips. guzzo86
sbstuff.js Adds many foods stefanblox
soups.js Adds seasoning and soup pixelegend4
weAllScreamFor.js Adds ice cream toppings rottenEgghead
-CherrySoda.js Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda. guzzo86
-GrapeSoda.js Adds materials to make Grape soda. Methylanthranilate + seltzer = Grapesoda. guzzo86
Life & Nature
advanced_colonies.js Adds davlers, creatures with complex colonies DaviStudios
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