finally napalm
This commit is contained in:
parent
6cc2cced9a
commit
33b57380e1
|
|
@ -275,6 +275,92 @@ if(allDependenciesExist) {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Element name search
|
||||||
|
window.searchQuery = {};
|
||||||
|
|
||||||
|
function searchElements(query) {
|
||||||
|
if(typeof(window.searchQuery) == "undefined") { window.searchQuery = "" }; //necessary because of filter's idiotic no-argument policy
|
||||||
|
window.searchQuery = query;
|
||||||
|
var elemNames = Object.keys(elements);
|
||||||
|
var matches = elemNames.filter(function(name) {
|
||||||
|
return !!(name.match(window.searchQuery))
|
||||||
|
});
|
||||||
|
return matches
|
||||||
|
};
|
||||||
|
|
||||||
|
function getStateHigh(element,forceArray=false) {
|
||||||
|
if(!(element instanceof Array)) { element = [element] };
|
||||||
|
var existantElements = element.filter(function(name) { return elementExists(name) });
|
||||||
|
if(existantElements.length == 0) { return undefined } else { element = existantElements };
|
||||||
|
var results = element.map(name => elements[name].stateHigh).filter(function(nameOrUndefined) { return typeof(nameOrUndefined) !== "undefined" });
|
||||||
|
switch(results.length) {
|
||||||
|
case 0:
|
||||||
|
return null;
|
||||||
|
case 1:
|
||||||
|
if(!forceArray) { return results[0] };
|
||||||
|
default:
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function getState(element,forceArray=false) {
|
||||||
|
if(!(element instanceof Array)) { element = [element] };
|
||||||
|
var existantElements = element.filter(function(name) { return elementExists(name) });
|
||||||
|
if(existantElements.length == 0) { return undefined } else { element = existantElements };
|
||||||
|
var results = element.map(name => elements[name].state).filter(function(nameOrUndefined) { return typeof(nameOrUndefined) !== "undefined" });
|
||||||
|
switch(results.length) {
|
||||||
|
case 0:
|
||||||
|
return null;
|
||||||
|
case 1:
|
||||||
|
if(!forceArray) { return results[0] };
|
||||||
|
default:
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function getStateLow(element,forceArray=false) {
|
||||||
|
if(!(element instanceof Array)) { element = [element] };
|
||||||
|
var existantElements = element.filter(function(name) { return elementExists(name) });
|
||||||
|
if(existantElements.length == 0) { return undefined } else { element = existantElements };
|
||||||
|
var results = element.map(name => elements[name].stateLow).filter(function(nameOrUndefined) { return typeof(nameOrUndefined) !== "undefined" });
|
||||||
|
switch(results.length) {
|
||||||
|
case 0:
|
||||||
|
return null;
|
||||||
|
case 1:
|
||||||
|
if(!forceArray) { return results[0] };
|
||||||
|
default:
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function getStateAtTemp(element,temp) {
|
||||||
|
var data = elements[element];
|
||||||
|
var tl = data.tempLow;
|
||||||
|
var th = data.tempHigh;
|
||||||
|
if(typeof(tl) == "number" && temp <= tl) {
|
||||||
|
return data.stateLow
|
||||||
|
} else if(typeof(th) == "number" && temp >= th) {
|
||||||
|
return data.stateHigh
|
||||||
|
} else {
|
||||||
|
return element
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function getBreakInto(element,forceArray=false) {
|
||||||
|
if(!(element instanceof Array)) { element = [element] };
|
||||||
|
var existantElements = element.filter(function(name) { return elementExists(name) });
|
||||||
|
if(existantElements.length == 0) { return undefined } else { element = existantElements };
|
||||||
|
var results = element.map(name => elements[name].breakInto).filter(function(nameOrUndefined) { return typeof(nameOrUndefined) !== "undefined" });
|
||||||
|
switch(results.length) {
|
||||||
|
case 0:
|
||||||
|
return null;
|
||||||
|
case 1:
|
||||||
|
if(!forceArray) { return results[0] };
|
||||||
|
default:
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//Math(s)
|
//Math(s)
|
||||||
|
|
||||||
//Base n logarithm from https://stackoverflow.com/a/3019290
|
//Base n logarithm from https://stackoverflow.com/a/3019290
|
||||||
|
|
@ -1273,7 +1359,8 @@ if(allDependenciesExist) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
function createPixelReturn(element,x,y) { //sugar
|
function createPixelReturn(elementIn,x,y) { //sugar
|
||||||
|
var element = elementIn; while(element instanceof Array) { element = randomChoice(element) };
|
||||||
var newPixel = new Pixel(x, y, element);
|
var newPixel = new Pixel(x, y, element);
|
||||||
currentPixels.push(newPixel);
|
currentPixels.push(newPixel);
|
||||||
checkUnlock(element);
|
checkUnlock(element);
|
||||||
|
|
@ -3219,6 +3306,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
selectElement(firstElementButton.getAttribute("element"));
|
selectElement(firstElementButton.getAttribute("element"));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//MORE CONFIGURABLE EXPLOSIONS (explodeAtPlus) ##
|
//MORE CONFIGURABLE EXPLOSIONS (explodeAtPlus) ##
|
||||||
|
|
||||||
velocityBlacklist = [];
|
velocityBlacklist = [];
|
||||||
|
|
@ -12468,6 +12556,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
burn: 100,
|
burn: 100,
|
||||||
burnTime: 5,
|
burnTime: 5,
|
||||||
fireColor: ["#00ffff","#00ffdd"],
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
burnInto: ["fire","carbon_dioxide","carbon_dioxide","steam","steam"],
|
||||||
state: "gas",
|
state: "gas",
|
||||||
density: 1.93 * airDensity,
|
density: 1.93 * airDensity,
|
||||||
};
|
};
|
||||||
|
|
@ -12726,7 +12815,218 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
|
|
||||||
//Quintuple carbon line
|
//Quintuple carbon line
|
||||||
|
|
||||||
//To do
|
//Single bond
|
||||||
|
elements.pentane = {
|
||||||
|
color: "#b5685b",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 533,
|
||||||
|
stateHigh: "fire",
|
||||||
|
reactions: {
|
||||||
|
"head": { elem2: "rotten_meat", chance: 0.00015},
|
||||||
|
"body": { elem2: "rotten_meat", chance: 0.00015},
|
||||||
|
},
|
||||||
|
tempLow: 36.1,
|
||||||
|
burn: 85,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam","steam"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.48 * airDensity,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_pentane = {
|
||||||
|
color: "#a62711",
|
||||||
|
tempLow: -130.2,
|
||||||
|
density: 626,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.isopentane = {
|
||||||
|
color: "#bb6c54",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 427,
|
||||||
|
stateHigh: "fire",
|
||||||
|
reactions: {
|
||||||
|
"head": { elem2: "rotten_meat", chance: 0.00015},
|
||||||
|
"body": { elem2: "rotten_meat", chance: 0.00015},
|
||||||
|
},
|
||||||
|
tempLow: -11.7,
|
||||||
|
burn: 85,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.48 * airDensity,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_isopentane = {
|
||||||
|
color: "#ab320d",
|
||||||
|
tempLow: -160,
|
||||||
|
density: 616,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.neopentane = {
|
||||||
|
color: "#c1724e",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 427,
|
||||||
|
stateHigh: "fire",
|
||||||
|
reactions: {
|
||||||
|
"head": { elem2: "rotten_meat", chance: 0.00015},
|
||||||
|
"body": { elem2: "rotten_meat", chance: 0.00015},
|
||||||
|
},
|
||||||
|
tempLow: 9.5,
|
||||||
|
burn: 85,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 3.255,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_neopentane = {
|
||||||
|
color: "#af3d08",
|
||||||
|
tempLow: -16.5,
|
||||||
|
density: 601.172,
|
||||||
|
};
|
||||||
|
|
||||||
|
//Double bond
|
||||||
|
elements.pentylene = { //pentene
|
||||||
|
name: "1-pentylene",
|
||||||
|
color: "#af5a4b",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 527,
|
||||||
|
stateHigh: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
tempLow: 30,
|
||||||
|
temp: 40,
|
||||||
|
burn: 100,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.4 * airDensity,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_pentylene = {
|
||||||
|
tempLow: -165.2,
|
||||||
|
density: 640,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.trans_2_pentylene = {
|
||||||
|
name: "t-pentylene-2",
|
||||||
|
color: "#924b3f",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 324, //Unknown
|
||||||
|
stateHigh: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
tempLow: 36.3,
|
||||||
|
burn: 85,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.4 * airDensity,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_trans_2_pentylene = {
|
||||||
|
tempLow: -140.2,
|
||||||
|
density: 643.1,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.cis_2_pentylene = {
|
||||||
|
name: "c-pentylene-2",
|
||||||
|
color: "#9d5143",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 324, //Unknown
|
||||||
|
stateHigh: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
tempLow: 36.9,
|
||||||
|
burn: 85,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","steam","steam","steam","steam","steam"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2 * airDensity,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_cis_2_pentylene = {
|
||||||
|
tempLow: -151.4,
|
||||||
|
density: 655.6,
|
||||||
|
};
|
||||||
|
|
||||||
|
//Triple bond
|
||||||
|
elements.pentyne = {
|
||||||
|
name: "1-pentyne",
|
||||||
|
color: "#9d5143",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 454, //Unknown
|
||||||
|
stateHigh: ["fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","oxygen","oxygen","oxygen"],
|
||||||
|
tempLow: 40.2,
|
||||||
|
temp: 55,
|
||||||
|
burn: 100,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","oxygen","oxygen","oxygen"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.6 * airDensity, //made-up due to also unknown vapor density
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_1_pentyne = {
|
||||||
|
tempLow: -105.5,
|
||||||
|
density: 691,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.pentyne_2 = {
|
||||||
|
name: "2-pentyne",
|
||||||
|
color: "#9d5143",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 454, //Unknown
|
||||||
|
stateHigh: ["fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","oxygen","oxygen","oxygen"],
|
||||||
|
tempLow: 56.5,
|
||||||
|
temp: 65,
|
||||||
|
burn: 70,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","oxygen","oxygen","oxygen"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.6 * airDensity, //made-up due to also unknown vapor density
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_pentyne_2 = {
|
||||||
|
tempLow: -109,
|
||||||
|
density: 710,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.isopentyne = {
|
||||||
|
color: "#a6533a",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "gases",
|
||||||
|
tempHigh: 454, //Unknown
|
||||||
|
stateHigh: ["fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","oxygen","oxygen","oxygen"],
|
||||||
|
tempLow: 29.5,
|
||||||
|
temp: 40,
|
||||||
|
burn: 70,
|
||||||
|
burnTime: 5,
|
||||||
|
burnInto: ["fire","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_dioxide","oxygen","oxygen","oxygen"],
|
||||||
|
fireColor: ["#00ffff","#00ffdd"],
|
||||||
|
state: "gas",
|
||||||
|
density: 2.6 * airDensity, //made-up due to also unknown vapor density
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.liquid_isopentyne = {
|
||||||
|
tempLow: -89.7,
|
||||||
|
density: 666,
|
||||||
|
};
|
||||||
|
|
||||||
|
//Alcohol
|
||||||
|
//Fuck no I'm not doing 8 isomers
|
||||||
|
|
||||||
|
//Benzene ver.
|
||||||
|
//i'm tired
|
||||||
|
|
||||||
//Vodka
|
//Vodka
|
||||||
|
|
||||||
|
|
@ -12980,6 +13280,66 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
|
|
||||||
//Inorganic compounds
|
//Inorganic compounds
|
||||||
|
|
||||||
|
runAfterAutogen(function() {
|
||||||
|
var waters = searchElements("water").filter(function(name) { return getState(name) == "liquid" });
|
||||||
|
var whitelistWaters = ["hail","rime","cloud","rain_cloud","thunder_cloud","snow_cloud","hail_cloud","rain_cloud_cloud","snow_cloud_cloud","hail_cloud_cloud","cloud_cloud","heaviest_water_cloud","heaviest_snow_cloud","snow_cloud_floater","jinsoulite","jinsoulite_gas","jinsoulite_powder","molten_jinsoulite"];
|
||||||
|
var jvoWaters = Object.keys(jinsouliteValueObject).filter(function(name) { return !(name.includes("bomb")) });
|
||||||
|
var coldWaters = (getStateLow(waters,true) ?? []).filter(
|
||||||
|
function(name) { return typeof(name) == "string" }
|
||||||
|
);
|
||||||
|
var colderWaters = (getStateLow(coldWaters,true) ?? []).filter(
|
||||||
|
function(name) { return typeof(name) == "string" }
|
||||||
|
);
|
||||||
|
var hotWaters = (getStateHigh(waters,true) ?? []).filter(
|
||||||
|
function(name) { return typeof(name) == "string" }
|
||||||
|
);
|
||||||
|
var brokenColdWaters = (getBreakInto(coldWaters,true) ?? []).filter(
|
||||||
|
function(name) { return typeof(name) == "string" }
|
||||||
|
);
|
||||||
|
var coldBrokenColdWaters = (getStateLow(brokenColdWaters,true) ?? []).filter(
|
||||||
|
function(name) { return typeof(name) == "string" }
|
||||||
|
);
|
||||||
|
wateroids = [waters,coldWaters,colderWaters,hotWaters,brokenColdWaters,coldBrokenColdWaters,whitelistWaters,jvoWaters].flat()
|
||||||
|
|
||||||
|
//moved vivite-related code to where it happens
|
||||||
|
for(var i = 0; i < wateroids.length; i++) {
|
||||||
|
if(elements[wateroids[i]]) { elements[wateroids[i]].noViviteSlag = true };
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
//Hydrogen sulfide (in chem.js)
|
||||||
|
_h_2s = ["hydrogen_sulfide","liquid_hydrogen_sulfide","hydrogen_sulfide_ice"];
|
||||||
|
|
||||||
|
elements.hydrogen_sulfide.density = 1.19 * airDensity;
|
||||||
|
elements.hydrogen_sulfide.reactions ??= {};
|
||||||
|
elements.hydrogen_sulfide.reactions.head = { elem2: "rotten_meat", chance: 0.4};
|
||||||
|
elements.hydrogen_sulfide.fireColor = { elem2: "rotten_meat", chance: 0.4};
|
||||||
|
elements.hydrogen_sulfide.tempHigh = 1200;
|
||||||
|
elements.hydrogen_sulfide.stateHigh = ["sulfur_gas","steam"];
|
||||||
|
delete elements.sulfur_dioxide.reactions.water;
|
||||||
|
delete elements.sulfur_dioxide.reactions.steam;
|
||||||
|
delete elements.water.reactions.sulfur;
|
||||||
|
elements.sulfur_dioxide.tick = function(pixel) {
|
||||||
|
var neighbors = adjacentCoords.map(offsetPair => pixelMap[pixel.x+offsetPair[0]]?.[pixel.y+offsetPair[1]]).filter(function(pixelOrUndefined) { return typeof(pixelOrUndefined) == "object" });
|
||||||
|
if(neighbors.length < 2) { return };
|
||||||
|
var neighboringElements = neighbors.filter(function(px) { return !!px }).map(x => x.element);
|
||||||
|
var waterNeighbor = null;
|
||||||
|
var sulfideNeighbor = null;
|
||||||
|
for(var i = 0; i < neighboringElements.length; i++) {
|
||||||
|
if(_h_2s.includes(neighboringElements[i])) {
|
||||||
|
sulfideNeighbor = adjacentCoords[i];
|
||||||
|
};
|
||||||
|
if(wateroids.includes(neighboringElements[i])) {
|
||||||
|
waterNeighbor = adjacentCoords[i];
|
||||||
|
};
|
||||||
|
if(sulfideNeighbor && waterNeighbor) {
|
||||||
|
if(!sulfideNeighbor || isEmpty(sulfideNeighbor.x,sulfideNeighbor.y,true)) { return };
|
||||||
|
changePixel(sulfideNeighbor,getStateAtTemp("sulfur",pixel.temp));
|
||||||
|
changePixel(pixel,getStateAtTemp("water",pixel.temp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//Carbon monoxide
|
//Carbon monoxide
|
||||||
|
|
||||||
elements.carbon_monoxide = {
|
elements.carbon_monoxide = {
|
||||||
|
|
@ -13006,28 +13366,357 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
elements.steam.reactions.charcoal = { tempMin: 680, elem1: "hydrogen", elem2: "carbon_monoxide" };
|
elements.steam.reactions.charcoal = { tempMin: 680, elem1: "hydrogen", elem2: "carbon_monoxide" };
|
||||||
elements.steam.reactions.diamond = { tempMin: 680, elem1: "hydrogen", elem2: "carbon_monoxide" };
|
elements.steam.reactions.diamond = { tempMin: 680, elem1: "hydrogen", elem2: "carbon_monoxide" };
|
||||||
|
|
||||||
/* //Oil refining
|
//Oil refining
|
||||||
delete elements.oil.tempHigh;
|
|
||||||
|
|
||||||
elements.oil.tick = function(pixel) {
|
delete elements.oil.tempHigh;
|
||||||
if(!pixel.role) {
|
|
||||||
var value = Math.random()
|
function liquidMoveCustomViscosity(pixel,viscosity) {
|
||||||
if(value < 0.03) {
|
if (pixel.start === pixelTicks) {return}
|
||||||
pixel.role = "lpg";
|
if (pixel.charge && elements[pixel.element].behaviorOn) {
|
||||||
|
pixelTick(pixel)
|
||||||
|
}
|
||||||
|
var viscosityPass = ((Math.random()*100) < 100 / Math.pow(viscosity, 0.25));
|
||||||
|
if (!viscosityPass) {
|
||||||
|
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 (viscosityPass) {
|
||||||
|
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);
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
if(pixel.role == "lpg") {
|
elements.light_petroleum_fuel_gas = { //it's not liquified, and sandboxels doesn't even have a pressure system, and there is no generic name for uncompressed, gaseous "L"PG, so we need a different name
|
||||||
var value = Math.random()
|
burn: 100,
|
||||||
//LPG composition weighted chooser
|
color: "#b5b5b3",
|
||||||
};
|
density: 3.5,
|
||||||
|
tempLow: -44,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.temp >= 495 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
burnInto: "explosion,explosion,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","),
|
||||||
|
state: "gas",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.lamp_oil.tempHigh = 170;
|
||||||
|
elements.lamp_oil.density = 810;
|
||||||
|
elements.lamp_oil.name = "kerosene";
|
||||||
|
elements.lamp_oil.forceAutoGen = true;
|
||||||
|
elements.lamp_oil_gas = {
|
||||||
|
name: "kerosene gas",
|
||||||
|
burn: 100,
|
||||||
|
density: 4.5,
|
||||||
|
tick: elements.lamp_oil.tick,
|
||||||
|
burnInto: "explosion,fire,fire,fire,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",")
|
||||||
|
};
|
||||||
|
|
||||||
if(pixel.temp > 30) { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
elements.gasoline = {
|
||||||
//LPG change switch(pixel.role) statement
|
color: "#d1cf9d",
|
||||||
};
|
behavior: behaviors.LIQUID,
|
||||||
};
|
tick: function(pixel) {
|
||||||
*/
|
if (pixel.temp > 263 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
"styrofoam": { elem1: ["gasoline","gasoline","gasoline","gasoline","napalm"], elem2: null }, //the joke
|
||||||
|
"polystyrene": { elem1: "napalm", elem2: ["polystyrene","polystyrene",null] },
|
||||||
|
"molten_polystyrene": { elem1: "napalm", elem2: ["molten_polystyrene","molten_polystyrene",null] },
|
||||||
|
"glue": {elem2:null, chance:0.05},
|
||||||
|
"wax": {elem2:null, chance:0.005},
|
||||||
|
"melted_wax": {elem2:null, chance:0.025},
|
||||||
|
},
|
||||||
|
forceAutoGen: true,
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 70,
|
||||||
|
tempLow: -60,
|
||||||
|
burn: 20,
|
||||||
|
burnTime: 500,
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","),
|
||||||
|
viscosity: 7.04,
|
||||||
|
state: "liquid",
|
||||||
|
density: 755,
|
||||||
|
alias: "petrol"
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.gasoline_gas = {
|
||||||
|
burn: 100,
|
||||||
|
burnTime: 10,
|
||||||
|
density: 3.5,
|
||||||
|
tick: elements.gasoline.tick,
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",")
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.naphtha = {
|
||||||
|
color: "#d1d1d1",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.temp > 270 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
"styrofoam": { elem1: ["naphtha","naphtha","naphtha","naphtha","napalm"], elem2: null },
|
||||||
|
"polystyrene": { elem1: "napalm", elem2: ["polystyrene","polystyrene",null] },
|
||||||
|
"molten_polystyrene": { elem1: "napalm", elem2: ["molten_polystyrene","molten_polystyrene",null] },
|
||||||
|
"glue": {elem2:null, chance:0.05},
|
||||||
|
"wax": {elem2:null, chance:0.005},
|
||||||
|
"melted_wax": {elem2:null, chance:0.025},
|
||||||
|
},
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 120,
|
||||||
|
tempLow: -30,
|
||||||
|
forceAutoGen: true,
|
||||||
|
burn: 80,
|
||||||
|
burnTime: 500,
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","),
|
||||||
|
viscosity: 5.77,
|
||||||
|
state: "liquid",
|
||||||
|
density: 740
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.naphtha_gas = {
|
||||||
|
burn: 100,
|
||||||
|
burnTime: 10,
|
||||||
|
density: 3.5,
|
||||||
|
tick: elements.naphtha.tick,
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",")
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.diesel = {
|
||||||
|
color: "#d3d9b4",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.temp > 210 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
"glue": {elem2:null, chance:0.05},
|
||||||
|
"wax": {elem2:null, chance:0.005},
|
||||||
|
"melted_wax": {elem2:null, chance:0.025},
|
||||||
|
},
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 260,
|
||||||
|
forceAutoGen: true,
|
||||||
|
tempLow: -25,
|
||||||
|
burn: 20,
|
||||||
|
burnTime: 500,
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","),
|
||||||
|
viscosity: 7.04,
|
||||||
|
state: "liquid",
|
||||||
|
density: 755,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.diesel_gas = {
|
||||||
|
burn: 100,
|
||||||
|
burnTime: 12,
|
||||||
|
density: 3.5,
|
||||||
|
tick: elements.diesel.tick,
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",")
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.lubricating_oil = {
|
||||||
|
color: "#d3d9b4",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.temp > 450 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 350,
|
||||||
|
tempLow: -40,
|
||||||
|
burn: 20,
|
||||||
|
burnTime: 600,
|
||||||
|
forceAutoGen: true,
|
||||||
|
burnInto: "explosion,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(","),
|
||||||
|
viscosity: 7.04,
|
||||||
|
state: "liquid",
|
||||||
|
density: 800,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.lubricating_oil_gas = {
|
||||||
|
burn: 100,
|
||||||
|
burnTime: 13,
|
||||||
|
density: 3.5,
|
||||||
|
tick: elements.lubricating_oil.tick,
|
||||||
|
burnInto: "explosion,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",")
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.heavy_fuel_oil = {
|
||||||
|
color: "#1c1a18",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if (pixel.temp > 407 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
};
|
||||||
|
if(pixel.burning && Math.random() < 0.01) {
|
||||||
|
var emptyNeighbors = [];
|
||||||
|
for(i = 0; i < adjacentCoords.length; i++) {
|
||||||
|
if(isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],false)) {
|
||||||
|
emptyNeighbors.push(adjacentCoords[i]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if(emptyNeighbors.length > 0) {
|
||||||
|
var randomEmptyNeighbor = emptyNeighbors[Math.floor(Math.random() * emptyNeighbors.length)];
|
||||||
|
createPixelReturn(["smoke","carbon_dioxide"],pixel.x+randomEmptyNeighbor[0],pixel.y+randomEmptyNeighbor[1]).temp = pixel.temp
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
"polystyrene": { elem1: "napalm", elem2: "napalm", chance:0.05 }, //the joke
|
||||||
|
"glue": {elem2:null, chance:0.05},
|
||||||
|
"wax": {elem2:null, chance:0.005},
|
||||||
|
"melted_wax": {elem2:null, chance:0.025},
|
||||||
|
},
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 300,
|
||||||
|
forceAutoGen: true,
|
||||||
|
tempLow: 0,
|
||||||
|
burn: 10,
|
||||||
|
viscosity: 700,
|
||||||
|
burnTime: 800,
|
||||||
|
fireElement: ["fire","fire","fire","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"],
|
||||||
|
burnInto: "explosion,fire,fire,fire,fire,fire,fire,ash,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,poison_gas".split(","),
|
||||||
|
viscosity: 7.04,
|
||||||
|
state: "liquid",
|
||||||
|
density: 755,
|
||||||
|
alias: "petrol"
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.heavy_fuel_oil_gas = {
|
||||||
|
burn: 80,
|
||||||
|
burnTime: 60,
|
||||||
|
density: 2.5,
|
||||||
|
tick: elements.heavy_fuel_oil.tick,
|
||||||
|
fireElement: ["explosion","fire","fire","fire","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"],
|
||||||
|
burnInto: "fire,fire,fire,fire,fire,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,steam,steam".split(",")
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.bitumen = {
|
||||||
|
color: "#0d0c0c",
|
||||||
|
maxColorOffset: 5,
|
||||||
|
tick: function(pixel) {
|
||||||
|
var viscosity = 1e16 / (1.09 ** pixel.temp);
|
||||||
|
liquidMoveCustomViscosity(pixel,viscosity)
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
"polystyrene": { elem1: "napalm", elem2: "napalm", chance:0.05 }, //the joke
|
||||||
|
"glue": {elem2:null, chance:0.05},
|
||||||
|
"wax": {elem2:null, chance:0.005},
|
||||||
|
"melted_wax": {elem2:null, chance:0.025},
|
||||||
|
},
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 750,
|
||||||
|
stateHigh: ["bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","bitumen","fire","fire","fire","smoke","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"],
|
||||||
|
burn: 2,
|
||||||
|
burnTime: 800,
|
||||||
|
fireElement: ["fire","fire","fire","smoke","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"],
|
||||||
|
burnInto: "fire,fire,fire,fire,fire,fire,ash,ash,ash,carbon_monoxide,carbon_monoxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,carbon_dioxide,steam,steam,steam,poison_gas".split(","),
|
||||||
|
viscosity: 7.04,
|
||||||
|
state: "liquid",
|
||||||
|
density: 1050,
|
||||||
|
reactions: {
|
||||||
|
gravel: { elem1: "asphalt", elem2: "asphalt" }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.asphalt ={
|
||||||
|
color: "#191919",
|
||||||
|
behavior: behaviors.STURDYPOWDER,
|
||||||
|
tempHigh: 750,
|
||||||
|
stateHigh: ["asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","asphalt","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel",,"fire","fire","fire","smoke","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"],
|
||||||
|
category: "land",
|
||||||
|
state: "solid",
|
||||||
|
density: 2322,
|
||||||
|
burn: 0.5,
|
||||||
|
burnTime: 5000,
|
||||||
|
burnInto: ["gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel","gravel",,"fire","fire","fire","smoke","smoke","smoke","carbon_dioxide","carbon_dioxide","carbon_dioxide","carbon_monoxide","carbon_monoxide","carbon_monoxide","sulfur_dioxide","sulfur_trioxide_gas","poison_gas"],
|
||||||
|
fireElement: ["smoke","smoke","smoke","carbon_dioxide","carbon_monoxide","fire","fire","fire","fire","fire","fire"],
|
||||||
|
fireChance: 2,
|
||||||
|
hardness: 0.5,
|
||||||
|
breakInto: ["bitumen","gravel"],
|
||||||
|
reactions: {
|
||||||
|
light: { temp1: 0.25, elem2: null }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.oil.tick = function(pixel) {
|
||||||
|
if(!pixel.role) {
|
||||||
|
var value = Math.random()
|
||||||
|
if(value <= 0.03) {
|
||||||
|
pixel.role = "lpg";
|
||||||
|
} else if(value <= 0.45) { //42%
|
||||||
|
pixel.role = "gasoline";
|
||||||
|
} else if(value <= 0.60) { //15%
|
||||||
|
pixel.role = "naphtha";
|
||||||
|
} else if(value <= 0.70) { //10%
|
||||||
|
pixel.role = "kerosene"; //kerosene/lamp oil/jet fuel are apparently the same funny bunch of hydrocarbons
|
||||||
|
} else if(value <= 0.9) { //20%
|
||||||
|
pixel.role = "diesel";
|
||||||
|
} else if(value <= 0.91) { //1%
|
||||||
|
pixel.role = "lubricant";
|
||||||
|
} else if(value <= 0.97) { //6%
|
||||||
|
pixel.role = "heavy_fuel_oil"; //700 cP
|
||||||
|
} else if(value < 1) { //3%
|
||||||
|
pixel.role = "bitumen";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if(pixel.temp > 30 && pixel.role == "lpg") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
changePixel(pixel,"light_petroleum_fuel_gas")
|
||||||
|
} else if(pixel.temp > 70 && pixel.role == "gasoline") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
changePixel(pixel,"gasoline_gas")
|
||||||
|
} else if(pixel.temp > 120 && pixel.role == "naphtha") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
changePixel(pixel,"naphtha_gas")
|
||||||
|
} else if(pixel.temp > 170 && pixel.role == "kerosene") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
changePixel(pixel,"lamp_oil_gas")
|
||||||
|
} else if(pixel.temp > 270 && pixel.role == "diesel") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
changePixel(pixel,"diesel_gas")
|
||||||
|
} else if(pixel.temp > 300 && pixel.role == "heavy_fuel_oil") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
changePixel(pixel,"heavy_fuel_oil_gas")
|
||||||
|
} else if(pixel.temp > 350 && pixel.role == "lubricant") { //https://www.crownoil.co.uk/guides/crude-oil-fractional-distillation/: Butane and propane and other petroleum gases are formed right at the top of the distillation tower, where it is coolest, a very mild 25°C: the temperature range that forms these gases is between 25°C and 50°C. These gases are the lightest products formed in crude oil distillation and are flammable gases.
|
||||||
|
if(pixel.role == "lubricant") {
|
||||||
|
changePixel(pixel,"lubricating_oil_gas")
|
||||||
|
} else {
|
||||||
|
changePixel(pixel,"bitumen")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//UREA ##
|
//UREA ##
|
||||||
|
|
||||||
|
|
@ -14930,6 +15619,9 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
else if (burnInto instanceof Array) {
|
else if (burnInto instanceof Array) {
|
||||||
burnInto = burnInto[Math.floor(Math.random()*burnInto.length)];
|
burnInto = burnInto[Math.floor(Math.random()*burnInto.length)];
|
||||||
}
|
}
|
||||||
|
if (burnInto == undefined) {
|
||||||
|
burnInto = 'fire';
|
||||||
|
}
|
||||||
changePixel(pixel,burnInto,(burnInto !== "smoke"));
|
changePixel(pixel,burnInto,(burnInto !== "smoke"));
|
||||||
if (info.fireColor != undefined && burnInto == "fire") {
|
if (info.fireColor != undefined && burnInto == "fire") {
|
||||||
pixel.color = pixelColorPick(pixel,info.fireColor);
|
pixel.color = pixelColorPick(pixel,info.fireColor);
|
||||||
|
|
@ -16173,8 +16865,8 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
emptyNeighborArray = []
|
emptyNeighborArray = []
|
||||||
for(i=0;i<4;i++) {
|
for(i=0;i<4;i++) {
|
||||||
if(isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
if(isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],false)) {
|
||||||
emptyNeighborArray.push(neighbors[i])
|
emptyNeighborArray.push(adjacentCoords[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(pixel.temp >= 100) {
|
if(pixel.temp >= 100) {
|
||||||
|
|
@ -17709,17 +18401,6 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
|
|
||||||
elements.smog.stateLow = ["water","dirty_water"];
|
elements.smog.stateLow = ["water","dirty_water"];
|
||||||
|
|
||||||
var wateroids = Object.keys(elements).filter(
|
|
||||||
function(name) {
|
|
||||||
return (
|
|
||||||
elements[name].stateHigh == "water" ||
|
|
||||||
elements[name].stateLow == "water" ||
|
|
||||||
elements[name].stateHigh == "heavy_water" ||
|
|
||||||
elements[name].stateLow == "heavy_water"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
/*Object.keys(elements).filter(
|
/*Object.keys(elements).filter(
|
||||||
function(elem) {
|
function(elem) {
|
||||||
return (
|
return (
|
||||||
|
|
@ -17731,10 +18412,6 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
}
|
}
|
||||||
);*/
|
);*/
|
||||||
|
|
||||||
for(var i = 0; i < wateroids.length; i++) {
|
|
||||||
if(elements[wateroids[i]]) { elements[wateroids[i]].noViviteSlag = true };
|
|
||||||
};
|
|
||||||
|
|
||||||
function doViviteSlag(pixel,target) {
|
function doViviteSlag(pixel,target) {
|
||||||
if(!target) { //No pixel
|
if(!target) { //No pixel
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -18457,13 +19134,13 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||||
for(i = 0; i < neighbors.length; i++) {
|
for(i = 0; i < neighbors.length; i++) {
|
||||||
if(isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
if(isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],false)) {
|
||||||
if(Math.random() < 0.004) {
|
if(Math.random() < 0.004) {
|
||||||
changePixel(pixel,"molten_polusium_oxide")
|
changePixel(pixel,"molten_polusium_oxide")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
if(!isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],true)) {
|
||||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == "salt_water") {
|
if(pixelMap[pixel.x+adjacentCoords[i][0]][pixel.y+adjacentCoords[i][1]].element == "salt_water") {
|
||||||
if(Math.random() < 0.024) {
|
if(Math.random() < 0.024) {
|
||||||
changePixel(pixel,"molten_polusium_oxide")
|
changePixel(pixel,"molten_polusium_oxide")
|
||||||
}
|
}
|
||||||
|
|
@ -18486,13 +19163,13 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||||
for(i = 0; i < neighbors.length; i++) {
|
for(i = 0; i < neighbors.length; i++) {
|
||||||
if(isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
if(isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],false)) {
|
||||||
if(Math.random() < 0.015) {
|
if(Math.random() < 0.015) {
|
||||||
changePixel(pixel,"vaporized_polusium_oxide")
|
changePixel(pixel,"vaporized_polusium_oxide")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
if(!isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],true)) {
|
||||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == "salt_water") {
|
if(pixelMap[pixel.x+adjacentCoords[i][0]][pixel.y+adjacentCoords[i][1]].element == "salt_water") {
|
||||||
if(Math.random() < 0.06) {
|
if(Math.random() < 0.06) {
|
||||||
changePixel(pixel,"vaporized_polusium_oxide")
|
changePixel(pixel,"vaporized_polusium_oxide")
|
||||||
}
|
}
|
||||||
|
|
@ -19161,7 +19838,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
//sedimentSandstoneTries++;
|
//sedimentSandstoneTries++;
|
||||||
for(i = 0; i < adjacentCoords.length; i++) {
|
for(i = 0; i < adjacentCoords.length; i++) {
|
||||||
//sedimentSandstoneTryIterations++;
|
//sedimentSandstoneTryIterations++;
|
||||||
if(isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],true)) {
|
if(isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],false)) {
|
||||||
validNeighborArray[i] = false;
|
validNeighborArray[i] = false;
|
||||||
//sedimentSandstoneNoDetects++;
|
//sedimentSandstoneNoDetects++;
|
||||||
} else if(!isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],true)) {
|
} else if(!isEmpty(pixel.x+adjacentCoords[i][0],pixel.y+adjacentCoords[i][1],true)) {
|
||||||
|
|
@ -19214,7 +19891,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//Previous function with adjacentPixels
|
//Previous function with adjacentCoords
|
||||||
|
|
||||||
function transformAdjacent(pixel,substitutionObject,reverse=false) {
|
function transformAdjacent(pixel,substitutionObject,reverse=false) {
|
||||||
for(k = 0; k < adjacentCoords.length; k++) {
|
for(k = 0; k < adjacentCoords.length; k++) {
|
||||||
|
|
@ -21531,13 +22208,13 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
};
|
};
|
||||||
|
|
||||||
newPowder("sulfur_trioxide","#ededed",1995,16.9).reactions = {
|
newPowder("sulfur_trioxide","#ededed",1995,16.9).reactions = {
|
||||||
water: { elem1: "acid", elem2: "acid" }, //no H2SO4, hydronium doesn't really seem to be its own substance
|
water: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
steam: { elem1: "acid", elem2: "acid" },
|
steam: { elem1: "sulfuric_acid", elem2: "acid" },
|
||||||
ice: { elem1: "acid", elem2: "acid" },
|
ice: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
snow: { elem1: "acid", elem2: "acid" },
|
snow: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
packed_snow: { elem1: "acid", elem2: "acid" },
|
packed_snow: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
slush: { elem1: "acid", elem2: "acid" },
|
slush: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
};
|
}; elements.sulfur_trioxide.temp = 10;
|
||||||
|
|
||||||
elements.molten_sulfur_trioxide = {
|
elements.molten_sulfur_trioxide = {
|
||||||
color: "#c0c0c0",
|
color: "#c0c0c0",
|
||||||
|
|
@ -21546,12 +22223,12 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
viscosity: 5, //idk idc
|
viscosity: 5, //idk idc
|
||||||
tempHigh: 45,
|
tempHigh: 45,
|
||||||
reactions: {
|
reactions: {
|
||||||
water: { elem1: "acid", elem2: "acid" }, //no H2SO4, hydronium doesn't really seem to be its own substance
|
water: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" }, //no H2SO4, hydronium doesn't really seem to be its own substance
|
||||||
steam: { elem1: "acid", elem2: "acid" },
|
steam: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
ice: { elem1: "acid", elem2: "acid" },
|
ice: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
snow: { elem1: "acid", elem2: "acid" },
|
snow: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
packed_snow: { elem1: "acid", elem2: "acid" },
|
packed_snow: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
slush: { elem1: "acid", elem2: "acid" },
|
slush: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -21559,12 +22236,12 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
color: "#c0c0c0",
|
color: "#c0c0c0",
|
||||||
density: 2.3, //idk idc
|
density: 2.3, //idk idc
|
||||||
reactions: {
|
reactions: {
|
||||||
water: { elem1: "acid", elem2: "acid" }, //no H2SO4, hydronium doesn't really seem to be its own substance
|
water: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" }, //no H2SO4, hydronium doesn't really seem to be its own substance
|
||||||
steam: { elem1: "acid", elem2: "acid" },
|
steam: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
ice: { elem1: "acid", elem2: "acid" },
|
ice: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
snow: { elem1: "acid", elem2: "acid" },
|
snow: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
packed_snow: { elem1: "acid", elem2: "acid" },
|
packed_snow: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
slush: { elem1: "acid", elem2: "acid" },
|
slush: { elem1: "sulfuric_acid", elem2: "sulfuric_acid" },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -41711,7 +42388,30 @@ maxPixels (default 1000): Maximum amount of pixels/changes (if xSpacing and ySpa
|
||||||
randomEventChoices.falling_pixel.splice(randomEventChoices.falling_pixel.indexOf(radElem),1)
|
randomEventChoices.falling_pixel.splice(randomEventChoices.falling_pixel.indexOf(radElem),1)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
})
|
|
||||||
|
function editDistance(s1, s2) {s1 = s1.toLowerCase();s2 = s2.toLowerCase();var costs = new Array();for (var i = 0; i <= s1.length; i++) {var lastValue = i;for (var j = 0; j <= s2.length; j++) {if (i == 0)costs[j] = j;else {if (j > 0) {var newValue = costs[j - 1];if (s1.charAt(i - 1) != s2.charAt(j - 1))newValue = Math.min(Math.min(newValue, lastValue),costs[j]) + 1;costs[j - 1] = lastValue;lastValue = newValue;}}}if (i > 0)costs[s2.length] = lastValue;}return costs[s2.length];}
|
||||||
|
|
||||||
|
function similarity(s1, s2) {var longer = s1;var shorter = s2;if (s1.length < s2.length) {longer = s2;shorter = s1;}var longerLength = longer.length;if (longerLength == 0) {return 1.0;}return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength);}
|
||||||
|
|
||||||
|
function mostSimilarElement(s) {
|
||||||
|
delete elements;
|
||||||
|
var max = 0;
|
||||||
|
var maxElement = "";
|
||||||
|
for (var e in elements) {
|
||||||
|
var sim = similarity(e,s);
|
||||||
|
if (sim > max) {
|
||||||
|
max = sim;
|
||||||
|
maxElement = e;
|
||||||
|
}
|
||||||
|
if (elements[e].alias && elements[e].alias === s) {
|
||||||
|
max = 0.99;
|
||||||
|
maxElement = e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (max < 0.5) { return null }
|
||||||
|
return maxElement;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//END ##
|
//END ##
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue