zircon preliminary omega-0.1-pre
This commit is contained in:
parent
bf3c504268
commit
823669ba06
|
|
@ -1348,15 +1348,15 @@ try {
|
||||||
return (isEmpty(pixel.x+1,pixel.y) || isEmpty(pixel.x-1,pixel.y) || isEmpty(pixel.x,pixel.y+1) || isEmpty(pixel.x,pixel.y-1));
|
return (isEmpty(pixel.x+1,pixel.y) || isEmpty(pixel.x-1,pixel.y) || isEmpty(pixel.x,pixel.y+1) || isEmpty(pixel.x,pixel.y-1));
|
||||||
};
|
};
|
||||||
|
|
||||||
function tryTarnish(pixel,element,chance) {
|
function tryTarnish(pixel,element,chance,changeTemp=true) {
|
||||||
if(exposedToAir(pixel)) {
|
if(exposedToAir(pixel)) {
|
||||||
if(Array.isArray(element)) {
|
if(Array.isArray(element)) {
|
||||||
if(Math.random() < chance) {
|
if(Math.random() < chance) {
|
||||||
changePixel(pixel,randomChoice(element));
|
changePixel(pixel,randomChoice(element),changeTemp);
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
if(Math.random() < chance) {
|
if(Math.random() < chance) {
|
||||||
changePixel(pixel,element);
|
changePixel(pixel,element,changeTemp);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -2803,7 +2803,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
} else {
|
} else {
|
||||||
rgbs.push(c);
|
rgbs.push(c);
|
||||||
rgbos.push(convertColorFormats(c,"json"));
|
rgbos.push(convertColorFormats(c,"json"));
|
||||||
console.log(key,rgbs,rgbos)
|
//console.log(key,rgbs,rgbos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elements[key].color = rgbs;
|
elements[key].color = rgbs;
|
||||||
|
|
@ -5536,7 +5536,7 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
});
|
});
|
||||||
//CONFIGURABLE MAXIMUM COLOR OFFSET (maxColorOffset) ##
|
//CONFIGURABLE MAXIMUM COLOR OFFSET (maxColorOffset) ##
|
||||||
defaultColorOffset = 15;
|
defaultColorOffset = 15;
|
||||||
pixelColorPick = function(pixel,customColor=null,maxOffset=null,dontForceColorsToNulls=false) {
|
pixelColorPick = function(pixel,customColor=null,maxOffset=null) {
|
||||||
var element = pixel.element;
|
var element = pixel.element;
|
||||||
var elementInfo = elements[element];
|
var elementInfo = elements[element];
|
||||||
//if (elementInfo.behavior instanceof Array) {
|
//if (elementInfo.behavior instanceof Array) {
|
||||||
|
|
@ -5544,9 +5544,10 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
customColor = elementInfo.colorOn;
|
customColor = elementInfo.colorOn;
|
||||||
}
|
}
|
||||||
if (customColor !== null) {
|
if (customColor !== null) {
|
||||||
if (Array.isArray(customColor)) {
|
while (Array.isArray(customColor)) {
|
||||||
customColor = customColor[Math.floor(Math.random() * customColor.length)];
|
customColor = customColor[Math.floor(Math.random() * customColor.length)];
|
||||||
} else if (customColor.startsWith?.("#")) {
|
};
|
||||||
|
if (customColor.startsWith?.("#")) {
|
||||||
customColor = hexToRGB(customColor);
|
customColor = hexToRGB(customColor);
|
||||||
}
|
}
|
||||||
var rgb = customColor;
|
var rgb = customColor;
|
||||||
|
|
@ -5559,46 +5560,22 @@ color1 and color2 spread through striped paint like dye does with itself. <u>col
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Randomly darken or lighten the RGB color
|
// Randomly darken or lighten the RGB color
|
||||||
//try maxOffset parameter, then info maxColorOffset, then default 15
|
//try vanilla grain paremeter, then info.maxColorOffset, then default 15
|
||||||
var offsetAmount;
|
let grain = maxOffset ?? settings.defaultColorOffset ?? 15;
|
||||||
if(maxOffset !== null) {
|
if (elementInfo.grain !== undefined) {
|
||||||
offsetAmount = maxOffset;
|
grain = grain * elementInfo.grain
|
||||||
} else {
|
} else if(elementInfo.maxOffset) {
|
||||||
offsetAmount = elementInfo?.maxColorOffset ?? defaultColorOffset;
|
grain = elementInfo.maxOffset
|
||||||
};
|
}
|
||||||
if(typeof(rgb) !== "object") { rgb = convertColorFormats(rgb,"json") }; //somehow rgb can be a hex triplet even though it's pulled from the f*cking JSON color object and there's no logical way that that should be able to happen
|
let coloroffset = Math.floor(Math.random() * (Math.random() > 0.5 ? -1 : 1) * Math.random() * grain);
|
||||||
var maxColorOffset = Math.floor(Math.random() * (Math.random() > 0.5 ? -1 : 1) * Math.random() * offsetAmount);
|
let r = rgb.r + coloroffset;
|
||||||
var maxRepickTries = 10;
|
let g = rgb.g + coloroffset;
|
||||||
var repickTries = 0;
|
let b = rgb.b + coloroffset;
|
||||||
var rgbWasNull = (rgb === null);
|
|
||||||
if(rgb == null || (typeof(rgb?.r) !== "number") || (typeof(rgb?.g) !== "number") || (typeof(rgb?.b) !== "number")) {
|
|
||||||
//console.log(pixel.element,pixel.color,"\n",rgb,customColor,Array.isArray(elementInfo.colorObject) ? elementInfo.colorObject.indexOf(rgb) : elementInfo.colorObject);
|
|
||||||
//this SHOULDN'T be necessary but SOMEHOW IT IS
|
|
||||||
while(rgb == null && repickTries < maxRepickTries) {
|
|
||||||
var color_also_fxck_you = elementInfo.colorObject;
|
|
||||||
while(Array.isArray(color_also_fxck_you)) { color_also_fxck_you = randomChoice(color_also_fxck_you) };
|
|
||||||
rgb = color_also_fxck_you
|
|
||||||
};
|
|
||||||
//console.log(pixel.element,pixel.color,rgb,customColor);
|
|
||||||
};
|
|
||||||
var r = rgb.r + maxColorOffset;
|
|
||||||
var g = rgb.g + maxColorOffset;
|
|
||||||
var b = rgb.b + maxColorOffset;
|
|
||||||
// Make sure the color is within the RGB range
|
// Make sure the color is within the RGB range
|
||||||
r = Math.max(0, Math.min(255, r));
|
r = Math.max(0, Math.min(255, r));
|
||||||
g = Math.max(0, Math.min(255, g));
|
g = Math.max(0, Math.min(255, g));
|
||||||
b = Math.max(0, Math.min(255, b));
|
b = Math.max(0, Math.min(255, b));
|
||||||
var color = "rgb("+r+","+g+","+b+")";
|
let color = "rgb("+r+","+g+","+b+")";
|
||||||
/*}
|
|
||||||
else {
|
|
||||||
var color = elementInfo.color;
|
|
||||||
if (Array.isArray(color)) {
|
|
||||||
color = color[Math.floor(Math.random() * color.length)];
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
if((!dontForceColorsToNulls) && rgbWasNull && rgb !== null) {
|
|
||||||
pixel.color = convertColorFormats(rgb,"rgb")
|
|
||||||
};
|
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
//FIND MODE AND PIXEL PROPERTIES LINKED TO SPECIAL CODE (acid_and_shapes.js functionality removed) ##
|
//FIND MODE AND PIXEL PROPERTIES LINKED TO SPECIAL CODE (acid_and_shapes.js functionality removed) ##
|
||||||
|
|
@ -18359,9 +18336,18 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
conduct: 0.19,
|
conduct: 0.19,
|
||||||
hardness: 0.5,
|
hardness: 0.5,
|
||||||
},
|
},
|
||||||
elements.molten_zirconium = {
|
newPowder("zirconia",["#F0ECDB","#FBF8EC"],5680,2715)
|
||||||
|
elements.solid_zirconia = newPowder("zirconia",["#F0ECDB","#FBF8EC"],5680,2715,null,"zirconia",0.85,true)
|
||||||
|
elements.molten_zirconia = {
|
||||||
|
tempHigh: 4300,
|
||||||
|
viscosity: 13,
|
||||||
|
density: 4700, //https://pmc.ncbi.nlm.nih.gov/articles/PMC6658727/#:~:text=The%20density%20of%20liquid%20ZrO2%20was%20found%20to%20be,mPa%20at%20its%20melting%20point. it's surprising that someone could be arsed to measure it, even more so with the whole extremely high temperature thing
|
||||||
|
stateLow: "solid_zirconia"
|
||||||
|
};
|
||||||
|
elements.molten_zircon = {
|
||||||
density: 5803,
|
density: 5803,
|
||||||
tempHigh: 4409,
|
tempHigh: 2800,
|
||||||
|
stateHigh: ["molten_zirconia","silica_gas"],
|
||||||
behavior: behaviors.MOLTEN,
|
behavior: behaviors.MOLTEN,
|
||||||
onTryMoveInto: function(pixel,otherPixel) {
|
onTryMoveInto: function(pixel,otherPixel) {
|
||||||
neutronAbsorbency(pixel,otherPixel);
|
neutronAbsorbency(pixel,otherPixel);
|
||||||
|
|
@ -18369,6 +18355,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
neutronMovement(pixel,zirconoids);
|
neutronMovement(pixel,zirconoids);
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
elements.zirconium_gas = {
|
elements.zirconium_gas = {
|
||||||
density: 3, //Unknown/Unmeasured value
|
density: 3, //Unknown/Unmeasured value
|
||||||
|
|
@ -18383,19 +18370,6 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
elements.neutron.state = "gas";
|
elements.neutron.state = "gas";
|
||||||
elements.neutron.ignoreAir = "true";
|
elements.neutron.ignoreAir = "true";
|
||||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||||
function tryTarnish(pixel,element,chance) {
|
|
||||||
if(exposedToAir(pixel)) {
|
|
||||||
if(Array.isArray(element)) {
|
|
||||||
if(Math.random() < chance) {
|
|
||||||
changePixel(pixel,randomChoice(element))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(Math.random() < chance) {
|
|
||||||
changePixel(pixel,element)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Non-element: Liquid ammonia
|
//Non-element: Liquid ammonia
|
||||||
elements.liquid_ammonia = {
|
elements.liquid_ammonia = {
|
||||||
color: "#bab6a9",
|
color: "#bab6a9",
|
||||||
|
|
@ -21745,13 +21719,13 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
return array1.concat(array2)
|
return array1.concat(array2)
|
||||||
};
|
};
|
||||||
//Powder maker
|
//Powder maker
|
||||||
function newPowder(name,color,density=null,tempHigh=null,stateHigh=null,breakInto=null) { //boilerplate my dick
|
function newPowder(name,color,density=null,tempHigh=null,stateHigh=null,breakInto=null,hardness=null,itsActuallySolidNotPowderLol=false) { //boilerplate my dick
|
||||||
if(tempHigh == null) {
|
if(tempHigh == null) {
|
||||||
stateHigh = null;
|
stateHigh = null;
|
||||||
};
|
};
|
||||||
elements[name] = {
|
elements[name] = {
|
||||||
|
behavior: itsActuallySolidNotPowderLol ? behaviors.WALL : behaviors.POWDER,
|
||||||
color: color,
|
color: color,
|
||||||
behavior: behaviors.POWDER,
|
|
||||||
category: "solids",
|
category: "solids",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
density: density ?? 1000,
|
density: density ?? 1000,
|
||||||
|
|
@ -21759,6 +21733,9 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
if(tempHigh !== null) {
|
if(tempHigh !== null) {
|
||||||
elements[name].tempHigh = tempHigh;
|
elements[name].tempHigh = tempHigh;
|
||||||
};
|
};
|
||||||
|
if(hardness !== null) {
|
||||||
|
elements[name].hardness = hardness;
|
||||||
|
};
|
||||||
if(tempHigh !== null && stateHigh !== null) {
|
if(tempHigh !== null && stateHigh !== null) {
|
||||||
elements[name].stateHigh = stateHigh;
|
elements[name].stateHigh = stateHigh;
|
||||||
};
|
};
|
||||||
|
|
@ -23547,21 +23524,103 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
newPowder("silica","#faf9f0",2196,1713).hardness = 0.7;
|
let _s = newPowder("silicon",["#D7DDDF","#999FA1","#7A7E80","#535657"],2330,1414); _s.hardness = 0.7; _s.tick = function(pixel) {
|
||||||
|
if(pixel.temp >= 700) {
|
||||||
|
tryTarnish(pixel,"silica",0.02,false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
elements.molten_silicon = {
|
||||||
|
tempHigh: 3265,
|
||||||
|
density: 2520,
|
||||||
|
viscosity: 1,
|
||||||
|
behavior: behaviors.MOLTEN,
|
||||||
|
tick: function(pixel) {
|
||||||
|
tryTarnish(pixel,"silica",0.02,false);
|
||||||
|
pixelTempCheck(pixel);
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
oxygen: { elem1: ["molten_silicon","silica"], elem2: null, minTemp: 700 },
|
||||||
|
liquid_oxygen: { elem1: ["molten_silicon","silica"], elem2: ["liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen",null], minTemp: 700 }, //real ratio is 862:1
|
||||||
|
oxygen_ice: { elem1: ["molten_silicon","silica"], elem2: ["liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen","liquid_oxygen",null], minTemp: 700 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
newPowder("silica","#faf9f0",2202,1713).hardness = 0.7;
|
||||||
|
elements.glass.alpha = 0.6;
|
||||||
|
elements.fused_silica = {
|
||||||
|
color: "#F8F5ED",
|
||||||
|
alpha: 0.5,
|
||||||
|
renderer: renderPresets.BORDER,
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
reactions: {
|
||||||
|
"radiation": { elem1:"rad_glass", chance:0.33 },
|
||||||
|
"rad_steam": { elem1:"rad_glass", elem2:null, chance:0.33 },
|
||||||
|
"fallout": { elem1:"rad_glass", elem2:"radiation", chance:0.1 }
|
||||||
|
},
|
||||||
|
tempHigh: 1713,
|
||||||
|
stateHigh: "molten_silica",
|
||||||
|
hardness: 0.72,
|
||||||
|
category: "solids",
|
||||||
|
state: "solid",
|
||||||
|
density: 2202,
|
||||||
|
breakInto: "silica",
|
||||||
|
noMix: true,
|
||||||
|
grain: 0
|
||||||
|
};
|
||||||
elements.silica.reactions = {
|
elements.silica.reactions = {
|
||||||
intermediate_felsic_magma: { elem1: "felsic_magma", elem2: "felsic_magma", chance: 0.9 },
|
ultramafic_magma: { elem1:[
|
||||||
intermediate_magma: { elem1: "intermediate_felsic_magma", elem2: "intermediate_felsic_magma", chance: 0.9 },
|
"silica","silica","silica","silica","silica",
|
||||||
magma: { elem1: "intermediate_magma", elem2: "intermediate_felsic_magma", chance: 0.9 },
|
"silica","silica","silica","silica","silica",
|
||||||
ultramafic_magma: { elem1: "magma", elem2: "magma", chance: 0.9 },
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica",null //the range of silica content from ultramafic to felsic is about 20%; this regarded as 4 even steps on top of ultramafic magma for simplicity's sake gives 5% or 1/20
|
||||||
|
], elem2: "magma", "chance":0.1 },
|
||||||
|
magma: { elem1:[
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica",null
|
||||||
|
], elem2: "intermediate_magma", "chance":0.09 },
|
||||||
|
intermediate_magma: { elem1:[
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica",null
|
||||||
|
], elem2: "intermediate_felsic_magma", "chance":0.08 },
|
||||||
|
intermediate_felsic_magma: { elem1:[
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica","silica",
|
||||||
|
"silica","silica","silica","silica",null
|
||||||
|
], elem2: "felsic_magma", "chance":0.07 },
|
||||||
};
|
};
|
||||||
elements.molten_silica = {
|
elements.molten_silica = {
|
||||||
tempHigh: 2950,
|
tempHigh: 2950,
|
||||||
viscosity: 1e14, //idk lol
|
viscosity: 2000000000, //2e7 centiPoise
|
||||||
|
stateLow: "fused_silica",
|
||||||
reactions: {
|
reactions: {
|
||||||
intermediate_felsic_magma: { elem1: "felsic_magma", elem2: "felsic_magma", chance: 0.9 },
|
ultramafic_magma: { elem1:[
|
||||||
intermediate_magma: { elem1: "intermediate_felsic_magma", elem2: "intermediate_felsic_magma", chance: 0.9 },
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
magma: { elem1: "intermediate_magma", elem2: "intermediate_felsic_magma", chance: 0.9 },
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
ultramafic_magma: { elem1: "magma", elem2: "magma", chance: 0.9 },
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica",null //the range of silica content from ultramafic to felsic is about 20%; this regarded as 4 even steps on top of ultramafic magma for simplicity's sake gives 5% or 1/20
|
||||||
|
], elem2: "magma", "chance":0.1 },
|
||||||
|
magma: { elem1:[
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica",null
|
||||||
|
], elem2: "intermediate_magma", "chance":0.09 },
|
||||||
|
intermediate_magma: { elem1:[
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica",null
|
||||||
|
], elem2: "intermediate_felsic_magma", "chance":0.08 },
|
||||||
|
intermediate_felsic_magma: { elem1:[
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica","molten_silica",
|
||||||
|
"molten_silica","molten_silica","molten_silica","molten_silica",null
|
||||||
|
], elem2: "felsic_magma", "chance":0.07 }
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
elements.felsic_magma.reactions ??= {};
|
elements.felsic_magma.reactions ??= {};
|
||||||
|
|
@ -25932,7 +25991,7 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
category: "powders",
|
category: "powders",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
density: 3980,
|
density: 4010,
|
||||||
hardness: 0.9,
|
hardness: 0.9,
|
||||||
};
|
};
|
||||||
elements.molten_ruby ??= {}; elements.molten_ruby.tick = function(pixel) {
|
elements.molten_ruby ??= {}; elements.molten_ruby.tick = function(pixel) {
|
||||||
|
|
@ -25986,6 +26045,48 @@ Pixel size (rendering only): <input id="pixelSize"> (Use if the save looks cut o
|
||||||
density: 2650,
|
density: 2650,
|
||||||
hardness: 0.7,
|
hardness: 0.7,
|
||||||
};
|
};
|
||||||
|
//Zircon
|
||||||
|
blueZirconColors = ["#017cbc","#146ea0","#17b6c9","#3bbfd3"];
|
||||||
|
goldenZirconColors = ["#e99209","#fcb111","#d88208","#b97605"];
|
||||||
|
//heatTreated 0 = untreated, 1 = inertly (blue), 2 = with oxygen (golden)
|
||||||
|
elements.zircon = {
|
||||||
|
//Corundum with different impurities, so I can copy/paste everything but the color
|
||||||
|
color: ["#37130b","#a9301a","#3c1810"],
|
||||||
|
properties: {
|
||||||
|
heatTreated: 0
|
||||||
|
},
|
||||||
|
tick: function(pixel) {
|
||||||
|
pixel.heatTreated ??= 0;
|
||||||
|
if(pixel.temp > 900) {
|
||||||
|
if(pixel.heatTreated == 0) {
|
||||||
|
if(exposedToAir(pixel)) {
|
||||||
|
pixel.color = pixelColorPick(pixel,goldenZirconColors)
|
||||||
|
pixel.heatTreated = 2;
|
||||||
|
} else {
|
||||||
|
pixel.color = pixelColorPick(pixel,blueZirconColors)
|
||||||
|
pixel.heatTreated = 1;
|
||||||
|
}
|
||||||
|
} else if((pixel.heatTreated == 1) && (exposedToAir(pixel))) {
|
||||||
|
pixel.color = pixelColorPick(pixel,goldenZirconColors)
|
||||||
|
pixel.heatTreated = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onUnpaint: function(pixel) {
|
||||||
|
if(pixel.heatTreated == 1) {
|
||||||
|
pixel.color = pixelColorPick(pixel,blueZirconColors)
|
||||||
|
} else if(pixel.heatTreated = 2) {
|
||||||
|
pixel.color = pixelColorPick(pixel,goldenZirconColors)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tempHigh: 2100,
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "powders",
|
||||||
|
state: "solid",
|
||||||
|
density: 4010,
|
||||||
|
hardness: 0.9,
|
||||||
|
};
|
||||||
|
|
||||||
//Opal
|
//Opal
|
||||||
elements.opal = {
|
elements.opal = {
|
||||||
color: ["#ffcfcf", "#fff0d9", "#fcf7c5", "#e4ffd4", "#d1fff5", "#dcecfa", "#dfdbff", "#f5e0ff", "#f7d0f1"],
|
color: ["#ffcfcf", "#fff0d9", "#fcf7c5", "#e4ffd4", "#d1fff5", "#dcecfa", "#dfdbff", "#f5e0ff", "#f7d0f1"],
|
||||||
|
|
@ -40092,6 +40193,21 @@ Make sure to save your command in a file if you want to add this preset again.`
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
elements.unpaint.tool = function(pixel) {
|
||||||
|
var r = elements.unpaint.reactions[pixel.element];
|
||||||
|
if (r && r.elem2) {
|
||||||
|
changePixel(pixel,r.elem2)
|
||||||
|
}
|
||||||
|
if (!elements[pixel.element].customColor) {
|
||||||
|
pixel.color = pixelColorPick(pixel)
|
||||||
|
}
|
||||||
|
if (elements[pixel.element].alpha) {
|
||||||
|
pixel.alpha = elements[pixel.element].alpha
|
||||||
|
}
|
||||||
|
if(pixel.onUnpaint) {
|
||||||
|
pixel.onUnpaint(pixel)
|
||||||
|
}
|
||||||
|
};
|
||||||
elements.unpaint.tick = function(pixel) {
|
elements.unpaint.tick = function(pixel) {
|
||||||
var pX = pixel.x;
|
var pX = pixel.x;
|
||||||
var pY = pixel.y;
|
var pY = pixel.y;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue