add shale
This commit is contained in:
parent
9bb732a0f6
commit
92cd5f50ab
|
|
@ -570,9 +570,9 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
|
|
||||||
var sands = ["sand"];
|
var sands = ["sand"];
|
||||||
var wetSands = ["wet_sand"];
|
var wetSands = ["wet_sand"];
|
||||||
var sandSolutions = [];
|
var sandSuspensions = [];
|
||||||
var sandSediments = ["radioactive_sand_sediment"];
|
var sandSediments = ["radioactive_sand_sediment","clay_sediment"];
|
||||||
var sandstones = ["radioactive_sandstone"];
|
var sandstones = ["radioactive_sandstone","shale"];
|
||||||
var vaporizedMagmas = [];
|
var vaporizedMagmas = [];
|
||||||
var magmaClouds = [];
|
var magmaClouds = [];
|
||||||
|
|
||||||
|
|
@ -636,7 +636,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: phaneriteDensity,
|
density: phaneriteDensity,
|
||||||
hardness: 0.75,
|
hardness: 0.75,
|
||||||
breakInto: phaneriteName + "_gravel",
|
breakInto: phaneriteName + "_gravel",
|
||||||
_data: [compositionFamilyName,"phanerite","rock"],
|
_data: [compositionFamilyName,"phanerite","igneous_rock"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[phaneriteName] = { "elem2": phaneriteName + "_gravel", "chance": 0.00035 }
|
elements.water.reactions[phaneriteName] = { "elem2": phaneriteName + "_gravel", "chance": 0.00035 }
|
||||||
|
|
@ -649,7 +649,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempHigh: phaneriteMeltingPoint,
|
tempHigh: phaneriteMeltingPoint,
|
||||||
stateHigh: magmaName,
|
stateHigh: magmaName,
|
||||||
density: phaneriteDensity * 0.55,
|
density: phaneriteDensity * 0.55,
|
||||||
_data: [compositionFamilyName,"phanerite","sand"],
|
_data: [compositionFamilyName,"phanerite","particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[phaneriteName + "_gravel"] = { "elem2": twoPartRepeatedArray(phaneriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
|
elements.water.reactions[phaneriteName + "_gravel"] = { "elem2": twoPartRepeatedArray(phaneriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
|
||||||
|
|
@ -664,7 +664,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: aphaniteDensity,
|
density: aphaniteDensity,
|
||||||
hardness: 0.75,
|
hardness: 0.75,
|
||||||
breakInto: aphaniteName + "_gravel",
|
breakInto: aphaniteName + "_gravel",
|
||||||
_data: [compositionFamilyName,"aphanite","rock"],
|
_data: [compositionFamilyName,"aphanite","igneous_rock"],
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
phaneriteName = "rock";
|
phaneriteName = "rock";
|
||||||
|
|
@ -682,7 +682,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempHigh: phaneriteMeltingPoint,
|
tempHigh: phaneriteMeltingPoint,
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: phaneriteDensity * 0.595,
|
density: phaneriteDensity * 0.595,
|
||||||
_data: [compositionFamilyName,"phanerite","sand"],
|
_data: [compositionFamilyName,"phanerite","particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
//console.log(phaneriteSandName, elements[phaneriteSandName].color);
|
//console.log(phaneriteSandName, elements[phaneriteSandName].color);
|
||||||
|
|
@ -700,7 +700,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempLow: -50,
|
tempLow: -50,
|
||||||
stateLow:"packed_" + phaneriteSandName,
|
stateLow:"packed_" + phaneriteSandName,
|
||||||
density: phaneriteDensity * 0.595 + 150,
|
density: phaneriteDensity * 0.595 + 150,
|
||||||
_data: [compositionFamilyName,"phanerite","wet_sand"],
|
_data: [compositionFamilyName,"phanerite","wet_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["packed_" + phaneriteSandName] = {
|
elements["packed_" + phaneriteSandName] = {
|
||||||
|
|
@ -712,7 +712,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: phaneriteDensity * 0.59,
|
density: phaneriteDensity * 0.59,
|
||||||
breakInto: phaneriteSandName,
|
breakInto: phaneriteSandName,
|
||||||
_data: [compositionFamilyName,"phanerite","packed_sand"],
|
_data: [compositionFamilyName,"phanerite","packed_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[phaneriteSandName] = {
|
elements.water.reactions[phaneriteSandName] = {
|
||||||
|
|
@ -740,7 +740,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempHigh: aphaniteMeltingPoint,
|
tempHigh: aphaniteMeltingPoint,
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: aphaniteDensity * 0.595,
|
density: aphaniteDensity * 0.595,
|
||||||
_data: [compositionFamilyName,"aphanite","sand"],
|
_data: [compositionFamilyName,"aphanite","particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["wet_" + aphaniteSandName] = {
|
elements["wet_" + aphaniteSandName] = {
|
||||||
|
|
@ -756,7 +756,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempLow: -50,
|
tempLow: -50,
|
||||||
stateLow:"packed_" + aphaniteSandName,
|
stateLow:"packed_" + aphaniteSandName,
|
||||||
density: aphaniteDensity * 0.595 + 150,
|
density: aphaniteDensity * 0.595 + 150,
|
||||||
_data: [compositionFamilyName,"aphanite","wet_sand"],
|
_data: [compositionFamilyName,"aphanite","wet_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["packed_" + aphaniteSandName] = {
|
elements["packed_" + aphaniteSandName] = {
|
||||||
|
|
@ -768,7 +768,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: aphaniteDensity * 0.59,
|
density: aphaniteDensity * 0.59,
|
||||||
breakInto: aphaniteSandName,
|
breakInto: aphaniteSandName,
|
||||||
_data: [compositionFamilyName,"aphanite","packed_sand"],
|
_data: [compositionFamilyName,"aphanite","packed_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[aphaniteSandName] = {
|
elements.water.reactions[aphaniteSandName] = {
|
||||||
|
|
@ -785,7 +785,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: vesiculiteDensity,
|
density: vesiculiteDensity,
|
||||||
hardness: 0.75,
|
hardness: 0.75,
|
||||||
breakInto: vesiculiteName + "_gravel",
|
breakInto: vesiculiteName + "_gravel",
|
||||||
_data: [compositionFamilyName,"vesiculite","rock"],
|
_data: [compositionFamilyName,"vesiculite","igneous_rock"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[vesiculiteName] = { "elem2": vesiculiteName + "_gravel", "chance": 0.00035 }
|
elements.water.reactions[vesiculiteName] = { "elem2": vesiculiteName + "_gravel", "chance": 0.00035 }
|
||||||
|
|
@ -811,7 +811,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempHigh: vesiculiteMeltingPoint,
|
tempHigh: vesiculiteMeltingPoint,
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: vesiculiteDensity * 1.9,
|
density: vesiculiteDensity * 1.9,
|
||||||
_data: [compositionFamilyName,"vesiculite","sand"],
|
_data: [compositionFamilyName,"vesiculite","particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["wet_" + vesiculiteSandName] = {
|
elements["wet_" + vesiculiteSandName] = {
|
||||||
|
|
@ -827,7 +827,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempLow: -50,
|
tempLow: -50,
|
||||||
stateLow:"packed_" + vesiculiteSandName,
|
stateLow:"packed_" + vesiculiteSandName,
|
||||||
density: vesiculiteDensity * 1.9 + 150,
|
density: vesiculiteDensity * 1.9 + 150,
|
||||||
_data: [compositionFamilyName,"vesiculite","wet_sand"],
|
_data: [compositionFamilyName,"vesiculite","wet_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["packed_" + vesiculiteSandName] = {
|
elements["packed_" + vesiculiteSandName] = {
|
||||||
|
|
@ -839,7 +839,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: vesiculiteDensity * 1.888,
|
density: vesiculiteDensity * 1.888,
|
||||||
breakInto: vesiculiteSandName,
|
breakInto: vesiculiteSandName,
|
||||||
_data: [compositionFamilyName,"vesiculite","packed_sand"],
|
_data: [compositionFamilyName,"vesiculite","packed_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[vesiculiteSandName] = {
|
elements.water.reactions[vesiculiteSandName] = {
|
||||||
|
|
@ -856,7 +856,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: vitriteDensity,
|
density: vitriteDensity,
|
||||||
hardness: 0.75,
|
hardness: 0.75,
|
||||||
breakInto: vitriteName + "_shard",
|
breakInto: vitriteName + "_shard",
|
||||||
_data: [compositionFamilyName,"vitrite","rock"],
|
_data: [compositionFamilyName,"vitrite","igneous_rock"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[vitriteName] = { "elem2": vitriteName + "_shard", "chance": 0.00035 }
|
elements.water.reactions[vitriteName] = { "elem2": vitriteName + "_shard", "chance": 0.00035 }
|
||||||
|
|
@ -882,7 +882,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempHigh: vitriteMeltingPoint,
|
tempHigh: vitriteMeltingPoint,
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: vitriteDensity * 0.595,
|
density: vitriteDensity * 0.595,
|
||||||
_data: [compositionFamilyName,"vitrite","sand"],
|
_data: [compositionFamilyName,"vitrite","particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["wet_" + vitriteSandName] = {
|
elements["wet_" + vitriteSandName] = {
|
||||||
|
|
@ -898,7 +898,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
tempLow: -50,
|
tempLow: -50,
|
||||||
stateLow:"packed_" + vitriteSandName,
|
stateLow:"packed_" + vitriteSandName,
|
||||||
density: vitriteDensity * 0.595 + 150,
|
density: vitriteDensity * 0.595 + 150,
|
||||||
_data: [compositionFamilyName,"vitrite","wet_sand"],
|
_data: [compositionFamilyName,"vitrite","wet_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements["packed_" + vitriteSandName] = {
|
elements["packed_" + vitriteSandName] = {
|
||||||
|
|
@ -910,7 +910,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
stateHigh: vitriteName,
|
stateHigh: vitriteName,
|
||||||
density: vitriteDensity * 0.59,
|
density: vitriteDensity * 0.59,
|
||||||
breakInto: vitriteSandName,
|
breakInto: vitriteSandName,
|
||||||
_data: [compositionFamilyName,"vitrite","packed_sand"],
|
_data: [compositionFamilyName,"vitrite","packed_particulate"],
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.water.reactions[vitriteSandName] = {
|
elements.water.reactions[vitriteSandName] = {
|
||||||
|
|
@ -1006,7 +1006,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function makeSedimentationElements(sandName) {
|
function makeSandstoningElements(sandName) {
|
||||||
|
|
||||||
var sandInfo = elements[sandName];
|
var sandInfo = elements[sandName];
|
||||||
if(!sandInfo) {
|
if(!sandInfo) {
|
||||||
|
|
@ -1094,7 +1094,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: 1000 + (sandInfo.density * 0.06),
|
density: 1000 + (sandInfo.density * 0.06),
|
||||||
conduct: 0.02,
|
conduct: 0.02,
|
||||||
stain: 0.01,
|
stain: 0.01,
|
||||||
_data: [sandInfo._data[0], sandInfo._data[1], "sandy_water"],
|
_data: [sandInfo._data[0], sandInfo._data[1], "suspension"],
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sediment element where lithification code resides
|
//Sediment element where lithification code resides
|
||||||
|
|
@ -1112,33 +1112,32 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
var newElement = newPixel.element;
|
var newElement = newPixel.element;
|
||||||
var thisSandName = pixel.element.slice(0,-9); //ABCD_sand_sediment - _sediment
|
var thisSandName = pixel.element.slice(0,-9); //ABCD_sand_sediment - _sediment
|
||||||
var thisWetSandName = "wet_" + thisSandName;
|
var thisWetSandName = "wet_" + thisSandName;
|
||||||
var thisSolutionName = pixel.element.slice(0,-9) + "y_water";
|
var thisSuspensionName = pixel.element.slice(0,-9) + "y_water";
|
||||||
|
|
||||||
var sandstoneName = thisSandName + "stone";
|
var sandstoneName = thisSandName + "stone";
|
||||||
|
|
||||||
if(Math.random() < 0.005 && (newElement == "wet_sand" || newElement.match(/^wet_[a-z_]+_sand$/i))) { //0.5% chance to swap with wet
|
if(Math.random() < 0.005 && ["sediment","wet_particulate"].includes(elements[newElement]._data?.[2])) { //0.5% chance to swap with wet
|
||||||
swapPixels(pixel,newPixel);
|
swapPixels(pixel,newPixel);
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
if(Math.random() < 0.001 && (newElement == "sand" || newElement.match(/^[a-z_]+_sand$/i))) { //0.1% chance to give water away
|
if(Math.random() < 0.001 && elements[newElement]._data?.[2] == "particulate") { //0.1% chance to give water away
|
||||||
|
var newWetParticulateName = elements.water.reactions[newElement].elem2;
|
||||||
var newWetSandName = "wet_" + newPixel.element; //wet_ + ABCD_sand
|
if(elements[thisWetSandName] && elements[newWetParticulateName]) {
|
||||||
if(elements[thisWetSandName] && elements[newWetSandName]) {
|
|
||||||
//console.log(thisSandName);
|
//console.log(thisSandName);
|
||||||
//console.log(newWetSandName);
|
//console.log(newWetSandName);
|
||||||
changePixel(pixel,thisSandName,false);
|
changePixel(pixel,thisSandName,false);
|
||||||
changePixel(newPixel,newWetSandName,false);
|
changePixel(newPixel,newWetParticulateName,false);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
if(Math.random() < 0.001 && newElement == "water") { //0.1% chance to give dissolve in water
|
if(Math.random() < 0.001 && newElement == "water") { //0.1% chance to give dissolve in water
|
||||||
if(elements[thisSolutionName]) {
|
if(elements[thisSuspensionName]) {
|
||||||
//console.log(thisSolutionName);
|
//console.log(thisSuspensionName);
|
||||||
changePixel(pixel,thisSolutionName,false);
|
changePixel(pixel,thisSuspensionName,false);
|
||||||
changePixel(newPixel,thisSolutionName,false);
|
changePixel(newPixel,thisSuspensionName,false);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
if(Math.random() < 0.001 && (newElement == "sandy_water" || newElement.match(/^[a-z_]+_sandy_water$/i))) { //0.1% chance to sediment a solution
|
if(Math.random() < 0.001 && elements[newElement]._data?.[2] == "suspension") { //0.1% chance to sediment a suspension
|
||||||
var newSedimentName = newPixel.element.replace("y_water","_sediment");
|
var newSedimentName = elements[newPixel.element].reactions[newPixel.element].elem2;
|
||||||
//console.log(newSedimentName);
|
//console.log(newSedimentName);
|
||||||
if(elements[newSedimentName]) {
|
if(elements[newSedimentName]) {
|
||||||
changePixel(newPixel,newSedimentName,false);
|
changePixel(newPixel,newSedimentName,false);
|
||||||
|
|
@ -1147,7 +1146,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
};
|
};
|
||||||
|
|
||||||
//console.log(sandstoneName);
|
//console.log(sandstoneName);
|
||||||
sedimentation(pixel,sandstoneLithificationElements,sandstoneName)
|
sedimentation(pixel,lithificationElements,sandstoneName)
|
||||||
},
|
},
|
||||||
tempHigh: sandInfo.tempHigh,
|
tempHigh: sandInfo.tempHigh,
|
||||||
stateHigh: sandInfo.stateHigh,
|
stateHigh: sandInfo.stateHigh,
|
||||||
|
|
@ -1155,7 +1154,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
state: "solid",
|
state: "solid",
|
||||||
density: elements[wetSandName].density + 150,
|
density: elements[wetSandName].density + 150,
|
||||||
breakInto: sandName,
|
breakInto: sandName,
|
||||||
_data: [sandInfo._data[0], sandInfo._data[1], "sand_sediment"],
|
_data: [sandInfo._data[0], sandInfo._data[1], "sediment"],
|
||||||
};
|
};
|
||||||
|
|
||||||
//Final rock
|
//Final rock
|
||||||
|
|
@ -1173,45 +1172,216 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
hardness: 0.5,
|
hardness: 0.5,
|
||||||
breakInto: sandName,
|
breakInto: sandName,
|
||||||
maxColorOffset: 30,
|
maxColorOffset: 30,
|
||||||
_data: [sandInfo._data[0], "rock", "sandstone"],
|
_data: [sandInfo._data[0], "rock", "sedimentary_rock"],
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function makeNonSandSedimentationElements(particulateName,suspensionName,rockName) {
|
||||||
|
|
||||||
|
var particulateInfo = elements[particulateName];
|
||||||
|
if(!particulateInfo) {
|
||||||
|
throw new Error("No such element '" + particulateName + "'");
|
||||||
|
};
|
||||||
|
|
||||||
|
var sedimentName = particulateName + "_sediment";
|
||||||
|
|
||||||
|
//Water reaction to pick up the fine material (this is very simplified)
|
||||||
|
|
||||||
|
elements.water.reactions[particulateName] = {
|
||||||
|
"elem1": suspensionName,
|
||||||
|
"elem2": [particulateName,particulateName,particulateName,suspensionName],
|
||||||
|
chance: 0.01
|
||||||
|
};
|
||||||
|
|
||||||
|
//Sediment suspension
|
||||||
|
|
||||||
|
//Color generation
|
||||||
|
|
||||||
|
var particulateColor = particulateInfo.color;
|
||||||
|
if(!(particulateColor instanceof Array)) {
|
||||||
|
particulateColor = [particulateColor];
|
||||||
|
};
|
||||||
|
|
||||||
|
var waterColor = "#2167ff";
|
||||||
|
|
||||||
|
//console.log(particulateColor);
|
||||||
|
|
||||||
|
suspensionColor = particulateColor.map(sandSubcolor => lerpColors(waterColor,sandSubcolor,"hex",weight1=0.5)); //lerp all with half water
|
||||||
|
|
||||||
|
var sedimentColor = particulateColor.map(sandSubcolor => convertHslObjects(sedimentHslOffset(normalizeColorToHslObject(sandSubcolor)),"hex"));
|
||||||
|
|
||||||
|
//console.log(particulateInfo);
|
||||||
|
|
||||||
|
elements[suspensionName] = {
|
||||||
|
color: suspensionColor,
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: ["steam","steam",particulateName],
|
||||||
|
category: "liquids",
|
||||||
|
reactions: {
|
||||||
|
"dirt": { // React with (water reacts with dirt to make mud)
|
||||||
|
"elem1": [null,null,particulateName], // First element transforms into; in this case, water deletes itself
|
||||||
|
"elem2": "mud", // Second element transforms into; in this case, dirt turns to mud
|
||||||
|
},
|
||||||
|
"water": { "elem1":"water", "elem2":suspensionName, "chance":0.025 }, //swap reaction
|
||||||
|
"particulateName": { "elem1": [null,null,particulateName], "elem2": particulateName, },
|
||||||
|
//"salt": { "elem1": "salt_water", "elem2": null },
|
||||||
|
//"sugar": { "elem1": "sugar_water", "elem2": null, },
|
||||||
|
"dust": { "elem1": "dirty_water", "elem2": null, },
|
||||||
|
"ash": { "elem1": "dirty_water", "elem2": null, },
|
||||||
|
"cyanide": { "elem1": "dirty_water", "elem2": null, },
|
||||||
|
//"carbon_dioxide": { "elem1": "seltzer", "elem2": null, "oneway":true },
|
||||||
|
"sulfur": { "elem1": "dirty_water", "elem2": null, },
|
||||||
|
"rat": { "elem1": "dirty_water", chance:0.005 },
|
||||||
|
"plague": { "elem1": "dirty_water", "elem2": null, },
|
||||||
|
"rust": { "elem1": "dirty_water", chance:0.005 },
|
||||||
|
"fallout": { "elem1": "dirty_water", chance:0.25 },
|
||||||
|
"radiation": { "elem1": "dirty_water", chance:0.25 },
|
||||||
|
"uranium": { "elem1": "dirty_water", chance:0.25 },
|
||||||
|
"rotten_meat": { "elem1": "dirty_water", chance:0.25 },
|
||||||
|
"quicklime": { "elem1": [null,null,particulateName], "elem2": "slaked_lime", },
|
||||||
|
"rock": { "elem2": particulateName, "chance": 0.00035 },
|
||||||
|
"ruins": { "elem2": "rock", "chance": 0.00035 },
|
||||||
|
"mudstone": { "elem2": "mud", "chance": 0.00035 },
|
||||||
|
//"methane": { "elem1":"primordial_soup", "elem2":"primordial_soup", tempMin:60, charged:true },
|
||||||
|
//"ammonia": { "elem1":"primordial_soup", "elem2":"primordial_soup", tempMin:60, charged:true },
|
||||||
|
"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 },
|
||||||
|
},
|
||||||
|
state: "liquid",
|
||||||
|
density: 1000 + (particulateInfo.density * 0.06),
|
||||||
|
conduct: 0.02,
|
||||||
|
stain: 0.01,
|
||||||
|
_data: [particulateInfo._data[0], particulateInfo._data[1], "suspension"],
|
||||||
|
}
|
||||||
|
|
||||||
|
elements[suspensionName].reactions[suspensionName] = { "elem1":"water", "elem2":sedimentName, "chance": 0.001 },
|
||||||
|
elements[suspensionName].reactions[particulateName] = { "elem1": "water", "elem2":sedimentName, "chance": 0.0005 },
|
||||||
|
|
||||||
|
//Sediment element where lithification code resides
|
||||||
|
|
||||||
|
elements[sedimentName] = {
|
||||||
|
hidden: true,
|
||||||
|
color: sedimentColor,
|
||||||
|
hardness: 0.2,
|
||||||
|
tick: function(pixel) {
|
||||||
|
if(!tryMove(pixel,pixel.x,pixel.y+1)) {
|
||||||
|
var newPixel = pixelMap[pixel.x]?.[pixel.y+1];
|
||||||
|
if(!newPixel) {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
var newElement = newPixel.element;
|
||||||
|
|
||||||
|
var particulateName = pixel.element.slice(0,-9); //ABCD_sand_sediment - _sediment
|
||||||
|
|
||||||
|
var thisSuspensionName = elements[pixel.element]._sedimentationPassToElement.correspondingSuspension
|
||||||
|
var rockName = elements[pixel.element]._sedimentationPassToElement.finalRock;
|
||||||
|
|
||||||
|
if(Math.random() < 0.005 && ["sediment","wet_particulate"].includes(elements[newElement]._data?.[2])) { //0.5% chance to swap with wet
|
||||||
|
swapPixels(pixel,newPixel);
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
if(Math.random() < 0.001 && elements[newElement]._data?.[2] == "particulate") { //0.1% chance to give water away
|
||||||
|
|
||||||
|
var newWetParticulateName = elements.water.reactions[newElement].elem2;
|
||||||
|
if(elements[particulateName] && elements[newWetParticulateName]) {
|
||||||
|
changePixel(pixel,particulateName,false);
|
||||||
|
changePixel(newPixel,newWetParticulateName,false);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if(Math.random() < 0.001 && newElement == "water") { //0.1% chance to dissolve in water
|
||||||
|
if(elements[thisSuspensionName]) {
|
||||||
|
//console.log(thisSuspensionName);
|
||||||
|
changePixel(pixel,thisSuspensionName,false);
|
||||||
|
changePixel(newPixel,thisSuspensionName,false);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if(Math.random() < 0.001 && elements[newElement]._data?.[2] == "suspension") { //0.1% chance to sediment a suspension
|
||||||
|
//new sediment should be the elem2 of a suspension's reaction with itself
|
||||||
|
var newSedimentName = elements[newPixel.element].reactions[newPixel.element].elem2;
|
||||||
|
//console.log(newSedimentName);
|
||||||
|
if(elements[newSedimentName]) {
|
||||||
|
changePixel(newPixel,newSedimentName,false);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//console.log(rockName);
|
||||||
|
sedimentation(pixel,lithificationElements,rockName)
|
||||||
|
},
|
||||||
|
tempHigh: particulateInfo.tempHigh,
|
||||||
|
stateHigh: particulateInfo.stateHigh,
|
||||||
|
_sedimentationPassToElement: {
|
||||||
|
finalRock: rockName,
|
||||||
|
correspondingSuspension: suspensionName,
|
||||||
|
},
|
||||||
|
category: "land",
|
||||||
|
state: "solid",
|
||||||
|
density: elements[particulateName].density + 150,
|
||||||
|
breakInto: particulateName,
|
||||||
|
_data: [particulateInfo._data[0], particulateInfo._data[1], "sediment"],
|
||||||
|
};
|
||||||
|
|
||||||
|
//Final rock
|
||||||
|
|
||||||
|
//console.log(particulateName);
|
||||||
|
|
||||||
|
elements[rockName] = {
|
||||||
|
color: sandstonizeToHex(particulateName), //["#b27853", "#d1a784", "#d1a784", "#d4996e"]
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
tempHigh: particulateInfo.tempHigh,
|
||||||
|
stateHigh: particulateInfo.stateHigh,
|
||||||
|
category: "land",
|
||||||
|
state: "solid",
|
||||||
|
density: particulateInfo.density * 1.5, //wide range
|
||||||
|
hardness: 0.7,
|
||||||
|
breakInto: particulateName,
|
||||||
|
maxColorOffset: 30,
|
||||||
|
_data: [particulateInfo._data[0], "rock", "sedimentary_rock"],
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
runAfterLoad(function() {
|
runAfterLoad(function() {
|
||||||
for(i = 0; i < sands.length; i++) {
|
for(i = 0; i < sands.length; i++) {
|
||||||
sandSolutions.push(sands[i] + "y_water");
|
sandSuspensions.push(sands[i] + "y_water");
|
||||||
sandSediments.push(sands[i] + "_sediment");
|
sandSediments.push(sands[i] + "_sediment");
|
||||||
sandstones.push(sands[i] + "stone");
|
sandstones.push(sands[i] + "stone");
|
||||||
|
|
||||||
makeSedimentationElements(sands[i]);
|
makeSandstoningElements(sands[i]);
|
||||||
};
|
};
|
||||||
|
|
||||||
sandstoneLithificationElements = sandSediments.concat(sandstones);
|
elements.clay._data = ["clay","clay","particulate"],
|
||||||
|
makeNonSandSedimentationElements("clay","clay_water","shale");
|
||||||
|
elements.shale.color = ["#787b80","#535557","#695e58", "#696969", "#6b5d5b"];
|
||||||
|
elements.shale.maxColorOffset = 15;
|
||||||
|
elements.shale.tempHigh = 200; //shale does get baked (https://pubs.usgs.gov/pp/0108a/report.pdf), but it feels wrong for it to happen so soon
|
||||||
|
|
||||||
for(fei = 0; fei < sandSolutions.length; fei++) {
|
for(fei = 0; fei < sandSuspensions.length; fei++) {
|
||||||
var solutionToAddReactionTo = sandSolutions[fei];
|
var suspensionToAddReactionTo = sandSuspensions[fei];
|
||||||
//console.log(solutionToAddReactionTo);
|
//console.log(suspensionToAddReactionTo);
|
||||||
elements[solutionToAddReactionTo].reactions ??= {};
|
elements[suspensionToAddReactionTo].reactions ??= {};
|
||||||
for(sei = 0; sei < sandSolutions.length; sei++) {
|
for(sei = 0; sei < sandSuspensions.length; sei++) {
|
||||||
var solutionToReactWith = sandSolutions[sei];
|
var suspensionToReactWith = sandSuspensions[sei];
|
||||||
var firstSedimentName = solutionToAddReactionTo.replace("y_water","_sediment");
|
var firstSedimentName = suspensionToAddReactionTo.replace("y_water","_sediment");
|
||||||
var secondSedimentName = solutionToReactWith.replace("y_water","_sediment");
|
var secondSedimentName = suspensionToReactWith.replace("y_water","_sediment");
|
||||||
elements[solutionToAddReactionTo].reactions[solutionToReactWith] = {
|
elements[suspensionToAddReactionTo].reactions[suspensionToReactWith] = {
|
||||||
elem1: "water", "elem2": [firstSedimentName,secondSedimentName], "chance": 0.001,
|
elem1: "water", "elem2": [firstSedimentName,secondSedimentName], "chance": 0.001,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
for(sej = 0; sej < wetSands.length; sej++) {
|
for(sej = 0; sej < wetSands.length; sej++) {
|
||||||
var wetSandToReactWith = wetSands[sej];
|
var wetSandToReactWith = wetSands[sej];
|
||||||
var firstSedimentName = solutionToAddReactionTo.replace("y_water","_sediment");
|
var firstSedimentName = suspensionToAddReactionTo.replace("y_water","_sediment");
|
||||||
var secondSedimentName = wetSandToReactWith.replace("wet_","") + "_sediment";
|
var secondSedimentName = wetSandToReactWith.replace("wet_","") + "_sediment";
|
||||||
elements[solutionToAddReactionTo].reactions[wetSandToReactWith] = {
|
elements[suspensionToAddReactionTo].reactions[wetSandToReactWith] = {
|
||||||
elem1: "water", "elem2": [firstSedimentName,secondSedimentName], "chance": 0.0005,
|
elem1: "water", "elem2": [firstSedimentName,secondSedimentName], "chance": 0.0005,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sandstoneLithificationElements = sandSediments.concat(sandstones);
|
lithificationElements = sandSediments.concat(sandstones);
|
||||||
|
|
||||||
for(fei = 0; fei < vaporizedMagmas.length; fei++) {
|
for(fei = 0; fei < vaporizedMagmas.length; fei++) {
|
||||||
var vaporToAddReactionTo = vaporizedMagmas[fei];
|
var vaporToAddReactionTo = vaporizedMagmas[fei];
|
||||||
|
|
@ -1701,7 +1871,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
elements.rock.density = 3300;
|
elements.rock.density = 3300;
|
||||||
elements.rock.breakInto = ["gravel"];
|
elements.rock.breakInto = ["gravel"];
|
||||||
delete elements.wet_sand.reactions.gravel;
|
delete elements.wet_sand.reactions.gravel;
|
||||||
elements.rock._data = ["mafic","phanerite","rock"],
|
elements.rock._data = ["mafic","phanerite","igneous_rock"],
|
||||||
|
|
||||||
elements.magma.name = "mafic magma";
|
elements.magma.name = "mafic magma";
|
||||||
elements.magma.density = 2650;
|
elements.magma.density = 2650;
|
||||||
|
|
@ -1718,10 +1888,10 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
elements.basalt.tempHigh = 1122;
|
elements.basalt.tempHigh = 1122;
|
||||||
elements.basalt.density = 2949;
|
elements.basalt.density = 2949;
|
||||||
elements.basalt.breakInto = "basalt_gravel",
|
elements.basalt.breakInto = "basalt_gravel",
|
||||||
elements.rock._data = ["mafic","aphanite","rock"],
|
elements.rock._data = ["mafic","aphanite","igneous_rock"],
|
||||||
elements.sand._data = ["silica","silica","sand"],
|
elements.sand._data = ["silica","silica","particulate"],
|
||||||
elements.wet_sand._data = ["silica","silica","wet_sand"],
|
elements.wet_sand._data = ["silica","silica","wet_particulate"],
|
||||||
elements.packed_sand._data = ["silica","silica","packed_sand"],
|
elements.packed_sand._data = ["silica","silica","packed_particulate"],
|
||||||
|
|
||||||
newIgneousCompositionFamily(
|
newIgneousCompositionFamily(
|
||||||
"mafic",
|
"mafic",
|
||||||
|
|
@ -1793,7 +1963,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
|
|
||||||
elements.ultramafic_scoria_gravel.density =.3132;
|
elements.ultramafic_scoria_gravel.density =.3132;
|
||||||
|
|
||||||
makeSedimentationElements("komatiite_sand");
|
makeSandstoningElements("komatiite_sand");
|
||||||
|
|
||||||
|
|
||||||
/* //Rocks
|
/* //Rocks
|
||||||
|
|
@ -1880,7 +2050,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
color: ["#31e31e", "#88fa5a", "#28d419", "#54e823", "#64f235"],
|
color: ["#31e31e", "#88fa5a", "#28d419", "#54e823", "#64f235"],
|
||||||
tempHigh: 1287,
|
tempHigh: 1287,
|
||||||
//1: I can't be arsed to find out what happens to emerald in extreme heat. Apparently, neither can anyone else, and Google is useless for this.
|
//1: I can't be arsed to find out what happens to emerald in extreme heat. Apparently, neither can anyone else, and Google is useless for this.
|
||||||
//2: So I'm just assuming that the chromium impurities are polite and remain in solution with the molten beryl.
|
//2: So I'm just assuming that the chromium impurities are polite and remain in suspension with the molten beryl.
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
category: "powders",
|
category: "powders",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -2429,7 +2599,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: 1602,
|
density: 1602,
|
||||||
breakInto: "radioactive_sand",
|
breakInto: "radioactive_sand",
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
sedimentation(pixel,sandstoneLithificationElements,"radioactive_sandstone")
|
sedimentation(pixel,lithificationElements,"radioactive_sandstone")
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue