Merge branch 'main' of https://github.com/slweeb/sandboxels
This commit is contained in:
commit
c1a01ac70a
|
|
@ -1088,6 +1088,52 @@ behavior: [
|
|||
],
|
||||
density: 1050,
|
||||
};
|
||||
elements.platinum = {
|
||||
color: ["#cfdfe3", "#cfdfe3", "#f7f7f7", "#cfdfe3"],
|
||||
category: "solids",
|
||||
state: "solid",
|
||||
behavior: behaviors.WALL,
|
||||
tempHigh: 1768,
|
||||
conduct: 1,
|
||||
};
|
||||
elements.uranium233 = {
|
||||
name: "Uranium-233",
|
||||
color: "#95a395",
|
||||
category: "powders",
|
||||
state: "solid",
|
||||
behavior: behaviors.RADIOACTIVE_POWDER,
|
||||
tempHigh: 1132,
|
||||
stateHigh: "molten_uranium233",
|
||||
density: 19,
|
||||
};
|
||||
elements.uranium235 = {
|
||||
name: "Uranium-235",
|
||||
color: "#7a997a",
|
||||
category: "powders",
|
||||
state: "solid",
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|DL%0.02|XX",
|
||||
"XX|XX|XX",
|
||||
],
|
||||
tempHigh: 1132.2,
|
||||
stateHigh: "molten_uranium235",
|
||||
density: 19.1,
|
||||
};
|
||||
elements.uranium238 = {
|
||||
name: "Uranium-238",
|
||||
color: "#4a754a",
|
||||
category: "powders",
|
||||
state: "solid",
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|DL%0.01 AND CH:uranium235%0.05|XX",
|
||||
"M2|M1|M2",
|
||||
],
|
||||
tempHigh: 1131,
|
||||
stateHigh: "molten_uranium238",
|
||||
density: 20,
|
||||
};
|
||||
/* Unfinished:
|
||||
magnesium
|
||||
hematite mixture
|
||||
|
|
|
|||
|
|
@ -0,0 +1,325 @@
|
|||
function splitRgbColor(color) {
|
||||
var colorTempArray = color.split(",")
|
||||
var r = colorTempArray[0].split(",")[0].substring(4)
|
||||
var g = colorTempArray[1]
|
||||
var b = colorTempArray[2].slice(0,-1)
|
||||
return [r,g,b]
|
||||
}
|
||||
|
||||
function randomArrayChoice(array) {
|
||||
return array[Math.floor(Math.random() * array.length)]
|
||||
}
|
||||
|
||||
elements.laetium = {
|
||||
color: "#f57f87",
|
||||
tempHigh: 2950,
|
||||
hardness: 0.87252,
|
||||
density: 6719,
|
||||
conduct: 4.7E210,
|
||||
behavior: behaviors.WALL,
|
||||
state: "solid",
|
||||
category: "solids",
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(elements[pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element].category) {
|
||||
if(elements[pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element].category == "cum") {
|
||||
pixel.temp += 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
elements.molten_laetium = {
|
||||
color: ['#ff9f44', '#ff7f44', '#ff5f00'],
|
||||
behavior: behaviors.MOLTEN,
|
||||
reactions: {
|
||||
"ash": { "elem1": null, "elem2": "laetium_slag"},
|
||||
"dust": { "elem1": null, "elem2": "laetium_slag"},
|
||||
"magma": { "elem1": null, "elem2": "laetium_slag"},
|
||||
},
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element.category) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element.category == "cum") {
|
||||
pixel.temp += 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
density: 6100,
|
||||
temp: 3000,
|
||||
tempLow: 2944,
|
||||
stateLow: "laetium",
|
||||
tempHigh: 5837,
|
||||
stateHigh: "vaporized_laetium",
|
||||
viscosity: 1.517,
|
||||
hidden: true,
|
||||
state: "liquid",
|
||||
category: "molten",
|
||||
}
|
||||
|
||||
elements.vaporized_laetium = {
|
||||
color: ['#efdf54', '#efbf54', '#efaf10'],
|
||||
behavior: behaviors.GAS,
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element.category) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element.category == "cum") {
|
||||
pixel.temp += 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
density: 49,
|
||||
temp: 6000,
|
||||
tempLow: 5837,
|
||||
stateLow: "molten_laetium",
|
||||
viscosity: 0.1,
|
||||
hidden: true,
|
||||
state: "gas",
|
||||
category: "gases",
|
||||
}
|
||||
|
||||
elements.atisanium = {
|
||||
color: "#8dadb8",
|
||||
conduct: 0.87,
|
||||
colorOn: ["#ff00ff", "#e600e6", "#a300cc", "#ce07e8"],
|
||||
tempLow: -44,
|
||||
stateLow: "liquid_atisanium",
|
||||
density: 1.225,
|
||||
behavior: [
|
||||
"M1|M1|M1",
|
||||
"M1|XX|M1",
|
||||
"M1|M1|M1",
|
||||
],
|
||||
state: "gas",
|
||||
category: "gases",
|
||||
tick: function(pixel) {
|
||||
var neighbors = [[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]]
|
||||
var neighborChoice = randomArrayChoice(neighbors)
|
||||
if(isEmpty(neighborChoice[0],pixel.y+neighborChoice[1],true)) {
|
||||
tryMove(pixel,pixel.x+neighborChoice[0],pixel.y+neighborChoice[1])
|
||||
}
|
||||
if(pixel.chargeCD) {
|
||||
if(pixel.chargeCD > 2) {
|
||||
pixel.chargeCD = 2
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
elements.liquid_atisanium = {
|
||||
color: "#3f878a",
|
||||
conduct: 0.96,
|
||||
colorOn: ["#8307eb", "#8c00ff", "#9617ff", "#a02eff"],
|
||||
tempHigh: -45,
|
||||
stateHigh: "atisanium",
|
||||
tempLow: -214,
|
||||
stateLow: "alpha_atisanium",
|
||||
temp: -100,
|
||||
density: 15941,
|
||||
behavior: behaviors.LIQUID,
|
||||
state: "liquid",
|
||||
category: "liquids",
|
||||
tick: function(pixel) {
|
||||
var moveSpotsA = [[-1,1],[0,1],[1,1]]
|
||||
var moveSpotsB = [[-1,0],[1,0]]
|
||||
var msaChoice = randomArrayChoice(moveSpotsA)
|
||||
var msbChoice = randomArrayChoice(moveSpotsB)
|
||||
if(isEmpty(msaChoice[0],pixel.y+msaChoice[1],true)) {
|
||||
if(!tryMove(pixel,pixel.x+msaChoice[0],pixel.y+msaChoice[1])) {
|
||||
tryMove(pixel,pixel.x+msbChoice[0],pixel.y+msbChoice[1])
|
||||
}
|
||||
}
|
||||
if(pixel.chargeCD) {
|
||||
if(pixel.chargeCD > 2) {
|
||||
pixel.chargeCD = 2
|
||||
}
|
||||
}
|
||||
if(pixel.chargeCD) {
|
||||
if(pixel.chargeCD > 1) {
|
||||
if(Math.random() < 0.2) {
|
||||
pixel.chargeCD = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
elements.alpha_atisanium = {
|
||||
color: "#00382a",
|
||||
conduct: 0.987,
|
||||
colorOn: ["#3700ff", "#6820f7", "#4b15bf"],
|
||||
tempHigh: -213,
|
||||
stateHigh: "liquid_atisanium",
|
||||
tempLow: -261,
|
||||
stateLow: "beta_atisanium",
|
||||
temp: -240,
|
||||
density: 51295,
|
||||
behavior: behaviors.WALL,
|
||||
state: "solid",
|
||||
category: "solids",
|
||||
tick: function(pixel) {
|
||||
if(pixel.chargeCD) {
|
||||
if(pixel.chargeCD > 2) {
|
||||
pixel.chargeCD = 2
|
||||
}
|
||||
}
|
||||
if(pixel.chargeCD) {
|
||||
if(pixel.chargeCD > 1) {
|
||||
if(Math.random() < 0.4) {
|
||||
pixel.chargeCD = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
elements.beta_atisanium = {
|
||||
color: "#750e35",
|
||||
conduct: Infinity, //This is where I would make it a superconductor.
|
||||
colorOn: ["#0f0021", "#120324", "#4b106e", "#a6058e", "#42043a"], //pretend this is UV becoming more pronounced
|
||||
tempHigh: -260,
|
||||
stateHigh: "alpha_atisanium",
|
||||
temp: -270,
|
||||
density: 111295,
|
||||
behavior: behaviors.WALL,
|
||||
state: "solid",
|
||||
category: "solids",
|
||||
tick: function(pixel) {
|
||||
if(pixel.chargeCD) {
|
||||
if(pixel.chargeCD > 3) {
|
||||
pixel.chargeCD = 3
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
elements.polusium = {
|
||||
color: "#dedc9e",
|
||||
tempHigh: 1213,
|
||||
hardness: 0.921952,
|
||||
density: 4113,
|
||||
conduct: 0.98,
|
||||
behavior: behaviors.WALL,
|
||||
state: "solid",
|
||||
category: "solids",
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(Math.random() < 0.002) {
|
||||
changePixel(pixel,"polusium_oxide")
|
||||
}
|
||||
}
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == "salt_water") {
|
||||
if(Math.random() < 0.006) {
|
||||
changePixel(pixel,"polusium_oxide")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
elements.molten_polusium = {
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(Math.random() < 0.004) {
|
||||
changePixel(pixel,"molten_polusium_oxide")
|
||||
}
|
||||
}
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == "salt_water") {
|
||||
if(Math.random() < 0.024) {
|
||||
changePixel(pixel,"molten_polusium_oxide")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
density: 3410,
|
||||
temp: 1300,
|
||||
tempLow: 1212,
|
||||
stateLow: "polusium",
|
||||
tempHigh: 3110,
|
||||
stateHigh: "vaporized_polusium",
|
||||
viscosity: 13,
|
||||
}
|
||||
|
||||
elements.vaporized_polusium = {
|
||||
color: ["#fdffd1", "#edf2cb", "#fcfac7"],
|
||||
behavior: behaviors.GAS,
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(Math.random() < 0.015) {
|
||||
changePixel(pixel,"vaporized_polusium_oxide")
|
||||
}
|
||||
}
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == "salt_water") {
|
||||
if(Math.random() < 0.06) {
|
||||
changePixel(pixel,"vaporized_polusium_oxide")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
density: 21,
|
||||
temp: 3200,
|
||||
tempLow: 3109,
|
||||
stateLow: "molten_polusium",
|
||||
viscosity: 0.2,
|
||||
hidden: true,
|
||||
state: "gas",
|
||||
category: "gases",
|
||||
}
|
||||
|
||||
elements.polusium_oxide = {
|
||||
color: "#a9b594",
|
||||
tempHigh: 1300,
|
||||
hardness: 0.511952,
|
||||
density: 3717,
|
||||
behavior: behaviors.POWDER,
|
||||
state: "solid",
|
||||
category: "solids",
|
||||
viscosity: 13,
|
||||
}
|
||||
|
||||
elements.molten_polusium_oxide = {
|
||||
temp: 1350,
|
||||
tempHigh: 1400,
|
||||
stateHigh: "vaporized_polusium_oxide",
|
||||
density: 2917,
|
||||
}
|
||||
|
||||
elements.vaporized_polusium_oxide = {
|
||||
color: "#faffc7",
|
||||
temp: 1500,
|
||||
tempLow: 1399,
|
||||
stateLow: "molten_polusium_oxide",
|
||||
density: 10,
|
||||
behavior: behaviors.GAS,
|
||||
}
|
||||
|
||||
runAfterLoad(function() {
|
||||
elements.laetium_slag = JSON.parse(JSON.stringify(elements.slag))
|
||||
elements.laetium_slag.color = ['#a05c5a', '#af6967', '#b06d6d', '#ae6b6c', '#b67a7a']
|
||||
elements.laetium_slag.tempHigh = 2950
|
||||
elements.laetium_slag.stateHigh = ["molten_slag","molten_laetium"]
|
||||
});
|
||||
|
|
@ -1,3 +1,12 @@
|
|||
elements.iron.hardness = 0.74
|
||||
//https://www.engineeringtoolbox.com/bhn-brinell-hardness-number-d_1365.html
|
||||
//https://en.wikipedia.org/wiki/Hardnesses_of_the_elements_(data_page)
|
||||
//"Annealed chissel steel" hardness and then divided by iron hardness (Brinell)
|
||||
//sqrt()ed like IACS-derived conductivities and scaled to the 0.8 hardness of steel
|
||||
//and because 1 means infinite hardness, the others are derived using
|
||||
//1-(0.26/(otherThingBHN/200))
|
||||
//it doesn't matter much anyway but I'd like to have some semblance/veneer of accuracy
|
||||
|
||||
//Copper exists
|
||||
|
||||
elements.ruthenium = {
|
||||
|
|
@ -7,6 +16,7 @@ elements.ruthenium = {
|
|||
category: "solids",
|
||||
density: 12450,
|
||||
conduct: 0.45,
|
||||
hardness: 0.97593,
|
||||
},
|
||||
|
||||
elements.molten_ruthenium = {
|
||||
|
|
@ -20,6 +30,7 @@ elements.rhodium = {
|
|||
category: "solids",
|
||||
density: 12410,
|
||||
conduct: 0.59,
|
||||
hardness: 0.94694,
|
||||
},
|
||||
|
||||
elements.molten_rhodium = {
|
||||
|
|
@ -33,6 +44,7 @@ elements.palladium = {
|
|||
category: "solids",
|
||||
density: 12023,
|
||||
conduct: 0.38,
|
||||
hardness: 0.82667,
|
||||
},
|
||||
|
||||
elements.molten_palladium = {
|
||||
|
|
@ -48,6 +60,7 @@ elements.rhenium = {
|
|||
category: "solids",
|
||||
density: 21020,
|
||||
conduct: 0.29,
|
||||
hardness: 0.96061,
|
||||
},
|
||||
|
||||
elements.molten_rhenium = {
|
||||
|
|
@ -61,6 +74,7 @@ elements.osmium = {
|
|||
category: "solids",
|
||||
density: 22590,
|
||||
conduct: 0.40,
|
||||
hardness: 0.98673,
|
||||
},
|
||||
|
||||
elements.molten_osmium = {
|
||||
|
|
@ -74,6 +88,7 @@ elements.iridium = {
|
|||
category: "solids",
|
||||
density: 22560,
|
||||
conduct: 0.54,
|
||||
hardness: 0.96886,
|
||||
},
|
||||
|
||||
elements.molten_iridium = {
|
||||
|
|
@ -87,6 +102,7 @@ elements.platinum = {
|
|||
category: "solids",
|
||||
density: 21450,
|
||||
conduct: 0.38,
|
||||
hardness: 0.83226,
|
||||
},
|
||||
|
||||
elements.molten_platinum = {
|
||||
|
|
@ -104,7 +120,8 @@ elements.mercury = {
|
|||
stateLow: "frozen_mercury",
|
||||
category: "liquids",
|
||||
density: 13534,
|
||||
conduct: 0.13
|
||||
conduct: 0.13,
|
||||
breakInto: "mercury_gas",
|
||||
},
|
||||
|
||||
elements.frozen_mercury = {
|
||||
|
|
@ -117,6 +134,7 @@ elements.frozen_mercury = {
|
|||
stateHigh: "mercury",
|
||||
category: "solids",
|
||||
hidden: true,
|
||||
hardness: 0.2775, //(desperately scaled Mohs hardness)
|
||||
},
|
||||
|
||||
elements.mercury_gas = { //hg d@bp extrapolated from density change with temperature: 12743
|
||||
|
|
@ -130,4 +148,4 @@ elements.mercury_gas = { //hg d@bp extrapolated from density change with tempera
|
|||
stateLow: "mercury",
|
||||
category: "gases",
|
||||
hidden: true,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,11 +66,9 @@ elements.oxidized_copper_scrap = {
|
|||
|
||||
elements.copper.breakInto = ["copper_scrap","copper_scrap","copper_scrap","copper_scrap","copper_scrap","oxidized_copper_scrap"]
|
||||
|
||||
elements.gold.breakInto = "gold_coin"
|
||||
|
||||
elements.dry_ice.breakInto = "carbon_dioxide"
|
||||
|
||||
regularMetalArray = ["iron", "zinc", "tin", "nickel", "silver", "aluminum", "lead", "tungsten", "brass", "bronze", "sterling", "steel", "rose_gold", "solder"]
|
||||
regularMetalArray = ["iron", "zinc", "tin", "nickel", "silver", "aluminum", "lead", "tungsten", "brass", "bronze", "sterling", "steel", "rose_gold", "solder", "gold"]
|
||||
|
||||
if(enabledMods.includes("mods/Neutronium Mod.js")) {
|
||||
regularMetalArray.push("mythril")
|
||||
|
|
@ -78,6 +76,21 @@ if(enabledMods.includes("mods/Neutronium Mod.js")) {
|
|||
regularMetalArray.push("titanium")
|
||||
regularMetalArray.push("ilitium")
|
||||
}
|
||||
if(enabledMods.includes("mods/metals.js")) {
|
||||
regularMetalArray.push("beryllium")
|
||||
regularMetalArray.push("boron")
|
||||
regularMetalArray.push("ruthenium")
|
||||
regularMetalArray.push("rhodium")
|
||||
regularMetalArray.push("palladium")
|
||||
regularMetalArray.push("rhenium")
|
||||
regularMetalArray.push("osmium")
|
||||
regularMetalArray.push("iridium")
|
||||
regularMetalArray.push("platinum")
|
||||
regularMetalArray.push("frozen_mercury")
|
||||
if(elements.mercury) {
|
||||
elements.mercury.breakInto = "mercury_gas"
|
||||
}
|
||||
}
|
||||
|
||||
if(enabledMods.includes("mods/ketchup_mod.js")) {
|
||||
regularMetalArray.push("ketchup_metal")
|
||||
|
|
|
|||
|
|
@ -1,3 +1,121 @@
|
|||
elements.bacteria = {
|
||||
color: ["#e6d3f2", "#c098d9", "#6e318f", "#6e318f"],
|
||||
behavior: behaviors.WALL,
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
if(pixel.charge) { //when shocked
|
||||
if(!outOfBounds(pixel.x,pixel.y+1) && !isEmpty(pixel.x,pixel.y+1)) { //check if a pixel exists below to store the element of
|
||||
if(!pixel.active && !pixel.target && pixelMap[pixel.x][pixel.y+1].element != pixel.element) { //exclude self and only fire once
|
||||
pixel.target = pixelMap[pixel.x][pixel.y+1].element
|
||||
pixel.active = true
|
||||
} else if(pixel.active || pixel.target || pixelMap[pixel.x][pixel.y+1].element == pixel.element) {
|
||||
pixel.active = pixel.active
|
||||
pixel.target = pixel.target
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pixel.active) {
|
||||
if(pixel.target) { //safety
|
||||
for(i = 0; i < neighbors.length; i++) { //iterate through neighbor spots
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) { //check for neighbors
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == pixel.target) { //if neighbor element is the target
|
||||
changePixel(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]],pixel.element) //change neighbors to itself
|
||||
pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].target = pixel.target //set new bacteria target
|
||||
pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].active = true //activate new bacteria
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(Math.random() < 0.02) { //decay
|
||||
if(!isEmpty(pixel.x,pixel.y)) { //check if position is empty
|
||||
if(pixelMap[pixel.x][pixel.y].element == pixel.element) { //check if position is still bacteria
|
||||
deletePixel(pixel.x,pixel.y)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*if(pixel.active && pixel.target) { //debug
|
||||
pixel.color = "rgb(255,0,0)"
|
||||
}*/
|
||||
},
|
||||
category: "special",
|
||||
state: "solid",
|
||||
density: 1,
|
||||
conduct: elements.water.conduct + 0.1,
|
||||
},
|
||||
|
||||
elements.replacer_bacteria = {
|
||||
color: ["#fcbbc0", "#f28089", "#f04f5c", "#f04f5c"],
|
||||
behavior: behaviors.WALL,
|
||||
tick: function(pixel) {
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
if(pixel.charge) { //when shocked
|
||||
if(!outOfBounds(pixel.x,pixel.y+1) && !isEmpty(pixel.x,pixel.y+1) && !outOfBounds(pixel.x,pixel.y-1) && !isEmpty(pixel.x,pixel.y-1)) { //check if pixels exists above and below to store the elements of
|
||||
if(!pixel.active && !pixel.target && !pixel.replacement && pixelMap[pixel.x][pixel.y+1].element != pixel.element) { //exclude self and only fire once
|
||||
pixel.target = pixelMap[pixel.x][pixel.y+1].element
|
||||
pixel.replacement = pixelMap[pixel.x][pixel.y-1].element
|
||||
pixel.active = true
|
||||
} else if(pixel.active || pixel.target || pixel.replacement || pixelMap[pixel.x][pixel.y+1].element == pixel.element) {
|
||||
pixel.active = pixel.active
|
||||
pixel.target = pixel.target
|
||||
pixel.replacement = pixel.replacement
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pixel.active) {
|
||||
if(pixel.target && pixel.replacement) { //safety
|
||||
for(i = 0; i < neighbors.length; i++) { //iterate through neighbor spots
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) { //check for neighbors
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element == pixel.target) { //if neighbor element is the target
|
||||
changePixel(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]],pixel.element) //change neighbors to itself
|
||||
pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].target = pixel.target //set new bacteria target
|
||||
pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].replacement = pixel.replacement //set new bacteria replacement
|
||||
pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].active = true //activate new bacteria
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isEmpty(pixel.x,pixel.y)) { //check if own position is empty
|
||||
if(pixelMap[pixel.x][pixel.y].element == pixel.element) { //check if own position is still bacteria
|
||||
changePixel(pixelMap[pixel.x][pixel.y],pixel.replacement)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*if(pixel.active && pixel.target && pixel.replacement) { //debug
|
||||
pixel.color = "rgb(0,255,0)"
|
||||
}*/
|
||||
},
|
||||
category: "special",
|
||||
state: "solid",
|
||||
density: 1,
|
||||
conduct: elements.water.conduct + 0.1,
|
||||
},
|
||||
|
||||
elements.test337 = {
|
||||
color: "#7f7f7f",
|
||||
conduct: 1,
|
||||
viscosity: 0.000001,
|
||||
colorOn: ["#cf7fff"],
|
||||
density: 2000,
|
||||
behavior: behaviors.POWDER,
|
||||
state: "solid",
|
||||
category: "solids",
|
||||
tick: function(pixel) {
|
||||
for(i = 0; i < 3; i++) {
|
||||
var moveSpotsA = [[0,1]]
|
||||
var moveSpotsB = [[-1,1],[1,1]]
|
||||
var msaChoice = randomArrayChoice(moveSpotsA)
|
||||
var msbChoice = randomArrayChoice(moveSpotsB)
|
||||
if(isEmpty(msaChoice[0],pixel.y+msaChoice[1],true)) {
|
||||
if(!tryMove(pixel,pixel.x+msaChoice[0],pixel.y+msaChoice[1])) {
|
||||
tryMove(pixel,pixel.x+msbChoice[0],pixel.y+msbChoice[1])
|
||||
}
|
||||
}
|
||||
pixelTick(pixel)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
elements.sencc = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
|
|
@ -30,8 +148,8 @@ elements.sencc2 = { //same element neighbor count check
|
|||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
for (let i = -2; i < 3; i++) {
|
||||
for (let j = -2; j < 3; j++) {
|
||||
for (let i = -3; i < 4; i++) {
|
||||
for (let j = -3; j < 4; j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
|
|
@ -52,6 +170,258 @@ elements.sencc2 = { //same element neighbor count check
|
|||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc3 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 3
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc4 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 4
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc5 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 5
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc6 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 6
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc7 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 7
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc8 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 8
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc9 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 9
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc10 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 10
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc11 = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
tick: function(pixel) {
|
||||
pixel.uwu = 0
|
||||
var squadius = 11
|
||||
for (let i = (-1*squadius); i < (squadius+1); i++) {
|
||||
for (let j = (-1*squadius); j < (squadius+1); j++) {
|
||||
if (!isEmpty(pixel.x+j,pixel.y+i) && !outOfBounds(pixel.x+j,pixel.y+i)) {
|
||||
if (pixelMap[pixel.x+j][pixel.y+i].element == pixel.element) {
|
||||
pixel.uwu += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
pixel.uwu -= 1
|
||||
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
||||
pixel.color = "rgb(127,127,127)"
|
||||
} else {
|
||||
pixel.color = "rgb(" + (255/((((squadius*2)+1)**2)-1))*pixel.uwu + ",0,0)"
|
||||
}
|
||||
},
|
||||
category: "machines",
|
||||
insulate: true,
|
||||
state: "solid",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.sencc2b = { //same element neighbor count check
|
||||
color: "#000000",
|
||||
uwu: 0,
|
||||
|
|
@ -343,6 +713,189 @@ elements.void_first = {
|
|||
hardness: 1,
|
||||
},
|
||||
|
||||
elements.converter = {
|
||||
color: "#2ec408",
|
||||
tick: function(pixel) {
|
||||
//store 4 touching pixels in variables if the variables don't exist
|
||||
if(!outOfBounds(pixel.x,pixel.y-1) && !isEmpty(pixel.x,pixel.y-1)) {
|
||||
if(!pixel.dc1 && pixelMap[pixel.x][pixel.y-1].element != pixel.element) {
|
||||
pixel.dc1 = pixelMap[pixel.x][pixel.y-1].element
|
||||
}
|
||||
}
|
||||
if(!outOfBounds(pixel.x+1,pixel.y) && !isEmpty(pixel.x+1,pixel.y)) {
|
||||
if(!pixel.dc2 && pixelMap[pixel.x+1][pixel.y].element != pixel.element) {
|
||||
pixel.dc2 = pixelMap[pixel.x+1][pixel.y].element
|
||||
}
|
||||
}
|
||||
if(!outOfBounds(pixel.x,pixel.y+1) && !isEmpty(pixel.x,pixel.y+1)) {
|
||||
if(!pixel.dc3 && pixelMap[pixel.x][pixel.y+1].element != pixel.element) {
|
||||
pixel.dc3 = pixelMap[pixel.x][pixel.y+1].element
|
||||
}
|
||||
}
|
||||
if(!outOfBounds(pixel.x-1,pixel.y) && !isEmpty(pixel.x-1,pixel.y)) {
|
||||
if(!pixel.dc3 && pixelMap[pixel.x-1][pixel.y].element != pixel.element) {
|
||||
pixel.dc4 = pixelMap[pixel.x-1][pixel.y].element
|
||||
}
|
||||
}
|
||||
//choose from 1
|
||||
if(pixel.dc1 && !pixel.dc2 && !pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
}
|
||||
}
|
||||
if(!pixel.dc1 && pixel.dc2 && !pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
}
|
||||
}
|
||||
if(!pixel.dc1 && !pixel.dc2 && pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
pixel.changeTo = pixel.dc3
|
||||
}
|
||||
}
|
||||
if(!pixel.dc1 && !pixel.dc2 && !pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
ggg = Math.random()
|
||||
hhh = Math.random()
|
||||
iii = Math.random()
|
||||
//choose from 2
|
||||
//1100 and 0011
|
||||
if(pixel.dc1 && pixel.dc2 && !pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(ggg < 1/2) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc2
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!pixel.dc1 && !pixel.dc2 && pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(ggg < 1/2) {
|
||||
pixel.changeTo = pixel.dc3
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
//1010 and 0101
|
||||
if(pixel.dc1 && !pixel.dc2 && pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(ggg < 1/2) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc3
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!pixel.dc1 && pixel.dc2 && !pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(ggg < 1/2) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
//0110 and 1001
|
||||
if(!pixel.dc1 && pixel.dc2 && pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(ggg < 1/2) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc3
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pixel.dc1 && !pixel.dc2 && !pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(ggg < 1/2) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
//choose from 3
|
||||
//0111
|
||||
if(!pixel.dc1 && pixel.dc2 && pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(hhh < 1/3) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
} else if(hhh < 2/3) {
|
||||
pixel.changeTo = pixel.dc3
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
//1011
|
||||
if(pixel.dc1 && !pixel.dc2 && pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(hhh < 1/3) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else if(hhh < 2/3) {
|
||||
pixel.changeTo = pixel.dc3
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
//1101
|
||||
if(pixel.dc1 && pixel.dc2 && !pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(hhh < 1/3) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else if(hhh < 2/3) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
//1110
|
||||
if(pixel.dc1 && pixel.dc2 && pixel.dc3 && !pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(hhh < 1/3) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else if(hhh < 2/3) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc3
|
||||
}
|
||||
}
|
||||
}
|
||||
//choose from 4
|
||||
//1111
|
||||
if(pixel.dc1 && pixel.dc2 && pixel.dc3 && pixel.dc4) {
|
||||
if(!pixel.changeTo) {
|
||||
if(iii < 1/4) {
|
||||
pixel.changeTo = pixel.dc1
|
||||
} else if(iii < 2/4) {
|
||||
pixel.changeTo = pixel.dc2
|
||||
} else if(iii < 3/4) {
|
||||
pixel.changeTo = pixel.dc3
|
||||
} else {
|
||||
pixel.changeTo = pixel.dc4
|
||||
}
|
||||
}
|
||||
}
|
||||
neighbors = [[-1,0],[0,-1],[1,0],[0,1]]
|
||||
for(i = 0; i < neighbors.length; i++) {
|
||||
if(!isEmpty(pixel.x+neighbors[i][0],pixel.y+neighbors[i][1],true)) {
|
||||
if(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]].element != pixel.element) {
|
||||
changePixel(pixelMap[pixel.x+neighbors[i][0]][pixel.y+neighbors[i][1]],pixel.changeTo)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
category:"special",
|
||||
hardness: 1,
|
||||
},
|
||||
|
||||
conveyorIgnoreList = ["conveyor_1","conveyor_2","wall"]
|
||||
|
||||
elements.conveyor_1 = {
|
||||
|
|
@ -1226,6 +1779,166 @@ elements.ionized_polka_dotted_powder = {
|
|||
tempLow: 8000,
|
||||
stateLow: "vaporized_polka_dotted_powder",
|
||||
hidden: true,
|
||||
},
|
||||
|
||||
elements.hdet = {
|
||||
name: "heat- dependent explosion text",
|
||||
color: "#33aa44",
|
||||
behavior: behaviors.POWDER,
|
||||
tick: function(pixel) {
|
||||
if(pixel.charge > 0) {
|
||||
var temp = pixel.temp
|
||||
if(temp < 0) {
|
||||
temp = 0
|
||||
}
|
||||
if(temp >= 0 && temp < 1) {
|
||||
temp = 1
|
||||
}
|
||||
if(temp > 56000) {
|
||||
temp = 56000
|
||||
}
|
||||
if(isNaN(temp) || isNaN(pixel.temp)) {
|
||||
temp = 20
|
||||
pixel.temp = 20
|
||||
}
|
||||
var r = ((Math.sqrt((Math.log(temp)/Math.log(20)))*(temp**0.5))/(6000**0.126284318))/2
|
||||
explodeAt(pixel.x,pixel.y,Math.floor(r))
|
||||
if(temp > 200) {
|
||||
if(Math.random() < (Math.log(temp)/Math.log(56000))**9) {
|
||||
pixel.charge = 1
|
||||
if(pixel.chargeCD) {
|
||||
delete pixel.chargeCD
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isNaN(temp) || isNaN(pixel.temp)) {
|
||||
temp = 20
|
||||
pixel.temp = 20
|
||||
}
|
||||
}
|
||||
},
|
||||
density: 1200,
|
||||
conduct: 0.5,
|
||||
state: "solid",
|
||||
category: "special"
|
||||
},
|
||||
|
||||
function randInt(max) {
|
||||
return Math.floor(Math.random() * (max + 1))
|
||||
}
|
||||
|
||||
function randIntR(min,max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min
|
||||
}
|
||||
|
||||
elements.test293 = {
|
||||
color: "#f0e7e0",
|
||||
behavior: [
|
||||
"XX|SA%40 AND ST|XX",
|
||||
"M2%10 AND SA%40 AND ST|XX|M2%10 AND SA%40 AND ST",
|
||||
"M2 AND M1%10|M1 AND SA%40 AND ST|M2 AND M1%10"
|
||||
],
|
||||
category: "weapons",
|
||||
state: "solid",
|
||||
density: 2222.22,
|
||||
tick: function(pixel) {
|
||||
if(pixel.burning) {
|
||||
if(pixel.burning == true) {
|
||||
if(isEmpty(pixel.x,pixel.y-1)) {
|
||||
if(Math.random() < 0.04) { createPixel("fire",pixel.x,pixel.y-1) }
|
||||
if(Math.random() < 0.04) { pixel.temp++ }
|
||||
}
|
||||
if(isEmpty(pixel.x,pixel.y+1)) {
|
||||
if(Math.random() < 0.04) { createPixel("fire",pixel.x,pixel.y+1) }
|
||||
if(Math.random() < 0.04) { pixel.temp++ }
|
||||
}
|
||||
if(isEmpty(pixel.x-1,pixel.y)) {
|
||||
if(Math.random() < 0.04) { createPixel("fire",pixel.x-1,pixel.y) }
|
||||
if(Math.random() < 0.04) { pixel.temp++ }
|
||||
}
|
||||
if(isEmpty(pixel.x+1,pixel.y)) {
|
||||
if(Math.random() < 0.04) { createPixel("fire",pixel.x+1,pixel.y) }
|
||||
if(Math.random() < 0.04) { pixel.temp++ }
|
||||
}
|
||||
if(Math.random() < 0.0001) { explodeAt(pixel.x,pixel.y,randIntR(7,10),("fire,fire,fire,fire,smoke,"+pixel.element+","+pixel.element)) }
|
||||
}
|
||||
}
|
||||
doHeat(pixel);
|
||||
},
|
||||
burn: 300,
|
||||
burnTime: 500,
|
||||
},
|
||||
|
||||
elements.test293b = {
|
||||
color: "#e0e7f0",
|
||||
behavior: [
|
||||
"XX|SA%40 AND ST|XX",
|
||||
"M2%10 AND SA%40 AND ST|XX|M2%10 AND SA%40 AND ST",
|
||||
"M2 AND M1%10|M1 AND SA%40 AND ST|M2 AND M1%10"
|
||||
],
|
||||
category: "weapons",
|
||||
state: "solid",
|
||||
density: 2222.22,
|
||||
tick: function(pixel) {
|
||||
for(i = -1; i < 2; i++) {
|
||||
for(j = -1; j < 2; j++) {
|
||||
if(!isEmpty(pixel.x + i, pixel.y + j) && !outOfBounds(pixel.x + i, pixel.y + j)) {
|
||||
if(pixelMap[pixel.x + i][pixel.y + j].element == "cold_fire" && !pixel.burning) {
|
||||
pixel.burning = true
|
||||
pixel.burnStart = pixelTicks
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pixel.burning) {
|
||||
if(pixel.burning == true) {
|
||||
for(i = -1; i < 2; i++) {
|
||||
for(j = -1; j < 2; j++) {
|
||||
if(!isEmpty(pixel.x + i, pixel.y + j) && !outOfBounds(pixel.x + i, pixel.y + j)) {
|
||||
if(pixelMap[pixel.x + i][pixel.y + j].element == "fire") {
|
||||
deletePixel(pixel.x + i, pixel.y + j)
|
||||
createPixel("cold_fire", pixel.x + i,pixel.y + j)
|
||||
}
|
||||
pixelMap[pixel.x + i][pixel.y + j].temp -= randIntR(1,2)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isEmpty(pixel.x,pixel.y-1)) {
|
||||
if(Math.random() < 0.04) { createPixel("cold_fire",pixel.x,pixel.y-1) }
|
||||
if(Math.random() < 0.04) { pixel.temp-- }
|
||||
}
|
||||
if(isEmpty(pixel.x,pixel.y+1)) {
|
||||
if(Math.random() < 0.04) { createPixel("cold_fire",pixel.x,pixel.y+1) }
|
||||
if(Math.random() < 0.04) { pixel.temp-- }
|
||||
}
|
||||
if(isEmpty(pixel.x-1,pixel.y)) {
|
||||
if(Math.random() < 0.04) { createPixel("cold_fire",pixel.x-1,pixel.y) }
|
||||
if(Math.random() < 0.04) { pixel.temp-- }
|
||||
}
|
||||
if(isEmpty(pixel.x+1,pixel.y)) {
|
||||
if(Math.random() < 0.04) { createPixel("cold_fire",pixel.x+1,pixel.y) }
|
||||
if(Math.random() < 0.04) { pixel.temp-- }
|
||||
}
|
||||
if(Math.random() < 0.0001) {
|
||||
var amogus = randIntR(8,11)
|
||||
var amog1 = (Math.ceil(amogus/2))*-1
|
||||
var amog2 = (Math.ceil(amogus/2))+1
|
||||
explodeAt(pixel.x,pixel.y,amogus,("cold_fire,cold_fire,cold_fire,cold_fire,cold_fire,"+pixel.element+","+pixel.element))
|
||||
for(i = amog1; i < amog2; i++) {
|
||||
for(j = amog1; j < amog2; j++) {
|
||||
if(!isEmpty(pixel.x + i, pixel.y + j) && !outOfBounds(pixel.x + i, pixel.y + j)) {
|
||||
pixelMap[pixel.x + i][pixel.y + j].temp -= randIntR(160,240)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
doHeat(pixel);
|
||||
},
|
||||
burn: 300,
|
||||
burnTime: 500,
|
||||
burnInto: "cold_fire",
|
||||
}
|
||||
|
||||
runAfterLoad(function() {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ runAfterLoad(function() {
|
|||
],
|
||||
category: "spouts",
|
||||
temp: elements[liquidArray[i]].temp,
|
||||
hardness: 1,
|
||||
};
|
||||
};
|
||||
liquidArray.push("ketchup")
|
||||
|
|
|
|||
Loading…
Reference in New Issue