diff --git a/mod-list.html b/mod-list.html
index 23f82cb3..a38b5fb2 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -219,7 +219,9 @@
| 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 |
+| 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 |
diff --git a/mods/Science_mod.js b/mods/Science_mod.js
index 0b14d1a3..47f8b3b4 100644
--- a/mods/Science_mod.js
+++ b/mods/Science_mod.js
@@ -1,6 +1,6 @@
// Science mod for Sandboxels
// (Inspired by survival.js)
-// Build 11
+// Build 17
// By: Lucifer (@a_british_proto (Discord))
// If there is anything you want to suggest or there's a bug then just dm me on discord
// Todo:
@@ -19,6 +19,7 @@ if (!settings.Science_mod) {
"Beryllium": 9.223372036854776e+18,
"Boron": 9.223372036854776e+18,
"Carbon": 9.223372036854776e+18,
+ "Nitrogen": 9.223372036854776e+18,
"Oxygen": 9.223372036854776e+18,
"Flourine": 9.223372036854776e+18,
"Neon": 9.223372036854776e+18,
@@ -1086,52 +1087,303 @@ element.Oganesson = {
// Substance proporties (These are the properties of the substances, not the elements These properties
// use hidden:true as you don't start with these but instead have to craft them):
-substance.Polystyrene = {
- behavior: behaviors.WALL,
- color:"FFFFFF",
- category:"land",
+// I replaced all of it with this because it might get in the way in future updates
+
+substance.Silver_Hexafluoroarsenate = {
+ behavior: behaviours.WALL,
+ color:"FFFFFE",
+ category:"lands",
state:"solid",
hidden:true
}
-substance.Styrene = {
+substance.Silver_Tetrafluoroborate = {
+ behavior: behaviors.POWDER,
+ color: "FAF9F6",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+substance.Silver_Bromide = {
+ behavior: behaviors.WALL,
+ color: "FDFD96",
+ category: "lands",
+ state: "solid",
+ hidden: true
+}
+
+substance.Silver_Bromate = {
+ behavior: behaviors.POWDER,
+ colour: "FFFFFF",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+substance.Silver_Picrate_Monohydrate = {
+ behavior: behaviors.WALL,
+ color: "E4D99F",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Chloride = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Perchlorate_Hydrate = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+// I can't believe i almost forgor about the "."
+subtance.Silver_Perchlorate_Monohydrate = {
+ behavior: behaviors.POWDER,
+ color: "FFFFFF",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+substance.Silver_Chlorite = {
+ behavior: behaviors.WALL,
+ colour: "FFFF00",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Chlorate ={
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Perchlorate = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Fluoride = {
+ behavior: behaviors.WALL,
+ color: "9B7A01",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+// Basically the same as Silver_Floride but instead the second version
+subtance.Silver_Difluoride = {
+ behavior: behaviors.WALL,
+ color: "9B7A01",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+// Only just realised that this had spaces :skull:
+substance.Silver_Hydrogen_Sluoride = {
+ // I'm guessing that this is a liquid
behavior: behaviors.LIQUID,
- color:"FFFFED",
- category:"liquids",
- state:"liquid",
+ color: "FFFFFF",
+ category: "liquid",
+ state: "liquid",
hidden:true
}
-substance.Cinnamaldehyde = {
- behavior: behaviors.LIQUID,
- color:"FDFD96",
- category:"liquids",
- state:"liquid",
+// Why are a bunch of these just silver compounds? Really weird :/
+subtance.Silver_Hexafluorophosphate = {
+ behavior: behaviors.POWDER,
+ color: "FFFFFF",
+ category: "lands",
+ state: "powder",
hidden:true
}
-substance.Acetone = {
- behavior: behaviors.LIQUID,
- color:"DADEDF",
- category:"liquids",
- state:"liquid",
+substance.Silver_Hexafluoroantimonate = {
+ behavior: behaviors.WALL,
+ color: "FFFDD0",
+ category: "lands",
+ state: "solid",
hidden:true
}
-substance.Methane = {
- behavior: behaviors.GAS,
- color:"C1C7C9",
- category:"gases",
- state:"gas",
+// There's a purple crystal version and a brown powder version
+// Why does this sound like something you'd get at a posh (maybe Italian) restruant (without the "01" and the "_")
+subtance.Silver_permanganate_01 = {
+ behavior: behaviours.WALL,
+ color: "800080",
+ category: "lands",
+ state: "solid",
hidden:true
}
-substance.Ethane = {
- behavior: behaviors.GAS,
- color:"C1C7C9",
- category:"gases",
- state:"gas",
+subtance.Silver_permanganate_02 = {
+ behavior: behaviors.POWDER,
+ color: "964B00",
+ category: "lands",
+ state: "powder",
hidden:true
}
-// Doing more tmrw
+substance.Silver_Vandium_Trioxide = {
+ behavior: behaviors.WALL,
+ color: "FFFF00",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+// Why is this fun? How is this not torture? This is line 1247! (at the time I am making this comment)
+
+// I think there's two silver iodides I'm just not so sure (and I ain't editing this after)
+// Nvm it's only one , I got silver iodide and silver iodate mixed up :skull:
+subtance.Silver_Iodide = {
+ behavior: behaviors.POWDER,
+ color: "E4D99F",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+substance.Silver_Iodate = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden: true
+}
+
+// I was confused at first on why there were two silver nitrates, but now I understand
+substance.Silver_Nitrate_01 = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Nitrate_02 = {
+ behavior: behaviors.POWDER,
+ color: "FFFFFF",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+subtance.Silver_Azide = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+// This one is powder and crystals
+substance.Silver_Oxzide_01 = {
+ behavior: behaviors.POWDER,
+ color: "000001",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+substance.Silver_Oxzide_02 = {
+ behavior: behaviors.WALL,
+ color: "000001",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Metaphospahte = {
+ behavior: behaviors.WALL,
+ color: "FFFF00",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Perrhenate = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Acetylide = {
+ behavior: behaviors.WALL,
+ color: "C0C0C0",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Chromate = {
+ behavior: behaviors.POWDER,
+ color: "A52A2A",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+substance.Silver_Dichromate = {
+ behavior: behaviors.WALL,
+ color: "A52A2A",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Subfluoride = {
+ behavior: behaviors.WALL,
+ color: "CD7F32",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Sulfide = {
+ behavior: behaviors.WALL,
+ color: "3f3f3f",
+ category: "lands",
+ state: "solid",
+ hidden:true
+}
+
+substance.Silver_Oxzide = {
+ behavior: behaviors.POWDER,
+ color: "000002",
+ category: "lands",
+ state: "powder",
+ hidden:true
+}
+
+// Editing this later on when I get back home
+substance.Silver_Sulfate = {
+ behavior: behaviors.WALL,
+ color: "FFFFFF",
+ category: "lands"
+ state: "solid",
+ hidden:true
+}
+
+// I done this on my school computers :skull:
+// doing more later
+
+// I accidentally pressed Ctrl+V instead of Ctrl+C so it deleted my work D:
diff --git a/mods/UAMM.js b/mods/UAMM.js
index bb229509..bf134799 100644
--- a/mods/UAMM.js
+++ b/mods/UAMM.js
@@ -15,7 +15,7 @@ elements.rubidium = {
var coord = squareCoords[i];
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
- if(!isEmpty(x, y, true)){
+ if (!isEmpty(x, y, true)){
var otherPixel = pixelMap[x][y]
if (otherPixel.element == "liquid_ammonia"){foundelem1 = true; break}
}
@@ -24,7 +24,7 @@ elements.rubidium = {
var coord = squareCoords[i];
var x = pixel.x+coord[0];
var y = pixel.y+coord[1];
- if(!isEmpty(x, y, true)){
+ if (!isEmpty(x, y, true)){
var otherPixel = pixelMap[x][y]
if (otherPixel.element == "oxygen"){foundelem2 = true; break}
}
@@ -122,11 +122,21 @@ elements.radiocesium = {
tempHigh: 29,
stateHigh: "liquid_radiocesium",
density: 1873,
+ tick: function (pixel) {
+ if (Math.random()<0.007) {
+ if (Math.random()<0.5) {
+ changePixel(pixel, "barium")
+ }
+ else {
+ changePixel(pixel, "radiobarium")
+ }
+ }
+ },
reactions: {
"water": {func: (pixel1) => {pixel1.burning=true;pixel1.burnStart=pixelTicks},
elem1: ["rad_steam", "fallout"], elem2: "explosion"}
}
-}
+};
elements.liquid_radiocesium = {
color: ["#e8dcc1", "#d4c6a5", "#bfbaae", "#f5f1e9"],
@@ -136,21 +146,270 @@ elements.liquid_radiocesium = {
tempLow: 28,
stateLow: "radiocesium",
density: 1842,
+ tick: function (pixel) {
+ if (Math.random()<0.007) {
+ if (Math.random()<0.5) {
+ changePixel(pixel, "barium")
+ }
+ else {
+ changePixel(pixel, "radiobarium")
+ }
+ }
+ },
reactions: {
"water": {func: (pixel1) => {pixel1.burning=true;pixel1.burnStart=pixelTicks},
elem1: ["rad_steam", "fallout"], elem2: "explosion"}
}
-}
+};
-elements.lithium = {
- color: ["#e3a814", "#dbab32", "#e8bc4f", "#fabf2d"],
+elements.barium = {
+ color: ["#1e1e1e", "#353535", "#4e4e4e", "#696969"],
behavior: behaviors.POWDER,
category: "powders",
state: "solid",
- fireColor: "#8c21de",
- burn: 1,
- burnTime: 500,
- tempHigh: 29,
- stateHigh: "liquid_cesium",
- density: 534,
+ tempHigh: 730,
+ stateHigh: "liquid_barium",
+ density: 3510,
+ reactions: {
+ "water": {elem1: "barium_hydroxide", elem2: "pop"}
+ }
+};
+
+elements.liquid_barium = {
+ color: ["#1e1e1e", "#353535", "#4e4e4e", "#696969"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "liquid",
+ tempLow: 729,
+ stateLow: "barium",
+ density: 3338
}
+
+elements.radiobarium = {
+ color: ["#1e1e1e", "#353535", "#4e4e4e", "#696969"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ density: 3510,
+ tick: function (pixel) {
+ if (Math.random()<0.007) {
+ changePixel(pixel, "barium")
+ for (var i = 0; i < squareCoords.length; i++) {
+ var coord = squareCoords[i];
+ var x = pixel.x+coord[0];
+ var y = pixel.y+coord[1];
+ var rays = 0;
+ if (isEmpty(x, y)){
+ createPixel("gamma_ray", x, y)
+ rays += 1
+ if (rays == 2) {
+ break
+ }
+ }
+ }
+ }
+ }
+};
+
+elements.barium_hydroxide = {
+ color: ["#f4f4f4", "#ffffff", "#ebebeb", "#e5e5e5"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ density: 3510
+}
+
+elements.gamma_ray = {
+ color: "#ffffff",
+ behavior: [
+ "XX|XX|XX",
+ "XX|DL%5|XX",
+ "XX|XX|XX",
+ ],
+ hidden: true,
+ temp: 1000,
+ state: "gas",
+ density: 0.00001,
+ ignoreAir: true,
+ tick: behaviors.BOUNCY
+};
+
+elements.lithium = {
+ color: ["#e8e8e8", "#f5f5f5", "#c9c9c9", "#d4d4d4"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "solid",
+ tempHigh: 180.5,
+ stateHigh: "liquid_lithium",
+ density: 534,
+ tick: function (pixel){
+ var otherPixel;
+ 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(Math.random()<0.003) {
+ changePixel(pixel, "dull_lithium")
+ }
+ }
+ if (!isEmpty(x, y, true)) {
+ otherPixel = pixelMap[x][y];
+ if (otherPixel.element != "mineral_oil") {
+ if (otherPixel.element != "lithium" && otherPixel.element != "dull_lithium" && otherPixel.element != "tarnished_lithium") {
+ if(Math.random()<0.0007) {
+ changePixel(pixel, "dull_lithium")
+ }
+ }
+ }
+ }
+ }
+ },
+ reactions: {
+ "water": {elem1: "lithium_hydroxide", elem2: "hydrogen", temp2: 400},
+ "hydrogen": {elem1:"lithium_hydride", elem2: null, chance: 0.5}
+ }
+};
+
+elements.dull_lithium = {
+ color: ["#d4d4d4", "#e3e3e3", "#b3b3b3", "#bfbfbf"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ tempHigh: 180.5,
+ stateHigh: "liquid_lithium",
+ density: 534,
+ tick: function (pixel){
+ var otherPixel;
+ 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(Math.random()<0.003) {
+ changePixel(pixel, "dull_lithium")
+ }
+ }
+ if (!isEmpty(x, y, true)) {
+ otherPixel = pixelMap[x][y];
+ if (otherPixel.element != "mineral_oil") {
+ if (otherPixel.element != "lithium" && otherPixel.element != "dull_lithium" && otherPixel.element != "tarnished_lithium") {
+ if(Math.random()<0.0007) {
+ changePixel(pixel, "dull_lithium")
+ }
+ }
+ }
+ }
+ }
+ },
+ reactions: {
+ "water": {elem1: "lithium_hydroxide", elem2: "hydrogen", temp2: 400},
+ "hydrogen": {elem1:"lithium_hydride", elem2: null, chance: 0.5}
+ }
+};
+
+elements.tarnished_lithium = {
+ color: ["#212121", "#303030", "#0d0d0d", "#404040"],
+ behavior: behaviors.POWDER,
+ state: "solid",
+ hidden: true,
+ tempHigh: 180.5,
+ stateHigh: "liquid_lithium"
+};
+
+elements.liquid_lithium = {
+ color: ["#e8e8e8", "#f5f5f5", "#c9c9c9", "#d4d4d4"],
+ behavior: behaviors.LIQUID,
+ hidden: true,
+ state: "liquid",
+ tempLow: 179.5,
+ stateLow: "lithium",
+ density: 511.7
+};
+
+elements.lithium_hydroxide = {
+ color: ["#ffffff", "#f1f1f1", "#e7e7e7", "#ededed"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ tempHigh: 180.5,
+ stateHigh: "liquid_lithium",
+ density: 1540,
+};
+
+elements.lithium_hydride = {
+ color: ["#8a8a8a", "#b5b5b5", "#bbbbbb"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ density: 820,
+ tick: function (pixel){
+ var otherPixel;
+ 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)){
+ var chance = Math.random()
+ if(Math.random()<0.003) {
+ if (chance<0.3) {
+ changePixel(pixel, "lithium_hydroxide")
+ }
+ else if (chance>0.3 && chance<0.7) {
+ changePixel(pixel, "lithium_oxide")
+ }
+ else {
+ changePixel(pixel, "lithium_carbonate")
+ }
+ }
+ }
+ if (!isEmpty(x, y, true)) {
+ otherPixel = pixelMap[x][y];
+ if (otherPixel.element != "mineral_oil") {
+ if (otherPixel.element != "lithium" && otherPixel.element != "dull_lithium" && otherPixel.element != "tarnished_lithium") {
+ var chance = Math.random()
+ if(Math.random()<0.0007) {
+ if (chance<0.3) {
+ changePixel(pixel, "lithium_hydroxide")
+ }
+ else if (chance>0.3 && chance<0.7) {
+ changePixel(pixel, "lithium_oxide")
+ }
+ else {
+ changePixel(pixel, "lithium_carbonate")
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+};
+
+elements.lithium_oxide = {
+ color: ["#ffffff", "#ececec", "#dbdbdb"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ density: 2013,
+ reactions: {
+ "water": {elem1: "lithium_hydroxide", elem2: "pop", chance: 0.2},
+ "carbon_dioxide": {elem1: "lithium_carbonate", elem2: null}
+ }
+};
+
+elements.lithium_carbonate = {
+ color: ["#ffffff", "#e0e0e0", "#c9c8c8"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ state: "solid",
+ density: 2110
+};
+
+elements.mineral_oil = {
+ color: ["#cdf6fa", "#e6fdff", "#bff9ff", "#f5feff"],
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ category: "liquids",
+ density: 870,
+};
\ No newline at end of file
diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js
index ac55b359..02fe97cd 100644
--- a/mods/aChefsDream.js
+++ b/mods/aChefsDream.js
@@ -3,12 +3,14 @@ Created by SquareScreamYT/sqec <@918475812884344852>
Thanks to RealerRaddler <@914371295561535508>, Alice <@697799964985786450>, nousernamefound <@316383921346707468>, Adora the Transfem <@778753696804765696>, ryan(R74n) <@101070932608561152> and Fioushemastor <@738828785482203189> for helping :)
Compatibility with plants.js coming soon
Works well with community_desserts.js
+Beta testing at aChefsDream_beta.js or SquareScreamYT/aChefsDream.js on github
-v1.13
+v1.13.7
you can support me at my youtube: https://youtube.com/@sqec
Upcoming Features:
+- pudding/cream
- extract tool
- cinnamon
- spring onions
@@ -21,7 +23,6 @@ Upcoming Features:
- stainless steel
- pepper plants
- hot chocolate
-- cows and beef
- celery
- kiwis
- guavas
@@ -31,7 +32,9 @@ Upcoming Features:
- dates
- figs
- avocados
-- apricots and plums
+- apricots and almonds (roasted)
+- hazelnuts
+- plums
- curry/chicken tikka masala
- raisins
- peaches
@@ -41,9 +44,13 @@ Upcoming Features:
- squids
- tofu
- miso
-- juice reaction with milk makes average color
- juice reaction with other juices
- jackfruit
+- fruit soda (any juice + co2 or seltzer)
+- rambutan
+- shrimp/prawn meat
+- sheep, goats, mutton, wool/fabric, filter
+- filter (like in nousersthing.js)
Changelog (v1.0)
- added chickens
@@ -441,6 +448,25 @@ Changelog (v1.13)
+Changelog (v1.13.5)
+ - added hard jelly
+ - soda can mix colors
+ - added soda jelly
+ - added fanta (orange juice + carbon dioxide)
+
+
+
+
+Changelog (v1.13.7)
+ - rename nut to peanut
+
+
+
+
+
+
+
+
*/
/*
@@ -483,25 +509,28 @@ elements.knife = {
if(cutInto instanceof Array) { cutInto = cutInto[Math.floor(Math.random() * cutInto.length)] };
//change pixel into the (chosen) element
//changePixel(pixel, cutInto)
-
- //var cutIntoEmit = elements[pixel.element].cutIntoEmit;
- //if (!cutIntoEmit) { return };
- //if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
- //var thiselement = pixel.element;
if (shiftDown) {
if (Math.random() < 0.5) {
changePixel(pixel, cutInto)
- //if (elements[thiselement].cutIntoEmit && Math.random() < 0.5 && isEmpty(pixel.x,pixel.y-1)) {
- // createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
- //}
+ var cutIntoEmit = elements[pixel.element].cutIntoEmit;
+ if (!cutIntoEmit) { return };
+ if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
+ var thiselement = pixel.element;
+ if (elements[thiselement].cutIntoEmit && Math.random() < 0.7 && isEmpty(pixel.x,pixel.y-1)) {
+ createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
+ }
}
}
else if (!shiftDown) {
if (Math.random() < 0.1) {
changePixel(pixel, cutInto)
- //if (elements[thiselement].cutIntoEmit && Math.random() < 0.5 && isEmpty(pixel.x,pixel.y-1)) {
- // createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
- //}
+ var cutIntoEmit = elements[pixel.element].cutIntoEmit;
+ if (!cutIntoEmit) { return };
+ if(cutIntoEmit instanceof Array) { cutIntoEmit = cutIntoEmit[Math.floor(Math.random() * cutIntoEmit.length)] };
+ var thiselement = pixel.element;
+ if (elements[thiselement].cutIntoEmit && Math.random() < 0.4 && isEmpty(pixel.x,pixel.y-1)) {
+ createPixel(elements[thiselement].cutIntoEmit,pixel.x,pixel.y-1);
+ }
}
}
},
@@ -5268,7 +5297,7 @@ elements.onion = {
density: 1050,
cutInto: "cut_onion",
breakInto:"onion_powder",
- //cutIntoEmit: "stench",
+ cutIntoEmit: "stench",
}
elements.cut_onion = {
color: "#dcc5ed",
@@ -7756,3 +7785,62 @@ elements.raw_beef = {
"fire": {elem1: "barbecued_beef"}
}
};
+
+elements.juice.reactions.milk = { elem1:"fruit_milk", elem2:null, chance:0.05, func: function(pixel1, pixel2){
+ let newrgb = interpolateRgb(getRGB('rgb(250,250,250)'), getRGB(pixel2.color), 0.25);
+ pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+}}
+elements.juice.reactions.cream = { elem1:"fruit_milk", elem2:null, chance:0.05, func: function(pixel1, pixel2){
+ let newrgb = interpolateRgb(getRGB('rgb(250,250,250)'), getRGB(pixel2.color), 0.25);
+ pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+}}
+elements.soda.reactions.soda = {
+ func: function(pixel1, pixel2){
+ if(pixel1.color != pixel2.color){
+ if(Math.floor(Math.random() * 1000) == 1){
+ let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.5);
+ pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+ pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+ }
+ }
+ }
+ }
+elements.juice.reactions.soda = {
+ chance:70,
+ func: function(pixel1, pixel2){
+ if(pixel1.color != pixel2.color){
+ if(Math.floor(Math.random() * 1000) == 1){
+ let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.5);
+ changePixel(pixelMap[pixel1.x][pixel1.y],"soda")
+ pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+ pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+ }
+ }
+ }
+}
+if (!elements.orange_juice.reactions) { elements.orange_juice.reactions = {} }
+elements.orange_juice.reactions.seltzer = { elem1:"soda", elem2:"foam", color1:"#ffb319"}
+elements.orange_juice.reactions.carbon_dioxide = { elem1:"soda", elem2:"foam", color1:"#ffb319"}
+elements.agar.reactions.soda = { elem1:"jelly", elem2:null, chance:0.05, func: function(pixel1, pixel2){
+ let newrgb = interpolateRgb(getRGB('rgb(250,250,250)'), getRGB(pixel2.color), 0.7);
+ pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`;
+}}
+elements.hard_jelly = {
+ color: "#c372b8",
+ behavior: behaviors.STURDYPOWDER,
+ tempHigh: 200,
+ stateHigh: ["smoke","sugar"],
+ category: "food",
+ state: "solid",
+ density: 1245,
+ isFood: true,
+ hidden: true,
+ temp: 0
+}
+elements.jelly.stateLow = "hard_jelly"
+elements.jelly.stateLowColorMultiplier = 1.2
+elements.jelly.temp = 0
+
+elements.nut.name = "peanut";
+elements.nut_meat.name = "peanut_meat";
+elements.nut_butter.name = "peanut_butter";
diff --git a/mods/aChefsDream_beta.js b/mods/aChefsDream_beta.js
new file mode 100644
index 00000000..a2524503
--- /dev/null
+++ b/mods/aChefsDream_beta.js
@@ -0,0 +1,12 @@
+// created by SquareScreamYT
+// please visit the repo to see the code
+
+fetch('https://raw.githubusercontent.com/SquareScreamYT/aChefsDream.js/main/aChefsDream.js')
+ .then(response => response.text())
+ .then(code => {
+ eval(code);
+ })
+ .catch(error => {
+ console.error('Error fetching or executing code:', error);
+ alert("There was an error loading aChefsDream beta. Please reload or check your internet. If not, please try again or use the stable one at aChefsDream.js.")
+ });
diff --git a/mods/chem.js b/mods/chem.js
index c1e151f3..73438729 100644
--- a/mods/chem.js
+++ b/mods/chem.js
@@ -1,17 +1,77 @@
-function acidReact(acid,element,product1,product2,temp)
+function toObject(color)
{
- if(product1 !== null)
- elements[acid].ignore.push(product1);
- if(product2 !== null)
- elements[acid].ignore.push(product2);
- elements[acid].ignore.push(element);
- elements[acid].reactions[element] = { "elem1": product1, "elem2": product2, "temp1": temp, "temp2": temp };
+ color = color.match(/\d+/g);
+ return color;
+}
+
+function react(elem1,elem2,product1,product2,temp)
+{
+ elements[elem1].reactions[elem2] = { "elem1": product1, "elem2": product2, "temp1": temp, "temp2": temp };
+}
+function acidReact(elem1,elem2,product1,product2,temp = 0)
+{
+ if(elements[elem1] && elements[elem1].ignore)
+ {
+ if(product1 !== null)
+ {
+ if(product1 instanceof Array)
+ {
+ elements[elem1].ignore.push(...product1);
+ }
+ }
+ if(product2 !== null)
+ {
+ if(product2 instanceof Array)
+ {
+ elements[elem1].ignore.push(...product2);
+ }
+ }
+ elements[elem1].ignore.push(elem2);
+ }
+ if(elements[elem2] && elements[elem2].ignore)
+ {
+ if(product1 !== null)
+ {
+ if(product1 instanceof Array)
+ {
+ elements[elem2].ignore.push(...product1);
+ }
+ }
+ if(product2 !== null)
+ {
+ if(product2 instanceof Array)
+ {
+ elements[elem2].ignore.push(...product2);
+ }
+ }
+ elements[elem2].ignore.push(elem1);
+ }
+ if(product1 !== null)
+ if(elements[product1] && elements[product1].ignore)
+ {
+ if(product2 !== null)
+ elements[product1].ignore.push(product2);
+ elements[product1].ignore.push(elem1);
+ elements[product1].ignore.push(elem2);
+ }
+ if(product2 !== null)
+ if(elements[product2] && elements[product2].ignore)
+ {
+ if(product1 !== null)
+ elements[product2].ignore.push(product1);
+ elements[product2].ignore.push(elem1);
+ elements[product2].ignore.push(elem2);
+ }
+ if(!elements[elem1].reactions[elem2])
+ {
+ elements[elem1].reactions[elem2] = { "elem1": product1, "elem2": product2, "temp1": temp, "temp2": temp };
+ }
}
elements.fluorine = {
color: "#FFFFBF",
behavior: behaviors.GAS,
- ignore: ["FOOF","solid_FOOF","oxygen","liquid_oxygen","oxygen_ice","chlorine","liquid_chlorine","liquid_hydrogen_fluoride","liquid_fluorine","fluorine","fluorine_ice","hydrogen_fluoride","hydrofluoric_acid","hydrofluoric_ice","hydrofluoric_acid_gas","fire","smoke","acid_gas","neutral_acid","acid","acid_cloud","water","salt_water","sugar_water","dirty_water","steam","gold","hydrogen","polytetrafluoroethylene","molten_polytetrafluoroethylene","tungsten","tungsten_hexafluoride"],
+ ignore: ["foof","solid_foof","oxygen","liquid_oxygen","oxygen_ice","chlorine","liquid_chlorine","liquid_hydrogen_fluoride","liquid_fluorine","fluorine","fluorine_ice","hydrogen_fluoride","hydrofluoric_acid","hydrofluoric_ice","hydrofluoric_acid_gas","fire","smoke","acid_gas","neutral_acid","acid","acid_cloud","water","salt_water","sugar_water","dirty_water","steam","gold","hydrogen","polytetrafluoroethylene","molten_polytetrafluoroethylene","tungsten","tungsten_hexafluoride"],
tick: function(pixel) {
let change = false;
for (let i = -1; i <= 1; i++) {
@@ -39,7 +99,7 @@ elements.fluorine = {
"pool_water": { "elem1": "hydrofluoric_acid", "elem2": "hydrogen" },
"primordial_soup": { "elem1": "hydrofluoric_acid", "elem2": "hydrogen" },
"neutral_acid": { "elem1": "hydrofluoric_acid", "elem2": "hydrogen" },
- "liquid_oxygen": { "elem1": "FOOF", "elem2": null },
+ "liquid_oxygen": { "elem1": "foof", "elem2": null },
"hydrogen": { "elem1": "hydrogen_fluoride", "elem2":"fire" },
"tungsten": { "elem1": "tungsten_hexafluoride", "elem2": "fire" },
},
@@ -54,7 +114,7 @@ elements.fluorine = {
elements.liquid_fluorine = {
color: "#ffff3b",
behavior: behaviors.LIQUID,
- ignore: ["FOOF","solid_FOOF","oxygen","liquid_oxygen","oxygen_ice","chlorine","liquid_chlorine","liquid_hydrogen_fluoride","liquid_fluorine","fluorine","fluorine_ice","hydrogen_fluoride","hydrofluoric_acid","hydrofluoric_ice","hydrofluoric_acid_gas","fire","smoke","acid_gas","neutral_acid","acid","acid_cloud","water","salt_water","sugar_water","dirty_water","steam","seltzer","pool_water","primordial_soup","gold","hydrogen","polytetrafluoroethylene","molten_polytetrafluoroethylene","tungsten","tungsten_hexafluoride"],
+ ignore: ["foof","solid_foof","oxygen","liquid_oxygen","oxygen_ice","chlorine","liquid_chlorine","liquid_hydrogen_fluoride","liquid_fluorine","fluorine","fluorine_ice","hydrogen_fluoride","hydrofluoric_acid","hydrofluoric_ice","hydrofluoric_acid_gas","fire","smoke","acid_gas","neutral_acid","acid","acid_cloud","water","salt_water","sugar_water","dirty_water","steam","seltzer","pool_water","primordial_soup","gold","hydrogen","polytetrafluoroethylene","molten_polytetrafluoroethylene","tungsten","tungsten_hexafluoride"],
tick: function(pixel) {
let change = false;
for (let i = -1; i <= 1; i++) {
@@ -133,7 +193,7 @@ elements.hydrofluoric_acid = {
},
state: "liquid",
category:"liquids",
- density: 1150,
+ density: 1020,
stain: 0.005,
tempHigh: 100,
stateHigh: "hydrofluoric_acid_gas",
@@ -259,6 +319,7 @@ elements.liquid_hydrogen_fluoride = {
"acid": { "elem1": "hydrofluoric_acid", "elem2": null },
},
state: "liquid",
+ category: "liquids",
hidden: true,
density: 1.7,
stain: 0.005,
@@ -268,10 +329,18 @@ elements.liquid_hydrogen_fluoride = {
tempLow: -83.6,
};
-elements.FOOF = {
+
+runAfterLoad(function() {
+ reactList("fluorine", eLists.WATER, { "elem1": "hydrofluoric_acid", "elem2": "hydrogen" });
+ reactList("liquid_fluorine", eLists.WATER, { "elem1": "hydrofluoric_acid", "elem2": "hydrogen" });
+ reactList("hydrogen_fluoride", eLists.WATER, { "elem1": "hydrofluoric_acid", "elem2": null });
+ reactList("liquid_hydrogen_fluoride", eLists.WATER, { "elem1": "hydrofluoric_acid", "elem2": null });
+});
+
+elements.foof = {
color: "#fa1e1e",
behavior: behaviors.LIQUID,
- ignore: ["FOOF","solid_FOOF","fluorine","liquid_fluorine","fluorine_ice","liquid_oxygen","oxygen_ice","oxygen","fire","polytetrafluoroethylene","molten_polytetrafluoroethylene"],
+ ignore: ["foof","solid_foof","fluorine","liquid_fluorine","fluorine_ice","liquid_oxygen","oxygen_ice","oxygen","fire","polytetrafluoroethylene","molten_polytetrafluoroethylene"],
tick: function(pixel) {
let change = false;
for (let i = -1; i <= 1; i++) {
@@ -303,13 +372,14 @@ elements.FOOF = {
tempHigh: -57,
stateHigh: ["oxygen","fluorine","explosion"],
tempLow: -154,
- stateLow: "solid_FOOF",
+ stateLow: "solid_foof",
+ reactions: {}
};
-elements.solid_FOOF = {
+elements.solid_foof = {
color: "#fa4a1e",
behavior: behaviors.WALL,
- ignore: ["FOOF","solid_FOOF","fluorine","liquid_fluorine","fluorine_ice","liquid_oxygen","oxygen_ice","oxygen","fire","polytetrafluoroethylene","molten_polytetrafluoroethylene"],
+ ignore: ["foof","solid_foof","fluorine","liquid_fluorine","fluorine_ice","liquid_oxygen","oxygen_ice","oxygen","fire","polytetrafluoroethylene","molten_polytetrafluoroethylene"],
tick: function(pixel) {
let change = false;
for (let i = -1; i <= 1; i++) {
@@ -339,14 +409,12 @@ elements.solid_FOOF = {
stain: 0.01,
temp: -160,
tempHigh: -154,
- stateHigh: "FOOF",
+ stateHigh: "foof",
};
-elements.tungsten_hexafluoride = {
- color: "#f5f57a",
- behavior: behaviors.GAS,
- reactions: {
+elements.tungsten_hexafluoride = {color: "#f5f57a",behavior: behaviors.GAS,tempLow: 17.1,state: "gas",category:"gases",density: 12.4,stain: 0.005,
+ reactions: {
"water": { "elem1": "hydrofluoric_acid", "elem2": "tungsten" },
"salt_water": { "elem1": "hydrofluoric_acid", "elem2": "tungsten" },
"sugar_water": { "elem1": "hydrofluoric_acid", "elem2": "tungsten" },
@@ -357,17 +425,11 @@ elements.tungsten_hexafluoride = {
"primordial_soup": { "elem1": "hydrofluoric_acid_gas", "elem2": "tungsten" },
"neutral_acid": { "elem1": "hydrofluoric_acid", "elem2": "tungsten" },
},
- tempLow: 17.1,
- state: "gas",
- category:"gases",
- density: 12.4,
- stain: 0.005,
};
-elements.liquid_tungsten_hexafluoride = {
- density: 4560,
- tempLow: 2.3,
-};
+
+
+elements.liquid_tungsten_hexafluoride = {density: 4560,tempLow: 2.3,};
if (!elements.acid.ignore) {
elements.acid.ignore = [];
@@ -388,6 +450,9 @@ let defaultAcidReactions = {
"borax": { "elem1":"neutral_acid", "elem2":null },
"ammonia": { "elem1":"neutral_acid", "elem2":null },
"bleach": { "elem1":"neutral_acid", "elem2":null },
+ "caustic_potash": { "elem1":"neutral_acid", "elem2":null },
+ "radium_hydroxide": { "elem1":"neutral_acid", "elem2":null },
+ "actinium_hydroxide": { "elem1":"neutral_acid", "elem2":null },
"water": { "elem1":null, "elem2":"dirty_water" },
"salt_water": { "elem1":null, "elem2":"water" },
"sugar_water": { "elem1":null, "elem2":"water" },
@@ -420,10 +485,12 @@ let defaultAcidGasReactions = {
"meat": { "elem2":"rotten_meat", "elem1":null, "chance":0.4 },
};
-acids = [elements.acid, elements.acid_gas, elements.fluorine, elements.liquid_fluorine, elements.hydrofluoric_acid, elements.hydrofluoric_acid_gas, elements.hydrogen_fluoride, elements.liquid_hydrogen_fluoride];
-ignoreAcid = [];
-trueAcids = ["acid", "hydrofluoric_acid"];
-trueAcidGases = ["acid_gas", "hydrofluoric_acid_gas"];
+
+eListAdd("CAUSTIC", ["acid", "acid_gas", "fluorine", "liquid_fluorine", "hydrofluoric_acid", "hydrofluoric_acid_gas", "hydrogen_fluoride", "liquid_hydrogen_fluoride"]);
+eListAdd("CAUSTICIGNORE", []);
+
+eListAdd("ACID", ["acid", "hydrofluoric_acid"]);
+eListAdd("ACIDGAS", ["acid_gas", "hydrofluoric_acid_gas"]);
if (enabledMods.includes("mods/generative_mods.js")) {
@@ -442,7 +509,7 @@ runAfterLoad(function() {
});
}
-function createAcid(name,reactions, gasReactions, color, categoryhidden, categoryhiddenGas, tempHigh, tempLowGas, tempLow, tempHighGas, density, densityGas)
+function createAcid(name,reactions, gasReactions, color, categoryhidden, categoryhiddenGas, tempHigh, tempLowGas, tempLow, tempHighGas, density, densityGas, type, compound = "acid")
{
elements[name] = {
forceAutoGen: true,
@@ -452,15 +519,13 @@ function createAcid(name,reactions, gasReactions, color, categoryhidden, categor
"DB%5 AND M2|XX|DB%5 AND M2",
"DB%5 AND M2|DB%10 AND M1|DB%5 AND M2",
],
- ignore: defaultAcidIgnore.concat(ignoreAcid),
+ ignore: defaultAcidIgnore.concat(eLists.CAUSTICIGNORE),
reactions: reactions,
category: "liquids",
hidden: categoryhidden,
tempHigh: tempHigh,
stateHigh: name + "_gas",
tempLow: tempLow,
- burn: 30,
- burnTime: 1,
state: "liquid",
density: density
}
@@ -470,7 +535,7 @@ function createAcid(name,reactions, gasReactions, color, categoryhidden, categor
"DB%5 AND M1|XX|DB%5 AND M1",
"DB%5 AND M1|DB%10 AND M1|DB%5 AND M1",
],
- ignore: defaultAcidGasIgnore.concat(ignoreAcid),
+ ignore: defaultAcidGasIgnore.concat(eLists.CAUSTICIGNORE),
reactions: gasReactions,
category: "gases",
hidden: categoryhiddenGas,
@@ -479,8 +544,6 @@ function createAcid(name,reactions, gasReactions, color, categoryhidden, categor
tempLow: tempLowGas,
stateLow: name,
temp: tempLowGas + 20,
- burn: 30,
- burnTime: 1,
state: "gas",
density: densityGas,
}
@@ -502,30 +565,179 @@ function createAcid(name,reactions, gasReactions, color, categoryhidden, categor
{
elements[name+"_gas"].reactions[name+"_gas"]= { "elem1": null, "elem2": "acid_cloud", "chance":0.3, "y":[0,12], "setting":"clouds" };
}
- acids.push(elements[name], elements[name+"_gas"]);
+ eLists.CAUSTIC.push(name, name+"_gas");
acidIgnore([name, name + "_gas", name + "_ice", name + "_cloud"]);
+ if(type) {
+ eListAddIon(type, [name, name+"_gas"], compound);
+ }
+ if(compound == "acid") {
+ eListAddIon("HYDROGEN", [name, name+"_gas"], compound);
+ }
+}
+
+function eListAddIon(listName, itemList, compoundType = "default", priority = 0)
+{
+ eListAdd(listName, itemList);
+ if (typeof itemList === "string") { itemList = [itemList]; }
+ for (var i = 0; i < itemList.length; i++) {
+ if(!elements[itemList[i]]) {
+ elements[itemList[i]] = {};
+ }
+ if (!elements[itemList[i]].salt) {
+ elements[itemList[i]].salt = {};
+ }
+ if (!elements[itemList[i]].salt[compoundType]) {
+ elements[itemList[i]].salt[compoundType] = {};
+ elements[itemList[i]].salt[compoundType].priority = priority;
+ elements[itemList[i]].salt[compoundType].components = [];
+ }
+ if (elements[itemList[i]].salt[compoundType].components.indexOf(listName) === -1) {
+ elements[itemList[i]].salt[compoundType].components.push(listName);
+ }
+ }
}
function acidIgnore(ignore)
{
- for(let i = 0; i < acids.length; i++)
+ for(let i = 0; i < eLists.CAUSTIC.length; i++)
{
- acids[i].ignore = acids[i].ignore.concat(ignore);
+ elements[eLists.CAUSTIC[i]].ignore = elements[eLists.CAUSTIC[i]].ignore.concat(ignore);
}
- ignoreAcid = ignoreAcid.concat(ignore);
+ eLists.CAUSTICIGNORE = eLists.CAUSTICIGNORE.concat(ignore);
}
+eListAdd("WATER", ["water", "salt_water", "sugar_water", "dirty_water", "neutral_acid", "seltzer", "pool_water", "primordial_soup"]);
+function reactList(element, list, reaction) {
+ for(let i = 0; i < list.length; i++)
+ {
+ acidReact(element, list[i], reaction.elem1, reaction.elem2);
+ elements[element].reactions[list[i]] = reaction;
+ }
+}
+
+function createSalt(name,nameWater,color,colorWater,hidden,hiddenWater,tempHigh,tempLowWater,tempHighWater,density,densityWater,cation,anion)
+{
+ if(!elements[name])
+ {
+ elements[name] = {
+ color: color,
+ behavior: behaviors.POWDER,
+ category: "powders",
+ density: density,
+ state: "solid",
+ tempHigh: tempHigh,
+ reactions: {
+ "ice": { elem1:null, elem2:nameWater, chance:0.1 },
+ "rime": { elem1:null, elem2:nameWater, chance:0.075 },
+ "snow": { elem1:null, elem2:nameWater, chance:0.25 },
+ "packed_snow": { elem1:null, elem2:nameWater, chance:0.05 },
+ "packed_ice": { elem1:null, elem2:nameWater, chance:0.01 },
+ "water": { elem2: nameWater, elem1: null }
+ },
+ hidden: hidden
+ }
+ }
+ if(!elements[nameWater])
+ {
+
+ elements[nameWater] = {
+ color: colorWater,
+ behavior: behaviors.LIQUID,
+ tempHigh: tempHighWater,
+ stateHigh: ["steam",name],
+ tempLow: tempLowWater,
+ category: "liquids",
+ reactions: {
+ "dirt": { elem1: null, elem2: "mud" },
+ "sand": { elem1: null, elem2: "wet_sand" },
+ "clay_soil": { elem1: null, elem2: "clay" },
+ "dust": { elem1: "dirty_water", elem2: null },
+ "ash": { elem1: "dirty_water", elem2: null },
+ "carbon_dioxide": { elem1: "dirty_water", elem2: null },
+ "sulfur": { elem1: "dirty_water", elem2: null },
+ "charcoal": { elem1: "dirty_water", chance:0.005 },
+ "rat": { elem1: "dirty_water", chance:0.005 },
+ "plague": { elem1: "dirty_water", elem2: null },
+ "fallout": { elem1: "dirty_water", chance:0.25 },
+ "radiation": { elem1: "dirty_water", chance:0.25 },
+ "rust": { elem1: "dirty_water", chance:0.005 },
+ "quicklime": { elem1: null, elem2: "slaked_lime" },
+ "rock": { elem2: "wet_sand", chance: 0.0005 },
+ "fly": { elem2:"dead_bug", chance:0.1, "oneway":true },
+ "firefly": { elem2:"dead_bug", chance:0.1, "oneway":true },
+ "bee": { elem2:"dead_bug", chance:0.05, "oneway":true },
+ "stink_bug": { elem2:"dead_bug", chance:0.1, "oneway":true },
+ "cancer": { elem1: "dirty_water", chance:0.25 },
+ // electrolysis:
+ "aluminum": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.0025 },
+ "zinc": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.015 },
+ "steel": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.0125 },
+ "iron": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.0125 },
+ "tin": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.01 },
+ "lead": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.01 },
+ "brass": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.001 },
+ "bronze": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.001 },
+ "copper": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.0075 },
+ "silver": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.0075 },
+ "gold": { elem1:["hydrogen","hydrogen","oxygen",name], charged:true, chance:0.0075 },
+ "fire": { elem2: "smoke" },
+ "snow": { elem2:"slush" },
+ "rat": { elem1:"dirty_water", chance:0.2 },
+ "slug": { elem2: "slime", elem1: null },
+ "snail": { elem2: "calcium", elem1: null },
+ "torch": { elem2:"wood" },
+ "light": { "color2":"#a1bac9" },
+ "sawdust": { elem2:"cellulose", elem1:null },
+ "oxygen": { elem2:"foam" },
+ "paper": { elem2:"cellulose", elem1:null },
+ "pollen": { elem2: null },
+ "soda": { elem1:"foam", chance:0.01 },
+ "ice_nine": { elem1: "ice_nine" },
+ "ant_wall": { elem2:["mud","mud","wet_sand"], elem1:null, chance:0.007 },
+ "iron": { elem2:"rust", chance:0.005 },
+ "copper": { elem2:"oxidized_copper", chance:0.005 },
+ "steel": { elem2:"rust", chance:0.004 },
+ "bronze": { elem2:"oxidized_copper", chance:0.0025 },
+ "soap": { elem1: "water" },
+ "soap": { elem2: ["foam","bubble"], chance:0.005 },
+ "dye": { elem2:null, chance:0.05 },
+ "ink": { elem2:null, chance:0.01 },
+ "sodium": { elem2:["pop","pop","pop","hydrogen"], chance:0.01, temp1:250 },
+ "molten_sodium": { elem2:["pop","pop","pop","hydrogen"], chance:0.01, temp1:250 },
+ "radiation": { elem2:"rad_steam", chance:0.4 },
+ "confetti": { elem2:[null,"cellulose"], chance:0.001 },
+ "greek_fire": { func: function(p,pixel){if (!pixel.burning) { pixel.burning=true; pixel.burnStart=pixelTick }}},
+ },
+ state: "liquid",
+ density: densityWater,
+ conduct: 0.1,
+ stain: -0.66,
+ hidden: hiddenWater
+ };
+ }
+ eListAddIon(cation, [name,nameWater,"molten_" + name]);
+ eListAddIon(anion, [name,nameWater,"molten_" + name]);
+ eListAdd("WATER", nameWater);
+ eListAdd("COMPOUND", name);
+}
+
+createSalt("salt","salt_water",null,null,false,false,0,0,0,0,0,"SODIUM","CHLORIDE");
+
acidIgnore(["acid", "acid_gas", "acid_ice", "liquid_fluorine","fluorine","fluorine_ice","hydrogen_fluoride","liquid_hydrogen_fluoride","hydrogen_fluoride_ice","hydrofluoric_acid_ice","hydrofluoric_acid","hydrofluoric_acid_gas","hydrofluoric_acid_cloud","acid_cloud"]);
elements.acid.name = "hydrochloricAcid";
elements.acid_gas.name = "hydrochloricAcidGas";
+eListAddIon("CHLORIDE", ["acid", "acid_gas"],"acid");
+eListAddIon("HYDROGEN", ["acid", "acid_gas"],"acid");
+eListAddIon("FLUORIDE", ["hydrofluoric_acid", "hydrofluoric_acid_gas"],"acid");
+eListAddIon("HYDROGEN", ["hydrofluoric_acid", "hydrofluoric_acid_gas"],"acid");
createAcid("generic_acid",defaultAcidReactions,defaultAcidGasReactions,"#80d488",true,true,110,100,-10,400,1020,1)
elements.generic_acid.name = "acid";
elements.generic_acid_gas.name = "acid_gas";
-trueAcids.push("generic_acid")
-trueAcidGases.push("generic_acid_gas");
+eLists.ACID.push("generic_acid")
+eLists.ACIDGAS.push("generic_acid_gas");
if (!enabledMods.includes("mods/generative_mods.js")) {
elements.acid_cloud.behavior = [
@@ -535,13 +747,13 @@ if (!enabledMods.includes("mods/generative_mods.js")) {
];
}
-createAcid("nitric_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#91993c","#6b7041","#5f614b"],false,false,83,70,-42,400,1500,1.5)
+createAcid("nitric_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#91993c","#6b7041","#5f614b"],false,false,83,70,-42,400,1500,1.5,"NITRATE")
acidReact("nitric_acid","ammonia","fertilizer",null,0);
acidReact("nitric_acid_gas","ammonia","fertilizer",null,0);
-trueAcids.push("nitric_acid")
-trueAcidGases.push("nitric_acid_gas");
+eLists.ACID.push("nitric_acid")
+eLists.ACIDGAS.push("nitric_acid_gas");
elements.nitric_oxide = {
color: "#b8926c",
@@ -566,8 +778,6 @@ elements.nitrogen_dioxide = {
reactions: {
"steam": { "elem1": "smog", "elem2": null, "chance":0.01 },
"blood": { "elem1":null, "elem2":"infection", "chance":0.01 },
- "water": { "elem1":null, "elem2":"nitric_acid", "chance":0.01 },
- "dirty_water": { "elem1":null, "elem2":"nitric_acid", "chance":0.01 },
"plant": { "elem1":null, "elem2":"dead_plant", "chance":0.01 },
"grass": { "elem1":null, "elem2":"dead_plant", "chance":0.01 },
"algae": { "elem1":null, "elem2":null, "chance":0.01 },
@@ -600,6 +810,10 @@ elements.nitrogen_dioxide = {
density: 1.88,
};
+runAfterLoad(function() {
+ reactList("nitrogen_dioxide", eLists.WATER, { "elem1":null, "elem2":"nitric_acid", "chance":0.01 });
+});
+
elements.liquid_nitrogen_dioxide = {
tempLow: -9.3,
hidden: true,
@@ -833,16 +1047,8 @@ elements.sulfur_dioxide = {
color: "#FFF700",
behavior: behaviors.GAS,
reactions: {
- "water": { "elem1": null, "elem2": "sulfuric_acid" },
- "salt_water": { "elem1": null, "elem2": "sulfuric_acid" },
- "sugar_water": { "elem1": null, "elem2": "sulfuric_acid" },
- "dirty_water": { "elem1": null, "elem2": "sulfuric_acid" },
"steam": { "elem1": null, "elem2": "sulfuric_acid_gas" },
"acid_gas": { "elem1": null, "elem2": "sulfuric_acid_gas" },
- "neutral_acid": { "elem1": null, "elem2": "sulfuric_acid" },
- "seltzer": { "elem1": null, "elem2": "sulfuric_acid" },
- "pool_water": { "elem1": null, "elem2": "sulfuric_acid" },
- "primordial_soup": { "elem1": null, "elem2": "sulfuric_acid" },
//poison
"blood": { "elem1":null, "elem2":"infection" },
"soap": { "elem1":null, "chance":0.02 },
@@ -892,11 +1098,20 @@ elements.sulfur_dioxide = {
density: 2.6,
};
+
+runAfterLoad(function() {
+ reactList("sulfur_dioxide", eLists.WATER, { "elem1": null, "elem2": "sulfuric_acid" });
+});
+
elements.liquid_sulfur_dioxide = {
color: "#d1cb17",
behavior: behaviors.LIQUID,
+ category: "liquids",
reactions: elements.sulfur_dioxide.reactions,
+ tempHigh: -10,
+ temp: -15,
tempLow: -72,
+ stateHigh: "sulfur_dioxide",
state: "liquid",
hidden: true,
density: 1435,
@@ -907,15 +1122,6 @@ elements.hydrogen_sulfide = {
behavior: behaviors.GAS,
reactions: {
"oxygen": { "elem2":"stench" },
- "water": { "elem1":null, "elem2":"dirty_water" },
- "salt_water": { "elem1":null, "elem2":"dirty_water" },
- "sugar_water": { "elem1":null, "elem2":"dirty_water" },
- "dirty_water": { "elem1":null, "elem2":"dirty_water" },
- "acid_gas": { "elem1":null, "elem2":"dirty_water" },
- "neutral_acid": { "elem1":null, "elem2":"dirty_water" },
- "seltzer": { "elem1":null, "elem2":"dirty_water" },
- "pool_water": { "elem1":null, "elem2":"dirty_water" },
- "primordial_soup": { "elem1":null, "elem2":"dirty_water" },
"nitrogen": { "elem2":"stench" },
"baking_soda": { "elem1":null }
},
@@ -931,39 +1137,39 @@ elements.hydrogen_sulfide = {
fireColor: ["#8180CC","#7F84E6"],
}
+
+runAfterLoad(function() {
+ reactList("hydrogen_sulfide", eLists.WATER, { "elem1":null, "elem2":"dirty_water" });
+});
+
acidIgnore(["sulfur_dioxide","liquid_sulfur_dioxide","sulfur_dioxide_ice"]);
elements.acid.ignore.push("liquid_hydrogen_sulfide");
elements.acid_gas.ignore.push("liquid_hydrogen_sulfide");
-acidReact("acid","pyrite","iron_chloride","hydrogen_sulfide",50);
-acidReact("acid_gas","pyrite","iron_chloride","hydrogen_sulfide",50);
+acidReact("acid","pyrite","iron_dichloride_solution","hydrogen_sulfide",50);
+acidReact("acid_gas","pyrite","iron_dichloride_solution","hydrogen_sulfide",50);
-elements.iron_chloride = {
- color: ["#207d09","#b51259"],
- behavior: behaviors.POWDER,
- reactions: {
- "dirty_water": { "elem1": null, "elem2":"water" },
- //"ethylene": { "elem2":"one_two_dichloroethane" }, todo: vinyl chloride
- },
- category: "powders",
- tempHigh: 307.6,
- state: "solid",
- density: 2900,
+
+function blendColors(colorA, colorB, amount = 0.5) {
+ const [rA, gA, bA] = colorA.match(/\w\w/g).map((c) => parseInt(c, 16));
+ const [rB, gB, bB] = colorB.match(/\w\w/g).map((c) => parseInt(c, 16));
+ const r = Math.round(rA + (rB - rA) * amount).toString(16).padStart(2, '0');
+ const g = Math.round(gA + (gB - gA) * amount).toString(16).padStart(2, '0');
+ const b = Math.round(bA + (bB - bA) * amount).toString(16).padStart(2, '0');
+ return '#' + r + g + b;
}
-createAcid("sulfuric_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#e9e05e","#c2bd7a","#9e9c7b"],false,false,337,337,10,500,1830,1.26)
+createSalt("iron_dichloride","iron_dichloride_solution",["#207d09","#b51259"],[blendColors("#207d09","#2167ff",0.5),blendColors("#b51259","#2167ff",0.5)],false,true,307.6,-2,102,2900,1030,"IRONII","CHLORIDE");
+
+createAcid("sulfuric_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#e9e05e","#c2bd7a","#9e9c7b"],false,false,337,337,10,500,1830,1.26,"SULFATE")
elements.sulfuric_acid.ignore.push("charcoal");
elements.sulfuric_acid_gas.ignore.push("charcoal");
-elements.sulfuric_acid.reactions["water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["sugar_water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["dirty_water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["acid_gas"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["neutral_acid"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["seltzer"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["pool_water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.sulfuric_acid.reactions["primordial_soup"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
+
+runAfterLoad(function() {
+ reactList("sulfuric_acid", eLists.WATER, { "elem2":"dirty_water"});
+});
elements.sulfuric_acid.reactions["grape"] = { "elem1": "charcoal", "elem2": "steam", "temp2": 200};
elements.sulfuric_acid.reactions["juice"] = { "elem1": "charcoal", "elem2": "steam", "temp2": 200};
elements.sulfuric_acid.reactions["corn"] = { "elem1": "charcoal", "elem2": "steam", "temp2": 200};
@@ -996,8 +1202,8 @@ delete elements.sulfuric_acid_gas.reactions["charcoal"];
acidReact("sulfuric_acid","magnesium_oxide","epsom_salt",null,50);
acidReact("sulfuric_acid_gas","magnesium_oxide","epsom_salt",null,50);
-trueAcids.push("sulfuric_acid")
-trueAcidGases.push("sulfuric_acid_gas");
+eLists.ACID.push("sulfuric_acid")
+eLists.ACIDGAS.push("sulfuric_acid_gas");
elements.polytetrafluoroethylene = {
color: "#efefef",
@@ -1127,6 +1333,7 @@ elements.tetrafluoroethylene = {
burn: 100,
burnTime: 2,
density: 1.52,
+ category: "gases",
}
@@ -1229,7 +1436,7 @@ elements.chloroethane = {
elements.diethylaluminium_chloride = {
color: "#7faf7f",
behavior: behaviors.LIQUID,
- category: "hidden",
+ category: "liquids",
hidden: true,
tempHigh: 125,
stateHigh: "fire",
@@ -1315,16 +1522,10 @@ elements.titanium = {
tempHigh: 1668,
conduct: 0.5,
hardness: 0.7,
+ forceAutoGen: true,
};
elements.molten_titanium = {
- density: 4500,
color: ["#e0921d", "#e89e2e", "#f7b24a", "#fce168", "#fceca2", "#fffcf0"],
- hidden: true,
- state: "liquid",
- behavior: behaviors.LIQUID,
- stateLow: "titanium",
- tempLow: 1668,
- temp: 2000,
viscosity: 10000
};
@@ -1336,19 +1537,13 @@ elements.rutile = {
state: "solid",
tempHigh: 1843,
stateHigh: "molten_rutile",
+ forceAutoGen: true
};
elements.molten_rutile = {
color: ["#e3907f", "#e68f3e"],
- behavior: behaviors.LIQUID,
- hidden: true,
reactions: {
"chlorine": { "elem1": "titanium_tetrachloride", "elem2":null },
},
- density: 4230,
- state: "liquid",
- temp: 2000,
- tempLow: 1843,
- stateLow: "rutile",
viscosity: 10000
};
elements.titanium_tetrachloride = {
@@ -1360,22 +1555,29 @@ elements.titanium_tetrachloride = {
tempHigh: 136.4,
stateHigh: "titanium_tetrachloride_gas",
tempLow: -24,
- stateLow: "titanium_tetrachloride_crystal",
+ stateLow: "solid_titanium_tetrachloride",
};
+eListAddIon("TITANIUMIV","solid_titanium_tetrachloride");
+eListAddIon("CHLORIDE","solid_titanium_tetrachloride");
+eListAddIon("TITANIUMIV","titanium_tetrachloride");
+eListAddIon("CHLORIDE","titanium_tetrachloride");
+eListAddIon("TITANIUMIV","titanium_tetrachloride_gas");
+eListAddIon("CHLORIDE","titanium_tetrachloride_gas");
+eListAdd("INSOLUBLE","titanium_tetrachloride");
elements.titanium_tetrachloride_gas = {
- color: "#e8edd5",
behavior: behaviors.GAS,
hidden: true,
+ category: "gases",
density: 500,
state: "gas",
temp: 200,
tempLow: 136.4,
stateLow: "titanium_tetrachloride"
};
-elements.titanium_tetrachloride_crystal = {
- color: "#f5fffe",
+elements.solid_titanium_tetrachloride = {
behavior: behaviors.WALL,
hidden: true,
+ category: "solids",
density: 1728,
state: "solid",
temp: -50,
@@ -1384,62 +1586,19 @@ elements.titanium_tetrachloride_crystal = {
};
-elements.titanium_trichloride = {
- color: "#c71585",
- behavior: behaviors.SOLID,
- category: "solids",
- density: 2640,
- state: "solid",
-};
-elements.magnesium = {
- color: "#dddce6",
- category: "solids",
- state: "solid",
- density: 1738,
- behavior: behaviors.WALL,
- tick: function(pixel) {
- if (pixel.burning) {
- if(pixel.temp < 2200) {
- pixel.temp += 10;
- }
- }
- },
- stateHigh: "molten_magnesium",
- tempHigh: 650,
- conduct: 0.3,
- burn: 1,
- burnTime: 300,
- fireColor: "#ffffff",
- burnInto: "magnesium_oxide",
- hardness: 0.5,
-};
-elements.molten_magnesium = {
- density: 1738,
- color: ["#cc9c7c", "#ebb896", "#f5bb95", "#f7cd9c", "#fcd2a2", "#fff8f0"],
- hidden: true,
- state: "liquid",
- behavior: behaviors.MOLTEN,
- reactions: {
- "titanium_tetrachloride": { "elem1": "titanium", "elem2": "magnesium_chloride"},
- "titanium_tetrachloride_gas": { "elem1": "titanium", "elem2": "magnesium_chloride"},
- },
- tick: function(pixel) {
- if (pixel.burning) {
- if(pixel.temp < 2200) {
- pixel.temp += 10;
- }
- }
- },
- stateLow: "magnesium",
- tempLow: 650,
- temp: 1000,
- viscosity: 10000,
- burn: 1,
- conduct: 0.3,
- burnTime: 300,
- fireColor: "#ffffff",
- burnInto: "magnesium_oxide",
+createSalt("titanium_trichloride","titanium_trichloride_solution","#c71585",blendColors("#c71585","#2167ff",0.4),false,true,440,-2,102,2640,1020,"TITANIUMIII","CHLORIDE");
+
+elements["titanium_trichloride"].behavior = behaviors.SOLID;
+elements["titanium_trichloride"].category = "solids";
+elements["titanium_trichloride"].stateHigh = ["chlorine","titanium_tetrachloride"];
+delete elements["molten_titanium_trichloride"];
+
+elements.magnesium.burnInto = "magnesium_oxide";
+elements.molten_magnesium.burnInto = "magnesium_oxide";
+elements.molten_magnesium.reactions = {
+ "titanium_tetrachloride": { "elem1": "titanium", "elem2": "magnesium_chloride"},
+ "titanium_tetrachloride_gas": { "elem1": "titanium", "elem2": "magnesium_chloride"},
};
@@ -1456,30 +1615,27 @@ elements.magnesium_oxide = {
};
-elements.magnesium_chloride = {
- color: "#bfbfbf",
- behavior: behaviors.POWDER,
- category: "powders",
- density: 2640,
- state: "solid",
- tempHigh: 714,
- stateHigh: "molten_magnesium_chloride",
-};
+eListAdd("INSOLUBLE","magnesium_oxide");
+eListAddIon("MAGNESIUM","magnesium_oxide");
+eListAddIon("OXIDE","magnesium_oxide");
+eListAddIon("MAGNESIUM","molten_magnesium_oxide");
+eListAddIon("OXIDE","molten_magnesium_oxide");
+
elements.molten_magnesium_chloride = {
- behavior: behaviors.MOLTEN,
behaviorOn: [
"XX|CR:fire%2.5|XX",
"M2|CH:chlorine,magnesium%25|M2",
"M1|M1|M1",
],
- hidden: true,
- temp: 750,
- density: 2620,
- state: "liquid",
conduct: 0.3,
};
+createSalt("magnesium_chloride","magnesium_chloride_solution","#bfbfbf",blendColors("#bfbfbf","#2167ff",0.75),false,true,714,-2,102,2320,1015,"MAGNESIUM","CHLORIDE");
+
+elements.magnesium_chloride.forceAutoGen = true;
+
+
elements.francium = {
color: "#3eff3b",
behavior: [
@@ -1491,23 +1647,21 @@ elements.francium = {
pixel.temp += 5;
},
reactions: {
- "water": { "elem1":"radon", "elem2":"rad_pop"},
- "salt_water": { "elem1":"radon", "elem2":"rad_pop"},
- "sugar_water": { "elem1":"radon", "elem2":"rad_pop"},
- "dirty_water": { "elem1":"radon", "elem2":"rad_pop"},
- "seltzer": { "elem1":"radon", "elem2":"rad_pop"},
"steam": { "elem1":"radon", "elem2":"rad_pop"},
"rad_steam": { "elem1":"radon", "elem2":"rad_pop"},
- "seltzer": { "elem1":"radon", "elem2":"rad_pop"},
- "pool_water": { "elem1":"radon", "elem2":"rad_pop"},
- "primordial_soup": { "elem1":"radon", "elem2":"rad_pop"},
"quark_matter": { "elem1":"stable_francium", "elem2":"quark_matter"}
},
tempHigh: 27,
category: "powders",
state: "solid",
density: 2480,
+ conduct: 0.70,
};
+
+runAfterLoad(function() {
+ reactList("francium", eLists.WATER, { "elem1":"radon", "elem2":"rad_pop"});
+});
+
elements.molten_francium = {
color: "#9ff31e",
behavior: [
@@ -1519,24 +1673,21 @@ elements.molten_francium = {
pixel.temp += 5;
},
reactions: {
- "water": { "elem1":"radon", "elem2":"rad_pop"},
- "salt_water": { "elem1":"radon", "elem2":"rad_pop"},
- "sugar_water": { "elem1":"radon", "elem2":"rad_pop"},
- "dirty_water": { "elem1":"radon", "elem2":"rad_pop"},
- "seltzer": { "elem1":"radon", "elem2":"rad_pop"},
"steam": { "elem1":"radon", "elem2":"rad_pop"},
"rad_steam": { "elem1":"radon", "elem2":"rad_pop"},
- "seltzer": { "elem1":"radon", "elem2":"rad_pop"},
- "pool_water": { "elem1":"radon", "elem2":"rad_pop"},
- "primordial_soup": { "elem1":"radon", "elem2":"rad_pop"},
"quark_matter": { "elem1":"stable_francium", "elem2":"quark_matter"}
},
tempLow: 27,
hidden: true,
state: "liquid",
density: 2480,
+ conduct: 0.70,
};
+runAfterLoad(function() {
+ reactList("molten_francium", eLists.WATER, { "elem1":"radon", "elem2":"rad_pop"});
+});
+
elements.astatine = {
color: "#5a5e5a",
@@ -1551,7 +1702,7 @@ elements.astatine = {
reactions: {
"quark_matter": { "elem1":"stable_astatine", "elem2":"quark_matter"}
},
- tempHigh: 107, //pulled out of ass-tatine
+ tempHigh: 301,
category: "powders",
state: "solid",
density: 8910,
@@ -1569,11 +1720,25 @@ elements.molten_astatine = {
tick: function(pixel) {
pixel.temp += 5;
},
- tempLow: 107, //pulled out of ass-tatine
+ tempLow: 301,
hidden: true,
state: "liquid",
density: 8910,
+ tempHigh: 336,
};
+elements.astatine_gas = {
+ behavior: [
+ "M2|M1 AND CR:radiation%50|M2",
+ "M1 AND CR:radiation%50|CH:polonium,big_pop%0.1|M1 AND CR:radiation%50",
+ "M2|M1 AND CR:radiation%50|M2",
+ ],
+ reactions: {
+ "quark_matter": { "elem1":"molten_stable_astatine", "elem2":"quark_matter"}
+ },
+ tick: function(pixel) {
+ pixel.temp += 5;
+ }
+}
elements.radon = {
color: "#b6ffb5",
@@ -1646,15 +1811,6 @@ elements.rad_pop = {
};
-function blendColors(colorA, colorB, amount = 0.5) {
- const [rA, gA, bA] = colorA.match(/\w\w/g).map((c) => parseInt(c, 16));
- const [rB, gB, bB] = colorB.match(/\w\w/g).map((c) => parseInt(c, 16));
- const r = Math.round(rA + (rB - rA) * amount).toString(16).padStart(2, '0');
- const g = Math.round(gA + (gB - gA) * amount).toString(16).padStart(2, '0');
- const b = Math.round(bA + (bB - bA) * amount).toString(16).padStart(2, '0');
- return '#' + r + g + b;
-}
-
elements.stable_radon = {
color: [blendColors("#b6ffb5","#ff0000"),blendColors("#b6ffb5","#00ff00"),blendColors("#b6ffb5","#0000ff")],
@@ -1701,142 +1857,139 @@ elements.molten_stable_polonium = {
elements.stable_astatine = {
color: [blendColors("#5a5e5a","#ff0000"),blendColors("#5a5e5a","#00ff00"),blendColors("#5a5e5a","#0000ff")],
behavior: behaviors.POWDER,
- tempHigh: 107, //pulled out of ass-tatine
+ tempHigh: 301,
reactions: {
- "water": { "elem1":"hydroastatic_acid", "elem2":null},
- "salt_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "sugar_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "dirty_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "seltzer": { "elem1":"hydroastatic_acid", "elem2":null},
"steam": { "elem1":"hydroastatic_acid", "elem2":null},
"rad_steam": { "elem1":"hydroastatic_acid", "elem2":null},
- "seltzer": { "elem1":"hydroastatic_acid", "elem2":null},
- "pool_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "primordial_soup": { "elem1":"hydroastatic_acid", "elem2":null},
},
category: "powders",
state: "solid",
hidden: true,
density: 8910,
};
+
+
+runAfterLoad(function() {
+ reactList("stable_astatine", eLists.WATER, { "elem1":"hydroastatic_acid", "elem2":null});
+});
+
elements.molten_stable_astatine = {
color: [blendColors("#aab0a0","#ff0000"),blendColors("#aab0a0","#00ff00"),blendColors("#aab0a0","#0000ff")],
behavior: behaviors.LIQUID,
- tempLow: 107, //pulled out of ass-tatine
+ tempLow: 301,
reactions: {
- "water": { "elem1":"hydroastatic_acid", "elem2":null},
- "salt_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "sugar_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "dirty_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "seltzer": { "elem1":"hydroastatic_acid", "elem2":null},
"steam": { "elem1":"hydroastatic_acid", "elem2":null},
"rad_steam": { "elem1":"hydroastatic_acid", "elem2":null},
- "seltzer": { "elem1":"hydroastatic_acid", "elem2":null},
- "pool_water": { "elem1":"hydroastatic_acid", "elem2":null},
- "primordial_soup": { "elem1":"hydroastatic_acid", "elem2":null},
},
hidden: true,
state: "liquid",
density: 8910,
+ tempHigh: 336,
};
-createAcid("hydroastatic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),[blendColors("#5a5e5a","#ff0000",.25),blendColors("#5a5e5a","#00ff00",.25),blendColors("#5a5e5a","#0000ff",.25)],true,true,100,100,0,1000,1200,1)
+
+runAfterLoad(function() {
+ reactList("molten_stable_astatine", eLists.WATER, { "elem1":"hydroastatic_acid", "elem2":null});
+});
+
+createAcid("hydroastatic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),[blendColors("#5a5e5a","#ff0000",.25),blendColors("#5a5e5a","#00ff00",.25),blendColors("#5a5e5a","#0000ff",.25)],true,true,100,100,0,1000,1200,1,"ASTATIDE")
elements.hydroastatic_acid.ignore.push("astatine","molten_astatine","stable_astatine","molten_stable_astatine");
elements.hydroastatic_acid_gas.ignore.push("astatine","molten_astatine","stable_astatine","molten_stable_astatine");
-trueAcids.push("hydroastatic_acid");
-trueAcidGases.push("hydroastatic_acid_gas");
+eLists.ACID.push("hydroastatic_acid");
+eLists.ACIDGAS.push("hydroastatic_acid_gas");
-elements.hydroastatic_acid.reactions["water"] = { "elem1":"hydroastatic_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["sugar_water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["dirty_water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["acid_gas"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["neutral_acid"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["seltzer"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["pool_water"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
-elements.hydroastatic_acid.reactions["primordial_soup"] = { "elem1":"sulfuric_acid", "elem2":"dirty_water"};
+
+
+runAfterLoad(function() {
+ reactList("hydroastatic_acid", eLists.WATER, {"elem2":"dirty_water"});
+});
elements.polonium_dioxide = {
- color: "#ffff7f",
+ color: [blendColors("#ffff7f","#ff0000"), blendColors("#ffff7f","#00ff00"), blendColors("#ffff7f","#0000ff")],
behavior: behaviors.POWDER,
tempHigh: 500,
hidden: true,
state: "solid",
density: 8900,
+ category: "powders",
};
-elements.magnesium_polonide = {
- color: [blendColors("#b5b5b5","#ff0000",.25),blendColors("#b5b5b5","#00ff00",.25),blendColors("#b5b5b5","#0000ff",.25)],
- behavior: behaviors.POWDER,
- tempHigh: 1800,
- hidden: true,
- state: "solid",
- density: 6700,
-};
+eListAdd("INSOLUBLE","polonium_dioxide");
+eListAddIon("POLONIUMIV","polonium_dioxide");
+eListAddIon("OXIDE","polonium_dioxide");
+eListAddIon("POLONIUMIV","molten_polonium_dioxide");
+eListAddIon("OXIDE","molten_polonium_dioxide");
-acidReact("acid","magnesium_polonide","magnesium_chloride","polonium_hydride",100);
-acidReact("acid_gas","magnesium_polonide","magnesium_chloride","polonium_hydride",100);
-acidReact("acid","molten_magnesium_polonide","magnesium_chloride","polonium_hydride",100);
-acidReact("acid_gas","molten_magnesium_polonide","magnesium_chloride","polonium_hydride",100);
-elements.acid.ignore.push("magnesium_polonide","molten_magnesium_polonide","polonium_hydride","polonium_hydride_ice","polonium_hydride_gas","magnesium_chloride","molten_magnesium_chloride");
-elements.acid_gas.ignore.push("magnesium_polonide","molten_magnesium_polonide","polonium_hydride","polonium_hydride_ice","polonium_hydride_gas","magnesium_chloride","molten_magnesium_chloride");
+
+createSalt("magnesium_polonide","magnesium_polonide_solution",[blendColors("#b5b5b5","#ff0000",.25),blendColors("#b5b5b5","#00ff00",.25),blendColors("#b5b5b5","#0000ff",.25)],[blendColors("#2167ff","#ff0000",0.25),blendColors("#2167ff","#00ff00",0.25),blendColors("#2167ff","#0000ff",0.25)],true,true,1800,-2,102,6700,1050,"MAGNESIUM","POLONIDE");
+
+
+acidReact("acid","magnesium_polonide","magnesium_chloride_solution","polonium_hydride",100);
+acidReact("acid_gas","magnesium_polonide","magnesium_chloride_solution","polonium_hydride",100);
+acidReact("acid","molten_magnesium_polonide","magnesium_chloride_solution","polonium_hydride",100);
+acidReact("acid_gas","molten_magnesium_polonide","magnesium_chloride_solution","polonium_hydride",100);
+elements.acid.ignore.push("polonium_hydride_ice","polonium_hydride_gas","magnesium_chloride");
+elements.acid_gas.ignore.push("polonium_hydride_ice","polonium_hydride_gas","magnesium_chloride");
elements.polonium_hydride = {
density: 2450,
- color: "#838396",
+ color: [blendColors("#838396","#ff0000"), blendColors("#838396","#00ff00"), blendColors("#838396","#0000ff")],
hidden: true,
state: "liquid",
behavior: behaviors.LIQUID,
tempLow: -35.3,
tempHigh: 36.1,
+ stain: 0.05,
burn: 1,
burnTime: 10,
burnInto: ["polonium_dioxide","steam"],
+ category: "liquids",
+};
+
+elements.polonium_hydride_gas = {
+ density: 8.29,
};
elements.stable_francium = {
color: [blendColors("#3eff3b","#ff0000"),blendColors("#3eff3b","#00ff00"),blendColors("#3eff3b","#0000ff")],
behavior: behaviors.POWDER,
reactions: {
- "water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "salt_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "sugar_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "dirty_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "seltzer": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
"steam": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
"rad_steam": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "seltzer": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "pool_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "primordial_soup": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
},
tempHigh: 27,
category: "powders",
state: "solid",
density: 2480,
hidden: true,
+ conduct: 0.70,
};
+
+
+runAfterLoad(function() {
+ reactList("stable_francium", eLists.WATER, { "elem1":"francium_hydroxide", "elem2":"big_pop"});
+});
+
+
elements.molten_stable_francium = {
color: [blendColors("#9ff31e","#ff0000"),blendColors("#9ff31e","#00ff00"),blendColors("#9ff31e","#0000ff")],
behavior: behaviors.LIQUID,
reactions: {
- "water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "salt_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "sugar_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "dirty_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "seltzer": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
"steam": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
"rad_steam": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "seltzer": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "pool_water": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
- "primordial_soup": { "elem1":"francium_hydroxide", "elem2":"big_pop"},
},
tempLow: 27,
state: "liquid",
hidden: true,
density: 2480,
+ conduct: 0.70,
};
+runAfterLoad(function() {
+ reactList("molten_stable_francium", eLists.WATER, { "elem1":"francium_hydroxide", "elem2":"big_pop"});
+});
elements.big_pop = {
color: ["#ffb48f","#ffd991","#ffad91"],
@@ -1852,107 +2005,28 @@ elements.big_pop = {
hidden: true,
};
-elements.potassium_salt_water = {
- color: "#416ed1",
- behavior: behaviors.LIQUID,
- tempHigh: 102,
- stateHigh: ["steam","potassium_salt"],
- tempLow: -2,
- stateLowName: "potassium_salt_ice",
- category: "liquids",
- reactions: {
- "dirt": { elem1: null, elem2: "mud" },
- "sand": { elem1: null, elem2: "wet_sand" },
- "clay_soil": { elem1: null, elem2: "clay" },
- "dust": { elem1: "dirty_water", elem2: null },
- "ash": { elem1: "dirty_water", elem2: null },
- "carbon_dioxide": { elem1: "dirty_water", elem2: null },
- "sulfur": { elem1: "dirty_water", elem2: null },
- "charcoal": { elem1: "dirty_water", chance:0.005 },
- "rat": { elem1: "dirty_water", chance:0.005 },
- "plague": { elem1: "dirty_water", elem2: null },
- "fallout": { elem1: "dirty_water", chance:0.25 },
- "radiation": { elem1: "dirty_water", chance:0.25 },
- "rust": { elem1: "dirty_water", chance:0.005 },
- "quicklime": { elem1: null, elem2: "slaked_lime" },
- "rock": { elem2: "wet_sand", chance: 0.0005 },
- "fly": { elem2:"dead_bug", chance:0.1, "oneway":true },
- "firefly": { elem2:"dead_bug", chance:0.1, "oneway":true },
- "bee": { elem2:"dead_bug", chance:0.05, "oneway":true },
- "stink_bug": { elem2:"dead_bug", chance:0.1, "oneway":true },
- "cancer": { elem1: "dirty_water", chance:0.25 },
- // electrolysis:
- "aluminum": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.0025 },
- "zinc": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.015 },
- "steel": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.0125 },
- "iron": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.0125 },
- "tin": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.01 },
- "lead": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.01 },
- "brass": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.001 },
- "bronze": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.001 },
- "copper": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.0075 },
- "silver": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.0075 },
- "gold": { elem1:["hydrogen","hydrogen","oxygen","potassium_salt"], charged:true, chance:0.0075 },
- },
- state: "liquid",
- density: 1026,
- conduct: 0.1,
- stain: -0.66
+createSalt("potassium_salt","potassium_salt_water",["#f2f2f2","#e0e0e0"],"#416ed1",false,false,292,-2,102,3980,1026,"POTASSIUM","CHLORIDE");
+
+elements.potassium.reactions = {
+ "chlorine": { elem1:"potassium_salt", elem2:null, chance:0.05 },
+ "smog": { elem1:["potassium_hydroxide","pop"], elem2:["hydrogen","pop","fire"], chance:0.01, temp2:400 },
+ "electric": { elem1:[null,"pop"], elem2:["pop","fire"], chance:0.05, temp2:400 },
};
+runAfterLoad(function() {
+ reactList("potassium", eLists.WATER, { elem1:["potassium_hydroxide","pop"], elem2:["hydrogen","pop","fire"], chance:0.01, temp2:400 });
+});
-elements.potassium = {
- color: ["#8e8ba3","#8797a8","#7d6a75","#879dad"],
- tick: function(pixel) {
- for (var i = 0; i < adjacentCoords.length; i++) {
- var x = pixel.x+adjacentCoords[i][0];
- var y = pixel.y+adjacentCoords[i][1];
- if (isEmpty(x,y)) {
- if (Math.random() < 0.005) { deletePixel(pixel.x,pixel.y) }
- break
- } } },
- reactions: {
- "chlorine": { elem1:"potassium_salt", elem2:"big_pop" },
- "water": { elem1:"big_pop" },
- "salt_water": { elem1:"big_pop" },
- "sugar_water": { elem1:"big_pop" },
- "dirty_water": { elem1:"big_pop" },
- "seltzer": { elem1:"big_pop" },
- "pool_water": { elem1:"big_pop" },
- "primordial_soup": { elem1:"big_pop" },
- "acid": { elem1:"explosion" }
- },
- tempHigh: 63.5,
- category: "solids",
- state: "solid",
- density: 890,
- conduct: 0.85,
- hardness: 0.04,
- burn:40,
- burnTime: 200,
- fireColor: ["#ff00ee","#ff6bf5"]
-};
-elements.molten_potassium = {
- tempLow: 63.5,
- tempHigh: 757.6,
- burn:40,
- burnTime: 200,
- fireColor: ["#ff00ee","#ff6bf5"],
- reactions: {
- "chlorine": { elem1:"potassium_salt", elem2:"big_pop" },
- "water": { elem1:"big_pop" },
- "salt_water": { elem1:"big_pop" },
- "sugar_water": { elem1:"big_pop" },
- "dirty_water": { elem1:"big_pop" },
- "seltzer": { elem1:"big_pop" },
- "pool_water": { elem1:"big_pop" },
- "primordial_soup": { elem1:"big_pop" },
- "acid": { elem1:"explosion" }
- }
-};
-elements.potassium_gas = {
- color: "#5e6fdb"
+elements.molten_potassium.reactions = {
+ "chlorine": { elem1:"potassium_salt", elem2:null, chance:0.05 },
+ "smog": { elem1:["potassium_hydroxide","pop"], elem2:["hydrogen","pop","fire"], chance:0.01, temp2:400 },
+ "electric": { elem1:[null,"pop"], elem2:["pop","fire"], chance:0.05, temp2:400 },
};
+
+runAfterLoad(function() {
+ reactList("molten_potassium", eLists.WATER, { elem1:["potassium_hydroxide","pop"], elem2:["hydrogen","pop","fire"], chance:0.01, temp2:400 });
+});
+
elements.molten_salt = {};
elements.molten_potassium_salt = {};
@@ -2020,6 +2094,49 @@ elements.niter = {
state: "solid",
density: 2109,
};
+createSalt("niter","niter_solution","#f0efcc",blendColors("#f0efcc","#2167ff",0.75),false,true,334,-2,102,2109,1011,"POTASSIUM","NITRATE");
+elements["niter"].stateHigh = "fire";
+elements["niter"].reactions = Object.assign(elements["niter"].reactions,{
+ "plant": { "elem1":"plant", "chance":0.05 },
+ "wheat_seed": { "elem1":"wheat", "chance":0.05 },
+ "grass": { "elem1":"grass", "chance":0.05 },
+ "grass_seed": { "elem1":"grass", "chance":0.05 },
+ "bamboo_plant": { "elem1":"bamboo", "chance":0.05 },
+ "flower_seed": { "elem1":"flower_seed", "chance":0.05 },
+ "petal": { "elem1":"flower_seed", "chance":0.05 },
+ "vine": { "elem1":"vine", "chance":0.05 },
+ "sapling": { "elem1":"tree_branch", "chance":0.05 },
+ "tree_branch": { "elem1":"tree_branch", "chance":0.05 },
+ "corn_seed": { "elem1":"corn", "chance":0.05 },
+ "root": { "elem1":"root", "chance":0.05 },
+ "dirt": { "elem1":"grass", "chance":0.05 },
+ "mud": { "elem1":"grass", "chance":0.05 },
+ "potato_seed": { "elem1":"potato", "chance":0.05 },
+ "yeast": { "elem1":"yeast", "chance":0.05 },
+ "sulfur": { "elem1":"gunpowder", "elem2": null},
+ });
+elements["niter_solution"].reactions = Object.assign(elements["niter_solution"].reactions,{
+ "plant": { "elem1":"plant", "chance":0.05 },
+ "wheat_seed": { "elem1":"wheat", "chance":0.05 },
+ "grass": { "elem1":"grass", "chance":0.05 },
+ "grass_seed": { "elem1":"grass", "chance":0.05 },
+ "bamboo_plant": { "elem1":"bamboo", "chance":0.05 },
+ "flower_seed": { "elem1":"flower_seed", "chance":0.05 },
+ "petal": { "elem1":"flower_seed", "chance":0.05 },
+ "vine": { "elem1":"vine", "chance":0.05 },
+ "sapling": { "elem1":"tree_branch", "chance":0.05 },
+ "tree_branch": { "elem1":"tree_branch", "chance":0.05 },
+ "corn_seed": { "elem1":"corn", "chance":0.05 },
+ "root": { "elem1":"root", "chance":0.05 },
+ "dirt": { "elem1":"grass", "chance":0.05 },
+ "mud": { "elem1":"grass", "chance":0.05 },
+ "potato_seed": { "elem1":"potato", "chance":0.05 },
+ "yeast": { "elem1":"yeast", "chance":0.05 },
+ "sulfur": { "elem1":"gunpowder", "elem2": "water"},
+ });
+delete elements["molten_niter"];
+
+
elements.potassium_salt.hidden = false;
@@ -2035,6 +2152,18 @@ elements.fluorite = {
}
};
+
+eListAddIon("CALCIUM","fluorite");
+eListAddIon("FLUORIDE","fluorite");
+eListAddIon("CALCIUM","molten_fluorite");
+eListAddIon("FLUORIDE","molten_fluorite");
+eListAdd("INSOLUBLE","fluorite");
+eListAddIon("CALCIUM","chalk");
+eListAddIon("SULFATE","chalk");
+eListAddIon("CALCIUM","molten_chalk");
+eListAddIon("SULFATE","molten_chalk");
+eListAdd("INSOLUBLE","chalk");
+
elements.sulfuric_acid.ignore.push("chalk","fluorite");
elements.sulfuric_acid_gas.ignore.push("chalk","fluorite");
@@ -2067,10 +2196,10 @@ elements.liquid_sulfur_hexafluoride = {
tempLow: -64
};
-createAcid("hexafluorosilicic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#ebeed8","#f9ffc2","#c7e189"],true,true,100,100,0,1000,1460,1)
+createAcid("hexafluorosilicic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#ebeed8","#f9ffc2","#c7e189"],true,true,100,100,0,1000,1460,1,"HEXAFLUOROSILICATE")
-trueAcids.push("hexafluorosilicic_acid");
-trueAcidGases.push("hexafluorosilicic_acid_gas");
+eLists.ACID.push("hexafluorosilicic_acid");
+eLists.ACIDGAS.push("hexafluorosilicic_acid_gas");
elements.hydrofluoric_acid.ignore.push("sand","hexafluorosilicic_acid","hexafluorosilicic_acid_gas","potassium_carbonate","potassium_fluoride","carbon_dioxide","hydrogen");
@@ -2082,36 +2211,27 @@ elements.hexafluorosilicic_acid_gas.ignore.push("sand");
acidReact("hydrofluoric_acid","sand","hexafluorosilicic_acid","fire",0);
acidReact("hydrofluoric_acid_gas","sand","hexafluorosilicic_acid","fire",0);
-acidReact("hydrofluoric_acid","potassium_carbonate","potassium_fluoride","carbon_dioxide",100);
-acidReact("hydrofluoric_acid_gas","potassium_carbonate","potassium_fluoride","carbon_dioxide",100);
-acidReact("hydrogen_fluoride","potassium_carbonate","potassium_fluoride","carbon_dioxide",100);
-acidReact("liquid_hydrogen_fluoride","potassium_carbonate","potassium_fluoride","carbon_dioxide",100);
-acidReact("hydrofluoric_acid","potassium_carbonate",["hydrogen","fluorine"],"potassium_fluoride",100);
-acidReact("hydrofluoric_acid_gas","potassium_carbonate",["hydrogen","fluorine"],"potassium_fluoride",100);
-
-elements.fluorine.ignore.push("sand","potassium_fluoride","carbon_dioxide");
-elements.liquid_fluorine.ignore.push("sand","potassium_fluoride","carbon_dioxide");
-
-elements.potassium_carbonate = {
- color: "#e2e1e8",
- behavior: behaviors.POWDER,
- category: "powders",
- hidden: true,
- density: 2430,
- state: "solid",
- tempHigh: 891
-}
+acidReact("hydrofluoric_acid","potassium_carbonate","potassium_fluoride_solution","carbon_dioxide",100);
+acidReact("hydrofluoric_acid_gas","potassium_carbonate","potassium_fluoride_solution","carbon_dioxide",100);
+acidReact("hydrogen_fluoride","potassium_carbonate","potassium_fluoride_solution","carbon_dioxide",100);
+acidReact("liquid_hydrogen_fluoride","potassium_carbonate","potassium_fluoride_solution","carbon_dioxide",100);
-elements.potassium_fluoride = {
- color: "#e8e8e1",
- behavior: behaviors.POWDER,
- category: "powders",
- hidden: true,
- density: 2480,
- state: "solid",
- tempHigh: 858
-}
+acidReact("hydrofluoric_acid","potassium_carbonate_solution","potassium_fluoride_solution","carbon_dioxide",100);
+acidReact("hydrofluoric_acid_gas","potassium_carbonate_solution","potassium_fluoride_solution","carbon_dioxide",100);
+acidReact("hydrogen_fluoride","potassium_carbonate_solution","potassium_fluoride_solution","carbon_dioxide",100);
+acidReact("liquid_hydrogen_fluoride","potassium_carbonate_solution","potassium_fluoride_solution","carbon_dioxide",100);
+
+acidReact("hydrofluoric_acid","potassium_fluoride","fluorine","potassium_fluoride_solution",100);
+acidReact("hydrofluoric_acid_gas","potassium_fluoride","fluorine","potassium_fluoride_solution",100);
+acidReact("hydrofluoric_acid","potassium_fluoride","fluorine",["potassium_fluoride_solution",null],100);
+acidReact("hydrofluoric_acid_gas","potassium_fluoride","fluorine",["potassium_fluoride_solution",null],100);
+
+elements.fluorine.ignore.push("sand","potassium_carbonate","potassium_fluoride","carbon_dioxide");
+elements.liquid_fluorine.ignore.push("sand","potassium_carbonate","potassium_fluoride","carbon_dioxide");
+
+createSalt("potassium_carbonate","potassium_carbonate_solution","#e2e1e8",blendColors("#e2e1e8","#2167ff",0.75),true,true,891,-2,102,2430,1024,"POTASSIUM","CARBONATE");
+createSalt("potassium_fluoride","potassium_fluoride_solution","#e8e8e1",blendColors("#e8e8e1","#2167ff",0.75),true,true,858,-2,102,2480,1020,"POTASSIUM","FLUORIDE");
elements.soy_sauce = {
@@ -2137,6 +2257,7 @@ elements.bromine = {
"water": { elem1: "pool_water", elem2:null },
"dirty_water": { elem2:"water" },
"potassium": { elem1:"potassium_bromide", elem2:null },
+ "sodium": { elem1:"sodium_bromide", elem2:null },
"root": { elem2:null, chance:0.025 },
"tree_branch": { elem2:"wood", chance:0.015 },
"pistil": { elem2:"dead_plant", chance:0.025 },
@@ -2165,6 +2286,7 @@ elements.bromine_gas = {
"water": { elem1: "pool_water", elem2:null },
"dirty_water": { elem2:"water" },
"potassium": { elem1:"potassium_bromide", elem2:null },
+ "sodium": { elem1:"sodium_bromide", elem2:null },
"root": { elem2:null, chance:0.025 },
"tree_branch": { elem2:"wood", chance:0.015 },
"pistil": { elem2:"dead_plant", chance:0.025 },
@@ -2183,32 +2305,28 @@ elements.bromine_gas = {
stain: 0.5
};
-
-elements.potassium_bromide = {
- color: ["#fccaca","#f7cbcb"],
- behavior: behaviors.POWDER,
- category: "powders",
- tempHigh: 734,
- state: "solid",
- density: 2740
-};
+createSalt("potassium_bromide","potassium_bromide_solution",["#fccaca","#f7cbcb"],blendColors("#fccaca","#2167ff",0.75),false,true,734,-2,102,2740,1050,"POTASSIUM","BROMIDE");
+createSalt("sodium_bromide","sodium_bromide_solution",["#f5f4ed","#f2f2eb"],blendColors("#f5f4ed","#2167ff",0.75),false,true,747,-2,102,3210,1040,"SODIUM","BROMIDE");
elements.silver_bromide = {
color: ["#fcfcca","#f7f24f"],
tick: function(pixel) {
for (let i = -1; i <= 1; i++) {
for (let j = -1; j <= 1; j++) {
- if (!isEmpty(pixel.x+i,pixel.y+j,true) && (pixelMap[pixel.x+i][pixel.y+j].element === "light" || pixelMap[pixel.x+i][pixel.y+j].element === "liquid_light")) {
+ if (!isEmpty(pixel.x+i,pixel.y+j,true) && Math.random() < 0.1 && (pixelMap[pixel.x+i][pixel.y+j].element === "light" || pixelMap[pixel.x+i][pixel.y+j].element === "laser" || pixelMap[pixel.x+i][pixel.y+j].element === "liquid_light")) {
- for (let k = -1; k <= 1; k++) {
- for (let l = -1; l <= 1; l++) {
- if(!isEmpty(pixel.x+k,pixel.y+l,true) && pixelMap[pixel.x+k][pixel.y+l].element === "silver_bromide")
- {
- pixelMap[pixel.x+k][pixel.y+l].color = pixelMap[pixel.x+i][pixel.y+j].color;
- }
- }
+ let coords = circleCoords(pixel.x+i,pixel.y+j,20);
+ for (var n = 0; n < coords.length; n++) {
+ k = coords[n].x;
+ l = coords[n].y;
+ distance = (k-pixel.x-i)*(k-pixel.x-i) + (l-pixel.y-j)*(l-pixel.y-j);
+ if(!isEmpty(k,l,true) && pixelMap[k][l].element === "silver_bromide")
+ {
+ if(distance <= 0) {console.log("a");}
+ pixelMap[k][l].color = pixelColorPick(pixelMap[k][l],blendColors(RGBToHex(toObject(pixelMap[k][l].color)),RGBToHex(toObject(pixelMap[pixel.x+i][pixel.y+j].color)),1/distance));
+ }
}
- if(pixelMap[pixel.x+i][pixel.y+j].element === "light")
+ if(pixelMap[pixel.x+i][pixel.y+j].element === "light" || pixelMap[pixel.x+i][pixel.y+j].element === "laser")
{
deletePixel(pixel.x+i,pixel.y+j);
}
@@ -2223,34 +2341,35 @@ elements.silver_bromide = {
density: 6470
};
+eListAddIon("SILVER","silver_bromide");
+eListAddIon("BROMIDE","silver_bromide");
+eListAdd("INSOLUBLE","silver_bromide");
+eListAddIon("SILVER","molten_silver_bromide");
+eListAddIon("BROMIDE","molten_silver_bromide");
-elements.nitric_acid.reactions["silver"] = { elem1: "nitrogen_dioxide", elem2: "silver_nitrate"};
-elements.nitric_acid_gas.reactions["silver"] = { elem1: "nitrogen_dioxide", elem2: "silver_nitrate"};
-elements.nitric_acid.ignore.push("silver","silver_nitrate");
-elements.nitric_acid_gas.ignore.push("silver","silver_nitrate");
-elements.silver_nitrate = {
- color: ["#cad7fc","#cbd2f7"],
- behavior: behaviors.POWDER,
- reactions: {
- "potassium_bromide": {elem1: "niter", elem2: "silver_bromide"}
- },
- category: "powders",
- tempHigh: 209,
- state: "solid",
- density: 2740,
- hidden: true
-};
+elements.nitric_acid.reactions["silver"] = { elem1: "nitrogen_dioxide", elem2: "silver_nitrate_solution"};
+elements.nitric_acid_gas.reactions["silver"] = { elem1: "nitrogen_dioxide", elem2: "silver_nitrate_solution"};
+
+elements.nitric_acid.ignore.push("silver","silver_nitrate","silver_nitrate_solution");
+elements.nitric_acid_gas.ignore.push("silver","silver_nitrate","silver_nitrate_solution");
+
elements.molten_silver_nitrate = {
tempHigh: 440,
- stateHigh: ["silver","nitrogen_dioxide","oxygen"],
+ stateHigh: ["silver","nitrogen_dioxide","oxygen","fire"],
}
-createAcid("hydrobromic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#ff3b3b","#ca0000","#9e7b7b"],true,true,100,100,0,1000,1100,1)
+createSalt("silver_nitrate","silver_nitrate_solution",["#cad7fc","#cbd2f7"],blendColors("#cad7fc","#2167ff",0.5),true,true,209,-2,102,4350,1060,"SILVER","NITRATE");
-trueAcids.push("hydrobromic_acid");
-trueAcidGases.push("hydrobromic_acid_gas");
+elements.silver_nitrate_solution.reactions["potassium_bromide"] = { elem1: "niter_solution", elem2: "silver_bromide"};
+elements.silver_nitrate_solution.reactions["potassium_bromide_solution"] = { elem1: "niter_solution", elem2: "silver_bromide"};
+
+
+createAcid("hydrobromic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#ff3b3b","#ca0000","#9e7b7b"],true,true,100,100,0,1000,1100,1,"BROMIDE")
+
+eLists.ACID.push("hydrobromic_acid");
+eLists.ACIDGAS.push("hydrobromic_acid_gas");
acidReact("sulfuric_acid","bromine","sulfuric_acid","hydrobromic_acid",50);
acidReact("sulfuric_acid","bromine_ice","sulfuric_acid","hydrobromic_acid",50);
@@ -2258,8 +2377,6 @@ acidReact("sulfuric_acid","bromine_gas","sulfuric_acid","hydrobromic_acid",50);
acidReact("sulfuric_acid_gas","bromine","sulfuric_acid","hydrobromic_acid",50);
acidReact("sulfuric_acid_gas","bromine_ice","sulfuric_acid","hydrobromic_acid",50);
acidReact("sulfuric_acid_gas","bromine_gas","sulfuric_acid","hydrobromic_acid",50);
-elements.hydrobromic_acid.ignore.push("bromine","bromine_ice","bromine_gas");
-elements.hydrobromic_acid_gas.ignore.push("bromine","bromine_ice","bromine_gas");
acidReact("sulfuric_acid","potassium_salt","potassium_sulfate","acid",50);
acidReact("sulfuric_acid_gas","potassium_salt","potassium_sulfate","acid",50);
@@ -2268,17 +2385,9 @@ acidReact("sulfuric_acid_gas","niter","potassium_sulfate","nitric_acid",50);
acidReact("sulfuric_acid","potassium_bromide","potassium_sulfate","hydrobromic_acid",50);
acidReact("sulfuric_acid_gas","potassium_bromide","potassium_sulfate","hydrobromic_acid",50);
-elements.acid.ignore.push("potassium_sulfate","potassium_salt");
-elements.acid_gas.ignore.push("potassium_sulfate","potassium_salt");
-elements.nitric_acid.ignore.push("potassium_sulfate","niter");
-elements.nitric_acid_gas.ignore.push("potassium_sulfate","niter");
-elements.hydrobromic_acid.ignore.push("potassium_sulfate","niter");
-elements.hydrobromic_acid_gas.ignore.push("potassium_sulfate","potassium_bromide");
-elements.potassium_sulfate = {
- color: "#f0d8cc",
- behavior: behaviors.POWDER,
- reactions: {
+createSalt("potassium_sulfate","potassium_sulfate_solution","#f0d8cc",blendColors("#f0d8cc","#2167ff",0.75),true,true,1069,-2,102,2660,1012,"POTASSIUM","SULFATE");
+elements["niter"].reactions = Object.assign(elements["potassium_sulfate"].reactions,{
"plant": { "elem1":"plant", "chance":0.05 },
"wheat_seed": { "elem1":"wheat", "chance":0.05 },
"grass": { "elem1":"grass", "chance":0.05 },
@@ -2295,49 +2404,43 @@ elements.potassium_sulfate = {
"mud": { "elem1":"grass", "chance":0.05 },
"potato_seed": { "elem1":"potato", "chance":0.05 },
"yeast": { "elem1":"yeast", "chance":0.05 },
- },
- tempHigh: 1069,
- category: "powders",
- state: "solid",
- density: 2660,
- hidden: true
-};
+ });
+elements["niter_solution"].reactions = Object.assign(elements["potassium_sulfate_solution"].reactions,{
+ "plant": { "elem1":"plant", "chance":0.05 },
+ "wheat_seed": { "elem1":"wheat", "chance":0.05 },
+ "grass": { "elem1":"grass", "chance":0.05 },
+ "grass_seed": { "elem1":"grass", "chance":0.05 },
+ "bamboo_plant": { "elem1":"bamboo", "chance":0.05 },
+ "flower_seed": { "elem1":"flower_seed", "chance":0.05 },
+ "petal": { "elem1":"flower_seed", "chance":0.05 },
+ "vine": { "elem1":"vine", "chance":0.05 },
+ "sapling": { "elem1":"tree_branch", "chance":0.05 },
+ "tree_branch": { "elem1":"tree_branch", "chance":0.05 },
+ "corn_seed": { "elem1":"corn", "chance":0.05 },
+ "root": { "elem1":"root", "chance":0.05 },
+ "dirt": { "elem1":"grass", "chance":0.05 },
+ "mud": { "elem1":"grass", "chance":0.05 },
+ "potato_seed": { "elem1":"potato", "chance":0.05 },
+ "yeast": { "elem1":"yeast", "chance":0.05 },
+ });
+
+createSalt("sodium_chlorate","sodium_chlorate_solution","#cff0cc",blendColors("#cff0cc","#2167ff",0.25),true,true,255,-2,102,2490,1011,"SODIUM","CHLORATE");
+elements.sodium_chlorate.stateHigh = "fire";
+elements.sodium_chlorate_solution.reactions["gold"] = { elem1:"sodium_perchlorate_solution", charged:true, chance:0.1 };
-elements.sodium_chlorate = {
- color: "#cff0cc",
- behavior: behaviors.POWDER,
- reactions: {
- "gold": { elem1:"sodium_perchlorate", charged:true, chance:0.1 }
- },
- tempHigh: 255,
- stateHigh: "fire",
- category: "powders",
- state: "solid",
- density: 2490,
- hidden: true,
- conduct: 0.1,
-};
+elements.chlorine.reactions["bleach"] = { elem1: "sodium_chlorate_solution", elem2: null};
+delete elements["molten_sodium_chlorate"];
-elements.chlorine.reactions["bleach"] = { elem1: "sodium_chlorate", elem2: null};
+createSalt("sodium_perchlorate","sodium_perchlorate_solution","#cff0cc",blendColors("#d6f0cc","#2167ff",0.25),true,true,468,-2,102,2499,1011,"SODIUM","PERCHLORATE");
+elements.sodium_perchlorate.stateHigh = "fire";
+elements.sodium_perchlorate.reactions["acid"] = { elem1:"perchloric_acid", elem2:"salt"};
+elements.sodium_perchlorate_solution.reactions["acid"] = { elem1:"perchloric_acid", elem2:"salt_water"};
-elements.sodium_perchlorate = {
- color: "#d6f0cc",
- behavior: behaviors.POWDER,
- reactions: {
- "acid": { elem1:"perchloric_acid", elem2: "salt"}
- },
- tempHigh: 468,
- stateHigh: "fire",
- category: "powders",
- state: "solid",
- density: 2499,
- hidden: true
-};
+elements.acid.ignore.push("salt","sodium_perchlorate","sodium_perchlorate_solution");
+elements.acid_gas.ignore.push("salt","sodium_perchlorate","sodium_perchlorate_solution");
+delete elements["molten_sodium_perchlorate"];
-elements.acid.ignore.push("salt","sodium_perchlorate");
-elements.acid_gas.ignore.push("salt","sodium_perchlorate");
-
-createAcid("perchloric_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#ff963b","#ca6800","#c48a56"],true,true,100,100,0,1000,1768,1)
+createAcid("perchloric_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#ff963b","#ca6800","#c48a56"],true,true,100,100,0,1000,1768,1,"PERCHLORATE")
elements.perchloric_acid.tick = function(pixel) {
let change = false;
@@ -2354,7 +2457,7 @@ elements.perchloric_acid.tick = function(pixel) {
}
if (change) {
if(Math.random() < 0.2) {
- changePixel(pixel,"pop");
+ changePixel(pixel,"big_pop");
} else {
deletePixel(pixel.x,pixel.y);
return;
@@ -2364,7 +2467,8 @@ elements.perchloric_acid.tick = function(pixel) {
}
}
delete elements.perchloric_acid.behavior;
-
+elements.perchloric_acid.burn = 0;
+elements.perchloric_acid.ignore.push("fire","smoke");
elements.perchloric_acid_gas.tick = function(pixel) {
let change = false;
@@ -2381,7 +2485,7 @@ elements.perchloric_acid_gas.tick = function(pixel) {
}
if (change) {
if(Math.random() < 0.2) {
- changePixel(pixel,"pop");
+ changePixel(pixel,"big_pop");
} else {
deletePixel(pixel.x,pixel.y);
return;
@@ -2395,15 +2499,17 @@ elements.perchloric_acid_gas.behavior = [
"XX|XX|XX",
"XX|XX|XX",
];
+elements.perchloric_acid_gas.burn = 0;
+elements.perchloric_acid_gas.ignore.push("fire","smoke");
-trueAcids.push("perchloric_acid");
-trueAcidGases.push("perchloric_acid_gas");
+eLists.ACID.push("perchloric_acid");
+eLists.ACIDGAS.push("perchloric_acid_gas");
acidReact("perchloric_acid","ammonia","rocket_fuel",null,100);
acidReact("perchloric_acid_gas","ammonia","rocket_fuel",null,100);
-elements.perchloric_acid.ignore.push("salt","sodium_perchlorate","rocket_fuel");
-elements.perchloric_acid_gas.ignore.push("salt","sodium_perchlorate","rocket_fuel");
+elements.perchloric_acid.ignore.push("salt","sodium_perchlorate","sodium_perchlorate_solution");
+elements.perchloric_acid_gas.ignore.push("salt","sodium_perchlorate","sodium_perchlorate_solution");
elements.rocket_fuel = {
color: "#edcfca",
@@ -2477,6 +2583,7 @@ elements.molten_iodine = {
stateLow: "iodine",
state: "liquid",
hidden: true,
+ category: "liquids",
};
elements.iodine_gas = {
@@ -2529,10 +2636,7 @@ elements.disinfectant = {
stain: 0.01
};
-createAcid("hydroiodic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#9670ff","#da6afc","#a77af5","#9670ff","#da6afc","#a77af5","#633a1d"],true,true,100,100,0,1000,1150,1)
-
-trueAcids.push("hydroiodic_acid");
-trueAcidGases.push("hydroiodic_acid_gas");
+createAcid("hydroiodic_acid",structuredClone(defaultAcidReactions),structuredClone(defaultAcidGasReactions),["#9670ff","#da6afc","#a77af5","#9670ff","#da6afc","#a77af5","#633a1d"],true,true,100,100,0,1000,1150,1,"IODIDE")
elements.hydrogen_iodide = {
color: "#aa8df2",
@@ -2557,6 +2661,10 @@ elements.hydrogen_iodide = {
forceAutoGen: true
};
+runAfterLoad(function() {
+ reactList("hydrogen_iodide", eLists.WATER, { "elem1": "hydroiodic_acid", "elem2": null });
+});
+
elements.liquid_hydrogen_iodide = {
reactions: {
"water": { "elem1": "hydroiodic_acid", "elem2": null },
@@ -2573,16 +2681,25 @@ elements.liquid_hydrogen_iodide = {
tempLow: -50.8,
};
+runAfterLoad(function() {
+ reactList("liquid_hydrogen_iodide", eLists.WATER, { "elem1": "hydroiodic_acid", "elem2": null });
+});
+
elements.hydroiodic_acid.ignore.push("hydrogen_iodide","liquid_hydrogen_iodide","hydrogen_iodide_ice");
elements.hydroiodic_acid_gas.ignore.push("hydrogen_iodide","liquid_hydrogen_iodide","hydrogen_iodide_ice");
-elements.hydroiodic_acid.reactions["water"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
-elements.hydroiodic_acid.reactions["salt_water"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
-elements.hydroiodic_acid.reactions["sugar_water"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
-elements.hydroiodic_acid.reactions["dirty_water"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
-elements.hydroiodic_acid.reactions["seltzer"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
-elements.hydroiodic_acid.reactions["pool_water"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
-elements.hydroiodic_acid.reactions["primordial_soup"] = { "elem1":"hydroiodic_acid", "elem2":"dirty_water"};
+
+eListAddIon("HYDROGEN","hydrogen_iodide");
+eListAddIon("IODIDE","hydrogen_iodide");
+eListAddIon("HYDROGEN","liquid_hydrogen_iodide");
+eListAddIon("IODIDE","liquid_hydrogen_iodide");
+eListAddIon("HYDROGEN","hydroiodic_acid");
+eListAddIon("IODIDE","hydroiodic_acid");
+eListAddIon("HYDROGEN","hydroiodic_acid_gas");
+eListAddIon("IODIDE","hydroiodic_acid_gas");
+runAfterLoad(function() {
+ reactList("hydroiodic_acid", eLists.WATER, { "elem2":"dirty_water"});
+});
@@ -2595,21 +2712,6 @@ elements.bauxite = {
tempHigh: 300
};
-elements.sodium_aluminate_solution = {
- color: ["#bdb3e6","#b4adeb"],
- behavior: behaviors.LIQUID,
- category: "liquids",
- hidden: true,
- density: 1005,
- state: "liquid",
- tempHigh: 100,
- stateHigh: ["sodium_aluminate","steam"],
- reactions: {
- //Bayer process
- "carbon_dioxide": { elem1:"aluminum_hydroxide", elem2: ["sodium_carbonate_solution","spent_sodium_aluminate_solution"] },
- },
-};
-
elements.spent_sodium_aluminate_solution = {
color: ["#696380","#7a759e"],
@@ -2622,44 +2724,15 @@ elements.spent_sodium_aluminate_solution = {
stateHigh: ["sodium_aluminate","sodium_aluminate","sodium_aluminate","gallium","steam","steam","steam","steam"],
};
-
-elements.sodium_aluminate = {
- color: ["#e6c9b3","#ebc8ad"],
- behavior: behaviors.POWDER,
- category: "powders",
- hidden: true,
- density: 1500,
- state: "solid",
- tempHigh: 1650,
- reactions: {
- "water": { elem1: "sodium_aluminate_solution", elem2: null },
- },
-};
-
-elements.sodium_carbonate_solution = {
- color: ["#c5c1d6","#afacc2"],
- behavior: behaviors.LIQUID,
- category: "liquids",
- hidden: true,
- density: 1005,
- state: "liquid",
- tempHigh: 100,
- stateHigh: ["sodium_carbonate","steam"],
-};
+createSalt("sodium_aluminate","sodium_aluminate_solution",["#e6c9b3","#ebc8ad"],["#bdb3e6","#b4adeb"],true,true,1650,-2,102,1500,1005,"SODIUM","ALUMINATE");
+elements.sodium_aluminate_solution.reactions["carbon_dioxide"] = { elem1:"aluminum_hydroxide", elem2: ["sodium_carbonate_solution","spent_sodium_aluminate_solution"] };
-elements.sodium_carbonate = {
- color: "#d8dae6",
- behavior: behaviors.POWDER,
- category: "powders",
- hidden: false,
- density: 2540,
- state: "solid",
- tempHigh: 851,
- reactions: {
- "water": { elem1: "sodium_carbonate_solution", elem2: null },
- },
-}
+createSalt("sodium_carbonate","sodium_carbonate_solution","#d8dae6",["#c5c1d6","#afacc2"],true,true,851,-2,102,2540,1010,"SODIUM","CARBONATE");
+createSalt("ammonium_chloride","ammonium_chloride_solution","#daeced",["#a299c7","#7e76b3"],true,true,338 ,-2,102,1519,1008,"AMMONIUM","CHLORIDE");
+elements["ammonium_chloride"].stateHigh = ["ammonia", "acid_gas"];
+delete elements["molten_ammonium_chloride"];
+acidReact("acid_gas","ammonia","ammonium_chloride",null,0);
elements.aluminum_hydroxide = {
@@ -2673,6 +2746,11 @@ elements.aluminum_hydroxide = {
stateHigh: ["alumina","steam"],
}
+
+eListAddIon("ALUMINUM","aluminum_hydroxide");
+eListAddIon("HYDROXIDE","aluminum_hydroxide");
+eListAdd("INSOLUBLE","aluminum_hydroxide");
+
elements.alumina = {
color: "#d1cbcb",
behavior: behaviors.SOLID,
@@ -2685,6 +2763,14 @@ elements.alumina = {
},
}
+eListAddIon("ALUMINUM","alumina");
+eListAddIon("OXIDE","alumina");
+eListAdd("INSOLUBLE","alumina");
+
+eListAddIon("ALUMINUM","molten_alumina");
+eListAddIon("OXIDE","molten_alumina");
+
+
elements.cryolite = {
@@ -2699,6 +2785,13 @@ elements.cryolite = {
},
}
+eListAddIon("SODIUM","cryolite");
+eListAddIon("HEXAFLUOROALUMINATE","cryolite");
+eListAdd("INSOLUBLE","cryolite");
+
+eListAddIon("SODIUM","molten_cryolite");
+eListAddIon("HEXAFLUOROALUMINATE","molten_cryolite");
+
elements.aluminum_trifluoride = {
color: ["#ebf4ff","#e3fdff"],
@@ -2710,6 +2803,14 @@ elements.aluminum_trifluoride = {
tempHigh: 1290,
}
+eListAddIon("ALUMINUM","aluminum_trifluoride");
+eListAddIon("FLUORIDE","aluminum_trifluoride");
+eListAdd("INSOLUBLE","aluminum_trifluoride");
+
+eListAddIon("ALUMINUM","aluminum_trifluoride_gas");
+eListAddIon("FLUORIDE","aluminum_trifluoride_gas");
+
+
elements.molten_aluminum_trifluoride = {
tempHigh: 1290,
@@ -2718,6 +2819,8 @@ elements.molten_aluminum_trifluoride = {
elements.aluminum_trifluoride_gas = {
tempLow: 1290,
+ state: "gas",
+ stateLow: "molten_aluminum_trifluoride"
}
@@ -2743,15 +2846,35 @@ elements.cryolite_solution = {
tempHigh: 950,
}
-elements.sodium_fluoride = {
- color: ["#8aebce","#b9edde"],
+
+createSalt("sodium_fluoride","sodium_fluoride_solution",["#8aebce","#b9edde"],["#8ad0eb","#b9e3ed"],false,true,993,-2,102,2558,1012,"SODIUM","FLUORIDE");
+
+elements.magnesium_fluoride = {
+ color: ["#aaabae","#a9adae"],
behavior: behaviors.POWDER,
category: "powders",
- density: 2558,
+ density: 3148,
state: "solid",
- tempHigh: 993,
-}
+ tempHigh: 1263,
+ reactions: {
+ "sulfuric_acid": { "elem1": "hydrogen_fluoride", "elem2":"epsom_salt" },
+ },
+ hidden: true
+};
+eListAddIon("MAGNESIUM","magnesium_fluoride");
+eListAddIon("FLUORIDE","magnesium_fluoride");
+eListAdd("INSOLUBLE","magnesium_fluoride");
+
+eListAddIon("MAGNESIUM","molten_magnesium_fluoride");
+eListAddIon("FLUORIDE","molten_magnesium_fluoride");
+
+
+elements.sulfuric_acid.ignore.push("epsom_salt","magnesium_fluoride");
+elements.sulfuric_acid_gas.ignore.push("epsom_salt","magnesium_fluoride");
+
+elements.hydrogen_fluoride.ignore.push("epsom_salt","magnesium_fluoride");
+elements.liquid_hydrogen_fluoride.ignore.push("epsom_salt","magnesium_fluoride");
//boron
@@ -2768,31 +2891,47 @@ elements.boric_acid = {
reactions: {
"hydrofluoric_acid": { elem1: "fluoroboric_acid", elem2: "dirty_water"},
"hydrofluoric_acid_gas": { elem1: "fluoroboric_acid_gas", elem2: "steam"},
+ "neutron": {elem2: null}
},
}
acidReact("hydrofluoric_acid","boric_acid","fluoroboric_acid","dirty_water",50);
acidReact("hydrofluoric_acid_gas","boric_acid","fluoroboric_acid_gas","steam",50);
-elements.hydrofluoric_acid.ignore.push("boric_acid","molten_boric_acid");
-elements.hydrofluoric_acid_gas.ignore.push("boric_acid","molten_boric_acid");
+elements.hydrofluoric_acid.ignore.push("molten_boric_acid");
+elements.hydrofluoric_acid_gas.ignore.push("molten_boric_acid");
elements.borax.hidden = false;
-acidReact("sulfuric_acid","salt","acid","sodium_sulfate");
-acidReact("sulfuric_acid_gas","salt","acid","sodium_sulfate");
-elements.acid.ignore.push("sodium_sulfate");
-elements.acid_gas.ignore.push("sodium_sulfate");
+createSalt("sodium_sulfate","sodium_sulfate_solution","#f3f2f5",blendColors("#f3f2f5","#2167ff",0.5),true,true,884,-2,102,2664,1013,"SODIUM","SULFATE");
+
+acidReact("sulfuric_acid","salt","acid","sodium_sulfate_solution");
+acidReact("sulfuric_acid_gas","salt","acid","sodium_sulfate_solution");
+acidReact("sulfuric_acid","salt_water","acid","sodium_sulfate_solution");
+acidReact("sulfuric_acid_gas","salt_water","acid","sodium_sulfate_solution");
+
+eListAddIon("BORON","boric_acid","base");
+eListAddIon("HYDROXIDE","boric_acid","base");
+eListAddIon("BORATE","boric_acid","acid");
+eListAddIon("HYDROGEN","boric_acid","acid");
+eListAdd("INSOLUBLE","boric_acid");
+
+eListAddIon("BORON","molten_boric_acid","base");
+eListAddIon("HYDROXIDE","molten_boric_acid","base");
+eListAddIon("BORATE","molten_boric_acid","acid");
+eListAddIon("HYDROGEN","molten_boric_acid","acid");
+
+eListAdd("AMPHOTERIC","boric_acid");
+eListAdd("AMPHOTERIC","molten_boric_acid");
+
+
+eListAddIon("BORATE","borax");
+eListAddIon("SODIUM","borax");
+eListAdd("INSOLUBLE","borax");
+
+eListAddIon("BORATE","molten_borax");
+eListAddIon("SODIUM","molten_borax");
-elements.sodium_sulfate = {
- color: "#f3f2f5",
- behavior: behaviors.POWDER,
- category: "powders",
- density: 2664,
- state: "solid",
- hidden: true,
- tempHigh: 884,
-}
elements.boron = {
@@ -2826,6 +2965,14 @@ elements.boron_trioxide = {
fireColor:["#34eb67","#5ceb34"],
}
+eListAddIon("BORON","boron_trioxide");
+eListAddIon("OXIDE","boron_trioxide");
+eListAdd("INSOLUBLE","boron_trioxide");
+
+eListAddIon("BORON","molten_boron_trioxide");
+eListAddIon("OXIDE","molten_boron_trioxide");
+
+
elements.molten_boron_trioxide = {
reactions: {
@@ -2851,21 +2998,27 @@ elements.boron_trifluoride = {
hidden: true,
tempLow: -100.3,
reactions: {
- "water": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
- "dirty_water": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
- "salt_water": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
- "sugar_water": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
"steam": { elem1: "fluoroboric_acid_gas", elem2: "boric_acid"},
- "seltzer": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
- "pool_water": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
- "primordial_soup": { elem1: "fluoroboric_acid", elem2: "boric_acid"},
},
}
+eListAddIon("BORON","boron_trifluoride");
+eListAddIon("FLUORIDE","boron_trifluoride");
+eListAdd("INSOLUBLE","boron_trifluoride");
+
+runAfterLoad(function() {
+ reactList("boron_trifluoride", eLists.WATER, { elem1: "fluoroboric_acid", elem2: "boric_acid"});
+});
+
+
elements.liquid_boron_trifluoride = {
tempLow: -126.8,
}
+eListAddIon("BORON","liquid_boron_trifluoride");
+eListAddIon("FLUORIDE","liquid_boron_trifluoride");
+eListAddIon("BORON","boron_trifluoride_ice");
+eListAddIon("FLUORIDE","boron_trifluoride_ice");
elements.boron_trichloride = {
color: "#ddf0dd",
@@ -2876,38 +3029,38 @@ elements.boron_trichloride = {
hidden: true,
tempLow: 12.6,
reactions: {
- "water": { elem1: "acid", elem2: "boric_acid"},
- "dirty_water": { elem1: "acid", elem2: "boric_acid"},
- "salt_water": { elem1: "acid", elem2: "boric_acid"},
- "sugar_water": { elem1: "acid", elem2: "boric_acid"},
"steam": { elem1: "acid_gas", elem2: "boric_acid"},
- "seltzer": { elem1: "acid", elem2: "boric_acid"},
- "pool_water": { elem1: "acid", elem2: "boric_acid"},
- "primordial_soup": { elem1: "acid", elem2: "boric_acid"},
"hydrogen": { elem1: "boron", elem2: "acid_gas"},
},
}
+eListAddIon("BORON","boron_trichloride");
+eListAddIon("CHLORIDE","boron_trichloride");
+eListAddIon("BORON","liquid_boron_trichloride");
+eListAddIon("CHLORIDE","liquid_boron_trichloride");
+eListAddIon("BORON","boron_trichloride_ice");
+eListAddIon("CHLORIDE","boron_trichloride_ice");
+eListAdd("INSOLUBLE","boron_trichloride");
+
+
+runAfterLoad(function() {
+ reactList("boron_trichloride", eLists.WATER, { elem1: "acid", elem2: "boric_acid"});
+});
+
elements.liquid_boron_trichloride = {
tempLow: -107.3,
}
-createAcid("fluoroboric_acid",{
- "water": { "elem2": "dirty_water" },
- "salt_water": { "elem2": "dirty_water" },
- "sugar_water": { "elem2": "dirty_water" },
- "seltzer": { "elem2": "dirty_water" },
- "pool_water": { "elem2": "dirty_water" },
- "primordial_soup": { "elem2": "dirty_water" },
- },{
- "water": { "elem2": "dirty_water" },
- "salt_water": { "elem2": "dirty_water" },
- "sugar_water": { "elem2": "dirty_water" },
- "seltzer": { "elem2": "dirty_water" },
- "pool_water": { "elem2": "dirty_water" },
- "primordial_soup": { "elem2": "dirty_water" },
- },["#3bffdb","#00caaf","#56c4a3"],true,true,100,100,0,1000,1020,1)
+runAfterLoad(function() {
+ reactList("fluoroboric_acid", eLists.WATER, { "elem2": "dirty_water" });
+});
+
+runAfterLoad(function() {
+ reactList("fluoroboric_acid_gas", eLists.WATER, { "elem2": "dirty_water" });
+});
+
+createAcid("fluoroboric_acid",{},{},["#3bffdb","#00caaf","#56c4a3"],true,true,100,100,0,1000,1020,1,"TETRAFLUOROBORATE")
elements.fluoroboric_acid.ignore.push("boron_trifluoride","liquid_boron_trifluoride","boron_trifluoride_ice");
elements.fluoroboric_acid_gas.ignore.push("boron_trifluoride","liquid_boron_trifluoride","boron_trifluoride_ice");
@@ -2972,9 +3125,11 @@ elements.fluoroboric_acid_gas.behavior = [
"XX|XX|XX",
];
+elements.fluoroboric_acid.ignore.push("molten_boric_acid");
+elements.fluoroboric_acid_gas.ignore.push("molten_boric_acid");
-trueAcids.push("fluoroboric_acid");
-trueAcidGases.push("fluoroboric_acid_gas");
+eLists.ACID.push("fluoroboric_acid");
+eLists.ACIDGAS.push("fluoroboric_acid_gas");
acidReact("fluoroboric_acid","sodium_carbonate","sodium_tetrafluoroborate",["carbon_dioxide,steam"],50);
acidReact("fluoroboric_acid_gas","sodium_carbonate","sodium_tetrafluoroborate",["carbon_dioxide,steam"],50);
@@ -3001,13 +3156,6 @@ elements.sodium_hydride = {
reactions: {
"chlorine": { elem1:"salt", elem2:"acid_gas" },
"vinegar": { elem1:"sodium_acetate", elem2:null, attr1:{"foam":15} },
- "water": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 },
- "salt_water": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 },
- "sugar_water": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 },
- "dirty_water": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 },
- "seltzer": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 },
- "pool_water": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 },
- "primordial_soup": { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 }
},
category: "powders",
state: "solid",
@@ -3017,9 +3165,17 @@ elements.sodium_hydride = {
burnTime:120,
};
+eListAddIon("SODIUM","sodium_hydride","base");
+eListAddIon("HYDRIDE","sodium_hydride","base");
+eListAdd("INSOLUBLE","sodium_hydride");
-acids.push(elements.sodium_hydride);
-elements.sodium_hydride.ignore = defaultAcidIgnore.concat(ignoreAcid);
+
+runAfterLoad(function() {
+ reactList("sodium_hydride", eLists.WATER, { elem1:["pop","pop","hydrogen","hydrogen"], chance:0.1, temp2:250 });
+});
+
+eLists.CAUSTIC.push("sodium_hydride");
+elements.sodium_hydride.ignore = defaultAcidIgnore.concat(eLists.CAUSTICIGNORE);
acidIgnore(["sodium_hydride"]);
elements.molten_sodium.reactions.hydrogen = { elem1: "sodium_hydride", elem2: null};
@@ -3050,16 +3206,29 @@ elements.sodium_methoxide = {
}
};
+eListAddIon("SODIUM","sodium_methoxide","base");
+eListAddIon("METHOXIDE","sodium_methoxide","base");
+eListAdd("INSOLUBLE","sodium_methoxide");
+eListAddIon("SODIUM","molten_sodium_methoxide","base");
+eListAddIon("METHOXIDE","molten_sodium_methoxide","base");
+
+
+
+runAfterLoad(function() {
+ reactList("sodium_methoxide", eLists.WATER, { elem1:"methanol", elem2:"sodium_hydroxide" });
+});
+
+
elements.molten_sodium_methoxide = {
behavior: behaviors.MOLTEN_CAUSTIC,
tempLow: 127,
}
-acids.push(elements.sodium_methoxide);
-acids.push(elements.molten_sodium_methoxide);
-elements.sodium_methoxide.ignore = defaultAcidIgnore.concat(ignoreAcid).concat(["sodium","molten_sodium","hydrogen","methanol","methanol_gas","trimethyl_borate"]);
-elements.molten_sodium_methoxide.ignore = defaultAcidGasIgnore.concat(ignoreAcid).concat(["sodium","molten_sodium","hydrogen","methanol","methanol_gas","trimethyl_borate"]);
+eLists.CAUSTIC.push("sodium_methoxide");
+eLists.CAUSTIC.push("molten_sodium_methoxide");
+elements.sodium_methoxide.ignore = defaultAcidIgnore.concat(eLists.CAUSTICIGNORE).concat(["sodium","molten_sodium","hydrogen","methanol","methanol_gas","trimethyl_borate"]);
+elements.molten_sodium_methoxide.ignore = defaultAcidGasIgnore.concat(eLists.CAUSTICIGNORE).concat(["sodium","molten_sodium","hydrogen","methanol","methanol_gas","trimethyl_borate"]);
acidIgnore(["sodium_methoxide","molten_sodium_methoxide"]);
@@ -3084,38 +3253,37 @@ elements.trimethyl_borate = {
fireColor:["#34eb67","#5ceb34"],
};
-elements.sodium_borohydride = {
- color: ["#d3d3de","#c7c7eb","#ededfc","#d9d9d9"],
- tempHigh: 400,
- behavior: behaviors.CAUSTIC,
- fireColor:["#34eb67","#5ceb34"],
- category: "powders",
- state: "solid",
- density: 1070,
- stateHigh: ["sodium_hydride","sodium","boron"],
- reactions: {},
-};
+createSalt("sodium_borohydride","sodium_borohydride_solution",["#d3d3de","#c7c7eb","#ededfc","#d9d9d9"],["#ababc7","#9d9dd1","#bdbddb","#a8a8a8"],false,true,400,-2,102,1070,1005,"SODIUM","BOROHYDRIDE");
-acids.push(elements.sodium_borohydride);
-elements.sodium_borohydride.ignore = defaultAcidIgnore.concat(ignoreAcid).concat(["sodium","molten_sodium","hydrogen","boron","trimethyl_borate"]);
-acidIgnore(["sodium_borohydride"]);
+elements.sodium_borohydride.behavior = behaviors.CAUSTIC;
+elements.sodium_borohydride_solution.behavior = [
+ "XX|DB%5|XX",
+ "DB%5 AND M2|XX|DB%5 AND M2",
+ "DB%5 AND M2|DB%10 AND M1|DB%5 AND M2",
+ ];
+elements.sodium_borohydride.fireColor = ["#34eb67","#5ceb34"];
+elements.sodium_borohydride_solution.fireColor = ["#34eb67","#5ceb34"];
+elements.sodium_borohydride.stateHigh = ["sodium_hydride","sodium","boron"];
+
+delete elements["molten_sodium_borohydride"];
+
+eLists.CAUSTIC.push("sodium_borohydride");
+eLists.CAUSTIC.push("sodium_borohydride_solution");
+elements.sodium_borohydride.ignore = defaultAcidIgnore.concat(eLists.CAUSTICIGNORE).concat(["sodium","molten_sodium","hydrogen","boron","trimethyl_borate"]);
+elements.sodium_borohydride_solution.ignore = defaultAcidIgnore.concat(eLists.CAUSTICIGNORE).concat(["sodium","molten_sodium","hydrogen","boron","trimethyl_borate"]);
+acidIgnore(["sodium_borohydride","sodium_borohydride_solution"]);
elements.sodium_hydride.ignore.push(["sodium","molten_sodium","hydrogen","boron"]);
-elements.sodium_tetrafluoroborate = {
- color: ["#deded3","#ebebc7","#fcfced","#d9d9d9"],
- tempHigh: 384,
- behavior: behaviors.POWDER,
- fireColor:["#34eb67","#5ceb34"],
- category: "powders",
- state: "solid",
- hidden: true,
- density: 2470,
- stateHigh: ["sodium_fluoride","boron_trifluoride"],
-};
+createSalt("sodium_tetrafluoroborate","sodium_tetrafluoroborate_solution",["#deded3","#ebebc7","#fcfced","#d9d9d9"],["#ababb7","#9d9dc1","#bdbdcb","#a8a898"],true,true,384,-2,102,2470,1012,"SODIUM","TETRAFLUOROBORATE");
-elements.fluoroboric_acid.ignore.push("sodium_tetrafluoroborate");
-elements.fluoroboric_acid_gas.ignore.push("sodium_tetrafluoroborate");
+elements.sodium_tetrafluoroborate.stateHigh = ["sodium_fluoride","boron_trifluoride"];
+elements.sodium_tetrafluoroborate.fireColor = ["#34eb67","#5ceb34"];
+
+delete elements["molten_sodium_tetrafluoroborate"];
+
+elements.fluoroboric_acid.ignore.push("sodium_tetrafluoroborate","sodium_tetrafluoroborate_solution");
+elements.fluoroboric_acid_gas.ignore.push("sodium_tetrafluoroborate","sodium_tetrafluoroborate_solution");
acidReact("sodium_hydride","boron_trifluoride","diborane","sodium_tetrafluoroborate",20);
acidReact("sulfuric_acid","sodium_borohydride","diborane","hydrogen",50);
@@ -3147,6 +3315,12 @@ elements.diborane = {
stateHigh: ["pentaborane","pentaborane","decaborane"],
};
+
+
+runAfterLoad(function() {
+ reactList("diborane", eLists.WATER, { elem1:"boric_acid", elem2:"hydrogen", temp1:100});
+});
+
elements.liquid_diborane = {
tempLow: -164,
}
@@ -3168,15 +3342,11 @@ elements.decaborane = {
burnInto:"boron_trioxide",
reactions:{
"oxygen": { elem1:"boron_trioxide", elem2:"fire" },
- "water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "salt_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "sugar_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "dirty_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "seltzer": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "pool_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "primordial_soup": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
}
};
+runAfterLoad(function() {
+ reactList("decaborane", eLists.WATER, { elem1:"boric_acid", elem2:"hydrogen", temp1:100});
+});
elements.molten_decaborane = {
behavior: behaviors.LIQUID,
@@ -3186,20 +3356,18 @@ elements.molten_decaborane = {
burnInto:"boron_trioxide",
reactions:{
"oxygen": { elem1:"boron_trioxide", elem2:"fire" },
- "water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "salt_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "sugar_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "dirty_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "seltzer": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "pool_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
- "primordial_soup": { elem1:"boric_acid", elem2:"hydrogen", temp1:100},
},
fireColor:["#34eb67","#5ceb34"],
category: "liquids",
state: "liquid",
hidden: true,
+ density: 900,
}
+runAfterLoad(function() {
+ reactList("molten_decaborane", eLists.WATER, { elem1:"boric_acid", elem2:"hydrogen", temp1:100});
+});
+
elements.pentaborane = {
@@ -3217,16 +3385,13 @@ elements.pentaborane = {
burnInto:"explosion",
reactions:{
"oxygen": { elem1:"boron_trioxide", elem2:"explosion" },
- "water": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
- "salt_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
- "sugar_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
- "dirty_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
- "seltzer": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
- "pool_water": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
- "primordial_soup": { elem1:"boric_acid", elem2:"hydrogen", temp1:200},
}
};
+runAfterLoad(function() {
+ reactList("pentaborane", eLists.WATER, { elem1:"boric_acid", elem2:"hydrogen", temp1:100});
+});
+
elements.pentaborane_gas = {
tempHigh: 250,
stateHigh: "decaborane",
@@ -3253,6 +3418,11 @@ elements.sodium_octahydrotriborate = {
stateHigh: "sodium_dodecaborate"
};
+eListAddIon("SODIUM","sodium_octahydrotriborate");
+eListAddIon("OCTAHYDROTRIBORATE","sodium_octahydrotriborate");
+eListAdd("INSOLUBLE","sodium_octahydrotriborate");
+
+
elements.sodium_dodecaborate = {
color: "#f5aef5",
tempHigh: 700, //see above comment
@@ -3267,6 +3437,12 @@ elements.sodium_dodecaborate = {
burnInto: "boron_trioxide",
};
+eListAddIon("SODIUM","sodium_dodecaborate");
+eListAddIon("DODECABORATE","sodium_dodecaborate");
+eListAdd("INSOLUBLE","sodium_dodecaborate");
+eListAddIon("SODIUM","molten_sodium_dodecaborate");
+eListAddIon("DODECABORATE","molten_sodium_dodecaborate");
+
@@ -3286,7 +3462,1958 @@ elements.sodium_bromoheptahydrotriborate = {
};
+eListAddIon("SODIUM","sodium_bromoheptahydrotriborate");
+eListAddIon("BROMOHEPTAHYDROTRIBORATE","sodium_bromoheptahydrotriborate");
+eListAdd("INSOLUBLE","sodium_bromoheptahydrotriborate");
+//elements.indium = {
+//
+//}
+
+//quit snooping around
+
+
+
+elements.uraninite = {
+ color: ["#545323","#50573b","#656660","#4d4933","#615e4a","#525043"],
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ tempHigh: 2865,
+ category: "land",
+ state: "solid",
+ density: 10970
+}
+
+
+elements.yellowcake = {
+ color: ["#dbd827","#bce346","#a8c418","#d9bb1a","#dec418","#cfb615"],
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ tempHigh: 1150,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 8300,
+ reactions: {
+ "hydrogen": { elem1:["uranium_dioxide","uranium_dioxide","uranium_dioxide","uranium_dioxide","thorium_dioxide"], elem2:"steam" },
+ }
+}
+
+elements.yellowcake_solution = {
+ color: "#d2ed6f",
+ ignore: elements.sulfuric_acid.ignore.concat(eLists.CAUSTICIGNORE).concat(["radiation","yellowcake","uraninite"]),
+ behavior: [
+ "XX|DB%5 AND CR:radiation%0.05|XX",
+ "DB%5 AND M2 AND CR:radiation%0.05|XX|DB%5 AND M2 AND CR:radiation%0.05",
+ "DB%5 AND M2|DB%10 AND M1|DB%5 AND M2",
+ ],
+ tempHigh: 337,
+ category: "liquids",
+ stateHigh: ["sulfuric_acid_gas","yellowcake"],
+ state: "liquid",
+ hidden: true,
+ density: 1850,
+ reactions: {}
+}
+
+
+acidIgnore(["yellowcake_solution"]);
+eLists.CAUSTIC.push("yellowcake_solution");
+eLists.ACID.push("yellowcake_solution");
+
+acidReact("sulfuric_acid","uraninite","yellowcake_solution",null,50);
+acidReact("sulfuric_acid_gas","uraninite","yellowcake","sulfuric_acid_gas",50);
+acidReact("sulfuric_acid","yellowcake","yellowcake_solution","yellowcake_solution",50);
+
+
+elements.alpha_particle = {
+ color: "#ff7878",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:helium%0.01 AND DL%0.25|XX",
+ "XX|XX|XX",
+ ],
+ reactions: {
+ "electric": { elem1:null, elem2:"helium", temp2:200 }
+ },
+ tick: behaviors.BOUNCY,
+ temp: 35,
+ category: "energy",
+ state: "gas",
+ density: 0.00012,
+ ignoreAir: true
+}
+
+elements.depleted_uranium = {
+ color: ["#599e61","#364d3c","#494d4a","#6c8a42","#798d65","#b5e089"],
+ behavior: [
+ "XX|CR:alpha_particle%0.01|XX",
+ "CR:alpha_particle%0.01|CH:thorium%0.001|CR:alpha_particle%0.01",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "neutron": { elem2: null, func: depleted_uranium},
+ "oxygen": { elem1:"depleted_uranium_dioxide", elem2: null, chance:0.1},
+ "meat": { elem2:"rotten_meat", chance:0.1 },
+ "cheese": { elem2:"rotten_cheese", chance:0.1 },
+ "quark_matter": {elem1: "stable_uranium"}
+ },
+ tempHigh: 1132.2,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 19100,
+ hardness: 0.6,
+ conduct: 0.235
+}
+
+runAfterLoad(function() {
+ reactList("depleted_uranium", eLists.WATER, { elem2: "dirty_water", chance:0.25 });
+});
+
+
+
+elements.molten_depleted_uranium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:alpha_particle%0.01|XX",
+ "M2 AND CR:alpha_particle%0.01|XX|M2 AND CR:alpha_particle%0.01",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "neutron": { elem2: null, func:depleted_uranium},
+ "quark_matter": {elem1: "stable_uranium"}
+ }
+}
+
+elements.enriched_uranium = {
+ color: ["#599e61","#364d3c","#494d4a","#6c8a42","#798d65","#b5e089"],
+ behavior: [
+ "XX|CR:radiation%2.5 AND CR:alpha_particle%0.1|XX",
+ "CR:radiation%2.5 AND CR:alpha_particle%0.1|CH:thorium%0.05 AND CH:protactinium%0.01|CR:radiation%2.5 AND CR:alpha_particle%0.1",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "neutron": { func:enriched_uranium, temp1: 150},
+ "oxygen": { elem1:"enriched_uranium_dioxide", elem2: null, chance:0.1},
+ "meat": { elem2:"rotten_meat", chance:0.1 },
+ "cheese": { elem2:"rotten_cheese", chance:0.1 },
+ "quark_matter": {elem1: "stable_uranium"}
+ },
+ tempHigh: 1132.2,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 19100,
+ hardness: 0.6,
+ conduct: 0.235,
+ excludeRandom: true
+}
+
+runAfterLoad(function() {
+ reactList("enriched_uranium", eLists.WATER, { elem2: "dirty_water", chance:0.25 });
+});
+
+runAfterLoad(function() {
+ reactList("uranium", eLists.WATER, { elem2: "dirty_water", chance:0.25 });
+});
+
+
+
+elements.molten_enriched_uranium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%2.5 AND CR:alpha_particle%0.1|XX",
+ "M2 AND CR:radiation%2.5 AND CR:alpha_particle%0.1|XX|M2 AND CR:radiation%2.5 AND CR:alpha_particle%0.1",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "neutron": { func: enriched_uranium, temp1: 150},
+ "quark_matter": {elem1: "stable_uranium"}
+ }
+}
+function enriched_uranium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "neptunium");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+}
+
+
+function depleted_uranium(pixel,p) {
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "plutonium");
+ }
+}
+
+
+elements.stable_uranium = {
+ color: [blendColors("#599e61","#ff0000"),blendColors("#364d3c","#00ff00"),blendColors("#494d4a","#0000ff"),blendColors("#6c8a42","#ff0000"),blendColors("#798d65","#00ff00"),blendColors("#b5e089","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "oxygen": { elem1:"stable_uranium_dioxide", elem2: null, chance:0.1},
+ "meat": { elem2:"rotten_meat", chance:0.1 },
+ "cheese": { elem2:"rotten_cheese", chance:0.1 },
+ "water": { elem2: "dirty_water", chance:0.25 }
+ },
+ tempHigh: 1132.2,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 19100,
+ hardness: 0.6,
+ conduct: 0.235,
+};
+runAfterLoad(function() {
+ reactList("stable_uranium", eLists.WATER, { elem2: "dirty_water", chance:0.25 });
+});
+
+elements.uranium.reactions["oxygen"] = { elem1:"uranium_dioxide", elem2: null, chance:0.1};
+elements.uranium.reactions["quark_matter"] = { elem1:"stable_uranium"};
+elements.uranium.behavior = [
+ "XX|CR:radiation%1 AND CR:alpha_particle%0.01|XX",
+ "CR:radiation%1 AND CR:alpha_particle%0.01|CH:thorium%0.001|CR:radiation%1 AND CR:alpha_particle%0.01",
+ "M2|M1|M2",
+ ];
+elements.molten_uranium.behavior = [
+ "XX|CR:fire%2.5 AND CR:radiation%1 AND CR:alpha_particle%0.01|XX",
+ "M2 AND CR:radiation%1 AND CR:alpha_particle%0.01|XX|M2 AND CR:radiation%1 AND CR:alpha_particle%0.01",
+ "M1|M1|M1",
+ ];
+elements.molten_uranium.reactions["quark_matter"] = { elem1:"stable_uranium"};
+
+
+eListAddIon("URANIUMIV","uranium_dioxide");
+eListAddIon("OXIDE","uranium_dioxide");
+eListAdd("INSOLUBLE","uranium_dioxide");
+eListAddIon("ENRICHEDURANIUMIV","enriched_uranium_dioxide");
+eListAddIon("OXIDE","enriched_uranium_dioxide");
+eListAdd("INSOLUBLE","enriched_uranium_dioxide");
+eListAddIon("DEPLETEDURANIUMIV","depleted_uranium_dioxide");
+eListAddIon("OXIDE","depleted_uranium_dioxide");
+eListAdd("INSOLUBLE","depleted_uranium_dioxide");
+eListAddIon("STABLEURANIUMIV","stable_uranium_dioxide");
+eListAddIon("OXIDE","stable_uranium_dioxide");
+eListAdd("INSOLUBLE","stable_uranium_dioxide");
+
+elements.uranium_dioxide = {
+ color: ["#474744","#21211f","#2b2b2b","#9c998c","#40403f","#24231d"],
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "neutron": { temp1: 25},
+ },
+ tempHigh: 2865,
+ category: "powders",
+ state: "solid",
+ density: 10970
+}
+
+
+elements.molten_uranium_dioxide = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%0.05|XX",
+ "M2 AND CR:radiation%0.05|XX|M2 AND CR:radiation%0.05",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "neutron": { temp1: 25}
+ }
+}
+
+
+elements.depleted_uranium_dioxide = {
+ color: ["#474744","#21211f","#2b2b2b","#9c998c","#40403f","#24231d"],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "neutron": { elem2: null},
+ },
+ tempHigh: 2865,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 10970
+}
+
+
+elements.stable_uranium_dioxide = {
+ color: [blendColors("#474744","#ff0000"),blendColors("#21211f","#00ff00"),blendColors("#2b2b2b","#0000ff"),blendColors("#9c998c","#ff0000"),blendColors("#40403f","#00ff00"),blendColors("#24231d","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "neutron": { elem2: null}
+ },
+ tempHigh: 2865,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 10970
+};
+
+elements.enriched_uranium_dioxide = {
+ color: ["#474744","#21211f","#2b2b2b","#9c998c","#40403f","#24231d"],
+ behavior: [
+ "XX|CR:radiation%0.25|XX",
+ "CR:radiation%0.25|XX|CR:radiation%0.25",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "neutron": {func:function(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+ }, temp1: 150},
+ },
+ tempHigh: 2865,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 10970
+};
+
+elements.molten_enriched_uranium_dioxide = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%0.25|XX",
+ "M2 AND CR:radiation%0.25|XX|M2 AND CR:radiation%0.25",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "neutron": {func:function(pixel,p) {transmuteAround(pixel);changePixel(pixel, "n_explosion"); elementCircle(p.x,p.y,2,"neutron")}},
+ }
+};
+
+function reduce(element, element2, result) {
+ if(element2 === "oxygen") {
+
+ Object.assign(elements[element].reactions, {
+ "molten_magnesium": { elem1: result, elem2: "magnesium_oxide"},
+ "molten_calcium": { elem1: result, elem2: "quicklime"},
+ //"molten_sodium": { elem1: result, elem2: "sodium_oxide"},
+ });
+ }
+ if(element2 === "fluorine") {
+
+ Object.assign(elements[element].reactions, {
+ "molten_magnesium": { elem1: result, elem2: "magnesium_fluoride"},
+ "molten_calcium": { elem1: result, elem2: "fluorite"},
+ "molten_sodium": { elem1: result, elem2: "sodium_fluoride"},
+ "molten_sodium": { elem1: result, elem2: "potassium_fluoride"},
+ });
+ }
+}
+
+reduce("uranium_dioxide", "oxygen", "uranium");
+reduce("enriched_uranium_dioxide", "oxygen", "enriched_uranium");
+reduce("depleted_uranium_dioxide", "oxygen", "depleted_uranium");
+reduce("stable_uranium_dioxide", "oxygen", "stable_uranium");
+
+
+
+acidReact("hydrofluoric_acid","uranium_dioxide","uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid","depleted_uranium_dioxide","depleted_uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid","enriched_uranium_dioxide","enriched_uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid","stable_uranium_dioxide","stable_uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","uranium_dioxide","uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","depleted_uranium_dioxide","depleted_uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","enriched_uranium_dioxide","enriched_uranium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","stable_uranium_dioxide","stable_uranium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","uranium_dioxide","uranium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","depleted_uranium_dioxide","depleted_uranium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","enriched_uranium_dioxide","enriched_uranium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","stable_uranium_dioxide","stable_uranium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","uranium_dioxide","uranium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","depleted_uranium_dioxide","depleted_uranium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","enriched_uranium_dioxide","enriched_uranium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","stable_uranium_dioxide","stable_uranium_tetrafluoride","fire");
+
+elements.hydrofluoric_acid.ignore.push("uranium_hexafluoride","enriched_uranium_hexafluoride","depleted_uranium_hexafluoride","stable_uranium_hexafluoride");
+elements.hydrofluoric_acid_gas.ignore.push("uranium_hexafluoride","enriched_uranium_hexafluoride","depleted_uranium_hexafluoride","stable_uranium_hexafluoride");
+elements.hydrogen_fluoride.ignore.push("uranium_hexafluoride","enriched_uranium_hexafluoride","depleted_uranium_hexafluoride","stable_uranium_hexafluoride");
+elements.liquid_hydrogen_fluoride.ignore.push("uranium_hexafluoride","enriched_uranium_hexafluoride","depleted_uranium_hexafluoride","stable_uranium_hexafluoride");
+
+
+eListAddIon("URANIUMIV","uranium_tetrafluoride");
+eListAddIon("FLUORIDE","uranium_tetrafluoride");
+eListAdd("INSOLUBLE","uranium_tetrafluoride");
+eListAddIon("ENRICHEDURANIUMIV","enriched_uranium_tetrafluoride");
+eListAddIon("FLUORIDE","enriched_uranium_tetrafluoride");
+eListAdd("INSOLUBLE","enriched_uranium_tetrafluoride");
+eListAddIon("DEPLETEDURANIUMIV","depleted_uranium_tetrafluoride");
+eListAddIon("FLUORIDE","depleted_uranium_tetrafluoride");
+eListAdd("INSOLUBLE","depleted_uranium_tetrafluoride");
+eListAddIon("STABLEURANIUMIV","stable_uranium_tetrafluoride");
+eListAddIon("FLUORIDE","stable_uranium_tetrafluoride");
+eListAdd("INSOLUBLE","stable_uranium_tetrafluoride");
+
+
+elements.uranium_tetrafluoride = {
+ color: ["#495747","#394d38","#5a7859"],
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ reactions: {},
+ tempHigh: 1036,
+ category: "powders",
+ state: "solid",
+ density: 6700,
+ hidden: true
+}
+
+
+elements.molten_uranium_tetrafluoride = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%0.05|XX",
+ "M2 AND CR:radiation%0.05|XX|M2 AND CR:radiation%0.05",
+ "M1|M1|M1",
+ ]
+}
+
+
+elements.depleted_uranium_tetrafluoride = {
+ color: ["#495747","#394d38","#5a7859"],
+ behavior: behaviors.POWDER,
+ reactions: {},
+ tempHigh: 1036,
+ category: "powders",
+ state: "solid",
+ density: 6700,
+ hidden: true
+}
+
+
+elements.stable_uranium_tetrafluoride = {
+ color: [blendColors("#495747","#ff0000"),blendColors("#394d38","#00ff00"),blendColors("#5a7859","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {},
+ tempHigh: 1036,
+ category: "powders",
+ state: "solid",
+ density: 6700,
+ hidden: true
+}
+
+elements.enriched_uranium_tetrafluoride = {
+ color: ["#495747","#394d38","#5a7859"],
+ behavior: [
+ "XX|CR:radiation%0.25|XX",
+ "CR:radiation%0.25|XX|CR:radiation%0.25",
+ "M2|M1|M2",
+ ],
+ reactions: {},
+ tempHigh: 1036,
+ category: "powders",
+ state: "solid",
+ density: 6700,
+ hidden: true
+}
+
+
+elements.molten_enriched_uranium_tetrafluoride = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%0.25|XX",
+ "M2 AND CR:radiation%0.25|XX|M2 AND CR:radiation%0.25",
+ "M1|M1|M1",
+ ]
+}
+
+
+
+acidReact("fluorine","uranium_tetrafluoride","uranium_hexafluoride","fire");
+acidReact("fluorine","depleted_uranium_tetrafluoride","depleted_uranium_hexafluoride","fire");
+acidReact("fluorine","enriched_uranium_tetrafluoride","enriched_uranium_hexafluoride","fire");
+acidReact("fluorine","stable_uranium_tetrafluoride","stable_uranium_hexafluoride","fire");
+acidReact("liquid_fluorine","uranium_tetrafluoride","uranium_hexafluoride","fire");
+acidReact("liquid_fluorine","depleted_uranium_tetrafluoride","depleted_uranium_hexafluoride","fire");
+acidReact("liquid_fluorine","enriched_uranium_tetrafluoride","enriched_uranium_hexafluoride","fire");
+acidReact("liquid_fluorine","stable_uranium_tetrafluoride","stable_uranium_hexafluoride","fire");
+
+reduce("uranium_tetrafluoride", "fluorine", "uranium");
+reduce("enriched_uranium_tetrafluoride", "fluorine", "enriched_uranium");
+reduce("depleted_uranium_tetrafluoride", "fluorine", "depleted_uranium");
+reduce("stable_uranium_tetrafluoride", "fluorine", "stable_uranium");
+
+
+eListAddIon("URANIUMVI","uranium_hexafluoride");
+eListAddIon("FLUORIDE","uranium_hexafluoride");
+eListAdd("INSOLUBLE","uranium_hexafluoride");
+eListAddIon("ENRICHEDURANIUMVI","enriched_uranium_hexafluoride");
+eListAddIon("FLUORIDE","enriched_uranium_hexafluoride");
+eListAdd("INSOLUBLE","enriched_uranium_hexafluoride");
+eListAddIon("DEPLETEDURANIUMVI","depleted_uranium_hexafluoride");
+eListAddIon("FLUORIDE","depleted_uranium_hexafluoride");
+eListAdd("INSOLUBLE","depleted_uranium_hexafluoride");
+eListAddIon("STABLEURANIUMVI","stable_uranium_hexafluoride");
+eListAddIon("FLUORIDE","stable_uranium_hexafluoride");
+eListAdd("INSOLUBLE","stable_uranium_hexafluoride");
+
+
+elements.uranium_hexafluoride = {
+ color: "#f7fff7",
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "hydrogen": { elem1: "uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 56.5,
+ category: "powders",
+ state: "solid",
+ density: 5090,
+ stateHighName: "uranium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+
+elements.uranium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ behavior2: [
+ ["XX","CR:radiation%0.25","XX"],
+ ["CR:radiation%0.25","XX","CR:radiation%0.25"],
+ ["XX","CR:radiation%0.25","XX"]
+ ],
+ tick: function(pixel) {
+ pixelTick(pixel,elements[pixel.element].behavior2);
+ },
+ state: "gas",
+ density: 12.84,
+ reactions: {
+ "hydrogen": { elem1: "uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ onCentrifuge: function(pixel) {
+ if(Math.random() < 0.05) {
+ if(Math.random() < 0.8) {
+ changePixel(pixel,"depleted_uranium_hexafluoride");
+ }
+ else
+ {
+ changePixel(pixel,"enriched_uranium_hexafluoride");
+ }
+ }
+ },
+}
+
+
+elements.depleted_uranium_hexafluoride = {
+ color: "#f7fff7",
+ behavior: behaviors.POWDER,
+ reactions: {
+ "hydrogen": { elem1: "depleted_uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 56.5,
+ category: "powders",
+ state: "solid",
+ density: 5090,
+ stateHighName: "depleted_uranium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+elements.depleted_uranium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ state: "gas",
+ density: 12.84,
+ reactions: {
+ "hydrogen": { elem1: "depleted_uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+}
+
+
+
+elements.stable_uranium_hexafluoride = {
+ color: [blendColors("#f7fff7","#ff0000"),blendColors("#f7fff7","#00ff00"),blendColors("#f7fff7","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "hydrogen": { elem1: "stable_uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 56.5,
+ category: "powders",
+ state: "solid",
+ density: 5090,
+ stateHighName: "stable_uranium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+elements.stable_uranium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ state: "gas",
+ density: 12.84,
+ reactions: {
+ "hydrogen": { elem1: "stable_uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+}
+
+
+
+elements.enriched_uranium_hexafluoride = {
+ color: "#f7fff7",
+ behavior: [
+ "XX|CR:radiation%0.25|XX",
+ "CR:radiation%0.25|XX|CR:radiation%0.25",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "hydrogen": { elem1: "enriched_uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 56.5,
+ category: "powders",
+ state: "solid",
+ density: 5090,
+ stateHighName: "enriched_uranium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+elements.enriched_uranium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ behavior2: [
+ ["XX","CR:radiation%0.25","XX"],
+ ["CR:radiation%0.25","XX","CR:radiation%0.25"],
+ ["XX","CR:radiation%0.25","XX"]
+ ],
+ tick: function(pixel) {
+ pixelTick(pixel,elements[pixel.element].behavior2);
+ },
+ reactions: {
+ "hydrogen": { elem1: "enriched_uranium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ state: "gas",
+ density: 12.84
+}
+
+runAfterLoad(function() {
+ reactList("uranium_hexafluoride", eLists.WATER, { "elem1": "uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("depleted_uranium_hexafluoride", eLists.WATER, { "elem1": "depleted_uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("enriched_uranium_hexafluoride", eLists.WATER, { "elem1": "enriched_uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("stable_uranium_hexafluoride", eLists.WATER, { "elem1": "stable_uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("uranium_hexafluoride_gas", eLists.WATER, { "elem1": "uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("depleted_uranium_hexafluoride_gas", eLists.WATER, { "elem1": "depleted_uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("enriched_uranium_hexafluoride_gas", eLists.WATER, { "elem1": "enriched_uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("stable_uranium_hexafluoride_gas", eLists.WATER, { "elem1": "stable_uranium_tetrafluoride", elem2: "hydrofluoric_acid" });
+});
+
+elements.radium = {
+ color: "#3bdeff",
+ behavior: [
+ "XX|CR:radiation%10|XX",
+ "CR:radiation%10|CH:radon%0.1|CR:radiation%10",
+ "M2|M1|M2",
+ ],
+ tick: function(pixel) {
+ pixel.temp += 1;
+ },
+ reactions: {
+ "quark_matter": { "elem1":"stable_radium"},
+ },
+ tempHigh: 700,
+ category: "powders",
+ state: "solid",
+ density: 5500,
+ conduct: 0.40,
+};
+
+
+runAfterLoad(function() {
+ reactList("radium", eLists.WATER, { "elem1": ["radium_water","rad_pop"], elem2:["hydrogen","bubble"], chance:0.05, temp2:350, func:radiumWater });
+});
+
+elements.molten_radium = {
+ behavior: [
+ "XX|CR:radiation%10|XX",
+ "M2 AND CR:radiation%10|CH:radon%0.01|M2 AND CR:radiation%10",
+ "M1|M1|M1",
+ ],
+ tick: function(pixel) {
+ pixel.temp += 1;
+ },
+ reactions: {
+ "quark_matter": { "elem1":"stable_radium"},
+ },
+ conduct: 0.40
+}
+
+runAfterLoad(function() {
+ reactList("molten_radium", eLists.WATER, { "elem1": ["radium_water","rad_pop"], elem2:["hydrogen","bubble"], chance:0.05, temp2:350, func:radiumWater });
+});
+
+function radiumWater(pixel,p) {
+ elementCircle(pixel.x,pixel.y,15,"radium_water",0.1,eLists.WATER);
+}
+
+elements.radium_water = {
+ color: "#3bc4ff",
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "M2 AND CR:radiation%0.05|XX|M2 AND CR:radiation%0.05",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "head": { elem2:null, chance:0.4 },
+ },
+ tempHigh: 100,
+ stateHigh: "rad_steam",
+ state: "liquid",
+ density: 1100,
+ category: "liquids",
+ hidden: true,
+ tempLow: 0
+}
+
+eListAdd("WATER","radium_water");
+
+elements.actinium = {
+ color: "#62ebf0",
+ behavior: [
+ "XX|CR:alpha_particle%0.1 AND CR:radiation%10|XX",
+ "CR:alpha_particle%0.1 AND CR:radiation%10|CH:radium%0.02|CR:alpha_particle%0.1 AND CR:radiation%10",
+ "M2|M1|M2",
+ ],
+ tick: function(pixel) {
+ pixel.temp += 2.5;
+ },
+ reactions: {
+ "quark_matter": { "elem1":"stable_actinium"}
+ },
+ tempHigh: 1227,
+ category: "powders",
+ state: "solid",
+ density: 10000,
+ conduct: 0.225
+};
+elements.molten_actinium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:alpha_particle%0.1 AND CR:radiation%10|XX",
+ "M2 AND CR:alpha_particle%0.1 AND CR:radiation%10|CH:radium%0.02|M2 AND CR:alpha_particle%0.1 AND CR:radiation%10",
+ "M1|M1|M1",
+ ],
+ tick: function(pixel) {
+ pixel.temp += 2.5;
+ },
+ reactions: {
+ "quark_matter": { "elem1":"stable_actinium"}
+ },
+ conduct: 0.225
+}
+
+elements.thorium = {
+ color: ["#599e8a","#364d4b","#494d4c","#428a58","#658d7a","#89e0a2"],
+ behavior: [
+ "XX|CR:alpha_particle%0.01|XX",
+ "CR:alpha_particle%0.01|CH:lead%0.001|CR:alpha_particle%0.01",
+ "XX|CR:alpha_particle%0.01|XX",
+ ],
+ reactions: {
+ "neutron": { temp1: 100, func:function(pixel,p) {if(Math.random() < 0.1) {changePixel(pixel, "radium"); elementCircle(p.x,p.y,2,"neutron");}}},
+ "oxygen": { elem1:"thorium_dioxide", elem2: null, chance:0.1},
+ "quark_matter": {elem1: "stable_thorium"}
+ },
+ tempHigh: 1750,
+ category: "solids",
+ state: "solid",
+ density: 11700,
+ hardness: 0.7,
+ conduct: 0.235
+};
+elements.molten_thorium = {
+ behavior: [
+ "XX|CR:alpha_particle%0.01|XX",
+ "M2 AND CR:alpha_particle%0.01|XX|M2 AND CR:alpha_particle%0.01",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "neutron": { temp1: 100, func:function(pixel,p) {if(Math.random() < 0.1) {changePixel(pixel, "radium"); elementCircle(p.x,p.y,2,"neutron");}}},
+ "oxygen": { elem1:"thorium_dioxide", elem2: null},
+ "quark_matter": {elem1: "stable_thorium"}
+ }
+}
+
+elements.protactinium = {
+ color: ["#9899a3","#44464a","#5a5b5e"],
+ behavior: [
+ "XX|CR:alpha_particle%0.01 AND CR:radiation%2|XX",
+ "CR:alpha_particle%0.01 AND CR:radiation%2|CH:actinium%0.01|CR:alpha_particle%0.01 AND CR:radiation%2",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_protactinium"}
+ },
+ tempHigh: 1568,
+ category: "powders",
+ state: "solid",
+ density: 15700,
+ hardness: 0.1,
+ conduct: 0.235
+}
+
+elements.molten_protactinium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:alpha_particle%0.01 AND CR:radiation%2|XX",
+ "M2 AND CR:alpha_particle%0.01 AND CR:radiation%2|CH:actinium%0.01|M2 AND CR:alpha_particle%0.01 AND CR:radiation%2",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_protactinium"}
+ }
+}
+
+
+
+elements.neptunium = {
+ color: ["#626580","#3f4a61","#4a5463"],
+ behavior: [
+ "XX|CR:neutron%0.1 AND CR:radiation%2|XX",
+ "CR:neutron%0.1 AND CR:radiation%2|CH:thorium%0.025|CR:neutron%0.1 AND CR:radiation%2",
+ "XX|CR:neutron%0.1 AND CR:radiation%2|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_neptunium"},
+ "neutron": {func:fissile, temp1: 150}
+ },
+ tempHigh: 639,
+ category: "solids",
+ state: "solid",
+ density: 19380,
+ hardness: 0.7,
+ conduct: 0.2
+}
+
+elements.molten_neptunium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%0.1 AND CR:radiation%2|XX",
+ "M2 AND CR:neutron%0.1 AND CR:radiation%2|CH:thorium%0.025|M2 AND CR:neutron%0.1 AND CR:radiation%2",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_neptunium"},
+ "neutron": {func:fissile, temp1: 150}
+ }
+}
+
+function fissile(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+}
+
+
+elements.plutonium = {
+ color: ["#5fc29f","#5d9e7d","#5b7d6b"],
+ behavior: [
+ "XX|CR:neutron%0.05 AND CR:radiation%2|XX",
+ "CR:neutron%0.05 AND CR:radiation%2|CH:enriched_uranium%0.025|CR:neutron%0.05 AND CR:radiation%2",
+ "XX|CR:neutron%0.05 AND CR:radiation%2|XX",
+ ],
+ reactions: {
+ "oxygen": { elem1:"plutonium_dioxide", elem2: null},
+ "quark_matter": {elem1: "stable_plutonium"},
+ "neutron": {func:plutonium, temp1: 150}
+ },
+ tempHigh: 639,
+ category: "solids",
+ state: "solid",
+ density: 19850,
+ hardness: 0.7,
+ conduct: 0.2
+}
+elements.stable_plutonium = {
+ color: [blendColors("#5fc29f","#ff0000"),blendColors("#5d9e7d","#00ff00"),blendColors("#5b7d6b","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "oxygen": { elem1:"stable_plutonium_dioxide", elem2: null}
+ },
+ tempHigh: 639,
+ category: "solids",
+ state: "solid",
+ density: 19850,
+ hardness: 0.7,
+ conduct: 0.2,
+ hidden: true
+};
+
+runAfterLoad(function() {
+ reactList("plutonium", eLists.WATER, { elem2: "dirty_water", chance:0.25 });
+});
+runAfterLoad(function() {
+ reactList("stable_plutonium", eLists.WATER, { elem2: "dirty_water", chance:0.25 });
+});
+
+elements.plutonium_dioxide = {
+ color: ["#edcf47","#c7a924","#e3c129"],
+ behavior: [
+ "XX|CR:radiation%0.25|XX",
+ "CR:radiation%0.25|XX|CR:radiation%0.25",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "neutron": {func:function(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+ }, temp1: 150},
+ },
+ tempHigh: 2744,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 11500
+};
+
+elements.molten_plutonium_dioxide = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%0.25|XX",
+ "M2 AND CR:radiation%0.25|XX|M2 AND CR:radiation%0.25",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "neutron": {func:function(pixel,p) {transmuteAround(pixel);changePixel(pixel, "n_explosion"); elementCircle(p.x,p.y,2,"neutron")}},
+ }
+};
+elements.stable_plutonium_dioxide = {
+ color: [blendColors("#edcf47","#ff0000"),blendColors("#c7a924","#00ff00"),blendColors("#e3c129","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "neutron": { elem2: null}
+ },
+ tempHigh: 2744,
+ category: "powders",
+ hidden: true,
+ state: "solid",
+ density: 11500
+};
+
+reduce("plutonium_dioxide", "oxygen", "plutonium");
+reduce("stable_plutonium_dioxide", "oxygen", "stable_plutonium");
+
+
+
+acidReact("hydrofluoric_acid","plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid","stable_plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","stable_plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","stable_plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","plutonium_dioxide","plutonium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","stable_plutonium_dioxide","plutonium_tetrafluoride","fire");
+
+elements.hydrofluoric_acid.ignore.push("plutonium_hexafluoride","stable_plutonium_hexafluoride");
+elements.hydrofluoric_acid_gas.ignore.push("plutonium_hexafluoride","stable_plutonium_hexafluoride");
+elements.hydrogen_fluoride.ignore.push("plutonium_hexafluoride","stable_plutonium_hexafluoride");
+elements.liquid_hydrogen_fluoride.ignore.push("plutonium_hexafluoride","stable_plutonium_hexafluoride");
+
+eListAddIon("PLUTONIUMIV","plutonium_tetrafluoride");
+eListAddIon("FLUORIDE","plutonium_tetrafluoride");
+eListAdd("INSOLUBLE","plutonium_tetrafluoride");
+eListAddIon("STABLEPLUTONIUMIV","stable_plutonium_tetrafluoride");
+eListAddIon("FLUORIDE","stable_plutonium_tetrafluoride");
+eListAdd("INSOLUBLE","stable_plutonium_tetrafluoride");
+
+
+elements.plutonium_tetrafluoride = {
+ color: ["#a13d0b","#85401d","#733211"],
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ reactions: {},
+ tempHigh: 1027,
+ category: "powders",
+ state: "solid",
+ density: 7100,
+ hidden: true
+}
+
+
+elements.molten_plutonium_tetrafluoride = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:radiation%0.05|XX",
+ "M2 AND CR:radiation%0.05|XX|M2 AND CR:radiation%0.05",
+ "M1|M1|M1",
+ ]
+}
+
+
+elements.stable_plutonium_tetrafluoride = {
+ color: [blendColors("#a13d0b","#ff0000"),blendColors("#85401d","#00ff00"),blendColors("#733211","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {},
+ tempHigh: 1027,
+ category: "powders",
+ state: "solid",
+ density: 7100,
+ hidden: true
+}
+
+acidReact("fluorine","plutonium_tetrafluoride","plutonium_hexafluoride","fire");
+acidReact("fluorine","stable_plutonium_tetrafluoride","stable_plutonium_hexafluoride","fire");
+acidReact("liquid_fluorine","plutonium_tetrafluoride","plutonium_hexafluoride","fire");
+acidReact("liquid_fluorine","stable_plutonium_tetrafluoride","stable_plutonium_hexafluoride","fire");
+acidReact("foof","plutonium_tetrafluoride","plutonium_hexafluoride",null);
+acidReact("foof","stable_plutonium_tetrafluoride","stable_plutonium_hexafluoride",null);
+
+reduce("plutonium_tetrafluoride", "fluorine", "plutonium");
+reduce("stable_plutonium_tetrafluoride", "fluorine", "stable_plutonium");
+
+
+eListAddIon("PLUTONIUMVI","plutonium_hexafluoride");
+eListAddIon("FLUORIDE","plutonium_hexafluoride");
+eListAdd("INSOLUBLE","plutonium_hexafluoride");
+eListAddIon("STABLEPLUTONIUMVI","stable_plutonium_hexafluoride");
+eListAddIon("FLUORIDE","stable_plutonium_hexafluoride");
+eListAdd("INSOLUBLE","stable_plutonium_hexafluoride");
+
+
+elements.plutonium_hexafluoride = {
+ color: "#6e2602",
+ behavior: [
+ "XX|CR:radiation%0.05|XX",
+ "CR:radiation%0.05|XX|CR:radiation%0.05",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "hydrogen": { elem1: "plutonium_hexafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 62.5,
+ category: "powders",
+ state: "solid",
+ density: 5080,
+ stateHighName: "plutonium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+
+elements.plutonium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ behavior2: [
+ ["XX","CR:radiation%0.25","XX"],
+ ["CR:radiation%0.25","XX","CR:radiation%0.25"],
+ ["XX","CR:radiation%0.25","XX"]
+ ],
+ tick: function(pixel) {
+ pixelTick(pixel,elements[pixel.element].behavior2);
+ },
+ state: "gas",
+ density: 14.88,
+ reactions: {
+ "hydrogen": { elem1: "plutonium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+}
+
+
+elements.stable_plutonium_hexafluoride = {
+ color: [blendColors("#6e2602","#ff0000"),blendColors("#6e2602","#00ff00"),blendColors("#6e2602","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "hydrogen": { elem1: "stable_plutonium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 62.5,
+ category: "powders",
+ state: "solid",
+ density: 5080,
+ stateHighName: "stable_plutonium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+elements.stable_plutonium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ state: "gas",
+ density: 14.88,
+ reactions: {
+ "hydrogen": { elem1: "stable_plutonium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+}
+
+
+
+runAfterLoad(function() {
+ reactList("plutonium_hexafluoride", eLists.WATER, { "elem1": "plutonium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("stable_plutonium_hexafluoride", eLists.WATER, { "elem1": "stable_plutonium_tetrafluoride", elem2: "hydrofluoric_acid" });
+});
+
+
+elements.molten_plutonium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%0.05 AND CR:radiation%2|XX",
+ "M2 AND CR:neutron%0.05 AND CR:radiation%2|CH:enriched_uranium%0.025|M2 AND CR:neutron%0.05 AND CR:radiation%2",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_plutonium"},
+ "neutron": {func:plutonium, temp1: 150}
+ }
+}
+
+
+function plutonium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "americium");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+}
+
+elements.americium = {
+ color: ["#42ebaf","#59d998","#d0dbd5"],
+ behavior: [
+ "XX|CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2|XX",
+ "CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2|CH:neptunium%0.05 AND CH:plutonium%0.05|CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2",
+ "XX|CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_americium"},
+ "neutron": {func:americium, temp1: 150}
+ },
+ tempHigh: 1176,
+ category: "solids",
+ state: "solid",
+ density: 12000,
+ hardness: 0.9,
+ conduct: 0.2
+}
+
+elements.stable_americium = {
+ color: [blendColors("#42ebaf","#ff0000"),blendColors("#59d998","#00ff00"),blendColors("#d0dbd5","#0000ff")],
+ behavior: behaviors.WALL,
+ tempHigh: 1176,
+ category: "solids",
+ state: "solid",
+ density: 12000,
+ hardness: 0.9,
+ conduct: 0.2,
+ hidden: true
+}
+
+elements.molten_americium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2|XX",
+ "M2 AND CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2|CH:neptunium%0.05 AND CH:plutonium%0.05|M2 AND CR:neutron%0.1 AND CR:radiation%2 AND CR:alpha_particle%2",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_americium"},
+ "neutron": {func:americium, temp1: 150}
+ }
+}
+
+function americium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "curium");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+}
+
+
+elements.curium = {
+ color: ["#fab1f1","#d6c9d5","#e0b1d6"],
+ behavior: [
+ "XX|CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1|CH:plutonium%0.075|CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "XX|CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_curium"},
+ "neutron": {func:curium, temp1: 175}
+ },
+ tempHigh: 1340,
+ category: "solids",
+ state: "solid",
+ density: 13510,
+ hardness: 0.9,
+ conduct: 0.2
+}
+
+elements.stable_curium = {
+ color: [blendColors("#fab1f1","#ff0000"),blendColors("#d6c9d5","#00ff00"),blendColors("#e0b1d6","#0000ff")],
+ behavior: behaviors.WALL,
+ tempHigh: 1340,
+ category: "solids",
+ state: "solid",
+ density: 13510,
+ hardness: 0.9,
+ conduct: 0.2,
+ hidden: true
+}
+
+elements.molten_curium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "M2 AND CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1|CH:plutonium%0.075|M2 AND CR:neutron%0.5 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_curium"},
+ "neutron": {func:curium, temp1: 150}
+ }
+}
+
+function curium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "berkelium");
+ }
+ elementCircle(p.x,p.y,2,"neutron");
+}
+
+
+elements.berkelium = {
+ color: ["#f2edfa","#bdbccf","#d7cae8"],
+ behavior: [
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:californium%0.075|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_berkelium"},
+ "neutron": {func:berkelium, temp1: 175}
+ },
+ tempHigh: 986,
+ category: "solids",
+ state: "solid",
+ density: 13250,
+ hardness: 0.9,
+ conduct: 0.2
+}
+
+elements.stable_berkelium = {
+ color: [blendColors("#f2edfa","#ff0000"),blendColors("#bdbccf","#00ff00"),blendColors("#d7cae8","#0000ff")],
+ behavior: behaviors.WALL,
+ tempHigh: 986,
+ category: "solids",
+ state: "solid",
+ density: 13250,
+ hardness: 0.9,
+ conduct: 0.2,
+ hidden: true
+}
+
+elements.molten_berkelium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:californium%0.075|M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_berkelium"},
+ "neutron": {func:berkelium, temp1: 150}
+ }
+}
+
+function berkelium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "californium");
+ }
+ elementCircle(p.x,p.y,2,"neutron",0.2);
+}
+
+
+elements.californium = {
+ color: ["#dfd0f7","#bcbade","#b99be0"],
+ behavior: [
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:curium%0.05 AND CH:einsteinium%0.05|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_californium"},
+ "neutron": {func:californium, temp1: 175}
+ },
+ tempHigh: 900 ,
+ category: "solids",
+ state: "solid",
+ density: 15100,
+ hardness: 0.9,
+ conduct: 0.2
+}
+
+elements.stable_californium = {
+ color: [blendColors("#dfd0f7","#ff0000"),blendColors("#bcbade","#00ff00"),blendColors("#b99be0","#0000ff")],
+ behavior: behaviors.WALL,
+ tempHigh: 900 ,
+ category: "solids",
+ state: "solid",
+ density: 15100,
+ hardness: 0.9,
+ conduct: 0.2,
+ hidden: true
+}
+
+elements.molten_californium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:curium%0.05 AND CH:einsteinium%0.05|M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_californium"},
+ "neutron": {func:californium, temp1: 150}
+ }
+}
+
+function californium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "einsteinium");
+ }
+ elementCircle(p.x,p.y,2,"neutron",0.25);
+}
+
+
+elements.einsteinium = {
+ color: ["#3aa6c2","#b8edf1","#83d9e4"],
+ behavior: [
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:berkelium%0.05 AND CH:fermium%0.05|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_einsteinium"},
+ "neutron": {func:einsteinium, temp1: 175}
+ },
+ tempHigh: 1133,
+ category: "solids",
+ state: "solid",
+ density: 8840,
+ hardness: 0.9,
+ conduct: 0.2
+}
+
+elements.stable_einsteinium = {
+ color: [blendColors("#3aa6c2","#ff0000"),blendColors("#b8edf1","#00ff00"),blendColors("#83d9e4","#0000ff")],
+ behavior: behaviors.WALL,
+ tempHigh: 1133,
+ category: "solids",
+ state: "solid",
+ density: 8840,
+ hardness: 0.9,
+ conduct: 0.2,
+ hidden: true
+}
+
+elements.molten_einsteinium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:berkelium%0.05 AND CH:fermium%0.05|M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_einsteinium"},
+ "neutron": {func:einsteinium, temp1: 150}
+ }
+}
+
+function einsteinium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ transmuteAround(pixel);
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ if(Math.random() < 0.1)
+ {
+ changePixel(pixel, "fermium");
+ }
+ elementCircle(p.x,p.y,3,"neutron");
+}
+
+
+elements.fermium = {
+ color: ["#c8a7fc","#cecbf2","#d5bff2"],
+ behavior: [
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:californium%0.1|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "XX|CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_fermium"},
+ "neutron": {func:fermium, temp1: 175}
+ },
+ tempHigh: 1800,
+ category: "solids",
+ state: "solid",
+ density: 9710,
+ hardness: 0.9,
+ conduct: 0.2
+}
+
+elements.stable_fermium = {
+ color: [blendColors("#c8a7fc","#ff0000"),blendColors("#cecbf2","#00ff00"),blendColors("#d5bff2","#0000ff")],
+ behavior: behaviors.WALL,
+ tempHigh: 1800,
+ category: "solids",
+ state: "solid",
+ density: 9710,
+ hardness: 0.9,
+ conduct: 0.2,
+ hidden: true
+}
+
+elements.molten_fermium = {
+ behavior: [
+ "XX|CR:fire%2.5 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|XX",
+ "M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1|CH:californium%0.1|M2 AND CR:neutron%1 AND CR:radiation%1 AND CR:alpha_particle%1",
+ "M1|M1|M1",
+ ],
+ reactions: {
+ "quark_matter": {elem1: "stable_fermium"},
+ "neutron": {func:fermium, temp1: 150}
+ }
+}
+
+function fermium(pixel,p) {
+ if(pixel.temp >= 500)
+ {
+ changePixel(pixel, "n_explosion");
+ elementCircle(p.x,p.y,5,"neutron");
+ }
+ elementCircle(p.x,p.y,3,"neutron",0.2);
+}
+
+
+function transmuteAround(pixel) {
+ elementCircle(pixel.x,pixel.y,40,"radium",0.1,["thorium","molten_thorium"]);
+ elementCircle(pixel.x,pixel.y,40,"plutonium",0.1,["depleted_uranium","molten_depleted_uranium"]);
+ elementCircle(pixel.x,pixel.y,40,"neptunium",0.1,["enriched_uranium","molten_enriched_uranium"]);
+ elementCircle(pixel.x,pixel.y,40,"americium",0.1,["plutonium","molten_plutonium"]);
+ elementCircle(pixel.x,pixel.y,40,"curium",0.1,["americium","molten_americium"]);
+ elementCircle(pixel.x,pixel.y,40,"berkelium",0.1,["curium","molten_curium"]);
+ elementCircle(pixel.x,pixel.y,40,"californium",0.1,["berkelium","molten_berkelium"]);
+ elementCircle(pixel.x,pixel.y,40,"einsteinium",0.1,["californium","molten_californium"]);
+ elementCircle(pixel.x,pixel.y,40,"fermium",0.1,["einsteinium","molten_einsteinium"]);
+}
+
+
+
+function elementCircle(x,y,radius,pixelType="fire",chance = 0.1,replace = [null]) {
+
+ if (!Array.isArray(replace)) {
+ replace = [replace]
+ }
+ // if pixelType includes , split it into an array
+ if (pixelType.indexOf(",") !== -1) {
+ pixelType = pixelType.split(",");
+ }
+ var coords = circleCoords(x,y,radius);
+ for (var i = 0; i < coords.length; i++) {
+ if (isEmpty(coords[i].x,coords[i].y) && replace.includes(null)) {
+ if (Math.random() > chance) { } // do nothing
+ else {
+ // if pixelType is an array, choose a random item
+ if (Array.isArray(pixelType)) {
+ createPixel(pixelType[Math.floor(Math.random() * pixelType.length)],coords[i].x,coords[i].y);
+ }
+ else {
+ createPixel(pixelType,coords[i].x,coords[i].y);
+ }
+ }
+ }
+ if (!isEmpty(coords[i].x,coords[i].y, true) && replace.includes(pixelMap[coords[i].x][coords[i].y].element)) {
+ if (Math.random() > chance) { } // do nothing
+ else {
+ // if pixelType is an array, choose a random item
+ if (Array.isArray(pixelType)) {
+ changePixel(pixelMap[coords[i].x][coords[i].y],pixelType[Math.floor(Math.random() * pixelType.length)]);
+ }
+ else {
+ changePixel(pixelMap[coords[i].x][coords[i].y],pixelType);
+ }
+ }
+ }
+ }
+}
+
+
+
+elements.thorium_dioxide = {
+ color: ["#313331","#1a1a18","#171717","#24231d","#262622","#171613"],
+ behavior: [
+ "XX|CR:radiation%0.01|XX",
+ "CR:radiation%0.01|XX|CR:radiation%0.01",
+ "M2|M1|M2",
+ ],
+ reactions: {},
+ hidden: true,
+ tempHigh: 2865,
+ category: "powders",
+ state: "solid",
+ density: 10970
+}
+
+elements.stable_thorium_dioxide = {
+ color: [blendColors("#313331","#ff0000"),blendColors("#1a1a18","#00ff00"),blendColors("#171717","#0000ff"),blendColors("#24231d","#ff0000"),blendColors("#262622","#00ff00"),blendColors("#171613","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {},
+ hidden: true,
+ tempHigh: 2865,
+ category: "powders",
+ state: "solid",
+ density: 10970
+}
+
+eListAddIon("THORIUMIV","thorium_dioxide");
+eListAddIon("OXIDE","thorium_dioxide");
+eListAdd("INSOLUBLE","thorium_dioxide");
+eListAddIon("STABLETHORIUMIV","stable_thorium_dioxide");
+eListAddIon("OXIDE","stable_thorium_dioxide");
+eListAdd("INSOLUBLE","stable_thorium_dioxide");
+
+acidReact("hydrofluoric_acid","thorium_dioxide","thorium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid","stable_thorium_dioxide","stable_thorium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","thorium_dioxide","thorium_tetrafluoride","fire");
+acidReact("hydrofluoric_acid_gas","stable_thorium_dioxide","stable_thorium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","thorium_dioxide","thorium_tetrafluoride","fire");
+acidReact("hydrogen_fluoride","stable_thorium_dioxide","stable_thorium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","thorium_dioxide","thorium_tetrafluoride","fire");
+acidReact("liquid_hydrogen_fluoride","stable_thorium_dioxide","stable_thorium_tetrafluoride","fire");
+
+
+elements.thorium_tetrafluoride = {
+ color: "#e5e6e5",
+ behavior: [
+ "XX|CR:radiation%0.01|XX",
+ "CR:radiation%0.01|XX|CR:radiation%0.01",
+ "M2|M1|M2",
+ ],
+ reactions: {},
+ hidden: true,
+ tempHigh: 1110,
+ category: "powders",
+ state: "solid",
+ density: 6300
+}
+
+elements.stable_thorium_tetrafluoride = {
+ color: [blendColors("#e5e6e5","#ff0000"),blendColors("#e5e6e5","#00ff00"),blendColors("#e5e6e5","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {},
+ hidden: true,
+ tempHigh: 1110,
+ category: "powders",
+ state: "solid",
+ density: 6300
+}
+
+eListAddIon("THORIUMIV","thorium_tetrafluoride");
+eListAddIon("OXIDE","thorium_tetrafluoride");
+eListAdd("INSOLUBLE","thorium_tetrafluoride");
+eListAddIon("STABLETHORIUMIV","stable_thorium_tetrafluoride");
+eListAddIon("OXIDE","stable_thorium_tetrafluoride");
+eListAdd("INSOLUBLE","stable_thorium_tetrafluoride");
+
+reduce("thorium_dioxide", "oxygen", "thorium");
+reduce("stable_thorium_dioxide", "oxygen", "stable_thorium");
+reduce("thorium_tetrafluoride", "fluorine", "thorium");
+reduce("stable_thorium_tetrafluoride", "fluorine", "stable_thorium");
+
+
+elements.stable_thorium = {
+ color: [blendColors("#599e8a","#ff0000"),blendColors("#364d4b","#00ff00"),blendColors("#494d4c","#0000ff"),blendColors("#428a58","#ff0000"),blendColors("#658d7a","#00ff00"),blendColors("#89e0a2","#0000ff")],
+ behavior: behaviors.WALL,
+ reactions: {
+ "oxygen": { elem1:"stable_thorium_dioxide", elem2: null}
+ },
+ tempHigh: 1750,
+ category: "solids",
+ state: "solid",
+ hidden: true,
+ density: 11700,
+ hardness: 0.7,
+ conduct: 0.235
+};
+elements.molten_stable_thorium = {
+ reactions: {
+ "oxygen": { elem1:"stable_thorium_dioxide", elem2: null}
+ }
+}
+
+elements.stable_radium = {
+ color: [blendColors("#3bdeff","#ff0000"),blendColors("#3bdeff","#00ff00"),blendColors("#3bdeff","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "oxygen": { "elem1":"radium_oxide"},
+ },
+ tempHigh: 700,
+ category: "powders",
+ state: "solid",
+ density: 5500,
+ hidden: true,
+ conduct: 0.40
+};
+
+
+elements.radium_oxide = {
+ color: [blendColors("#b2d9d9","#ff0000",0.25),blendColors("#b2d9d9","#00ff00",0.25),blendColors("#b2d9d9","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ reactions: {},
+ hidden: true,
+ tempHigh: 2327,
+ category: "powders",
+ state: "solid",
+ density: 12000,
+};
+
+
+eListAddIon("RADIUM","radium_oxide");
+eListAddIon("OXIDE","radium_oxide");
+eListAdd("INSOLUBLE","radium_oxide");
+
+
+elements.radium_hydroxide = {
+ color: [blendColors("#f2fafa","#ff0000",0.25),blendColors("#f2fafa","#00ff00",0.25),blendColors("#f2fafa","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 600,
+ reactions: {},
+ stateHigh: "radium_oxide",
+ category: "powders",
+ state: "solid",
+ density: 12000,
+};
+
+eListAdd("BASE","radium_hydroxide");
+eListAddIon("RADIUM","radium_hydroxide","base");
+eListAddIon("HYDROXIDE","radium_hydroxide","base");
+eListAdd("INSOLUBLE","radium_hydroxide");
+
+createSalt("radium_chloride","radium_chloride_solution",[blendColors("#faf3de","#ff0000",0.25),blendColors("#faf3de","#00ff00",0.25),blendColors("#faf3de","#0000ff",0.25)],[blendColors("#8eadef","#ff0000",0.25),blendColors("#8eadef","#00ff00",0.25),blendColors("#8eadef","#0000ff",0.25)],true,true,900,-2,102,4900,1050,"RADIUM","CHLORIDE");
+
+elements.radium_chloride_solution.reactions["mercury"] = { elem1:["stable_radium","chlorine","hydrogen"], charged:true, chance:0.02 };
+
+
+
+elements.molten_stable_radium = {
+ reactions: {
+ "oxygen": { "elem1":"radium_oxide"},
+ },
+ conduct: 0.40
+};
+
+runAfterLoad(function() {
+ reactList("radium_oxide", eLists.WATER, { "elem1": "radium_hydroxide", "elem2": null, chance:0.01 });
+ reactList("stable_radium", eLists.WATER, { "elem1": ["radium_hydroxide","pop"], elem2:["hydrogen","bubble"], chance:0.05, temp2:350 });
+ reactList("molten_stable_radium", eLists.WATER, { "elem1": ["radium_hydroxide","pop"], elem2:["hydrogen","bubble"], chance:0.05, temp2:350 });
+});
+
+elements.stable_actinium = {
+ color: [blendColors("#e5e6e5","#ff0000",0.25),blendColors("#62ebf0","#00ff00"),blendColors("#62ebf0","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "oxygen": { "elem1":"actinium_oxide"},
+ },
+ hidden: true,
+ tempHigh: 1227,
+ category: "powders",
+ state: "solid",
+ density: 10000,
+ conduct: 0.225
+};
+elements.molten_stable_actinium = {
+ reactions: {
+ "oxygen": { "elem1":"actinium_oxide"},
+ },
+ conduct: 0.225
+};
+
+
+runAfterLoad(function() {
+ reactList("stable_actinium", eLists.WATER, { "elem1": "actinium_hydroxide", "elem2": "hydrogen", chance:0.01 });
+ reactList("molten_stable_actinium", eLists.WATER, { "elem1": "actinium_hydroxide", "elem2": "hydrogen", chance:0.01 });
+});
+
+
+elements.actinium_oxide = {
+ color: [blendColors("#ebf5f5","#ff0000",0.25),blendColors("#ebf5f5","#00ff00",0.25),blendColors("#ebf5f5","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "water": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "salt_water": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "sugar_water": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "dirty_water": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "steam": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "seltzer": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "pool_water": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ "primordial_soup": { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 },
+ },
+ hidden: true,
+ tempHigh: 2327,
+ category: "powders",
+ state: "solid",
+ density: 12000,
+};
+
+runAfterLoad(function() {
+ reactList("actinium_oxide", eLists.WATER, { "elem1": "actinium_hydroxide", "elem2": null, chance:0.01 });
+});
+
+
+
+elements.actinium_hydroxide = {
+ color: [blendColors("#f2cef2","#ff0000",0.25),blendColors("#f2cef2","#00ff00",0.25),blendColors("#f2cef2","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 350,
+ stateHigh: ["actinium_oxide","steam"],
+ category: "powders",
+ state: "solid",
+ density: 12000,
+};
+
+
+eListAdd("BASE","actinium_hydroxide");
+eListAddIon("ACTINIUM","actinium_hydroxide","base");
+eListAddIon("HYDROXIDE","actinium_hydroxide","base");
+eListAdd("INSOLUBLE","actinium_hydroxide");
+
+reduce("actinium_oxide", "oxygen", "stable_actinium");
+
+
+elements.stable_protactinium = {
+ color: [blendColors("#9899a3","#ff0000"),blendColors("#44464a","#00ff00"),blendColors("#5a5b5e","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "oxygen": { "elem1":"protactinium_v_oxide", chance:0.01},
+ "steam": { "elem1": "protactinium_hydroxide", "elem2": "hydrogen", chance:0.01 },
+ },
+
+ tempHigh: 1568,
+ category: "powders",
+ state: "solid",
+ density: 15700,
+ hardness: 0.1,
+ conduct: 0.235,
+ hidden: true
+};
+
+elements.molten_stable_protactinium = {
+ reactions: {
+ "oxygen": { "elem1":"protactinium_v_oxide", chance:0.01},
+ "steam": { "elem1": "protactinium_hydroxide", "elem2": "hydrogen", chance:0.01 },
+ },
+};
+
+
+eListAdd("BASE","protactinium_hydroxide");
+eListAddIon("PROTACTINIUMV","protactinium_hydroxide","base");
+eListAddIon("HYDROXIDE","protactinium_hydroxide","base");
+eListAdd("INSOLUBLE","protactinium_hydroxide");
+
+elements.protactinium_hydroxide = {
+ color: [blendColors("#95c7c7","#ff0000",0.25),blendColors("#95c7c7","#00ff00",0.25),blendColors("#95c7c7","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 350,
+ category: "powders",
+ state: "solid",
+ stateHigh: ["protactinium_v_oxide","steam"],
+ density: 12000,
+};
+
+elements.protactinium_v_oxide = {
+ color: [blendColors("#353b3b","#ff0000",0.25),blendColors("#353b3b","#00ff00",0.25),blendColors("#353b3b","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 2500,
+ category: "powders",
+ state: "solid",
+ density: 12000,
+ reactions: {},
+};
+
+eListAddIon("PROTACTINIUMV","protactinium_v_oxide");
+eListAddIon("OXIDE","protactinium_v_oxide");
+eListAdd("INSOLUBLE","protactinium_v_oxide");
+
+
+acidReact("hydrofluoric_acid","protactinium_v_oxide","protactinium_pentafluoride","fire",0);
+acidReact("hydrofluoric_acid_gas","protactinium_v_oxide","protactinium_pentafluoride","fire",0);
+acidReact("hydrogen_fluoride","protactinium_v_oxide","protactinium_pentafluoride","fire",0);
+acidReact("liquid_hydrogen_fluoride","protactinium_v_oxide","protactinium_pentafluoride","fire",0);
+
+elements.protactinium_pentafluoride = {
+ color: [blendColors("#cbf2ec","#ff0000",0.25),blendColors("#cbf2ec","#00ff00",0.25),blendColors("#cbf2ec","#0000ff",0.25)],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 2500,
+ category: "powders",
+ state: "solid",
+ density: 12000,
+ reactions: {},
+};
+
+eListAddIon("PROTACTINIUMV","protactinium_pentafluoride");
+eListAddIon("OXIDE","protactinium_pentafluoride");
+eListAdd("INSOLUBLE","protactinium_pentafluoride");
+
+
+reduce("protactinium_v_oxide", "oxygen", "stable_protactinium");
+reduce("protactinium_pentafluoride", "fluorine", "stable_protactinium");
+
+elements.stable_neptunium = {
+ color: [blendColors("#626580","#ff0000"),blendColors("#3f4a61","#00ff00"),blendColors("#4a5463","#0000ff")],
+ behavior: behaviors.WALL,
+ reactions: {
+ "oxygen": { "elem1":"neptunium_dioxide", chance:0.01}
+ },
+ tempHigh: 639,
+ category: "solids",
+ state: "solid",
+ density: 19380,
+ hardness: 0.7,
+ conduct: 0.2,
+ hidden: true
+};
+
+elements.molten_stable_neptunium = {
+ reactions: {
+ "oxygen": { "elem1":"neptunium_dioxide", chance:0.01}
+ },
+};
+
+
+elements.neptunium_dioxide = {
+ color: [blendColors("#47c94f","#ff0000"),blendColors("#47c94f","#00ff00"),blendColors("#47c94f","#0000ff")],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 2600,
+ category: "powders",
+ state: "solid",
+ density: 12000,
+ reactions: {},
+};
+
+
+eListAddIon("NEPTUNIUMIV","neptunium_dioxide");
+eListAddIon("OXIDE","neptunium_dioxide");
+eListAdd("INSOLUBLE","neptunium_dioxide");
+
+elements.neptunium_tetrafluoride = {
+ color: [blendColors("#73e67a","#ff0000"),blendColors("#73e67a","#00ff00"),blendColors("#73e67a","#0000ff")],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ tempHigh: 2550,
+ category: "powders",
+ state: "solid",
+ density: 12000,
+ reactions: {},
+};
+
+eListAddIon("NEPTUNIUMIV","neptunium_tetrafluoride");
+eListAddIon("FLUORIDE","neptunium_tetrafluoride");
+eListAdd("INSOLUBLE","neptunium_tetrafluoride");
+
+acidReact("hydrofluoric_acid","neptunium_dioxide","neptunium_tetrafluoride","fire",0);
+acidReact("hydrofluoric_acid_gas","neptunium_dioxide","neptunium_tetrafluoride","fire",0);
+acidReact("hydrogen_fluoride","neptunium_dioxide","neptunium_tetrafluoride","fire",0);
+acidReact("liquid_hydrogen_fluoride","neptunium_dioxide","neptunium_tetrafluoride","fire",0);
+
+acidReact("fluorine","neptunium_tetrafluoride","neptunium_hexafluoride","fire",0);
+acidReact("liquid_fluorine","neptunium_tetrafluoride","neptunium_hexafluoride","fire",0);
+acidReact("fluorine","neptunium_dioxide","neptunium_hexafluoride","fire",0);
+acidReact("liquid_fluorine","neptunium_dioxide","neptunium_hexafluoride","fire",0);
+
+eListAddIon("NEPTUNIUMVI","neptunium_hexafluoride");
+eListAddIon("FLUORIDE","neptunium_hexafluoride");
+eListAdd("INSOLUBLE","neptunium_hexafluoride");
+
+reduce("neptunium_dioxide", "oxygen", "stable_neptunium");
+reduce("neptunium_tetrafluoride", "fluorine", "stable_neptunium");
+
+elements.neptunium_hexafluoride = {
+ color: [blendColors("#eda042","#ff0000"),blendColors("#eda042","#00ff00"),blendColors("#eda042","#0000ff")],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "hydrogen": { elem1: "neptunium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+ tempHigh: 55,
+ category: "powders",
+ state: "solid",
+ density: 5000,
+ stateHighName: "neptunium_hexafluoride_gas",
+ forceAutoGen: true,
+ hidden: true
+}
+
+
+elements.neptunium_hexafluoride_gas = {
+ behavior: behaviors.GAS,
+ state: "gas",
+ density: 14.591,
+ reactions: {
+ "hydrogen": { elem1: "neptunium_tetrafluoride", elem2: "hydrogen_fluoride" }
+ },
+}
+
+
+runAfterLoad(function() {
+ reactList("neptunium_hexafluoride", eLists.WATER, { "elem1": "neptunium_tetrafluoride", elem2: "hydrofluoric_acid" });
+ reactList("neptunium_hexafluoride_gas", eLists.WATER, { "elem1": "neptunium_tetrafluoride", elem2: "hydrofluoric_acid" });
+});
@@ -3303,18 +5430,56 @@ let defaultBaseGasReactions = {
}
-createAcid("francium_hydroxide",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#863bff","#4d00ca","#897b9e"],true,true,100,100,0,1000,1200,1)
+createAcid("francium_hydroxide",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),[blendColors("#863bff","#ff0000"),blendColors("#4d00ca","#00ff00"),blendColors("#897b9e","#0000ff")],true,true,100,100,0,1000,1200,1,"FRANCIUM","base")
+
+eListAddIon("HYDROXIDE",["francium_hydroxide","francium_hydroxide_gas"],"base");
+
+eListAdd("BASE", []);
+
function acidNeutralize(base)
{
- for(let i = 0; i < trueAcids.length; i++)
+ for(let i = 0; i < eLists.ACID.length; i++)
{
- elements[trueAcids[i]].reactions[base] = { "elem1":"neutral_acid", "elem2":null };
+ elements[eLists.ACID[i]].reactions[base] = { "elem1":"neutral_acid", "elem2":null };
}
- for(let i = 0; i < trueAcidGases.length; i++)
+ for(let i = 0; i < eLists.ACIDGAS.length; i++)
{
- elements[trueAcidGases[i]].reactions[base] = { "elem1":"hydrogen", "elem2":null };
+ elements[eLists.ACIDGAS[i]].reactions[base] = { "elem1":"hydrogen", "elem2":null };
}
+ eLists.BASE.push(base);
+ if(eLists.HYDROGEN.indexOf(base) >= 0)
+ {
+ eLists.HYDROGEN.splice(eLists.HYDROGEN.indexOf(base),1);
+ }
+ if(elements[base].salt)
+ for(i in elements[base].salt)
+ {
+ if(elements[base].salt[i])
+ {
+ if(elements[base].salt[i].components.indexOf("HYDROGEN") >= 0)
+ {
+ elements[base].salt[i].components.splice(elements[base].salt[i].components.indexOf("HYDROGEN"),1);
+ }
+ }
+ }
+}
+
+
+acidNeutralize("radium_hydroxide");
+acidNeutralize("actinium_hydroxide");
+acidNeutralize("protactinium_hydroxide");
+
+
+elements.caustic_soda = {
+ color: "#ffe8ff",
+ behavior: behaviors.CAUSTIC,
+ category: "powders",
+ tempHigh: 323,
+ state: "solid",
+ density: 2130,
+ hidden: true,
+ alias: "sodium hydroxide powder"
}
acidNeutralize("sodium_hydride");
@@ -3325,21 +5490,70 @@ acidNeutralize("molten_sodium_methoxide");
elements.francium_hydroxide.breakInto = "francium_hydroxide";
elements.francium_hydroxide_gas.breakInto = "francium_hydroxide_gas";
-delete elements.francium_hydroxide.burn;
-delete elements.francium_hydroxide_gas.burn;
acidNeutralize("francium_hydroxide");
acidNeutralize("francium_hydroxide_gas");
-createAcid("sodium_hydroxide",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#fc3bff","#c000ca","#9b7b9e"],false,true,100,100,0,1000,1050,1);
+createAcid("sodium_hydroxide",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#fc3bff","#c000ca","#9b7b9e"],false,true,100,100,0,1000,1050,1,"SODIUM","base");
acidNeutralize("sodium_hydroxide");
acidNeutralize("sodium_hydroxide_gas");
+eListAddIon("HYDROXIDE",["sodium_hydroxide","sodium_hydroxide_gas"],"base");
-createAcid("potassium_hydroxide",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#3bc4ff","#0062ca","#7b949e"],false,true,100,100,0,1000,1075,1);
+eLists.CAUSTIC.push("caustic_soda");
+acidNeutralize("caustic_soda");
+elements.caustic_soda.ignore = elements.sodium_hydroxide.ignore;
+acidIgnore(["caustic_soda"]);
+
+eListAddIon("SODIUM",["caustic_soda","molten_caustic_soda"],"base");
+eListAddIon("HYDROXIDE",["caustic_soda","molten_caustic_soda"],"base");
+eListAdd("COMPOUND","caustic_soda");
+
+elements.caustic_soda.behavior = behaviors.CAUSTIC;
+if(!elements.caustic_soda.reactions)
+{
+ elements.caustic_soda.reactions = {};
+}
+elements.caustic_soda.reactions["water"] = { elem1:"sodium_hydroxide", elem2:null };
+elements.caustic_soda.reactions["salt_water"] = { elem1:"sodium_hydroxide", elem2:null };
+elements.caustic_soda.reactions["sugar_water"] = { elem1:"sodium_hydroxide", elem2:null };
+elements.caustic_soda.reactions["dirty_water"] = { elem1:"sodium_hydroxide", elem2:null };
+elements.caustic_soda.reactions["seltzer"] = { elem1:"sodium_hydroxide", elem2:null };
+elements.caustic_soda.reactions["pool_water"] = { elem1:"sodium_hydroxide", elem2:null };
+
+elements.sodium_hydroxide_gas.tempHigh = 150;
+elements.sodium_hydroxide_gas.stateHigh = ["caustic_soda","steam"];
+
+createAcid("potassium_hydroxide",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#3bc4ff","#0062ca","#7b949e"],false,true,100,100,0,1000,1075,1,"POTASSIUM","base");
acidNeutralize("potassium_hydroxide");
acidNeutralize("potassium_hydroxide_gas");
+eListAddIon("HYDROXIDE",["potassium_hydroxide","potassium_hydroxide_gas"],"base");
+
+eLists.CAUSTIC.push("caustic_potash");
+acidNeutralize("caustic_potash");
+elements.caustic_potash.ignore = elements.potassium_hydroxide.ignore;
+acidIgnore(["caustic_potash"]);
-createAcid("red_mud",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#ab3d24","#cc5d2d","#a81b1b"],true,true,1600,1600,0,Infinity,5200,3);
+eListAddIon("POTASSIUM",["caustic_potash","molten_caustic_potash"],"base");
+eListAddIon("HYDROXIDE",["caustic_potash","molten_caustic_potash"],"base");
+eListAdd("COMPOUND","caustic_potash");
+
+
+elements.caustic_potash.behavior = behaviors.CAUSTIC;
+if(!elements.caustic_potash.reactions)
+{
+ elements.caustic_potash.reactions = {};
+}
+elements.caustic_potash.reactions["water"] = { elem1:"potassium_hydroxide", elem2:null };
+elements.caustic_potash.reactions["salt_water"] = { elem1:"potassium_hydroxide", elem2:null };
+elements.caustic_potash.reactions["sugar_water"] = { elem1:"potassium_hydroxide", elem2:null };
+elements.caustic_potash.reactions["dirty_water"] = { elem1:"potassium_hydroxide", elem2:null };
+elements.caustic_potash.reactions["seltzer"] = { elem1:"potassium_hydroxide", elem2:null };
+elements.caustic_potash.reactions["pool_water"] = { elem1:"potassium_hydroxide", elem2:null };
+
+elements.potassium_hydroxide_gas.tempHigh = 150;
+elements.potassium_hydroxide_gas.stateHigh = ["caustic_potash","steam"];
+
+createAcid("red_mud",structuredClone(defaultBaseReactions),structuredClone(defaultBaseGasReactions),["#ab3d24","#cc5d2d","#a81b1b"],true,true,1600,1600,0,Infinity,5200,3,"REDMUD","base");
acidNeutralize("red_mud");
acidNeutralize("red_mud_gas");
elements.red_mud.viscosity = 1000000;
@@ -3349,30 +5563,29 @@ elements.red_mud.reactions.sugar_water = {"elem2":"dirty_water" };
elements.red_mud.reactions.seltzer = {"elem2":"dirty_water" };
elements.red_mud.reactions.pool_water = {"elem2":"dirty_water" };
elements.red_mud.reactions.primordial_soup = {"elem2":"dirty_water" };
-elements.potassium_hydroxide.reactions["fertilizer"] = { elem1: "niter", elem2: "ammonia"};
-elements.potassium_hydroxide_gas.reactions["fertilizer"] = { elem1: "niter", elem2: "ammonia"};
-elements.potassium_hydroxide.ignore.push("fertilizer","niter","ammonia");
-elements.potassium_hydroxide_gas.ignore.push("fertilizer","niter","ammonia");
+
+acidReact("potassium_hydroxide","fertilizer","niter","ammonia",10);
+acidReact("potassium_hydroxide_gas","fertilizer","niter","ammonia",10);
-elements.potassium_hydroxide.reactions["carbon_dioxide"] = { elem1: "potassium_carbonate", elem2: null};
-elements.potassium_hydroxide_gas.reactions["carbon_dioxide"] = { elem1: "potassium_carbonate", elem2: null};
+acidReact("potassium_hydroxide","carbon_dioxide","potassium_carbonate",null,10);
+acidReact("potassium_hydroxide_gas","carbon_dioxide","potassium_carbonate",null,10);
elements.potassium_hydroxide.ignore.push("carbon_dioxide","potassium_carbonate");
elements.potassium_hydroxide_gas.ignore.push("carbon_dioxide","potassium_carbonate");
elements.salt_water.reactions["mercury"] = { elem1:["sodium_hydroxide","chlorine","hydrogen"], charged:true, chance:0.02 };
-elements.sodium_hydroxide.ignore.push("mercury");
-elements.sodium_hydroxide.ignore.push("salt_water");
+elements.sodium_hydroxide.ignore.push("mercury","chlorine","salt_water");
+elements.sodium_hydroxide_gas.ignore.push("mercury","chlorine","salt_water");
elements.potassium_salt_water.reactions["mercury"] = { elem1:["potassium_hydroxide","chlorine","hydrogen"], charged:true, chance:0.02 };
-elements.potassium_hydroxide.ignore.push("mercury");
-elements.potassium_hydroxide.ignore.push("potassium_salt_water");
+elements.potassium_hydroxide.ignore.push("mercury","chlorine","potassium_salt_water");
+elements.potassium_hydroxide_gas.ignore.push("mercury","chlorine","potassium_salt_water");
acidReact("sodium_hydroxide","bauxite","sodium_aluminate_solution","red_mud",10);
acidReact("sodium_hydroxide_gas","bauxite","sodium_aluminate_solution","red_mud",10);
-elements.red_mud.ignore.push("bauxite","sodium_aluminate_solution","sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
-elements.red_mud_gas.ignore.push("bauxite","sodium_aluminate_solution","sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
-elements.sodium_hydroxide.ignore.push("sodium_aluminate_solution","sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
-elements.sodium_hydroxide_gas.ignore.push("sodium_aluminate_solution","sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
+elements.red_mud.ignore.push("sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
+elements.red_mud_gas.ignore.push("sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
+elements.sodium_hydroxide.ignore.push("sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
+elements.sodium_hydroxide_gas.ignore.push("sodium_aluminate_solution_ice","sodium_aluminate","molten_sodium_aluminate","sodium_carbonate_solution","spent_sodium_aluminate_solution","spent_sodium_aluminate_solution_ice","aluminum_hydroxide","alumina","molten_alumina");
@@ -3400,10 +5613,10 @@ acidReact("hydrofluoric_acid_gas","alumina","aluminum_trifluoride","fire",0);
acidReact("hydrogen_fluoride","alumina","aluminum_trifluoride","fire",0);
acidReact("liquid_hydrogen_fluoride","alumina","aluminum_trifluoride","fire",0);
-elements.hydrofluoric_acid.ignore.push("molten_alumina","molten_aluminum_trifluoride");
-elements.hydrofluoric_acid_gas.ignore.push("molten_alumina","molten_aluminum_trifluoride");
-elements.hydrogen_fluoride.ignore.push("molten_alumina","molten_aluminum_trifluoride");
-elements.liquid_hydrogen_fluoride.ignore.push("molten_alumina","molten_aluminum_trifluoride");
+elements.hydrofluoric_acid.ignore.push("molten_alumina","aluminum_trifluoride_gas");
+elements.hydrofluoric_acid_gas.ignore.push("molten_alumina","aluminum_trifluoride_gas");
+elements.hydrogen_fluoride.ignore.push("molten_alumina","aluminum_trifluoride_gas");
+elements.liquid_hydrogen_fluoride.ignore.push("molten_alumina","aluminum_trifluoride_gas");
acidReact("hydrofluoric_acid","aluminum_hydroxide","aluminum_trifluoride","fire",0);
@@ -3412,13 +5625,21 @@ acidReact("hydrofluoric_acid_gas","aluminum_hydroxide","aluminum_trifluoride","f
acidReact("hydrogen_fluoride","aluminum_hydroxide","aluminum_trifluoride","fire",0);
acidReact("liquid_hydrogen_fluoride","aluminum_hydroxide","aluminum_trifluoride","fire",0);
-acidReact("hydrofluoric_acid","sodium_hydroxide","sodium_fluoride","fire",0);
-acidReact("hydrofluoric_acid_gas","sodium_hydroxide","sodium_fluoride","fire",0);
-acidReact("hydrofluoric_acid","sodium_hydroxide_gas","sodium_fluoride","fire",0);
-acidReact("hydrofluoric_acid_gas","sodium_hydroxide_gas","sodium_fluoride","fire",0);
+acidReact("hydrofluoric_acid","sodium_hydroxide","sodium_fluoride_solution","fire",0);
+acidReact("hydrofluoric_acid_gas","sodium_hydroxide","sodium_fluoride_solution","fire",0);
+acidReact("hydrofluoric_acid","sodium_hydroxide_gas","sodium_fluoride_solution","fire",0);
+acidReact("hydrofluoric_acid_gas","sodium_hydroxide_gas","sodium_fluoride_solution","fire",0);
+
+acidReact("acid","sodium_hydroxide","salt_water",null,0);
+acidReact("acid_gas","sodium_hydroxide","salt_water",null,0);
+acidReact("acid","sodium_hydroxide_gas","salt_water",null,0);
+acidReact("acid_gas","sodium_hydroxide_gas","salt_water",null,0);
+
+acidReact("acid","potassium_hydroxide","potassium_salt_water",null,0);
+acidReact("acid_gas","potassium_hydroxide","potassium_salt_water",null,0);
+acidReact("acid","potassium_hydroxide_gas","potassium_salt_water",null,0);
+acidReact("acid_gas","potassium_hydroxide_gas","potassium_salt_water",null,0);
-elements.sodium_hydroxide.ignore.push("sodium_fluoride");
-elements.sodium_hydroxide_gas.ignore.push("sodium_fluoride");
elements.sodium_hydroxide.ignore.push("sodium_methoxide","methanol");
@@ -3432,10 +5653,9 @@ acidReact("fluoroboric_acid","sodium_hydroxide_gas","sodium_tetrafluoroborate",n
acidReact("fluoroboric_acid_gas","sodium_hydroxide_gas","sodium_tetrafluoroborate",null,50);
-acidNeutralize("sodium_hydride");
-elements.bless.reactions["FOOF"] = {elem2: "oxygen"};
-elements.bless.reactions["solid_FOOF"] = {elem2: "oxygen"};
+elements.bless.reactions["foof"] = {elem2: "oxygen"};
+elements.bless.reactions["solid_foof"] = {elem2: "oxygen"};
elements.bless.reactions["fluorine"] = {elem2: null};
elements.bless.reactions["liquid_fluorine"] = {elem2: null};
elements.bless.reactions["fluorine_ice"] = {elem2: null};
@@ -3465,10 +5685,84 @@ elements.bless.reactions["sulfur_dioxide_ice"] = {elem2: "oxygen"};
elements.bless.reactions["hydrogen_sulfide"] = {elem2: "hydrogen"};
elements.bless.reactions["liquid_hydrogen_sulfide"] = {elem2: "hydrogen"};
elements.bless.reactions["rocket_fuel"] = {elem2: null};
+elements.bless.reactions["diborane"] = {elem2: "hydrogen"};
+elements.bless.reactions["pentaborane"] = {elem2: "hydrogen"};
+elements.bless.reactions["decaborane"] = {elem2: "hydrogen"};
+elements.bless.reactions["sodium_hydride"] = {elem2: "hydrogen"};
+elements.bless.reactions["sodium_borohydride"] = {elem2: "hydrogen"};
+elements.bless.reactions["sodium_borohydride_solution"] = {elem2: "water"};
+elements.bless.reactions["uraninite"] = {elem2: "rock"};
+elements.bless.reactions["yellowcake_solution"] = {elem2: ["rock","hydrogen","rock","hydrogen","rock","hydrogen","baked_batter","hydrogen"]};
+elements.bless.reactions["yellowcake"] = {elem2: ["rock","rock","rock","baked_batter"]};
+elements.bless.reactions["depleted_uranium"] = {elem2: "rock"};
+elements.bless.reactions["enriched_uranium"] = {elem2: "rock"};
+elements.bless.reactions["uranium_dioxide"] = {elem2: "rock"};
+elements.bless.reactions["depleted_uranium_dioxide"] = {elem2: "rock"};
+elements.bless.reactions["enriched_uranium_dioxide"] = {elem2: "rock"};
+elements.bless.reactions["uranium_tetrafluoride"] = {elem2: "rock"};
+elements.bless.reactions["depleted_uranium_tetrafluoride"] = {elem2: "rock"};
+elements.bless.reactions["enriched_uranium_tetrafluoride"] = {elem2: "rock"};
+elements.bless.reactions["uranium_hexafluoride"] = {elem2: "rock"};
+elements.bless.reactions["depleted_uranium_hexafluoride"] = {elem2: "rock"};
+elements.bless.reactions["enriched_uranium_hexafluoride"] = {elem2: "rock"};
+elements.bless.reactions["stable_uranium_hexafluoride"] = {elem2: "stable_uranium"};
+elements.bless.reactions["molten_depleted_uranium"] = {elem2: "magma"};
+elements.bless.reactions["molten_enriched_uranium"] = {elem2: "magma"};
+elements.bless.reactions["molten_uranium_dioxide"] = {elem2: "magma"};
+elements.bless.reactions["molten_depleted_uranium_dioxide"] = {elem2: "magma"};
+elements.bless.reactions["molten_enriched_uranium_dioxide"] = {elem2: "magma"};
+elements.bless.reactions["molten_uranium_tetrafluoride"] = {elem2: "magma"};
+elements.bless.reactions["molten_depleted_uranium_tetrafluoride"] = {elem2: "magma"};
+elements.bless.reactions["molten_enriched_uranium_tetrafluoride"] = {elem2: "magma"};
+elements.bless.reactions["uranium_hexafluoride_gas"] = {elem2: "rock"};
+elements.bless.reactions["depleted_uranium_hexafluoride_gas"] = {elem2: "rock"};
+elements.bless.reactions["enriched_uranium_hexafluoride_gas"] = {elem2: "rock"};
+elements.bless.reactions["stable_uranium_hexafluoride_gas"] = {elem2: "stable_uranium"};
+elements.bless.reactions["neptunium"] = {elem2: "rock"};
+elements.bless.reactions["molten_neptunium"] = {elem2: "rock"};
+elements.bless.reactions["enriched_uranium_hexafluoride_gas"] = {elem2: "rock"};
+elements.bless.reactions["radium"] = {elem2: null};
+elements.bless.reactions["molten_radium"] = {elem2: null};
+elements.bless.reactions["actinium"] = {elem2: null};
+elements.bless.reactions["molten_actinium"] = {elem2: null};
+elements.bless.reactions["thorium"] = {elem2: "rock"};
+elements.bless.reactions["molten_thorium"] = {elem2: "magma"};
+elements.bless.reactions["thorium_dioxide"] = {elem2: "rock"};
+elements.bless.reactions["molten_thorium_dioxide"] = {elem2: "magma"};
+elements.bless.reactions["thorium_tetrafluoride"] = {elem2: "rock"};
+elements.bless.reactions["molten_thorium_tetrafluoride"] = {elem2: "magma"};
+elements.bless.reactions["protactinium"] = {elem2: "rock"};
+elements.bless.reactions["molten_protactinium"] = {elem2: "magma"};
+elements.bless.reactions["neptunium"] = {elem2: "rock"};
+elements.bless.reactions["molten_neptunium"] = {elem2: "magma"};
+elements.bless.reactions["neptunium_hexafluoride"] = {elem2: "stable_neptunium"};
+elements.bless.reactions["neptunium_hexafluoride_gas"] = {elem2: "stable_neptunium"};
+elements.bless.reactions["plutonium"] = {elem2: "rock"};
+elements.bless.reactions["molten_plutonium"] = {elem2: "magma"};
+elements.bless.reactions["plutonium_dioxide"] = {elem2: "rock"};
+elements.bless.reactions["molten_plutonium_dioxide"] = {elem2: "magma"};
+elements.bless.reactions["plutonium_tetrafluoride"] = {elem2: "rock"};
+elements.bless.reactions["molten_plutonium_tetrafluoride"] = {elem2: "magma"};
+elements.bless.reactions["plutonium_hexafluoride"] = {elem2: "rock"};
+elements.bless.reactions["plutonium_hexafluoride_gas"] = {elem2: "magma"};
+elements.bless.reactions["stable_plutonium_hexafluoride"] = {elem2: "stable_plutonium"};
+elements.bless.reactions["stable_plutonium_hexafluoride_gas"] = {elem2: "stable_plutonium"};
+elements.bless.reactions["americium"] = {elem2: "rock"};
+elements.bless.reactions["molten_americium"] = {elem2: "magma"};
+elements.bless.reactions["curium"] = {elem2: "rock"};
+elements.bless.reactions["molten_curium"] = {elem2: "magma"};
+elements.bless.reactions["berkelium"] = {elem2: "rock"};
+elements.bless.reactions["molten_berkelium"] = {elem2: "magma"};
+elements.bless.reactions["californium"] = {elem2: "rock"};
+elements.bless.reactions["molten_californium"] = {elem2: "magma"};
+elements.bless.reactions["einsteinium"] = {elem2: "rock"};
+elements.bless.reactions["molten_einsteinium"] = {elem2: "magma"};
+elements.bless.reactions["fermium"] = {elem2: "rock"};
+elements.bless.reactions["molten_fermium"] = {elem2: "magma"};
-elements.FOOF.ignore.push("foof_grass","foof_grass_seed");
-elements.solid_FOOF.ignore.push("foof_grass","foof_grass_seed");
+elements.foof.ignore.push("foof_grass","foof_grass_seed");
+elements.solid_foof.ignore.push("foof_grass","foof_grass_seed");
elements.fluorine.ignore.push("foof_grass","foof_grass_seed");
elements.liquid_fluorine.ignore.push("foof_grass","foof_grass_seed");
@@ -3510,10 +5804,10 @@ elements.foof_grass= {
tempHigh: -57,
stateHigh: ["oxygen","fluorine","explosion"],
tempLow: -200,
- stateLow: "solid_FOOF",
+ stateLow: "solid_foof",
burn:50,
burnTime:20,
- breakInto: "FOOF",
+ breakInto: "foof",
category:"life",
state: "solid",
density: 1400,
@@ -3533,14 +5827,421 @@ elements.foof_grass_seed = {
tempHigh: -57,
stateHigh: ["oxygen","fluorine","explosion"],
tempLow: -200,
- stateLow: "solid_FOOF",
+ stateLow: "solid_foof",
burn: 50,
burnTime: 20,
category: "life",
state: "solid",
density: 1400,
- breakInto: "FOOF",
+ breakInto: "foof",
hidden: true,
cooldown: defaultCooldown,
seed: true
-};
\ No newline at end of file
+};
+
+elements.centrifuge= {
+ color: "#89888f",
+ category: "machines",
+ tempHigh: 1455.5,
+ stateHigh: "molten_steel",
+ tick: function(pixel) {
+ if(!pixel.del)
+ {
+ for(let i = 0; i < 10; i++)
+ {
+ for(let j = 1; j < 10; j++)
+ {
+ let x = [pixel.x + i, pixel.x - j, pixel.x - i, pixel.x + j];
+ let y = [pixel.y + j, pixel.y + i, pixel.y - j, pixel.y - i];
+ var oob = outOfBounds(x[0],y[0]) || outOfBounds(x[1],y[1]) || outOfBounds(x[2],y[2]) || outOfBounds(x[3],y[3]);
+ if(!oob)
+ {
+ pixels = [null,null,null,null]
+ let immovable = false;
+ for(let k = 0; k < 4; k++)
+ {
+ pixels[k] = !isEmpty(x[k],y[k],true) ? pixelMap[x[k]][y[k]] : null;
+ if(pixels[k] && !elements[pixels[k].element].movable)
+ {
+ immovable = true;
+ }
+ }
+ if(!immovable)
+ {
+ for(let k = 0; k < 4; k++)
+ {
+ if(pixelMap[x[k]][y[k]])
+ {
+ delete pixelMap[x[k]][y[k]];
+ }
+ }
+ for(let k = 0; k < 4; k++)
+ {
+ if(pixels[k] && !pixels[k].del)
+ {
+ pixels[k].x = x[(k+1)%4];
+ pixels[k].y = y[(k+1)%4];
+ movePixel(pixels[k],x[(k+1)%4], y[(k+1)%4]);
+ }
+ }
+
+ for(let k = 0; k < 4; k++)
+ {
+ if(pixels[k] && elements[pixels[k].element].onCentrifuge)
+ {
+ elements[pixels[k].element].onCentrifuge(pixels[k]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ doDefaults(pixel);
+ },
+ movable: false
+};
+
+
+for(let i = 0; i < eLists.INSOLUBLE.length; i++)
+{
+ eListAdd("COMPOUND",eLists.INSOLUBLE[i]);
+}
+
+eListAdd("COMPOUND","water");
+eListAddIon("HYDROGEN","water");
+eListAddIon("HYDROXIDE","water");
+
+eListAdd("COMPOUND","methanol");
+eListAddIon("HYDROGEN","methanol");
+eListAddIon("METHOXIDE","methanol");
+
+eListAdd("COMPOUND","vinegar");
+eListAdd("ACID","vinegar");
+eListAddIon("HYDROGEN","vinegar","acid");
+eListAddIon("ACETATE","vinegar","acid");
+
+createSalt("baking_soda","baking_soda_solution",["#f2f2f2","#e0e0e0"],"#7494db",false,true,292,-2,102,3980,1026,"SODIUM","BICARBONATE");
+
+delete elements["molten_baking_soda"];
+
+eListAdd("COMPOUND","baking_soda");
+eListAdd("BASE","baking_soda");
+eListAdd("COMPOUND","baking_soda_solution");
+eListAdd("BASE","baking_soda_solution");
+eListAddIon("SODIUM","baking_soda","base");
+eListAddIon("BICARBONATE","baking_soda","base");
+eListAddIon("SODIUM","baking_soda_solution","base");
+eListAddIon("BICARBONATE","baking_soda_solution","base");
+
+elements["baking_soda"].reactions["sodium_hydroxide"] = {elem1: "sodium_carbonate_solution", elem2: "null"};
+elements["baking_soda"].reactions["sodium_hydroxide_gas"] = {elem1: "sodium_carbonate_solution", elem2: "null"};
+elements["baking_soda_solution"].reactions["sodium_hydroxide"] = {elem1: "sodium_carbonate_solution", elem2: "null"};
+elements["baking_soda_solution"].reactions["sodium_hydroxide_gas"] = {elem1: "sodium_carbonate_solution", elem2: "null"};
+
+createSalt("sodium_acetate","sodium_acetate_solution",["#f2f2f2","#e0e0e0"],"#7ea2f2",false,true,292,-2,102,3980,1028,"SODIUM","ACETATE");
+
+eListAdd("ACID","seltzer");
+eListAddIon("HYDROGEN","seltzer","acid");
+eListAddIon("CARBONATE","seltzer","acid");
+eListAddIon("HYDROGEN","seltzer","bicarbonate");
+eListAddIon("BICARBONATE","seltzer","bicarbonate");
+
+eListAdd("ACID","soda");
+eListAddIon("HYDROGEN","soda","acid");
+eListAddIon("CARBONATE","soda","acid");
+eListAddIon("HYDROGEN","soda","bicarbonate");
+eListAddIon("BICARBONATE","soda","bicarbonate");
+
+eListAdd("ACID","pilk");
+eListAddIon("HYDROGEN","pilk","acid");
+eListAddIon("CARBONATE","pilk","acid");
+eListAddIon("HYDROGEN","pilk","bicarbonate");
+eListAddIon("BICARBONATE","pilk","bicarbonate");
+
+
+eListAdd("COMPOUND","copper_sulfate");
+eListAddIon("COPPERII","copper_sulfate");
+eListAddIon("SULFATE","copper_sulfate");
+
+eListAddIon("COPPERII","molten_copper_sulfate");
+eListAddIon("SULFATE","molten_copper_sulfate");
+
+function listMatching(list)
+{
+ let result = [];
+ for(let i in elements)
+ {
+ let valid = false;
+ if(elements[i].salt)
+ {
+ for(let ii in elements[i].salt)
+ {
+ let valid2 = true;
+
+ for(let j = 0; j < list.length; j++)
+ {
+ if(!elements[i].salt[ii].components.includes(list[j]))
+ {
+ valid2 = false;
+ continue;
+ }
+ }
+
+ for(let j = 0; j < elements[i].salt[ii].components.length; j++)
+ {
+ if(!list.includes(elements[i].salt[ii].components[j]))
+ {
+ valid2 = false;
+ continue;
+ }
+ }
+ valid = valid || valid2;
+ }
+ }
+ if(valid)
+ {
+ result.push(i);
+ }
+ }
+ return result;
+}
+
+function listMatching2(list, elem)
+{
+ let result = [];
+ for(let i = 0; i < elem.length; i++)
+ {
+ let valid = true;
+ for(let j = 0; j < list.length; j++)
+ {
+ if(!eLists[list[j]].includes(elem[i]))
+ {
+ valid = false;
+ break;
+ }
+ }
+ if(valid)
+ {
+ result.push(elem[i]);
+ }
+ }
+ return result;
+}
+
+runAfterAutogen(function() {
+ for(let ii = 0; ii < eLists.WATER.length; ii++)
+ {
+ let i = eLists.WATER[ii];
+ if(!elements[i])
+ {
+ console.log(i);
+ continue;
+ }
+ if(!elements[i].reactions)
+ {
+ elements[i].reactions = {};
+ }
+ for(let jj = 0; jj < eLists.WATER.length; jj++)
+ {
+ let j = eLists.WATER[jj];
+ if(i != j && elements[i].salt && elements[j].salt)
+ {
+ let priorityA = -Infinity;
+ let priorityB = -Infinity;
+ for(let iii in elements[i].salt)
+ {
+ if(priorityA > elements[i].salt[iii].priority)
+ {
+ continue;
+ }
+ for(let jjj in elements[j].salt)
+ {
+ if(priorityB > elements[j].salt[jjj].priority)
+ {
+ continue;
+ }
+ if(elements[i].salt[iii].components.length > 1 && elements[j].salt[jjj].components.length > 1)
+ {
+ let match1 = listMatching([elements[i].salt[iii].components[0],elements[j].salt[jjj].components[1]]);
+ let match2 = listMatching([elements[i].salt[iii].components[1],elements[j].salt[jjj].components[0]]);
+ let match3 = listMatching([elements[i].salt[iii].components[0],elements[j].salt[jjj].components[0]]);
+ let match4 = listMatching([elements[i].salt[iii].components[1],elements[j].salt[jjj].components[1]]);
+
+ let water1 = listMatching2(["WATER"],match1);
+ let water2 = listMatching2(["WATER"],match2);
+ let water3 = listMatching2(["WATER"],match3);
+ let water4 = listMatching2(["WATER"],match4);
+ let salt1 = listMatching2(["INSOLUBLE"],match1);
+ let salt2 = listMatching2(["INSOLUBLE"],match2);
+ let salt3 = listMatching2(["INSOLUBLE"],match3);
+ let salt4 = listMatching2(["INSOLUBLE"],match4);
+
+ let productsA = [];
+ let productsB = [];
+
+ if(water1.length > 0 && salt2.length > 0)
+ {
+ productsA = productsA.concat(water1);
+ productsB = productsB.concat(salt2);
+ }
+ if(water2.length > 0 && salt1.length > 0)
+ {
+ productsA = productsA.concat(water2);
+ productsB = productsB.concat(salt1);
+ }
+
+
+ if(water3.length > 0 && salt4.length > 0)
+ {
+ productsA = productsA.concat(water3);
+ productsB = productsB.concat(salt4);
+ }
+ if(water4.length > 0 && salt3.length > 0)
+ {
+ productsA = productsA.concat(water4);
+ productsB = productsB.concat(salt3);
+ }
+
+ if(productsA.length > 0 && productsB.length > 0)
+ {
+ acidReact(i,j,productsA,productsB,0);
+ console.log("precipitate");
+ console.log(i);
+ console.log(j);
+ console.log(productsA);
+ console.log(productsB);
+ priorityA = elements[i].salt[iii].priority;
+ priorityB = elements[j].salt[jjj].priority;
+ continue;
+ }
+
+
+ if(elements[i].salt[iii].components[0] == elements[j].salt[jjj].components[0] || elements[i].salt[iii].components[1] == elements[j].salt[jjj].components[1] ||
+ elements[i].salt[iii].components[1] == elements[j].salt[jjj].components[0] || elements[i].salt[iii].components[0] == elements[j].salt[jjj].components[1])
+ {
+ continue;
+ }
+
+ productsA = [];
+ productsB = [];
+
+ if(water1.length > 0 && water2.length > 0)
+ {
+ productsA = productsA.concat(water1);
+ productsB = productsB.concat(water2);
+ }
+
+ if(water3.length > 0 && water4.length > 0)
+ {
+ productsA = productsA.concat(water3);
+ productsB = productsB.concat(water4);
+ }
+
+
+ if(productsA.length > 0 && productsB.length > 0)
+ {
+ elements[i].reactions[j] = { elem1:productsA, elem2:productsB, chance:0.001, oneway:true };
+ console.log(i);
+ console.log(j);
+ console.log(productsA);
+ console.log(productsB);
+ priorityA = elements[i].salt[iii].priority;
+ priorityB = elements[j].salt[jjj].priority;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ let acids = eLists.ACID.concat(eLists.ACIDGAS).concat(eLists.AMPHOTERIC);
+ for(let ii = 0; ii < acids.length; ii++)
+ {
+ let i = acids[ii];
+ if(!elements[i])
+ {
+ console.log(i);
+ continue;
+ }
+ if(!elements[i].reactions)
+ {
+ elements[i].reactions = {};
+ }
+ let bases = eLists.BASE.concat(eLists.AMPHOTERIC);
+ for(let jj = 0; jj < bases.length; jj++)
+ {
+ let j = bases[jj];
+ if(i != j && elements[i].salt && elements[j].salt && elements[i].salt["acid"].components.length > 1 && elements[j].salt["base"].components.length > 1)
+ {
+ let productsA = [];
+ let productsB = [];
+
+ let match = [listMatching([elements[i].salt["acid"].components[0],elements[j].salt["base"].components[1]]),
+ listMatching([elements[i].salt["acid"].components[1],elements[j].salt["base"].components[0]]),
+ listMatching([elements[i].salt["acid"].components[0],elements[j].salt["base"].components[0]]),
+ listMatching([elements[i].salt["acid"].components[1],elements[j].salt["base"].components[1]])];
+
+ let compounds = [listMatching2(["COMPOUND"],match[0]),listMatching2(["COMPOUND"],match[1]),listMatching2(["COMPOUND"],match[2]),listMatching2(["COMPOUND"],match[3])];
+
+
+ for(let n = 0; n < compounds.length; n++)
+ {
+ let m = n-1;
+ if(n%2 == 0)
+ {
+ m = n+1;
+ }
+ if(compounds[n].includes("water"))
+ {
+ let water1 = listMatching2(["WATER"],match[m]);
+ if(water1.length > 0)
+ {
+ compounds[m] = water1;
+ compounds[n].splice(compounds[n].indexOf("water"),1);
+ if(compounds[n].length == 0)
+ compounds[n] = [null];
+ }
+ }
+ }
+
+ if(compounds[0].length > 0 && compounds[1].length > 0)
+ {
+ productsA = productsA.concat(compounds[0]);
+ productsB = productsB.concat(compounds[1]);
+ }
+ if(compounds[2].length > 0 && compounds[3].length > 0)
+ {
+ productsA = productsA.concat(compounds[2]);
+ productsB = productsB.concat(compounds[3]);
+ }
+ if(productsA.length > 0 && productsB.length > 0)
+ {
+ let reactionTemp = 0;
+ if(elements[i].salt["acid"].components.includes("FLUORIDE") && elements[i].salt["acid"].components.includes("HYDROGEN"))
+ {
+ if(productsB[0] === null && productsB.length === 1)
+ {
+ productsB = ["fire"];
+ }
+ else
+ {
+ productsB.push("fire");
+ }
+ }
+ if((elements[i].salt["acid"].components.includes("SULFATE") || elements[i].salt["acid"].components.includes("CHLORIDE")) && elements[i].salt["acid"].components.includes("HYDROGEN"))
+ {
+ reactionTemp = 50;
+ }
+ acidReact(i,j,productsA,productsB,reactionTemp);
+ console.log("neutral");
+ console.log(i);
+ console.log(j);
+ console.log(compounds);
+ console.log(productsA);
+ console.log(productsB);
+ }
+ }
+ }
+ }
+});
\ No newline at end of file
diff --git a/mods/mixture.js b/mods/mixture.js
index eada089f..491f931e 100644
--- a/mods/mixture.js
+++ b/mods/mixture.js
@@ -20,7 +20,6 @@ function whenAvailable(names, callback) {
}
}, interval);
}
-var runAfterAutogenMod = "mods/runAfterAutogen2.js";
function getName(elementList)
{
@@ -274,11 +273,14 @@ function mixture(elementList)
reactions: {},
};
- elementCount++;
- elements[name].hidden = true;
- hiddenCount++;
- elements[name].id = nextid++;
- document.getElementById("extraInfo").innerHTML = "There are " + elementCount + " elements, including " + hiddenCount + " hidden ones.
©2021-" + new Date().getFullYear() + ". All Rights Reserved. R74n
"; //update extra info counts (and the copyright year, due to the method used)
+ if(typeof elementCount !== 'undefined')
+ {
+ elementCount++;
+ elements[name].hidden = true;
+ hiddenCount++;
+ elements[name].id = nextid++;
+ document.getElementById("extraInfo").innerHTML = "There are " + elementCount + " elements, including " + hiddenCount + " hidden ones.
©2021-" + new Date().getFullYear() + ". All Rights Reserved. R74n
"; //update extra info counts (and the copyright year, due to the method used)
+ }
}
else if(!elements[name].mixture)
{
@@ -498,15 +500,11 @@ function isValidMixture(elementList)
return true;
}
-if(enabledMods.includes(runAfterAutogenMod)){
-whenAvailable(["runAfterAutogen"], function() {
- runAfterAutogen(function() {
- mixture2(["water","blood"]);
- mixture2(["water","cough_drugs","cellulose_gum","carbon_dioxide","sugar","milk"]);
-
- });
+runAfterAutogen(function() {
+ mixture2(["water","blood"]);
+ mixture2(["water","cough_drugs","cellulose_gum","carbon_dioxide","sugar","milk"]);
+
});
-}
predefinedColors = [
diff --git a/mods/mixtureII.js b/mods/mixtureII.js
new file mode 100644
index 00000000..b69d6381
--- /dev/null
+++ b/mods/mixtureII.js
@@ -0,0 +1,440 @@
+function getName(elementList)
+{
+ if(elementList.filter(function(item, pos, self) {
+ return self.indexOf(item) == pos;
+ }).length == 1)
+ {
+ return elementList[0];
+ }
+ let name = elementList.join("_") + "_mixture";
+ if(nameList[name])
+ {
+ name = nameList[name];
+ };
+ return name;
+}
+
+
+function makeColors(elementList)
+{
+ return elementList.map((c) => elements[c].color instanceof Array ? elements[c].color : [elements[c].color]);
+}
+
+function mixture(elementList)
+{
+ elementList.sort();
+
+ let name = getName(elementList);
+
+ if(!elements[name])
+ {
+ elements[name] = true;
+ let minTempHigh = Infinity;
+ let stateHigh = null;
+ let indexStateHigh = -1;
+
+ let maxTempLow = -Infinity;
+ let stateLow = null;
+ let indexStateLow = -1;
+
+
+ for(let i = 0; i < elementList.length; i++)
+ {
+ if(elements[elementList[i]])
+ {
+ if(typeof elements[elementList[i]].tempHigh === "number" && elements[elementList[i]].stateHigh)
+ {
+ if(elements[elementList[i]].tempHigh < minTempHigh)
+ {
+ minTempHigh = elements[elementList[i]].tempHigh;
+ indexStateHigh = i;
+ stateHigh = elements[elementList[i]].stateHigh;
+ }
+ }
+
+ if(typeof elements[elementList[i]].tempLow === "number" && elements[elementList[i]].stateLow)
+ {
+ if(elements[elementList[i]].tempLow > maxTempLow)
+ {
+ maxTempLow = elements[elementList[i]].tempLow;
+ indexStateLow = i;
+ stateLow = elements[elementList[i]].stateLow;
+ }
+ }
+ }
+ }
+
+ let elementList2 = elementList.slice();
+ let elementHigh = null;
+ if(indexStateHigh >= 0)
+ {
+ if(stateHigh instanceof Array)
+ {
+ elementHigh = [];
+ for(let i = 0; i < stateHigh.length; i++)
+ {
+ elementList2[indexStateHigh] = stateHigh[i];
+ elementHigh.push(mixture(elementList2));
+ }
+ }
+ else
+ {
+ elementList2[indexStateHigh] = stateHigh;
+ elementHigh = mixture(elementList2);
+ }
+ }
+
+ let elementList3 = elementList.slice();
+ let elementLow = null;
+ if(indexStateLow >= 0)
+ {
+ if(stateLow instanceof Array)
+ {
+ elementLow = [];
+ for(let i = 0; i < stateLow.length; i++)
+ {
+ elementList3[indexStateLow] = stateLow[i];
+ elementLow.push(mixture(elementList3));
+ }
+ }
+ else
+ {
+ elementList3[indexStateLow] = stateLow;
+ elementLow = mixture(elementList3);
+ }
+ }
+
+ if(elementHigh instanceof Array && elementHigh.length === 0)
+ {
+ minTempHigh = Infinity;
+ elementHigh = null;
+ }
+ if(elementLow instanceof Array && elementLow.length === 0)
+ {
+ maxTempLow = -Infinity;
+ elementLow = null;
+ }
+
+ let colors = makeColors(elementList.slice());
+ let colors2 = [];
+ let maxLength = Math.max(...(colors.map((c) => c.length)));
+
+ for(let i = 0; i < maxLength; i++)
+ {
+ let colors3 = [];
+ for(let j = 0; j < colors.length; j++)
+ {
+ colors3.push(toObject(colors[j][i%colors[j].length]));
+ }
+ colors2.push(averageRGB(colors3));
+ }
+ let temp = airTemp;
+ if(maxTempLow < airTemp && minTempHigh > airTemp)
+ {
+
+ }
+ else if(maxTempLow > -Infinity && minTempHigh < Infinity)
+ {
+ temp = (maxTempLow + minTempHigh)/2;
+ }
+ else if(maxTempLow > -Infinity)
+ {
+ temp = maxTempLow+20;
+ }
+ else if(minTempHigh < Infinity)
+ {
+ temp = Math.max(minTempHigh-20,absoluteZero);
+ }
+
+
+ let movable = elementList.some((c) => elements[c].movable || elements[c].movable === undefined);
+
+ let density = elementList.map((c) => elements[c].density ? elements[c].density : 0).reduce((a,b)=>a+b)/elementList.length;
+ let stain = elementList.map((c) => elements[c].stain ? elements[c].stain : 0).reduce((a,b)=>a+b)/elementList.length;
+
+ let states = elementList.map((c) => elements[c].state);
+ if(states.includes("gas"))
+ {
+ state = "gas";
+ density = 0;
+ }
+ else if(!movable)
+ {
+ state = "solid";
+ }
+ else if(states.includes("liquid"))
+ {
+ state = "liquid";
+ }
+ else
+ {
+ state = "solid";
+ }
+
+ elements[name] = {
+ color: colors2.length == 1 ? colors2[0] : colors2,
+ colorObject: colors2.length == 1 ? toObject(colors2[0]) :colors2.map((c) => toObject(c)),
+ tick: function(pixel) {
+ mixtureBehavior(pixel, elementList);
+ },
+ tempHigh: minTempHigh,
+ stateHigh: elementHigh,
+ tempLow: maxTempLow,
+ stateLow: elementLow,
+ temp: temp,
+ category: "mixture",
+ mixture: elementList,
+ movable: movable,
+ density: density,
+ state: state,
+ stain: stain,
+ reactions: {},
+ isGas: state === "gas"
+ };
+
+ for(let i in elements)
+ {
+ for(let j = 0; j < elementList.length; j++)
+ {
+ if(elements[i].reactions && elements[i].reactions[elementList[j]] !== undefined)
+ {
+ if(name === i)
+ {
+ continue;
+ }
+ elements[i].reactions[name] = {elem2: name, func: function(a,b){mixtureReact(b,a,elementList)}}
+ }
+ if(elements[elementList[j]].reactions && elements[elementList[j]].reactions[i] !== undefined)
+ {
+ if(name === i)
+ {
+ continue;
+ }
+ elements[name].reactions[i] = {elem2: i, func: function(a,b){mixtureReact(a,b,elementList)}}
+ }
+ }
+ }
+ if(typeof elementCount !== 'undefined')
+ {
+ elementCount++;
+ elements[name].hidden = true;
+ elements[name].id = nextid++;
+ if (elements[name].hidden && (!settings["unhide"] || ( settings["unhide"]===2 && !settings.unlocked[name] ))) { hiddenCount++; }
+ else
+ {
+ var categoryDiv = document.getElementById("category-mixture");
+ if (categoryDiv == null) {
+ createCategoryDiv("mixture");
+ }
+ createElementButton(name);
+ }
+ document.getElementById("extraInfo").innerHTML = "There are " + elementCount + " elements, including " + hiddenCount + " hidden ones.
©2021-" + new Date().getFullYear() + ". All Rights Reserved. R74n
"; //update extra info counts (and the copyright year, due to the method used)
+ }
+ }
+ return name;
+}
+
+
+function mixtureBehavior(pixel, elementList)
+{
+ let prevCol = pixel.color;
+ let previous = pixel.element;
+ let elem = elementList[Math.floor(Math.random()*elementList.length)];
+ if (elements[elem].tick) { // Run tick function if it exists
+ elements[elem].tick(pixel);
+ }
+
+ if (pixel.del) {return}
+
+ if (elements[elem].behavior) { // Parse behavior if it exists
+ pixelTick(pixel,elements[elem].behavior);
+ }
+ if(pixel.element === previous)
+ {
+ pixel.color = prevCol;
+ }
+}
+
+
+function mixtureReact(pixel, pixel2, elementList)
+{
+ elementList = elementList.slice();
+ shuffleArray(elementList);
+ let previous = pixel.element;
+ let prevCol = pixel.color;
+ let previous2 = pixel2.element;
+ let prevCol2 = pixel2.color;
+ for(let i = 0; i < elementList.length; i++)
+ {
+ let elem = elementList[i];
+ if(pixel.del)
+ {
+ return;
+ }
+ changePixel(pixel,elem, false);
+ let rr1 = false;
+ if (elements[elem].reactions !== undefined && elements[elem].reactions[pixel2.element] !== undefined) {
+ rr1 = reactPixels(pixel,pixel2);
+ }
+ if (!rr1 && elements[pixel2.element].reactions !== undefined && elements[pixel2.element].reactions[elem] !== undefined && !elements[pixel2.element].reactions[elem].oneway) {
+ reactPixels(pixel2,pixel);
+ }
+ if(pixel2.element === previous2)
+ {
+ pixel2.color = prevCol2;
+ }
+ if(!pixel.del && pixel.element === elem)
+ {
+ }
+ else if(pixel.del)
+ {
+ elementList.splice(elementList.indexOf(elem),1);
+ createPixel(mixture(elementList),pixel.x,pixel.y);
+ currentPixels[currentPixels.length-1].temp = pixel.temp;
+ return;
+ }
+ else
+ {
+ elementList.splice(elementList.indexOf(elem),1)
+ changePixel(pixel, mixture(elementList.concat([pixel.element])), false);
+ return;
+ }
+ if(pixel2.del)
+ {
+ return;
+ }
+ }
+ changePixel(pixel, previous, false);
+ pixel.color = prevCol;
+}
+
+nameList = [];
+
+function toObject(color)
+{
+ color = color.match(/\d+/g);
+ return {
+ r: parseInt(color[0]),
+ g: parseInt(color[1]),
+ b: parseInt(color[2])
+ };
+}
+
+function averageRGB2(colors)
+{
+ return toObject(averageRGB(colors.map((d) => (toObject(d)))));
+}
+
+function averageRGB(rgblist) {
+ var r = 0;
+ var g = 0;
+ var b = 0;
+ for (var i = 0; i < rgblist.length; i++) {
+ var rgb = rgblist[i];
+ r += parseInt(rgb.r);
+ g += parseInt(rgb.g);
+ b += parseInt(rgb.b);
+ }
+ r = Math.floor(r/rgblist.length);
+ g = Math.floor(g/rgblist.length);
+ b = Math.floor(b/rgblist.length);
+ return "rgb("+r+","+g+","+b+")";
+}
+
+
+function blendColors(colorA, colorB, amount = 0.5) {
+ const [rA, gA, bA] = colorA.match(/\w\w/g).map((c) => parseInt(c, 16));
+ const [rB, gB, bB] = colorB.match(/\w\w/g).map((c) => parseInt(c, 16));
+ const r = Math.round(rA + (rB - rA) * amount).toString(16).padStart(2, '0');
+ const g = Math.round(gA + (gB - gA) * amount).toString(16).padStart(2, '0');
+ const b = Math.round(bA + (bB - bA) * amount).toString(16).padStart(2, '0');
+ return '#' + r + g + b;
+}
+
+changePixel = function (pixel,element,changetemp=true) {
+ if (!elements[element]) {
+ pixel.invalidElement = element;
+ element = "unknown"
+ }
+ if(pixel.element !== element)
+ {
+ pixel.element = element;
+ pixel.color = pixelColorPick(pixel);
+ }
+ pixel.start = pixelTicks;
+ var elementInfo = elements[element];
+ if (elementInfo.burning == true) {
+ pixel.burning = true;
+ pixel.burnStart = pixelTicks;
+ }
+ else if (pixel.burning && !elementInfo.burn) {
+ delete pixel.burning;
+ delete pixel.burnStart;
+ }
+ delete pixel.origColor; // remove stain
+ if (pixel.r && !elementInfo.rotatable) {
+ delete pixel.r;
+ }
+ if (pixel.flipX && !elementInfo.flippableX) {
+ delete pixel.flipX;
+ }
+ if (pixel.flipY && !elementInfo.flippableY) {
+ delete pixel.flipY;
+ }
+ // If elementInfo.flippableX, set it to true or false randomly
+ if (elementInfo.flipX !== undefined) { pixel.flipX = elementInfo.flipX }
+ else if (elementInfo.flippableX) {
+ pixel.flipX = Math.random() >= 0.5;
+ }
+ // If elementInfo.flippableY, set it to true or false randomly
+ if (elementInfo.flipY !== undefined) { pixel.flipY = elementInfo.flipY }
+ else if (elementInfo.flippableY) {
+ pixel.flipY = Math.random() >= 0.5;
+ }
+ if (elementInfo.temp !== undefined && changetemp) {
+ pixel.temp = elementInfo.temp;
+ pixelTempCheck(pixel)
+ }
+ if (pixel.con && !elementInfo.canContain) {
+ delete pixel.con;
+ }
+ // If elementInfo.properties, set each key to its value
+ if (elementInfo.properties !== undefined) {
+ for (var key in elementInfo.properties) {
+ // If it is an array or object, make a copy of it
+ if (typeof elementInfo.properties[key] == "object") {
+ pixel[key] = JSON.parse(JSON.stringify(elementInfo.properties[key]));
+ }
+ else {
+ pixel[key] = elementInfo.properties[key];
+ }
+ }
+ }
+ checkUnlock(element);
+}
+
+
+elements.mixer = {
+ color: "#999999",
+ ignore: ["mixer"],
+ category:"machines",
+ insulate:true,
+ hardness: 1,
+ tick: function(pixel) {
+ if (!isEmpty(pixel.x-1,pixel.y,true) && !isEmpty(pixel.x+1,pixel.y,true) && isEmpty(pixel.x,pixel.y+1,false))
+ {
+ if(elements.mixer.ignore.includes(pixelMap[pixel.x-1][pixel.y].element) || elements.mixer.ignore.includes(pixelMap[pixel.x+1][pixel.y].element))
+ {
+ return;
+ }
+ else
+ {
+ createPixel(mixture([pixelMap[pixel.x-1][pixel.y].element,pixelMap[pixel.x+1][pixel.y].element]),pixel.x,pixel.y+1);
+ deletePixel(pixel.x-1,pixel.y);
+ deletePixel(pixel.x+1,pixel.y);
+ }
+ }
+ doDefaults(pixel);
+ },
+ maxSize: 1
+};
\ No newline at end of file
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 4ea7fd55..86789235 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -1,4 +1,9 @@
// Gallium is the best element
+behaviors.RADSOLID = [
+ "XX|CR:radiation%1|XX",
+ "CR:radiation%1|XX|CR:radiation%1",
+ "XX|CR:radiation%1|XX"
+]
elements.caesium = {
color: ["#917921", "#ebcb59", "#a48b2d", "#d6b84c"],
behavior: behaviors.WALL,
@@ -24,6 +29,7 @@ elements.molten_caesium = {
state: "liquid",
tempLow: 27.44,
stateLow: "caesium",
+ hidden: true,
tempHigh: 671,
stateHigh: "caesium_vapor",
density: 1842,
@@ -44,10 +50,165 @@ elements.caesium_vapor = {
category: "states",
state: "gas",
tempLow: 660,
+ hidden: true,
stateLow: "molten_caesium",
density: 1.7,
temp: 700
+}
+elements.caesium_137 = {
+ color: ["#917921", "#ebcb59", "#a48b2d", "#d6b84c"],
+ behavior: behaviors.RADSOLID,
+ category: "solids",
+ state: "solid",
+ tempHigh: 28.44,
+ stateHigh: "molten_caesium_137",
+ density: 1873,
+ conduct: 0.90,
+ reactions: {
+ "water": { "elem1":"pop", "elem2":"hydrogen" },
+ "sugar_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "dirty_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "pool_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "salt_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "seltzer": { "elem1":"pop", "elem2":"hydrogen" },
+ },
+ tick: function(pixel){
+ if (Math.random()<0.0002){
+ changePixel(pixel, "barium", false)
+ if (Math.random() >= 0.946){
+ pixelMap[pixel.x][pixel.y].excited = true
+ }
+ 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)){
+ createPixel("electric", x, y)
+ break;
+ }
+ }
+ }
+ }
},
+elements.molten_caesium_137 = {
+ color: ["#735c0a", "#a68e37", "#7e6715", "#9b832e"],
+ behavior: behaviors.RADLIQUID,
+ category: "states",
+ state: "liquid",
+ tempLow: 27.44,
+ stateLow: "caesium_137",
+ tempHigh: 671,
+ hidden: true,
+ stateHigh: "caesium_vapor_137",
+ density: 1842,
+ temp: 29,
+ conduct: 0.90,
+ reactions: {
+ "water": { "elem1":"pop", "elem2":"hydrogen" },
+ "sugar_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "dirty_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "pool_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "salt_water": { "elem1":"pop", "elem2":"hydrogen" },
+ "seltzer": { "elem1":"pop", "elem2":"hydrogen" },
+ },
+ tick: function(pixel){
+ if (Math.random()<0.0002){
+ changePixel(pixel, "barium", false)
+ if (Math.random() >= 0.946){
+ pixelMap[pixel.x][pixel.y].excited = true
+ }
+ 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)){
+ createPixel("electric", x, y)
+ break;
+ }
+ }
+ }
+ }
+},
+elements.caesium_137_vapor = {
+ color: ["#d89e77", "#cd9064", "#af6f34", "#a26320"],
+ behavior: behaviors.RADSOLID,
+ category: "states",
+ state: "gas",
+ tempLow: 660,
+ stateLow: "molten_caesium_137",
+ density: 1.7,
+ temp: 700,
+ hidden: true,
+ tick: function(pixel){
+ behaviors.GAS(pixel)
+ if (Math.random()<0.0002){
+ changePixel(pixel, "barium", false)
+ if (Math.random() >= 0.946){
+ pixelMap[pixel.x][pixel.y].excited = true
+ }
+ 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)){
+ createPixel("electric", x, y)
+ break;
+ }
+ }
+ }
+ }
+}
+elements.barium = {
+ color: ["#191f19", "#2c332c", "#3f483f", "#545e54", "#6a756a"],
+ behavior: behaviors.STURDYPOWDER,
+ reactions: elements.caesium.reactions,
+ category: "powders",
+ state: "solid",
+ tempHigh: 730,
+ stateHigh: "molten_barium",
+ density: 3594,
+ tick: function(pixel){
+ if(pixel.excited && Math.random() < 0.005){
+ 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)){
+ createPixel("laser", x, y)
+ pixelMap[x][y].temp = pixel.temp + 120
+ delete pixel.excited
+ break;
+ }
+ }
+ }
+ }
+}
+elements.molten_barium = {
+ color: ["#c26d24", "#cf8225", "#da9727", "#e4ad2b", "#ecc432"],
+ behavior: behaviors.MOLTEN,
+ reactions: elements.caesium.reactions,
+ category: "states",
+ state: "liquid",
+ tempLow: 728,
+ hidden: true,
+ stateLow: "barium",
+ density: 3338,
+ tick: function(pixel){
+ if(pixel.excited && Math.random() < 0.005){
+ 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)){
+ createPixel("laser", x, y)
+ pixelMap[x][y].temp = pixel.temp + 120
+ delete pixel.excited
+ break;
+ }
+ }
+ }
+ }
+}
elements.subzero_grass_seed = {
color: ["#022c14", "#032911", "#032205", "#021f00"],
behavior: [
@@ -97,7 +258,7 @@ elements.acid_gas.ignore.push("ruthenium"),
elements.acid_gas.ignore.push("molten_ruthenium")
elements.technetium = {
color: ["#e7d9bb", "#bab195", "#8f8a70", "#66654e"],
- behavior: behaviors.WALL,
+ behavior: behaviors.RADSOLID,
tick: function(pixel){
if(Math.random() < 0.0007){
for (var i = 0; i < squareCoords.length; i++) {
@@ -121,7 +282,7 @@ elements.technetium = {
},
elements.molten_technetium = {
color: ["#d16b42", "#da904c", "#dfb360", "#e2d57f"],
- behavior: behaviors.MOLTEN,
+ behavior: behaviors.RADMOLTEN,
tick: function(pixel){
if(Math.random() < 0.0007){
for (var i = 0; i < squareCoords.length; i++) {
@@ -1485,6 +1646,7 @@ elements.plutonium = {
}
}
}
+ behaviors.RADSOLID
},
reactions: {
"neutron": { elem1:"pn_explosion", tempMin:400, chance:0.1 },
@@ -1493,7 +1655,7 @@ elements.plutonium = {
}
elements.molten_plutonium = {
color: ["#6b5133", "#743f26", "#7c2727"],
- behavior: behaviors.LIQUID,
+ behavior: behaviors.RADMOLTEN,
category: "states",
state: "liquid",
tempLow: 620,
@@ -2445,6 +2607,9 @@ elements.scuffed_circle_brush = {
createPixel(circleElem, thisx, thisy)
}
}
+function randomIntFromInterval(min, max) { // min and max included
+ return Math.floor(Math.random() * (max - min + 1) + min)
+ }
elements.spacedust_cola = {
color: ["#090033", "#0a0027", "#0a001b", "#0b000f"],
behavior: elements.soda.behavior,
diff --git a/mods/pressure.js b/mods/pressure.js
index 09861474..5453439e 100644
--- a/mods/pressure.js
+++ b/mods/pressure.js
@@ -231,6 +231,23 @@ drawPixels = function(forceTick=false) {
if (ctx.globalAlpha < 1) {
ctx.globalAlpha = 1;
}
+
+ if (elements[currentElement].maxSize < mouseSize) {
+ var mouseOffset = Math.trunc(elements[currentElement].maxSize/2);
+ }
+ else {
+ var mouseOffset = Math.trunc(mouseSize/2);
+ }
+ var topLeft = [mousePos.x-mouseOffset,mousePos.y-mouseOffset];
+ var bottomRight = [mousePos.x+mouseOffset,mousePos.y+mouseOffset];
+ // Draw a square around the mouse
+ ctx.strokeStyle = "white";
+ ctx.strokeRect(topLeft[0]*pixelSize,topLeft[1]*pixelSize,(bottomRight[0]-topLeft[0]+1)*pixelSize,(bottomRight[1]-topLeft[1]+1)*pixelSize);
+ // draw one transparent pixel in the center
+ if (settings.precision) {
+ ctx.fillStyle = "rgba(255,255,255,0.5)";
+ ctx.fillRect(mousePos.x*pixelSize,mousePos.y*pixelSize,pixelSize,pixelSize);
+ }
if ((!paused) || forceTick) {pixelTicks++};
}
diff --git a/mods/weapons.js b/mods/weapons.js
index 6c8181a3..ecf0d417 100644
--- a/mods/weapons.js
+++ b/mods/weapons.js
@@ -76,6 +76,9 @@ elements.left_missile = {
"M2|EX:10|XX",
],
category:"ammunition",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.right_missile = {
color: "#4c4e42",
@@ -85,6 +88,9 @@ elements.right_missile = {
"XX|EX:10|M2",
],
category:"ammunition",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.up_missile = {
color: "#4c4e42",
@@ -94,7 +100,9 @@ elements.up_missile = {
"XX|EX:10|XX",
],
category:"ammunition",
- alias: "the element that some guy try to add to my mod without my permission but when doing so fucked the behavior grid up",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.cluster_munition = {
color: "#444444",
@@ -160,6 +168,9 @@ elements.left_bullet = {
"M2|XX|XX",
],
category:"ammunition",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.right_bullet = {
color: "#4c4e42",
@@ -169,6 +180,9 @@ elements.left_bullet = {
"XX|XX|M2",
],
category:"ammunition",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.e_gun_left = {
color: "#C0C0C0",
@@ -226,6 +240,9 @@ elements.left_rocket = {
"XX|XX|XX",
],
category:"ammunition",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.right_rocket = {
color: "#4c4e42",
@@ -235,6 +252,9 @@ elements.left_rocket = {
"XX|XX|XX",
],
category:"ammunition",
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.e_rocket_launcher_left = {
color: "#C0C0C0",
@@ -529,6 +549,9 @@ elements.bombs_for_throwing_at_you_left = {
"XX|XX|XX",
"M1|M1%10 AND EX:10>bomb|XX",
],
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
}
elements.machine_for_throwing_bombs_at_right = {
color: "#524c41",
@@ -549,6 +572,9 @@ elements.bombs_for_throwing_at_you_right = {
"XX|XX|XX",
"XX|M1%10 AND EX:10>bomb|M1",
],
+ density: 1300,
+ excludeRandom: true,
+ cooldown: defaultCooldown
},
elements.energized_orb_left = {
color: ["#e0e000","#f3f300"],
@@ -592,4 +618,120 @@ elements.fast_bomb = {
density: 1300,
excludeRandom: true,
cooldown: defaultCooldown
+},
+elements.liquid_bomb = {
+ color: "#524c41",
+ tick: function(pixel) {
+ if (pixel.start === pixelTicks) {return}
+ if (pixel.charge && elements[pixel.element].behaviorOn) {
+ pixelTick(pixel)
+ }
+ if (elements[pixel.element].viscosity && (!((Math.random()*100) < 100 / Math.pow(elements[pixel.element].viscosity, 0.25)))) {
+ var move1Spots = [
+ [pixel.x, pixel.y+1]
+ ]
+ }
+ else {
+ var move1Spots = [
+ [pixel.x+1, pixel.y+1],
+ [pixel.x, pixel.y+1],
+ [pixel.x-1, pixel.y+1],
+ ]
+ }
+ var moved = false;
+ for (var i = 0; i < move1Spots.length; i++) {
+ var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)];
+ if (tryMove(pixel, coords[0], coords[1])) { moved = true; break; }
+ else { move1Spots.splice(move1Spots.indexOf(coords), 1); }
+ }
+ if (!moved) {
+ if (elements[pixel.element].viscosity===undefined || !(!((Math.random()*100) < 100 / Math.pow(elements[pixel.element].viscosity, 0.25)))) {
+ if (Math.random() < 0.5) {
+ if (!tryMove(pixel, pixel.x+1, pixel.y)) {
+ tryMove(pixel, pixel.x-1, pixel.y);
+ }
+ } else {
+ if (!tryMove(pixel, pixel.x-1, pixel.y)) {
+ tryMove(pixel, pixel.x+1, pixel.y);
+ }
+ }
+ }
+ }
+ doDefaults(pixel);
+ },
+ category: "weapons",
+ state: "liquid",
+ behavior: [
+ "XX|EX:10>explosion|XX",
+ "XX|XX|XX",
+ "XX|EX:10>explosion|XX",
+ ],
+ density: 1300,
+ excludeRandom: true,
+ ignore: "gas_bomb",
+ cooldown: defaultCooldown
+},
+elements.gas_bomb = {
+ color: "#524c41",
+ tick: function(pixel) {
+ if (pixel.start === pixelTicks) {return}
+ if (pixel.charge && elements[pixel.element].behaviorOn) {
+ pixelTick(pixel)
+ }
+ var move1Spots = [
+ [pixel.x, pixel.y+1],
+ [pixel.x, pixel.y-1],
+ [pixel.x+1, pixel.y],
+ [pixel.x-1, pixel.y],
+ ]
+ var moved = false;
+ for (var i = 0; i < move1Spots.length; i++) {
+ var coords = move1Spots[Math.floor(Math.random()*move1Spots.length)];
+ if (tryMove(pixel, coords[0], coords[1])) { moved = true; break; }
+ else { move1Spots.splice(move1Spots.indexOf(coords), 1);}
+ }
+ if (!moved) {
+ var move2Spots = [
+ [pixel.x+1, pixel.y+1],
+ [pixel.x-1, pixel.y+1],
+ [pixel.x+1, pixel.y-1],
+ [pixel.x-1, pixel.y-1],
+ ]
+ for (var i = 0; i < move2Spots.length; i++) {
+ var coords = move2Spots[Math.floor(Math.random()*move2Spots.length)];
+ if (tryMove(pixel, coords[0], coords[1])) { break; }
+ else { move2Spots.splice(move2Spots.indexOf(coords), 1); }
+ }
+ }
+ doDefaults(pixel);
+ },
+ category: "weapons",
+ state: "gas",
+ behavior: [
+ "XX|EX:10>explosion|XX",
+ "XX|XX|XX",
+ "XX|EX:10>explosion|XX",
+ ],
+ density: 1300,
+ excludeRandom: true,
+ ignore: "liquid_bomb",
+ cooldown: defaultCooldown
+}
+elements.tank_left = {
+ color: "#bcc6cc",
+ category: "vehicles",
+ behavior: [
+ "M2 AND CR:fast_bullet_left|XX|XX",
+ "M1|XX|XX",
+ "M1|M1|XX",
+ ],
+},
+elements.tank_right = {
+ color: "#bcc6cc",
+ category: "vehicles",
+ behavior: [
+ "XX|XX|M2 AND CR:fast_bullet_right",
+ "XX|XX|M1",
+ "XX|M1|M1",
+ ],
}
\ No newline at end of file