sedimentation to limestone
This commit is contained in:
parent
fa575894fc
commit
777b748f0f
|
|
@ -171,7 +171,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
|
|
||||||
//Generalized sedimentation function
|
//Generalized sedimentation function
|
||||||
|
|
||||||
function sedimentation(pixel,sedimentNeighborTable,finalRock,chance=0.0003) {
|
function sedimentation(pixel,finalRock,chance=0.0003) {
|
||||||
if(finalRock == undefined) { return false };
|
if(finalRock == undefined) { return false };
|
||||||
if(Math.random() < chance) {
|
if(Math.random() < chance) {
|
||||||
var validNeighborArray = Array.apply(null, Array(adjacentCoords.length)).map(function() {return false});
|
var validNeighborArray = Array.apply(null, Array(adjacentCoords.length)).map(function() {return false});
|
||||||
|
|
@ -189,7 +189,8 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
validNeighborArray[i] = false;
|
validNeighborArray[i] = false;
|
||||||
//sedimentSandstoneNoDetects++;
|
//sedimentSandstoneNoDetects++;
|
||||||
};*/
|
};*/
|
||||||
validNeighborArray[i] = sedimentNeighborTable.includes(pixelMap[pixel.x+adjacentCoords[i][0]][pixel.y+adjacentCoords[i][1]].element);
|
//validNeighborArray[i] = sedimentNeighborTable.includes(pixelMap[pixel.x+adjacentCoords[i][0]][pixel.y+adjacentCoords[i][1]].element);
|
||||||
|
validNeighborArray[i] = (pixelMap[pixel.x+adjacentCoords[i][0]][pixel.y+adjacentCoords[i][1]].state ?? "solid") == "solid";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
if(validNeighborArray.includes(true)) {
|
if(validNeighborArray.includes(true)) {
|
||||||
|
|
@ -367,6 +368,32 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
var array2 = Array(amount2).fill(value2);
|
var array2 = Array(amount2).fill(value2);
|
||||||
return array1.concat(array2)
|
return array1.concat(array2)
|
||||||
};
|
};
|
||||||
|
//Powder maker
|
||||||
|
function newPowder(name,color,density=null,tempHigh=null,stateHigh=null,breakInto=null) { //boilerplate my dick
|
||||||
|
if(tempHigh == null) {
|
||||||
|
stateHigh = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
elements[name] = {
|
||||||
|
color: color,
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "solids",
|
||||||
|
state: "solid",
|
||||||
|
density: density ?? 1000,
|
||||||
|
};
|
||||||
|
|
||||||
|
if(tempHigh !== null) {
|
||||||
|
elements[name].tempHigh = tempHigh;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(tempHigh !== null && stateHigh !== null) {
|
||||||
|
elements[name].stateHigh = stateHigh;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(breakInto !== null) {
|
||||||
|
elements[name].breakInto = breakInto;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
//Color gen
|
//Color gen
|
||||||
|
|
||||||
|
|
@ -1146,7 +1173,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
};
|
};
|
||||||
|
|
||||||
//console.log(sandstoneName);
|
//console.log(sandstoneName);
|
||||||
sedimentation(pixel,lithificationElements,sandstoneName)
|
sedimentation(pixel,sandstoneName)
|
||||||
},
|
},
|
||||||
tempHigh: sandInfo.tempHigh,
|
tempHigh: sandInfo.tempHigh,
|
||||||
stateHigh: sandInfo.stateHigh,
|
stateHigh: sandInfo.stateHigh,
|
||||||
|
|
@ -1309,7 +1336,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
};
|
};
|
||||||
|
|
||||||
//console.log(rockName);
|
//console.log(rockName);
|
||||||
sedimentation(pixel,lithificationElements,rockName)
|
sedimentation(pixel,rockName)
|
||||||
},
|
},
|
||||||
tempHigh: particulateInfo.tempHigh,
|
tempHigh: particulateInfo.tempHigh,
|
||||||
stateHigh: particulateInfo.stateHigh,
|
stateHigh: particulateInfo.stateHigh,
|
||||||
|
|
@ -1328,6 +1355,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
|
|
||||||
//console.log(particulateName);
|
//console.log(particulateName);
|
||||||
|
|
||||||
|
if(rockName !== "limestone") {
|
||||||
elements[rockName] = {
|
elements[rockName] = {
|
||||||
color: sandstonizeToHex(particulateName), //["#b27853", "#d1a784", "#d1a784", "#d4996e"]
|
color: sandstonizeToHex(particulateName), //["#b27853", "#d1a784", "#d1a784", "#d4996e"]
|
||||||
behavior: behaviors.WALL,
|
behavior: behaviors.WALL,
|
||||||
|
|
@ -1342,6 +1370,48 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
_data: [particulateInfo._data[0], "rock", "sedimentary_rock"],
|
_data: [particulateInfo._data[0], "rock", "sedimentary_rock"],
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
newPowder("calcite","#f5ecd0",2711,825,["carbon_dioxide","quicklime"],"calcium_carbonate_dust");
|
||||||
|
newPowder("aragonite","#e3c58d",2830,825,["carbon_dioxide","quicklime"],"calcium_carbonate_dust");
|
||||||
|
newPowder("vaterite","#e8ebd8",2540,825,["carbon_dioxide","quicklime"],"calcium_carbonate_dust");
|
||||||
|
newPowder("calcium_carbonate_dust","#f7f7f5",2930,825,["carbon_dioxide","quicklime"]);
|
||||||
|
|
||||||
|
elements.calcite._data = ["calcium","calcium","mineral"];
|
||||||
|
elements.aragonite._data = ["calcium","calcium","mineral"];
|
||||||
|
elements.vaterite._data = ["calcium","calcium","mineral"];
|
||||||
|
elements.calcium_carbonate_dust._data = ["calcium","calcium","particulate"];
|
||||||
|
elements.limestone._data = ["calcium", "rock", "sedimentary_rock"];
|
||||||
|
|
||||||
|
elements.aragonite.tick = function(pixel) {
|
||||||
|
if(Math.random() < (0.001 + Math.max(0,(pixel.temp - 300) / 100))) {
|
||||||
|
changePixel(pixel,"calcite",false);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.vaterite.tick = function(pixel) {
|
||||||
|
if(Math.random() < (0.01 + Math.max(0,(pixel.temp - 30) / 10))) {
|
||||||
|
changePixel(pixel,"calcite",false);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
makeNonSandSedimentationElements("calcium_carbonate_dust","calcium_carbonate_solution","limestone")
|
||||||
|
|
||||||
|
var calcitoids = ["calcite","aragonite","vaterite"];
|
||||||
|
for(i = 0; i < calcitoids.length; i++) {
|
||||||
|
var mineral = calcitoids[i];
|
||||||
|
elements.water.reactions[mineral] = {
|
||||||
|
"elem1":"calcium_carbonate_solution",
|
||||||
|
"elem2":[mineral,mineral,mineral,"calcium_carbonate_solution"],
|
||||||
|
"chance":0.004
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.seltzer.reactions[mineral] = {
|
||||||
|
"elem1":"calcium_carbonate_solution",
|
||||||
|
"elem2":[mineral,mineral,mineral,"calcium_carbonate_solution"],
|
||||||
|
"chance":0.02
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
runAfterLoad(function() {
|
runAfterLoad(function() {
|
||||||
for(i = 0; i < sands.length; i++) {
|
for(i = 0; i < sands.length; i++) {
|
||||||
|
|
@ -1381,7 +1451,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
lithificationElements = 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];
|
||||||
|
|
@ -1966,6 +2036,23 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
makeSandstoningElements("komatiite_sand");
|
makeSandstoningElements("komatiite_sand");
|
||||||
|
|
||||||
|
|
||||||
|
elements.limestone_gravel = {
|
||||||
|
color: ["#c7baa1", "#e8d8b7", "#fcf3d7", "#fffce6"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
tempHigh: 825,
|
||||||
|
stateHigh: "quicklime",
|
||||||
|
category: "land",
|
||||||
|
state: "solid",
|
||||||
|
density: 1380,
|
||||||
|
hardness: 0.16,
|
||||||
|
breakInto: ["quicklime","calcium","dust"],
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.limestone.breakInto = "limestone_gravel";
|
||||||
|
|
||||||
|
elements.worm.reactions.limestone_gravel = { "elem2":"calcium", "chance":0.1 },
|
||||||
|
elements.acid.reactions.limestone_gravel = { "elem1":"neutral_acid", "elem2":null },
|
||||||
|
|
||||||
/* //Rocks
|
/* //Rocks
|
||||||
|
|
||||||
//Igneous
|
//Igneous
|
||||||
|
|
@ -2599,7 +2686,7 @@ if(!enabledMods.includes(libraryMod)) {
|
||||||
density: 1602,
|
density: 1602,
|
||||||
breakInto: "radioactive_sand",
|
breakInto: "radioactive_sand",
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
sedimentation(pixel,lithificationElements,"radioactive_sandstone")
|
sedimentation(pixel,"radioactive_sandstone")
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue