commit
9bc10bd391
|
|
@ -36,6 +36,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
for(let key in rgb){
|
for(let key in rgb){
|
||||||
rgb[key] += num;
|
rgb[key] += num;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixel.color = `rgb(${rgb.r},${rgb.g},${rgb.b})`;
|
pixel.color = `rgb(${rgb.r},${rgb.g},${rgb.b})`;
|
||||||
}
|
}
|
||||||
let multi = (pixel.temp-70)/100;
|
let multi = (pixel.temp-70)/100;
|
||||||
|
|
@ -982,6 +983,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
stateHigh: ["chlorine", "aluminum"],
|
stateHigh: ["chlorine", "aluminum"],
|
||||||
solubility: {water: 0.458, color: ["#7a9ff0", "#7aa4ff", "#729bf2", "#6f9cfc"]},
|
solubility: {water: 0.458, color: ["#7a9ff0", "#7aa4ff", "#729bf2", "#6f9cfc"]},
|
||||||
}
|
}
|
||||||
|
elements.acid.solInfo = "acid";
|
||||||
elements.acid.reactions.aluminum = {elem1: "hydrogen", elem2: "aluminum_chloride"};
|
elements.acid.reactions.aluminum = {elem1: "hydrogen", elem2: "aluminum_chloride"};
|
||||||
elements.acid.reactions.purple_gold = {elem1: ["aluminum_chloride", "aluminum_chloride", "hydrogen"], elem2: "gold"};
|
elements.acid.reactions.purple_gold = {elem1: ["aluminum_chloride", "aluminum_chloride", "hydrogen"], elem2: "gold"};
|
||||||
elements.acid.reactions.blue_gold = {elem1: ["gallium_chloride", "gallium_chloride", "hydrogen"], elem2: "gold"};
|
elements.acid.reactions.blue_gold = {elem1: ["gallium_chloride", "gallium_chloride", "hydrogen"], elem2: "gold"};
|
||||||
|
|
@ -1232,6 +1234,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
behavior: behaviors.LIQUID,
|
behavior: behaviors.LIQUID,
|
||||||
state: "liquid",
|
state: "liquid",
|
||||||
density: 1830,
|
density: 1830,
|
||||||
|
solInfo: "acid",
|
||||||
reactions: {
|
reactions: {
|
||||||
magnesium_carbonate: {elem1: ["carbon_dioxide", "foam","foam"], elem2: "epsom_salt"},
|
magnesium_carbonate: {elem1: ["carbon_dioxide", "foam","foam"], elem2: "epsom_salt"},
|
||||||
limestone: {elem1: ["carbon_dioxide", "foam","foam"], elem2: "hardened_gypsum"},
|
limestone: {elem1: ["carbon_dioxide", "foam","foam"], elem2: "hardened_gypsum"},
|
||||||
|
|
@ -1314,14 +1317,14 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
promptInput("Enter the range of this machine:", (input)=>{elements.magnet.range = parseInt(input);}, "Magnet Range", elements.magnet.range);
|
promptInput("Enter the range of this machine:", (input)=>{elements.magnet.range = parseInt(input);}, "Magnet Range", elements.magnet.range);
|
||||||
},
|
},
|
||||||
onClicked: function(pixel, elem){
|
onClicked: function(pixel, elem){
|
||||||
if(pixel.targetElems.includes(elem) && elem != "unknown" && pixel.clickCd <= 0){
|
if(pixel.targetElems.includes(elem) && elem != null && pixel.clickCd <= 0){
|
||||||
pixel.targetElems.splice(pixel.targetElems.indexOf(elem), 1);
|
pixel.targetElems.splice(pixel.targetElems.indexOf(elem), 1);
|
||||||
pixel.clickCd = 20;
|
pixel.clickCd = 20;
|
||||||
} else if (elem != "unknown" && pixel.clickCd <= 0) {
|
} else if (elem != null && pixel.clickCd <= 0) {
|
||||||
pixel.targetElems.push(elem);
|
pixel.targetElems.push(elem);
|
||||||
pixel.clickCd = 20;
|
pixel.clickCd = 20;
|
||||||
}
|
}
|
||||||
if(elem == "unknown" && pixel.clickCd <= 0){
|
if(elem == null && pixel.clickCd <= 0){
|
||||||
switch(pixel.mode){
|
switch(pixel.mode){
|
||||||
case 0:
|
case 0:
|
||||||
pixel.mode = 1; //attract
|
pixel.mode = 1; //attract
|
||||||
|
|
@ -1513,15 +1516,17 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
chance = 0.000075-(Math.min((pixel.temp-250)/20, 0)*0.00005);
|
chance = 0.000075-(Math.min((pixel.temp-250)/20, 0)*0.00005);
|
||||||
if(Math.random()<chance){
|
if(Math.random()<chance){
|
||||||
let colors = [
|
let colors = [
|
||||||
{r:255, g:127, b:0},
|
{r:150, g:80, b:80},
|
||||||
{r: 255, g:200, b:0},
|
{r: 150, g:100, b:80},
|
||||||
{r: 255, g:255, b:0},
|
{r: 150, g:140, b:80},
|
||||||
|
{r:125, g:150, b:80},
|
||||||
{r:0, g:255, b:0},
|
{r:0, g:255, b:0},
|
||||||
{r:0, g:255, b:255},
|
{r:0, g:255, b:255},
|
||||||
{r:0, g:0, b:255},
|
{r:0, g:0, b:255},
|
||||||
{r:255, g:0, b:255},
|
{r:255, g:0, b:255},
|
||||||
{r:255, g:0, b:70},
|
{r:255, g:0, b:70},
|
||||||
{r:255, g:105, b:0},
|
{r:255, g:105, b:0},
|
||||||
|
{r:150, g:80, b:110}
|
||||||
];
|
];
|
||||||
let num = Math.round(Math.random()*7);
|
let num = Math.round(Math.random()*7);
|
||||||
let newColorArr = [];
|
let newColorArr = [];
|
||||||
|
|
@ -1546,16 +1551,18 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
if(Math.random()<0.005 && positions.length > 0){
|
if(Math.random()<0.005 && positions.length > 0){
|
||||||
let lowestIndex = positions.indexOf(Math.min(...positions));
|
let lowestIndex = positions.indexOf(Math.min(...positions));
|
||||||
let newPos = positions[lowestIndex]+1;
|
let newPos = positions[lowestIndex]+1;
|
||||||
let coords = coordsArr[lowestIndex], colors = pixelMap[coords[0]][coords[1]].colorArr || [
|
let colors = [
|
||||||
{r:255, g:127, b:0},
|
{r:150, g:80, b:80},
|
||||||
{r: 255, g:200, b:0},
|
{r: 150, g:100, b:80},
|
||||||
{r: 255, g:255, b:0},
|
{r: 150, g:140, b:80},
|
||||||
|
{r:125, g:150, b:80},
|
||||||
{r:0, g:255, b:0},
|
{r:0, g:255, b:0},
|
||||||
{r:0, g:255, b:255},
|
{r:0, g:255, b:255},
|
||||||
{r:0, g:0, b:255},
|
{r:0, g:0, b:255},
|
||||||
{r:255, g:0, b:255},
|
{r:255, g:0, b:255},
|
||||||
{r:255, g:0, b:70},
|
{r:255, g:0, b:70},
|
||||||
{r:255, g:105, b:0},
|
{r:255, g:105, b:0},
|
||||||
|
{r:150, g:80, b:110}
|
||||||
];
|
];
|
||||||
let current = ((newPos%11)/10)*colors.length;
|
let current = ((newPos%11)/10)*colors.length;
|
||||||
let currentIndex = Math.floor(current);
|
let currentIndex = Math.floor(current);
|
||||||
|
|
@ -1761,4 +1768,100 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
elements.vinegar.solubility = {water: 1};
|
elements.vinegar.solubility = {water: 1};
|
||||||
elements.nitric_acid.solubility = {water: 1};
|
elements.nitric_acid.solubility = {water: 1};
|
||||||
elements.sulfuric_acid.solubility = {water: 1};
|
elements.sulfuric_acid.solubility = {water: 1};
|
||||||
|
elements.morechem_filter = {
|
||||||
|
noMix: true,
|
||||||
|
movable: false,
|
||||||
|
color: ["#214a30", "#245435", "#1a4027", "#265235"],
|
||||||
|
category: "machines",
|
||||||
|
state: "solid",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
properties: {
|
||||||
|
targetElems: [],
|
||||||
|
cooldown: 0,
|
||||||
|
p: null,
|
||||||
|
dir: [0,0],
|
||||||
|
},
|
||||||
|
onClicked: function(pixel, elem){
|
||||||
|
if(pixel.cooldown == 0){
|
||||||
|
if(pixel.targetElems.includes(elem)){
|
||||||
|
pixel.targetElems.splice(pixel.targetElems.indexOf(elem), 1);
|
||||||
|
let total = {r: 0, g: 0, b: 0};
|
||||||
|
let num = 0;
|
||||||
|
for(let elem of pixel.targetElems){
|
||||||
|
let c = getItem(elements[elem].color);
|
||||||
|
let rgb = getRGB(c);
|
||||||
|
total.r += rgb.r, total.g += rgb.g, total.b += rgb.b;
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
if(num == 0){
|
||||||
|
total = {r: 33, g: 74, b: 48};
|
||||||
|
num = 1;
|
||||||
|
}
|
||||||
|
let color = noiseify({r: Math.min(Math.max(total.r/num, 0), 255), g: Math.min(Math.max(total.g/num, 0), 255), b: Math.min(Math.max(total.b/num, 0), 255)}, 6);
|
||||||
|
pixel.color = color;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
pixel.targetElems.push(elem);
|
||||||
|
let total = {r: 0, g: 0, b: 0};
|
||||||
|
let num = 0;
|
||||||
|
for(let elem of pixel.targetElems){
|
||||||
|
let c = getItem(elements[elem].color);
|
||||||
|
let rgb = getRGB(c);
|
||||||
|
total.r += rgb.r, total.g += rgb.g, total.b += rgb.b;
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
let color = noiseify({r: Math.min(Math.max(total.r/num, 0), 255), g: Math.min(Math.max(total.g/num, 0), 255), b: Math.min(Math.max(total.b/num, 0), 255)}, 6);
|
||||||
|
pixel.color = color;
|
||||||
|
|
||||||
|
}
|
||||||
|
pixel.cooldown = 20;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tick: function(pixel){
|
||||||
|
//if(pixel.p != null && pixel.p.del){pixel.p = null};
|
||||||
|
pixel.cooldown -= (pixel.cooldown > 0) ? 1 : 0;
|
||||||
|
for(let coords of adjacentCoords){
|
||||||
|
let p2 = getPixel(coords[0]+pixel.x, coords[1]+pixel.y);
|
||||||
|
if(p2 != null){
|
||||||
|
if(pixel.targetElems.includes(p2.element) && pixel.p == null && elements[p2.element].movable){
|
||||||
|
deletePixel(coords[0]+pixel.x, coords[1]+pixel.y);
|
||||||
|
pixel.p = p2;
|
||||||
|
pixel.dir = coords;
|
||||||
|
}
|
||||||
|
} else if (p2 == null && pixel.p != null && pixel.dir != coords){
|
||||||
|
delete pixel.p.del;
|
||||||
|
//pixel.p.del = false;
|
||||||
|
pixel.p.x = coords[0]+pixel.x, pixel.p.y = coords[1]+pixel.y;
|
||||||
|
pixelMap[coords[0]+pixel.x][coords[1]+pixel.y] = pixel.p;
|
||||||
|
currentPixels.push(pixel.p);
|
||||||
|
pixel.p = null;
|
||||||
|
}
|
||||||
|
if (p2?.element == "morechem_filter" && p2.p == undefined && pixel.p != undefined && Math.random() < 0.25 && pixel.dir != coords){
|
||||||
|
p2.p = pixel.p;
|
||||||
|
p2.dir = coords;
|
||||||
|
pixel.p = null;
|
||||||
|
pixel.dir = undefined;
|
||||||
|
}
|
||||||
|
if (p2?.element == "pipe" && !p2?.con && pixel.p != null && pixel.dir != coords){
|
||||||
|
p2.con = pixel.p;
|
||||||
|
p2.con.x = p2.x;
|
||||||
|
p2.con.y = p2.y;
|
||||||
|
pixel.p = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
elements.hydrogen_peroxide = {
|
||||||
|
solubility: {water: 1},
|
||||||
|
reactions: {
|
||||||
|
copper: {elem1: "water", elem2: "oxidized_copper", chance: 0.05},
|
||||||
|
iron: {elem1: "water", elem2: "rust", chance: 0.05},
|
||||||
|
},
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "liquids",
|
||||||
|
solInfo: "oxidizer",
|
||||||
|
color: ["#316be8", "#356ee8", "#3570f0", "#3c71e6"],
|
||||||
|
};
|
||||||
|
|
||||||
}, true);
|
}, true);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
|
||||||
*Version 1.0.0
|
|
||||||
*/
|
|
||||||
function noiseify(color, range){
|
function noiseify(color, range){
|
||||||
if(color.startsWith("#")){
|
if(color.startsWith("#")){
|
||||||
color = hexToRGB(color);
|
color = hexToRGB(color);
|
||||||
|
|
@ -18,10 +18,17 @@ function is2d(arr){
|
||||||
return arr.some(item => Array.isArray(item));
|
return arr.some(item => Array.isArray(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
function colorMix(p1, p2, bias = 0.5){
|
function colorMix(p1, p2, bias = 0.5, condition = undefined){
|
||||||
|
if(condition != undefined && condition(p1,p2)){
|
||||||
c1 = p1.color;
|
c1 = p1.color;
|
||||||
p1.color = interpolateRgb(getRGB(p1.color), getRGB(p2.color), bias);
|
p1.color = interpolateRgb(getRGB(p1.color), getRGB(p2.color), bias);
|
||||||
p2.color = interpolateRgb(getRGB(c1), getRGB(p2.color), bias);
|
p2.color = interpolateRgb(getRGB(c1), getRGB(p2.color), bias);
|
||||||
|
} else {
|
||||||
|
c1 = p1.color;
|
||||||
|
p1.color = interpolateRgb(getRGB(p1.color), getRGB(p2.color), bias);
|
||||||
|
p2.color = interpolateRgb(getRGB(c1), getRGB(p2.color), bias);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function interpolateRgb(rgb1, rgb2, ratio = 0.5) {
|
function interpolateRgb(rgb1, rgb2, ratio = 0.5) {
|
||||||
|
|
@ -68,3 +75,15 @@ function pixelToggle(pixel, multi = {r:1,g:1,b:1}){
|
||||||
function normalize(obj){
|
function normalize(obj){
|
||||||
return `rgb(${obj.r},${obj.g},${obj.b})`;
|
return `rgb(${obj.r},${obj.g},${obj.b})`;
|
||||||
}
|
}
|
||||||
|
let mixConditions = {
|
||||||
|
ifDifferent: function(p1,p2){
|
||||||
|
let res = false;
|
||||||
|
let rgb1 = getRGB(p1.color), rgb2 = getRGB(p2.color);
|
||||||
|
for(let key in rgb1){
|
||||||
|
if(rgb1[key] < rgb2[key]+6 || rgb1[key] > rgb2[key]-6){
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
|
||||||
254
mods/plants.js
254
mods/plants.js
|
|
@ -1,61 +1,10 @@
|
||||||
/*
|
/*
|
||||||
*Version 2.2.1
|
*Version 2.2.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let plants;
|
let plants;
|
||||||
dependOn("orchidslibrary.js", ()=>{
|
|
||||||
class growInterval {
|
|
||||||
constructor(seedPixel, pattern, basePos, c = 0.025, dieAfter = undefined, fruit = undefined, elems = undefined){
|
|
||||||
let currentLength = 0;
|
|
||||||
let chance = c;
|
|
||||||
let pos = basePos;
|
|
||||||
let interval = setInterval(()=>{
|
|
||||||
if(currentLength == pattern.length || seedPixel == undefined){
|
|
||||||
clearInterval(interval);
|
|
||||||
} else {
|
|
||||||
let x = pos[0]+pattern[currentLength][0], y = pos[1]+pattern[currentLength][1];
|
|
||||||
if(Math.random()<chance && isEmpty(x,y) && !outOfBounds(x,y) && !paused){
|
|
||||||
let elem = (elems != undefined && elems[currentLength] != undefined) ? elems[currentLength] : (elems != undefined) ? elems[0] : "fruit_leaves";
|
|
||||||
createPixel((elem == "flower") ? "fruit_leaves" : elem, x, y);
|
|
||||||
pixelMap[x][y].noBloom = (elem == "flower") ? false : true;
|
|
||||||
pixelMap[x][y].blooming = (elem == "flower");
|
|
||||||
pixelMap[x][y].fruit = fruit;
|
|
||||||
if(elem == "fruit_leaves"){
|
|
||||||
pixelMap[x][y].dieAfter = dieAfter;
|
|
||||||
}
|
|
||||||
currentLength++;
|
|
||||||
} else if (!isEmpty(x,y) && !outOfBounds(x,y)){
|
|
||||||
if(eLists.SOIL.includes(pixelMap[x][y].element)){
|
|
||||||
deletePixel(x,y);
|
|
||||||
let elem = (elems != undefined && elems[currentLength] != undefined) ? elems[currentLength] : (elems != undefined) ? elems[0] : "fruit_leaves";
|
|
||||||
createPixel((elem == "flower") ? "fruit_leaves" : elem, x, y);
|
|
||||||
pixelMap[x][y].noBloom = (elem == "flower") ? false : true;
|
|
||||||
pixelMap[x][y].blooming = (elem == "flower");
|
|
||||||
pixelMap[x][y].fruit = fruit;
|
|
||||||
if(elem == "fruit_leaves"){
|
|
||||||
pixelMap[x][y].dieAfter = dieAfter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
currentLength++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 1000/tps);
|
|
||||||
this.interval = interval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let flowerExclude = ["pineapple"];
|
|
||||||
let vineGrow = ["wood", "rock_wall", "straw", "wall", "ewall", "bush_cane", "bush_base", "fruit_branch"];
|
|
||||||
plants = {
|
|
||||||
tree: [],
|
|
||||||
vine: ["grape", "tomato"],
|
|
||||||
bush: [],
|
|
||||||
other: ["pineapple", "watermelon", "banana", "onion"],
|
|
||||||
includes: function(target){
|
|
||||||
for(item in this){
|
|
||||||
if(this[item] && Array.isArray(this[item]) && this[item].includes(target)){return true;}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let growthPatterns = {
|
let growthPatterns = {
|
||||||
pineapple1: [[-1,-1],[-2,-2],[1,-1],[2,-2],[0,-1],[0,-2],[0,-3],[0,-4],[0,-5],[0,-6],[-1,-6],[1,-6],[-1,-5],[1,-5],[-1,-4],[1,-4],[-1,-3],[1,-3],[0,-7],[-1,-8],[1,-8]],
|
pineapple1: [[-1,-1],[-2,-2],[1,-1],[2,-2],[0,-1],[0,-2],[0,-3],[0,-4],[0,-5],[0,-6],[-1,-6],[1,-6],[-1,-5],[1,-5],[-1,-4],[1,-4],[-1,-3],[1,-3],[0,-7],[-1,-8],[1,-8]],
|
||||||
pineapple2: [[[-1,-1],[1,-1]],[[-2,-2],[2,-2]], [0,-1],[0,-2],[0,-3],[0,-4],[0,-5],[0,-6],[[-1,-6],[1,-6]],[[-1,-5],[1,-5]],[[-1,-4],[1,-4]],[[-1,-3],[1,-3]],[[-1,-2],[1,-2]],[0,-7],[-1,-8],[1,-8]],
|
pineapple2: [[[-1,-1],[1,-1]],[[-2,-2],[2,-2]], [0,-1],[0,-2],[0,-3],[0,-4],[0,-5],[0,-6],[[-1,-6],[1,-6]],[[-1,-5],[1,-5]],[[-1,-4],[1,-4]],[[-1,-3],[1,-3]],[[-1,-2],[1,-2]],[0,-7],[-1,-8],[1,-8]],
|
||||||
|
|
@ -124,6 +73,19 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
cucurbit: function(r, dir, min, max){
|
||||||
|
let w = Math.round(Math.random()*(max-min))+min;
|
||||||
|
let h = Math.round(w*r);
|
||||||
|
let res = [];
|
||||||
|
let pos = [0,0];
|
||||||
|
for(let i = 0; i < w; i++){
|
||||||
|
for(let ii = 0; ii < h/2; ii++){
|
||||||
|
res.push([i, ii]);
|
||||||
|
res.push([i, ii*-1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
let growthElems = {
|
let growthElems = {
|
||||||
pineapple1: ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","fruit_leaves","fruit_leaves","fruit_leaves"],
|
pineapple1: ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","fruit_leaves","fruit_leaves","fruit_leaves"],
|
||||||
|
|
@ -141,7 +103,105 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
"palm_5-2":["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower"],
|
"palm_5-2":["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower"],
|
||||||
"coconut_5-1": ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","fruit_leaves"],
|
"coconut_5-1": ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","fruit_leaves"],
|
||||||
"coconut_5-2": ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower"],
|
"coconut_5-2": ["fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","fruit_leaves","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower","flower"],
|
||||||
|
cucurbit: ["fruit_leaves"],
|
||||||
}
|
}
|
||||||
|
class growInterval {
|
||||||
|
constructor(seedPixel, pattern, basePos, c = 0.025, dieAfter = undefined, fruit = undefined, elems = undefined){
|
||||||
|
let currentLength = 0;
|
||||||
|
let chance = c;
|
||||||
|
let pos = basePos;
|
||||||
|
let interval = setInterval(()=>{
|
||||||
|
if(currentLength == pattern.length || seedPixel == undefined){
|
||||||
|
clearInterval(interval);
|
||||||
|
} else {
|
||||||
|
if(is2d(pattern[currentLength])){
|
||||||
|
for(let coords of pattern[currentLength]){
|
||||||
|
let x = pos[0]+coords[0], y = pos[1]+coords[1];
|
||||||
|
if(Math.random()<chance && isEmpty(x,y) && !outOfBounds(x,y) && !paused){
|
||||||
|
let elem = (elems != undefined && elems[currentLength] != undefined) ? elems[currentLength] : (elems != undefined) ? elems[0] : "fruit_leaves";
|
||||||
|
createPixel((elem == "flower") ? "fruit_leaves" : elem, x, y);
|
||||||
|
pixelMap[x][y].noBloom = (elem == "flower") ? false : true;
|
||||||
|
pixelMap[x][y].blooming = (elem == "flower");
|
||||||
|
pixelMap[x][y].fruit = fruit;
|
||||||
|
if(elem == "fruit_leaves"){
|
||||||
|
pixelMap[x][y].dieAfter = dieAfter;
|
||||||
|
}
|
||||||
|
currentLength++;
|
||||||
|
} else if (!isEmpty(x,y) && !outOfBounds(x,y)){
|
||||||
|
if(eLists.SOIL.includes(pixelMap[x][y].element)){
|
||||||
|
deletePixel(x,y);
|
||||||
|
let elem = (elems != undefined && elems[currentLength] != undefined) ? elems[currentLength] : (elems != undefined) ? elems[0] : "fruit_leaves";
|
||||||
|
createPixel((elem == "flower") ? "fruit_leaves" : elem, x, y);
|
||||||
|
pixelMap[x][y].noBloom = (elem == "flower") ? false : true;
|
||||||
|
pixelMap[x][y].blooming = (elem == "flower");
|
||||||
|
pixelMap[x][y].fruit = fruit;
|
||||||
|
if(elem == "fruit_leaves"){
|
||||||
|
pixelMap[x][y].dieAfter = dieAfter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentLength++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let x = pos[0]+pattern[currentLength][0], y = pos[1]+pattern[currentLength][1];
|
||||||
|
if(Math.random()<chance && isEmpty(x,y) && !outOfBounds(x,y) && !paused){
|
||||||
|
let elem = (elems != undefined && elems[currentLength] != undefined) ? elems[currentLength] : (elems != undefined) ? elems[0] : "fruit_leaves";
|
||||||
|
createPixel((elem == "flower") ? "fruit_leaves" : elem, x, y);
|
||||||
|
pixelMap[x][y].noBloom = (elem == "flower") ? false : true;
|
||||||
|
pixelMap[x][y].blooming = (elem == "flower");
|
||||||
|
pixelMap[x][y].fruit = fruit;
|
||||||
|
if(elem == "fruit_leaves"){
|
||||||
|
pixelMap[x][y].dieAfter = dieAfter;
|
||||||
|
}
|
||||||
|
currentLength++;
|
||||||
|
} else if (!isEmpty(x,y) && !outOfBounds(x,y)){
|
||||||
|
if(eLists.SOIL.includes(pixelMap[x][y].element)){
|
||||||
|
deletePixel(x,y);
|
||||||
|
let elem = (elems != undefined && elems[currentLength] != undefined) ? elems[currentLength] : (elems != undefined) ? elems[0] : "fruit_leaves";
|
||||||
|
createPixel((elem == "flower") ? "fruit_leaves" : elem, x, y);
|
||||||
|
pixelMap[x][y].noBloom = (elem == "flower") ? false : true;
|
||||||
|
pixelMap[x][y].blooming = (elem == "flower");
|
||||||
|
pixelMap[x][y].fruit = fruit;
|
||||||
|
if(elem == "fruit_leaves"){
|
||||||
|
pixelMap[x][y].dieAfter = dieAfter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentLength++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 1000/tps);
|
||||||
|
this.interval = interval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependOn("orchidslibrary.js", ()=>{
|
||||||
|
|
||||||
|
let flowerExclude = ["pineapple"];
|
||||||
|
let vineGrow = ["wood", "rock_wall", "straw", "wall", "ewall", "bush_cane", "bush_base", "fruit_branch"];
|
||||||
|
plants = {
|
||||||
|
tree: [],
|
||||||
|
vine: ["grape", "tomato"],
|
||||||
|
bush: [],
|
||||||
|
other: ["pineapple", "watermelon", "banana", "onion"],
|
||||||
|
includes: function(target){
|
||||||
|
for(item in this){
|
||||||
|
if(this[item] && Array.isArray(this[item]) && this[item].includes(target)){return true;}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
get all(){
|
||||||
|
let res = [];
|
||||||
|
for(let key in plants){
|
||||||
|
if(key != "all" && Array.isArray(plants[key])){
|
||||||
|
for(let plant of plants[key]){
|
||||||
|
res.push(plant);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let ethyleneChance = {
|
let ethyleneChance = {
|
||||||
tomato: 0.000055,
|
tomato: 0.000055,
|
||||||
orange: 0.000005,
|
orange: 0.000005,
|
||||||
|
|
@ -247,6 +307,8 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
type: "fruit",
|
type: "fruit",
|
||||||
};
|
};
|
||||||
isFood = true;
|
isFood = true;
|
||||||
|
tempHigh = 65;
|
||||||
|
stateHigh = ["sugar", "dead_plant", "dead_plant", "dead_plant"];
|
||||||
constructor(name, colour, jColour, type = "tree", sColour = false, extract = false, low = false){
|
constructor(name, colour, jColour, type = "tree", sColour = false, extract = false, low = false){
|
||||||
this.properties.fruit = name;
|
this.properties.fruit = name;
|
||||||
this.color = colour;
|
this.color = colour;
|
||||||
|
|
@ -483,6 +545,9 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
dir: [1,1],
|
dir: [1,1],
|
||||||
bloomColor: "#FFE2E2",
|
bloomColor: "#FFE2E2",
|
||||||
},
|
},
|
||||||
|
hoverStat: function(pixel){
|
||||||
|
return pixel?.fruit || "NONE";
|
||||||
|
},
|
||||||
tick: function(pixel){
|
tick: function(pixel){
|
||||||
if(pixel.dieAfter != undefined){
|
if(pixel.dieAfter != undefined){
|
||||||
let chance = (pixel.age-pixel.dieAfter)/150;
|
let chance = (pixel.age-pixel.dieAfter)/150;
|
||||||
|
|
@ -589,9 +654,19 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
if(pixelTicks > pixel.start + 150){
|
if(pixelTicks > pixel.start + 150){
|
||||||
if(Math.random() < chance){
|
if(Math.random() < chance){
|
||||||
if(pixel.fruit){
|
if(pixel.fruit){
|
||||||
if(pixel.fruit == "random"){
|
if(pixel.fruit == "randomfruit"){
|
||||||
changePixel(pixel, fruits[Math.floor(Math.random() * fruits.length)]);
|
all = plants.all;
|
||||||
} else {
|
let elem = all[Math.round(Math.random()*all.length)];
|
||||||
|
while(elem == undefined || elements[elem] == undefined){
|
||||||
|
elem = all[Math.round(Math.random()*all.length)]
|
||||||
|
}
|
||||||
|
changePixel(pixel, elem);
|
||||||
|
}
|
||||||
|
if (pixel.pattern && pixel.growthPattern == false) {
|
||||||
|
pixel.blooming = false;
|
||||||
|
pixel.growthPattern = true;
|
||||||
|
|
||||||
|
} else if(pixel.fruit != "randomfruit") {
|
||||||
let c = (pixel.offspringColor) ? pixel.offspringColor : undefined;
|
let c = (pixel.offspringColor) ? pixel.offspringColor : undefined;
|
||||||
changePixel(pixel, pixel.fruit);
|
changePixel(pixel, pixel.fruit);
|
||||||
if(c != undefined){
|
if(c != undefined){
|
||||||
|
|
@ -622,7 +697,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(pixel.growthStage < growthPatterns[pixel.pattern].length) {
|
} else if(pixel.growthStage < [pixel.pattern].length) {
|
||||||
let x = pixel.x+(value[0]*pixel.dir[0]), y = pixel.y+(value[1]*pixel.dir[1]);
|
let x = pixel.x+(value[0]*pixel.dir[0]), y = pixel.y+(value[1]*pixel.dir[1]);
|
||||||
if(isEmpty(x,y) && !outOfBounds(x,y)){
|
if(isEmpty(x,y) && !outOfBounds(x,y)){
|
||||||
if(growthElems[pixel.pattern][pixel.growthStage] == "flower"){
|
if(growthElems[pixel.pattern][pixel.growthStage] == "flower"){
|
||||||
|
|
@ -835,7 +910,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
for(let i = 0; i < squareCoords.length; i++){
|
for(let i = 0; i < squareCoords.length; i++){
|
||||||
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
||||||
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.005){
|
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.005){
|
||||||
colorMix(pixel, pixelMap[x][y]);
|
colorMix(pixel, pixelMap[x][y], 0.5, mixConditions.ifDifferent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -843,7 +918,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
for(let i = 0; i < squareCoords.length; i++){
|
for(let i = 0; i < squareCoords.length; i++){
|
||||||
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
||||||
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.5){
|
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.5){
|
||||||
colorMix(pixel, pixelMap[x][y]);
|
colorMix(pixel, pixelMap[x][y], 0.5, mixConditions.ifDifferent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -851,7 +926,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
for(let i = 0; i < squareCoords.length; i++){
|
for(let i = 0; i < squareCoords.length; i++){
|
||||||
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
||||||
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.005){
|
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.005){
|
||||||
colorMix(pixel, pixelMap[x][y]);
|
colorMix(pixel, pixelMap[x][y], 0.5, mixConditions.ifDifferent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -859,7 +934,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
for(let i = 0; i < squareCoords.length; i++){
|
for(let i = 0; i < squareCoords.length; i++){
|
||||||
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
let x = pixel.x+squareCoords[i][0], y = pixel.y+squareCoords[i][1];
|
||||||
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.5){
|
if(!isEmpty(x,y) && !outOfBounds(x,y) && pixelMap[x][y].element == pixel.element && Math.random() < 0.5){
|
||||||
colorMix(pixel, pixelMap[x][y]);
|
colorMix(pixel, pixelMap[x][y], 0.5, mixConditions.ifDifferent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -868,8 +943,8 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
let rgb = interpolateRgb(getRGB(p1.color), getRGB(p2.color), 0.25);
|
let rgb = interpolateRgb(getRGB(p1.color), getRGB(p2.color), 0.25);
|
||||||
changePixel(p1, "fruit_milk");
|
changePixel(p1, "fruit_milk");
|
||||||
changePixel(p2, "fruit_milk");
|
changePixel(p2, "fruit_milk");
|
||||||
p1.color = rgb;
|
p1.color = noiseify(rgb, 6);
|
||||||
p2.color = rgb;
|
p2.color = noiseify(rgb, 6);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
elements.juice.reactions.carbon_dioxide = { func: function(p1,p2){
|
elements.juice.reactions.carbon_dioxide = { func: function(p1,p2){
|
||||||
|
|
@ -1156,6 +1231,9 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elements.unripe_fruit = {
|
elements.unripe_fruit = {
|
||||||
|
desc: "Poisonous unripe fruit.",
|
||||||
|
tempHigh: 60,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
category: "life",
|
category: "life",
|
||||||
breakInto: ["poison", "sugar_water", "dirty_water"],
|
breakInto: ["poison", "sugar_water", "dirty_water"],
|
||||||
color: ["#7ed934", "#78d42c", "#7cdb2e", "#7bde2a"],
|
color: ["#7ed934", "#78d42c", "#7cdb2e", "#7bde2a"],
|
||||||
|
|
@ -1172,6 +1250,9 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elements.pineapple = {
|
elements.pineapple = {
|
||||||
|
tempHigh: 140,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
|
desc: "The multiple fruit of the Ananas Cosmosus plant, a bromeliad. Known for its acidity and sweet, tropical flavour, this fruit contains bromelain, an enzyme that can and will digest your mouth.",
|
||||||
category: "food",
|
category: "food",
|
||||||
breakInto: "juice",
|
breakInto: "juice",
|
||||||
bloomColor: ["#ff6682", "#ff6e88", "#ff6198", "#de73a5"],
|
bloomColor: ["#ff6682", "#ff6e88", "#ff6198", "#de73a5"],
|
||||||
|
|
@ -1180,6 +1261,9 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
isFood: true,
|
isFood: true,
|
||||||
}
|
}
|
||||||
elements.sugarcane = {
|
elements.sugarcane = {
|
||||||
|
desc: "The canes of Saccharum species, a member of the grass family. The stalks are rich in sucrose, so sugar can be extracted from it.",
|
||||||
|
tempHigh: 110,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
category: "life",
|
category: "life",
|
||||||
extract: "sugar_water",
|
extract: "sugar_water",
|
||||||
color: ["#60d10f", "#5abf11", "#66cc1d", "#78ed24"],
|
color: ["#60d10f", "#5abf11", "#66cc1d", "#78ed24"],
|
||||||
|
|
@ -1213,6 +1297,8 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elements.sugarcane_seed = {
|
elements.sugarcane_seed = {
|
||||||
|
tempHigh: 60,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
category: "life",
|
category: "life",
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
color: ["#f0e07a", "#e0d277", "#e3ca71", "#d9ba77"],
|
color: ["#f0e07a", "#e0d277", "#e3ca71", "#d9ba77"],
|
||||||
|
|
@ -1232,7 +1318,10 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
elements.watermelon = new fruit("watermelon", ["#0e6614", "#065c0c", "#03700b", "#109119", "#098f12"], ["#ff4242", "#ed2f2f", "#ff2e2e", "#ed2828"]);
|
elements.watermelon = new fruit("watermelon", ["#0e6614", "#065c0c", "#03700b", "#109119", "#098f12"], ["#ff4242", "#ed2f2f", "#ff2e2e", "#ed2828"]);
|
||||||
elements.watermelon.bloomColor = ["#e9ed11", "#f1f50a", "#fbff19", "#fbff29"];
|
elements.watermelon.bloomColor = ["#e9ed11", "#f1f50a", "#fbff19", "#fbff29"];
|
||||||
elements.watermelon.behavior = behaviors.WALL;
|
elements.watermelon.behavior = behaviors.WALL;
|
||||||
|
elements.watermelon.desc = "The berry of Citrullus Lanatus, though quite a sizeable one at that. A Cucurbit known for its watery but sweet flesh, making it a great summer treat.";
|
||||||
elements.watermelon_seed = {
|
elements.watermelon_seed = {
|
||||||
|
tempHigh: 60,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
color: ["#5e4a22", "#423417", "#241b0b", "#1f1709", "#120e05"],
|
color: ["#5e4a22", "#423417", "#241b0b", "#1f1709", "#120e05"],
|
||||||
category: "life",
|
category: "life",
|
||||||
|
|
@ -1265,6 +1354,8 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
elements.tomato.bloomColor = ["#edd93e", "#fae334", "#e6dc22", "#f5ec3d"];
|
elements.tomato.bloomColor = ["#edd93e", "#fae334", "#e6dc22", "#f5ec3d"];
|
||||||
elements.banana_seed = {
|
elements.banana_seed = {
|
||||||
|
tempHigh: 60,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
behavior: [['XX', 'XX', 'XX'],['XX', 'XX', 'XX'],['M2', 'M1 AND ST:wood', 'M2']],
|
behavior: [['XX', 'XX', 'XX'],['XX', 'XX', 'XX'],['M2', 'M1 AND ST:wood', 'M2']],
|
||||||
color: ["#121211", "#121211", "#0f0f0e", "#171716"],
|
color: ["#121211", "#121211", "#0f0f0e", "#171716"],
|
||||||
category: "life",
|
category: "life",
|
||||||
|
|
@ -1313,6 +1404,9 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
elements.dead_plant.behavior = [["XX","XX","XX"],["XX","CH:dirt%0.015","XX"],["M2","M1","M2"]];
|
elements.dead_plant.behavior = [["XX","XX","XX"],["XX","CH:dirt%0.015","XX"],["M2","M1","M2"]];
|
||||||
elements.banana = {
|
elements.banana = {
|
||||||
|
desc: "A berry produced by members of the Musa genus, although often referred to as palms, members of this genus are actually not in the palm family, Arecaceae.",
|
||||||
|
tempHigh: 110,
|
||||||
|
stateHigh: ["dead_plant","dead_plant","dead_plant","sugar"],
|
||||||
category: "food",
|
category: "food",
|
||||||
breakInto: "juice",
|
breakInto: "juice",
|
||||||
bloomColor: ["#6e2942", "#63293e", "#703249", "#82314f"],
|
bloomColor: ["#6e2942", "#63293e", "#703249", "#82314f"],
|
||||||
|
|
@ -1321,8 +1415,11 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
isFood: true,
|
isFood: true,
|
||||||
};
|
};
|
||||||
elements.coconut = {
|
elements.coconut = {
|
||||||
|
desc: "The fruit of the Cocos Nucifera palm, contains a watery beverage meny people like to drink and a solid fat.",
|
||||||
behavior: [['XX', 'XX', 'XX'],['XX', 'XX', 'XX'],['M2', 'M1 AND ST:wood', 'M2']],
|
behavior: [['XX', 'XX', 'XX'],['XX', 'XX', 'XX'],['M2', 'M1 AND ST:wood', 'M2']],
|
||||||
color: ["#291706", "#382007", "#2e1905", "#361d05", "#361e06"],
|
color: ["#291706", "#382007", "#2e1905", "#361d05", "#361e06"],
|
||||||
|
tempHigh: 70,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
category: "food",
|
category: "food",
|
||||||
properties: {
|
properties: {
|
||||||
age: 0,
|
age: 0,
|
||||||
|
|
@ -1377,6 +1474,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elements.coconut_oil = {
|
elements.coconut_oil = {
|
||||||
|
desc: "The fat derived from the flesh of the coconut, solid at room temperature.",
|
||||||
behavior: behaviors.SOLID,
|
behavior: behaviors.SOLID,
|
||||||
color: ["#f0efed", "#edeceb", "#e6e4e3", "#ebe9e8"],
|
color: ["#f0efed", "#edeceb", "#e6e4e3", "#ebe9e8"],
|
||||||
category: "food",
|
category: "food",
|
||||||
|
|
@ -1401,9 +1499,12 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
lye: {elem1: "soap", elem2: "soap"},
|
lye: {elem1: "soap", elem2: "soap"},
|
||||||
},
|
},
|
||||||
tempLow: 23,
|
tempLow: 23,
|
||||||
stateLow: "coconut_oil"
|
stateLow: "coconut_oil",
|
||||||
|
tempHigh: 200,
|
||||||
|
stateHigh: ["stench", "smoke","smoke","smoke","dioxin"]
|
||||||
}
|
}
|
||||||
elements.coconut_water = {
|
elements.coconut_water = {
|
||||||
|
desc: "The clear fluid found inside of young coconuts to sustain the endosperm during development.",
|
||||||
color: ["#8dd6d9", "#8cd9db", "#82d6d9"],
|
color: ["#8dd6d9", "#8cd9db", "#82d6d9"],
|
||||||
behavior: behaviors.LIQUID,
|
behavior: behaviors.LIQUID,
|
||||||
isFood: true,
|
isFood: true,
|
||||||
|
|
@ -1413,7 +1514,10 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
stateHigh: ["sugar", "steam", "steam", "steam", "potassium_salt", "salt", "epsom_salt", "steam", "steam", "steam"]
|
stateHigh: ["sugar", "steam", "steam", "steam", "potassium_salt", "salt", "epsom_salt", "steam", "steam", "steam"]
|
||||||
}
|
}
|
||||||
elements.morning_glory_seed = {
|
elements.morning_glory_seed = {
|
||||||
|
tempHigh: 50,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
behavior: behaviors.VINEFRUIT,
|
behavior: behaviors.VINEFRUIT,
|
||||||
|
desc: "Very proliferative and potentially invasive decorative vine.",
|
||||||
bloomColors: [["#f783f0", "#fa8cf3", "#fa96f3", "#f590ee"], ["#8d40f7", "#9a52ff", "#8041d9", "#7e3ade"], ["#ed5365", "#f0485b", "#f55b6d", "#eb3d51"], ["#f53d49", "#fa4652", "#f54e59", "#f23a46"], ["#f53d49", "#fa8cf3", "#f55b6d", "#f23a46"]],
|
bloomColors: [["#f783f0", "#fa8cf3", "#fa96f3", "#f590ee"], ["#8d40f7", "#9a52ff", "#8041d9", "#7e3ade"], ["#ed5365", "#f0485b", "#f55b6d", "#eb3d51"], ["#f53d49", "#fa4652", "#f54e59", "#f23a46"], ["#f53d49", "#fa8cf3", "#f55b6d", "#f23a46"]],
|
||||||
color: ["#5c5036", "#473e29", "#4f4631", "#fcf2b8"],
|
color: ["#5c5036", "#473e29", "#4f4631", "#fcf2b8"],
|
||||||
properties: {
|
properties: {
|
||||||
|
|
@ -1428,14 +1532,18 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
while(!Array.isArray(arr)){
|
while(!Array.isArray(arr)){
|
||||||
arr = elements.morning_glory_seed.bloomColors[Math.round(Math.random()*elements.morning_glory_seed.bloomColors.length)];
|
arr = elements.morning_glory_seed.bloomColors[Math.round(Math.random()*elements.morning_glory_seed.bloomColors.length)];
|
||||||
}
|
}
|
||||||
|
if(Math.random()<0.1){
|
||||||
|
arr = ["#FFE108", "#F0EC1F", "#FFD208", "#FFF754"];
|
||||||
|
}
|
||||||
let num = 100*(10**Math.random()/10);
|
let num = 100*(10**Math.random()/10);
|
||||||
let newArr = false;
|
let newArr = [];
|
||||||
for(let item of arr){
|
for(let item of arr){
|
||||||
let o = item;
|
let o = item;
|
||||||
let rgb = hexToRGB(item);
|
let rgb = hexToRGB(item);
|
||||||
let newRGB = {r: Math.min(255, rgb.r+num), g: Math.min(255, rgb.g+num), b: Math.min(255, rgb.b+num)};
|
let newRGB = {r: Math.min(255, rgb.r+num), g: Math.min(255, rgb.g+num), b: Math.min(255, rgb.b+num)};
|
||||||
newArr = [];
|
//newArr = [];
|
||||||
newArr[arr.indexOf(item)] = RGBToHex(newRGB);
|
newArr.push(RGBToHex(newRGB));
|
||||||
|
//console.log(newRGB);
|
||||||
|
|
||||||
}
|
}
|
||||||
pixel.bloomColor = (newArr) ? newArr : arr;
|
pixel.bloomColor = (newArr) ? newArr : arr;
|
||||||
|
|
@ -1450,6 +1558,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
elements.apricot_seed.tempHigh = 175;
|
elements.apricot_seed.tempHigh = 175;
|
||||||
elements.apricot_seed.stateHigh = "almond";
|
elements.apricot_seed.stateHigh = "almond";
|
||||||
elements.almond = {
|
elements.almond = {
|
||||||
|
desc: "The roasted pit of a prune closely related to apricots.",
|
||||||
color: ["#ab9450", "#b3994d", "#a18943", "#a18c43", "#a18d47"],
|
color: ["#ab9450", "#b3994d", "#a18943", "#a18c43", "#a18d47"],
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
@ -1470,6 +1579,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elements.almond_extract = {
|
elements.almond_extract = {
|
||||||
|
desc: "Benzaldehyde-rich extracts of prunes, while called \"almond extract,\" it is often made using cherry pits.",
|
||||||
color: ["#cfccbe", "#d6d4c7", "#c9c7bb", "#ccc9b8"],
|
color: ["#cfccbe", "#d6d4c7", "#c9c7bb", "#ccc9b8"],
|
||||||
behavior: behaviors.LIQUID,
|
behavior: behaviors.LIQUID,
|
||||||
isFood: true,
|
isFood: true,
|
||||||
|
|
@ -1497,9 +1607,13 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
}
|
}
|
||||||
|
|
||||||
elements.onion = {
|
elements.onion = {
|
||||||
|
desc: "A lilioid monocot of the Ammarylidaceae family in the asparagales order, commonly used in flavouring savoury dishes.",
|
||||||
|
tempHigh: 110,
|
||||||
|
stateHigh: "dead_plant",
|
||||||
category: "food",
|
category: "food",
|
||||||
color: ["#dbaa5a", "#cc9b4b", "#bd9048", "#faebb4", "#fcf5d9", "#f2e9c7", "#7d2d50", "#ad3d6e", "#c25182"],
|
color: ["#dbaa5a", "#cc9b4b", "#bd9048", "#faebb4", "#fcf5d9", "#f2e9c7", "#7d2d50", "#ad3d6e", "#c25182"],
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
|
||||||
properties: {
|
properties: {
|
||||||
age: 0,
|
age: 0,
|
||||||
sprouted: null,
|
sprouted: null,
|
||||||
|
|
@ -1558,6 +1672,8 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
color: ["#0f0f0f", "#0f0f0f", "#0a0a0a", "#0a0a0a"],
|
color: ["#0f0f0f", "#0f0f0f", "#0a0a0a", "#0a0a0a"],
|
||||||
category: "life",
|
category: "life",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
|
stateHigh: "dead_plant",
|
||||||
|
tempHigh: 70,
|
||||||
tick: function(pixel){
|
tick: function(pixel){
|
||||||
let inDirt = (getPixel(pixel.x,pixel.y+1) != null && eLists.SOIL.includes(pixelMap[pixel.x][pixel.y+1].element)) ? true : false;
|
let inDirt = (getPixel(pixel.x,pixel.y+1) != null && eLists.SOIL.includes(pixelMap[pixel.x][pixel.y+1].element)) ? true : false;
|
||||||
for(let coords of adjacentCoords){
|
for(let coords of adjacentCoords){
|
||||||
|
|
@ -1575,6 +1691,7 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
elements.grape.reactions.sugar_water = {elem2: "wine", chance: 0.0006};
|
elements.grape.reactions.sugar_water = {elem2: "wine", chance: 0.0006};
|
||||||
elements.grape.reactions.water = {elem2: "wine", chance: 0.00006};
|
elements.grape.reactions.water = {elem2: "wine", chance: 0.00006};
|
||||||
elements.wine = {
|
elements.wine = {
|
||||||
|
desc: "Fermented juice, can be fermented with naturally ocurring yeast on the outside of many fruits or from lab grown yeast.",
|
||||||
density: 992,
|
density: 992,
|
||||||
color: ["#381b30", "#402137", "#261321", "#38192f"],
|
color: ["#381b30", "#402137", "#261321", "#38192f"],
|
||||||
behavior: behaviors.LIQUID,
|
behavior: behaviors.LIQUID,
|
||||||
|
|
@ -1614,3 +1731,4 @@ dependOn("orchidslibrary.js", ()=>{
|
||||||
|
|
||||||
|
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue