diff --git a/mod-list.html b/mod-list.html
index 82d5e926..a955aaac 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -143,6 +143,7 @@
| color_tools.js | Adds tools that manipulate colors | Alice |
| controllable_pixel.js | Adds a pixel controlled using WASD (keyboard required) | Jayd |
| controllable_pixel_test.js | Adds a pixel that can be controlled with the keyboard keys. Read the commit description for more info. [PC ONLY] | Alice |
+| customtemptools.js | Adds temperature tools (set/heat/cool) that you change the value of. | guzzo86 |
| cpt_alt.js | Adds a more destructive variant of the controllable pixel | Alice |
| debugRework.js | Revamps the Debug tool | Fioushemastor |
| delete_all_of_element.js | Adds a tool that deletes every pixel of the element(s) the user clicks on | Alice |
@@ -214,11 +215,13 @@
| Machines & Technology |
| clone_liquid.js | Adds a liquid form of cloner | Alice |
+| colored_lightbulbs.js | Adds a light bulb that can be painted. | guzzo86, ggod |
| combustion.js | Adds components necessary for combustion engines | uptzik |
| conveyance.js | Conveyors, operated with and without electricity | Melecie |
| ExtraMachines.js | Adds sensors, energy resources, materials, and more | Mecoolnotcool |
| fine_tuned_cloner.js | Adds a cloner that can spawn at different rates and prevent unwated cloning | BatteRaquette58 |
| flipflop.js | Toggleable switches; Explanation | Flix |
+| fueled_generators.js | Fuel powered generators. |
| gameOfLife.js | Conway's Game of Life on a screen | ggod |
| logicgates.js | Adds predictable electricity and logic gates | nousernamefound |
| note_block.js | Adds musical Note Blocks | Alice |
@@ -253,6 +256,7 @@
| aChefsDream_beta.js | Beta testing for aChefsDream. The code can be found on GitHub | SquareScreamYT |
| bananas.js | Adds bananas and banana plants | Alice |
| CherrySoda.js | Adds materials to make Cherry soda. Benzaldehyde + seltzer = Cherrysoda. | guzzo86 |
+| GrapeSoda.js | Adds materials to make Grape soda. Methylanthranilic acid + seltzer = Cherrysoda. | guzzo86 |
| community_desserts.js | Adds various desserts from community suggestions | Tisquares |
| greenitemsandmore.js | Adds various green things, including apples and more food | zonneschijn7 |
| ketchup_mod.js | Adds a bunch of ketchup related stuff, plus a few other condiments | Nubo318 (main dev), Devi, Alice (contributors) |
@@ -285,6 +289,7 @@
| lost_souls.js | Adds souls and related elements, the mod can also be found on Github | pixelegend4, SquareScreamYT, salmonfishy |
| miscible_psoup_and_birthpool.js | Makes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical Menagerie | Alice |
| mobs.js | Adds Creepers, Zombies, and Skeletons | Alice |
+| moretrees.js | Adds 25 more tree & wood types. | guzzo86 |
| nocancer.js | Removes cancer from the game one tick after it is created | mollthecoder |
| nocancer2.js | Removes cancer from the game altogether. May be incompatible with other mods that spawn cancer | mollthecoder |
| nograssgrow.js | Prevents Grass from growing | mollthecoder |
diff --git a/mods/CherrySoda.js b/mods/CherrySoda.js
index 2561b7e7..3dc8b7a6 100644
--- a/mods/CherrySoda.js
+++ b/mods/CherrySoda.js
@@ -66,11 +66,11 @@ elements.cherrysoda_gas = {
}
elements.cherrysoda_ice = {
color: "#BF4F9C",
- behavior: behaviors.wALL,
+ behavior: behaviors.WALL,
category: "solids",
state: "solid",
density: 1065,
- desc: "Cherry soda gas.",
+ desc: "Cherry soda ice.",
tempHigh: -27,
stateHigh: "cherrysoda",
temp: -47,
diff --git a/mods/aScientistsWish.js b/mods/aScientistsWish.js
index 64769c97..a955006b 100644
--- a/mods/aScientistsWish.js
+++ b/mods/aScientistsWish.js
@@ -1,5 +1,12 @@
-//this mod is still on proggres (WIP) you can give feedback or report bug to these discord account. @salmonfishy or @carbon_monoxides6
-
+//Hello, this is are a science mod, we're made several things that related to science, examples like...electron, particle accelerator, and of course, carbon monoxide! :D
+//We made some things not scientific, so this mod is not too boring. ;)
+//we're normal people, who is not as smart as a real scientist. so if you have suggestion, feedback, or criticism, please let us know, so we can make this mod being more accurate. ><
+// discord account |
+// |
+// |
+// v
+// creator,leader,supervisor,coder,uploader = @carbon_monoxides6
+// co-creator,co-coder,assistant,debugger = @salmonfishy (has exited from this mod project)
elements.carbon_monoxide = {
color: "#b5b5b5",
behavior: behaviors.GAS,
@@ -68,39 +75,7 @@ elements.carbon_monoxide_detector = {
darkText: true,
hardness: 1,
};
-elements.cpu = {
- color: "#575757",
- behavior: behaviors.SOLID,
- category: "machines",
- state: "solid",
- insulate: true,
- movable: false,
- noMix: true,
- density: 75,
- tempHigh: 1414,
- stateHigh: ["explosion","metal_scrap"],
-reactions: {
- "virus": { elem1 : null , elem2:"malware", chance:0.9 },
- "metal_scrap": { elem2:"computer" },
-
- }
-};
-elements.computer = {
- color: "#2b2b2a",
- behavior: behaviors.SOLID,
- category: "machines",
- state: "solid",
- density: 8908,
- insulate: true,
- noMix: true,
- movable: false,
- tempHigh: 1414,
- stateHigh: ["explosion","metal_scrap"],
-reactions: {
- "virus": { elem1 : null , elem2:"malware", chance:0.9 },
- "water": { elem1: null , elem2: "electric" },
- }
-}
+
elements.electrons = {
color: "#b80606",
behavior: [
@@ -409,19 +384,6 @@ reactions: {
}
};
-elements.leather = {
-behavior: behaviors.SUPPORTPOWDER,
-color: ["#3f261d","#664f40",],
-state: "powder",
-category: "powders",
-tempHigh: 200,
-stateHigh: "fire",
-breakInto: "dust",
-burn: 20,
-burntime: 200,
-burnInto: "ash",
-};
-
elements.wrinkled_lemon = {
behavior: behaviors.POWDER,
color: ["#999543","#a6a03a",],
@@ -530,7 +492,7 @@ tempLow: -2,
stateLow: "frozen_yogurt",
stateLowColor: ["#f5f3cb","#f7f5bc"],
reactions: {
-"bacteria": { elem1: "yogurt", },
+"cell": { elem1: "yogurt", },
}
};
@@ -615,11 +577,11 @@ elements.hazmat_head = {
color: ["#404040","#1a1a1a","#737373"],
category: "life",
hidden: true,
- density: 1080,
+ density: 1380,
state: "solid",
conduct: .05,
- temp: 40,
- tempHigh: 3500,
+ temp: 39,
+ tempHigh: 6500,
stateHigh: ["ash","iron",],
tempLow: -180,
stateLow: "frozen_meat",
@@ -686,7 +648,10 @@ elements.hazmat_head = {
"mashed_potato": { elem2:null, chance:0.2 },
"sauce": { elem2:null, chance:0.2 },
"pickle": { elem2:null, chance:0.1 },
- "light": { stain1:"#fff154" },
+ "sun": { elem1:"cooked_meat" },
+ "water": { elem2:"bubble", attr2:{"clone":"water"}, chance:0.001 },
+ "salt_water": { elem2:"bubble", attr2:{"clone":"salt_water"}, chance:0.001 },
+ "pool_water": { elem2:"bubble", attr2:{"clone":"pool_water"}, chance:0.001 },
},
properties: {
dead: false
@@ -729,14 +694,14 @@ elements.hazmat_head = {
};
elements.hazmat_body = {
- color: ["#ffdf4f","#e8c00e","#ffd412"],
+ color: ["#2c7328","#2db526","#ffc42e","#f5c345","#cf9502",],
category: "life",
hidden: true,
- density: 1570,
+ density: 1370,
state: "solid",
conduct: .25,
temp: 39,
- tempHigh: 3500,
+ tempHigh: 6500,
stateHigh: ["metal_scrap","ash"],
tempLow: -180,
stateLow: "frozen_meat",
@@ -756,6 +721,7 @@ elements.hazmat_body = {
"grass_seed": { elem2:null, chance:0.05 },
"gold_coin": { elem2:null, chance:0.05 },
"diamond": { elem2:null, chance:0.05 },
+ "sun": { elem1:"molten_tin", },
},
properties: {
dead: false,
@@ -846,7 +812,6 @@ elements.hazmat_body = {
};
elements.hazmat_human = {
- // color: ["#404040","#1a1a1a","#737373"],
color: ["#404040","#1a1a1a","#737373"],
category: "life",
properties: {
@@ -896,7 +861,6 @@ elements.zombie_head = {
"meat": { elem2:null, chance:0.1 },
"cooked_meat": { elem2:null, chance:0.1 },
"cured_meat": { elem2:null, chance:0.1 },
- "light": { stain1:"#45eb2f" },
},
properties: {
dead: false
@@ -953,8 +917,13 @@ elements.zombie_body = {
breakInto: ["infection","rotten_meat","bone","zombie_virus",],
forceSaveColor: true,
reactions: {
- "head": { elem2: "zombie", },
- "body": { elem2: "zombie", },
+ "head": { elem2: ["rotten_meat","zombie",], chance:0.8, },
+ "body": { elem2: ["rotten_meat","zombie",], chance:0.5, },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.5 },
+ "rotten_meat": { elem2: null, chance:0.5 },
+ "meat": { elem2:null, chance:0.1 },
+ "cooked_meat": { elem2:null, chance:0.1 },
+ "cured_meat": { elem2:null, chance:0.1 },
},
properties: {
@@ -1081,8 +1050,8 @@ elements.zombie_virus = {
density: 30,
state: "gas",
reactions: {
- "head": { elem2: ["zombie","rotten_meat",], chance: 0.2, },
- "body": { elem2: ["zombie","rotten_meat",], chance: 0.2, },
+ "head": { elem2: ["zombie","rotten_meat",], chance: 0.5, },
+ "body": { elem2: ["zombie","rotten_meat",], chance: 0.5, },
}
}
@@ -1102,7 +1071,7 @@ elements.matter = {
elements.particle_accelerator_left = {
behavior: behaviors.SOLID,
color: ["#363aa3","#858585","#d1d1d1"],
- density: 2400,
+ density: 8200,
category: "machines",
state: "solid",
reactions: {
@@ -1112,7 +1081,7 @@ elements.particle_accelerator_left = {
elements.particle_accelerator_right = {
behavior: behaviors.SOLID,
color: ["#363aa3","#858585","#d1d1d1"],
- density: 2400,
+ density: 8200,
category: "machines",
state: "solid",
reactions: {
@@ -1132,8 +1101,8 @@ elements.accelerated_matter_left = {
category: "energy",
density: 2.20,
reactions: {
- "accelerated_matter_right": { elem1: ["antimatter","pop",], chance: 0.3, },
- "accelerated_matter_left": { elem1: ["antimatter","pop",], chance: 0.3, },
+ "accelerated_matter_right": { elem1: ["antimatter","pop",null,], chance: 0.3, },
+ "accelerated_matter_left": { elem1: ["antimatter","pop",null,], chance: 0.3, },
"antimatter": { elem1: "pop", chance: 0.01, },
}
@@ -1150,8 +1119,8 @@ elements.accelerated_matter_right = {
category:"energy",
density: 2.20,
reactions: {
- "accelerated_matter_left": { elem1: ["antimatter","pop",], chance: 0.3, },
- "accelerated_matter_right": { elem1: ["antimatter","pop",], chance: 0.3, },
+ "accelerated_matter_left": { elem1: ["antimatter","pop",null,], chance: 0.3, },
+ "accelerated_matter_right": { elem1: ["antimatter","pop",null,], chance: 0.3, },
"antimatter": { elem1: "pop", chance: 0.01, },
}
diff --git a/mods/daybreak.js b/mods/daybreak.js
new file mode 100644
index 00000000..72abed7b
--- /dev/null
+++ b/mods/daybreak.js
@@ -0,0 +1,426 @@
+elements.beautiful_sun = {
+ color: "#c12600BB",
+ tick: function(pixel) {
+ // minimum 1726
+ // maximum 7726
+ if (pixel.eclipse) { pixel.color = pixelColorPick(pixel,"#f68656"); var c=0.01}
+ else if (pixel.temp < 1500) { pixel.color = pixelColorPick(pixel,"#7a4e43BB"); }
+ else if (pixel.temp < 3600) { pixel.color = pixelColorPick(pixel,"#ffbdbdBB"); var c=0.05 }
+ else if (pixel.temp < 7000) { pixel.color = pixelColorPick(pixel,"#c12600BB"); var c=0.1 }
+ else if (pixel.temp < 11000) { pixel.color = pixelColorPick(pixel,"#ffb09cBB"); var c=0.25 }
+ else if (pixel.temp < 28000) { pixel.color = pixelColorPick(pixel,"#f7fff5BB"); var c=0.5 }
+ else { pixel.color = pixelColorPick(pixel,"#c3bdffBB"); var c=0.4 }
+ if (pixel.temp < 1500) { var c=0 }
+ for (var i = 0; i < adjacentCoords.length; i++) {
+ var x = pixel.x+adjacentCoords[i][0];
+ var y = pixel.y+adjacentCoords[i][1];
+ if (isEmpty(x,y)) {
+ if (Math.random() > c) {continue}
+ createPixel("beautiful_light", x, y);
+ pixelMap[x][y].color = pixel.color;
+ }
+ else if (!outOfBounds(x,y)) {
+ var newPixel = pixelMap[x][y];
+ if (elements[newPixel.element].id === elements.beautiful_sun.id) {
+ if (pixel.eclipse) { newPixel.eclipse = true }
+ if (pixel.temp!==newPixel.temp) {
+ var avg = (pixel.temp + newPixel.temp)/2;
+ pixel.temp = avg;
+ newPixel.temp = avg;
+ pixelTempCheck(pixel);
+ pixelTempCheck(newPixel);
+ }
+ }
+ else if (elements[newPixel.element].id === elements.sun.id) {
+ changePixel(newPixel, "beautiful_sun");
+ }
+ }
+ }
+ },
+ tool: function(pixel) {
+ if (pixel.element === "light") {
+ deletePixel(pixel.x,pixel.y);
+ }
+ if (pixel.element === "beautiful_light") {
+ deletePixel(pixel.x,pixel.y);
+ }
+ },
+ canPlace: true,
+ reactions: {
+ "hydrogen": { elem2:"helium", temp1:5 },
+ "helium": { elem2:"carbon_dioxide", temp1:5, tempMax:3600 },
+ "carbon_dioxide": { elem2:"neon", temp1:5, tempMax:1800 },
+ "sun": { elem2:"beautiful_sun", },
+ "light": { elem2:"beautiful_light" },
+ },
+ temp: 5504,
+ tempLow: -100,
+ stateLow: "supernova",
+ category: "brokenday",
+ state: "gas",
+ //density: 1408,
+ insulate: true,
+ noMix: true,
+ alias: "hateful_star",
+ movable: false
+},
+
+elements.beautiful_light = {
+ hidden: true,
+ name: "light",
+ color: "#c12600BB",
+ tick: function(pixel) {
+ if (Math.random() < 0.01) {
+ deletePixel(pixel.x,pixel.y);
+ return;
+ }
+ if (pixel.bx===undefined) {
+ // choose 1, 0, or -1
+ pixel.bx = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1;
+ pixel.by = Math.random() < 0.5 ? 1 : Math.random() < 0.5 ? 0 : -1;
+ // if both are 0, make one of them 1 or -1
+ if (pixel.bx===0 && pixel.by===0) {
+ if (Math.random() < 0.5) { pixel.bx = Math.random() < 0.5 ? 1 : -1; }
+ else { pixel.by = Math.random() < 0.5 ? 1 : -1; }
+ }
+ }
+ // move and invert direction if hit
+ if (pixel.bx && !tryMove(pixel, pixel.x+pixel.bx, pixel.y)) {
+ var newX = pixel.x + pixel.bx;
+ if (!isEmpty(newX, pixel.y, true)) {
+ var newPixel = pixelMap[pixel.x+pixel.bx][pixel.y];
+ if (!elements[newPixel.element].insulate) {
+ newPixel.temp += 1;
+ pixelTempCheck(newPixel);
+ }
+ if (!elements.light.reactions[newPixel.element]) {
+ pixel.color = newPixel.color;
+ }
+ else if (!elements.beautiful_light.reactions[newPixel.element]) {
+ pixel.color = newPixel.color;
+ }
+ }
+ pixel.bx = -pixel.bx;
+ }
+ if (pixel.by && !tryMove(pixel, pixel.x, pixel.y+pixel.by)) {
+ var newY = pixel.y + pixel.by;
+ if (!isEmpty(pixel.x, newY, true)) {
+ var newPixel = pixelMap[pixel.x][pixel.y+pixel.by];
+ if (!elements[newPixel.element].insulate) {
+ newPixel.temp += 0.05;
+ pixelTempCheck(newPixel);
+ }
+ if (!elements.light.reactions[newPixel.element]) {
+ pixel.color = newPixel.color;
+ }
+ else if (!elements.beautiful_light.reactions[newPixel.element]) {
+ pixel.color = newPixel.color;
+ }
+ }
+ pixel.by = -pixel.by;
+ }
+ },
+ reactions: {
+ "glass": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] },
+ "glass_shard": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] },
+ "rad_glass": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] },
+ "rad_shard": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] },
+ "steam": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] },
+ "rain_cloud": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] },
+ "cloud": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] },
+ "smog": { "color1":["#9f6060","#9f8260","#9f9f60","#609f60","#609f9f","#60609f","#9f609f"] },
+ "ice": { "color1":"#c2fff9" },
+ "rime": { "color1":"#c2fff9" },
+ "water": { "color1":"#a1bac9" },
+ "salt_water": { "color1":"#a1bac9" },
+ "sugar_water": { "color1":"#a1bac9" },
+ "dirty_water": { "color1":"#a1c9a8" },
+ "seltzer": { "color1":"#c2fff9" },
+ "diamond": { "color1":["#c2c5ff","#c2d9ff"] },
+ "rainbow": { "color1":["#ff0000","#ff8800","#ffff00","#00ff00","#00ffff","#0000ff","#ff00ff"] },
+ "static": { "color1":["#ffffff","#bdbdbd","#808080","#424242","#1c1c1c"] },
+ "sun": { elem2:"beautiful_sun", },
+ "light": { elem2:"beautiful_light" },
+ "meat": { elem2:"fused_organism" },
+ "head": { elem2:"melted_human" },
+ "body": { elem2:"melted_human" },
+ "dead_bug": { elem2:"melted_insect" },
+ "worm": { elem2:"melted_insect" },
+ "ant": { elem2:"melted_insect" },
+ "bee": { elem2:"melted_insect" },
+ "fly": { elem2:"melted_insect" },
+ "firefly": { elem2:"melted_insect" },
+ "stinkbug": { elem2:"melted_insect" },
+ "slug": { color2:["#997e12","#997e12","#997e12","#997e12","#997e12","#997e12","#403314","#403314","#403314","#403314","#403314","#403314","#124a44"], elem2:"melted_insect" },
+ "snail": { color2:"#5c3104", elem2:"melted_insect", chance:0.5 },
+ "tree_branch": { elem2:"wood" },
+ "plant": { elem2:"melted_plant" },
+ "grass": { elem2:"melted_plant" },
+ "evergreen": { color2:"#006300", elem2:"melted_plant" },
+ "pistil": { elem2:"melted_plant" },
+ "petal": { color2:["#ff0000","#ff8800","#ffff00","#88ff00","#00ff00","#00ff88","#00ffff","#0088ff","#0000ff","#8800ff","#ff00ff"], elem2:"melted_plant" },
+ "bamboo": { elem2:"melted_plant" },
+ "bamboo_plant": { elem2:"melted_plant" },
+ "cactus": { elem2:"melted_plant" },
+ "corn": { color2:["#f8d223","#d6ba2a","#f7f5ba","#dbd281","#cdb12d"], elem2:"melted_plant" },
+ "wheat": { color2:["#f1b569","#edb864","#de9c45","#c2853d"], elem2:"melted_plant" },
+ "dead_plant": { elem2:"melted_plant" },
+ "sapling": { elem2:"melted_plant" },
+ "pinecone": { color2:["#5c3e33","#472f27","#31211b"], elem2:"melted_plant" },
+ "bird": { color2:"#997457", elem2:"melted_animal" },
+ "rat": { color2:["#a698a9","#8c7d82","#ccc3cf"], elem2:"melted_animal" },
+ "fish": { elem2:"melted_fish", chance:0.2 },
+ "tadpole": { elem2:"melted_fish", chance:0.2 },
+ "frog": { elem2:"melted_fish", chance:0.2 },
+ },
+ temp: 35,
+ tempLow: -273,
+ stateLow: ["liquid_light",null],
+ stateLowColorMultiplier: 0.8,
+ category: "brokenday",
+ state: "gas",
+ density: 0.00001,
+ ignoreAir: true,
+ insulate: true
+},
+
+elements.melted_human = {
+ color: ["#f3e7db","#f7ead0","#eadaba","#d7bd96","#a07e56","#825c43"],
+ behavior: behaviors.LIQUID,
+ viscosity: 7500,
+ reactions: {
+ "oxygen": { elem2:"carbon_dioxide", chance:0.5 },
+ "meat": { elem2:null, chance:0.1 },
+ "cooked_meat": { elem2:null, chance:0.1 },
+ "sun": { elem2:"beautiful_sun", elem1:"cooked_meat" },
+ "light": { elem2:"beautiful_light" },
+ "dead_bug": { elem2:"fused_organism", chance:0.1 },
+ "ant": { elem2:"fused_organism", chance:0.2 },
+ "bee": { elem2:"fused_organism", chance:0.2 },
+ "fly": { elem2:"fused_organism", chance:0.2 },
+ "firefly": { elem2:"fused_organism", chance:0.2 },
+ "stinkbug": { elem2:"fused_organism", chance:0.2 },
+ "slug": { elem2:"fused_organism", chance:0.2 },
+ "snail": { elem2:"fused_organism", chance:0.15 },
+ "head": { elem2:"melted_human", chance:0.1 },
+ "body": { elem2:"melted_human", chance:0.1 },
+ "bird": { elem2:"fused_organism", chance:0.1 },
+ "rat": { color2:["#a698a9","#8c7d82","#ccc3cf"], elem2:"fused_organism", chance:0.1 },
+ "fish": { elem2:"fused_organism", chance:0.2 },
+ "tadpole": { elem2:"fused_organism", chance:0.2 },
+ "frog": { elem2:"fused_organism", chance:0.2 },
+ "melted_fish": { elem2:"fused_organism", chance:0.1 },
+ "melted_animal": { elem2:"fused_organism", chance:0.1 },
+ "melted_insect": { elem2:"fused_organism", chance:0.1 },
+ },
+ tempHigh: 300,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ burn: 10,
+ burnTime: 300,
+ burnInto: "cooked_meat",
+ state: "liquid",
+ density: 2000,
+ category: "brokenday",
+},
+
+elements.melted_animal = {
+ color: ["#997457","#a698a9"],
+ behavior: behaviors.LIQUID,
+ viscosity: 7500,
+ reactions: {
+ "oxygen": { elem2:"carbon_dioxide", chance:0.5 },
+ "meat": { elem2:null, chance:0.1 },
+ "cooked_meat": { elem2:null, chance:0.1 },
+ "sun": { elem2:"beautiful_sun", elem1:"cooked_meat" },
+ "light": { elem2:"beautiful_light" },
+ "dead_bug": { elem2:"fused_organism", chance:0.1 },
+ "ant": { elem2:"fused_organism", chance:0.2 },
+ "bee": { elem2:"fused_organism", chance:0.2 },
+ "fly": { elem2:"fused_organism", chance:0.2 },
+ "firefly": { elem2:"fused_organism", chance:0.2 },
+ "stinkbug": { elem2:"fused_organism", chance:0.2 },
+ "slug": { elem2:"fused_organism", chance:0.2 },
+ "snail": { elem2:"fused_organism", chance:0.15 },
+ "head": { elem2:"fused_organism", chance:0.1 },
+ "body": { elem2:"fused_organism", chance:0.1 },
+ "bird": { color2:"#997457", elem2:"melted_animal", chance:0.2 },
+ "rat": { color2:["#a698a9","#8c7d82","#ccc3cf"], elem2:"melted_animal", chance:0.2 },
+ "fish": { elem2:"fused_organism", chance:0.2 },
+ "tadpole": { elem2:"fused_organism", chance:0.2 },
+ "frog": { elem2:"fused_organism", chance:0.2 },
+ "melted_fish": { elem2:"fused_organism", chance:0.1 },
+ "melted_human": { elem2:"fused_organism", chance:0.1 },
+ "melted_insect": { elem2:"fused_organism", chance:0.1 },
+ },
+ tempHigh: 275,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ burn: 10,
+ burnTime: 300,
+ burnInto: "cooked_meat",
+ state: "liquid",
+ density: 2000,
+ category: "brokenday",
+},
+
+elements.melted_fish = {
+ color: "#ac8650",
+ behavior: behaviors.LIQUID,
+ viscosity: 7500,
+ reactions: {
+ "oxygen": { elem2:"carbon_dioxide", chance:0.5 },
+ "meat": { elem2:null, chance:0.1 },
+ "cooked_meat": { elem2:null, chance:0.1 },
+ "sun": { elem2:"beautiful_sun", elem1:"cooked_meat" },
+ "light": { elem2:"beautiful_light" },
+ "dead_bug": { elem2:"fused_organism", chance:0.1 },
+ "ant": { elem2:"fused_organism", chance:0.2 },
+ "bee": { elem2:"fused_organism", chance:0.2 },
+ "fly": { elem2:"fused_organism", chance:0.2 },
+ "firefly": { elem2:"fused_organism", chance:0.2 },
+ "stinkbug": { elem2:"fused_organism", chance:0.2 },
+ "head": { elem2:"fused_organism", chance:0.1 },
+ "body": { elem2:"fused_organism", chance:0.1 },
+ "bird": { elem2:"fused_organism", chance:0.2 },
+ "rat": { elem2:"fused_organism", chance:0.2 },
+ "slug": { elem2:"fused_organism", chance:0.2 },
+ "snail": { elem2:"fused_organism", chance:0.15 },
+ "fish": { elem2:"melted_fish", chance:0.2 },
+ "tadpole": { color2:"#87b574", elem2:"melted_fish", chance:0.2 },
+ "frog": { color2:"#607300", elem2:"melted_fish", chance:0.2 },
+ "melted_animal": { elem2:"fused_organism", chance:0.1 },
+ "melted_human": { elem2:"fused_organism", chance:0.1 },
+ "melted_insect": { elem2:"fused_organism", chance:0.1 },
+ },
+ tempHigh: 275,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ burn: 10,
+ burnTime: 300,
+ burnInto: "cooked_meat",
+ state: "liquid",
+ density: 2000,
+ category: "brokenday",
+},
+
+elements.melted_insect = {
+ color: ["#4c4e42","#5e0b04","#4c4e42","#5e0b04","#56482d","#52472c","#635443"],
+ behavior: behaviors.LIQUID,
+ viscosity: 4500,
+ reactions: {
+ "meat": { elem2:"fused_organism", chance:0.1 },
+ "cooked_meat": { elem2:"fused_organism", chance:0.1 },
+ "sun": { elem2:"beautiful_sun", elem1:"cooked_meat" },
+ "light": { elem2:"beautiful_light" },
+ "dead_bug": { elem2:"melted_insect", chance:0.1 },
+ "ant": { elem2:"melted_insect", chance:0.2 },
+ "bee": { color2:"#c4b100", elem2:"melted_insect", chance:0.2 },
+ "fly": { elem2:"melted_insect", chance:0.2 },
+ "firefly": { elem2:"melted_insect", chance:0.2 },
+ "stinkbug": { elem2:"melted_insect", chance:0.2 },
+ "slug": { color2:["#997e12","#997e12","#997e12","#997e12","#997e12","#997e12","#403314","#403314","#403314","#403314","#403314","#403314","#124a44"], elem2:"melted_insect", chance:0.2 },
+ "snail": { color2:"#5c3104", elem2:"melted_insect", chance:0.15 },
+ "fish": { elem2:"fused_organism", chance:0.2 },
+ "tadpole": { elem2:"fused_organism", chance:0.2 },
+ "frog": { elem2:"fused_organism", chance:0.2 },
+ "head": { elem2:"fused_organism", chance:0.1 },
+ "body": { elem2:"fused_organism", chance:0.1 },
+ "melted_human": { elem2:"fused_organism", chance:0.1 },
+ "bird": { elem2:"fused_organism", chance:0.1 },
+ "rat": { elem2:"fused_organism", chance:0.1 },
+ "melted_animal": { elem2:"fused_organism", chance:0.1 },
+ "melted_fish": { elem2:"fused_organism", chance:0.1 },
+ },
+ tempHigh: 100,
+ stateHigh: "dead_bug",
+ tempLow: -20,
+ stateLow: "dead_bug",
+ burn: 10,
+ burnTime: 150,
+ burnInto: "ash",
+ state: "liquid",
+ density: 2000,
+ category: "brokenday",
+},
+
+elements.melted_plant = {
+ color: ["#00bf00","#439809","#258b08","#118511","#127b12","#136d14"],
+ behavior: behaviors.LIQUID,
+ viscosity: 50000,
+ reactions: {
+ "sun": { elem2:"beautiful_sun", elem1:"dead_plant" },
+ "light": { elem2:"beautiful_light" },
+ "carbon_dioxide": { elem2:"oxygen" },
+ "tree_branch": { elem2:"wood" },
+ "plant": { elem2:"melted_plant", chance:0.2 },
+ "grass": { elem2:"melted_plant", chance:0.2 },
+ "evergreen": { color2:"#006300", elem2:"melted_plant", chance:0.2 },
+ "pistil": { elem2:"melted_plant", chance:0.2 },
+ "petal": { color2:["#CC9978","#CD8C6F","#BE785E","#CC9978","#CD8C6F","#BE785E","#A9D475","#5AF353","#8E5FA5"], elem2:"melted_plant", chance:0.1 },
+ "bamboo": { elem2:"melted_plant", chance:0.1 },
+ "bamboo_plant": { elem2:"melted_plant", chance:0.1 },
+ "cactus": { elem2:"melted_plant", chance:0.1 },
+ "corn": { color2:["#f8d223","#d6ba2a","#f7f5ba","#dbd281","#cdb12d"], elem2:"melted_plant", chance:0.1 },
+ "wheat": { color2:["#f1b569","#edb864","#de9c45","#c2853d"], elem2:"melted_plant", chance:0.1 },
+ "dead_plant": { elem2:"melted_plant", chance:0.1 },
+ "sapling": { elem2:"melted_plant", chance:0.05 },
+ "pinecone": { color2:["#5c3e33","#472f27","#31211b"], elem2:"melted_plant", chance:0.05 },
+ },
+ tempHigh: 250,
+ stateHigh: "dead_plant",
+ tempLow: -20,
+ stateLow: "frozen_plant",
+ burn: 10,
+ burnTime: 200,
+ burnInto: ["dead_plant","fire","fire","fire","ash"],
+ state: "liquid",
+ density: 2000,
+ category: "brokenday",
+};
+
+elements.fused_organism = {
+ color: ["#f3e7db","#f7ead0"],
+ behavior: behaviors.LIQUID,
+ viscosity: 4000,
+ reactions: {
+ "meat": { elem2:"fused_organism", chance:0.1 },
+ "cooked_meat": { elem2:"fused_organism", chance:0.1 },
+ "sun": { elem2:"beautiful_sun", elem1:"cooked_meat" },
+ "light": { elem2:"beautiful_light" },
+ "dead_bug": { elem2:"fused_organism", chance:0.1 },
+ "ant": { elem2:"fused_organism", chance:0.2 },
+ "bee": { elem2:"fused_organism", chance:0.2 },
+ "fly": { elem2:"fused_organism", chance:0.2 },
+ "firefly": { elem2:"fused_organism", chance:0.2 },
+ "stinkbug": { elem2:"fused_organism", chance:0.2 },
+ "slug": { elem2:"fused_organism", chance:0.2 },
+ "snail": { elem2:"fused_organism", chance:0.15 },
+ "head": { elem2:"fused_organism", chance:0.1 },
+ "body": { elem2:"fused_organism", chance:0.1 },
+ "melted_human": { elem2:"fused_organism", chance:0.1 },
+ "melted_insect": { elem2:"fused_organism", chance:0.1 },
+ "bird": { elem2:"fused_organism", chance:0.1 },
+ "rat": { elem2:"fused_organism", chance:0.1 },
+ "fish": { elem2:"fused_organism", chance:0.2 },
+ "tadpole": { elem2:"fused_organism", chance:0.2 },
+ "frog": { elem2:"fused_organism", chance:0.2 },
+ "melted_animal": { elem2:"fused_organism", chance:0.1 },
+ "melted_fish": { elem2:"fused_organism", chance:0.1 },
+ },
+ tempHigh: 250,
+ stateHigh: "cooked_meat",
+ tempLow: -20,
+ stateLow: "frozen_meat",
+ burn: 10,
+ burnTime: 400,
+ burnInto: "cooked_meat",
+ state: "liquid",
+ density: 2000,
+ category: "brokenday",
+};
+
+HighNumber = "36 41 20 36 46 20 36 41 20 36 46 20 32 30 20 33 44 20 32 30 20 36 37 20 36 31 20 37 39"
diff --git a/mods/fueled_generators.js b/mods/fueled_generators.js
new file mode 100644
index 00000000..4ec5d2bb
--- /dev/null
+++ b/mods/fueled_generators.js
@@ -0,0 +1,131 @@
+elements.gasoline = {
+ color: ["#FFFF66", "#FFFF66", "#FFFF66", "#FFFF66", "#FFFF66"],
+ burn: 15,
+ burnTime: 300,
+ viscosity: 0.6,
+ density: 750,
+ category: "fuels",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ desc: "Used in Gas Generators!"
+}
+
+elements.diesel = {
+ color: "#EBFBB5",
+ burn: 10,
+ burnTime: 600,
+ viscosity: 3,
+ density: 860,
+ category: "fuels",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ desc: "Used in Diesel Generators!"
+}
+
+elements.gasoline_generator = {
+ color: "#6d5f5d",
+ behavior: behaviors.WALL,
+ state: "solid",
+ density: 1000,
+ category: "machines",
+ properties: {
+ shocksToDo: 0
+ },
+ hoverStat: function(pixel){return (pixel.shocksToDo).toString() || 0},
+ tick: function(pixel){
+ if (pixel.shocksToDo <= 40){
+ for (var i = 0; i < adjacentCoords.length; i++){
+ var coord = adjacentCoords[i]
+ var x = pixel.x + coord[0]
+ var y = pixel.y + coord[1]
+ if (!isEmpty(x, y, true)){
+ var otherPixel = pixelMap[x][y]
+ if (otherPixel.element == "gasoline"){
+ deletePixel(x, y)
+ if(!pixel.shocksToDo){pixel.shocksToDo = 0}
+ pixel.shocksToDo += 10
+ }
+ else if (otherPixel.element == "gasoline_generator"){
+ var otherPixel = pixelMap[x][y]
+ var otherShock = otherPixel.shocksToDo || 0
+ var currentShock = pixel.shocksToDo || 0
+ if (otherShock > currentShock){
+ otherPixel.shocksToDo --
+ pixel.shocksToDo ++
+ } else if (currentShock > otherShock) {
+ otherPixel.shocksToDo ++
+ pixel.shocksToDo --
+ }
+ }
+ }
+ }}
+ if (!pixel.charge && !pixel.chargeCD && pixel.shocksToDo){
+ for (var i = 0; i < adjacentCoords.length; i++){
+ var coord = adjacentCoords[i]
+ var x = pixel.x + coord[0]
+ var y = pixel.y + coord[1]
+ if (!isEmpty(x, y, true)){
+ if (elements[pixelMap[x][y].element].conduct > 0){
+ pixel.charge = 1
+ pixel.shocksToDo --
+ break;
+ }
+ }
+ }
+ }
+ }
+}
+
+elements.diesel_generator = {
+ color: "#FF9C27",
+ behavior: behaviors.WALL,
+ state: "solid",
+ density: 1000,
+ category: "machines",
+ properties: {
+ shocksToDo: 0
+ },
+ hoverStat: function(pixel){return (pixel.shocksToDo).toString() || 0},
+ tick: function(pixel){
+ if (pixel.shocksToDo <= 80){
+ for (var i = 0; i < adjacentCoords.length; i++){
+ var coord = adjacentCoords[i]
+ var x = pixel.x + coord[0]
+ var y = pixel.y + coord[1]
+ if (!isEmpty(x, y, true)){
+ var otherPixel = pixelMap[x][y]
+ if (otherPixel.element == "diesel"){
+ deletePixel(x, y)
+ if(!pixel.shocksToDo){pixel.shocksToDo = 0}
+ pixel.shocksToDo += 20
+ }
+ else if (otherPixel.element == "diesel_generator"){
+ var otherPixel = pixelMap[x][y]
+ var otherShock = otherPixel.shocksToDo || 0
+ var currentShock = pixel.shocksToDo || 0
+ if (otherShock > currentShock){
+ otherPixel.shocksToDo --
+ pixel.shocksToDo ++
+ } else if (currentShock > otherShock) {
+ otherPixel.shocksToDo ++
+ pixel.shocksToDo --
+ }
+ }
+ }
+ }}
+ if (!pixel.charge && !pixel.chargeCD && pixel.shocksToDo){
+ for (var i = 0; i < adjacentCoords.length; i++){
+ var coord = adjacentCoords[i]
+ var x = pixel.x + coord[0]
+ var y = pixel.y + coord[1]
+ if (!isEmpty(x, y, true)){
+ if (elements[pixelMap[x][y].element].conduct > 0){
+ pixel.charge = 1
+ pixel.shocksToDo --
+ break;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/mods/moretrees.js b/mods/moretrees.js
new file mode 100644
index 00000000..8439863b
--- /dev/null
+++ b/mods/moretrees.js
@@ -0,0 +1,490 @@
+// CreateTree function made by nousernamefound.
+function createTree(treeName, leafColor, woodName){
+ let woodColor = elements[woodName].color
+ elements[treeName + "_sapling"] = {
+ color: leafColor,
+ tick: function(pixel) {
+ if (!tryMove(pixel,pixel.x,pixel.y+1)) {
+ if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) {
+ if (!outOfBounds(pixel.x,pixel.y+1)) {
+ var dirtPixel = pixelMap[pixel.x][pixel.y+1];
+ if (dirtPixel && (eLists.SOIL.indexOf(dirtPixel.element) !== -1 || dirtPixel.element === "grass")) {
+ changePixel(dirtPixel,"root");
+ }
+ }
+ if (isEmpty(pixel.x,pixel.y-1)) {
+ if (!pixel.wc) {
+ pixel.wc = woodColor;
+ pixel.lc = leafColor;
+ }
+ movePixel(pixel,pixel.x,pixel.y-1);
+ createPixel(Math.random() > 0.5 ? woodName : (treeName + "_branch"),pixel.x,pixel.y+1);
+ pixelMap[pixel.x][pixel.y+1].wc = pixel.wc;
+ pixelMap[pixel.x][pixel.y+1].lc = pixel.lc;
+ pixelMap[pixel.x][pixel.y+1].color = pixelColorPick(pixelMap[pixel.x][pixel.y+1], pixel.wc);
+ }
+ }
+ else if (pixel.age > 1000 && Math.random() < 0.05) {
+ changePixel(pixel,woodName);
+ pixel.color = pixelColorPick(pixel, pixel.wc);
+ }
+ 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,
+ }
+ elements[treeName + "_branch"] = {
+ color: woodColor,
+ tick: function(pixel) {
+ if (!pixel.burning) {
+ if (!pixel.lc) { pixel.lc = leafColor }
+ if (!pixel.wc) { pixel.wc = woodColor }
+ if (isEmpty(pixel.x-1,pixel.y-1) && Math.random() < 0.02) {
+ if (Math.random() < 0.5) {
+ createPixel("plant",pixel.x-1,pixel.y-1);
+ pixelMap[pixel.x-1][pixel.y-1].color = pixelColorPick(pixelMap[pixel.x-1][pixel.y-1], pixel.lc);
+ }
+ else {
+ createPixel(treeName + "_branch",pixel.x-1,pixel.y-1);
+ pixelMap[pixel.x-1][pixel.y-1].color = pixelColorPick(pixelMap[pixel.x-1][pixel.y-1], pixel.wc);
+ pixelMap[pixel.x-1][pixel.y-1].wc = pixel.wc;
+ pixelMap[pixel.x-1][pixel.y-1].lc = pixel.lc;
+ }
+ }
+ if (isEmpty(pixel.x+1,pixel.y-1) && Math.random() < 0.02) {
+ if (Math.random() < 0.5) {
+ createPixel("plant",pixel.x+1,pixel.y-1);
+ pixelMap[pixel.x+1][pixel.y-1].color = pixelColorPick(pixelMap[pixel.x+1][pixel.y-1], pixel.lc);
+ }
+ else {
+ createPixel(treeName + "_branch",pixel.x+1,pixel.y-1);
+ pixelMap[pixel.x+1][pixel.y-1].color = pixelColorPick(pixelMap[pixel.x+1][pixel.y-1], pixel.wc);
+ pixelMap[pixel.x+1][pixel.y-1].wc = pixel.wc;
+ pixelMap[pixel.x+1][pixel.y-1].lc = pixel.lc;
+ }
+ }
+ if (isEmpty(pixel.x,pixel.y-1) && Math.random() < 0.02) {
+ if (Math.random() < 0.75) {
+ createPixel("plant",pixel.x,pixel.y-1);
+ pixelMap[pixel.x][pixel.y-1].color = pixelColorPick(pixelMap[pixel.x][pixel.y-1], pixel.lc);
+ }
+ else {
+ createPixel(treeName + "_branch",pixel.x,pixel.y-1);
+ pixelMap[pixel.x][pixel.y-1].color = pixelColorPick(pixelMap[pixel.x][pixel.y-1], pixel.wc);
+ pixelMap[pixel.x][pixel.y-1].wc = pixel.wc;
+ pixelMap[pixel.x][pixel.y-1].lc = pixel.lc;
+ }
+ }
+ }
+ doDefaults(pixel);
+ },
+ movable: false,
+ tempHigh: 100,
+ stateHigh: woodName,
+ tempLow: -30,
+ stateLow: woodName,
+ category: "life",
+ burn: 2,
+ burnTime: 300,
+ burnInto: ["sap","ember","charcoal","smoke"],
+ hidden: true,
+ state: "solid",
+ density: 1500,
+ hardness: 0.15,
+ breakInto: ["sap","sawdust"],
+ seed: treeName + "_sapling",
+ forceSaveColor: true
+ }
+ }
+
+elements.red_wood = {
+ density: 450,
+ burnTime: 100,
+ burn: 15,
+ color: "#D4381E",
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.7, // A highly durable wood
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.pine_wood = {
+ density: 550,
+ burnTime: 125,
+ burn: 20,
+ color: ["#D59F71", "#BC7852", "B46F4C", "#D59F71"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.4, // Medium hardness
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.oak = {
+ density: 700,
+ burnTime: 150,
+ burn: 30,
+ color: ["#ECCCAC", "C2965F", "D29A67", "B07C4F", "CAA06E"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.8, // Exceptionally hard and durable
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.birch = {
+ density: 670,
+ burnTime: 175,
+ burn: 25,
+ color: ["#FFFFFF", "#000000", "#FFFFFF"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.6, // Relatively hard
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.cherry_wood = {
+ density: 400,
+ burnTime: 100,
+ burn: 10,
+ color: ["#8E3D27", "#A44B2B", "#883B29"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.3, // Relatively soft
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.maple_wood = {
+ density: 600,
+ burnTime: 175,
+ burn: 25,
+ color: ["#DAA520", "#C68E17", "#FFD700"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.7, // Durable and dense
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.walnut_wood = {
+ density: 750,
+ burnTime: 225,
+ burn: 30,
+ color: ["#5A4522", "#3E2E1F", "#8B5A2B"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.9, // Extremely hard and dense
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.mahogany = {
+ density: 800,
+ burnTime: 250,
+ burn: 35,
+ color: ["#C04000", "#7B3F00", "#88441C"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.85, // Very hard and resistant to decay
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.cedar = {
+ density: 480,
+ burnTime: 150,
+ burn: 20,
+ color: ["#B8860B", "#CD853F", "#8B4513"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.5, // Moderately hard and lightweight
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.ash_wood = {
+ density: 620,
+ burnTime: 100,
+ burn: 25,
+ color: ["#A52A2A", "#D2691E", "#8B4513"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.6, // Hardwood with good shock resistance
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.poplar_wood = {
+ density: 420,
+ burnTime: 120,
+ burn: 15,
+ color: ["#9E8040", "#BEBD7F", "#D7D4BB"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.4, // Softwood with low density
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.fir_wood = {
+ density: 560,
+ burnTime: 130,
+ burn: 20,
+ color: ["#B4CDCD", "#8B9CA9", "#CED1D9"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.5, // Medium hardness and lightweight
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.teak = {
+ density: 660,
+ burnTime: 180,
+ burn: 30,
+ color: ["#B5651D", "#704214", "#8B4513"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.7, // High natural oil content and durability
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.spruce = {
+ density: 480,
+ burnTime: 110,
+ burn: 15,
+ color: ["#8B4513", "#B8860B", "#CD853F"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.5, // Moderately hard and lightweight
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.cypress_wood = {
+ density: 520,
+ burnTime: 140,
+ burn: 20,
+ color: ["#827A68", "#6B4226", "#A0522D"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.6, // Medium hardness with good decay resistance
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.beech_wood = {
+ density: 670,
+ burnTime: 160,
+ burn: 25,
+ color: ["#F0DC82", "#C0C0C0", "#9C661F"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.7, // Hardwood with good strength and wear resistance
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.sapele = {
+ density: 670,
+ burnTime: 150,
+ burn: 25,
+ color: ["#8B4513", "#FF4500", "#CD853F"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.8, // Hardwood with good stability and workability
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.pear_wood = {
+ density: 670,
+ burnTime: 160,
+ burn: 20,
+ color: ["#FFD700", "#CD853F", "#FF6347"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.6, // Hardwood with fine grain and smooth texture
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.hickory = {
+ density: 800,
+ burnTime: 200,
+ burn: 30,
+ color: ["#664C28", "#8B6914", "#8B4513"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.9, // Extremely hard and dense
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.sycamore = {
+ density: 530,
+ burnTime: 140,
+ burn: 20,
+ color: ["#F4A460", "#F0E68C", "#A0522D"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.5, // Medium hardness and lightweight
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.willow_wood = {
+ density: 380,
+ burnTime: 100,
+ burn: 10,
+ color: ["#C19A6B", "#8B4513", "#CD853F"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.3, // Softwood with low density
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.zebra_wood = {
+ density: 800,
+ burnTime: 220,
+ burn: 30,
+ color: ["#F0DC82", "#8B4513", "#FFD700"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.9, // Extremely hard and dense
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.basswood = {
+ density: 410,
+ burnTime: 110,
+ burn: 15,
+ color: ["#D2B48C", "#DEB887", "#F5F5DC"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.4, // Softwood with low density
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.larch_wood = {
+ density: 590,
+ burnTime: 130,
+ burn: 20,
+ color: ["#C9AE5D", "#E0C49D", "#9C661F"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.6, // Medium hardness with good durability
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.silver_maple = {
+ density: 560,
+ burnTime: 140,
+ burn: 25,
+ color: ["#C0C0C0", "#D3D3D3", "#BEBEBE"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.5, // Moderate hardness and lightweight
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.balsam_fir = {
+ density: 460,
+ burnTime: 120,
+ burn: 15,
+ color: ["#B4CDCD", "#8B9CA9", "#CED1D9"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.4, // Softwood with moderate hardness
+ breakInto: "sawdust",
+ burnInto: "ash"
+};
+
+elements.elm_wood = {
+ density: 560,
+ burnTime: 140,
+ burn: 20,
+ color: ["#8B4513", "#228B22", "#CD5C5C"],
+ category: "solids",
+ behavior: behaviors.WALL,
+ state: "solid",
+ hardness: 0.6, // Medium hardness and lightweight
+ breakInto: "sawdust",
+ burnInto: "ash",
+};
+
+createTree("red_wood", "#2E6E4E", "red_wood");
+createTree("pine", "#D59F71", "pine_wood");
+createTree("oak", "#ECCCAC", "oak");
+createTree("birch", "#FFFFFF", "birch");
+createTree("cherry_blossom", "#8E3D27", "cherry_wood");
+createTree("maple", "#DAA520", "maple_wood");
+createTree("walnut", "#5A4522", "walnut_wood");
+createTree("mahogany", "#C04000", "mahogany");
+createTree("cedar", "#B8860B", "cedar");
+createTree("ash_wood", "#A52A2A", "ash_wood");
+createTree("poplar_wood", "#9E8040", "poplar_wood");
+createTree("fir_wood", "#B4CDCD", "fir_wood");
+createTree("teak", "#B5651D", "teak");
+createTree("spruce", "#8B4513", "spruce");
+createTree("cypress", "#827A68", "cypress_wood");
+createTree("beech", "#F0DC82", "beech_wood");
+createTree("sapele", "#8B4513", "sapele");
+createTree("pear", "#FFD700", "pear_wood");
+createTree("hickory", "#664C28", "hickory");
+createTree("sycamore", "#F4A460", "sycamore");
+createTree("willow", "#C19A6B", "willow_wood");
+createTree("zebra_wood", "#F0DC82", "zebra_wood");
+createTree("basswood", "#D2B48C", "basswood");
+createTree("larch", "#C9AE5D", "larch_wood");
+createTree("silver_maple", "#C0C0C0", "silver_maple");
+createTree("balsam_fir", "#B4CDCD", "balsam_fir");
+createTree("elm", "#8B4513", "elm_wood");
diff --git a/mods/wine.js b/mods/wine.js
new file mode 100644
index 00000000..a75f8d0f
--- /dev/null
+++ b/mods/wine.js
@@ -0,0 +1,8 @@
+ elements.wine = {
+ color: "#89281D",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ viscosity: 20000,
+ state: "liquid",
+ density: 380,
+};