379 lines
11 KiB
JavaScript
379 lines
11 KiB
JavaScript
goldObject = {
|
|
gold: 1,
|
|
gold_coin: 1,
|
|
gold_fairy: 3
|
|
};
|
|
|
|
goldObjectNameArray = Object.keys(goldObject);
|
|
|
|
urlParams = new URLSearchParams(window.location.search);
|
|
|
|
if(urlParams.get('goldFairyAmount') != null) { //null check
|
|
goldFairyAmount = urlParams.get('goldFairyAmount')
|
|
if(isNaN(goldFairyAmount) || goldFairyAmount === "" || goldFairyAmount === null) { //NaN check
|
|
goldFairyAmount = 10
|
|
}
|
|
goldFairyAmount = parseInt(goldFairyAmount)
|
|
if(goldFairyAmount > 10000) {
|
|
alert("Maximum amount of additional gold fairies is 10000.\nOnly 10000 fairies were added.")
|
|
} else if(goldFairyAmount < 1) {
|
|
alert("Minimum amount of additional gold fairies is 1.\n1 fairy was added.")
|
|
}
|
|
goldFairyAmount = Math.min(10000,Math.max(goldFairyAmount,1))
|
|
} else {
|
|
goldFairyAmount = 10
|
|
}
|
|
|
|
elements.cell_1 = {
|
|
color: ["#bbee00","#eeee00","#cfee00"],
|
|
behavior: [
|
|
"XX|CL%0.5|XX",
|
|
"CL%0.5|HT:1%2|CL%0.5",
|
|
"M2%10|M1|M2%10",
|
|
],
|
|
uwu: 0,
|
|
properties: {
|
|
uwu: 0
|
|
},
|
|
tick: function(pixel) {
|
|
pixel.uwu = 0;
|
|
for (let i = -1; i < 2; i++) { //neighbor count
|
|
for (let j = -1; j < 2; 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; //exclude self
|
|
|
|
var tempGrowthDecrease = null;
|
|
if(pixel.temp < 70) {
|
|
tempGrowthDecrease = 0;
|
|
} else if(pixel.temp > 100) {
|
|
tempGrowthDecrease = 70;
|
|
} else {
|
|
tempGrowthDecrease = pixel.temp - 70;
|
|
}
|
|
|
|
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
|
uwu = 0;
|
|
} else {
|
|
var tempGain = pixel.uwu / 48;
|
|
var chanceGain = pixel.uwu / 96;
|
|
};
|
|
if(Math.random() < ( (2 + chanceGain) - (tempGrowthDecrease / 30) )) {
|
|
pixel.temp += tempGain;
|
|
};
|
|
},
|
|
reactions: {
|
|
"infection": { "elem1":"cancer", "chance":0.01 },
|
|
"blood": { "elem1":"blood", "chance":0.01 },
|
|
"antibody": { "elem1":"antibody", "chance":0.01 },
|
|
"sugar": { "elem2":"cell", "chance":0.03 },
|
|
"sugar_water": { "elem2":"cell", "chance":0.04 },
|
|
"alcohol": { "elem1":[null,"dna"], "chance":0.02 },
|
|
"poison": { "elem1":null, "chance":0.02 },
|
|
"oxygen": { "elem2":"carbon_dioxide", "chance":0.05 },
|
|
"ammonia": { "elem2":"nitrogen", "chance":0.05 },
|
|
},
|
|
tempHigh: 122,
|
|
stateHigh: "steam",
|
|
tempLow: -6,
|
|
stateLow: "ice",
|
|
state: "solid",
|
|
density: 1000.2,
|
|
category: "life",
|
|
breakInto: ["water","dna","dna","dna"]
|
|
};
|
|
|
|
elements.cell_2 = {
|
|
color: ["#32280b","#5a4711","#87660c"],
|
|
behavior: [
|
|
"XX|CL%1.8|XX",
|
|
"CL%1.8|XX|CL%1.8",
|
|
"M2%5|M1|M2%5",
|
|
],
|
|
reactions: {
|
|
"cancer": { "elem2":"cell_2", "chance":0.035 },
|
|
"cell": { "elem2":"cell_2", "chance":0.001 },
|
|
"frog": { "elem2":"cell_2", "chance":0.001 },
|
|
"fish": { "elem2":"cell_2", "chance":0.001 },
|
|
"rat": { "elem2":"cell_2", "chance":0.001 },
|
|
"bird": { "elem2":"cell_2", "chance":0.001 },
|
|
"sugar": { "elem2":"cell_2", "chance":0.035 },
|
|
"sugar_water": { "elem2":"cell_2", "chance":0.045 },
|
|
"alcohol": { "elem1":[null,"dna"], "chance":0.012 },
|
|
"poison": { "elem1":[null,null,"poison","poison","poison","dna","dirty_water"], "chance":0.03 },
|
|
"proton": { "elem1":[null,"cancer"], "chance":0.04 },
|
|
},
|
|
tempHigh: 80,
|
|
stateHigh: ["steam","plague"],
|
|
state: "solid",
|
|
density: 1000.17,
|
|
category: "life",
|
|
breakInto: ["dirty_water","dna","dna","dna","dna"]
|
|
};
|
|
|
|
elements.cell_3 = {
|
|
color: ["#bbee00","#eeee00","#cfee00"],
|
|
behavior: [
|
|
"XX|CL%0.5|XX",
|
|
"CL%0.5|HT:1%2|CL%0.5",
|
|
"M2%10|M1|M2%10",
|
|
],
|
|
uwu: 0,
|
|
properties: {
|
|
uwu: 0
|
|
},
|
|
tick: function(pixel) {
|
|
pixel.uwu = 0;
|
|
for (let i = -1; i < 2; i++) { //neighbor count
|
|
for (let j = -1; j < 2; 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; //exclude self
|
|
|
|
var tempGrowthDecrease = null;
|
|
if(pixel.temp < 70) {
|
|
tempGrowthDecrease = 0;
|
|
} else if(pixel.temp > 100) {
|
|
tempGrowthDecrease = 70;
|
|
} else {
|
|
tempGrowthDecrease = pixel.temp - 70;
|
|
}
|
|
|
|
if(pixel.uwu == undefined || pixel.uwu == null || isNaN(pixel.uwu)) {
|
|
uwu = 0;
|
|
} else {
|
|
var tempGain = pixel.uwu / 48;
|
|
var chanceGain = pixel.uwu / 96;
|
|
};
|
|
if(Math.random() < ( (2 + chanceGain) - (tempGrowthDecrease / 30) )) {
|
|
pixel.temp += tempGain;
|
|
};
|
|
},
|
|
reactions: {
|
|
"infection": { "elem1":"cancer", "chance":0.01 },
|
|
"blood": { "elem1":"blood", "chance":0.01 },
|
|
"antibody": { "elem1":"antibody", "chance":0.01 },
|
|
"sugar": { "elem2":"cell", "chance":0.03 },
|
|
"sugar_water": { "elem2":"cell", "chance":0.04 },
|
|
"alcohol": { "elem1":[null,"dna"], "chance":0.02 },
|
|
"poison": { "elem1":null, "chance":0.02 },
|
|
"oxygen": { "elem2":"carbon_dioxide", "chance":0.05 },
|
|
"ammonia": { "elem2":"nitrogen", "chance":0.05 },
|
|
},
|
|
tempHigh: 122,
|
|
stateHigh: "steam",
|
|
tempLow: -6,
|
|
stateLow: "ice",
|
|
state: "solid",
|
|
density: 1000.2,
|
|
category: "life",
|
|
breakInto: ["water","dna","dna","dna"]
|
|
};
|
|
|
|
elements.cell_3 = {
|
|
color: ["#eeee00","#eecc00","#dddd00"],
|
|
behavior: [
|
|
"XX|CL%0|XX", //CL%0 for display purposes
|
|
"CL%0|XX|CL%0",
|
|
"M2%10|M1|M2%10",
|
|
],
|
|
reactions: {
|
|
"infection": { "elem1":"cancer", "chance":0.01 },
|
|
"blood": { "elem1":"blood", "chance":0.01 },
|
|
"antibody": { "elem1":"antibody", "chance":0.01 },
|
|
"sugar": { "elem2":"cell", "chance":0.03 },
|
|
"sugar_water": { "elem2":"cell", "chance":0.04 },
|
|
"alcohol": { "elem1":[null,"dna"], "chance":0.02 },
|
|
"poison": { "elem1":null, "chance":0.02 },
|
|
"oxygen": { "elem2":"carbon_dioxide", "chance":0.05 },
|
|
"ammonia": { "elem2":"nitrogen", "chance":0.05 },
|
|
},
|
|
tempHigh: 102,
|
|
stateHigh: "steam",
|
|
tempLow: -2,
|
|
stateLow: "ice",
|
|
state: "solid",
|
|
density: 1000.1,
|
|
category: "life",
|
|
breakInto: ["water","dna","dna","dna"],
|
|
gold: 0,
|
|
properties: {
|
|
gold: 0
|
|
},
|
|
tick: function(pixel) {
|
|
var pX = pixel.x
|
|
var pY = pixel.y
|
|
var baseEatRate = 1;
|
|
var eatRate = baseEatRate + (2 * pixel.gold * 0.01);
|
|
if(Math.random() < eatRate/100) {
|
|
var randomNeighborNumber = Math.floor(Math.random() * 4)
|
|
var oX = adjacentCoords[randomNeighborNumber][0];
|
|
var oY = adjacentCoords[randomNeighborNumber][1];
|
|
var checkPosX = pX+oX;
|
|
var checkPosY = pY+oY;
|
|
|
|
if(!isEmpty(checkPosX,checkPosY,true)) {
|
|
if(goldObjectNameArray.includes(pixelMap[checkPosX][checkPosY].element)) {
|
|
pixel.gold += goldObject[pixelMap[checkPosX][checkPosY].element];
|
|
deletePixel(checkPosX,checkPosY);
|
|
};
|
|
};
|
|
};
|
|
|
|
var baseGrowthRate = 0.5;
|
|
var growthRate = baseGrowthRate + (pixel.gold * 0.025);
|
|
|
|
if(pixel.gold > 150) {
|
|
var chance = (pixel.gold - 150) / 20
|
|
var baseRadius = 10
|
|
var radius = Math.max(20,Math.round((baseRadius + (pixel.gold / 25))))
|
|
if(Math.random() < (chance / 100)) {
|
|
explodeAt(pX,pY,10,"gold_coin");
|
|
};
|
|
};
|
|
|
|
if(Math.random() < growthRate/100) {
|
|
var randomNeighborNumber = Math.floor(Math.random() * 4)
|
|
var oX = adjacentCoords[randomNeighborNumber][0];
|
|
var oY = adjacentCoords[randomNeighborNumber][1];
|
|
var checkPosX = pX+oX;
|
|
var checkPosY = pY+oY;
|
|
|
|
if(isEmpty(checkPosX,checkPosY,false)) {
|
|
var halfGold1 = pixel.gold / 2;
|
|
var halfGold2 = pixel.gold / 2;
|
|
if(halfGold1 % 1 == 0.5) {
|
|
halfGold1 = Math.ceil(halfGold1);
|
|
halfGold2 = Math.floor(halfGold2);
|
|
};
|
|
createPixel(pixel.element,checkPosX,checkPosY);
|
|
newPixel = pixelMap[checkPosX][checkPosY];
|
|
pixel.gold = halfGold1;
|
|
newPixel.gold = halfGold2;
|
|
};
|
|
};
|
|
|
|
},
|
|
reactions: {
|
|
"infection": { "elem1":"cancer", "chance":0.01 },
|
|
"blood": { "elem1":"blood", "chance":0.01 },
|
|
"antibody": { "elem1":"antibody", "chance":0.01 },
|
|
"sugar": { "elem2":"cell", "chance":0.03 },
|
|
"sugar_water": { "elem2":"cell", "chance":0.04 },
|
|
"alcohol": { "elem1":[null,"dna"], "chance":0.02 },
|
|
"poison": { "elem1":null, "chance":0.02 },
|
|
"oxygen": { "elem2":"carbon_dioxide", "chance":0.05 },
|
|
"ammonia": { "elem2":"nitrogen", "chance":0.05 },
|
|
},
|
|
tempHigh: 122,
|
|
stateHigh: "steam",
|
|
tempLow: -6,
|
|
stateLow: "ice",
|
|
state: "solid",
|
|
density: 1000.2,
|
|
category: "life",
|
|
breakInto: ["water","dna","dna","dna"]
|
|
};
|
|
|
|
if(enabledMods.includes("mods/fey_and_more.js")) {
|
|
|
|
elements.gold_fairy = {
|
|
name: "gold fairy",
|
|
color: ["#cfa65b","#e6df63","#faf673"],
|
|
behavior: [
|
|
"XX|M1|M1",
|
|
"XX|FX%5|XX",
|
|
"XX|CR:gold_coin%0.25 AND CR:fairy_dust%0.005 AND M1|M1",
|
|
],
|
|
state: "solid",
|
|
category: "fey"
|
|
};
|
|
|
|
elements.fairy.reactions.gold = { elem1: "gold_fairy", "elem2": null };
|
|
elements.fairy.reactions.gold_coin = { elem1: "gold_fairy", "elem2": null };
|
|
if(!elements.gold.reactions) {
|
|
elements.gold.reactions = {};
|
|
};
|
|
if(!elements.gold_coin.reactions) {
|
|
elements.gold_coin.reactions = {};
|
|
};
|
|
elements.gold.reactions.fairy = { elem1: null, elem2: "gold_fairy" };
|
|
elements.gold_coin.reactions.fairy = { elem1: null, elem2: "gold_fairy" };
|
|
|
|
for (var i = 2; i <= goldFairyAmount + 1; i++) {
|
|
nameVar = `gold_${i-1}-fairy`
|
|
if(i === 2) {
|
|
nameVar = "gold_fairy";
|
|
};
|
|
elements[`gold_${i}-fairy`] = {
|
|
name: `gold_${i}-fairy`,
|
|
color: ["#cfa65b","#e6df63","#faf673"],
|
|
behavior: [
|
|
"XX|M1|M1",
|
|
"XX|FX%5|XX",
|
|
"XX|CR:" + nameVar + "%0.25 AND CR:fairy_dust%0.005 AND M1|M1",
|
|
],
|
|
reactions: {
|
|
"glitter": { "elem1": `gold_${i+1}-fairy`, "elem2": null }
|
|
},
|
|
state: "solid",
|
|
excludeRandom:true,
|
|
category: "fey",
|
|
hidden: true,
|
|
}
|
|
goldObject[`gold_${i}-fairy`] = 3 * i;
|
|
if (i == goldFairyAmount) { elements[`gold_${i}-fairy`]["reactions"] = {}; }
|
|
}
|
|
|
|
};
|
|
|
|
runAfterLoad(function() {
|
|
if(enabledMods.includes("mods/fey_and_more.js")) {
|
|
//eList rebuilding {
|
|
eLists.FAIRY.push("gold_fairy");
|
|
for (var i = 2; i <= goldFairyAmount + 1; i++) {
|
|
eLists.FAIRY.push(`gold_${i}-fairy`);
|
|
}
|
|
elements.iron.behavior = [
|
|
"XX|DL:"+eLists.FAIRY+"|XX",
|
|
"DL:"+eLists.FAIRY+"|XX|DL:"+eLists.FAIRY+"",
|
|
"XX|DL:"+eLists.FAIRY+"|XX"
|
|
];
|
|
elements.silver.behavior = [
|
|
"XX|DL:"+eLists.FAIRY+"|XX",
|
|
"DL:"+eLists.FAIRY+"|XX|DL:"+eLists.FAIRY+"",
|
|
"XX|DL:"+eLists.FAIRY+"|XX"
|
|
];
|
|
//}
|
|
goldObjectNameArray = Object.keys(goldObject);
|
|
};
|
|
if(enabledMods.includes("mods/fey_and_more.js") && enabledMods.includes("mods/randomness.js")) {
|
|
if(elements.tungstensteel && elements.molten_tungstensteel) {
|
|
elements.tungstensteel.behavior = [
|
|
"XX|DL:"+eLists.FAIRY+"|XX",
|
|
"DL:"+eLists.FAIRY+"|XX|DL:"+eLists.FAIRY+"",
|
|
"XX|DL:"+eLists.FAIRY+"|XX",
|
|
],
|
|
elements.molten_tungstensteel.behavior = [
|
|
"XX|DL:"+eLists.FAIRY+" AND CR:fire%2.5|XX",
|
|
"DL:"+eLists.FAIRY+" AND M2|XX|DL:"+eLists.FAIRY+" AND M2",
|
|
"M1|DL:"+eLists.FAIRY+"|M1",
|
|
]
|
|
}
|
|
};
|
|
if(!elements.rainbow.reactions) {
|
|
elements.rainbow.reactions = {}
|
|
}
|
|
elements.rainbow.reactions.gold_fairy = { "elem1": "gold_2-fairy", "elem2": null }
|
|
});
|