Merge branch 'R74nCom:main' into main
This commit is contained in:
commit
64d5df630c
|
|
@ -1 +1,10 @@
|
|||
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).
|
||||
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -272,6 +272,8 @@
|
|||
<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_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>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>
|
||||
|
|
|
|||
1055
mods/aChefsDream.js
1055
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",
|
||||
};
|
||||
|
|
@ -176,7 +176,7 @@ worldgentypes.fields = {
|
|||
decor: [
|
||||
["sapling", 0.04, 20],
|
||||
["grass", 0.25, 30],
|
||||
["grass", 0.25, 30],
|
||||
["grass", 0.25, 30],
|
||||
["bee", 0.02, 25],
|
||||
["cloud", 1, 2],
|
||||
],
|
||||
|
|
@ -197,9 +197,272 @@ worldgentypes.sycamore_forest = {
|
|||
],
|
||||
baseHeight: 0.25
|
||||
};
|
||||
|
||||
elements.onion = {
|
||||
color: "#f5b042",
|
||||
behavior: behaviors.POWDER,
|
||||
category: "land",
|
||||
state: "solid",
|
||||
};
|
||||
|
||||
elements.palm_tree_seed = {
|
||||
color: "#7a603d",
|
||||
tick: function(pixel) {
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100) {
|
||||
if (!outOfBounds(pixel.x,pixel.y+1)) {
|
||||
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
|
||||
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
|
||||
changePixel(dirtPixel,"root");
|
||||
}
|
||||
}
|
||||
if (isEmpty(pixel.x,pixel.y-1) && pixel.height < 7) {
|
||||
movePixel(pixel,pixel.x,pixel.y-1);
|
||||
createPixel("palm_tree_stem",pixel.x,pixel.y+1);
|
||||
|
||||
pixel.height++
|
||||
}
|
||||
}
|
||||
else if (pixel.age > 150 && pixel.height > 6 && Math.random() < 0.1) {
|
||||
changePixel(pixel,"palm_tree_top");
|
||||
}
|
||||
pixel.age++;
|
||||
doDefaults(pixel);
|
||||
},
|
||||
properties: {
|
||||
"age":0,
|
||||
"height": 0
|
||||
},
|
||||
tempHigh: 100,
|
||||
stateHigh: "dead_plant",
|
||||
tempLow: -2,
|
||||
stateLow: "frozen_plant",
|
||||
burn: 65,
|
||||
burnTime: 15,
|
||||
category: "life",
|
||||
state: "solid",
|
||||
density: 1500,
|
||||
cooldown: defaultCooldown,
|
||||
seed: true,
|
||||
behavior: [
|
||||
"XX|XX|XX",
|
||||
"XX|XX|XX",
|
||||
"XX|M1|XX",
|
||||
],
|
||||
};
|
||||
|
||||
elements.palm_tree_stem = {
|
||||
color: "#8f6c3f",
|
||||
behavior: behaviors.WALL,
|
||||
tempHigh: 400,
|
||||
stateHigh: ["ember","charcoal","fire","fire","fire"],
|
||||
category: "solids",
|
||||
burn: 5,
|
||||
burnTime: 300,
|
||||
burnInto: ["ember","charcoal","fire"],
|
||||
state: "solid",
|
||||
hardness: 0.15,
|
||||
breakInto: "sawdust",
|
||||
breakIntoColor: ["#dba66e","#cc8a64"],
|
||||
hidden: true
|
||||
}
|
||||
elements.palm_tree_top = {
|
||||
color: "#8f6c3f",
|
||||
behavior: behaviors.WALL,
|
||||
tempHigh: 400,
|
||||
stateHigh: ["ember","charcoal","fire","fire","fire"],
|
||||
category: "solids",
|
||||
burn: 5,
|
||||
burnTime: 300,
|
||||
burnInto: ["ember","charcoal","fire"],
|
||||
state: "solid",
|
||||
hardness: 0.15,
|
||||
breakInto: "sawdust",
|
||||
breakIntoColor: ["#dba66e","#cc8a64"],
|
||||
properties:{
|
||||
"leftleaves": 0,
|
||||
"rightleaves": 0,
|
||||
},
|
||||
hidden: true,
|
||||
tick: function(pixel) {
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 0) {
|
||||
if (isEmpty(pixel.x+1,pixel.y)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+1,pixel.y);
|
||||
|
||||
pixel.rightleaves++
|
||||
}
|
||||
}
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 1) {
|
||||
if (isEmpty(pixel.x+2,pixel.y)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+2,pixel.y);
|
||||
|
||||
pixel.rightleaves++
|
||||
}
|
||||
}
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 2) {
|
||||
if (isEmpty(pixel.x+3,pixel.y)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+3,pixel.y);
|
||||
|
||||
pixel.rightleaves++
|
||||
}
|
||||
}
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.rightleaves == 3) {
|
||||
if (isEmpty(pixel.x+4,pixel.y+1)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x+4,pixel.y+1);
|
||||
|
||||
pixel.rightleaves++
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 0) {
|
||||
if (isEmpty(pixel.x-1,pixel.y)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-1,pixel.y);
|
||||
|
||||
pixel.leftleaves++
|
||||
}
|
||||
}
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 1) {
|
||||
if (isEmpty(pixel.x-2,pixel.y)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-2,pixel.y);
|
||||
|
||||
pixel.leftleaves++
|
||||
}
|
||||
}
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 2) {
|
||||
if (isEmpty(pixel.x-3,pixel.y)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-3,pixel.y);
|
||||
|
||||
pixel.leftleaves++
|
||||
}
|
||||
}
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100 && pixel.leftleaves == 3) {
|
||||
if (isEmpty(pixel.x-4,pixel.y+1)) {
|
||||
createPixel(Math.random() > 0.5 ? "palm_leaves" : "palm_leaves",pixel.x-4,pixel.y+1);
|
||||
|
||||
pixel.leftleaves++
|
||||
}
|
||||
}
|
||||
pixel.age++;
|
||||
doDefaults(pixel);
|
||||
},
|
||||
}
|
||||
elements.palm_leaves = {
|
||||
color: ["#569923","#5ea12b"],
|
||||
reactions: {
|
||||
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
||||
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
||||
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
|
||||
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 }
|
||||
},
|
||||
category:"life",
|
||||
tempHigh: 100,
|
||||
stateHigh: "dead_plant",
|
||||
tempLow: -1.66,
|
||||
stateLow: "frozen_plant",
|
||||
burn:65,
|
||||
burnTime:60,
|
||||
burnInto: "dead_plant",
|
||||
breakInto: "dead_plant",
|
||||
state: "solid",
|
||||
density: 1050,
|
||||
hidden: true
|
||||
}
|
||||
elements.fruit_vine = {
|
||||
color: "#00df00",
|
||||
behavior: [
|
||||
"ST:wood|ST:wood|ST:wood",
|
||||
"ST:wood AND CR:grape%0.01|XX|ST:wood AND CR:grape%0.01",
|
||||
"ST:wood|ST:wood AND M1|ST:wood",
|
||||
],
|
||||
reactions: {
|
||||
"vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
||||
"baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
||||
"bleach": { elem1:"dead_plant", elem2:null, chance:0.05 },
|
||||
"alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 },
|
||||
"mercury": { elem1:"dead_plant", elem2:null, chance:0.01 },
|
||||
"stench": { elem2:null, chance:0.25 },
|
||||
"carbon_dioxide": { elem2:"oxygen", chance:0.25 },
|
||||
},
|
||||
category:"life",
|
||||
tempHigh: 100,
|
||||
stateHigh: "dead_plant",
|
||||
tempLow: -1.66,
|
||||
stateLow: "frozen_plant",
|
||||
burn:15,
|
||||
burnTime:60,
|
||||
burnInto: "dead_plant",
|
||||
state: "solid",
|
||||
density: 1050,
|
||||
breakInto: "dead_plant"
|
||||
}
|
||||
elements.fruit_vine_seed = {
|
||||
color: "#6b4f36",
|
||||
tick: function(pixel) {
|
||||
if (Math.random() < 0.1 && pixel.age > 50 && pixel.temp < 100) {
|
||||
if (!outOfBounds(pixel.x,pixel.y+1)) {
|
||||
var dirtPixel = pixelMap[pixel.x][pixel.y+1];
|
||||
if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") {
|
||||
changePixel(dirtPixel,"root");
|
||||
}
|
||||
}
|
||||
if (isEmpty(pixel.x,pixel.y-1)) {
|
||||
if (!isEmpty(pixel.x+1,pixel.y-1) || !isEmpty(pixel.x-1,pixel.y-1)) {
|
||||
movePixel(pixel,pixel.x,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x,pixel.y+1);
|
||||
}
|
||||
}
|
||||
if (!isEmpty(pixel.x+2,pixel.y-1) && isEmpty(pixel.x+1,pixel.y-1)) {
|
||||
movePixel(pixel,pixel.x+1,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x-1,pixel.y+1);
|
||||
}
|
||||
if (!isEmpty(pixel.x-2,pixel.y-1) && isEmpty(pixel.x-1,pixel.y-1)) {
|
||||
movePixel(pixel,pixel.x-1,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x+1,pixel.y+1);
|
||||
}
|
||||
if (!isEmpty(pixel.x,pixel.y-1) && !isEmpty(pixel.x+1,pixel.y) && isEmpty(pixel.x+1,pixel.y-1)) {
|
||||
movePixel(pixel,pixel.x+1,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x-1,pixel.y+1);
|
||||
}
|
||||
if (!isEmpty(pixel.x,pixel.y-1) && !isEmpty(pixel.x-1,pixel.y) && isEmpty(pixel.x-1,pixel.y-1)) {
|
||||
movePixel(pixel,pixel.x-1,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x+1,pixel.y+1);
|
||||
}
|
||||
/*if (pixelMap[pixel.x+1][pixel.y-1].element !== "wood" && pixelMap[pixel.x-1][pixel.y-1].element !== "wood") {
|
||||
movePixel(pixel,pixel.x,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x,pixel.y+1);
|
||||
if (isEmpty(pixel.x+1,pixel.y-1) && pixelMap[pixel.x+2][pixel.y-1].element === "wood") {
|
||||
movePixel(pixel,pixel.x+1,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x-1,pixel.y+1);
|
||||
}
|
||||
if (isEmpty(pixel.x-1,pixel.y-1) && pixelMap[pixel.x-2][pixel.y-1].element === "wood") {
|
||||
movePixel(pixel,pixel.x-1,pixel.y-1);
|
||||
createPixel("fruit_vine",pixel.x+1,pixel.y+1);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
else if (pixel.age > 400 && Math.random() < 0.1) {
|
||||
changePixel(pixel,"fruit_vine");
|
||||
}
|
||||
pixel.age++;
|
||||
doDefaults(pixel);
|
||||
},
|
||||
properties: {
|
||||
"age":0,
|
||||
},
|
||||
tempHigh: 100,
|
||||
stateHigh: "dead_plant",
|
||||
tempLow: -2,
|
||||
stateLow: "frozen_plant",
|
||||
burn: 65,
|
||||
burnTime: 15,
|
||||
category: "life",
|
||||
state: "solid",
|
||||
density: 1500,
|
||||
cooldown: defaultCooldown,
|
||||
seed: true,
|
||||
behavior: [
|
||||
"ST:wood,fruit_vine|ST:wood,fruit_vine|ST:wood,fruit_vine",
|
||||
"ST:wood,fruit_vine|XX|ST:wood,fruit_vine",
|
||||
"ST:wood,fruit_vine|M1|ST:wood,fruit_vine",
|
||||
],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
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,
|
||||
tempHigh: 500,
|
||||
category: "solids",
|
||||
|
|
@ -16,3 +45,71 @@ elements.molten_green_gold = {
|
|||
conduct: 0.87,
|
||||
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(){
|
||||
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.
|
||||
<table id="variables">
|
||||
<thead>
|
||||
|
|
@ -1457,8 +1457,8 @@ runAfterLoad(function(){
|
|||
</th>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
`
|
||||
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>
|
||||
`
|
||||
`)
|
||||
// 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>
|
||||
// `
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
excludeRandom: true,
|
||||
tempHigh: 500,
|
||||
stateHigh: "ash",
|
||||
color: "#114700",
|
||||
|
|
@ -784,6 +785,7 @@ elements.fart = {
|
|||
behavior: behaviors.DGAS,
|
||||
category: "joke",
|
||||
state: "gas",
|
||||
excludeRandom: true
|
||||
};
|
||||
|
||||
elements.chips = {
|
||||
|
|
@ -998,7 +1000,7 @@ elements.incinerator = {
|
|||
insulate: true,
|
||||
excludeRandom: true,
|
||||
reactions: {
|
||||
"fart": { elem1: null, elem2: "ohio" },
|
||||
"fart": { elem1: null, elem2: "kaboom" },
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -1211,7 +1213,7 @@ elements.dark_energy = {
|
|||
excludeRandom: true
|
||||
};
|
||||
|
||||
elements.ohio = {
|
||||
elements.kaboom = {
|
||||
hidden: true,
|
||||
hardness: 1,
|
||||
hidden: true,
|
||||
|
|
@ -1380,15 +1382,6 @@ elements.yoylecake = {
|
|||
state: "liquid",
|
||||
};
|
||||
|
||||
elements.banana = {
|
||||
tempHigh: 300,
|
||||
stateHigh: "ash",
|
||||
color: "#f06c0e",
|
||||
behavior: behaviors.STURDYPOWDER,
|
||||
category: "food",
|
||||
state: "liquid",
|
||||
};
|
||||
|
||||
elements.cool_ray = {
|
||||
color: ["#0cdaed","#baf9ff"],
|
||||
tick: function(pixel) {
|
||||
|
|
@ -1692,7 +1685,8 @@ elements.liquid_filler = {
|
|||
"M1|M1 AND CH:liquid_filler%50|M1",
|
||||
],
|
||||
category: "special",
|
||||
state: "liquid"
|
||||
state: "liquid",
|
||||
excludeRandom: true
|
||||
};
|
||||
|
||||
elements.antimony = {
|
||||
|
|
@ -1736,12 +1730,93 @@ elements.unstain = {
|
|||
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.cook.category = "tools",
|
||||
elements.room_temp.category = "tools",
|
||||
|
||||
elements.beans.tempHigh = 349,
|
||||
elements.beans.stateHigh = "burnt_beans"
|
||||
elements.grass.onSelect = function() {
|
||||
logMessage("go touch this");
|
||||
}
|
||||
|
||||
if (!elements.radiation.reactions) elements.egg.reactions = {};
|
||||
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",
|
||||
"M2|EX:10|XX",
|
||||
],
|
||||
category:"weapons",
|
||||
category:"ammunition",
|
||||
},
|
||||
elements.right_missile = {
|
||||
color: "#4c4e42",
|
||||
|
|
@ -84,7 +84,17 @@ elements.right_missile = {
|
|||
"EX:10|XX|M1 AND EX:10",
|
||||
"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 = {
|
||||
color: "#444444",
|
||||
|
|
@ -115,7 +125,7 @@ elements.right_missile = {
|
|||
"XX|XX|XX",
|
||||
"M2|M1 AND EX:10%10|M2",
|
||||
],
|
||||
category: "weapons",
|
||||
category: "ammunition",
|
||||
state: "solid",
|
||||
density: 1300,
|
||||
hidden: true,
|
||||
|
|
@ -149,7 +159,7 @@ elements.left_bullet = {
|
|||
"M1 AND EX:5|XX|XX",
|
||||
"M2|XX|XX",
|
||||
],
|
||||
category:"weapons",
|
||||
category:"ammunition",
|
||||
},
|
||||
elements.right_bullet = {
|
||||
color: "#4c4e42",
|
||||
|
|
@ -158,5 +168,233 @@ elements.left_bullet = {
|
|||
"XX|XX|M1 AND EX:5",
|
||||
"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