diff --git a/lang/cs.json b/lang/cs.json
index 6eb4758f..f9a632d1 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -23,7 +23,7 @@
"shock":"Šok",
"paint":"Malovat",
"sand":"Písek",
-"water":"Voda",
+"water":"Voda",
"salt_water":"Slaná_Voda",
"sugar_water":"Sladká_Voda",
"seltzer":"Minerální_Voda",
@@ -305,7 +305,7 @@
"crumb":"Drobek",
"baked_batter":"Dort",
"wheat":"Pšenice",
-"candy":"Sladkosti",
+"candy":"Sladkost",
"coffee_bean":"Kávové_Zrna",
"coffee_ground":"Mletá_Káva",
"nut":"Ořech",
@@ -444,7 +444,7 @@
"supernova":"Supernova",
"cook":"Vařit",
"incinerate":"Spálit",
-"room_temp":"Teplota_Pokoje",
+"room_temp":"Pokojová_Teplota",
"positron":"Pozitron",
"tnt":"TNT",
"c4":"C-4",
@@ -541,7 +541,11 @@
"tornado":"Tornádo",
"earthquake":"Zemětřesení",
"tsunami":"Tsunami",
-"blaster":"Blaster",
+"blaster":"Lazerová_Pistole",
"propane_ice":"Zrmzlý_Propan",
-"molten_caustic_potash":"Rozteklý_Potaš"
+"molten_caustic_potash":"Rozteklý_Potaš",
+"spider": "Pavouk",
+"web": "Pavučina",
+"rice": "Rýže",
+"midas_touch": "Midasův_Dotek"
}
diff --git a/lang/hu.json b/lang/hu.json
index 403e2fe5..b5df4c3e 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -548,7 +548,7 @@
"tsunami": "cunami",
"blaster": "plazmavető",
"propane_ice": "fagyott_propán",
-"molten_caustic_potash": "olvadt_kálium-hidroxid"
+"molten_caustic_potash": "olvadt_kálium-hidroxid",
"ectoplasm":"ektoplazma",
"soul":"lélek",
"tombstone":"sírkő",
diff --git a/lang/ru.json b/lang/ru.json
index 31e2c634..244f28be 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -479,7 +479,7 @@
"prop":"реквизит",
"salt_ice":"солёный лёд",
"sugar_ice":"сладкий лёд",
- "seltzer_ice":"селтизерный лёд",
+ "seltzer_ice":"минеральный лёд",
"dirty_ice":"грязный лёд",
"pool_ice":"лёд в бассейне",
"blood_ice":"кровяной лёд",
diff --git a/mod-list.html b/mod-list.html
index c00ede85..12e103bb 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -135,7 +135,7 @@
| velocity.js | Beta for explosion velocity, and later wind, which may come to the base game in the future | R74n |
| Tools & Settings |
-
+
| betaworldgen.js | adds a more advanced world generation to the game | Adora |
| betterModManager.js | Improvements to the Mod Manager | ggod |
| betterSettings.js | Adds additional settings and functionality | ggod |
@@ -186,7 +186,6 @@
| bioooze_and_pyrogens.js | Adds Bio-Ooze from Frackin’ Universe and several heat-producing materials from various games’ mods | Alice |
| boiling_things.js | Allows for various elements to be vaporized | Alice |
| bouncing_balls.js | Adds new types of balls that bounce accurately and roll. | Nekonico |
-| bromine.js | Adds bromine which emits an orange gas | Suss |
| chalcopyrite.js | Adds the chalcopyrite ore | Sophie |
| chem.js | Adds several chemistry and physics-related elements | lllllllllwith10ls |
| clf3.js | Adds Chlorine Trifluoride | Alice |
@@ -231,6 +230,7 @@
| flipflop.js | Toggleable switches; Explanation | Flix |
| fueled_generators.js | Fuel powered generators. |
| gameOfLife.js | Conway's Game of Life on a screen | ggod |
+| heatshield.js | adds heatshields, makes plasma cooler | Taterbob |
| logicgates.js | Adds predictable electricity and logic gates | nousernamefound |
| note_block.js | Adds musical Note Blocks | Alice |
| nousersthings.js | Destroyable machines, pipe variants, filters, and more | nousernamefound |
@@ -285,6 +285,7 @@
| biology.js | Adds various elements and functions that let you build your own organism. | Nekonico |
| cat.js | Adds cats and cat food | SquareScreamYT |
| cells.js | Adds several experimental edits of the Cell element | Alice |
+| children.js | Adds pesky little gremlins | Taterbob |
| colonies.js | Adds rockets that contain settlers to terraform a planet. | Nekonico |
| crimson.js | Adds elements relating to the Crimson from Terraria | Alice |
| dogs.js | Adds a simple dog and dog food | hedera-ivy |
@@ -323,6 +324,7 @@
| all_around_fillers.js | Adds directional Filler variants | idk73248 |
| allliquids.js | Made all elements liquids | Adora |
| amogus.js | Adds a small amogus structure | Alice |
+| bfdi.js | Adds several references to bfdi | Taterbob |
| citybuilding.js | Adds seeds that create miniature buildings and other city-related items | SquareScreamYT |
| collab_mod.js | Created by multiple people, adds random things | mrapple, ilikepizza, stefanblox |
| doom.js | As seen on TikTok - Select the Doom element to start, WASD | ggod |
diff --git a/mods/RF_transmitter_receiver.js b/mods/RF_transmitter_receiver.js
index 7dac97bd..fb3eef7a 100644
--- a/mods/RF_transmitter_receiver.js
+++ b/mods/RF_transmitter_receiver.js
@@ -4,7 +4,7 @@ let channelVar = "0";
// RF Transmitter Element
elements.rf_transmitter = {
color: "#142c47",
- category: "Machines",
+ category: "machines",
behavior: behaviors.WALL,
tempHigh: 250,
stateHigh: "dirt",
diff --git a/mods/bfdi.js b/mods/bfdi.js
new file mode 100644
index 00000000..421d4bcb
--- /dev/null
+++ b/mods/bfdi.js
@@ -0,0 +1,145 @@
+elements.abcdefghijklmon = {
+ color: "#c86b8f",
+ name: "myblueberryseed",
+ behavior: behaviors.POWDER,
+ reactions: {
+ "porcelain": { elem1: "grower", elem2: "porcelain"},
+},
+ state: "solid",
+ category: "bfdi",
+};
+elements.grower = {
+ color: "#00ff00",
+ name: "blueberry_plant",
+ behavior: [
+ "XX|CL AND CH:shower%10|XX",
+ "CR:blueberry%1|XX|CR:blueberry%1",
+ "XX|XX|XX"
+ ],
+ category: "bfdi",
+};
+elements.blueberry = {
+ color: "#5500aa",
+ behavior: [
+ "XX|XX|XX",
+ "XX|EX:20%1|XX",
+ "XX|XX|XX"
+],
+ category: "bfdi",
+};
+elements.shower = {
+ color: "#00aa00",
+ name: "blueberry_plant",
+ category: "bfdi"
+};
+elements.steel.breakInto = "fork"
+;
+elements.fork = {
+ color: "#999999",
+ ignore: "abcd",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "M2|DL AND M1|M2"
+ ],
+ state: "solid",
+ category: "bfdi",
+};
+elements.abcd = {
+ state: "gas",
+ name: "forkrepellent",
+ category: "bfdi",
+ stain: 0,
+ alpha: 0.4,
+ behavior: [
+ "XX|M1 AND ST|XX",
+ "M1 AND ST|XX|M1 AND ST",
+ "XX|M1 AND ST|XX"
+ ],
+};
+elements.cheesecake = {
+ state: "solid",
+ behavior: behaviors.POWDER,
+ color: "#ccbb77",
+ category: "bfdi",
+ reactions: {
+ "glass_shard": { elem1: "shardcake", elem2: null }
+ },
+};
+elements.baked_batter.reactions = {}
+elements.baked_batter.reactions.cheese_powder = { elem1: "cheesecake", elem2: null };
+elements.shardcake = {
+ state: "solid",
+ name: "cheesecake_with_shards",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|DL%5 AND M1|XX"
+ ],
+ color: Array ("#ccbb77","#5e807d"),
+ category: "bfdi",
+};
+elements.rocky = {
+ color: "#777777",
+ behavior: [
+ "XX|CR:barf|XX",
+ "CR:barf|XX|CR:barf",
+ "XX|CR:barf|XX"
+ ],
+ category: "bfdi",
+ reactions: {
+ "lava_barf": { elem1: null, elem2: "zombie_rocky" }
+ },
+};
+elements.barf = {
+ color: "#008800",
+ category: "bfdi",
+ ignore: Array("rocky", "zombie_rocky","cured_rocky"),
+ state: "liquid",
+ behavior: [
+ "XX|XX|XX",
+ "M2|XX|M2",
+ "M2|DL%30 AND M1|M2"
+ ],
+ tempHigh: 800,
+ stateHigh: "lava_barf",
+ reactions: {
+ "lava": { elem1: "lava_barf", elem2: null }
+ },
+};
+elements.lava_barf = {
+ color: "#ffaa00",
+ glow: 1,
+ state: "liquid",
+ ignore: Array("zombie_rocky","rocky","cured_rocky"),
+ behavior: [
+ "XX|CH:rocky>zombie_rocky AND CH:barf>lava_barf%5|XX",
+ "M2 AND CH:rocky>zombie_rocky AND CH:barf>lava_barf%5|XX|M2 AND CH:rocky>zombie_rocky AND CH:barf>lavabarf%5",
+ "XX|CH:rocky>zombie_rocky AND CH:barf>lava_barf%5 AND M1|XX"
+ ],
+ category: "bfb",
+};
+elements.zombie_rocky = {
+ color: "#005500",
+ category: "bfdi",
+ behavior: [
+ "XX|CH:rocky>zombie_rocky AND CR:lava_barf|XX",
+ "CH:rocky>zombie_rocky AND CR:lava_barf|XX|CH:rocky>zombie_rocky AND CR:lava_barf",
+ "XX|CH:rocky>zombie_rocky AND CR:lava_barf|XX"
+ ],
+ reactions: {
+ "water": { elem1: null, elem2: "cured_rocky" }
+ },
+};
+elements.cured_rocky = {
+ color: "#777777",
+ category: "bfdi",
+ behavior: [
+ "XX|CR:barf AND CH:zombie_rocky>cured_rocky|XX",
+ "CR:barf AND CH:zombie_rocky>cured_rocky|XX|CR:barf AND CH:zombie_rocky>cured_rocky",
+ "XX|CR:barf AND CH:zombie_rocky>cured_rocky|XX"
+ ],
+ reactions: {
+ "zombie_rocky": { elem1: "cured_rocky", elem2: "cured_rocky" }
+ },
+};
diff --git a/mods/bromine.js b/mods/bromine.js
deleted file mode 100644
index c43307c5..00000000
--- a/mods/bromine.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// coded by suss, so the code probably sucks
-// lmao it only adds three elements, actually this is my first mod that even ADDS elements
-// wait, nobody even reads the mod code, so im essentially talking to myself
-// oh well :(
-
-elements.bromine = {
- color: "#4e0e00",
- behavior: [
- "XX|CR:bromine_vapor%5|XX",
- "M2|XX|M2",
- "XX|M1|XX",
- ],
- category: "liquids",
- viscosity: 1.5,
- state: "liquid",
- density: 3102,
- tempLow: -7,
- stateLow: "bromine_ice",
-};
-
-elements.bromine_ice = {
- color: "#350900",
- behavior: behaviors.WALL,
- category: "states",
- state: "solid",
- density: 3102,
- tempHigh: -7,
- stateHigh: "bromine",
- temp: -10,
- hidden: true,
-};
-
-elements.bromine_vapor = {
- color: "#d48846",
- behavior: behaviors.GAS,
- category: "gases",
- state: "gas",
- density: 7.59,
- hidden: true,
-}
\ No newline at end of file
diff --git a/mods/children.js b/mods/children.js
new file mode 100644
index 00000000..0a73aba4
--- /dev/null
+++ b/mods/children.js
@@ -0,0 +1,14 @@
+elements.child = {
+ color: "#ffaa55",
+ behavior: [
+ "M2|M2|M2",
+ "M2|XX|M2",
+ "XX|M1|XX"
+],
+ tempHigh: 100,
+ stateHigh: "cooked_meat",
+ category: "life",
+ reactions: {
+ "herb": { elem1: "blood", elem2: "explosion"}
+},
+};
diff --git a/mods/cs_expanded.js b/mods/cs_expanded.js
new file mode 100644
index 00000000..8f83ff87
--- /dev/null
+++ b/mods/cs_expanded.js
@@ -0,0 +1,31 @@
+// Made by Kopalecek (also known as davistudios or sylas)
+
+/*
+
+If you would want to use this to make stuff like de_expanded.js, just put "Based off cs_expanded" in a comment at the top. And remove the previous comments in general.
+
+Ryan, if you see this, it would be great if you add ids for stuff like controls, the "Sandboxels Introduction" or menu items in like settings or mods.
+
+*/
+
+const reqCode = 'cs' // Change this to the lang code you want.
+
+const menu = { // Just change the values in this.
+ pauseButton: 'Pauza',
+ resetButton: 'Reset',
+ replaceButton: 'Nahradit',
+ elemSelectButton: 'VE',
+ tpsButton: 'TZS',
+ infoButton: 'Info',
+ savesButton: 'Uložené',
+ modsButton: 'Módy',
+ settingsButton: 'Nastavení',
+ changelogButton: 'Změny',
+}
+
+
+if (langCode == reqCode) {
+ Object.keys(menu).forEach(key => {
+ document.getElementById(key).textContent = menu[key]
+ })
+}
\ No newline at end of file
diff --git a/mods/drills.js b/mods/drills.js
index 3c496f73..14384f7f 100644
--- a/mods/drills.js
+++ b/mods/drills.js
@@ -15,590 +15,356 @@
+ void drill missile L, R, U & D
+ drills.js info (drills_info) element to 'mods' category
~ fixed steel/diamond/void drill R & steel/diamond/void drill missile R crashing upon border collision
-~ made steel/diamond/void drill missile L, R, U & D explode upon border contact
+~ made steel/diamond/void drill missile L, R, U & D explode upon contact with canvas edge
~ committed
- Version: 1.0.1
+ Version: 1.0.1 (No Hardness Fix)
@NecroticPhantom
~ fixed steel/diamond/void drill L, R, U & D + steel/diamond/void drill missile L, R, U & D not breaking pixels with no listed hardness
+ Version: 2.0.0 (Drills Revamped (AKA Reverse Drills))
+@NecroticPhantom
++ maxSize: 1 to all drills without it
+~ rewrote drills and functions so no longer need L, R, U and D versions of all drills
+- L, R, U and D versions of all drills
+~ rewrote drills and functions so no longer need 1 function per drill material
+- drill material-specific functions
+- drill color variables
+~ changed breakInto and stateHigh for most drills
+~ changed density, tempHigh and conductivity of all drills
+~ renamed 'drills.js_info' element to 'drills.js'
++ steel reverse drill
++ diamond reverse drill
++ void reverse drill
+
+ Version 2.0.1 (Drills Not Functioning Hotfix)
+@NecroticPhantom
+~ Fixed all drills not drilling
+~ Slight change to drill missile function (no functional difference)
+~ Fixed reverse drills not creating pixels while drilling sometimes and when moving vertically
*/
-drills_mod_desc_Colour = "#000000"
-steel_drill_Colour = "#71797e"
-steel_drill_missile_Colour = ["#71797e", "#ff0000"];
-diamond_drill_Colour = "#03fcec"
-diamond_drill_missile_Colour = ["#03fcec", "#ff0000"];
-void_drill_Colour = "#262626"
-void_drill_missile_Colour = ["#262626", "#ff0000"];
-
-
-
-behaviors.SELFDELETE = [
- "XX|XX|XX",
- "XX|DL|XX",
- "XX|XX|XX",
-];
-
-
+// info element
elements.drills_info = {
- color: drills_mod_desc_Colour,
- name: "drills.js_info",
+ color: "#000000",
+ name: "drills.js",
category: "Mods",
behavior: behaviors.SELFDELETE,
maxSize: 1,
tool: function(pixel) {},
onSelect: function(pixel) {
- let info1stMod = "The drills.js mod adds different kinds of drills to a new 'drills' category.\n\nMod made by: Necrotic_Phantom. \n With help from: voidapex11."
- alert(info1stMod)
+ let mod_info = "The drills.js mod adds different kinds of drills to a new 'drills' category.\n\nMod made by: Necrotic_Phantom. \n With help from: voidapex11."
+ alert(mod_info)
return
},
-};
+};
-steel_drill_function = function(pixel, dif_x, dif_y) {
- dif_x = dif_x-pixel.x
- dif_y = dif_y-pixel.y
- if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
- pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
- if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
- if (elements[pxl.element].hardness <= 0.8) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- }
- else if (elements[pxl.element].hardness == undefined) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
+// functions
+drill_function = function(pixel, dif_x, dif_y) {
+ if (!outOfBounds(pixel.x + dif_x, pixel.y + dif_y)) {
+ if (!isEmpty(pixel.x + dif_x, pixel.y + dif_y)) {
+ pxl = pixelMap[pixel.x + dif_x][pixel.y + dif_y];
+ if (elements[pxl.element].hardness <= elements[pixel.element].hardness || elements[pxl.element].hardness == undefined) {
+ deletePixel(pxl.x, pxl.y);
};
};
- tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
+ tryMove(pixel, pixel.x + dif_x, pixel.y + dif_y);
};
- doDefaults(pixel);
-}
+};
-elements.steel_drill_LEFT = {
- color: steel_drill_Colour,
- tick: function(pixel) {
- steel_drill_function(pixel,pixel.x-1,pixel.y);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "steel", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_steel", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
-}
-
-elements.steel_drill_RIGHT = {
- color: steel_drill_Colour,
- tick: function(pixel) {
- steel_drill_function(pixel,pixel.x+1,pixel.y);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "steel", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
-}
-
-elements.steel_drill_UP = {
- color: steel_drill_Colour,
- tick: function(pixel) {
- steel_drill_function(pixel,pixel.x,pixel.y-1);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "steel", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
-}
-
-elements.steel_drill_DOWN = {
- color: steel_drill_Colour,
- tick: function(pixel) {
- steel_drill_function(pixel,pixel.x,pixel.y+1);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "steel", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
-}
-
-
-
-steel_drill_missile_function = function(pixel, dif_x, dif_y) {
- dif_x = dif_x-pixel.x
- dif_y = dif_y-pixel.y
- if (pixel.die <= 0) {
- deletePixel(pixel.x, pixel.y)
+drill_missile_function = function(pixel, dif_x, dif_y) {
+ if (pixel.die == 0) {
+ deletePixel(pixel.x, pixel.y);
explodeAt(pixel.x, pixel.y, 15);
- return true
+ return;
};
- if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
- pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
- if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
- pixel.primed = true
- if (elements[pxl.element].hardness <= 0.8) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- }
- else if (elements[pxl.element].hardness == undefined) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
+ if (!outOfBounds(pixel.x + dif_x, pixel.y + dif_y)) {
+ pxl = pixelMap[pixel.x + dif_x][pixel.y + dif_y];
+ if (!isEmpty(pixel.x + dif_x, pixel.y + dif_y)) {
+ pixel.primed = true;
+ if (elements[pxl.element].hardness <= elements[pixel.element].hardness || elements[pxl.element].hardness == undefined) {
+ deletePixel(pxl.x, pxl.y);
};
}
else if (pixel.primed) {
- pixel.die--
- return true
+ pixel.die--;
+ return;
};
- tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
+ tryMove(pixel, pixel.x + dif_x, pixel.y + dif_y);
}
- else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
- deletePixel(pixel.x, pixel.y)
+ else if (outOfBounds(pixel.x + dif_x, pixel.y + dif_y)) {
+ deletePixel(pixel.x, pixel.y);
explodeAt(pixel.x, pixel.y, 15);
};
- doDefaults(pixel);
-}
+};
-elements.steel_drill_missile_LEFT = {
- color: steel_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- steel_drill_missile_function(pixel,pixel.x-1,pixel.y);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.steel_drill_missile_RIGHT = {
- color: steel_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- steel_drill_missile_function(pixel,pixel.x+1,pixel.y);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.steel_drill_missile_UP = {
- color: steel_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- steel_drill_missile_function(pixel,pixel.x,pixel.y-1);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.steel_drill_missile_DOWN = {
- color: steel_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- steel_drill_missile_function(pixel,pixel.x,pixel.y+1);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.8,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-
-
-diamond_drill_function = function(pixel, dif_x, dif_y) {
- dif_x = dif_x-pixel.x
- dif_y = dif_y-pixel.y
- if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
- pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
- if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
- if (elements[pxl.element].hardness <= 0.99) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- }
- else if (elements[pxl.element].hardness == undefined) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
+reverse_drill_function = function(pixel, dif_x, dif_y, drill_element) {
+ if (!outOfBounds(pixel.x + dif_x, pixel.y + dif_y)) {
+ if (!isEmpty(pixel.x + dif_x, pixel.y + dif_y)) {
+ pxl = pixelMap[pixel.x + dif_x][pixel.y + dif_y];
+ if (elements[pxl.element].hardness <= elements[pixel.element].hardness || elements[pxl.element].hardness == undefined) {
+ deletePixel(pxl.x, pxl.y);
};
};
- tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
+ tryMove(pixel, pixel.x + dif_x, pixel.y + dif_y);
};
- doDefaults(pixel);
-}
+ if (isEmpty(pixel.x - dif_x, pixel.y - dif_y)) {
+ createPixel(drill_element, pixel.x - dif_x, pixel.y - dif_y);
+ };
+};
-elements.diamond_drill_LEFT = {
- color: diamond_drill_Colour,
+
+
+// elements
+elements.steel_drill = {
+ color: "#71797e",
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ },
tick: function(pixel) {
- diamond_drill_function(pixel,pixel.x-1,pixel.y);
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ drill_function(pixel, pixel.x_direction, pixel.y_direction);
+ },
+ category: "Drills",
+ breakInto: ["metal_scrap", "steel", "iron", "tin"],
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "molten_steel", "molten_iron", "molten_tin"],
+ density: 7850,
+ hardness: 0.8,
+ conduct: 0.42,
+ state: "solid",
+ maxSize: 1,
+};
+
+elements.diamond_drill = {
+ color: "#03fcec",
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ },
+ tick: function(pixel) {
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ drill_function(pixel, pixel.x_direction, pixel.y_direction);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
- density: 10000,
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "diamond", "molten_iron", "molten_tin"],
+ density: 3515,
hardness: 0.99,
- conduct: 1,
+ conduct: 0.01,
state: "solid",
-}
+ maxSize: 1,
+};
-elements.diamond_drill_RIGHT = {
- color: diamond_drill_Colour,
+elements.void_drill = {
+ color: "#262626",
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ },
tick: function(pixel) {
- diamond_drill_function(pixel,pixel.x+1,pixel.y);
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ drill_function(pixel, pixel.x_direction, pixel.y_direction);
+ },
+ category: "Drills",
+ breakInto: ["metal_scrap", "void", "iron", "tin"],
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "void", "molten_iron", "molten_tin"],
+ density: 7850,
+ hardness: 1,
+ conduct: 0.01,
+ state: "solid",
+ maxSize: 1,
+};
+
+elements.steel_drill_missile = {
+ color: ["#71797e", "#ff0000"],
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ die: -1,
+ primed: false,
+ },
+ tick: function(pixel) {
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ if (pixel.die == -1) {
+ pixel.die = Number(prompt("How many ticks (after priming) until explosion (enter as number)? "));
+ };
+ drill_missile_function(pixel, pixel.x_direction, pixel.y_direction);
+ },
+ category: "Drills",
+ breakInto: ["metal_scrap", "steel", "iron", "tin"],
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "molten_steel", "molten_iron", "molten_tin"],
+ density: 7850,
+ hardness: 0.8,
+ conduct: 0.42,
+ state: "solid",
+ maxSize: 1,
+};
+
+elements.diamond_drill_missile = {
+ color: ["#03fcec", "#ff0000"],
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ die: -1,
+ primed: false,
+ },
+ tick: function(pixel) {
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ if (pixel.die == -1) {
+ pixel.die = Number(prompt("How many ticks (after priming) until explosion (enter as number)? "));
+ };
+ drill_missile_function(pixel, pixel.x_direction, pixel.y_direction);
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
- density: 10000,
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "diamond", "molten_iron", "molten_tin"],
+ density: 3515,
hardness: 0.99,
- conduct: 1,
+ conduct: 0.01,
state: "solid",
-}
+ maxSize: 1,
+};
-elements.diamond_drill_UP = {
- color: diamond_drill_Colour,
+elements.void_drill_missile = {
+ color: ["#262626", "#ff0000"],
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ die: -1,
+ primed: false,
+ },
tick: function(pixel) {
- diamond_drill_function(pixel,pixel.x,pixel.y-1);
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ if (pixel.die == -1) {
+ pixel.die = Number(prompt("How many ticks (after priming) until explosion (enter as number)? "));
+ };
+ drill_missile_function(pixel, pixel.x_direction, pixel.y_direction);
+ },
+ category: "Drills",
+ breakInto: ["metal_scrap", "void", "iron", "tin"],
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "void", "molten_iron", "molten_tin"],
+ density: 7850,
+ hardness: 1,
+ conduct: 0.01,
+ state: "solid",
+ maxSize: 1,
+};
+
+elements.steel_reverse_drill = {
+ color: "#e79717", //reverse drill colours are the hexidecimal for the origional drills but reversed
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ },
+ tick: function(pixel) {
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ reverse_drill_function(pixel, pixel.x_direction, pixel.y_direction, "steel");
+ },
+ category: "Drills",
+ breakInto: ["metal_scrap", "steel", "iron", "tin"],
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "molten_steel", "molten_iron", "molten_tin"],
+ density: 7850,
+ hardness: 0.8,
+ conduct: 0.42,
+ state: "solid",
+ maxSize: 1,
+};
+
+elements.diamond_reverse_drill = {
+ color: "#cecf30", //reverse drill colours are the hexidecimal for the origional drills but reversed
+ properties: {
+ x_direction: 0,
+ y_direction: 0,
+ },
+ tick: function(pixel) {
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
+ };
+ };
+ reverse_drill_function(pixel, pixel.x_direction, pixel.y_direction, "diamond");
},
category: "Drills",
breakInto: ["metal_scrap", "diamond", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
- density: 10000,
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "diamond", "molten_iron", "molten_tin"],
+ density: 3515,
hardness: 0.99,
- conduct: 1,
- state: "solid",
-}
-
-elements.diamond_drill_DOWN = {
- color: diamond_drill_Colour,
- tick: function(pixel) {
- diamond_drill_function(pixel,pixel.x,pixel.y+1);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "diamond", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "carbon_dioxide", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 0.99,
- conduct: 1,
- state: "solid",
-}
-
-
-
-diamond_drill_missile_function = function(pixel, dif_x, dif_y) {
- dif_x = dif_x-pixel.x
- dif_y = dif_y-pixel.y
- if (pixel.die <= 0) {
- deletePixel(pixel.x, pixel.y)
- explodeAt(pixel.x, pixel.y, 15);
- return true
- };
- if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
- pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
- if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
- pixel.primed = true
- if (elements[pxl.element].hardness <= 0.99) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- }
- else if (elements[pxl.element].hardness == undefined) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- };
- }
- else if (pixel.primed) {
- pixel.die--
- return true
- };
- tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
- }
- else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
- deletePixel(pixel.x, pixel.y)
- explodeAt(pixel.x, pixel.y, 15);
- };
- doDefaults(pixel);
-}
-
-elements.diamond_drill_missile_LEFT = {
- color: diamond_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- diamond_drill_missile_function(pixel,pixel.x-1,pixel.y);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.99,
- conduct: 1,
+ conduct: 0.01,
state: "solid",
maxSize: 1,
-}
+};
-elements.diamond_drill_missile_RIGHT = {
- color: diamond_drill_missile_Colour,
+elements.void_reverse_drill = {
+ color: "#626262", //reverse drill colours are the hexidecimal for the origional drills but reversed
properties: {
- die: 5,
- primed: false,
+ x_direction: 0,
+ y_direction: 0,
},
tick: function(pixel) {
- diamond_drill_missile_function(pixel,pixel.x+1,pixel.y);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.99,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.diamond_drill_missile_UP = {
- color: diamond_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- diamond_drill_missile_function(pixel,pixel.x,pixel.y-1);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.99,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.diamond_drill_missile_DOWN = {
- color: diamond_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- diamond_drill_missile_function(pixel,pixel.x,pixel.y+1);
- },
- category: "Drills",
- density: 10000,
- hardness: 0.99,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-
-
-void_drill_function = function(pixel, dif_x, dif_y) {
- dif_x = dif_x-pixel.x
- dif_y = dif_y-pixel.y
- if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
- pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
- if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
- if (elements[pxl.element].hardness <= 1) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- }
- else if (elements[pxl.element].hardness == undefined) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
+ if (pixel.x_direction == 0 && pixel.y_direction == 0) {
+ pixel.x_direction = Number(prompt("Move left, right or neither (Type: -1, 1 or 0 respectively)? "));
+ if (pixel.x_direction == 0) {
+ pixel.y_direction = Number(prompt("Move up or down (Type: -1 or 1 respectively)? "));
};
};
- tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
- };
- doDefaults(pixel);
-}
-
-elements.void_drill_LEFT = {
- color: void_drill_Colour,
- tick: function(pixel) {
- void_drill_function(pixel,pixel.x-1,pixel.y);
+ reverse_drill_function(pixel, pixel.x_direction, pixel.y_direction, "void");
},
category: "Drills",
breakInto: ["metal_scrap", "void", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
- density: 10000,
+ tempHigh: 1455.5,
+ stateHigh: ["molten_aluminium", "void", "molten_iron", "molten_tin"],
+ density: 7850,
hardness: 1,
- conduct: 1,
- state: "solid",
-}
-
-elements.void_drill_RIGHT = {
- color: void_drill_Colour,
- tick: function(pixel) {
- void_drill_function(pixel,pixel.x+1,pixel.y);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "void", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 1,
- conduct: 1,
- state: "solid",
-}
-
-elements.void_drill_UP = {
- color: void_drill_Colour,
- tick: function(pixel) {
- void_drill_function(pixel,pixel.x,pixel.y-1);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "void", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 1,
- conduct: 1,
- state: "solid",
-}
-
-elements.void_drill_DOWN = {
- color: void_drill_Colour,
- tick: function(pixel) {
- void_drill_function(pixel,pixel.x,pixel.y+1);
- },
- category: "Drills",
- breakInto: ["metal_scrap", "void", "iron", "tin"],
- tempHigh: 10000,
- stateHigh: ["molten_aluminum", "void", "molten_iron", "molten_tin"],
- density: 10000,
- hardness: 1,
- conduct: 1,
- state: "solid",
-}
-
-
-
-void_drill_missile_function = function(pixel, dif_x, dif_y) {
- dif_x = dif_x-pixel.x
- dif_y = dif_y-pixel.y
- if (pixel.die <= 0) {
- deletePixel(pixel.x, pixel.y)
- explodeAt(pixel.x, pixel.y, 15);
- return true
- };
- if (!outOfBounds(pixel.x+dif_x,pixel.y+dif_y)) {
- pxl = pixelMap[pixel.x+dif_x][pixel.y+dif_y]
- if (!isEmpty(pixel.x+dif_x,pixel.y+dif_y)) {
- pixel.primed = true
- if (elements[pxl.element].hardness <= 1) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- }
- else if (elements[pxl.element].hardness == undefined) {
- delete pixelMap[pixel.x+dif_x][pixel.y+dif_y];
- };
- }
- else if (pixel.primed) {
- pixel.die--
- return true
- };
- tryMove(pixel,pixel.x+dif_x,pixel.y+dif_y);
- }
- else if (outOfBounds(pixel.x+dif_x, pixel.y+dif_y)) {
- deletePixel(pixel.x, pixel.y)
- explodeAt(pixel.x, pixel.y, 15);
- };
- doDefaults(pixel);
-}
-
-elements.void_drill_missile_LEFT = {
- color: void_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- void_drill_missile_function(pixel,pixel.x-1,pixel.y);
- },
- category: "Drills",
- density: 10000,
- hardness: 1,
- conduct: 1,
+ conduct: 0.01,
state: "solid",
maxSize: 1,
-}
-
-elements.void_drill_missile_RIGHT = {
- color: void_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- void_drill_missile_function(pixel,pixel.x+1,pixel.y);
- },
- category: "Drills",
- density: 10000,
- hardness: 1,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.void_drill_missile_UP = {
- color: void_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- void_drill_missile_function(pixel,pixel.x,pixel.y-1);
- },
- category: "Drills",
- density: 10000,
- hardness: 1,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
-
-elements.void_drill_missile_DOWN = {
- color: void_drill_missile_Colour,
- properties: {
- die: 5,
- primed: false,
- },
- tick: function(pixel) {
- void_drill_missile_function(pixel,pixel.x,pixel.y+1);
- },
- category: "Drills",
- density: 10000,
- hardness: 1,
- conduct: 1,
- state: "solid",
- maxSize: 1,
-}
+};
\ No newline at end of file
diff --git a/mods/heatshield.js b/mods/heatshield.js
new file mode 100644
index 00000000..6ef26a71
--- /dev/null
+++ b/mods/heatshield.js
@@ -0,0 +1,30 @@
+elements.ablative_shield = {
+ color: "#d6999c",
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ tempHigh: 2760,
+ stateHigh: "smoke",
+ conduct: 0.01,
+};
+elements.molten_reusable = {
+ color: "#ff9900",
+ behavior: behaviors.MOLTEN,
+ category: "states",
+ state: "liquid",
+ hidden: 1,
+ temp: 1261,
+ tempLow: 1259,
+ stateLow: "reusable_shield",
+};
+elements.reusable_shield = {
+ color: "#3c3c3c",
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ tempHigh: 1260,
+ stateHigh: "molten_reusable",
+ conduct: 0.01,
+};
+elements.plasma.temp = 2800
+;
diff --git a/mods/noblegas.js b/mods/noblegas.js
index ff9aadfd..c8b60a34 100644
--- a/mods/noblegas.js
+++ b/mods/noblegas.js
@@ -106,7 +106,7 @@ elements.frozen_xenon = {
elements.radon = {
color: elements.neon.color,
behavior: behaviors.GAS,
- colorOn: ["#3dd3cb","#32f7e7","#31c0a8"],
+ colorOn: ["#d33d83","#f7327d","#c0316d"],
category: "gases",
state: "gas",
conduct: 0.8,
@@ -156,7 +156,7 @@ elements.radon = {
elements.liquid_radon = {
color: elements.neon.color,
behavior: behaviors.LIQUID,
- colorOn: ["#3dd3cb","#32f7e7","#31c0a8"],
+ colorOn: ["#d33d83","#f7327d","#c0316d"],
category: "states",
state: "liquid",
tempHigh: -58,
@@ -170,7 +170,7 @@ elements.liquid_radon = {
elements.frozen_radon = {
color: elements.neon.color,
behavior: behaviors.WALL,
- colorOn: ["#3dd3cb","#32f7e7","#31c0a8"],
+ colorOn: ["#d33d83","#f7327d","#c0316d"],
category: "states",
state: "solid",
tempHigh: -68,
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 8dab88c2..f0ef3563 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -625,7 +625,7 @@ elements.e_pipe = {
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
if (isEmpty(x,y)) {
- createPixel("brick",x,y);
+ createPixel("pipe_wall",x,y);
pixelMap[x][y].color = pixelColorPick(pixel,"#808080");
}
}
@@ -870,7 +870,7 @@ elements.channel_pipe = {
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
if (isEmpty(x,y)) {
- createPixel("brick",x,y);
+ createPixel("pipe_wall",x,y);
pixelMap[x][y].color = pixelColorPick(pixel,"#808080");
}
}
@@ -1110,7 +1110,7 @@ elements.bridge_pipe = {
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
if (isEmpty(x,y)) {
- createPixel("brick",x,y);
+ createPixel("pipe_wall",x,y);
pixelMap[x][y].color = pixelColorPick(pixel,"#808080");
}
}
diff --git a/mods/nuf2.js b/mods/nuf2.js
new file mode 100644
index 00000000..f34364f0
--- /dev/null
+++ b/mods/nuf2.js
@@ -0,0 +1,92 @@
+//Help me find bugs in my code, ok? I am just doing another test
+elements.sand.name = "EEEEEEEEEEE_pick up my ass c0ck loldoewockecooffdsvifsjvjfso";
+elements.sand.behavior = behaviors.WALL;
+
+elements.water.name = "NEWater";
+elements.water.behavior = behaviors.POWDER;
+
+elements.unknown.name = "Player_456";
+elements.unknown.behavior = behaviors.POWDER;
+
+elements.dirty_water.name = "Water";
+elements.dirty_water.behavior = behaviors.WALL;
+
+elements.paint.name = "Gibberish_Typer";
+elements.paint.behavior = behaviors.LIQUID;
+
+elements.primordial_soup.name = "annoying_space";
+elements.primordial_soup.behavior = behaviors.WALL;
+
+//I want to make this a real element soon
+elements.diamond.name = "Gravitite";
+elements.diamond.behavior = behaviors.AGPOWDER;
+elements.diamond.color = ["#f7adda","#ff80f2","#c421a3","#981a92","#ec32e3","#f062f0"];
+
+elements.permafrost.name = "Frozen_testicle";
+//why did I make this - Fivey1777
+
+elements.mudstone.name = "Testicle";
+
+elements.molten_dirt.name = "Molten_testicle";
+
+elements.stained_glass.name = "Wisp_3";
+elements.glass.name = "Wisp_1";
+elements.rad_glass.name = "Wisp_2";
+
+elements.molten_stained_glass.name = "Wisp_3";
+elements.molten_glass.name = "Wisp_1";
+elements.molten_rad_glass.name = "Wisp_2";
+
+elements.dirt.name = "Jiggly_ball";
+elements.mud.name = "Wet_ball";
+elements.rock.name = "Gabbro";
+elements.rock_wall.name = "Gabbro_wall";
+elements.rime.name = "Ice_extension";
+elements.steam.name = "NEWSteam";
+elements.erase.name = "Pick_up";
+
+elements.sand_exploder = {
+ color: "#e6d577",
+ category: "tools",
+ tool: function(pixel) {
+ if (pixel.element == "sand") {
+ pixel.element = "explosion"
+ },
+ buttonGlow: "#00d5ff"
+ };
+
+elements.sell = {
+ color: ["#fff0b5","#ffe680","#c48821","#986a1a","#eca832","#f0bb62"],
+ tool: function(pixel) {
+ pixel.element = "gold_coin",
+ },
+ category: "tools",
+ desc: "Sells item in exchange for high-quality Gold Coins",
+};
+
+elements.dark_web_sell = {
+ color: ["#f7adda","#ff80f2","#c421a3","#981a92","#ec32e3","#f062f0"],
+ tool: function(pixel) {
+ pixel.element = "diamond",
+ },
+ category: "tools",
+ desc: "Sells item in exchange for high-quality Gravitite"
+};
+
+elements.buy = elements.bless;
+elements.tomato_sauce = elements.blood;
+elements.electron = elements.electric;
+elements.protium = elements.hydrogen;
+elements.neutrino = elements.neutron;
+elements.up_quark_up_quark_up_quark = elements.warp;
+elements.up_quark_up_quark_down_quark = elements.proton;
+elements.up_quark_down_quark_down_quark = elements.neutron;
+elements.down_quark_down_quark_down_quark = elements.warp;
+elements.strange_quark = elements.strange_matter;
+elements.antiquark = elements.antimatter;
+elements.charm_quark = elements.porcelain_shard;
+elements.top_quark = elements.porcelain_shard;
+elements.bottom_quark = elements.porcelain_shard;
+
+
+//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\vvhy am i doing this idk #1a24bc
diff --git a/mods/ru_expanded.js b/mods/ru_expanded.js
new file mode 100644
index 00000000..17c8e3d1
--- /dev/null
+++ b/mods/ru_expanded.js
@@ -0,0 +1,25 @@
+// Based off cs_expanded
+
+// Made by Kopalecek (also known as davistudios or sylas) and Bufka2011
+
+const reqCode = 'ru' // Change this to the lang code you want.
+
+const menu = { // Just change the values in this.
+ pauseButton: 'Пауза',
+ resetButton: 'Сброс',
+ replaceButton: 'Замена',
+ elemSelectButton: 'Э',
+ tpsButton: 'TPS',
+ infoButton: 'Инфо',
+ savesButton: 'Сохранения',
+ modsButton: 'Моды',
+ settingsButton: 'Настройки',
+ changelogButton: 'Чейнджлог',
+}
+
+
+if (langCode == reqCode) {
+ Object.keys(menu).forEach(key => {
+ document.getElementById(key).textContent = menu[key]
+ })
+}