sandboxels/mods/boiling_things.js

541 lines
15 KiB
JavaScript
Raw Normal View History

2023-04-23 14:34:27 -04:00
var modName = "mods/boiling_things.js";
var libraryMod = "mods/code_library.js";
if(enabledMods.includes(libraryMod)) {
//glass {
elements.molten_glass = {
tempHigh: 2200,
stateHigh: "vaporized_glass",
}
elements.vaporized_glass = {
color: ["#D6B049","#E8D957","#E8AE57"],
behavior: [
"M2|M1|M2",
"M1|XX|M1",
"M2|M1|M2",
],
2022-01-25 19:10:26 -05:00
reactions: {
2023-04-23 14:34:27 -04:00
"vaporized_glass": { "elem1": null, "elem2": "hot_glass_cloud", "chance":0.3, "y":[0,15] },
"hot_glass_cloud": { "elem1": "hot_glass_cloud", "chance":0.4, "y":[0,15] },
2022-01-25 19:10:26 -05:00
},
2023-04-23 14:34:27 -04:00
density: 2, //very rough approximation based on https://nvlpubs.nist.gov/nistpubs/jres/46/jresv46n3p176_A1b.pdf
temp: 2300, //https://www.sciencealert.com/did-this-piece-of-glass-really-break-a-law-of-thermodynamics
tempLow: 2200,
stateLow: "molten_glass",
category: "gases",
state: "gas",
hidden: true,
},
2022-01-25 19:10:26 -05:00
2023-04-23 14:34:27 -04:00
elements.hot_glass_cloud = {
color: ["#B69089","#C8B997","#C88E77"],
behavior: [
"XX|XX|XX",
"M1%7|CH:molten_glass%0.05|M1%7",
"XX|XX|XX",
],
density: 2,
temp: 2300,
tempLow: 2200,
stateLow: "cold_glass_cloud",
category: "gases",
state: "gas",
},
elements.cold_glass_cloud = {
color: ["#967089","#A89997","#A86E77"],
behavior: [
"XX|XX|XX",
"M1%7|CH:glass_shard%0.05|M1%7",
"XX|XX|XX",
],
density: 2,
temp: 2000,
tempHigh: 2200,
stateHigh: "hot_glass_cloud",
category: "gases",
state: "gas",
},
2022-01-25 19:10:26 -05:00
2023-04-23 14:34:27 -04:00
//}
// ash {
elements.ash.tempHigh = 1200 //https://www.quora.com/Can-you-melt-ashes
elements.ash.stateHigh = "molten_ash" //https://www.sciencedirect.com/science/article/pii/S1877705817326772
2022-01-25 19:10:26 -05:00
2023-04-23 14:34:27 -04:00
elements.molten_ash = {
color: ["#df6f30","#df8c30","#df4d30"],
behavior: behaviors.MOLTEN,
temp: 1300,
tempLow: 1200,
stateLow: "ash",
tempHigh: 1700, //https://authors.library.caltech.edu/58447/1/018-Senior.pdf
//https://pubs.acs.org/doi/10.1021/ef049693l
stateHigh: "vaporized_ash",
viscosity: 10000,
category: "liquids",
state: "liquid",
density: 2725,
},
elements.vaporized_ash = {
color: ["#df9f50","#dfbc50","#df7d50"],
2022-01-25 19:10:26 -05:00
behavior: [
"M2|M1|M2",
"M1|XX|M1",
"M2|M1|M2",
],
reactions: {
2023-04-23 14:34:27 -04:00
"vaporized_ash": { "elem1": null, "elem2": "hot_ash_cloud", "chance":0.3, "y":[0,15] },
"hot_ash_cloud": { "elem1": "hot_ash_cloud", "chance":0.4, "y":[0,15] },
2022-01-25 19:10:26 -05:00
},
2023-04-23 14:34:27 -04:00
temp: 1800,
tempLow: 1700,
stateLow: "molten_ash",
2022-01-25 19:10:26 -05:00
category: "gases",
state: "gas",
hidden: true,
2023-04-23 14:34:27 -04:00
density: 3,
2022-01-25 19:10:26 -05:00
},
2023-04-23 14:34:27 -04:00
elements.hot_ash_cloud = {
color: ["#bf8f50","#bfac50","#bf7d50"],
2022-01-25 19:10:26 -05:00
behavior: [
"XX|XX|XX",
2023-04-23 14:34:27 -04:00
"M1%7|CH:molten_ash%0.05|M1%7",
2022-01-25 19:10:26 -05:00
"XX|XX|XX",
],
density: 0.7,
2023-04-23 14:34:27 -04:00
temp: 1800,
tempLow: 1700,
stateLow: "cold_ash_cloud",
2022-01-25 19:10:26 -05:00
category: "gases",
state: "gas",
},
2023-04-23 14:34:27 -04:00
elements.cold_ash_cloud = {
color: ["#af8f50","#ab9c50","#af6d50"],
2022-01-25 19:10:26 -05:00
behavior: [
"XX|XX|XX",
2023-04-23 14:34:27 -04:00
"M1%7|CH:ash%0.05|M1%7",
2022-01-25 19:10:26 -05:00
"XX|XX|XX",
],
density: 0.7,
2023-04-23 14:34:27 -04:00
temp: 1600,
tempHigh: 1700,
stateHigh: "hot_ash_cloud",
2022-01-25 19:10:26 -05:00
category: "gases",
state: "gas",
},
//}
2023-04-23 14:34:27 -04:00
// charcoal {
elements.charcoal.tempHigh = 800
elements.charcoal.stateHigh = "carbon_dioxide"
//}
//carbon dioxide {
/*fuck this, i can't work out the offset-infested math
function carbonDioxideDecompRatio(temp) {
//
// K is the ratio of O_2 to CO_2
// If K = 100, there is 100 times more O_2
// If K = 1, there is a 1:1 ratio
//
return Math.E**(((1110190+(13.083*(temp-298)))-(temp*(149.498+(13.083*(Math.log(temp/298))))))/(-8.31446*temp))
2022-01-25 19:10:26 -05:00
}
2023-04-23 14:34:27 -04:00
function carbonDioxideDecompChance(temp) {
//Expected 0.5 at 6275.6434478747902
if(typeof(temp) === "undefined") {
throw new Error("Temp must be specified~");
};
if(typeof(temp) == "string") {
temp = parseFloat(temp);
};
if(isNaN(temp)) {
throw new TypeError(typeof(temp) == "number" ? "Temp cannot be NaN~" : "Temp must be a number~");
};
if(temp == Infinity) {
return 1;
};
if(temp <= 0) {
return 0;
};
var K = carbonDioxideDecompRatio(temp);
return 1-(1/(K+1));
};
*/
var hasNM = enabledMods.includes("mods/Neutronium Mod.js");
//Mass given is the molar mass of O_2 molecule (31.999 g)
//O_2 bond energy is 495 kJ/mol
//Heat capacity is 0.918 J/(g*K)
//in case the link goes down: c = Q/(m * delta-T); c = capacity, m = mass, delta-T = temp change, energy = Q
//https://www.calctool.org/thermodynamics/specific-heat
tupleAdverbs = ['Nullly', 'Singly', 'Doubly', 'Triply', 'Quadruply', 'Quintuply', 'Sextuply', 'Septuply', 'Octuply', 'Nonuply', 'Decuply', 'Undecuply', 'Duodecuply', 'Tredecuply', 'Quattuordecuply', 'Quindecuply', 'Sexdecuply', 'Septendecuply', 'Octodecuply', 'Novemdecuply', 'Vigintuply', 'Unvigintuply', 'Duovigintuply', 'Trevigintuply', 'Quattuorvigintuply', 'Quinvigintuply', 'Sexvigintuply', 'Septenvigintuply', 'Octovigintuply', 'Novemvigintuply', 'Trigintuply'].map(x => x.toLowerCase());
//}
// baking soda {
elements.baking_soda.tempHigh = 150,
elements.baking_soda.stateHigh = ["water","carbon_dioxide","calcined_soda"]
// decomposition result {
elements.calcined_soda = { //TODO: decomposition?
color: "#ededed",
behavior: behaviors.POWDER,
reactions: {
"water": { "elem1": "washing_soda", "elem2": null } //should be 10x water
//"carbon_dioxide": not possible: Na_{2}CO_{3} + CO_{2} + H_{2}O → 2NaHCO_{3}
},
category: "powders",
state: "solid",
density: 2540,
tempHigh: 851,
}
if(!elements.molten_calcined_soda) {
elements.molten_calcined_soda = {}
}
elements.molten_calcined_soda.temp = 1700
elements.molten_calcined_soda.tempHigh = 1600
elements.molten_calcined_soda.stateHigh = "vaporized_calcined_soda"
elements.molten_calcined_soda.density = 1920
elements.vaporized_calcined_soda = {
color: ["#ffbf60","#ffdc60","#ff9d60"],
behavior: [
"M2|M1|M2",
"M1|XX|M1",
"M2|M1|M2",
],
reactions: {
"vaporized_calcined_soda": { "elem1": null, "elem2": "hot_calcined_soda_cloud", "chance":0.3, "y":[0,15] },
"hot_calcined_soda_cloud": { "elem1": "hot_calcined_soda_cloud", "chance":0.4, "y":[0,15] },
},
temp: 1700,
tempLow: 1600,
stateLow: "molten_calcined_soda",
category: "gases",
state: "gas",
hidden: true,
density: 1.5, //bs
},
elements.hot_calcined_soda_cloud = {
color: ["#cfbf70","#cfcc70","#cf9d70"],
behavior: [
"XX|XX|XX",
"M1%7|CH:molten_calcined_soda%0.05|M1%7",
"XX|XX|XX",
],
density: 0.7,
temp: 1700,
tempLow: 1600,
stateLow: "cold_calcined_soda_cloud",
category: "gases",
state: "gas",
},
elements.cold_calcined_soda_cloud = {
color: ["#afaf70","#afac70","#af8d70"],
behavior: [
"XX|XX|XX",
"M1%7|CH:calcined_soda%0.05|M1%7",
"XX|XX|XX",
],
density: 0.7,
temp: 1500,
tempHigh: 1600,
stateHigh: "hot_calcined_soda_cloud",
category: "gases",
state: "gas",
},
//}
// decomp hydrate {
elements.washing_soda = {
color: "#ededed",
behavior: behaviors.POWDER,
//no reactions because it always requires ******* water
category: "powders",
state: "solid",
density: 1460,
tempHigh: 400,
stateHigh: ["water","calcined_soda"],
}
//}
//alkalinities {
elements.acid.reactions.baking_soda = { "elem1":"neutral_acid", "elem2":null }
elements.acid.reactions.calcined_soda = { "elem1":"neutral_acid", "elem2":null }
elements.acid.reactions.washing_soda = { "elem1":"neutral_acid", "elem2":null }
//}
2022-01-25 19:10:26 -05:00
//}
2023-04-23 14:34:27 -04:00
// calcium {
2022-01-25 19:10:26 -05:00
2023-04-23 14:34:27 -04:00
elements.molten_calcium = {
tempHigh: 2200,
stateHigh: "vaporized_calcium",
}
elements.vaporized_calcium = {
color: ["#ffc94a", "#fcd34c", "#ffae36", "#ff9c40","#ffcd90","#cf8d50"],
behavior: [
"M2|M1|M2",
"M1|XX|M1",
"M2|M1|M2",
],
reactions: {
"vaporized_calcium": { "elem1": null, "elem2": "hot_calcium_cloud", "chance":0.3, "y":[0,15] },
"hot_calcium_cloud": { "elem1": "hot_calcium_cloud", "chance":0.4, "y":[0,15] },
},
density: 1.5, //most of these density values are complete bullshit due to a lack of research
temp: 1550,
tempLow: 1484,
stateLow: "molten_calcium",
category: "gases",
state: "gas",
hidden: true,
},
elements.hot_calcium_cloud = {
color: ["#dfa98a", "#dcb38c", "#df8e76", "#ef8c60","#efbdb0","#af8d70"],
behavior: [
"XX|XX|XX",
"M1%7|CH:molten_calcium%0.05|M1%7",
"XX|XX|XX",
],
density: 1.5,
temp: 1550,
tempLow: 842,
stateLow: "cold_calcium_cloud",
category: "gases",
state: "gas",
},
2022-01-25 19:10:26 -05:00
2023-04-23 14:34:27 -04:00
elements.cold_calcium_cloud = {
color: ["#bf998a", "#bca38c", "#bf8e76", "#cf8c60","#cfadb0","#9f8d70"],
behavior: [
"XX|XX|XX",
"M1%7|CH:calcium%0.05|M1%7",
"XX|XX|XX",
],
density: 2,
temp: 800,
tempHigh: 842,
stateHigh: "hot_calcium_cloud",
category: "gases",
state: "gas",
}
2022-01-25 19:10:26 -05:00
//}
2023-04-23 14:34:27 -04:00
// clay {
if(!elements.baked_clay) {
elements.baked_clay = {}
}
elements.baked_clay.tempHigh = 1600 //the range of melting points online is so fucking wide
elements.baked_clay.stateHigh = "molten_clay"
elements.molten_clay = {
color: ["#ff6d23","#ff5723","#ff4100"],
behavior: [
"XX|CR:fire%2.5|XX",
"M2|XX|M2",
"M1|M1|M1",
],
temp: 1700,
tempLow: 1600,
stateLow: "baked_clay",
viscosity: 10000,
hidden: true,
state: "liquid",
density: 1800,
tempHigh: 2980,
stateHigh: "vaporized_clay",
category: "liquids",
}
elements.vaporized_clay = {
color: ["#ff8d43","#ff7743","#ff6120"],
behavior: [
"M2|M1|M2",
"M1|XX|M1",
"M2|M1|M2",
],
reactions: {
"vaporized_clay": { "elem1": null, "elem2": "hot_clay_cloud", "chance":0.3, "y":[0,15] },
"hot_clay_cloud": { "elem1": "hot_clay_cloud", "chance":0.4, "y":[0,15] },
},
density: 1.6,
temp: 1700,
tempLow: 1600,
stateLow: "molten_clay",
category: "gases",
state: "gas",
hidden: true,
2022-01-25 19:10:26 -05:00
},
2023-04-23 14:34:27 -04:00
elements.hot_clay_cloud = {
color: ["#ff9945", "#fca347", "#ff7e31"],
behavior: [
"XX|XX|XX",
"M1%7|CH:molten_clay%0.05|M1%7",
"XX|XX|XX",
],
density: 1.5,
temp: 1550,
tempLow: 842,
stateLow: "cold_clay_cloud",
category: "gases",
state: "gas",
2022-01-25 19:10:26 -05:00
},
2023-04-23 14:34:27 -04:00
elements.cold_clay_cloud = {
color: ["#ef7945", "#ec8347", "#ef5e31"],
behavior: [
"XX|XX|XX",
"M1%7|CH:baked_clay%0.05|M1%7",
"XX|XX|XX",
],
density: 2,
temp: 800,
tempHigh: 842,
stateHigh: "hot_clay_cloud",
category: "gases",
state: "gas",
},
//}
// salt {
elements.molten_salt = {
tempHigh: 1465,
stateHigh: "vaporized_salt",
}
elements.vaporized_salt = {
color: ["#ff9f60","#ffbc60","#ff7d60"],
behavior: [
"M2|M1|M2",
"M1|XX|M1",
"M2|M1|M2",
],
reactions: {
"vaporized_salt": { "elem1": null, "elem2": "hot_salt_cloud", "chance":0.3, "y":[0,15] },
"hot_salt_cloud": { "elem1": "hot_salt_cloud", "chance":0.4, "y":[0,15] },
},
density: 1946,
temp: 1550,
tempLow: 1465,
stateLow: "molten_salt",
category: "gases",
state: "gas",
hidden: true,
2022-01-25 19:10:26 -05:00
},
2023-04-23 14:34:27 -04:00
elements.hot_salt_cloud = {
color: ["#ef8f30","#efac60","#ef6d60"],
behavior: [
"XX|XX|XX",
"M1%7|CH:molten_salt%0.05|M1%7",
"XX|XX|XX",
],
density: 2.2,
temp: 1550,
tempLow: 801,
stateLow: "cold_salt_cloud",
category: "gases",
state: "gas",
},
elements.cold_salt_cloud = {
color: ["#cf7f60","#cf9c60","#cf7d60"],
behavior: [
"XX|XX|XX",
"M1%7|CH:salt%0.05|M1%7",
"XX|XX|XX",
],
density: 2.2,
temp: 700,
tempHigh: 801,
stateHigh: "hot_salt_cloud",
category: "gases",
state: "gas",
}
//}
runAfterLoad(function() {
if(elements.acid_gas.tempHigh) {
delete elements.acid_gas.tempHigh
}
if(elements.acid_gas.stateHigh) {
delete elements.acid_gas.stateHigh
}
elements.acid.stateHigh = "acid_gas"
elements.acid_gas.tempLow = 400
elements.acid_gas.stateLow = "acid"
elements.yogurt.tempHigh = 400
elements.yogurt.stateHigh = "ash"
elements.dust.tempHigh = 400
elements.dust.stateHigh = "fire"
if(enabledMods.includes("mods/fey_and_more.js")) {
//mistake
elements.concoction.reactions.vaporized_glass = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.hot_glass_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.cold_glass_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.molten_ash = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.vaporized_ash = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.hot_ash_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.cold_ash_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.calcined_soda = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.molten_calcined_soda = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.vaporized_calcined_soda = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.hot_calcined_soda_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.cold_calcined_soda_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.washing_soda = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.vaporized_calcium = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.hot_calcium_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.cold_calcium_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.molten_clay = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.vaporized_clay = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.hot_clay_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.cold_clay_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.vaporized_salt = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.hot_salt_cloud = { "elem1": "mistake", "elem2": null }
elements.concoction.reactions.cold_salt_cloud = { "elem1": "mistake", "elem2": null }
};
});
} else {
alert(`The ${libraryMod} mod is required and has been automatically inserted (reload for this to take effect).`)
enabledMods.splice(enabledMods.indexOf(modName),0,libraryMod)
localStorage.setItem("enabledMods", JSON.stringify(enabledMods));
};