469 lines
14 KiB
JavaScript
469 lines
14 KiB
JavaScript
/* Flowers And Forests
|
|
Created by Pixelegend4 and SquareScreamYT
|
|
*/
|
|
|
|
elements.nutmeg = {
|
|
color: "#b86d42",
|
|
behavior: behaviors.POWDER,
|
|
category: "land",
|
|
state: "solid",
|
|
breakInto: "nutmeg_ground",
|
|
};
|
|
|
|
elements.nutmeg_drink = {
|
|
color: "#b86d42",
|
|
behavior: behaviors.LIQUID,
|
|
category: "land",
|
|
state: "solid",
|
|
reactions: {
|
|
"baked_batter": { elem1: "nutmeg_cake", elem2: "nutmeg_cake" },
|
|
},
|
|
};
|
|
elements.nutmeg_cake = {
|
|
color: "#b86d42",
|
|
behavior: behaviors.SOLID,
|
|
category: "land",
|
|
state: "solid",
|
|
};
|
|
|
|
elements.nutmeg_ground = {
|
|
color: "#804d2f",
|
|
behavior: behaviors.POWDER,
|
|
category: "land",
|
|
state: "solid",
|
|
reactions: {
|
|
"water": { elem1: "nutmeg_drink", elem2: "nutmeg_drink" },
|
|
},
|
|
};
|
|
elements.cactus = {
|
|
color: "#35ff08",
|
|
behavior: behaviors.SOLID,
|
|
category: "land",
|
|
state: "solid",
|
|
reactions: {
|
|
"human": { elem1: "blood", elem2: "blood" },
|
|
"fly": { elem1: "blood", elem2: "blood" },
|
|
"bee": { elem1: "honey", elem2: "honey" },
|
|
},
|
|
};
|
|
elements.blue_cactus = {
|
|
color: "#0033FF",
|
|
behavior: behaviors.SOLID,
|
|
category: "land",
|
|
state: "solid",
|
|
reactions: {
|
|
"human": { elem1: null, elem2: "blood" },
|
|
"fly": { elem1: null, elem2: "blood" },
|
|
"bee": { elem1: null, elem2: "honey" },
|
|
},
|
|
};
|
|
elements.sycamore_wood = {
|
|
color: "#632e1f",
|
|
behavior: behaviors.WALL,
|
|
tempHigh: 400,
|
|
stateHigh: ["ember","charcoal","fire","fire","fire"],
|
|
category: "solids",
|
|
burn: 5,
|
|
burnTime: 300,
|
|
burnInto: ["ember","charcoal","fire"],
|
|
state: "solid",
|
|
hardness: 0.15,
|
|
breakInto: "sawdust",
|
|
breakIntoColor: ["#dba66e","#cc8a64"],
|
|
hidden: true
|
|
}
|
|
elements.sycamore_branch = {
|
|
color: "#632e1f",
|
|
behavior: [
|
|
"CR:sycamore_leaves,sycamore_branch%2|CR:sycamore_leaves,sycamore_branch%2|CR:sycamore_leaves,sycamore_branch%2",
|
|
"XX|XX|XX",
|
|
"XX|XX|XX",
|
|
],
|
|
tempHigh: 100,
|
|
stateHigh: "sycamore_wood",
|
|
tempLow: -30,
|
|
stateLow: "sycamore_wood",
|
|
category: "life",
|
|
burn: 40,
|
|
burnTime: 50,
|
|
burnInto: ["sap","ember","charcoal"],
|
|
hidden: true,
|
|
state: "solid",
|
|
density: 1500,
|
|
hardness: 0.15,
|
|
breakInto: ["sap","sawdust"],
|
|
};
|
|
elements.sycamore_leaves = {
|
|
color: ["#00d404","#0ec911","#109e12"],
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"XX|XX|XX",
|
|
"XX|XX|XX",
|
|
],
|
|
reactions: {
|
|
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
|
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
|
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
|
|
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }
|
|
},
|
|
category:"life",
|
|
tempHigh: 100,
|
|
stateHigh: "dead_plant",
|
|
tempLow: -1.66,
|
|
stateLow: "frozen_plant",
|
|
burn:65,
|
|
burnTime:60,
|
|
burnInto: "dead_plant",
|
|
breakInto: "dead_plant",
|
|
state: "solid",
|
|
density: 1050,
|
|
hidden: true
|
|
}
|
|
|
|
elements.sycamore_seed = {
|
|
color: "#854610",
|
|
tick: function(pixel) {
|
|
if (isEmpty(pixel.x,pixel.y+1)) {
|
|
movePixel(pixel,pixel.x,pixel.y+1);
|
|
}
|
|
else {
|
|
if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) {
|
|
if (!outOfBounds(pixel.x,pixel.y+1)) {
|
|
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
|
|
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
|
|
changePixel(dirtPixel,"root");
|
|
}
|
|
}
|
|
if (isEmpty(pixel.x,pixel.y-1)) {
|
|
movePixel(pixel,pixel.x,pixel.y-1);
|
|
createPixel(Math.random() > 0.5 ? "sycamore_wood" : "sycamore_branch",pixel.x,pixel.y+1);
|
|
}
|
|
}
|
|
else if (pixel.age > 1000) {
|
|
changePixel(pixel,"sycamore_wood");
|
|
}
|
|
pixel.age++;
|
|
}
|
|
doDefaults(pixel);
|
|
},
|
|
properties: {
|
|
"age":0
|
|
},
|
|
tempHigh: 100,
|
|
stateHigh: "dead_plant",
|
|
tempLow: -2,
|
|
stateLow: "frozen_plant",
|
|
burn: 65,
|
|
burnTime: 15,
|
|
category: "life",
|
|
state: "solid",
|
|
density: 1500,
|
|
cooldown: defaultCooldown,
|
|
seed: true,
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"XX|FX%10|XX",
|
|
"XX|M1|XX",
|
|
],
|
|
};
|
|
|
|
worldgentypes.fields = {
|
|
layers: [
|
|
[0.75, "dirt"],
|
|
[0.05, "rock"],
|
|
[0, "basalt"],
|
|
],
|
|
decor: [
|
|
["sapling", 0.04, 20],
|
|
["grass", 0.25, 30],
|
|
["grass", 0.25, 30],
|
|
["bee", 0.02, 25],
|
|
["cloud", 1, 2],
|
|
],
|
|
baseHeight: 0.25
|
|
}
|
|
|
|
worldgentypes.sycamore_forest = {
|
|
layers: [
|
|
[0.75, "dirt"],
|
|
[0.05, "dirt"],
|
|
],
|
|
decor: [
|
|
["sycamore_seed", 0.04, 20],
|
|
["sycamore_seed", 0.10, 20],
|
|
["sycamore_seed", 0.13, 20],
|
|
["grass", 0.25, 30],
|
|
["cloud", 1, 2],
|
|
],
|
|
baseHeight: 0.25
|
|
};
|
|
|
|
elements.onion = {
|
|
color: "#f5b042",
|
|
behavior: behaviors.POWDER,
|
|
category: "land",
|
|
state: "solid",
|
|
};
|
|
|
|
elements.palm_tree_seed = {
|
|
color: "#7a603d",
|
|
tick: function(pixel) {
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100) {
|
|
if (!outOfBounds(pixel.x,pixel.y+1)) {
|
|
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
|
|
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
|
|
changePixel(dirtPixel,"root");
|
|
}
|
|
}
|
|
if (isEmpty(pixel.x,pixel.y-1) && pixel.height < 7) {
|
|
movePixel(pixel,pixel.x,pixel.y-1);
|
|
createPixel("palm_tree_stem",pixel.x,pixel.y+1);
|
|
|
|
pixel.height++
|
|
}
|
|
}
|
|
else if (pixel.age > 150 && pixel.height > 6 && Math.random() < 0.1) {
|
|
changePixel(pixel,"palm_tree_top");
|
|
}
|
|
pixel.age++;
|
|
doDefaults(pixel);
|
|
},
|
|
properties: {
|
|
"age":0,
|
|
"height": 0
|
|
},
|
|
tempHigh: 100,
|
|
stateHigh: "dead_plant",
|
|
tempLow: -2,
|
|
stateLow: "frozen_plant",
|
|
burn: 65,
|
|
burnTime: 15,
|
|
category: "life",
|
|
state: "solid",
|
|
density: 1500,
|
|
cooldown: defaultCooldown,
|
|
seed: true,
|
|
behavior: [
|
|
"XX|XX|XX",
|
|
"XX|XX|XX",
|
|
"XX|M1|XX",
|
|
],
|
|
};
|
|
|
|
elements.palm_tree_stem = {
|
|
color: "#8f6c3f",
|
|
behavior: behaviors.WALL,
|
|
tempHigh: 400,
|
|
stateHigh: ["ember","charcoal","fire","fire","fire"],
|
|
category: "solids",
|
|
burn: 5,
|
|
burnTime: 300,
|
|
burnInto: ["ember","charcoal","fire"],
|
|
state: "solid",
|
|
hardness: 0.15,
|
|
breakInto: "sawdust",
|
|
breakIntoColor: ["#dba66e","#cc8a64"],
|
|
hidden: true
|
|
}
|
|
elements.palm_tree_top = {
|
|
color: "#8f6c3f",
|
|
behavior: behaviors.WALL,
|
|
tempHigh: 400,
|
|
stateHigh: ["ember","charcoal","fire","fire","fire"],
|
|
category: "solids",
|
|
burn: 5,
|
|
burnTime: 300,
|
|
burnInto: ["ember","charcoal","fire"],
|
|
state: "solid",
|
|
hardness: 0.15,
|
|
breakInto: "sawdust",
|
|
breakIntoColor: ["#dba66e","#cc8a64"],
|
|
properties:{
|
|
"leftleaves": 0,
|
|
"rightleaves": 0,
|
|
},
|
|
hidden: true,
|
|
tick: function(pixel) {
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 0) {
|
|
if (isEmpty(pixel.x+1,pixel.y)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+1,pixel.y);
|
|
|
|
pixel.rightleaves++
|
|
}
|
|
}
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 1) {
|
|
if (isEmpty(pixel.x+2,pixel.y)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+2,pixel.y);
|
|
|
|
pixel.rightleaves++
|
|
}
|
|
}
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 2) {
|
|
if (isEmpty(pixel.x+3,pixel.y)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+3,pixel.y);
|
|
|
|
pixel.rightleaves++
|
|
}
|
|
}
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 3) {
|
|
if (isEmpty(pixel.x+4,pixel.y+1)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+4,pixel.y+1);
|
|
|
|
pixel.rightleaves++
|
|
}
|
|
}
|
|
|
|
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 0) {
|
|
if (isEmpty(pixel.x-1,pixel.y)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-1,pixel.y);
|
|
|
|
pixel.leftleaves++
|
|
}
|
|
}
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 1) {
|
|
if (isEmpty(pixel.x-2,pixel.y)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-2,pixel.y);
|
|
|
|
pixel.leftleaves++
|
|
}
|
|
}
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 2) {
|
|
if (isEmpty(pixel.x-3,pixel.y)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-3,pixel.y);
|
|
|
|
pixel.leftleaves++
|
|
}
|
|
}
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 3) {
|
|
if (isEmpty(pixel.x-4,pixel.y+1)) {
|
|
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-4,pixel.y+1);
|
|
|
|
pixel.leftleaves++
|
|
}
|
|
}
|
|
pixel.age++;
|
|
doDefaults(pixel);
|
|
},
|
|
}
|
|
elements.palm_leaves = {
|
|
color: ["#569923","#5ea12b"],
|
|
reactions: {
|
|
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
|
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
|
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
|
|
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }
|
|
},
|
|
category:"life",
|
|
tempHigh: 100,
|
|
stateHigh: "dead_plant",
|
|
tempLow: -1.66,
|
|
stateLow: "frozen_plant",
|
|
burn:65,
|
|
burnTime:60,
|
|
burnInto: "dead_plant",
|
|
breakInto: "dead_plant",
|
|
state: "solid",
|
|
density: 1050,
|
|
hidden: true
|
|
}
|
|
elements.fruit_vine = {
|
|
color: "#00df00",
|
|
behavior: [
|
|
"ST:wood|ST:wood|ST:wood",
|
|
"ST:wood AND CR:grape%0.01|XX|ST:wood AND CR:grape%0.01",
|
|
"ST:wood|ST:wood AND M1|ST:wood",
|
|
],
|
|
reactions: {
|
|
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
|
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
|
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
|
|
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
|
"mercury": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
|
"stench": { elem2:null, chance:0.25 },
|
|
"carbon_dioxide": { elem2:"oxygen", chance:0.25 },
|
|
},
|
|
category:"life",
|
|
tempHigh: 100,
|
|
stateHigh: "dead_plant",
|
|
tempLow: -1.66,
|
|
stateLow: "frozen_plant",
|
|
burn:15,
|
|
burnTime:60,
|
|
burnInto: "dead_plant",
|
|
state: "solid",
|
|
density: 1050,
|
|
breakInto: "dead_plant"
|
|
}
|
|
elements.fruit_vine_seed = {
|
|
color: "#6b4f36",
|
|
tick: function(pixel) {
|
|
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100) {
|
|
if (!outOfBounds(pixel.x,pixel.y+1)) {
|
|
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
|
|
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
|
|
changePixel(dirtPixel,"root");
|
|
}
|
|
}
|
|
if (isEmpty(pixel.x,pixel.y-1)) {
|
|
if (!isEmpty(pixel.x+1,pixel.y-1) || !isEmpty(pixel.x-1,pixel.y-1)) {
|
|
movePixel(pixel,pixel.x,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x,pixel.y+1);
|
|
}
|
|
}
|
|
if (!isEmpty(pixel.x+2,pixel.y-1) && isEmpty(pixel.x+1,pixel.y-1)) {
|
|
movePixel(pixel,pixel.x+1,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x-1,pixel.y+1);
|
|
}
|
|
if (!isEmpty(pixel.x-2,pixel.y-1) && isEmpty(pixel.x-1,pixel.y-1)) {
|
|
movePixel(pixel,pixel.x-1,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x+1,pixel.y+1);
|
|
}
|
|
if (!isEmpty(pixel.x,pixel.y-1) && !isEmpty(pixel.x+1,pixel.y) && isEmpty(pixel.x+1,pixel.y-1)) {
|
|
movePixel(pixel,pixel.x+1,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x-1,pixel.y+1);
|
|
}
|
|
if (!isEmpty(pixel.x,pixel.y-1) && !isEmpty(pixel.x-1,pixel.y) && isEmpty(pixel.x-1,pixel.y-1)) {
|
|
movePixel(pixel,pixel.x-1,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x+1,pixel.y+1);
|
|
}
|
|
/*if (pixelMap[pixel.x+1][pixel.y-1].element !== "wood" && pixelMap[pixel.x-1][pixel.y-1].element !== "wood") {
|
|
movePixel(pixel,pixel.x,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x,pixel.y+1);
|
|
if (isEmpty(pixel.x+1,pixel.y-1) && pixelMap[pixel.x+2][pixel.y-1].element === "wood") {
|
|
movePixel(pixel,pixel.x+1,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x-1,pixel.y+1);
|
|
}
|
|
if (isEmpty(pixel.x-1,pixel.y-1) && pixelMap[pixel.x-2][pixel.y-1].element === "wood") {
|
|
movePixel(pixel,pixel.x-1,pixel.y-1);
|
|
createPixel("fruit_vine",pixel.x+1,pixel.y+1);
|
|
}
|
|
}*/
|
|
}
|
|
else if (pixel.age > 400 && Math.random() < 0.1) {
|
|
changePixel(pixel,"fruit_vine");
|
|
}
|
|
pixel.age++;
|
|
doDefaults(pixel);
|
|
},
|
|
properties: {
|
|
"age":0,
|
|
},
|
|
tempHigh: 100,
|
|
stateHigh: "dead_plant",
|
|
tempLow: -2,
|
|
stateLow: "frozen_plant",
|
|
burn: 65,
|
|
burnTime: 15,
|
|
category: "life",
|
|
state: "solid",
|
|
density: 1500,
|
|
cooldown: defaultCooldown,
|
|
seed: true,
|
|
behavior: [
|
|
"ST:wood,fruit_vine|ST:wood,fruit_vine|ST:wood,fruit_vine",
|
|
"ST:wood,fruit_vine|XX|ST:wood,fruit_vine",
|
|
"ST:wood,fruit_vine|M1|ST:wood,fruit_vine",
|
|
],
|
|
};
|