Merge branch 'main' of https://github.com/JustAGenericUsername/sandboxelsmodding
This commit is contained in:
commit
c068b50e7a
|
|
@ -1 +1,10 @@
|
||||||
Contributions to the main index.html file will be ignored. Use this repository to officially publish your Sandboxels mods.
|
Contributions to the main index.html file will be ignored. Use this repository to officially publish your Sandboxels mods.
|
||||||
|
|
||||||
|
Rules for publishing mods:
|
||||||
|
1. Must not focus on something NSFW or illegal.
|
||||||
|
2. Must be tested beforehand on your own. This repo does not accept mods for the sole purpose of you testing them.
|
||||||
|
3. Must contain some meaningful content.
|
||||||
|
|
||||||
|
Failure to follow these rules may result in your pull request being ignored!
|
||||||
|
|
||||||
|
Learn more about [submitting your mod](https://sandboxels.wiki.gg/wiki/Modding_tutorial#Putting_it_online).
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
Controls for Sandboxels are listed underneath [the game](https://sandboxels.R74n.com).
|
Controls for Sandboxels are listed underneath [the game](https://sandboxels.R74n.com).
|
||||||
|
|
||||||
Join our [Discord server](https://discord.gg/ejUc6YPQuS) for support, suggestions, or bug reports.
|
Use the [feedback form](https://sandboxels.r74n.com/feedback) linked under the game for suggestions or bug reports. You can also join our [Discord server](https://discord.gg/ejUc6YPQuS) for support and everything else.
|
||||||
|
|
||||||
You can also report issues on this GitHub repository [here](https://github.com/R74nCom/sandboxels/issues).
|
This isn't preferred, but you can also report issues on this GitHub repository [here](https://github.com/R74nCom/sandboxels/issues).
|
||||||
|
|
||||||
For help with creating mods, there's a channel on the Discord for that!
|
For help with creating mods, read the [Modding Tutorial](https://sandboxels.wiki.gg/wiki/Modding_tutorial).
|
||||||
|
|
||||||
For help with specific mods, the mod's creator is likely in the Discord. Ask around and you'll be directed to them.
|
For help with specific mods, the mod's creator is likely in the Discord. Ask around and you'll be directed to them.
|
||||||
|
|
|
||||||
|
|
@ -272,6 +272,8 @@
|
||||||
<tr><td>heatglow.js</td><td>Red glowing effect for hot metals</td><td>nousernamefound</td></tr>
|
<tr><td>heatglow.js</td><td>Red glowing effect for hot metals</td><td>nousernamefound</td></tr>
|
||||||
<tr><td>invisible_dye.js</td><td>Adds elements like Dye and Spray Paint that take the color of the background</td><td>Alice</td></tr>
|
<tr><td>invisible_dye.js</td><td>Adds elements like Dye and Spray Paint that take the color of the background</td><td>Alice</td></tr>
|
||||||
<tr><td>invisible_wall.js</td><td>Adds an element like Wall that takes the color of the background</td><td>Alice</td></tr>
|
<tr><td>invisible_wall.js</td><td>Adds an element like Wall that takes the color of the background</td><td>Alice</td></tr>
|
||||||
|
<tr><td>moreViews.js</td><td>Many new rendering modes</td><td>ggod</td></tr>
|
||||||
|
<tr><td>onecolor.js</td><td>Makes all placed pixels single-colored</td><td>nousernamefound</td></tr>
|
||||||
<tr><td>paint_event.js</td><td>Adds a random event that randomly paints a circle</td><td>Alice</td></tr>
|
<tr><td>paint_event.js</td><td>Adds a random event that randomly paints a circle</td><td>Alice</td></tr>
|
||||||
<tr><td>rainbow_tests.js</td><td>Adds variants of the rainbow element with different maths</td><td>Alice</td></tr>
|
<tr><td>rainbow_tests.js</td><td>Adds variants of the rainbow element with different maths</td><td>Alice</td></tr>
|
||||||
<tr><td>Shroomboxels.js</td><td>A variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr>
|
<tr><td>Shroomboxels.js</td><td>A variant of acid_and_shapes.js that uses a different trigonometric function</td><td>Alice</td></tr>
|
||||||
|
|
|
||||||
1053
mods/aChefsDream.js
1053
mods/aChefsDream.js
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,416 @@
|
||||||
|
elements.primer_up = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 100,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 5,
|
||||||
|
pushStrength: 100,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 10;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 100;
|
||||||
|
pixel.pushStrength ??= 100;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x, pixel.y - 1 - i, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x][pixel.y - 1 - i], pixel.x, pixel.y - 2 - i);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.primer_down = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 100,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 5,
|
||||||
|
pushStrength: 100,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 10;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 100;
|
||||||
|
pixel.pushStrength ??= 100;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x, pixel.y + 1 + i, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x][pixel.y + 1 + i], pixel.x, pixel.y + 2 + i);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.primer_right = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 100,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 5,
|
||||||
|
pushStrength: 100,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 10;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 100;
|
||||||
|
pixel.pushStrength ??= 100;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x + 1 + i, pixel.y, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x + 1 + i][pixel.y], pixel.x + 2 + i, pixel.y);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.primer_left = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 100,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 5,
|
||||||
|
pushStrength: 100,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 10;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 100;
|
||||||
|
pixel.pushStrength ??= 100;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x - 1 - i, pixel.y, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x - 1 - i][pixel.y], pixel.x - 2 - i, pixel.y);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
}
|
||||||
|
elements.kerosene = {
|
||||||
|
color: "#b3b38b",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|CH:fire|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
conduct: 0.09,
|
||||||
|
tick: function (pixel) {
|
||||||
|
if (pixel.temp > 220 && !pixel.burning) {
|
||||||
|
pixel.burning = true;
|
||||||
|
pixel.burnStart = pixelTicks;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reactions: {
|
||||||
|
"glue": { elem2: null, chance: 0.05 },
|
||||||
|
"wax": { elem2: null, chance: 0.005 },
|
||||||
|
"melted_wax": { elem2: null, chance: 0.025 },
|
||||||
|
},
|
||||||
|
category: "liquids",
|
||||||
|
tempHigh: 2100,
|
||||||
|
stateHigh: "fire",
|
||||||
|
burn: 95,
|
||||||
|
burnTime: 2000,
|
||||||
|
burnInto: ["carbon_dioxide", "fire"],
|
||||||
|
viscosity: 3,
|
||||||
|
state: "liquid",
|
||||||
|
density: 850
|
||||||
|
}
|
||||||
|
if (!elements.hydrogen.reactions) elements.hydrogen.reactions = {};
|
||||||
|
elements.hydrogen.reactions.oxygen = { elem1: "kerosene", elem2: null }
|
||||||
|
elements.combustion_sesor = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
color: "#C70039",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.insulation_powder= {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
color: "#00FFFF",
|
||||||
|
category: "powders",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
insulate: true,
|
||||||
|
};
|
||||||
|
elements.conductive_insulation_powder = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
color: "#FFFF00",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "powders",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
insulate: true,
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.engine_up = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 25,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 2.5,
|
||||||
|
pushStrength: 100,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 5;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 25;
|
||||||
|
pixel.pushStrength ??= 25;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x, pixel.y - 1 - i, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x][pixel.y - 1 - i], pixel.x, pixel.y - 2 - i);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.engine_down = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 25,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 2.5,
|
||||||
|
pushStrength: 100,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 5;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 25;
|
||||||
|
pixel.pushStrength ??= 25;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x, pixel.y + 1 + i, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x][pixel.y + 1 + i], pixel.x, pixel.y + 2 + i);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.engine_right = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 25,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 2.5,
|
||||||
|
pushStrength: 25,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 5;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 25;
|
||||||
|
pixel.pushStrength ??= 25;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x + 1 + i, pixel.y, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x + 1 + i][pixel.y], pixel.x + 2 + i, pixel.y);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
elements.engine_left = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"fire": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
range: 25,
|
||||||
|
pushTime: 0,
|
||||||
|
pushLength: 2.5,
|
||||||
|
pushStrength: 25,
|
||||||
|
},
|
||||||
|
tick: function (pixel) {
|
||||||
|
pixel.range ??= 5;
|
||||||
|
pixel.pushTime ??= 0;
|
||||||
|
pixel.pushLength ??= 25;
|
||||||
|
pixel.pushStrength ??= 25;
|
||||||
|
if (isNaN(pixel.pushTime) || pixel.pushTime < 0) { pixel.pushTime = 0 };
|
||||||
|
|
||||||
|
if (pixel.charge) {
|
||||||
|
pixel.pushTime = pixel.pushLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (pixel.pushTime > 0) {
|
||||||
|
for (h = 0; h < pixel.pushStrength; h++) {
|
||||||
|
for (i = (pixel.range - 1); i >= 0; i--) {
|
||||||
|
if (!isEmpty(pixel.x - 1 - i, pixel.y, true)) {
|
||||||
|
tryMove(pixelMap[pixel.x - 1 - i][pixel.y], pixel.x - 2 - i, pixel.y);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pixel.pushTime--;
|
||||||
|
};
|
||||||
|
|
||||||
|
doDefaults(pixel);
|
||||||
|
},
|
||||||
|
color: "#c0c0c0",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
}
|
||||||
|
elements.steam_sesor = {
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
reactions: {
|
||||||
|
"steam": { "charge1": 1 }
|
||||||
|
},
|
||||||
|
color: "#0000FF",
|
||||||
|
colorOn: "#ffffff",
|
||||||
|
category: "machines",
|
||||||
|
tempHigh: 1500,
|
||||||
|
stateHigh: "molten_glass",
|
||||||
|
conduct: 1
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
elements.dog_food = {
|
||||||
|
color: ["#402101", "#1f1001", "#2e1701", "#2b1601", "#261604"],
|
||||||
|
behavior: behaviors.STURDYPOWDER,
|
||||||
|
category: "food",
|
||||||
|
state: "solid",
|
||||||
|
tempHigh: 500,
|
||||||
|
stateHigh: "ash",
|
||||||
|
isFood: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.ice_cube = {
|
||||||
|
color: ["#ccf4ff", "#c6e3f5", "#b6d1f2",],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|M1|XX"
|
||||||
|
],
|
||||||
|
category: "food",
|
||||||
|
state: "solid",
|
||||||
|
temp: -5,
|
||||||
|
tempHigh: 0,
|
||||||
|
stateHigh: "water",
|
||||||
|
isFood: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.dog_with_rabies = {
|
||||||
|
color: ["#c7a950", "#f7f6eb", "#152617", "#665d20", "#454420" ],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2%25|LB:foam%25|M2%25",
|
||||||
|
"M2|M1|M2"
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"meat": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"egg": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"yolk": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"cheese": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"ice_cube": {elem2:null, chance:0.8, func:behaviors.FEEDPIXEL },
|
||||||
|
"cooked_meat": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"chocolate": {elem2:null, chance: 0.2, func:behaviors.FEEDPIXEL, elem1: "rotten_meat"},
|
||||||
|
"grape": {elem2:null, chance: 0.2, func:behaviors.FEEDPIXEL, elem1: "rotten_meat"},
|
||||||
|
"rat": {elem2:null, chance: 0.3, func:behaviors.FEEDPIXEL },
|
||||||
|
"dog_food": {elem2:null, chance: 0.8, func:behaviors.FEEDPIXEL },
|
||||||
|
"nut_butter": {elem2:null, chance: 0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
},
|
||||||
|
category:"life",
|
||||||
|
state:"solid",
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "cooked_meat",
|
||||||
|
breakInto: "rotten_meat",
|
||||||
|
tempLow: -20,
|
||||||
|
stateLow: "frozen_meat",
|
||||||
|
hidden: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.dog = {
|
||||||
|
color: ["c78950", "#ffffff", "#262524", "#664120", "#453120" ],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M2%7|XX|M2%7",
|
||||||
|
"M2|M1|M2"
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"meat": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"egg": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"yolk": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"cheese": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"ice_cube": {elem2:null, chance:0.8, func:behaviors.FEEDPIXEL },
|
||||||
|
"cooked_meat": {elem2:null, chance:0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"chocolate": {elem2:null, chance: 0.2, func:behaviors.FEEDPIXEL, elem1: "rotten_meat"},
|
||||||
|
"grape": {elem2:null, chance: 0.2, func:behaviors.FEEDPIXEL, elem1: "rotten_meat"},
|
||||||
|
"rat": {elem2:null, chance: 0.3, func:behaviors.FEEDPIXEL },
|
||||||
|
"dog_food": {elem2:null, chance: 0.8, func:behaviors.FEEDPIXEL },
|
||||||
|
"nut_butter": {elem2:null, chance: 0.5, func:behaviors.FEEDPIXEL },
|
||||||
|
"infection": {elem1:"dog_with_rabies", chance:0.4 },
|
||||||
|
"dog_with_rabies": {elem1:"dog_with_rabies", chance:0.3},
|
||||||
|
},
|
||||||
|
category:"life",
|
||||||
|
state:"solid",
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "cooked_meat",
|
||||||
|
breakInto: "rotten_meat",
|
||||||
|
tempLow: -20,
|
||||||
|
stateLow: "frozen_meat",
|
||||||
|
};
|
||||||
|
|
@ -197,9 +197,272 @@ worldgentypes.sycamore_forest = {
|
||||||
],
|
],
|
||||||
baseHeight: 0.25
|
baseHeight: 0.25
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.onion = {
|
elements.onion = {
|
||||||
color: "#f5b042",
|
color: "#f5b042",
|
||||||
behavior: behaviors.POWDER,
|
behavior: behaviors.POWDER,
|
||||||
category: "land",
|
category: "land",
|
||||||
state: "solid",
|
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",
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
function close_window() {
|
||||||
|
if (confirm("Reflect Test?")) {
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
elements.franklin_badge = { //basic element properties
|
||||||
|
color: "#0300b0",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
category: "special",
|
||||||
|
insulate: true,
|
||||||
|
hardness: 1,
|
||||||
|
noMix: true,
|
||||||
|
tick: function(pixel){
|
||||||
|
if (!isEmpty(pixel.x, pixel.y-1, true)){
|
||||||
|
if (pixelMap[pixel.x][pixel.y-1].element === "lightning") {
|
||||||
|
//console.log("holy shit oh wow")
|
||||||
|
//close_window
|
||||||
|
//close();
|
||||||
|
//window.open('','_self').close();
|
||||||
|
//window.location = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
|
||||||
|
var delayInMilliseconds = 60; //1 second
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
window.open("https://www.youtube.com/watch?v=dQw4w9WgXcQ", "_blank");
|
||||||
|
}, delayInMilliseconds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
behaviors.franklin_badge.tick = function(pixel) {
|
||||||
|
if (pixel.y-1 == "lightning") {
|
||||||
|
console.log("Lightning detected")
|
||||||
|
}
|
||||||
|
};
|
||||||
|
*/
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,541 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
Also checkout sbstuff.js by sb! Without it, this mod wouldn't be possible!
|
||||||
|
|
||||||
|
Discords of people that helped me:
|
||||||
|
usecit - UseCit.psd
|
||||||
|
nousernamefound - nousernamefound
|
||||||
|
pixelegend4 - pixelegend4
|
||||||
|
|
||||||
|
Credits:
|
||||||
|
Saschas - Waterpowder idea
|
||||||
|
Fantasy Elements - Phoenix idea
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
elements.sweetwater = {
|
||||||
|
color: "#8ae7eb",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "water",
|
||||||
|
reactions: {
|
||||||
|
"sugar": { elem1: null, elem2: "syrup" }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.syrup = {
|
||||||
|
color: "#d9d2c3",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "fire",
|
||||||
|
reactions: {
|
||||||
|
"cell": {elem1: null, elem2: "incubationjuice"}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.orangesoda = {
|
||||||
|
color: "#b8820d",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "water",
|
||||||
|
reactions: {
|
||||||
|
"deadflyingcreature": { elem1: "dirty_orangesoda" },
|
||||||
|
"deadcreature": { elem1: "dirty_orangesoda" },
|
||||||
|
"dirty_water": { elem1: "dirty_orangesoda" },
|
||||||
|
"infection": { elem1: "dirty_orangesoda" },
|
||||||
|
"dirty_orangesoda": { elem1: "dirty_orangesoda" },
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.dirty_orangesoda = {
|
||||||
|
color: "#20991a",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
tempHigh: 80,
|
||||||
|
stateHigh: "orangesoda",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.orange = {
|
||||||
|
color: "#eda813",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
breakInto: "juice",
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "charcoal",
|
||||||
|
reactions: {
|
||||||
|
"syrup": { elem1: null, elem2: "orangesoda" }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
elements.incubationjuice = {
|
||||||
|
color: "#daf5ef",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
breakInto: "blood",
|
||||||
|
reactions: {
|
||||||
|
"flydna": { elem1: "blood", elem2: "flyingcreature"},
|
||||||
|
"antdna": { elem1: "blood", elem2: "creature"},
|
||||||
|
"phoenixdna": { elem1: "blood", elem2: "artificialphoenix"},
|
||||||
|
"alcohol": { elem1: "cancer", elem2: "antiartificialjuice"}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.creature = {
|
||||||
|
color: "#d073d9",
|
||||||
|
behavior: behaviors.CRAWLER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "crawler",
|
||||||
|
tempHigh: 175,
|
||||||
|
stateHigh: "deadcreature",
|
||||||
|
breakInto: "deadcreature",
|
||||||
|
reactions: {
|
||||||
|
"ant": { elem2: "meat" },
|
||||||
|
"meat": { elem2: "creature" },
|
||||||
|
"artificialmeat": { elem2: "cell" },
|
||||||
|
"syrup": { elem2: "creature" },
|
||||||
|
"cell": { elem2: "creature" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.flyingcreature = {
|
||||||
|
color: "#d073d9",
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "kopal",
|
||||||
|
state: "fly",
|
||||||
|
tempHigh: 175,
|
||||||
|
stateHigh: "deadflyingcreature",
|
||||||
|
breakInto: "deadflyingcreature",
|
||||||
|
reactions: {
|
||||||
|
"fly": { elem2: "meat" },
|
||||||
|
"meat": { elem2: "flyingcreature" },
|
||||||
|
"artificialmeat": { elem2: "cell" },
|
||||||
|
"syrup": { elem2: "flyingcreature" },
|
||||||
|
"cell": { elem2: "flyingcreature" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.artificialphoenix = {
|
||||||
|
color: "#c40052",
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "kopal",
|
||||||
|
state: "fly",
|
||||||
|
temp: 149,
|
||||||
|
breakInto: "deadflyingcreature",
|
||||||
|
reactions: {
|
||||||
|
"fly": { elem2: "artificialphoenix" },
|
||||||
|
"flyingcreature": { elem2: "artificialphoenix" },
|
||||||
|
"meat": { elem2: "artificialphoenix" },
|
||||||
|
"artificialmeat": { elem2: "artificialphoenix" },
|
||||||
|
"syrup": { elem2: "artificialphoenix" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.phoenix = {
|
||||||
|
color: "#ff0000",
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "kopal",
|
||||||
|
state: "fly",
|
||||||
|
temp: 999,
|
||||||
|
breakInto: "phoenixdna",
|
||||||
|
reactions: {
|
||||||
|
"fly": { elem2: "meat" },
|
||||||
|
"meat": { elem2: "phoenix" },
|
||||||
|
"alcohol": { elem1: "blood" , elem2: "phoenixdna" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.deadcreature = {
|
||||||
|
color: "#86428c",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
tempHigh: 225,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
breakInto: "artificialmeat",
|
||||||
|
reactions: {
|
||||||
|
"antiartificialjuice": { elem1: "artificialmeat", elem2: "dna" },
|
||||||
|
"ant": { elem1: "artificialmeat" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.deadflyingcreature = {
|
||||||
|
color: "#86428c",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
tempHigh: 225,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
breakInto: "artificialmeat",
|
||||||
|
reactions: {
|
||||||
|
"antiartificialjuice": { elem1: "artificialmeat", elem2: "dna" },
|
||||||
|
"fly": { elem1: "artificialmeat" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.artificialmeat = {
|
||||||
|
color: "#b38a5f",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
tempHigh: 215,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
reactions: {
|
||||||
|
"antiartificialjuice": { elem1: null, elem2: null },
|
||||||
|
"ant": { elem1: null },
|
||||||
|
"rat": { elem1: null },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.antiartificialjuice = {
|
||||||
|
color: "#b38a5f",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
tempHigh: 215,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
reactions: {
|
||||||
|
"flyingcreature": { elem1: "alcohol", elem2: "deadflyingcreature" },
|
||||||
|
"creature": { elem1: "alcohol", elem2: "deadcreature" },
|
||||||
|
"artificialphoenix": { elem1: "alcohol", elem2: "deadflyingcreature" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.antiartificialspray = {
|
||||||
|
color: "#b38a5f",
|
||||||
|
behavior: behaviors.DGAS,
|
||||||
|
category: "kopal",
|
||||||
|
state: "gas",
|
||||||
|
tempHigh: 215,
|
||||||
|
density: 4000,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
reactions: {
|
||||||
|
"flyingcreature": { elem1: "alcohol", elem2: "deadflyingcreature" },
|
||||||
|
"creature": { elem1: "alcohol", elem2: "deadcreature" },
|
||||||
|
"artificialphoenix": { elem1: "alcohol", elem2: "deadflyingcreature" },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.antdna = {
|
||||||
|
color: "#b38a5f",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
tempHigh: 215,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.phoenixdna = {
|
||||||
|
color: "#a82a2a",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.flydna = {
|
||||||
|
color: "#b38a5f",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
tempHigh: 215,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.waterpowder = {
|
||||||
|
color: elements.water.color,
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
tempHigh: 40,
|
||||||
|
stateHigh: "water",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.waterpowderer = {
|
||||||
|
color: "#e3e1dc",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "kopal",
|
||||||
|
state: "powder",
|
||||||
|
reactions: {
|
||||||
|
"water": { elem1: null, elem2: "waterpowder" }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.antiartificialcancer = {
|
||||||
|
color: "#b38a5f",
|
||||||
|
behavior: [
|
||||||
|
"XX|CL%1|XX",
|
||||||
|
"CL%1|XX|CL%1",
|
||||||
|
"M2%2|M1|M2%2",
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"artificialmeat": { elem2:"antiartificialcancer", chance:0.05 },
|
||||||
|
"creature": { elem2:"antiartificialcancer", chance:0.05 },
|
||||||
|
"flyingcreature": { elem2:"antiartificialcancer", chance:0.05 },
|
||||||
|
"artificialphoenix": { elem2:"antiartificialcancer", chance:0.05 },
|
||||||
|
"cancer": { elem2:"antiartificialcancer", chance:0.5 },
|
||||||
|
},
|
||||||
|
tempHigh: 185,
|
||||||
|
stateHigh: "smoke",
|
||||||
|
tempLow: -10,
|
||||||
|
stateLow: "syrup",
|
||||||
|
state: "solid",
|
||||||
|
density: 1000.2,
|
||||||
|
category: "kopal",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.anticancer = {
|
||||||
|
color: "#e3e1dc",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "kopal",
|
||||||
|
state: "liquid",
|
||||||
|
tempLow: -10,
|
||||||
|
stateLow: "syrup",
|
||||||
|
reactions: {
|
||||||
|
"cancer": { elem1: null, elem2: "anticancer" },
|
||||||
|
"antiartificialcancer": { elem1: null, elem2: "anticancer" }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.fire_spirit = {
|
||||||
|
color: ["#fc5a03", "#fc2803", "#fc9d03"],
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
temp: 50,
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"air_spirit": { elem2: null},
|
||||||
|
"cursed_spirit": { elem1: null},
|
||||||
|
"earth_spirit": { elem1: null},
|
||||||
|
"water_spirit": { elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.water_spirit = {
|
||||||
|
color: ["#0390fc", "#035afc", "#0318fc"],
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem1: null},
|
||||||
|
"cursed_spirit": { elem1: null},
|
||||||
|
"earth_spirit": { elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.earth_spirit = {
|
||||||
|
color: ["#915a00", "#784b02", "#573602"],
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem2: null},
|
||||||
|
"cursed_spirit": { elem1: null},
|
||||||
|
"water_spirit": { elem1: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.air_spirit = {
|
||||||
|
color: ["#c7eded", "#99bdbd", "#6a9494"],
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem1: null},
|
||||||
|
"cursed_spirit": { elem2: null},
|
||||||
|
"water_spirit": { elem1: null},
|
||||||
|
"earth_spirit": { elem1: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.cursed_spirit = {
|
||||||
|
color: ["#c404ae", "#aa04c4", "#7e04c4"],
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem2: null},
|
||||||
|
"air_spirit": { elem1: null},
|
||||||
|
"water_spirit": { elem2: null},
|
||||||
|
"earth_spirit": { elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.cursed_powder_lvl1 = {
|
||||||
|
color: ["#c404ae", "#aa04c4", "#7e04c4"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"cursed_spirit": { elem1: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.cursed_powder_lvl2 = {
|
||||||
|
color: ["#c404ae", "#aa04c4", "#7e04c4"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"cursed_spirit": { elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.soul_spirit = {
|
||||||
|
color: ["#0af7e0", "#0ac8f7", "#0a9cf7"],
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem2: null},
|
||||||
|
"cursed_spirit": { elem2: null},
|
||||||
|
"water_spirit": { elem2: null},
|
||||||
|
"earth_spirit": { elem2: null},
|
||||||
|
"air_spirit": { elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.soul_powder = {
|
||||||
|
color: "#2e363b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"awakening_powder": { elem1: "soul_spirit", elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.cursed_powder = {
|
||||||
|
color: "#2e363b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"awakening_powder": { elem1: "cursed_spirit", elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.air_powder = {
|
||||||
|
color: "#2e363b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
temp: -10,
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"awakening_powder": { elem1: "air_spirit", elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.water_powder = {
|
||||||
|
color: "#2e363b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"awakening_powder": { elem1: "water_spirit", elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.fire_powder = {
|
||||||
|
color: "#2e363b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"awakening_powder": { elem1: "fire_spirit", elem2: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.wandering_spirit = {
|
||||||
|
color: "#b1b7ba",
|
||||||
|
behavior: behaviors.FLY,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem1: null},
|
||||||
|
"cursed_spirit": { elem1: null},
|
||||||
|
"water_spirit": { elem1: null},
|
||||||
|
"earth_spirit": { elem1: null},
|
||||||
|
"air_spirit": { elem1: null},
|
||||||
|
"soul_spirit": { elem1: null},
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.unawaken_powder = {
|
||||||
|
color: "#696b6b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_spirit": { elem1: null, elem2: "fire_powder" },
|
||||||
|
"cursed_spirit": { elem1: null, elem2: "cursed_powder" },
|
||||||
|
"water_spirit": { elem1: null, elem2: "water_powder" },
|
||||||
|
"earth_spirit": { elem1: null, elem2: "earth_powder" },
|
||||||
|
"air_spirit": { elem1: null, elem2: "air_powder" },
|
||||||
|
"soul_spirit": { elem1: null, elem2: "soul_powder" },
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.awakening_powder = {
|
||||||
|
color: "#696b6b",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "spirits",
|
||||||
|
state: "solid",
|
||||||
|
|
||||||
|
reactions: {
|
||||||
|
"fire_powder": { elem1: null, elem2: "fire_spirit" },
|
||||||
|
"cursed_powder": { elem1: null, elem2: "cursed_spirit" },
|
||||||
|
"water_powder": { elem1: null, elem2: "water_spirit" },
|
||||||
|
"earth_powder": { elem1: null, elem2: "earth_spirit" },
|
||||||
|
"air_powder": { elem1: null, elem2: "air_spirit" },
|
||||||
|
"soul_powder": { elem1: null, elem2: "soul_spirit" },
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.ant.breakInto = "antdna"
|
||||||
|
elements.fly.breakInto = "flydna"
|
||||||
|
elements.water.reactions["sugar"] = { elem1: null, elem2: "sweetwater" };
|
||||||
|
elements.water.reactions["deadflyingcreature"] = { elem1: "dirty_water"};
|
||||||
|
elements.water.reactions["deadcreature"] = { elem1: "dirty_water"};
|
||||||
|
elements.water.reactions["dirty_water"] = { elem1: "dirty_water"};
|
||||||
|
elements.ant.reactions["alcohol"] = { elem1: "antdna", elem2: null };
|
||||||
|
elements.fly.reactions["alcohol"] = { elem1: "flydna", elem2: null };
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
elements.ghost_particle = {
|
||||||
|
color: "#d9d2d0",
|
||||||
|
behavior: behaviors.GAS,
|
||||||
|
category: "soul",
|
||||||
|
state: "gas",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.soul_fish = {
|
||||||
|
color: ["#808080","#a52a2a"],
|
||||||
|
category: "soul",
|
||||||
|
behavior: [
|
||||||
|
"XX|CR:flash|XX",
|
||||||
|
"CR:flash AND M2|XX|CR:flash AND M2",
|
||||||
|
"M1|CR:flash AND M1|M1",
|
||||||
|
],
|
||||||
|
reactions: {
|
||||||
|
"algae": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
|
||||||
|
"plant": { elem2:null, chance:0.125, func:behaviors.FEEDPIXEL },
|
||||||
|
"fly": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
|
||||||
|
"firefly": { elem2:null, chance:0.6, func:behaviors.FEEDPIXEL },
|
||||||
|
"worm": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
|
||||||
|
"tadpole": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
|
||||||
|
"oxygen": { elem2:"carbon_dioxide", chance:0.5 },
|
||||||
|
"dead_bug": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
|
||||||
|
"broth": { elem2:"water", chance:0.2, func:behaviors.FEEDPIXEL },
|
||||||
|
"slug": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
|
||||||
|
"herb": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"lettuce": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"dead_plant": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"lichen": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
|
||||||
|
"yeast": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"yogurt": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"tea": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
|
||||||
|
"yolk": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"cell": { elem2:null, chance:0.15, func:behaviors.FEEDPIXEL },
|
||||||
|
"crumb": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
|
||||||
|
"alcohol": { elem1:"meat", chance:0.001 },
|
||||||
|
}
|
||||||
|
};
|
||||||
|
elements.soul_anger_block = {
|
||||||
|
color: ["#eb4034","#ed2415"],
|
||||||
|
category: "soul",
|
||||||
|
behavior: [
|
||||||
|
"HT|HT|HT",
|
||||||
|
"CR:heat_ray|HT|CR:heat_ray",
|
||||||
|
"HT|CR:heat_ray|HT",
|
||||||
|
],
|
||||||
|
};
|
||||||
|
elements.soul_dirt = {
|
||||||
|
color: ["#999a98", "#e6e7e2", "#dddcda"],
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
properties: {
|
||||||
|
"methaned": false,
|
||||||
|
"age": 0
|
||||||
|
},
|
||||||
|
tick: function(pixel) {
|
||||||
|
if(pixel.age > 6) {
|
||||||
|
if(!pixel.methaned && Math.random() < 0.2) {
|
||||||
|
changePixel("ghost_particle",pixel.x,pixel.y);
|
||||||
|
} else {
|
||||||
|
pixel.methaned = true;
|
||||||
|
};
|
||||||
|
createPixel("ghost_particle",pixel.x,pixel.y);
|
||||||
|
};
|
||||||
|
pixel.age++
|
||||||
|
},
|
||||||
|
category: "soul",
|
||||||
|
state: "powder",
|
||||||
|
density: 1050,
|
||||||
|
excludeRandom: true,
|
||||||
|
};
|
||||||
|
|
@ -1,5 +1,34 @@
|
||||||
|
// changelog for more_gold.js
|
||||||
|
// initial release
|
||||||
|
|
||||||
|
//1.0 update
|
||||||
|
// adds green_gold
|
||||||
|
// adds molten_green_gold
|
||||||
|
|
||||||
|
// 1.1 update
|
||||||
|
// adds black gold
|
||||||
|
// adds gold_rust
|
||||||
|
// added reactions for the golds
|
||||||
|
|
||||||
|
//1.1.1 update
|
||||||
|
// adds uranium_gold
|
||||||
|
|
||||||
elements.green_gold = {
|
elements.green_gold = {
|
||||||
color: ["#94c7a3","#7bb298","#94c7a3"],
|
color: ["#94c7a3","#7bb298","#94c7a3"],
|
||||||
|
reactions: {
|
||||||
|
"water": { elem1:"gold_rust", chance:0.02 },
|
||||||
|
"salt_water": { elem1:"gold_rust", chance:0.005 },
|
||||||
|
"dirty_water": { elem1:"gold_rust", chance:0.04 },
|
||||||
|
"pool_water": { elem1:"gold_rust", chance:0.04 },
|
||||||
|
"sugar_water": { elem1:"gold_rust", chance:0.0035 },
|
||||||
|
"seltzer": { elem1:"gold_rust", chance:0.006 },
|
||||||
|
"alcohol": { elem1:"gold_rust", chance:0.03 },
|
||||||
|
"blood": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"infection": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"antibody": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"fire": { elem1:"gold_rust", chance:0.0025 },
|
||||||
|
"oxygen": { elem1:"gold_rust", chance:0.05 },
|
||||||
|
},
|
||||||
behavior: behaviors.WALL,
|
behavior: behaviors.WALL,
|
||||||
tempHigh: 500,
|
tempHigh: 500,
|
||||||
category: "solids",
|
category: "solids",
|
||||||
|
|
@ -16,3 +45,71 @@ elements.molten_green_gold = {
|
||||||
conduct: 0.87,
|
conduct: 0.87,
|
||||||
Hidden: true
|
Hidden: true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
elements.black_gold = {
|
||||||
|
color: "#333333",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
reactions: {
|
||||||
|
"water": { elem1:"gold_rust", chance:0.0025 },
|
||||||
|
"salt_water": { elem1:"gold_rust", chance:0.005 },
|
||||||
|
"dirty_water": { elem1:"gold_rust", chance:0.04 },
|
||||||
|
"pool_water": { elem1:"gold_rust", chance:0.04 },
|
||||||
|
"sugar_water": { elem1:"gold_rust", chance:0.0035 },
|
||||||
|
"seltzer": { elem1:"gold_rust", chance:0.006 },
|
||||||
|
"alcohol": { elem1:"gold_rust", chance:0.03 },
|
||||||
|
"blood": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"infection": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"antibody": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"fire": { elem1:"gold_rust", chance:0.0025 },
|
||||||
|
"oxygen": { elem1:"gold_rust", chance:0.05 },
|
||||||
|
},
|
||||||
|
category: "solids",
|
||||||
|
density: 19300,
|
||||||
|
hardness: 0.25,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.gold_rust = {
|
||||||
|
color: "#e6d37e",
|
||||||
|
behavior: behaviors.SUPPORT,
|
||||||
|
tempHigh: 3000,
|
||||||
|
stateHigh: "molten_gold",
|
||||||
|
category: "powders",
|
||||||
|
state: "solid",
|
||||||
|
density: 5250,
|
||||||
|
conduct: 0.37,
|
||||||
|
hardness: 0.3
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.uranium_gold = {
|
||||||
|
color: ["#bcf542","#7fc92a","#c9bf2a"],
|
||||||
|
behavior: [
|
||||||
|
"XX|CR:radiation|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
tempHigh: 1064,
|
||||||
|
reactions: {
|
||||||
|
"water": { elem1:"rad_steam", chance:0.1 },
|
||||||
|
"salt_water": { elem1:"gold_rust", chance:0.005 },
|
||||||
|
"dirty_water": { elem1:"gold_rust", chance:0.04 },
|
||||||
|
"pool_water": { elem1:"gold_rust", chance:0.04 },
|
||||||
|
"sugar_water": { elem1:"gold_rust", chance:0.0035 },
|
||||||
|
"seltzer": { elem1:"gold_rust", chance:0.006 },
|
||||||
|
"alcohol": { elem1:"gold_rust", chance:0.03 },
|
||||||
|
"blood": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"infection": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"antibody": { elem1:"gold_rust", chance:0.003 },
|
||||||
|
"fire": { elem1:"gold_rust", chance:0.0025 },
|
||||||
|
"oxygen": { elem1:"gold_rust", chance:0.05 },
|
||||||
|
},
|
||||||
|
category: "solids",
|
||||||
|
density: 19300,
|
||||||
|
conduct: 0.81,
|
||||||
|
hardness: 0.25,
|
||||||
|
breakInto: "uranium"
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.gold.reactions["fire"] = { elem1: null, elem2: "gold_rust" };
|
||||||
|
elements.rose_gold.reactions["fire"] = { elem1: null, elem2: "gold_rust" };
|
||||||
|
elements.purple_gold.reactions["fire"] = { elem1: null, elem2: "gold_rust" };
|
||||||
|
elements.blue_gold.reactions["fire"] = { elem1: null, elem2: "gold_rust" };
|
||||||
|
|
|
||||||
|
|
@ -1387,7 +1387,7 @@ elements.sign = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
runAfterLoad(function(){
|
runAfterLoad(function(){
|
||||||
document.body.innerHTML += `
|
document.body.insertAdjacentHTML("beforeend",`
|
||||||
these are all properties of the pixel. another way to find pixel properties is using debug on a pixel, it will tell you the property and the value, like x and y, or, in plants.js, fruit.
|
these are all properties of the pixel. another way to find pixel properties is using debug on a pixel, it will tell you the property and the value, like x and y, or, in plants.js, fruit.
|
||||||
<table id="variables">
|
<table id="variables">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -1457,8 +1457,8 @@ runAfterLoad(function(){
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
`
|
`)
|
||||||
document.getElementById("extraInfo").innerHTML = `
|
// document.getElementById("extraInfo").innerHTML = `
|
||||||
<small><a href="https://sandboxels.r74n.com/changelog" id="changelogButton" target="_blank">Changelog<span style="color:red">(NEW)</span></a> • <a href="https://sandboxels.R74n.com/feedback" target="_blank" style="color:lime;">Feedback</a> • <a href="https://sandboxels.wiki.gg/" target="_blank" id="wikiButton" title="Official Sandboxels Wiki - wiki.gg" style="color:white;">Wiki</a> • <a id="moreSocial" href="https://reddit.com/r/Sandboxels" rel="me" target="_blank"><span style="color:#FF5700">Reddit</span></a> • <a href="https://discord.gg/ejUc6YPQuS" target="_blank" style="color:#2f60ff;">Discord</a><span id="install-button" style="display: inline-block;"> • <a onclick="deferredPrompt.prompt(); return false" href="#" style="text-shadow: 0px 2px 10px #ff00ff; cursor:pointer">Install Offline</a> • <a href = "https://sandboxels.r74n.com/#variables">Variables</a></span><!--<br><br><a style="color:lime" target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSf8pVMSdC6oSnBSaTpzjPQa8Ef-vxG_eXL99UITnMSQtJFTJA/viewform?usp=sf_link">FILL OUT THE CENSUS<span style="color:red">(NEW)</span></a>--></small><small><p>v1.9.3 • 559 elements, with <span id="hiddenCount">0</span> hidden.</p><p>©2021-2024. <a href="https://sandboxels.R74n.com/license.txt" rel="license" target="_blank">All Rights Reserved</a>. <a style="color:#00ffff" rel="author" href="https://r74n.com">R74n</a></p></small>
|
// <small><a href="https://sandboxels.r74n.com/changelog" id="changelogButton" target="_blank">Changelog<span style="color:red">(NEW)</span></a> • <a href="https://sandboxels.R74n.com/feedback" target="_blank" style="color:lime;">Feedback</a> • <a href="https://sandboxels.wiki.gg/" target="_blank" id="wikiButton" title="Official Sandboxels Wiki - wiki.gg" style="color:white;">Wiki</a> • <a id="moreSocial" href="https://reddit.com/r/Sandboxels" rel="me" target="_blank"><span style="color:#FF5700">Reddit</span></a> • <a href="https://discord.gg/ejUc6YPQuS" target="_blank" style="color:#2f60ff;">Discord</a><span id="install-button" style="display: inline-block;"> • <a onclick="deferredPrompt.prompt(); return false" href="#" style="text-shadow: 0px 2px 10px #ff00ff; cursor:pointer">Install Offline</a> • <a href = "https://sandboxels.r74n.com/#variables">Variables</a></span><!--<br><br><a style="color:lime" target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSf8pVMSdC6oSnBSaTpzjPQa8Ef-vxG_eXL99UITnMSQtJFTJA/viewform?usp=sf_link">FILL OUT THE CENSUS<span style="color:red">(NEW)</span></a>--></small><small><p>v1.9.3 • 559 elements, with <span id="hiddenCount">0</span> hidden.</p><p>©2021-2024. <a href="https://sandboxels.R74n.com/license.txt" rel="license" target="_blank">All Rights Reserved</a>. <a style="color:#00ffff" rel="author" href="https://r74n.com">R74n</a></p></small>
|
||||||
`
|
// `
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
elements.shock_ray = {
|
||||||
|
color: ["#fffba6", "#8c8279"],
|
||||||
|
tick: function (pixel) {
|
||||||
|
var x = pixel.x;
|
||||||
|
for (var y = pixel.y + 1; y < height; y++) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
if (Math.random() > 0.1) { continue }
|
||||||
|
createPixel("electric", x, y);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (elements[pixelMap[x][y].element].id === elements.flash.id) { continue }
|
||||||
|
if (elements[pixelMap[x][y].element].id === elements.god_ray.id) { break }
|
||||||
|
if (!elements[pixelMap[x][y].element].isGas && isEmpty(x, y - 1)) {
|
||||||
|
createPixel("electric", x, y - 1);
|
||||||
|
}
|
||||||
|
if (Math.random() > 0.1) { continue }
|
||||||
|
elements.bless.tool(pixelMap[x][y])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
},
|
||||||
|
temp: 20,
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
excludeRandom: true,
|
||||||
|
noMix: true
|
||||||
|
};
|
||||||
|
elements.magic_ray = {
|
||||||
|
color: ["#a270ff","#f2d9ff"],
|
||||||
|
tick: function (pixel) {
|
||||||
|
var x = pixel.x;
|
||||||
|
for (var y = pixel.y + 1; y < height; y++) {
|
||||||
|
if (outOfBounds(x, y)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (isEmpty(x, y)) {
|
||||||
|
if (Math.random() > 0.1) { continue }
|
||||||
|
createPixel("magic", x, y);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (elements[pixelMap[x][y].element].id === elements.flash.id) { continue }
|
||||||
|
if (elements[pixelMap[x][y].element].id === elements.god_ray.id) { break }
|
||||||
|
if (!elements[pixelMap[x][y].element].isGas && isEmpty(x, y - 1)) {
|
||||||
|
createPixel("magic", x, y - 1);
|
||||||
|
}
|
||||||
|
if (Math.random() > 0.1) { continue }
|
||||||
|
elements.bless.tool(pixelMap[x][y])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deletePixel(pixel.x, pixel.y);
|
||||||
|
},
|
||||||
|
temp: 20,
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
excludeRandom: true,
|
||||||
|
noMix: true
|
||||||
|
};
|
||||||
|
|
@ -592,6 +592,7 @@ elements.cocaine = {
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.zombie = {
|
elements.zombie = {
|
||||||
|
excludeRandom: true,
|
||||||
tempHigh: 500,
|
tempHigh: 500,
|
||||||
stateHigh: "ash",
|
stateHigh: "ash",
|
||||||
color: "#114700",
|
color: "#114700",
|
||||||
|
|
@ -784,6 +785,7 @@ elements.fart = {
|
||||||
behavior: behaviors.DGAS,
|
behavior: behaviors.DGAS,
|
||||||
category: "joke",
|
category: "joke",
|
||||||
state: "gas",
|
state: "gas",
|
||||||
|
excludeRandom: true
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.chips = {
|
elements.chips = {
|
||||||
|
|
@ -998,7 +1000,7 @@ elements.incinerator = {
|
||||||
insulate: true,
|
insulate: true,
|
||||||
excludeRandom: true,
|
excludeRandom: true,
|
||||||
reactions: {
|
reactions: {
|
||||||
"fart": { elem1: null, elem2: "ohio" },
|
"fart": { elem1: null, elem2: "kaboom" },
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1211,7 +1213,7 @@ elements.dark_energy = {
|
||||||
excludeRandom: true
|
excludeRandom: true
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.ohio = {
|
elements.kaboom = {
|
||||||
hidden: true,
|
hidden: true,
|
||||||
hardness: 1,
|
hardness: 1,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
|
|
@ -1380,15 +1382,6 @@ elements.yoylecake = {
|
||||||
state: "liquid",
|
state: "liquid",
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.banana = {
|
|
||||||
tempHigh: 300,
|
|
||||||
stateHigh: "ash",
|
|
||||||
color: "#f06c0e",
|
|
||||||
behavior: behaviors.STURDYPOWDER,
|
|
||||||
category: "food",
|
|
||||||
state: "liquid",
|
|
||||||
};
|
|
||||||
|
|
||||||
elements.cool_ray = {
|
elements.cool_ray = {
|
||||||
color: ["#0cdaed","#baf9ff"],
|
color: ["#0cdaed","#baf9ff"],
|
||||||
tick: function(pixel) {
|
tick: function(pixel) {
|
||||||
|
|
@ -1692,7 +1685,8 @@ elements.liquid_filler = {
|
||||||
"M1|M1 AND CH:liquid_filler%50|M1",
|
"M1|M1 AND CH:liquid_filler%50|M1",
|
||||||
],
|
],
|
||||||
category: "special",
|
category: "special",
|
||||||
state: "liquid"
|
state: "liquid",
|
||||||
|
excludeRandom: true
|
||||||
};
|
};
|
||||||
|
|
||||||
elements.antimony = {
|
elements.antimony = {
|
||||||
|
|
@ -1736,12 +1730,93 @@ elements.unstain = {
|
||||||
state: "solid",
|
state: "solid",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
elements.antmatter = {
|
||||||
|
color: "#5f4a4a",
|
||||||
|
behavior: [
|
||||||
|
"M2|DB%50 AND M2 AND EX:8>ant%10|M2",
|
||||||
|
"M1|XX|M1",
|
||||||
|
"M1|DB%50 AND M1 AND EX:8>ant%10|M1",
|
||||||
|
],
|
||||||
|
category: "others",
|
||||||
|
state: "gas",
|
||||||
|
density: 6.9,
|
||||||
|
desc: "first ever others category element i guess"
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.thermal_paste = {
|
||||||
|
viscosity: 10000,
|
||||||
|
tempHigh: 200,
|
||||||
|
stateHigh: [null, "thermal_paste"],
|
||||||
|
color: "#c5cfd3",
|
||||||
|
behavior: [
|
||||||
|
"XX|CO:1|XX",
|
||||||
|
"CO:1 AND M2|XX|CO:1 AND M2",
|
||||||
|
"M1|CO:1 AND M1|M1",
|
||||||
|
],
|
||||||
|
category: "liquids",
|
||||||
|
state: "liquid",
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.sam = {
|
||||||
|
name: "sam's sperm i think",
|
||||||
|
viscosity: 10000,
|
||||||
|
color: "#0e0e0e",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
category: "joke",
|
||||||
|
state: "liquid",
|
||||||
|
desc: "begs the question; did he censor himself?"
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.glitch = {
|
||||||
|
color: ["#ff0000", "#c300ff", "#bbff00", "#1100ff", "#00ffaa"],
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|CC:ff0000,c300ff,bbff00,1100ff,00ffaa|XX",
|
||||||
|
"XX|XX|XX"
|
||||||
|
],
|
||||||
|
category: "special",
|
||||||
|
conduct: 0.5,
|
||||||
|
movable: false
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.sound = {
|
||||||
|
color: ["#1464b4","#aeeb82"],
|
||||||
|
currentSound: null,
|
||||||
|
onSelect: function() {
|
||||||
|
var file = document.createElement("input");
|
||||||
|
file.type = "file";
|
||||||
|
file.accept = "audio/*";
|
||||||
|
file.onchange = function() {
|
||||||
|
setTimeout(function(){
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onload = function(e) {
|
||||||
|
if (elements.sound.currentSound) {
|
||||||
|
elements.sound.currentSound.pause();
|
||||||
|
}
|
||||||
|
elements.sound.currentSound = new Audio();
|
||||||
|
elements.sound.currentSound.src = e.target.result;
|
||||||
|
elements.sound.currentSound.play();
|
||||||
|
file.value = "";
|
||||||
|
}
|
||||||
|
reader.readAsDataURL(file.files[0]);
|
||||||
|
},500);
|
||||||
|
}
|
||||||
|
file.click();
|
||||||
|
},
|
||||||
|
onUnselect: function() {},
|
||||||
|
tool: function() {},
|
||||||
|
category: "special",
|
||||||
|
};
|
||||||
|
|
||||||
elements.incinerate.category = "tools",
|
elements.incinerate.category = "tools",
|
||||||
elements.cook.category = "tools",
|
elements.cook.category = "tools",
|
||||||
elements.room_temp.category = "tools",
|
elements.room_temp.category = "tools",
|
||||||
|
|
||||||
elements.beans.tempHigh = 349,
|
elements.beans.tempHigh = 349,
|
||||||
elements.beans.stateHigh = "burnt_beans"
|
elements.beans.stateHigh = "burnt_beans"
|
||||||
|
elements.grass.onSelect = function() {
|
||||||
|
logMessage("go touch this");
|
||||||
|
}
|
||||||
|
|
||||||
if (!elements.radiation.reactions) elements.egg.reactions = {};
|
if (!elements.radiation.reactions) elements.egg.reactions = {};
|
||||||
elements.radiation.reactions.meat = { elem1: null, elem2: "radioactive_meat" },
|
elements.radiation.reactions.meat = { elem1: null, elem2: "radioactive_meat" },
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
// changelog
|
||||||
|
|
||||||
|
// 1.0 update - the base update
|
||||||
|
// added seasoning
|
||||||
|
// added seasoned_water
|
||||||
|
|
||||||
|
elements.seasoning = {
|
||||||
|
color: "#876461",
|
||||||
|
behavior: behaviors.POWDER,
|
||||||
|
category: "food",
|
||||||
|
tempHigh: 900,
|
||||||
|
stateHigh: "salt",
|
||||||
|
state: "solid",
|
||||||
|
reactions: {
|
||||||
|
"water": { elem1: "null", elem2: "seasoned_water" },
|
||||||
|
"salt_water": { elem1: "null", elem2: "seasoned_water" },
|
||||||
|
},
|
||||||
|
density: 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
elements.seasoned_water = {
|
||||||
|
color: "#73d627",
|
||||||
|
behavior: behaviors.LIQUID,
|
||||||
|
tempHigh: 100,
|
||||||
|
stateHigh: "steam",
|
||||||
|
tempLow: 0,
|
||||||
|
stateLow: "ice",
|
||||||
|
category: "liquids",
|
||||||
|
heatCapacity: 4.184,
|
||||||
|
reactions: {
|
||||||
|
"dirt": {
|
||||||
|
elem1: null,
|
||||||
|
elem2: "mud",
|
||||||
|
},
|
||||||
|
"sand": { elem1: null, elem2: "wet_sand" },
|
||||||
|
"clay_soil": { elem1: null, elem2: "clay" },
|
||||||
|
"salt": { elem1: "salt_water", elem2: null, temp1:-20 },
|
||||||
|
"sugar": { elem1: "sugar_water", elem2: null },
|
||||||
|
"honey": { elem1: "sugar_water" },
|
||||||
|
"caramel": { elem1: "sugar_water" },
|
||||||
|
"molasses": { elem1: "sugar_water" },
|
||||||
|
"dust": { elem1: "dirty_water", elem2: null },
|
||||||
|
"ash": { elem1: "dirty_water", elem2: null },
|
||||||
|
"cyanide": { elem1: "dirty_water", elem2: null },
|
||||||
|
"cyanide_gas": { elem1: "dirty_water", elem2: null },
|
||||||
|
"carbon_dioxide": { elem1: "seltzer", elem2: null, oneway:true },
|
||||||
|
"sulfur": { elem1: "dirty_water", elem2: null },
|
||||||
|
"rat": { elem1: "dirty_water", chance:0.005 },
|
||||||
|
"plague": { elem1: "dirty_water", elem2: null },
|
||||||
|
"rust": { elem1: "dirty_water", chance:0.005 },
|
||||||
|
"lead": { elem1: "dirty_water", chance:0.005 },
|
||||||
|
"solder": { elem1: "dirty_water", chance:0.005 },
|
||||||
|
"fallout": { elem1: "dirty_water", chance:0.25 },
|
||||||
|
"radiation": { elem1: "dirty_water", chance:0.25 },
|
||||||
|
"uranium": { elem1: "dirty_water", chance:0.25 },
|
||||||
|
"rotten_meat": { elem1: "dirty_water", chance:0.25 },
|
||||||
|
"rotten_cheese": { elem1: "dirty_water", chance:0.25 },
|
||||||
|
"cancer": { elem1: "dirty_water", chance:0.25 },
|
||||||
|
"oil": { elem1: "dirty_water", chance:0.005 },
|
||||||
|
"dioxin": { elem1: "dirty_water", chance:0.1 },
|
||||||
|
"quicklime": { elem1: "slaked_lime", elem2: "slaked_lime", temp2:100, temp1:100, chance:0.05 },
|
||||||
|
"rock": { elem2: "wet_sand", chance: 0.00035 },
|
||||||
|
"limestone": { elem2: "wet_sand", chance: 0.00035 },
|
||||||
|
"tuff": { elem2: "wet_sand", color2:"#7a6b5c", chance: 0.00035 },
|
||||||
|
"ruins": { elem2: "rock", chance: 0.00035 },
|
||||||
|
"mudstone": { elem2: "mud", chance: 0.00035 },
|
||||||
|
"methane": { elem1:"primordial_soup", elem2:"primordial_soup", tempMin:60, charged:true },
|
||||||
|
"ammonia": { elem1:"primordial_soup", elem2:"primordial_soup", tempMin:60, charged:true },
|
||||||
|
"fly": { elem2:"dead_bug", chance:0.1, oneway:true },
|
||||||
|
"firefly": { elem2:"dead_bug", chance:0.1, oneway:true },
|
||||||
|
"bee": { elem2:"dead_bug", chance:0.05, oneway:true },
|
||||||
|
"stink_bug": { elem2:"dead_bug", chance:0.1, oneway:true },
|
||||||
|
"cured_meat": { elem1:"salt_water", elem2:"meat" },
|
||||||
|
"aluminum": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0025 },
|
||||||
|
"zinc": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.015 },
|
||||||
|
"steel": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0125 },
|
||||||
|
"iron": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0125 },
|
||||||
|
"tin": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.01 },
|
||||||
|
"brass": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.001 },
|
||||||
|
"bronze": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.001 },
|
||||||
|
"copper": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 },
|
||||||
|
"silver": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 },
|
||||||
|
"gold": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 },
|
||||||
|
},
|
||||||
|
state: "liquid",
|
||||||
|
density: 999,
|
||||||
|
conduct: 0.02,
|
||||||
|
stain: -0.9,
|
||||||
|
extinguish: true
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,124 @@
|
||||||
|
{
|
||||||
|
let currentVideoFrames = [];
|
||||||
|
let videoFrame = 0;
|
||||||
|
let processed = 0;
|
||||||
|
let started = false;
|
||||||
|
let videoWidth = 0;
|
||||||
|
let videoHeight = 0;
|
||||||
|
let FPS = tps / 2;
|
||||||
|
|
||||||
|
const splitHex = (hex) => hex.slice(1).match(/../g).map(a => Math.floor(parseInt(a, 16)));
|
||||||
|
const hexify = (rgb) => "#" + rgb.map(a => Math.floor(a).toString(16).padStart(2, "0")).join("");
|
||||||
|
function colorLerp(color_, color2_, t) {
|
||||||
|
const color = splitHex(color_);
|
||||||
|
const color2 = splitHex(color2_);
|
||||||
|
const r = (1 - t) * color[0] + t * color2[0];
|
||||||
|
const g = (1 - t) * color[1] + t * color2[1];
|
||||||
|
const b = (1 - t) * color[2] + t * color2[2];
|
||||||
|
return hexify([r, g, b]);
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.video_pixel = {
|
||||||
|
color: "#ffffff",
|
||||||
|
hidden: true,
|
||||||
|
category: "special",
|
||||||
|
canPlace: false,
|
||||||
|
tool: () => {},
|
||||||
|
tick: (pixel) => {
|
||||||
|
if (started && pixelTicks % (tps / FPS) == 0) {
|
||||||
|
processed++;
|
||||||
|
if (processed >= videoWidth * videoHeight) {
|
||||||
|
videoFrame++;
|
||||||
|
processed = 0;
|
||||||
|
}
|
||||||
|
if (videoFrame >= currentVideoFrames.length) {
|
||||||
|
started = false;
|
||||||
|
processed = 0;
|
||||||
|
currentVideoFrames = [];
|
||||||
|
videoFrame = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pixel.color = currentVideoFrames[videoFrame % currentVideoFrames.length][pixel.y][pixel.x - Math.floor((width - videoWidth) / 2)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const chunk = (arr, size) => arr.map((_, i) => i % size == 0 ? arr.slice(i, i + size) : null).filter(a => a)
|
||||||
|
|
||||||
|
elements.video = {
|
||||||
|
color: ["#78bbff","#5bb81a"],
|
||||||
|
onSelect: () => {
|
||||||
|
if (!localStorage.getItem("video.js/tutorial")) {
|
||||||
|
alert("Videos might take a while (up to a few minutes with larger videos) to load. During that time, do not delete any video pixels");
|
||||||
|
localStorage.setItem("video.js/tutorial", true);
|
||||||
|
}
|
||||||
|
const file = document.createElement("input");
|
||||||
|
file.type = "file";
|
||||||
|
file.accept = "video/*";
|
||||||
|
file.click();
|
||||||
|
file.onchange = () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
const video = document.createElement("video");
|
||||||
|
video.preload = "auto";
|
||||||
|
const url = URL.createObjectURL(file.files[0]);
|
||||||
|
video.src = url;
|
||||||
|
video.load();
|
||||||
|
|
||||||
|
let canvas = document.createElement("canvas", {
|
||||||
|
willReadFrequently: true
|
||||||
|
});
|
||||||
|
let ctx = canvas.getContext("2d");
|
||||||
|
video.onloadeddata = async () => {
|
||||||
|
const w = video.videoWidth;
|
||||||
|
const h = video.videoHeight;
|
||||||
|
const newHeight = height;
|
||||||
|
const newWidth = Math.floor((w / h) * newHeight);
|
||||||
|
canvas.width = video.videoWidth;
|
||||||
|
canvas.height = video.videoHeight;
|
||||||
|
videoWidth = newWidth;
|
||||||
|
videoHeight = newHeight;
|
||||||
|
|
||||||
|
const videoLength = video.duration * FPS;
|
||||||
|
const seekBy = video.duration / videoLength;
|
||||||
|
|
||||||
|
for (let i = 0; i < newWidth; i++) {
|
||||||
|
for (let y = 0; y < newHeight; y++) {
|
||||||
|
const x = Math.floor((width - newWidth) / 2) + i;
|
||||||
|
if (pixelMap[x][y]) deletePixel(x, y);
|
||||||
|
createPixel("video_pixel", x, y);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
video.currentTime = 0;
|
||||||
|
|
||||||
|
video.onseeked = () => {
|
||||||
|
ctx.drawImage(video, 0, 0, newWidth, newHeight);
|
||||||
|
const imageData = chunk(chunk(Array.from(ctx.getImageData(0, 0, newWidth, newHeight).data), 4), newWidth);
|
||||||
|
const frame = [];
|
||||||
|
for (let y = 0; y < newHeight; y++) {
|
||||||
|
frame[y] = [];
|
||||||
|
for (let x = 0; x < newWidth; x++) {
|
||||||
|
frame[y][x] = `#${imageData[y][x].slice(0, 3).map(a => a.toString(16).padStart(2, "0")).join("")}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentVideoFrames.push(frame);
|
||||||
|
|
||||||
|
if (currentVideoFrames.length >= videoLength) {
|
||||||
|
const audio = new Audio();
|
||||||
|
audio.src = url;
|
||||||
|
audio.play();
|
||||||
|
|
||||||
|
started = true;
|
||||||
|
videoFrame = 0;
|
||||||
|
} else {
|
||||||
|
video.currentTime += seekBy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tool: () => {},
|
||||||
|
category: "special"
|
||||||
|
}
|
||||||
|
}
|
||||||
250
mods/weapons.js
250
mods/weapons.js
|
|
@ -75,7 +75,7 @@ elements.left_missile = {
|
||||||
"M1 AND EX:10|XX|EX:10",
|
"M1 AND EX:10|XX|EX:10",
|
||||||
"M2|EX:10|XX",
|
"M2|EX:10|XX",
|
||||||
],
|
],
|
||||||
category:"weapons",
|
category:"ammunition",
|
||||||
},
|
},
|
||||||
elements.right_missile = {
|
elements.right_missile = {
|
||||||
color: "#4c4e42",
|
color: "#4c4e42",
|
||||||
|
|
@ -84,7 +84,17 @@ elements.right_missile = {
|
||||||
"EX:10|XX|M1 AND EX:10",
|
"EX:10|XX|M1 AND EX:10",
|
||||||
"XX|EX:10|M2",
|
"XX|EX:10|M2",
|
||||||
],
|
],
|
||||||
category:"weapons",
|
category:"ammunition",
|
||||||
|
},
|
||||||
|
elements.up_missile = {
|
||||||
|
color: "#4c4e42",
|
||||||
|
behavior: [
|
||||||
|
"M2|M1 AND EX:10|M2",
|
||||||
|
"EX:10|XX|EX:10",
|
||||||
|
"XX|EX:10|XX",
|
||||||
|
],
|
||||||
|
category:"ammunition",
|
||||||
|
alias: "the element that some guy try to add to my mod without my permission but when doing so fucked the behavior grid up",
|
||||||
},
|
},
|
||||||
elements.cluster_munition = {
|
elements.cluster_munition = {
|
||||||
color: "#444444",
|
color: "#444444",
|
||||||
|
|
@ -115,7 +125,7 @@ elements.right_missile = {
|
||||||
"XX|XX|XX",
|
"XX|XX|XX",
|
||||||
"M2|M1 AND EX:10%10|M2",
|
"M2|M1 AND EX:10%10|M2",
|
||||||
],
|
],
|
||||||
category: "weapons",
|
category: "ammunition",
|
||||||
state: "solid",
|
state: "solid",
|
||||||
density: 1300,
|
density: 1300,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
|
|
@ -149,7 +159,7 @@ elements.left_bullet = {
|
||||||
"M1 AND EX:5|XX|XX",
|
"M1 AND EX:5|XX|XX",
|
||||||
"M2|XX|XX",
|
"M2|XX|XX",
|
||||||
],
|
],
|
||||||
category:"weapons",
|
category:"ammunition",
|
||||||
},
|
},
|
||||||
elements.right_bullet = {
|
elements.right_bullet = {
|
||||||
color: "#4c4e42",
|
color: "#4c4e42",
|
||||||
|
|
@ -158,5 +168,233 @@ elements.left_bullet = {
|
||||||
"XX|XX|M1 AND EX:5",
|
"XX|XX|M1 AND EX:5",
|
||||||
"XX|XX|M2",
|
"XX|XX|M2",
|
||||||
],
|
],
|
||||||
category:"weapons",
|
category:"ammunition",
|
||||||
};
|
},
|
||||||
|
elements.e_gun_left = {
|
||||||
|
color: "#C0C0C0",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"CR:left_bullet|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
conduct: 1,
|
||||||
|
density: 1300,
|
||||||
|
},
|
||||||
|
elements.e_gun_right = {
|
||||||
|
color: "#C0C0C0",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|CR:right_bullet",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
conduct: 1,
|
||||||
|
density: 1300,
|
||||||
|
},
|
||||||
|
elements.auto_rocket_launcher_left = {
|
||||||
|
color: "#C0C0C0",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"CR:left_rocket|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
},
|
||||||
|
elements.auto_rocket_launcher_right = {
|
||||||
|
color: "#C0C0C0",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|CR:right_rocket",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
density: 1300,
|
||||||
|
},
|
||||||
|
elements.left_rocket = {
|
||||||
|
color: "#4c4e42",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"M1 AND EX:10|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category:"ammunition",
|
||||||
|
},
|
||||||
|
elements.right_rocket = {
|
||||||
|
color: "#4c4e42",
|
||||||
|
behavior: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|M1 AND EX:10",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category:"ammunition",
|
||||||
|
},
|
||||||
|
elements.e_rocket_launcher_left = {
|
||||||
|
color: "#C0C0C0",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"CR:left_rocket|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
conduct: 1,
|
||||||
|
density: 1300,
|
||||||
|
},
|
||||||
|
elements.e_rocket_launcher_right = {
|
||||||
|
color: "#C0C0C0",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|CR:right_rocket",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
conduct: 1,
|
||||||
|
density: 1300,
|
||||||
|
},
|
||||||
|
elements.gaster_blast_left = {
|
||||||
|
color: "#c5e9f0",
|
||||||
|
behavior: [
|
||||||
|
"DL|DL|XX",
|
||||||
|
"DL AND CR:gaster_blast_left%5|XX|XX",
|
||||||
|
"DL|DL|XX",
|
||||||
|
],
|
||||||
|
tick: function(pixel) {
|
||||||
|
for (var i=0; i<3; i++) {
|
||||||
|
if (!tryMove(pixel, pixel.x-2, pixel.y)) {
|
||||||
|
if (!isEmpty(pixel.x-2, pixel.y,true)) {
|
||||||
|
var newPixel = pixelMap[pixel.x-2][pixel.y];
|
||||||
|
if (newPixel.element === "gaster_blast_left") { break; }
|
||||||
|
if (elements[newPixel.element].state == "gas") {
|
||||||
|
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
|
||||||
|
if (elements[newPixel.element].breakInto) {
|
||||||
|
breakPixel(newPixel);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deletePixel(newPixel.x, newPixel.y);
|
||||||
|
}}}}
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
break;
|
||||||
|
}}},
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
insulate: true,
|
||||||
|
},
|
||||||
|
elements.gaster_blast_right = {
|
||||||
|
color: "#c5e9f0",
|
||||||
|
behavior: [
|
||||||
|
"XX|DL|DL",
|
||||||
|
"XX|XX|DL AND CR:gaster_blast_right%5",
|
||||||
|
"XX|DL|DL",
|
||||||
|
],
|
||||||
|
tick: function(pixel) {
|
||||||
|
for (var i=0; i<3; i++) {
|
||||||
|
if (!tryMove(pixel, pixel.x+2, pixel.y)) {
|
||||||
|
if (!isEmpty(pixel.x+2, pixel.y,true)) {
|
||||||
|
var newPixel = pixelMap[pixel.x+2][pixel.y];
|
||||||
|
if (newPixel.element === "gaster_blast_right") { break; }
|
||||||
|
if (elements[newPixel.element].state == "gas") {
|
||||||
|
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
|
||||||
|
if (elements[newPixel.element].breakInto) {
|
||||||
|
breakPixel(newPixel);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deletePixel(newPixel.x, newPixel.y);
|
||||||
|
}}}}
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
break;
|
||||||
|
}}},
|
||||||
|
category: "energy",
|
||||||
|
state: "gas",
|
||||||
|
insulate: true,
|
||||||
|
},
|
||||||
|
elements.gaster_blaster_left = {
|
||||||
|
color: "#ffffff",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"CR:gaster_blast_left|XX|XX",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
conduct: 20,
|
||||||
|
},
|
||||||
|
elements.gaster_blaster_right = {
|
||||||
|
color: "#ffffff",
|
||||||
|
behavior: behaviors.WALL,
|
||||||
|
behaviorOn: [
|
||||||
|
"XX|XX|XX",
|
||||||
|
"XX|XX|CR:gaster_blast_right",
|
||||||
|
"XX|XX|XX",
|
||||||
|
],
|
||||||
|
category: "weapons",
|
||||||
|
state: "solid",
|
||||||
|
conduct: 20,
|
||||||
|
},
|
||||||
|
elements.fast_bullet_left = {
|
||||||
|
color: "#4c4e42",
|
||||||
|
behavior: [
|
||||||
|
"DL|DL|XX",
|
||||||
|
"DL|XX|XX",
|
||||||
|
"DL|DL|XX",
|
||||||
|
],
|
||||||
|
tick: function(pixel) {
|
||||||
|
for (var i=0; i<3; i++) {
|
||||||
|
if (!tryMove(pixel, pixel.x-3, pixel.y)) {
|
||||||
|
if (!isEmpty(pixel.x-3, pixel.y,true)) {
|
||||||
|
var newPixel = pixelMap[pixel.x-3][pixel.y];
|
||||||
|
if (newPixel.element === "fast_bullet_left") { break; }
|
||||||
|
if (elements[newPixel.element].state == "solid") {
|
||||||
|
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
|
||||||
|
if (elements[newPixel.element].breakInto) {
|
||||||
|
breakPixel(newPixel);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deletePixel(newPixel.x, newPixel.y);
|
||||||
|
}}}}
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
break;
|
||||||
|
}}},
|
||||||
|
category: "ammunition",
|
||||||
|
state: "solid",
|
||||||
|
insulate: true,
|
||||||
|
},
|
||||||
|
elements.fast_bullet_right = {
|
||||||
|
color: "#4c4e42",
|
||||||
|
behavior: [
|
||||||
|
"XX|DL|DL",
|
||||||
|
"XX|XX|DL",
|
||||||
|
"XX|DL|DL",
|
||||||
|
],
|
||||||
|
tick: function(pixel) {
|
||||||
|
for (var i=0; i<3; i++) {
|
||||||
|
if (!tryMove(pixel, pixel.x+3, pixel.y)) {
|
||||||
|
if (!isEmpty(pixel.x+3, pixel.y,true)) {
|
||||||
|
var newPixel = pixelMap[pixel.x+3][pixel.y];
|
||||||
|
if (newPixel.element === "fast_bullet_right") { break; }
|
||||||
|
if (elements[newPixel.element].state == "solid") {
|
||||||
|
if (Math.random() > (elements[newPixel.element].hardness || 0)) {
|
||||||
|
if (elements[newPixel.element].breakInto) {
|
||||||
|
breakPixel(newPixel);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deletePixel(newPixel.x, newPixel.y);
|
||||||
|
}}}}
|
||||||
|
deletePixel(pixel.x,pixel.y);
|
||||||
|
break;
|
||||||
|
}}},
|
||||||
|
category: "ammunition",
|
||||||
|
state: "solid",
|
||||||
|
insulate: true,
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue