From a6372626a8ec115805099895ec40f02b111fc693 Mon Sep 17 00:00:00 2001
From: TheOneAndOnlyD <155376320+TheOneAndOnlyD@users.noreply.github.com>
Date: Mon, 1 Jan 2024 09:21:11 -0800
Subject: [PATCH 01/39] Update Ultra_Steel.js
---
mods/Ultra_Steel.js | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/mods/Ultra_Steel.js b/mods/Ultra_Steel.js
index 43ccdaf2..2765012a 100644
--- a/mods/Ultra_Steel.js
+++ b/mods/Ultra_Steel.js
@@ -1,7 +1,7 @@
elements.Ultra_Steel = {
color: "#8f748f",
behavior: behaviors.WALL,
- category: "solid",
+ category: "solids",
state: "solid",
tempHigh: 26525,
stateHigh: "Molten_Ultra_Steel",
@@ -18,3 +18,44 @@ elements.Molten_Ultra_Steel = {
"molten_gold": { elem1: "salt", elem2: "salt" },
}
};
+
+elements.Chocolate_Muffin = {
+ color: ["#7e4d32","#492500","#5e3400","#360101"],
+ behavior: behavior.WALL,
+ category: "food",
+ state: "solid",
+};
+
+elements.Cacao_Beans = {
+ color: "#48291C",
+ behavior: behaviors.POWDER,
+ breakInto: "Crushed_Cacao_Beans"
+};
+
+elements.Crushed_Cacao_Beans = {
+ color: ["#48291C","#543324","#3d251a"],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "sugar": {elem1: "Chocolate_Mixture"}
+};
+
+elements.Chocolate_Mixture = {
+ color: ["#7B3F00","#572e03","#824a10"],
+ behavior: behaviors.POWDER,
+ reactions: {
+ "Milk": {elem1: "Chocolate"}
+};
+
+elements.Chocolate = {
+ color: "#48291C",
+ behavior: behaviors.WALL,
+ reactions: {
+ "Dough": {elem1: "Chocolate_Dough"}
+};
+
+elements.Chocolate_Dough = {
+ color: "#",
+ behavior: behaviors.LIQUID,
+ tempHigh: 450,
+ stateHigh: "Chocolate_Muffin",
+};
From a6e9c0bd6d25d6409534b3ee8344204f5a75a8e0 Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Thu, 11 Jan 2024 17:13:19 +0800
Subject: [PATCH 02/39] More Food and Animals!! :) v1.0
---
mods/food&animals.js | 582 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 582 insertions(+)
create mode 100644 mods/food&animals.js
diff --git a/mods/food&animals.js b/mods/food&animals.js
new file mode 100644
index 00000000..75acc02e
--- /dev/null
+++ b/mods/food&animals.js
@@ -0,0 +1,582 @@
+/*
+
+food&animals.js
+
+MORE FOODS AND ANIMALS!!
+
+Created by @SquareScreamYT and @RealerRaddler
+
+v1.0
+
+Changelog (1.0)
+ - added chickens
+ - lays chicken eggs
+ - added chicks
+ - hatches from chicken eggs
+ - grows into chickens
+ -added chicken eggs
+ -added frozen chicken eggs
+ -added hard boiled eggs
+ -made by putting chicken eggs in hot water
+ - added soup
+ - made from broth and water
+ - added noodles
+ - made by putting batter in hot water
+ - added chicken meat
+ - raw chicken meat
+ - cooked chicken meat
+ - battered raw chicken
+ - made by mixing raw chicken and batter
+ - raw chicken nuggets
+ - made by mixing battered raw chicken with crumbs
+ - (cooked) chicken nuggets
+ - added crushed worm
+ - chicken food
+ - made by smashing worms or mixing worms with rocks
+ - added frozen crushed worms
+ - added fried potato
+ - made by putting potatoes in hot cooking oil
+ - added smoked chicken
+ - made by putting raw chicken with smoke
+ - added boiled chicken
+ - made by putting raw chicken in hot water
+ - added fried chicken
+ - made by putting raw chicken in hot cooking oil
+ - added steamed chicken
+ - made by putting raw chicken with steam
+ - added olives
+ - added olives
+ - olives can be smashed into cooking oil
+ - added olive wood
+ - added olive branches
+ - added olive leaves
+ - added cooking oil
+*/
+elements.chicken = {
+ color: ["#c29046", "#f5d271", "#d4bd7d"],
+ behavior: [
+ "M2%1|M2%2|M2%1",
+ "M2%10|XX|M2%10",
+ "XX|M1%33|XX",
+ ],
+ category:"life",
+ state: "solid",
+ reactions: {
+ "meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "chicken_nugget": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "grass": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "worm": { elem2: "crushed_worm", chance:0.3},
+ "cooked_meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "fish": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "rat": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "snail": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "frog": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "slug": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "grape": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "wheat_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "flower_seed": { elem2:null, chance:0.32, func:behaviors.FEEDPIXEL },
+ "corn_seed": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "corn": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "potato_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "grass_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "nut": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "dead_bug": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "bee": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "ant": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "flea": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "termite": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "lichen": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.3 },
+ "mercury": { elem1:"rotten_meat", chance:0.1 },
+ "bleach": { elem1:"rotten_meat", chance:0.1 },
+ "infection": { elem1:"rotten_meat", chance:0.025 },
+ "uranium": { elem1:"rotten_meat", chance:0.1 },
+ "cyanide": { elem1:"rotten_meat", chance:0.1 },
+ "chlorine": { elem1:"meat", chance:0.1 },
+ "dirty_water": { elem1:"rotten_meat", chance:0.0001 },
+ },
+ egg: "chicken_egg",
+ foodNeed: 10,
+ temp: 40,
+ tempHigh: 75,
+ stateHigh: "cooked_chicken",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ breakInto: ["feather", "raw_chicken"],
+ burn:85,
+ burnTime:450,
+ state: "solid",
+ density: 1117,
+ conduct: 0.3,
+};
+
+elements.chicken_egg = {
+ color: ["#e0d3ab","#d9cdb5"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|FX%5 AND CH:chick%0.1|XX",
+ "M2%30|M1|M2%30",
+ ],
+ category: "food",
+ state: "solid",
+ temp: 30,
+ tempLow: -18,
+ stateLow: "frozen_chicken_egg",
+ breakInto: ["yolk"],
+ tempHigh: 500,
+ stateHigh: ["calcium", "ash"],
+ burn:50,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ reactions: {
+ "water": { elem1:null, elem2:"hard_boiled_egg", chance:10, tempMin:80 }
+ }
+};
+
+elements.frozen_chicken_egg = {
+ color: ["#e0d3cf","#d9cdd3"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ temp: -20,
+ tempHigh: 10,
+ stateHigh: "chicken_egg",
+ breakInto: ["calcium", "hard_yolk"],
+ burn:50,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ hidden: true,
+};
+
+elements.hard_boiled_egg = {
+ color: ["#e0d3ab","#d9cdb5","#e4d4b4","#f3f3ef"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 1000,
+ stateHigh: ["ash", "smoke"],
+ density: 820.33,
+ isFood: true,
+ hidden: true,
+};
+
+elements.chick = {
+ color: ["#ffdf85", "#ffef5c"],
+ behavior: [
+ "M2%1|M2%2|M2%1",
+ "M2%10|FX%5 AND CH:chicken%0.1|M2%10",
+ "XX|M1%33|XX",
+ ],
+ category: "life",
+ state: "solid",
+ egg: "chicken_egg",
+ foodNeed: 20,
+ temp: 40,
+ tempHigh: 75,
+ stateHigh: "cooked_meat",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ breakInto: "blood",
+ burn:85,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ reactions: {
+ "crushed_worm": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL},
+ "meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "chicken_nugget": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "grass": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "worm": { elem2: "crushed_worm", chance:0.3},
+ "cooked_meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "fish": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "rat": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "snail": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "frog": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "slug": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "grape": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "wheat_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "flower_seed": { elem2:null, chance:0.32, func:behaviors.FEEDPIXEL },
+ "corn_seed": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "corn": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "potato_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "grass_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "nut": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "dead_bug": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "bee": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "ant": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "flea": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "termite": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "lichen": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.3 },
+ "mercury": { elem1:"rotten_meat", chance:0.1 },
+ "bleach": { elem1:"rotten_meat", chance:0.1 },
+ "infection": { elem1:"rotten_meat", chance:0.025 },
+ "uranium": { elem1:"rotten_meat", chance:0.1 },
+ "cyanide": { elem1:"rotten_meat", chance:0.1 },
+ "chlorine": { elem1:"meat", chance:0.1 },
+ "dirty_water": { elem1:"rotten_meat", chance:0.0001 },
+ }
+};
+
+elements.soup = {
+ color: "#fbd189",
+ behavior: behaviors.LIQUID,
+ tempHigh: 130,
+ stateHigh: ["steam","steam","steam","fragrance"],
+ tempLow: 0,
+ category: "food",
+ state: "liquid",
+ density: 1052,
+ conduct: 0.03,
+ stain: -0.01,
+ isFood: true,
+ hidden: true,
+}
+
+if (!elements.broth.reactions) elements.broth.reactions = {};
+elements.broth.reactions.water = { elem1: "soup", elem2: "soup" }
+
+elements.noodles = {
+ color: ["#F3BA4F", "#F7D161"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ temp: 30,
+ breakInto: ["crumb"],
+ tempHigh: 130,
+ stateHigh: ["toast"],
+ burn:50,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ hidden: true,
+};
+
+if (!elements.batter.reactions) elements.batter.reactions = {};
+elements.batter.reactions.water = {elem2: "noodles", tempMin: 70}
+
+elements.battered_raw_chicken = {
+ color: ["#eacfa9", "#ecd2af"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp:25,
+ tempHigh: 600,
+ stateHigh: ["ash","smoke"],
+ reactions: {
+ "crumb": { elem1: "raw_chicken_nugget", elem2: null },
+ },
+ hidden: true,
+};
+
+elements.steamed_chicken = {
+ color:["#cfba8f", "#d2b788"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp:50,
+ tempHigh: 600,
+ stateHigh: ["ash","smoke"],
+ isFood: true,
+ hidden: true,
+}
+
+elements.smoked_chicken = {
+ color:["#AF4523", "#AC481F"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp:55,
+ tempHigh: 600,
+ stateHigh: ["ash","smoke"],
+ isFood: true,
+ hidden: true,
+}
+
+elements.crushed_worm = {
+ color: ["#e56932", "#c0714e"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 20,
+ tempHigh: 50,
+ stateHigh: ["ash", "smoke"],
+ tempLow: -4,
+ stateLow: "frozen_worm",
+ density: 200.33,
+ isFood: true,
+ hidden: true,
+};
+
+elements.worm.reactions.rock = { elem1: "crushed_worm" }
+elements.worm.breakInto = "crushed_worm"
+
+elements.frozen_crushed_worm = {
+ color: ["#2fcbae", "#3edabd", "#b2d5d9"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: -4,
+ tempHigh: 20,
+ stateHigh: "crushed_worm",
+ density: 200.33,
+ isFood: false,
+ hidden: true,
+};
+
+elements.cooked_chicken = {
+ color: ["#c17c20", "#ebad2b", "#f7b846"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 40,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+};
+
+elements.raw_chicken = {
+ color: ["#dfc8bd", "#e2cdc0", "#b9a195"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ burnInto: "cook_chicken",
+ temp:25,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ reactions: {
+ "batter": { elem1: "battered_raw_chicken", elem2: null },
+ "smoke": {elem1: "smoked_chicken"},
+ "steam": {elem1: "steamed_chicken"},
+ "water": {elem1: "boiled_chicken", tempMin: 70},
+ "cooking_oil": {elem1: "fried_chicken", tempMin: 70}
+ }
+};
+
+elements.boiled_chicken = {
+ color: ["#F9CC84", "#EDCE89", "#F8CB78"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 65,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+}
+
+elements.fried_chicken = {
+ color: ["#E87D1A", "#E77106", "#E77106"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 90,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+}
+
+elements.raw_chicken_nugget = {
+ color: ["#d6bc7e", "#d2b47a", "#c7a969"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ burnInto: "chicken_nugget",
+ temp:25,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+ reactions: {
+ "cooking_oil": {elem1: "chicken_nugget", tempMin: 70}
+ }
+};
+
+elements.chicken_nugget = {
+ color: ["#D77105", "#D77105", "#EB8C2C", "#EB8C2C"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 40,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ tempLow: -20,
+ stateLow: "frozen_chicken_nugget",
+ isFood: true,
+ density: 100,
+ hidden: true,
+};
+
+elements.frozen_chicken_nugget = {
+ color: ["#45a69c", "#73d9cd", "#3f9f95", "#389d8e"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: -20,
+ tempHigh: 40,
+ stateHigh: "chicken_nugget",
+ isFood: false,
+ density: 100,
+ hidden: true,
+};
+
+elements.olive_wood = {
+ color: "#632e1f",
+ 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"],
+}
+elements.olive_branch = {
+ color: "#632e1f",
+ behavior: [
+ "CR:olive_leaves,olive_branch%2|CR:olive_leaves,olive_leaves,olive_leaves,olive_branch%2|CR:olive_leaves,olive_branch%2",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ tempHigh: 100,
+ stateHigh: "olive_wood",
+ tempLow: -30,
+ stateLow: "olive_wood",
+ category: "life",
+ burn: 40,
+ burnTime: 50,
+ burnInto: ["sap","ember","charcoal"],
+ hidden: true,
+ state: "solid",
+ density: 1500,
+ hardness: 0.15,
+ breakInto: ["sap","sawdust"],
+ hidden: true,
+}
+elements.olive_leaves = {
+ color: ["#407603","#376502","#2e5502"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:olive%0.15|XX",
+ ],
+ 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,
+ seed: "olive_seed",
+ hidden: true
+}
+elements.olive = {
+ color: ["#6e8b3d","#7c9d45"],
+ behavior: behaviors.POWDER,
+ 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 },
+ "rock": { elem1:"cooking_oil", elem2:"rock", chance:0.035 },
+ },
+ category:"food",
+ tempHigh: 100,
+ stateHigh: "dead_plant",
+ tempLow: -1.66,
+ stateLow: "frozen_plant",
+ burn:65,
+ burnTime:60,
+ burnInto: "dead_plant",
+ breakInto: "cooking_oil",
+ state: "solid",
+ density: 1050,
+ isFood: false
+}
+
+
+elements.cooking_oil = {
+ color: "#ffc844",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ tempHigh: 400,
+ stateHigh: "fire",
+ burn: 70,
+ burnTime: 300,
+ burnInto: ["carbon_dioxide","fire"],
+ viscosity: 250,
+ state: "liquid",
+ density: 825,
+ hidden: true,
+ temp: 30,
+ reaction: {
+ "potato": {elem1: "fried_potato", tempMin: 70}
+ }
+},
+
+/*
+
+elements.potato_skin = {
+ color: ["#DC8A5A", "#A86C36", "#DC9A59", "#A76B35"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 20,
+ hidden: true,
+ tempHigh: 250,
+ stateHigh: ["ash", "smoke"]
+}
+
+elements.peeled_potato = {
+ color: ["#D6C39F", "#D1C09D", "#D1C09D", "#CDBF9E"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 20,
+ hidden: true,
+ reaction: {
+ "cooking_oil": { elem1: "fried_potato", tempMin: 70 }
+ }
+}
+
+*/
+
+elements.fried_potato = {
+ color: ["#DD7908", "#D57206", "#CA6801", "#D68001"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 35,
+ hidden: true,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ isFood: true,
+}
From 90b8c2b708351359b91fe78a52780b24e35fd49f Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Thu, 11 Jan 2024 17:16:36 +0800
Subject: [PATCH 03/39] Add the mod to mod list!
---
mod-list.html | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mod-list.html b/mod-list.html
index 5eff199f..37bcf947 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -199,6 +199,7 @@
Food & Cooking
bananas.js Adds bananas and banana plants Alice
+food&animals.js Adds more food and animals SquareScreamYT and RealerRaddler
ketchup_mod.js Adds a bunch of ketchup related stuff, plus a few other condiments Nubo318 (main dev), Devi, Alice (contributors)
lemonade.js Adds lemons and lemonade personman / baconthemyth
morefoodsmod.js Adds more foods Clide4
@@ -216,6 +217,7 @@
fantastic_creatures.js Adds various animals Melecie
fantasy_elements.js Fantasy creatures and substances pixelegend4
fey_and_more.js Adds fairies, magic, and a lot of other things Melecie
+food&animals.js Adds more food and animals SquareScreamYT and RealerRaddler
fwibblen.js Adds a flying creature that turns nickel into itself, and a second creature that does the same to the first one Alice
human_edit.js Improvements to humans Alice
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
From 04c5cb043c931c757b01dd0ec69191d077a86ed1 Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Thu, 11 Jan 2024 17:19:43 +0800
Subject: [PATCH 04/39] Fix Changelog Spacing :)
---
mods/food&animals.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/mods/food&animals.js b/mods/food&animals.js
index 75acc02e..6b2e1269 100644
--- a/mods/food&animals.js
+++ b/mods/food&animals.js
@@ -8,16 +8,16 @@ Created by @SquareScreamYT and @RealerRaddler
v1.0
-Changelog (1.0)
+Changelog (v1.0)
- added chickens
- lays chicken eggs
- added chicks
- hatches from chicken eggs
- grows into chickens
- -added chicken eggs
- -added frozen chicken eggs
- -added hard boiled eggs
- -made by putting chicken eggs in hot water
+ - added chicken eggs
+ - added frozen chicken eggs
+ - added hard boiled eggs
+ - made by putting chicken eggs in hot water
- added soup
- made from broth and water
- added noodles
From 0b4199ccfa202c041db74ecb87c0e10ea898d85b Mon Sep 17 00:00:00 2001
From: stefanblox <155691462+stefanblox@users.noreply.github.com>
Date: Thu, 11 Jan 2024 14:39:00 -0300
Subject: [PATCH 05/39] sbstuff 2.1
a bunch of stuff react with radiation now
---
mods/sbstuff.js | 106 +++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 100 insertions(+), 6 deletions(-)
diff --git a/mods/sbstuff.js b/mods/sbstuff.js
index 873df578..c02d12ef 100644
--- a/mods/sbstuff.js
+++ b/mods/sbstuff.js
@@ -237,7 +237,7 @@ elements.lemon = {
elements.lemon.reactions = {
"juice": { elem1: null, elem2: "lemonade" }
-}
+};
elements.lemonade = {
isFood: true,
@@ -580,12 +580,91 @@ elements.radioactive_grape = {
hidden: true,
tempHigh: 1000,
stateHigh: "ash",
- color: "#7d00d1",
+ color: ["#7d00d1", "#8047d6"],
behavior: behaviors.RADPOWDER,
category: "food",
state: "liquid",
};
+elements.radioactive_meat = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#4b5742", "#91564a"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_chocolate = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#404d29", "#4d3429"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_egg = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#93cc87",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_milk = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#9bb895",
+ behavior: behaviors.RADLIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.radioactive_potato = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#6e8544",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_water = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "steam",
+ color: "#baf0aa",
+ behavior: behaviors.RADLIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.radioactive_bread = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#aec74c",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_toast = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#565e38",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
elements.shampoo = {
viscosity: 1000,
@@ -1137,6 +1216,15 @@ elements.dollar = {
state: "liquid",
};
+elements.ruby = {
+ tempHigh: 2000,
+ stateHigh: "magma",
+ color: ["#d6091a", "#e83544"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+};
+
elements.incinerate.category = "tools",
elements.cook.category = "tools",
elements.room_temp.category = "tools",
@@ -1144,10 +1232,16 @@ elements.room_temp.category = "tools",
elements.beans.tempHigh = 349,
elements.beans.stateHigh = "burnt_beans",
-elements.grape.reactions = {
- "radiation": { elem1: null, elem2: "radioactive_grape" },
- "melted_chocolate": { elem1: null, elem2: "chocolate_grape" },
- "chocolate": { elem1: null, elem2: "chocolate_grape", chance: 0.1 },
+elements.radiation.reactions = {
+ "meat": { elem1: null, elem2: "radioactive_meat" },
+ "grape": { elem1: null, elem2: "radioactive_grape" },
+ "egg": { elem1: null, elem2: "radioactive_egg" },
+ "potato": { elem1: null, elem2: "radioactive_potato" },
+ "water": { elem1: null, elem2: "radioactive_water" },
+ "chocolate": { elem1: null, elem2: "radioactive_chocolate" },
+ "milk": { elem1: null, elem2: "radioactive_milk" },
+ "bread": { elem1: null, elem2: "radioactive_bread" },
+ "toast": { elem1: null, elem2: "radioactive_toast" },
};
elements.egg.reactions = {
From e298455009c1793a315e4dab4c6db5cfb147111b Mon Sep 17 00:00:00 2001
From: zonneschijn7 <127043954+zonneschijn7@users.noreply.github.com>
Date: Thu, 11 Jan 2024 19:30:38 +0100
Subject: [PATCH 06/39] Update greenitemsandmore.js (BAKED BEANS)
added baked beans, hidden item, get it by getting normal beans to 40 degrees
---
mods/greenitemsandmore.js | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/mods/greenitemsandmore.js b/mods/greenitemsandmore.js
index c81f819c..40e4a968 100644
--- a/mods/greenitemsandmore.js
+++ b/mods/greenitemsandmore.js
@@ -143,4 +143,16 @@ elements.fruit_doughnut = {
};
elements.dough.reactions = {
"yeast": { elem1: "fruit_doughnut", elem2: "fruit_doughnut" }
-}
+};
+elements.beans.tempHigh = "40"
+elements.beans.stateHigh = "baked_beans"
+elements.baked_beans = {
+ color: ["#bf6211", "#c46b1d", "#b35d12", "#a65b19"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempLow: 40,
+ stateLow: "beans",
+ desc: "Baked beans from the greenitemsandmore.js mod.",
+ hidden: true,
+};
From f369e80092c7ccb1525718be6c958462bc920f83 Mon Sep 17 00:00:00 2001
From: zonneschijn7 <127043954+zonneschijn7@users.noreply.github.com>
Date: Thu, 11 Jan 2024 19:44:59 +0100
Subject: [PATCH 07/39] Update greenitemsandmore.js (KIWI!!!)
added kiwi
---
mods/greenitemsandmore.js | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/mods/greenitemsandmore.js b/mods/greenitemsandmore.js
index 40e4a968..f0fb1ef2 100644
--- a/mods/greenitemsandmore.js
+++ b/mods/greenitemsandmore.js
@@ -156,3 +156,14 @@ elements.baked_beans = {
desc: "Baked beans from the greenitemsandmore.js mod.",
hidden: true,
};
+elements.kiwi = {
+ color: ["#469e3e", "#9e813e"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ desc: "Kiwi from the greenitemsandmore.js mod.",
+ breakInto: "juice",
+ breakIntoColor: "#2e7533",
+ tempHigh: 120
+ stateHigh: "ash"
+};
From de4bf72e33dc7aef61b2ac4c28017cd5847100d3 Mon Sep 17 00:00:00 2001
From: Alexthetransfem <124483815+theenchantedsword@users.noreply.github.com>
Date: Thu, 11 Jan 2024 16:47:13 -0600
Subject: [PATCH 08/39] morechemistry.js v1.5.0
---
mods/morechemistry.js | 243 +++++++++++++++++++++++++++++++++++++++---
1 file changed, 230 insertions(+), 13 deletions(-)
diff --git a/mods/morechemistry.js b/mods/morechemistry.js
index a1196515..c220dfdf 100644
--- a/mods/morechemistry.js
+++ b/mods/morechemistry.js
@@ -1,5 +1,19 @@
//This mod was made by Alex the transfem, https://discord.com/users/778753696804765696 on discord and https://www.tiktok.com/@alextheagenenby?_t=8hoCVI3NRhu&_r=1 on tiktok.
-//version 1.4.2: added incinerator, E-incinerator and improved mixer to be compatible with nousersthings.js and to have a range of effect.
+function pixelInRange(pixel, range){
+ let i = 0;
+ while (i < range.length) {
+ if (pixel.x === range[i][0] && pixel.y === range[i][1]) {
+ i++;
+ return true;
+ } else {
+ i++;
+ }
+
+ }
+ return false;
+
+}
+
function customExplosion(pixel1, pixel2, radius, list) {
let x = pixel1.x;
let y = pixel1.y;
@@ -966,11 +980,129 @@ elements.morechemmixer = {
}
},
tick: function(pixel) {
- pixel.clone = `range: ${num}`;
- let range = mouseRange(pixel.x, pixel.y, num);
+ if(pixel.start == pixelTicks) {
+ pixel.range = num;
+ }
+ let range = mouseRange(pixel.x, pixel.y, pixel.range);
mix(range);
}
}
+let num1 = 0;
+elements.morechemsmasher = {
+ name: "MoreChemSmasher",
+ behavior: behaviors.WALL,
+ category: "machines",
+ noMix: true,
+ onSelect: function(pixel) {
+ let item = prompt("enter range for smashing.");
+ if(/^\d+$/.test(item)){
+ num1 = parseInt(item);
+ } else {
+ alert("that is not an integer.");
+ }
+ },
+ tick: function(pixel) {
+ if(pixel.start == pixelTicks) {
+ pixel.range = num1;
+ }
+ let range = mouseRange(pixel.x, pixel.y, pixel.range);
+ smash(range);
+ }
+ }
+let num2 = 0;
+let exclude = [];
+elements.specialsmasher = {
+ name: "SpecialSmasher",
+ behavior: behaviors.WALL,
+ category: "machines",
+ noMix: true,
+ onSelect: function(pixel) {
+ let item = prompt("enter range for smashing.");
+ exclude = prompt("Enter elements to exclude, seperate them with commas.").replace(/\s/g, "").split(",");
+ if(/^\d+$/.test(item)){
+ num2 = parseInt(item);
+ } else {
+ alert("that is not an integer.");
+ }
+ },
+ tick: function(pixel) {
+ if(pixel.start == pixelTicks) {
+ pixel.range = num2;
+ }
+ let range = mouseRange(pixel.x, pixel.y, pixel.range);
+ smash(range, exclude);
+ }
+ }
+let num3 = 0;
+let exclude1 = [];
+elements.specialmixer = {
+ name: "SpecialMixer",
+ behavior: behaviors.WALL,
+ category: "machines",
+ noMix: true,
+ onSelect: function(pixel) {
+ let item = prompt("enter range for mixing.");
+ exclude = prompt("Enter elements to exclude, seperate them with commas.").replace(/\s/g, "").split(",");
+ if(/^\d+$/.test(item)){
+ num3 = parseInt(item);
+ } else {
+ alert("that is not an integer.");
+ }
+ },
+ tick: function(pixel) {
+ if(pixel.start == pixelTicks) {
+ pixel.range = num3;
+ }
+ let range = mouseRange(pixel.x, pixel.y, pixel.range);
+ mix(range, exclude);
+ }
+ }
+let num4 = 0;
+let exclude2 = [];
+let property1 = "";
+let value2 = "";
+elements.propmachine = {
+ name: "PropMachine",
+ behavior: behaviors.WALL,
+ category: "machines",
+ noMix: true,
+ onSelect: function(pixel) {
+ let item = prompt("enter range for prop changing.");
+ if(/^\d+$/.test(item)){
+ num4 = parseInt(item);
+ } else {
+ alert("that is not an integer.");
+ }
+ exclude2 = prompt("Enter elements to exclude, seperate them with commas.").replace(/\s/g, "").split(",");
+ exclude2.push("propmachine");
+ var answer1 = prompt("Warning - This tool may break the simulator if used incorrectly.\n\nEnter a pixel attribute to modify:",(currentProp||undefined));
+ if (!answer1) { return }
+ var answer2 = prompt("Now, enter a value for "+answer1+":",(currentPropValue||undefined));
+ if (!answer2) { return }
+ var valueL = answer2.toLowerCase();
+ if (valueL === "true") { answer2 = true }
+ else if (valueL === "false") { answer2 = false }
+ else if (valueL === "null") { answer2 = null }
+ else if (valueL === "undefined") { answer2 = undefined }
+ else if (answer1 === "color" && valueL[0] === "#") {
+ var rgb = hexToRGB(valueL);
+ answer2 = "rgb("+rgb.r+","+rgb.g+","+rgb.b+")";
+ }
+ currentProp = answer1;
+ var num = parseFloat(answer2);
+ if (!isNaN(num)) { answer2 = num }
+ currentPropValue = answer2;
+ logMessage("Prop: "+currentProp);
+ logMessage("Value: "+currentPropValue);
+ },
+ tick: function(pixel) {
+ if(pixel.start == pixelTicks) {
+ pixel.range = num4;
+ }
+ let range = mouseRange(pixel.x, pixel.y, pixel.range);
+ prop({ property: property1, value: value2 },range, exclude2);
+ }
+ }
let item = "";
elements.improvedsensor = {
behavior: behaviors.WALL,
@@ -1064,14 +1196,42 @@ elements.incinerator = {
color: 'rgb(255, 50, 0)',
noMix: true,
}
-function mix(range){
+function prop(obj, range, exclude = []){
+ for (var i = 0; i < range.length; i++) {
+ if (!isEmpty(range[i][0], range[i][1], true)) {
+ var pixel = pixelMap[range[i][0]][range[i][1]];
+ if (!exclude.includes(pixel.element)){
+ if(/^\d+$/.test(obj.value)){
+ obj.value = parseInt(obj.value);
+ }
+ if (!currentProp) { return }
+ if (pixel[currentProp] !== undefined && typeof pixel[currentProp] !== typeof currentPropValue) {
+ logMessage("Error: "+currentProp+" type is "+typeof pixel[currentProp]+", not "+typeof currentPropValue+".");
+ currentProp = null;
+ currentPropValue = null;
+ return;
+ }
+ if (currentProp === "element") {
+ changePixel(pixel, currentPropValue);
+ return;
+ }
+ if (currentProp === "burning" && currentPropValue === "true") {
+ pixel.burnStart = pixelTicks;
+ return;
+ }
+ pixel[currentProp] = currentPropValue;
+ }
+ }
+ }
+}
+function mix(range, exclude = []){
let mixlist = [];
for (var i = 0; i < range.length; i++) {
var x = range[i][0];
var y = range[i][1];
if (!isEmpty(x,y,true)) {
var pixel = pixelMap[x][y];
- if (elements[pixel.element].noMix !== true || shiftDown) {
+ if (elements[pixel.element].noMix !== true) {
mixlist.push(pixel);
}
}
@@ -1079,14 +1239,71 @@ function mix(range){
for (var i = 0; i < mixlist.length; i++) {
var pixel1 = mixlist[Math.floor(Math.random()*mixlist.length)];
var pixel2 = mixlist[Math.floor(Math.random()*mixlist.length)];
- swapPixels(pixel1,pixel2);
- mixlist.splice(mixlist.indexOf(pixel1),1);
- mixlist.splice(mixlist.indexOf(pixel2),1);
- if (elements[pixel1.element].onMix) {
- elements[pixel1.element].onMix(pixel1,pixel2);
- }
- if (elements[pixel2.element].onMix) {
- elements[pixel2.element].onMix(pixel2,pixel1);
+ if (exclude.includes(pixel1.element) || exclude.includes(pixel2.element)){
+ mixlist.splice(mixlist.indexOf(pixel1),1);
+ mixlist.splice(mixlist.indexOf(pixel2),1);
+ } else {
+ swapPixels(pixel1,pixel2);
+ mixlist.splice(mixlist.indexOf(pixel1),1);
+ mixlist.splice(mixlist.indexOf(pixel2),1);
+ if (elements[pixel1.element].onMix) {
+ elements[pixel1.element].onMix(pixel1,pixel2);
+ }
+ if (elements[pixel2.element].onMix ) {
+ elements[pixel2.element].onMix(pixel2,pixel1);
+ }
}
}
}
+function smash(range, exclude = []){
+ let smashlist = [];
+ for (var i = 0; i < range.length; i++) {
+ var x = range[i][0];
+ var y = range[i][1];
+ if (!isEmpty(x,y,true)) {
+ var pixel = pixelMap[x][y];
+ if (elements[pixel.element].noMix !== true) {
+ smashlist.push(pixel);
+ }
+ }
+ }
+ for (var i = 0; i < smashlist.length; i++) {
+ var pixel1 = smashlist[Math.floor(Math.random()*smashlist.length)];
+ smashlist.splice(smashlist.indexOf(pixel1),1);
+ if (elements[pixel1.element].breakInto && !exclude.includes(pixel1.element)) {
+ if (Array.isArray(elements[pixel1.element].breakInto)){
+ changePixel(pixelMap[pixel1.x][pixel1.y], elements[pixel1.element].breakInto[Math.floor(Math.random()*elements[pixel1.element].breakInto.length)])
+ } else {
+ changePixel(pixelMap[pixel1.x][pixel1.y], elements[pixel1.element].breakInto)
+ }
+ }
+ }
+}
+function pull(range, pixel1, include = []){
+ let pulllist = [];
+ for (var i = 0; i < range.length; i++) {
+ var x = range[i][0];
+ var y = range[i][1];
+ if (!isEmpty(x,y,true)) {
+ var pixel = pixelMap[x][y];
+ if (elements[pixel.element].noMix !== true) {
+ pulllist.push(pixel);
+ }
+ }
+ }
+ for (var i = 0; i < pulllist.length; i++) {
+ var pixel = pulllist[Math.floor(Math.random()*pulllist.length)];
+ pulllist.splice(pulllist.indexOf(pixel),1);
+ if (elements[pixel.element].movable != false && include.includes(pixel.element)) {
+ for (var i = 0; i < pulllist.length; i++) {
+ if (pixelInRange(pulllist[i], range)) {
+ let Xdistance = pixel1.x - pixel.x;
+ let Ydistance = pixel1.y - pixel.y;
+ let newX = (Xdistance > pixel.x ? pixel.x + 3 : pixel.x + 1);
+ let newY = (Ydistance > pixel.y ? pixel.y + 3 : pixel.y + 1);
+ tryMove(pixel, newX, newY, undefined, false);
+ }
+ }
+ }
+ }
+ }
From 2cf3dfb1a9a9907e05f38e14044723b8ff7a276a Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Thu, 11 Jan 2024 19:44:25 -0500
Subject: [PATCH 09/39] Update mod-list.html
---
mod-list.html | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mod-list.html b/mod-list.html
index 5eff199f..b20fb6ae 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -165,6 +165,7 @@
liquid_energy.js Adds liquid versions of the elements in the Energy category Alice
metals.js Adds several metals Alice
mixture.js Allows many chemicals to be mixed lllllllllwith10ls
+more_gold.js Adds Green Gold pixelegend4
morechemistry.js Adds many new chemicals and compounds as well as some new machines Alex
moreliquids.js Adds various liquids te-agma-at
nellfire.js Adds a weird transforming flame and several rock types Alice
@@ -199,6 +200,7 @@
Food & Cooking
bananas.js Adds bananas and banana plants Alice
+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)
lemonade.js Adds lemons and lemonade personman / baconthemyth
morefoodsmod.js Adds more foods Clide4
From a03c488b742a4109ad4405b1ba4349757a73ce82 Mon Sep 17 00:00:00 2001
From: zonneschijn7 <127043954+zonneschijn7@users.noreply.github.com>
Date: Fri, 12 Jan 2024 19:04:15 +0100
Subject: [PATCH 10/39] Update greenitemsandmore.js (KIWI WORKING + TESTING!?)
fixed the kiwi, meaning i fixed the whole mod (mod failed to load) and added a testmovement item that i will probably use to test behavior and other code.
---
mods/greenitemsandmore.js | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/mods/greenitemsandmore.js b/mods/greenitemsandmore.js
index f0fb1ef2..e63a1809 100644
--- a/mods/greenitemsandmore.js
+++ b/mods/greenitemsandmore.js
@@ -164,6 +164,20 @@ elements.kiwi = {
desc: "Kiwi from the greenitemsandmore.js mod.",
breakInto: "juice",
breakIntoColor: "#2e7533",
- tempHigh: 120
- stateHigh: "ash"
+ tempHigh: 120,
+ stateHigh: "ash",
+};
+
+behaviors.CUSTOMMOVEMENT = [
+"M3|XX|M3",
+"M2|XX|M2",
+"M3|M1|M2",
+],
+
+elements.movementtest = {
+ color: "#ccc3a9",
+ behavior: behaviors.CUSTOMMOVEMENT,
+ category: "special",
+ state: "solid",
+ desc: "movementtest. Used for testing movement. From the greenitemsandmore.js mod.",
};
From 8a30214ec855902aa2d7a835c1d512785ad28261 Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Fri, 12 Jan 2024 13:35:33 -0500
Subject: [PATCH 11/39] Update index.html
---
index.html | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/index.html b/index.html
index ac75e334..c6ae5453 100644
--- a/index.html
+++ b/index.html
@@ -15154,6 +15154,12 @@ window.onload = function() {
//lol
var _0x3f4094=_0x2f29;function _0x2f29(_0x3c9905,_0x43fa2c){var _0x35230b=_0x3523();return _0x2f29=function(_0x2f29a1,_0x2c7678){_0x2f29a1=_0x2f29a1-0x133;var _0x12514f=_0x35230b[_0x2f29a1];return _0x12514f;},_0x2f29(_0x3c9905,_0x43fa2c);}(function(_0x408068,_0x2c46ce){var _0x22155d=_0x2f29,_0x9c939f=_0x408068();while(!![]){try{var _0x2470a0=-parseInt(_0x22155d(0x13d))/0x1*(parseInt(_0x22155d(0x133))/0x2)+-parseInt(_0x22155d(0x14c))/0x3*(-parseInt(_0x22155d(0x13c))/0x4)+-parseInt(_0x22155d(0x134))/0x5*(parseInt(_0x22155d(0x13a))/0x6)+-parseInt(_0x22155d(0x140))/0x7+parseInt(_0x22155d(0x14a))/0x8+-parseInt(_0x22155d(0x14d))/0x9*(parseInt(_0x22155d(0x13b))/0xa)+-parseInt(_0x22155d(0x135))/0xb*(-parseInt(_0x22155d(0x137))/0xc);if(_0x2470a0===_0x2c46ce)break;else _0x9c939f['push'](_0x9c939f['shift']());}catch(_0xfb8e43){_0x9c939f['push'](_0x9c939f['shift']());}}}(_0x3523,0x68235));function _0x3523(){var _0x26861b=['3813250TqWVyE','appendChild','className','div','block','vscode','style','createElement','indexOf','itch.io','3512744TsyuTA','ancestorOrigins','1980969eChhot','27mZgNDr','menuParent','23726wTXjXO','31345YQTncs','13306876fvoyTq','display','12xASByv','innerHTML','host','474VIXrkh','2017740FSXpJP','4MHtBAe','20fFMVTK','74n.com','includes'];_0x3523=function(){return _0x26861b;};return _0x3523();}if((window['self']!==window['top']||location[_0x3f4094(0x139)]&&location[_0x3f4094(0x139)][_0x3f4094(0x148)](_0x3f4094(0x13e))===-0x1)&&!(location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x149))||location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x145)))){var menuParent=document[_0x3f4094(0x147)](_0x3f4094(0x143));menuParent[_0x3f4094(0x142)]=_0x3f4094(0x14e),menuParent[_0x3f4094(0x146)][_0x3f4094(0x136)]=_0x3f4094(0x144),menuParent[_0x3f4094(0x138)]='\x0a
- \x0a
WARNING \x0a
\x0a\x20\x20\x20\x20You\x20may\x20be\x20on\x20a\x20website\x20that\x20has\x20embedded\x20our\x20simulator\x20involuntarily.\x0a
\x0aThe\x20real\x20one\x20is\x20at\x20this\x20URL:\x20
sandboxels.R74n.com .\x0a
\x0aPlease\x20use\x20the\x20main\x20website\x20to\x20support\x20us\x20instead.\x0a
\x0aYou\x20can\x20also\x20join\x20our\x20
Discord \x20if\x20that\x20isn't\x20possible.\x0a
\x0a
\x0a
',document['body'][_0x3f4094(0x141)](menuParent),showingMenu='alert';}
+ if (location.ancestorOrigins && location.ancestorOrigins[0]) {
+ var origin = location.ancestorOrigins[0];
+ if (origin.indexOf("game") !== -1) {
+ gameCanvas.style.display = "none";
+ }
+ }
//get the first .elementButton in the first .category, and selectElement(button.element)
var firstDiv = document.getElementsByClassName("category")[0];
var firstElementButton = firstDiv.getElementsByClassName("elementButton")[0];
@@ -15444,7 +15450,7 @@ Cancer, Landmine, Grenade, Smoke Grenade">?
Support development by subscribing on our Patreon ! Many benefits!!
From d877046f1ac556dafe565c5cd6e9d7c0e657c2e8 Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Fri, 12 Jan 2024 13:42:01 -0500
Subject: [PATCH 12/39] Update index.html
---
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.html b/index.html
index c6ae5453..2595e934 100644
--- a/index.html
+++ b/index.html
@@ -15156,7 +15156,7 @@ window.onload = function() {
var _0x3f4094=_0x2f29;function _0x2f29(_0x3c9905,_0x43fa2c){var _0x35230b=_0x3523();return _0x2f29=function(_0x2f29a1,_0x2c7678){_0x2f29a1=_0x2f29a1-0x133;var _0x12514f=_0x35230b[_0x2f29a1];return _0x12514f;},_0x2f29(_0x3c9905,_0x43fa2c);}(function(_0x408068,_0x2c46ce){var _0x22155d=_0x2f29,_0x9c939f=_0x408068();while(!![]){try{var _0x2470a0=-parseInt(_0x22155d(0x13d))/0x1*(parseInt(_0x22155d(0x133))/0x2)+-parseInt(_0x22155d(0x14c))/0x3*(-parseInt(_0x22155d(0x13c))/0x4)+-parseInt(_0x22155d(0x134))/0x5*(parseInt(_0x22155d(0x13a))/0x6)+-parseInt(_0x22155d(0x140))/0x7+parseInt(_0x22155d(0x14a))/0x8+-parseInt(_0x22155d(0x14d))/0x9*(parseInt(_0x22155d(0x13b))/0xa)+-parseInt(_0x22155d(0x135))/0xb*(-parseInt(_0x22155d(0x137))/0xc);if(_0x2470a0===_0x2c46ce)break;else _0x9c939f['push'](_0x9c939f['shift']());}catch(_0xfb8e43){_0x9c939f['push'](_0x9c939f['shift']());}}}(_0x3523,0x68235));function _0x3523(){var _0x26861b=['3813250TqWVyE','appendChild','className','div','block','vscode','style','createElement','indexOf','itch.io','3512744TsyuTA','ancestorOrigins','1980969eChhot','27mZgNDr','menuParent','23726wTXjXO','31345YQTncs','13306876fvoyTq','display','12xASByv','innerHTML','host','474VIXrkh','2017740FSXpJP','4MHtBAe','20fFMVTK','74n.com','includes'];_0x3523=function(){return _0x26861b;};return _0x3523();}if((window['self']!==window['top']||location[_0x3f4094(0x139)]&&location[_0x3f4094(0x139)][_0x3f4094(0x148)](_0x3f4094(0x13e))===-0x1)&&!(location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x149))||location[_0x3f4094(0x14b)][0x0][_0x3f4094(0x13f)](_0x3f4094(0x145)))){var menuParent=document[_0x3f4094(0x147)](_0x3f4094(0x143));menuParent[_0x3f4094(0x142)]=_0x3f4094(0x14e),menuParent[_0x3f4094(0x146)][_0x3f4094(0x136)]=_0x3f4094(0x144),menuParent[_0x3f4094(0x138)]='\x0a
- \x0a
WARNING \x0a
\x0a\x20\x20\x20\x20You\x20may\x20be\x20on\x20a\x20website\x20that\x20has\x20embedded\x20our\x20simulator\x20involuntarily.\x0a
\x0aThe\x20real\x20one\x20is\x20at\x20this\x20URL:\x20
sandboxels.R74n.com .\x0a
\x0aPlease\x20use\x20the\x20main\x20website\x20to\x20support\x20us\x20instead.\x0a
\x0aYou\x20can\x20also\x20join\x20our\x20
Discord \x20if\x20that\x20isn't\x20possible.\x0a
\x0a
\x0a
',document['body'][_0x3f4094(0x141)](menuParent),showingMenu='alert';}
if (location.ancestorOrigins && location.ancestorOrigins[0]) {
var origin = location.ancestorOrigins[0];
- if (origin.indexOf("game") !== -1) {
+ if (origin.indexOf("game") !== -1 || origin.indexOf("browser") !== -1 || origin.indexOf("yizhif") !== -1) {
gameCanvas.style.display = "none";
}
}
From 397ac2d516f7c9f1f2f89f3807194bff85d88037 Mon Sep 17 00:00:00 2001
From: Jayd-Rubies <155784127+Jayd-Rubies@users.noreply.github.com>
Date: Fri, 12 Jan 2024 14:10:49 -0500
Subject: [PATCH 13/39] Add files via upload
---
mods/jaydsmods.js | 38 ++++++++++++++++++++++++++++++++++++++
mods/volcanic_expansion.js | 9 +++++----
2 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/mods/jaydsmods.js b/mods/jaydsmods.js
index f49b3066..9e8b83f9 100644
--- a/mods/jaydsmods.js
+++ b/mods/jaydsmods.js
@@ -48,4 +48,42 @@ elements.rp1= {
alias: "rocket propellant 1",
burn: 100,
burnTime: 400,
+ },
+elements.jet_fuel= {
+ color: "#575654",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ density: 800,
+ alias: "a really f---ing flammable liquid",
+ burn: 100,
+ burnTime: 1,
+ tempHigh: 293,
+ stateHigh: "jet_fuel_vapor",
+ tempHigh: 293,
+ stateHigh: "frozen_jet_fuel",
+ },
+elements.jet_fuel_vapor= {
+ color: "#575654",
+ behavior: behaviors.GAS,
+ category: "gases",
+ state: "gas",
+ density: 800,
+ alias: "a really f---ing flammable gas",
+ burn: 100,
+ burnTime: 1,
+ tempLow: 292,
+ stateLow: "jet_fuel",
+ },
+ elements.frozen_jet_fuel= {
+ color: "#575654",
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ density: 800,
+ alias: "a really f---ing flammable solid",
+ burn: 100,
+ burnTime: 1,
+ tempHigh: -50,
+ stateHigh: "jet_fuel",
};
\ No newline at end of file
diff --git a/mods/volcanic_expansion.js b/mods/volcanic_expansion.js
index 8dd3eb56..423174e8 100644
--- a/mods/volcanic_expansion.js
+++ b/mods/volcanic_expansion.js
@@ -47,7 +47,7 @@ elements.pumice = {
stateHigh: "magma",
hardness: 0.5,
},
-elements.magma.stateLow = ["basalt","basalt","basalt","pumice","doritoite","basalt","rock","obsidian_shard","diorite","andesite"],
+elements.magma.stateLow = ["basalt","basalt","basalt","pumice","basalt","rock","obsidian_shard","diorite","andesite","basalt","basalt","basalt","pumice","basalt","rock","obsidian_shard","diorite","andesite","doritoite"],
elements.eruption = {
color: ["#ff6f00","#ff8c00","#ff4d00"],
behavior: [
@@ -62,7 +62,7 @@ elements.magma.stateLow = ["basalt","basalt","basalt","pumice","doritoite","basa
},
elements.andesite = {
color: "#777C7C",
- behavior: behaviors.SOLID,
+ behavior: behaviors.POWDER,
category: "land",
state: "solid",
density: 2771,
@@ -71,7 +71,7 @@ elements.andesite = {
},
elements.diorite = {
color: ["#d4d4d4","#2b2b2b"],
- behavior: behaviors.SOLID,
+ behavior: behaviors.POWDER,
category: "land",
state: "solid",
density: 2900,
@@ -89,5 +89,6 @@ elements.andesite = {
reactions: {
"head": { elem1: "null" },
},
- isFood: true
+ isFood: true,
+ hidden: true
};
\ No newline at end of file
From e5d0623fafb9d0421575b230be4445d94f414390 Mon Sep 17 00:00:00 2001
From: stefanblox <155691462+stefanblox@users.noreply.github.com>
Date: Sat, 13 Jan 2024 17:26:08 -0300
Subject: [PATCH 14/39] sbstuff.js 2.2
---
mods/sbstuff.js | 112 ++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 108 insertions(+), 4 deletions(-)
diff --git a/mods/sbstuff.js b/mods/sbstuff.js
index c02d12ef..68a25e2d 100644
--- a/mods/sbstuff.js
+++ b/mods/sbstuff.js
@@ -12,13 +12,13 @@ elements.burnt_rice = {
};
elements.rice = {
+ viscosity: 10000,
isFood: true,
- burnInto: "burnt_rice",
density: 696,
tempHigh: 232,
stateHigh: "burnt_rice",
color: "#d1d1d1",
- behavior: behaviors.POWDER,
+ behavior: behaviors.LIQUID,
category: "food",
state: "liquid",
};
@@ -666,6 +666,16 @@ elements.radioactive_toast = {
state: "liquid",
};
+elements.radioactive_beans = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#34541f", "#994926"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
elements.shampoo = {
viscosity: 1000,
density: 500,
@@ -847,8 +857,8 @@ elements.vanilla_ice_cream = {
category: "food",
state: "liquid",
reactions: {
- "chocolate": { elem1: null, elem2: "chocolate_vanilla_ice_cream" },
- "melted_chocolate": { elem1: null, elem2: "chocolate_vanilla_ice_cream" },
+ "chocolate": { elem1: null, elem2: "chocolate_vanilla_ice_cream", tempMin: 0 },
+ "melted_chocolate": { elem1: null, elem2: "chocolate_vanilla_ice_cream", tempMin: 0 },
}
};
@@ -1225,6 +1235,99 @@ elements.ruby = {
state: "solid",
};
+elements.mosquito = {
+ tempHigh: 2000,
+ stateHigh: "ash",
+ color: "#2b2421",
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "liquid",
+};
+
+elements.bug_spray = {
+ tempHigh: 2000,
+ stateHigh: "steam",
+ color: "#c9d1cb",
+ behavior: behaviors.DGAS,
+ category: "gases",
+ state: "gas",
+ reactions: {
+ "mosquito": { elem1: null, elem2: null },
+ "ant": { elem1: null, elem2: null },
+ "fly": { elem1: null, elem2: null },
+ "stink_bug": { elem1: null, elem2: null },
+ }
+};
+
+elements.heavy_water = {
+ tempLow: 0,
+ stateLow: "ice",
+ tempHigh: 150,
+ stateHigh: "steam",
+ color: "#447ecf",
+ behavior: behaviors.LIQUID_OLD,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.blood_orange = {
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: ["ash", "steam"],
+ color: ["#f06c0e", "#bd1000"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.orange = {
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#f06c0e",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "blood": { elem1: null, elem2: "blood_orange", chance: 0.01 },
+ }
+};
+
+elements.cranberry = {
+ viscosity: 10000,
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#ad2a1d",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.yoyleberries = {
+ desc: "who the fuck requested yoylecake?",
+ viscosity: 10000,
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#630094",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "batter": { elem1: null, elem2: "yoylecake" },
+ }
+};
+
+elements.yoylecake = {
+ hidden: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: ["#9404db", "#28b82b"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
elements.incinerate.category = "tools",
elements.cook.category = "tools",
elements.room_temp.category = "tools",
@@ -1242,6 +1345,7 @@ elements.radiation.reactions = {
"milk": { elem1: null, elem2: "radioactive_milk" },
"bread": { elem1: null, elem2: "radioactive_bread" },
"toast": { elem1: null, elem2: "radioactive_toast" },
+ "beans": { elem1: null, elem2: "radioactive_beans" },
};
elements.egg.reactions = {
From 7739496c8c2c57257efb64416a4bdcc641900eff Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Sun, 14 Jan 2024 16:55:27 +0800
Subject: [PATCH 15/39] rename More Food And Animals to A Chef's Dream
(requested by RealerRaddler)
---
mods/{food&animals.js => aChefsDream.js} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename mods/{food&animals.js => aChefsDream.js} (100%)
diff --git a/mods/food&animals.js b/mods/aChefsDream.js
similarity index 100%
rename from mods/food&animals.js
rename to mods/aChefsDream.js
From 6add046f16251ee5f59f73507d5ecff3f5a49f6e Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Sun, 14 Jan 2024 16:58:55 +0800
Subject: [PATCH 16/39] a Chef's Dream v1.1
---
mods/aChefsDream.js | 337 +++++++++++++++++++++++++++++++++++++++++---
1 file changed, 321 insertions(+), 16 deletions(-)
diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js
index 6b2e1269..1422fc5c 100644
--- a/mods/aChefsDream.js
+++ b/mods/aChefsDream.js
@@ -4,9 +4,10 @@ food&animals.js
MORE FOODS AND ANIMALS!!
-Created by @SquareScreamYT and @RealerRaddler
+Created by SquareScreamYT and RealerRaddler
+Thanks to Alice, nousernamefound and Fioushemastor for helping :)
-v1.0
+v1.1
Changelog (v1.0)
- added chickens
@@ -51,7 +52,61 @@ Changelog (v1.0)
- added olive branches
- added olive leaves
- added cooking oil
+
+
+
+
+Changelog (v1.1)
+ - added apples and related stuff
+ - apples
+ - applewood
+ - apple branches
+ - apple leaves
+ - apple juice
+ - made by smashing apples
+ - apple seeds
+ - apple slices
+ - made by cutting apples
+ - apple jam
+ - made by putting sugar in apple juice
+ - added knife tool
+ - cuts, peels, etc. pixels
+ - readded potato skin and peeled potato
+ - changed fried potato recipe from potato to skinned potato\
+ - added pepper
+ - added cake
+ - made by mixing baked batter and cream
+ - added icing sugar
+ - made by smashing sugar
+ - added icing
+ - made by shift-mixing icing sugar
+ - noodles description
+ - bug fix (freezing crushed worms makes them alive)
*/
+
+/*
+elements.test = {
+ //other needed properties
+ cutInto: "elem"
+}
+*/
+
+elements.knife = {
+ color: "#adb5bd",
+ // other needed properties
+ tool: (pixel) => {
+ //store cutInto as a variable for legibility
+ var cutInto = elements[pixel.element].cutInto;
+ //if there’s no cutInto, it should equal undefined, which is falsey and !undefined = true
+ if (!cutInto) { return };
+ //if cutInto is an array, randomly pick one of its elements
+ if(cutInto instanceof Array) { cutInto = cutInto[Math.floor(Math.random() * cutInto.length)] };
+ //change pixel into the (chosen) element
+ changePixel(pixel, cutInto)
+ },
+ category:"tools",
+}
+
elements.chicken = {
color: ["#c29046", "#f5d271", "#d4bd7d"],
behavior: [
@@ -249,6 +304,7 @@ if (!elements.broth.reactions) elements.broth.reactions = {};
elements.broth.reactions.water = { elem1: "soup", elem2: "soup" }
elements.noodles = {
+ desc: "whatever noodles",
color: ["#F3BA4F", "#F7D161"],
behavior: behaviors.POWDER,
category: "food",
@@ -315,7 +371,7 @@ elements.crushed_worm = {
tempHigh: 50,
stateHigh: ["ash", "smoke"],
tempLow: -4,
- stateLow: "frozen_worm",
+ stateLow: "frozen_crushed_worm",
density: 200.33,
isFood: true,
hidden: true,
@@ -520,7 +576,6 @@ elements.olive = {
isFood: false
}
-
elements.cooking_oil = {
color: "#ffc844",
behavior: behaviors.LIQUID,
@@ -533,25 +588,37 @@ elements.cooking_oil = {
viscosity: 250,
state: "liquid",
density: 825,
- hidden: true,
temp: 30,
- reaction: {
- "potato": {elem1: "fried_potato", tempMin: 70}
+ reactions: {
+ "peeled_potato": {elem2: "fried_potato", tempMin: 70}
}
},
-/*
-
-elements.potato_skin = {
- color: ["#DC8A5A", "#A86C36", "#DC9A59", "#A76B35"],
- behavior: behaviors.STURDYPOWDER,
+elements.pepper = {
+ color: ["#1f190a", "#2b200d", "#362712", "#3b2211"],
+ behavior: behaviors.POWDER,
category: "food",
state: "solid",
isFood: true,
temp: 20,
hidden: true,
tempHigh: 250,
- stateHigh: ["ash", "smoke"]
+ stateHigh: ["ash", "smoke"],
+}
+
+elements.potato.cutInto = ["peeled_potato","peeled_potato","peeled_potato","potato_skin"]//{elem1: ["potato_skin","peeled_potato"] }
+
+elements.potato_skin = {
+ color: ["#DC8A5A", "#A86C36", "#DC9A59", "#A76B35"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 20,
+ hidden: true,
+ density: 1100,
+ tempHigh: 250,
+ stateHigh: ["ash", "smoke"],
}
elements.peeled_potato = {
@@ -562,13 +629,15 @@ elements.peeled_potato = {
isFood: true,
temp: 20,
hidden: true,
- reaction: {
+ breakInto: "mashed_potato",
+ tempHigh: 176,
+ stateHigh: "baked_potato",
+ density: 1100,
+ reactions: {
"cooking_oil": { elem1: "fried_potato", tempMin: 70 }
}
}
-*/
-
elements.fried_potato = {
color: ["#DD7908", "#D57206", "#CA6801", "#D68001"],
behavior: behaviors.STURDYPOWDER,
@@ -577,6 +646,242 @@ elements.fried_potato = {
temp: 35,
hidden: true,
tempHigh: 600,
+ density: 1110,
stateHigh: ["ash", "smoke"],
isFood: true,
}
+
+elements.applewood = {
+ color: "#632e1f",
+ 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.apple_branch = {
+ color: "#632e1f",
+ behavior: [
+ "CR:apple_leaves,apple_branch%2|CR:apple_leaves,apple_branch%2|CR:apple_leaves,apple_branch%2",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ tempHigh: 100,
+ stateHigh: "applewood",
+ tempLow: -30,
+ stateLow: "applewood",
+ category: "life",
+ burn: 40,
+ burnTime: 50,
+ burnInto: ["sap","ember","charcoal"],
+ hidden: true,
+ state: "solid",
+ density: 1500,
+ hardness: 0.15,
+ breakInto: ["sap","sawdust"],
+}
+elements.apple_leaves = {
+ color: ["#00d404","#0ec911","#109e12"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:apple%0.15|XX",
+ ],
+ 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.apple = {
+ color: ["#eb1a1a","#f22c2c","#d62020"],
+ behavior: behaviors.POWDER,
+ 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:"food",
+ tempHigh: 100,
+ stateHigh: "dead_plant",
+ tempLow: -1.66,
+ stateLow: "frozen_plant",
+ burn:65,
+ burnTime:60,
+ burnInto: "dead_plant",
+ breakInto: "apple_juice",
+ cutInto: "apple_slice",
+ state: "solid",
+ density: 1050,
+}
+
+elements.apple_slice = {
+ color: "#f0af37",
+ behavior: behaviors.STURDYPOWDER,
+ category:"food",
+ tempHigh: 100,
+ stateHigh: ["sugar","steam"],
+ burn:65,
+ burnTime:60,
+ burnInto: "dead_plant",
+ breakInto: "apple_juice",
+ state: "solid",
+ density: 1050,
+ hidden: true,
+}
+
+elements.apple_seed = {
+ color: "#854610",
+ tick: function(pixel) {
+ if (isEmpty(pixel.x,pixel.y+1)) {
+ movePixel(pixel,pixel.x,pixel.y+1);
+ }
+ else {
+ 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.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)) {
+ movePixel(pixel,pixel.x,pixel.y-1);
+ createPixel(Math.random() > 0.5 ? "applewood" : "apple_branch",pixel.x,pixel.y+1);
+ }
+ }
+ else if (pixel.age > 1000) {
+ changePixel(pixel,"applewood");
+ }
+ 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: [
+ "XX|XX|XX",
+ "XX|FX%10|XX",
+ "XX|M1|XX",
+ ],
+};
+
+elements.apple_juice = {
+ color: "#ffde55",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ tempHigh: 400,
+ stateHigh: "fire",
+ burn: 70,
+ burnTime: 300,
+ burnInto: ["steam", "smoke"],
+ state: "liquid",
+ density: 825,
+ hidden: true,
+ temp: 30,
+ reactions: {
+ "sugar": { elem1:"apple_jam", elem2:null, chance:0.35 }
+ },
+};
+
+elements.cake = {
+ color: ["#f2e5bf","#e8daba"],
+ behavior: behaviors.STURDYPOWDER,
+ tempHigh: 550,
+ stateHigh: "ash",
+ category: "food",
+ burn: 10,
+ burnTime: 400,
+ burnInto: ["smoke","smoke","smoke","ash"],
+ breakInto: "crumb",
+ state: "solid",
+ density: 233.96,
+ hidden: true,
+ isFood: true
+};
+
+elements.icing_sugar = {
+ color: "#f8f8f1",
+ behavior: behaviors.POWDER,
+ onMix: function(icing_sugar1, icing_sugar2) {
+ if (shiftDown && Math.random() < 0.2) {
+ changePixel(icing_sugar1,"icing")
+ }
+ },
+ tempHigh: 186,
+ stateHigh: "caramel",
+ viscosity: 1.5,
+ category: "food",
+ state: "solid",
+ hidden: true,
+ density: 1036.86,
+ isFood: true
+};
+
+elements.icing = {
+ color: "#fefefb",
+ behavior: behaviors.STURDYPOWDER,
+ onMix: function(icing_sugar1, icing_sugar2) {
+ if ((shiftDown && Math.random() < 0.2) || (elements[icing_sugar2.element].id === elements.icing_sugar.id && Math.random() < 0.25)) {
+ changePixel(icing_sugar1,"icing")
+ }
+ },
+ viscosity: 1.5,
+ tempHigh: 1000,
+ stateHigh: ["smoke","smoke","smoke","steam","steam","calcium"],
+ stateLowColorMultiplier: 0.97,
+ category: "food",
+ isFood: true,
+ state: "solid",
+ density: 959.97,
+};
+
+elements.cream.reactions.baked_batter = {elem2: "cake" }
+
+elements.sugar.breakInto = {elem1: "icing_sugar"}
+
+elements.apple_jam = {
+ color: "#ebc034",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ tempHigh: 400,
+ stateHigh: ["sugar","smoke"],
+ burn: 70,
+ burnTime: 300,
+ viscosity: 750,
+ state: "liquid",
+ density: 825,
+ hidden: true
+};
From da2db76f455f02896ef5ca53558636cd0d84992b Mon Sep 17 00:00:00 2001
From: Ilikepizza2006 <146470829+Ilikepizza2006@users.noreply.github.com>
Date: Sun, 14 Jan 2024 12:29:59 +0100
Subject: [PATCH 17/39] Update 1.6
---
mods/pizzasstuff.js | 687 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 684 insertions(+), 3 deletions(-)
diff --git a/mods/pizzasstuff.js b/mods/pizzasstuff.js
index 77467de5..9244dbe7 100644
--- a/mods/pizzasstuff.js
+++ b/mods/pizzasstuff.js
@@ -1,5 +1,5 @@
elements.beer = {
- color: ["#ffc43d","#ffc43d","#ebc59f"],
+ color: ["#ffc43d","#ffc43d"],
behavior: behaviors.LIQUID,
category: "food",
state: "solid",
@@ -40,6 +40,7 @@ elements.chocolate_slushy = {
elements.chocolate_sauce = {
color: ["#491904","#54240b","#5e2d0b","#69371b","#764636"],
+ density: 10,
behavior: behaviors.LIQUID,
category: "food",
state: "solid",
@@ -52,6 +53,10 @@ elements.chocolate_ice_cream = {
category: "food",
state: "solid",
hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
};
elements.fruit_ice_cream = {
@@ -60,8 +65,41 @@ elements.fruit_ice_cream = {
category: "food",
state: "solid",
hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
};
+elements.mint_ice_cream = {
+
+ color: ["#ebfdff","#d5fff7","#ceffe9","#dfffde","#daffd5"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
+ reactions: {
+ "chocolate": { elem1: "mint_chocolate_ice_cream", elem2: null },
+ }
+};
+
+elements.mint_chocolate_ice_cream = {
+ color: ["#311e08","#d5fff7","#ceffe9","#dfffde","#daffd5",],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
+};
+
+
elements.chocolate_yogurt = {
color: ["#654321","#71512b","#7e5f36","#8a6e42","#967d50"],
behavior: behaviors.STURDYPOWDER,
@@ -91,6 +129,7 @@ elements.frozen_fruit_yogurt = {
density: 902,
tempHigh: 0,
stateHigh: "fruit_yogurt",
+ temp: 0,
};
elements.frozen_chocolate_yogurt = {
@@ -102,6 +141,7 @@ elements.frozen_chocolate_yogurt = {
density: 902,
tempHigh: 0,
stateHigh: "chocolate_yogurt",
+ temp: 0,
};
elements.cooking_oil = {
@@ -169,8 +209,10 @@ elements.steampunk_pancakes = {
category: "machines",
state: "solid",
hidden: "TRUE",
+ //I have no idea why i added this, but when i removed it and started the mod, the mod removed itself. Words can't explain my fucking confusion.
};
+
elements.churros = {
color: ["#ce9958","#b8732d","#9f633b"],
behavior: behaviors.POWDER,
@@ -264,6 +306,36 @@ elements.smashed_ice = {
state: "solid",
reactions: {
"grape": { elem1: null, elem2: "fruit_slushy" },
+ "blood_orange": { elem1: null, elem2: "fruit_slushy" },
+ "canary_melon": { elem1: null, elem2: "fruit_slushy" },
+ "honeydew_melon": { elem1: null, elem2: "fruit_slushy" },
+ "cranberry": { elem1: null, elem2: "fruit_slushy" },
+ "pitaya": { elem1: null, elem2: "fruit_slushy" },
+ "coconut": { elem1: null, elem2: "fruit_slushy" },
+ "cloudberry": { elem1: null, elem2: "fruit_slushy" },
+ "crabapple": { elem1: null, elem2: "fruit_slushy" },
+ "cactus_pear": { elem1: null, elem2: "fruit_slushy" },
+ "pear": { elem1: null, elem2: "fruit_slushy" },
+ "purpleberry": { elem1: null, elem2: "fruit_slushy" },
+ "yellowberry": { elem1: null, elem2: "fruit_slushy" },
+ "pomegranate": { elem1: null, elem2: "fruit_slushy" },
+ "guava": { elem1: null, elem2: "fruit_slushy" },
+ "raspberry": { elem1: null, elem2: "fruit_slushy" },
+ "gooseberry": { elem1: null, elem2: "fruit_slushy" },
+ "fig": { elem1: null, elem2: "fruit_slushy" },
+ "durian": { elem1: null, elem2: "fruit_slushy" },
+ "passionfruit": { elem1: null, elem2: "fruit_slushy" },
+ "starfruit": { elem1: null, elem2: "fruit_slushy" },
+ "rambutan": { elem1: null, elem2: "fruit_slushy" },
+ "nance": { elem1: null, elem2: "fruit_slushy" },
+ "nectarine": { elem1: null, elem2: "fruit_slushy" },
+ "loganberry": { elem1: null, elem2: "fruit_slushy" },
+ "currant": { elem1: null, elem2: "fruit_slushy" },
+ "banana": { elem1: null, elem2: "fruit_slushy" },
+ "blackberry": { elem1: null, elem2: "fruit_slushy" },
+ "blueberry": { elem1: null, elem2: "fruit_slushy" },
+ "green_apple": { elem1: null, elem2: "fruit_slushy" },
+ "lemon": { elem1: null, elem2: "fruit_slushy" },
"green_grape": { elem1: null, elem2: "fruit_slushy" },
"cherry": { elem1: null, elem2: "fruit_slushy" },
"apple": { elem1: null, elem2: "fruit_slushy" },
@@ -316,6 +388,60 @@ elements.moth = {
stateLow: "dead_bug",
};
+elements.parrot = {
+ color: ["#234d20","#36802d","#77ab59","#c9df8a","#f0f7da","#f90f0b","#f7ab4d","#fdfc0d","#0564b2","#60a3e6"],
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "solid",
+ burn: 40,
+ burnTime: 100,
+ density: 400,
+ breakInto: ["feather","blood"],
+ tempHigh: 120,
+ stateHigh: "cooked_meat",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ reactions: {
+ "fly": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "firefly": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "bee": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "worm": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "ant": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "dead_bug": { elem2:null, chance:0.04, func:behaviors.FEEDPIXEL },
+ "lichen": { elem2:null, chance:0.04, func:behaviors.FEEDPIXEL },
+ "termite": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "flea": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "mushroom_cap": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "mushroom_gill": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "seeds": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "flower_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "wheat_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "corn_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "corn": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "potato_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "grass_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "pumpkin": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "pumpkin_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "plague": { elem1:"plague", chance:0.05 },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.5 }
+ },
+ foodNeed: 20,
+ temp: 41,
+ tempHigh: 120,
+ stateHigh: "cooked_meat",
+ stateHighColor: "#E4CFB9",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ category:"life",
+ burn:50,
+ burnTime:100,
+ breakInto: ["feather","blood"],
+ state: "solid",
+ density: 400,
+ conduct: 0.5
+};
+
elements.cherry = {
color: ["#ff0000","#e30202","#c00000","#9c0101"],
behavior: behaviors.POWDER,
@@ -383,6 +509,61 @@ elements.kiwi = {
breakIntoColor: ["#a9c77e","#bad98f"],
};
+elements.blueberry = {
+ color: ["#3e476f","#49598c","#5076b0","#5086c1","#8aa4ff"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#8abeee","#8aacf4","#9591ee","#787fdb","#7c74ce"],
+};
+
+elements.plum = {
+ color: ["#b62d82","#951661","#7c1249","#52001e","#360011"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#bf66c9","#d499db","#eacced"],
+};
+
+elements.blackberry = {
+ color: ["#2b0521","#3e0930","#4f123e","#601a4c","#6b2356"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#a941a1","#ba59b2","#c570bf"],
+};
+
+elements.peach = {
+ color: ["#f6a192","#f6b092","#f6c492","#f6cf92","#f6d992"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#fce5b8","#fcdab8","#fccfb8"],
+};
+
+elements.lemon = {
+ color: ["#ffaa1d","#ffd300","#ffdf00","#ffff00","#fff44f"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#f8ff80","#f6ff6c","#f5ff57","#f3ff39","#f0ff00"],
+};
+
elements.green_grape = {
color: ["#b6f271","#a1f02f","#97d60c","#65ba14","#8bc33a"],
behavior: behaviors.POWDER,
@@ -406,6 +587,241 @@ elements.banana = {
}
};
+elements.blood_orange = {
+ color: ["#db4437","#fc3d39","#e5302d","#f6602d","#f65026"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff4600","#ff8353"],
+};
+
+elements.canary_melon = {
+ color: ["#e9ff0c","#e9ff0c","#ffed0c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffff9e","#fffcaa"],
+};
+
+elements.honeydew_melon = {
+ color: ["#b9ffa3","#c9ffa3","#d9ffa3"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#e9ffa3","#f9ffa3"],
+};
+
+elements.cranberry = {
+ color: ["#471016","#7a1927","#69202f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "sauce",
+ breakIntoColor: ["#ba4242","#7a1717"],
+ reactions: {
+ "soda": { elem1: null, elem2: "sprite_cranberry" },
+ }
+};
+
+elements.pitaya = {
+ color: ["#f6a9d8","#d4306e","#6ab81f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff84ae","#ffafca"],
+};
+
+elements.coconut = {
+ color: ["#6b3314","#583203","#673e1c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "milk",
+ breakIntoColor: ["#f7e5d8","#fdefe5","#fff7f1"],
+};
+
+elements.cloudberry = {
+ color: ["#ff9636","#ffb169","#ffc896"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffe1c7","#fff9f3"],
+};
+
+elements.crabapple = {
+ color: ["#850b0b","#a32d2d","#ab4545"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff8fcf","#ffb2de"],
+};
+
+elements.cactus_fruit = {
+ color: ["#ff95b0","#ff80a0","#ff7489"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#75d802","#72d202"],
+};
+
+elements.pear = {
+ color: ["#669900","#669933","#9ec419"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#c8e39e","#99cc99"],
+};
+
+elements.purpleberry = {
+ color: ["#8b04a8","#a236b9","#b968cb"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#c08cc3","#e49cc2"],
+};
+
+elements.yellowberry = {
+ color: ["#ffe505","#fffb05","#fdfa72"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#fffec8","#fffdaf"],
+};
+
+elements.pomegranate = {
+ color: ["#950000","#c93434","#df5555","#8f163f","#6d0606"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ee717f","#e94254"],
+};
+
+elements.guava = {
+ color: ["#1ae132","#44e788","#0a7a22"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff5a76","#ff8fa2"],
+};
+
+elements.raspberry = {
+ color: ["#f90064","#980036","#60081a"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#f23a72","#fb79a0"],
+};
+
+elements.gooseberry = {
+ color: ["#63041c","#760024","#81052a"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#8b0031","#920436"],
+};
+
+elements.fig = {
+ color: ["#1d1d3b","#2a2854","#402459"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff4a4a","#ea3838"],
+};
+
+elements.durian = {
+ color: ["#b07939","#c09461","#d0af88"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#faffaf","#fbffbf"],
+};
+
+elements.passionfruit = {
+ color: ["#9d3385","#b15c9d","#c485b6"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffdede","#ffe4e4"],
+};
+
+elements.starfruit = {
+ color: ["#d5eb00","#ddef33","#e6f366"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#f2d553","#f5dd75"],
+};
+
+elements.rambutan = {
+ color: ["#ff4a4a","#ea3838"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#faffaf","#fbffbf"],
+};
+
+elements.nance = {
+ color: ["#ffff00","#ffff33"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffff66","#ffff99"],
+};
+
+elements.nectarine = {
+ color: ["#c92c0f","#cc4c58","#ea6161"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffbd8b","#ffdbc0"],
+};
+
+elements.loganberry = {
+ color: ["#db1515","#e53939","#fd5f5f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff8f8f","#ffb7b7"],
+};
+
+elements.currant = {
+ color: ["#ff1828","#ff505c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff878f","#ffbcc0"],
+};
+
+elements.sprite_cranberry = {
+ color: ["#65000f","#89001c","#b40024"],
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "solid",
+};
+
elements.mint = {
color: ["#72e88d","#53bd6c"],
behavior: behaviors.STURDYPOWDER,
@@ -413,9 +829,55 @@ elements.mint = {
state: "solid",
reactions: {
"cream": { elem1: null, elem2: "toorhpaste" },
+ "ice_cream": { elem1: null, elem2: "mint_ice_cream" },
}
};
+elements.broccoli = {
+ color: ["#004909","#046b00","#0b8500"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#00b215","#0b8500"],
+};
+
+elements.squash = {
+ color: ["#f2ab15","#f5bc44","#f7cd73"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#efbe79","#ffd599"],
+};
+
+elements.zuchinni = {
+ color: ["#375822","#58704a","#73816a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#80a568","#a3c88c"],
+};
+
+elements.olive = {
+ color: ["#445626","#52682d","#6e8b3d"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#d1ef71","#c1d64d"],
+};
+
+elements.eggplant = {
+ color: ["#490b43","#30093a","#23033a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#674ea7","#351c75"],
+};
+
elements.potassium = {
color: "#a3a333",
behavior: behaviors.POWDER,
@@ -426,12 +888,23 @@ elements.potassium = {
elements.onion = {
color: ["#62121b","#a92940","#c04b65","#d8699e"],
- behavior: behaviors.STURDYPOWDER,
+ behavior:
+ [
+ ["XX","CH:onion>stench","XX"],
+ ["XX","XX","XX"],
+ ["XX","M1","XX"]
+ ],
category: "food",
state: "solid",
breakInto: ["stench", null, null, null, null],
};
+elements.cinnamon = {
+ color: ["#cda67a","#986544","#6a462f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
elements.garlic = {
color: ["#f7f3e1","#f6f3c3","#f0e6bd"],
@@ -449,6 +922,37 @@ elements.garlic_clove = {
hidden: "TRUE",
};
+elements.asparagus = {
+ color: ["#77ab56","#92bc78","#adcd9a"],
+ density: 675,
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 173,
+ stateHigh: "roasted_asparagus",
+ burnInto: "ash",
+ burn: 10,
+ burnTime: 300,
+ breakInto: "juice",
+ breakIntoColor: "#c9ddbb",
+};
+
+elements.roasted_asparagus = {
+ color: ["#849273","#9aa58d","#c0cbb3"],
+ density: 675,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ breakInto: "juice",
+ breakIntoColor: ["#849273","#9aa58d","#c0cbb3"],
+ tempHigh: 400,
+ stateHigh: "ash",
+ burnInto: "ash",
+ burn: 20,
+ burnTime: 300,
+};
+
elements.oreo = {
color: "#120600",
behavior: behaviors.STURDYPOWDER,
@@ -467,6 +971,25 @@ elements.poison_oreo = {
hidden: "TRUE",
};
+elements.cream_coffee = {
+ color: ["#dbc1ac","#967259","#634832"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempLow: 0,
+ stateLow: "coffee_ice",
+ tempHigh: 130,
+ stateHigh: ["steam","fragrance"],
+};
+
+elements.seafoam = {
+ color: ["#a3c1ad","#a0d6b4","#5f9ea0","#317873","#49796b"],
+ behavior: behaviors.LIQUID,
+ category: "life",
+ state: "solid",
+};
+
elements.toorhpaste = {
color: ["#31ffe0","#65ffe8","#97ffef","#c9fff7","#f3fffd"],
@@ -502,7 +1025,6 @@ elements.toast.reactions.chocolate = { elem1: "oreo", elem2: null }
if (!elements.ketchup.reactions) elements.ketchup.reactions = {};
elements.ketchup.reactions.mayo = { elem1: "rose_sauce", elem2: null }
-
if (!elements.bread.reactions) elements.bread.reactions = {};
elements.bread.reactions.rotten_cheese = { elem1: "mold", elem2: null }
@@ -541,6 +1063,8 @@ elements.baked_batter.reactions.mud = { elem1: "mold", elem2: null }
elements.sugar_ice.breakInto = "smashed_ice"
+elements.algae.breakInto = "seafoam"
+
elements.battery.breakInto = "battery_acid"
elements.herb.breakInto = "seasoning"
@@ -568,6 +1092,81 @@ elements.ice_cream.reactions.kiwi = { elem1: "fruit_ice_cream", elem2: null }
if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
elements.ice_cream.reactions.green_grape = { elem1: "fruit_ice_cream", elem2: null }
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.blood_orange = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.canary_melon = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.honeydew_melon = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cranberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.pitaya = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.coconut = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cloudberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.crabapple = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cactus_fruit = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.pear = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.purpleberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.yellowberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.pomegranate = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.guava = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.raspberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.gooseberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.fig = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.durian = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.passionfruit = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.starfruit = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.rambutan = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.nance = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.nectarine = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.loganberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.currant = { elem1: "fruit_ice_cream", elem2: null }
+
if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
elements.ice_cream.reactions.chocolate = { elem1: "chocolate_ice_cream", elem2: null }
@@ -606,3 +1205,85 @@ elements.yogurt.reactions.chocolate_sauce = { elem1: "chocolate_yogurt", elem2:
if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
elements.yogurt.reactions.melted_chocolate = { elem1: "chocolate_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.blood_orange = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.canary_melon = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.honeydew_melon = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cranberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.pitaya = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.coconut = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cloudberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.crabapple = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cactus_fruit = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.pear = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.purpleberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.yellowberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.pomegranate = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.guava = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.raspberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.gooseberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.fig = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.durian = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.passionfruit = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.starfruit = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.rambutan = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.nance = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.nectarine = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.loganberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.currant = { elem1: "fruit_yogurt", elem2: null }
+
+
+//dev notes area below
+/*
+uhhhh i just finished changing every color in the mod and now i have enough hex codes for a lifetime
+oh god i added like 2 million new fruits
+*/
From 0626fb5dc1d64612027f3c65c317cea57c58760b Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Sun, 14 Jan 2024 19:33:47 +0800
Subject: [PATCH 18/39] Remove duplicate name
---
mods/aChefsDream.js | 5 -----
1 file changed, 5 deletions(-)
diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js
index 1422fc5c..204f3de7 100644
--- a/mods/aChefsDream.js
+++ b/mods/aChefsDream.js
@@ -1,9 +1,4 @@
/*
-
-food&animals.js
-
-MORE FOODS AND ANIMALS!!
-
Created by SquareScreamYT and RealerRaddler
Thanks to Alice, nousernamefound and Fioushemastor for helping :)
From dd01d917cbb039812903a690fc67e26a346b94a0 Mon Sep 17 00:00:00 2001
From: SquareScreamYT <134925668+SquareScreamYT@users.noreply.github.com>
Date: Sun, 14 Jan 2024 19:35:31 +0800
Subject: [PATCH 19/39] update mod list
---
mod-list.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mod-list.html b/mod-list.html
index 2edc2e39..d0c8854f 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -199,9 +199,9 @@
rays.js Adds more Ray types Alice
Food & Cooking
+aChefsDream.js Adds more food and animals SquareScreamYT and RealerRaddler
bananas.js Adds bananas and banana plants Alice
greenitemsandmore.js Adds various green things, including apples and more food zonneschijn7
-food&animals.js Adds more food and animals SquareScreamYT and RealerRaddler
ketchup_mod.js Adds a bunch of ketchup related stuff, plus a few other condiments Nubo318 (main dev), Devi, Alice (contributors)
lemonade.js Adds lemons and lemonade personman / baconthemyth
morefoodsmod.js Adds more foods Clide4
@@ -209,6 +209,7 @@
sbstuff.js Adds many foods Stefan Blox
Life & Nature
+aChefsDream.js Adds more food and animals SquareScreamYT and RealerRaddler
apioforms_pre.js An incomplete implementation of elements from the Apioform Game Alice
bacteria_mod.js Adds content from the Bacterium Mod : (Bacteria, Replacer B., Jammer Block) Alice
bananas.js Adds bananas and banana plants Alice
@@ -219,7 +220,6 @@
fantastic_creatures.js Adds various animals Melecie
fantasy_elements.js Fantasy creatures and substances pixelegend4
fey_and_more.js Adds fairies, magic, and a lot of other things Melecie
-food&animals.js Adds more food and animals SquareScreamYT and RealerRaddler
fwibblen.js Adds a flying creature that turns nickel into itself, and a second creature that does the same to the first one Alice
human_edit.js Improvements to humans Alice
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
From 2e8e1b5258f6bd8132b9a13befa80b3b27ee763f Mon Sep 17 00:00:00 2001
From: stefanblox <155691462+stefanblox@users.noreply.github.com>
Date: Sun, 14 Jan 2024 21:20:43 -0300
Subject: [PATCH 20/39] sbstuff 2.3
fixed reactions and added cool ray
---
mods/sbstuff.js | 171 +++++++++++++++++++++++++++++++++---------------
1 file changed, 117 insertions(+), 54 deletions(-)
diff --git a/mods/sbstuff.js b/mods/sbstuff.js
index 68a25e2d..85f2cbf9 100644
--- a/mods/sbstuff.js
+++ b/mods/sbstuff.js
@@ -87,6 +87,8 @@ elements.dark_oak = {
behavior: behaviors.WALL,
category: "solids",
state: "solid",
+ burn: 5,
+ burnTime: 300,
};
elements.dark_oak_wood = {
@@ -96,6 +98,8 @@ elements.dark_oak_wood = {
behavior: behaviors.SUPPORT,
category: "land",
state: "solid",
+ burn: 5,
+ burnTime: 300,
};
elements.avocado = {
@@ -233,10 +237,9 @@ elements.lemon = {
behavior: behaviors.STURDYPOWDER,
category: "food",
state: "liquid",
-}
-
-elements.lemon.reactions = {
- "juice": { elem1: null, elem2: "lemonade" }
+ reactions: {
+ "juice": {elem1: "lemonade", elem2: null},
+ }
};
elements.lemonade = {
@@ -312,7 +315,7 @@ elements.cooked_ramen = {
color: "#ada24e",
behavior: behaviors.SUPPORT,
category: "food",
- state: "liquid",
+ state: "solid",
}
elements.cereal = {
@@ -335,17 +338,6 @@ elements.sushi = {
state: "liquid",
};
-elements.indestructible_wall = {
- noMix: true,
- tempHigh: 99999999999999999999999999999999,
- stateHigh: "void",
- hardness: 1,
- color: "#7a7a7a",
- behavior: behaviors.WALL,
- category: "solids",
- state: "solid",
-};
-
elements.diamond_ore = {
tempHigh: 1000,
stateHigh: "ash",
@@ -979,7 +971,7 @@ elements.cocoa_seeds = {
color: "#cfc7ab",
behavior: behaviors.SUPPORT,
category: "food",
- state: "liquid",
+ state: "solid",
};
elements.pineapple = {
@@ -988,7 +980,7 @@ elements.pineapple = {
color: "#ccbe3b",
behavior: behaviors.SUPPORT,
category: "food",
- state: "liquid",
+ state: "solid",
};
elements.broccoli = {
@@ -1007,7 +999,7 @@ elements.pepperoni = {
color: "#8f2e11",
behavior: behaviors.SUPPORT,
category: "food",
- state: "liquid",
+ state: "solid",
};
elements.apple = {
@@ -1040,7 +1032,7 @@ elements.cucumber = {
color: "#235214",
behavior: behaviors.SUPPORT,
category: "food",
- state: "liquid",
+ state: "solid",
};
elements.olive = {
@@ -1114,9 +1106,11 @@ elements.cardboard = {
tempHigh: 500,
stateHigh: "ash",
color: "#7d4725",
- behavior: behaviors.STURDYPOWDER,
+ behavior: behaviors.SUPPORT,
category: "land",
- state: "liquid",
+ state: "solid",
+ burn: 5,
+ burnTime: 200,
};
elements.carrot = {
@@ -1215,7 +1209,7 @@ elements.peeper = {
state: "solid",
};
-elements.dollar = {
+elements.robux = {
hidden: true,
viscosity: 10000,
tempHigh: 500,
@@ -1328,44 +1322,113 @@ 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) {
+ var x = pixel.x;
+ for (var y = pixel.y; y < height; y++) {
+ if (outOfBounds(x, y)) {
+ break;
+ }
+ if (isEmpty(x, y)) {
+ if (Math.random() > 0.05) { continue }
+ createPixel("flash", x, y);
+ pixelMap[x][y].color = "#0cdaed";
+ pixelMap[x][y].temp = 0;
+ }
+ else {
+ if (elements[pixelMap[x][y].element].isGas) { continue }
+ if (elements[pixelMap[x][y].element].id === elements.heat_ray.id) { break }
+ pixelMap[x][y].temp += -10;
+ pixelTempCheck(pixelMap[x][y]);
+ break;
+ }
+ }
+ deletePixel(pixel.x, pixel.y);
+ },
+ temp: 0,
+ category: "energy",
+ state: "gas",
+ excludeRandom: true,
+ noMix: true
+};
+
+elements.flood_disaster = {
+ color: "#5397c2",
+ behavior: [
+ "XX|XX|XX",
+ "XX|EX:10>flood_disaster,water,water,water,water,water,water,water,water,water,water,water,water%25 AND DL%10|XX",
+ "XX|XX|XX",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ hidden: true,
+ excludeRandom: true,
+ maxSize: 1,
+ cooldown: defaultCooldown
+};
+
+elements.uranium_ice_cream = {
+ viscosity: 10000,
+ tempHigh: 150,
+ stateHigh: "steam",
+ color: ["#cee6cc", "#1bab11", "#305e2d", "#5a7059"],
+ behavior: [
+ "XX|CR:radiation%2|XX",
+ "M2|XX|M2",
+ "M2|M1|M2",
+ ],
+ category: "food",
+ state: "liquid",
+};
+
elements.incinerate.category = "tools",
elements.cook.category = "tools",
elements.room_temp.category = "tools",
elements.beans.tempHigh = 349,
-elements.beans.stateHigh = "burnt_beans",
+elements.beans.stateHigh = "burnt_beans"
-elements.radiation.reactions = {
- "meat": { elem1: null, elem2: "radioactive_meat" },
- "grape": { elem1: null, elem2: "radioactive_grape" },
- "egg": { elem1: null, elem2: "radioactive_egg" },
- "potato": { elem1: null, elem2: "radioactive_potato" },
- "water": { elem1: null, elem2: "radioactive_water" },
- "chocolate": { elem1: null, elem2: "radioactive_chocolate" },
- "milk": { elem1: null, elem2: "radioactive_milk" },
- "bread": { elem1: null, elem2: "radioactive_bread" },
- "toast": { elem1: null, elem2: "radioactive_toast" },
- "beans": { elem1: null, elem2: "radioactive_beans" },
-};
+if (!elements.radiation.reactions) elements.egg.reactions = {};
+elements.radiation.reactions.meat = { elem1: null, elem2: "radioactive_meat" },
+elements.radiation.reactions.grape = { elem1: null, elem2: "radioactive_grape" },
+elements.radiation.reactions.egg = { elem1: null, elem2: "radioactive_egg" },
+elements.radiation.reactions.potato = { elem1: null, elem2: "radioactive_potato" },
+elements.radiation.reactions.water = { elem1: null, elem2: "radioactive_water" },
+elements.radiation.reactions.chocolate = { elem1: null, elem2: "radioactive_chocolate" },
+elements.radiation.reactions.milk = { elem1: null, elem2: "radioactive_milk" },
+elements.radiation.reactions.bread = { elem1: null, elem2: "radioactive_bread" },
+elements.radiation.reactions.toast = { elem1: null, elem2: "radioactive_toast" },
+elements.radiation.reactions.beans = { elem1: null, elem2: "radioactive_beans" }
-elements.egg.reactions = {
- "water": { elem1: "boiled_egg", tempMin: 100 },
- "steam": { elem1: "boiled_egg", tempMin: 100 },
- "melted_chocolate": { elem1: null, elem2: "chocolate_egg" },
- "chocolate": { elem1: null, elem2: "chocolate_egg", chance: 0.1 },
-};
+if (!elements.egg.reactions) elements.egg.reactions = {};
+elements.egg.reactions.water = {elem1: "boiled_egg", tempMin: 100},
+elements.egg.reactions.steam = {elem1: "boiled_egg", tempMin: 100},
+elements.egg.reactions.melted_chocolate = {elem1: "chocolate_egg"},
+elements.egg.reactions.chocolate = {elem1: "chocolate_egg", chance: 0.1}
-elements.potato.reactions = {
- "water": { elem1: "fries", tempMin: 100, chance: 50 },
- "water": { elem1: "chips", tempMin: 100, chance: 50 },
- "steam": { elem1: "fries", tempMin: 100, chance: 50 },
- "steam": { elem1: "fries", tempMin: 100, chance: 50 },
-};
+if (!elements.potato.reactions) elements.potato.reactions = {};
+elements.potato.reactions.water = {elem1: "fries", tempMin: 100, chance:50},
+elements.potato.reactions.steam = {elem1: "fries", tempMin: 100, chance:50},
+elements.potato.reactions.water = {elem1: "chips", tempMin: 100, chance:50},
+elements.potato.reactions.steam = {elem1: "fries", tempMin: 100, chance:50}
-elements.water.reactions = {
- "cocaine": { elem1: null, elem2: "solid_water", chance: 0.1 }
-};
+if (!elements.water.reactions) elements.water.reactions = {};
+elements.water.reactions.cocaine = { elem1: "solid_water", elem2: null }
-elements.paper.reactions = {
- "bless": { elem1: null, elem2: "dollar", chance: 0.1 },
-};
+if (!elements.paper.reactions) elements.paper.reactions = {};
+elements.paper.reactions.bless = { elem1: "robux", elem2: null, chance: 0.001 }
+
+if (!elements.uranium.reactions) elements.uranium.reactions = {};
+elements.uranium.reactions.ice_cream = {elem1: "uranium_ice_cream", elem2: null},
+elements.uranium.reactions.cream = {elem1: "uranium_ice_cream", elem2: null}
From 5196a1c0902d060c9480094d8b4b7d866f7ee575 Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Mon, 15 Jan 2024 13:00:33 -0500
Subject: [PATCH 21/39] fix old mod
---
mods/Neutronium Mod.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mods/Neutronium Mod.js b/mods/Neutronium Mod.js
index ffe8d9be..a9ec0fdf 100644
--- a/mods/Neutronium Mod.js
+++ b/mods/Neutronium Mod.js
@@ -1139,6 +1139,7 @@ tempHigh: 1131,
stateHigh: "molten_uranium238",
density: 20,
};
+/* Removed:
elements.butter = {
color: "#fcf1b1",
category: "food",
@@ -1215,6 +1216,7 @@ state: "solid",
behavior: behaviors.POWDER,
density: 500,
};
+*/
/* Unfinished:
magnesium
hematite mixture
From a8ddd29c4517c65e0fe0bcdaf84d29aedea74367 Mon Sep 17 00:00:00 2001
From: JustAGenericUsername
Date: Mon, 15 Jan 2024 14:02:31 -0500
Subject: [PATCH 22/39] element filler
---
mods/nousersthings.js | 36 +++++++++++++++++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 6d8cb01c..fda04d62 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2003,4 +2003,38 @@ elements.dyer = {
}
}
}
-}
\ No newline at end of file
+}
+elemfillerVar = 0;
+elements.element_filler = {
+ category: "special",
+ color: elements.filler.color,
+ state: "solid",
+ movable: "false",
+ onSelect: function() {
+ var answer6 = prompt("Please input the desired element of this filler. It will not work if you do multiple filter types while paused.",(elemfillerVar||undefined));
+ if (!answer6) { return }
+ elemfillerVar = answer6;
+ },
+ tick: function(pixel){
+ var neighbors = 0;
+ if(!pixel.changeElem){
+ pixel.changeElem = elemfillerVar;
+ }
+ for (var i = 0; i < squareCoords.length; i++) {
+ var coord = squareCoords[i];
+ var x = pixel.x+coord[0];
+ var y = pixel.y+coord[1];
+ if (!isEmpty(x,y, true)) {
+ neighbors = neighbors + 1;
+ } else if (isEmpty(x, y)){
+ createPixel("element_filler", x, y)
+ pixelMap[x][y].changeElem = pixel.changeElem;
+ } else (
+ changePixel(pixel, pixel.changeElem)
+ )
+ }
+ if (neighbors >= 8){
+ changePixel(pixel, pixel.changeElem)
+ }
+ }
+}
\ No newline at end of file
From a0adff5cc95f20cabbd984e56e1ca752e6861f10 Mon Sep 17 00:00:00 2001
From: stefanblox <155691462+stefanblox@users.noreply.github.com>
Date: Mon, 15 Jan 2024 19:49:36 -0300
Subject: [PATCH 23/39] sbstuff 2.4
better
---
mods/sbstuff.js | 65 ++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 53 insertions(+), 12 deletions(-)
diff --git a/mods/sbstuff.js b/mods/sbstuff.js
index 85f2cbf9..cb05c5bd 100644
--- a/mods/sbstuff.js
+++ b/mods/sbstuff.js
@@ -1,9 +1,12 @@
-elements.burnt_rice = {
+elements.cooked_rice = {
+ viscosity: 1000,
+ tempMin: 20,
+ stateMin: "rice",
tempHigh: 500,
- stateHigh: "ash",
+ stateHigh: ["ash", "charcoal"],
density: 699,
- color: "#242424",
- behavior: behaviors.POWDER,
+ color: "#c2b6b6",
+ behavior: behaviors.LIQUID,
category: "food",
state: "liquid",
reactions: {
@@ -12,12 +15,13 @@ elements.burnt_rice = {
};
elements.rice = {
+ breakInto: "flour",
viscosity: 10000,
isFood: true,
density: 696,
tempHigh: 232,
- stateHigh: "burnt_rice",
- color: "#d1d1d1",
+ stateHigh: "cooked_rice",
+ color: "#c8c8c8",
behavior: behaviors.LIQUID,
category: "food",
state: "liquid",
@@ -296,17 +300,17 @@ elements.burnt_marshmallow = {
state: "solid",
};
-elements.ramen = {
+elements.spaghetti = {
isFood: true,
tempHigh: 90,
stateHigh: "cooked_ramen",
color: "#fae34d",
- behavior: behaviors.POWDER,
+ behavior: behaviors.SUPPORT,
category: "food",
state: "solid",
};
-elements.cooked_ramen = {
+elements.cooked_spaghetti = {
hidden: true,
density: 800,
isFood: true,
@@ -316,7 +320,7 @@ elements.cooked_ramen = {
behavior: behaviors.SUPPORT,
category: "food",
state: "solid",
-}
+};
elements.cereal = {
isFood: true,
@@ -369,11 +373,15 @@ elements.piss = {
elements.soup = {
isFood: true,
- temp: 50,
+ temp: 100,
tempHigh: 500,
stateHigh: "steam",
color: "#945e00",
- behavior: behaviors.LIQUID,
+ behavior: [
+ "XX|CR:steam%0.1|XX",
+ "M2|XX|M2",
+ "M2|M1|M2"
+ ],
category: "liquids",
state: "liquid",
};
@@ -1392,6 +1400,34 @@ elements.uranium_ice_cream = {
state: "liquid",
};
+elements.silver_coin = {
+ tempHigh: 1000,
+ stateHigh: "molten_silver",
+ color: ["#ababab", "#dedede"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "solid",
+};
+
+elements.max_graphics_in_roblox = {
+ color: "#238fe8",
+ behavior: [
+ "XX|XX|XX",
+ "XX|EX:800000000000>plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,molten_iron,molten_uranium,molten_lead,oxygen,molten_sodium,sulfur_gas,neon,chlorine,molten_calcium,molten_nickel,molten_copper,molten_zinc,gallium_gas AND CH:void|XX",
+ "XX|XX|XX",
+ ],
+ temp: 99999999700,
+ category: "joke",
+ state: "gas",
+ density: 1000,
+ hardness: 1,
+ hidden: true,
+ excludeRandom: true,
+ maxSize: 1,
+ noMix: true,
+ desc: "ok now ACTUALLY use it at your own risk IM NOT KIDDING! THIS CAN FUCKING CRASH YOUR GAME"
+};
+
elements.incinerate.category = "tools",
elements.cook.category = "tools",
elements.room_temp.category = "tools",
@@ -1432,3 +1468,8 @@ elements.paper.reactions.bless = { elem1: "robux", elem2: null, chance: 0.001 }
if (!elements.uranium.reactions) elements.uranium.reactions = {};
elements.uranium.reactions.ice_cream = {elem1: "uranium_ice_cream", elem2: null},
elements.uranium.reactions.cream = {elem1: "uranium_ice_cream", elem2: null}
+
+if (!elements.dough.reactions) elements.dough.reactions = {};
+elements.dough.reactions.yolk = {elem1: null, elem2: "spaghetti", tempMin: 25}
+
+elements.silver.breakInto = "silver_coin"
From 61d91ee3fa5fc0c0ddb74c5d8a2cba3dbe7f02be Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Tue, 16 Jan 2024 10:45:50 -0500
Subject: [PATCH 24/39] this mod is hellish (metamorphites and bugfixes)
---
mods/a_mod_by_alice.js | 2946 ++++++++++++++++++++++++++--------------
1 file changed, 1921 insertions(+), 1025 deletions(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index 74ced39e..30e11d1e 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -9,6 +9,8 @@ if(allDependenciesExist) {
const whiteColor = {r: 255, g: 255, b: 255};
const blackColor = {r: 0, g: 0, b: 0};
+ canvas = document.getElementsByTagName("canvas")[0];
+ ctx = canvas.getContext("2d");
//ESSENTIAL COMMON FUNCTIONS (CODE LIBRARY) ##
@@ -274,7 +276,7 @@ if(allDependenciesExist) {
};
return false;
};
-
+
//Element name search
window.searchQuery = {};
@@ -288,6 +290,16 @@ if(allDependenciesExist) {
return matches
};
+ function getElementsInCategory(categoryName) {
+ if(["",null,undefined].includes(categoryName)) { categoryName = "other" };
+ window.categoryQuery = categoryName;
+ var elemNames = Object.keys(elements);
+ var matches = elemNames.filter(function(name) {
+ return (elements[name].category ?? "other") == window.categoryQuery
+ });
+ return matches
+ };
+
function getStateHigh(element,forceArray=false) {
if(!(element instanceof Array)) { element = [element] };
var existantElements = element.filter(function(name) { return elementExists(name) });
@@ -804,7 +816,7 @@ if(allDependenciesExist) {
function rgbHexCatcher(color) {
return convertColorFormats(color,"rgb");
};
-
+
function _rgbHexCatcher(color) {
return convertColorFormats(color,"rgb");
};
@@ -1653,16 +1665,32 @@ if(allDependenciesExist) {
//World
- function breakCircle(x,y,radius,respectHardness=false,changeTemp=false,defaultBreakIntoDust=false) {
- var coords = circleCoords(x,y,radius);
- for(i = 0; i < coords.length; i++) {
- coordX = coords[i].x;
- coordY = coords[i].y;
- if(!isEmpty(coordX,coordY,true)) {
- var pixel = pixelMap[coordX][coordY];
- respectHardness ? tryBreak(pixel,changeTemp,defaultBreakIntoDust) : breakPixel(pixel,changeTemp,defaultBreakIntoDust);
+ function getCirclePixels(x,y,radius) {
+ return circleCoords(x,y,radius).map(coordinates => pixelMap[coordinates.x]?.[coordinates.y]).filter(function(pixelOrUndefined) { return typeof(pixelOrUndefined) == "object" })
+ };
+
+ function getPixelMooreNeighbors(pixel) {
+ var coordsToCheck = mooreDonutCoords.map(function(offsets) { return {x: offsets[0]+pixel.x, y: offsets[1]+pixel.y} } );
+ var neighbors = [];
+ for(var i = 0; i < coordsToCheck.length; i++) {
+ var coords = coordsToCheck[i];
+ if(outOfBounds(coords.x,coords.y)) {
+ continue
};
+ if(isEmpty(coords.x,coords.y,true)) {
+ continue
+ };
+ if(!pixelMap[coords.x]?.[coords.y]) {
+ continue
+ };
+ neighbors.push(pixelMap[coords.x][coords.y])
};
+ return neighbors
+ };
+
+ function breakCircle(x,y,radius,respectHardness=false,changeTemp=false,defaultBreakIntoDust=false) {
+ var coords = getCirclePixels(x,y,radius);
+ coords.forEach(pixel => respectHardness ? tryBreak(pixel,changeTemp,defaultBreakIntoDust) : breakPixel(pixel,changeTemp,defaultBreakIntoDust))
};
function fillCircle(element,x,y,radius,overwrite=false) {
@@ -3457,7 +3485,8 @@ color1 and color2 spread through striped paint like dye does with itself. col
function reactPixels(pixel1,pixel2) {
var r = elements[pixel1.element].reactions[pixel2.element];
- if (r.setting && settings[r.setting]===0) {
+ if(!r) { return false };
+ if (r.setting && !(settings[r.setting])) {
return false;
}
var changeTemp = r.changeTemp ?? true
@@ -4429,7 +4458,8 @@ color1 and color2 spread through striped paint like dye does with itself. col
var canvas = document.getElementById("game");
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
- if(settings["bg"]) {
+ if (!settings["bg"]) {ctx.clearRect(0, 0, canvas.width, canvas.height)}
+ else {
if(settings["bg"] instanceof Array) {
settings.bgAngle ??= 0;
var angle = (settings.bgAngle) * Math.PI / 180;
@@ -4664,7 +4694,12 @@ color1 and color2 spread through striped paint like dye does with itself. col
};
}
}
- }
+ };
+
+ if (ctx.globalAlpha < 1) {
+ ctx.globalAlpha = 1;
+ };
+
if (elements[currentElement].maxSize < mouseSize) {
var mouseOffset = Math.trunc(elements[currentElement].maxSize/2);
}
@@ -4854,8 +4889,8 @@ color1 and color2 spread through striped paint like dye does with itself. col
if(!pixel || pixel.del) {
return "deleted";
};
- returnVal = true;
- }
+ returnVal = false;
+ };
var rr1 = false;
if (info.reactions !== undefined && info.reactions[newPixel.element] !== undefined) {
rr1 = reactPixels(pixel,newPixel)
@@ -7547,7 +7582,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
};
elements.concoction.state = "liquid";
-
+
elements.static.reactions ??= {}; elements.static.reactions.concoction = { "elem1": "static", "elem2": "static", "chance":0.005},
@@ -7976,7 +8011,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
},
behavior: behaviors.WALL,
state: "solid",
- category: "rainbow variants",
+ category: "rainbow variants", //7989 yay soshi!
nellfireImmune: true
};
@@ -8070,7 +8105,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
behavior: behaviors.WALL,
state: "solid",
category: "rainbow variants",
- }; //7989 yay soshi!
+ };
elements.lavashimmer = {
color: ["#ff3f00","#200800","#ff3f00","#200800"],
@@ -9458,17 +9493,11 @@ color1 and color2 spread through striped paint like dye does with itself. col
revealedAround: false
},
tick: function(pixel) {
- if(typeof(pixel.revealed) === 'undefined') {
- pixel.revealed = false
- }
- if(typeof(pixel.uwu) === 'undefined') {
- pixel.uwu = 0
- }
- if(typeof(pixel.revealedAround) === 'undefined') {
- pixel.revealedAround = false
- }
+ pixel.revealed ??= false;
+ pixel.uwu ??= 0;
+ pixel.revealedAround ??= false;
if(pixel.charge) {
- pixel.revealed = true
+ if(!pixel.revealed) { pixel.revealed = true };
delete pixel.charge
if(pixel.chargeCD) {
delete pixel.chargeCD
@@ -9488,7 +9517,8 @@ color1 and color2 spread through striped paint like dye does with itself. col
}
if(typeof(pixel.uwu) === 'number' && isFinite(pixel.uwu) && !isNaN(pixel.uwu)) {
if(pixel.uwu >= 0 && pixel.uwu <= 8) {
- pixel.color = msColorArray[pixel.uwu]
+ pixel.color = msColorArray[pixel.uwu];
+ pixel.displayText = pixel.uwu.toString()
}
} else {
pixel.color = "#ff00ff"
@@ -9497,6 +9527,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
pixel.color = "#c0c0c0" //I feel bad suppressing the sand effect.
}
},
+ maxColorOffset: 0,
category: "special",
state: "solid",
hidden: true,
@@ -11727,7 +11758,14 @@ Pixel size (rendering only): (Use if the save looks cut o
if (pixelMap[mousePos.x] !== undefined) {
var currentPixel = pixelMap[mousePos.x][mousePos.y];
if (typeof(currentPixel) !== "undefined" && currentPixel && currentPixel !== undefined && currentPixel.element) {
- stats += "Elem:"+(elements[currentPixel?.element]?.name || currentPixel?.element)+" ";
+ var displayName;
+ var displayElement = (elements[currentPixel?.element]?.name || currentPixel?.element);
+ if(currentPixel?.displayText) {
+ displayName = displayElement + ` (${currentPixel?.displayText})`
+ } else {
+ displayName = displayElement
+ };
+ stats += "Elem:"+displayName+" ";
stats += "Temp:"+formatTemp(currentPixel.temp)+" ";
if (currentPixel.charge) {
stats += "C"+currentPixel.charge+" ";
@@ -13395,7 +13433,7 @@ Pixel size (rendering only): (Use if the save looks cut o
//Hydrogen sulfide (in chem.js)
_h_2s = ["hydrogen_sulfide","liquid_hydrogen_sulfide","hydrogen_sulfide_ice"];
-
+
elements.hydrogen_sulfide.density = 1.19 * airDensity;
elements.hydrogen_sulfide.reactions ??= {};
elements.hydrogen_sulfide.reactions.head = { elem2: "rotten_meat", chance: 0.4};
@@ -14008,7 +14046,6 @@ Pixel size (rendering only): (Use if the save looks cut o
},
properties: {
"age": 0,
- //"bananaRange": null, //apparently this is suddenly, in an illogical, never-before-seen, completely new, unprecedented incident of bad behavior, evaluated before being put into the property database, so RNG has to be done in tick
"bananaRange": null
},
tempHigh: 100,
@@ -15254,10 +15291,10 @@ Pixel size (rendering only): (Use if the save looks cut o
excludeRandom: true,
alias: "nitroglycerin gas"
};
-
+
elements.nitro.tempHigh = 50;
elements.nitro.stateHigh = "nitro_gas";
-
+
//}
// ash {
@@ -19693,24 +19730,30 @@ Pixel size (rendering only): (Use if the save looks cut o
};
};
- hotRockBehavior = [
+ behaviors.HOT_POWDER = [
"XX|CR:fire%0.5|XX",
"XX|XX|XX",
"M2|M1|M2"
];
- sturdyHotRockBehavior = [
+ behaviors.HOT_STURDYPOWDER = [
"XX|CR:fire%0.5|XX",
"XX|XX|XX",
"XX|M1|XX"
];
- solidHotRockBehavior = [
+ behaviors.HOT_WALL = [
"XX|CR:fire%0.1|XX",
"CR:fire%0.1|XX|CR:fire%0.1",
"XX|CR:fire%0.1|XX"
];
+ behaviors.HOT_SUPPORT = [
+ "XX|CR:fire%0.1|XX",
+ "SP AND CR:fire%0.1|XX|SP AND CR:fire%0.1",
+ "XX|M1|XX"
+ ];
+
//console.log(rocksSandsAndSoilsToGiveHotForms)
for(j = 0; j < rocksSandsAndSoilsToGiveHotForms.length; j++) {
var rockName = rocksSandsAndSoilsToGiveHotForms[j];
@@ -19727,14 +19770,16 @@ Pixel size (rendering only): (Use if the save looks cut o
behavior: function() {
switch((rockInfo.behavior ?? "undefined").toString()) {
case (behaviors.WALL.toString()):
- return solidHotRockBehavior;
+ return behaviors.HOT_WALL;
case (behaviors.STURDYPOWDER.toString()):
- return sturdyHotRockBehavior;
+ return behaviors.HOT_STURDYPOWDER;
case (behaviors.POWDER.toString()):
- return hotRockBehavior;
+ return behaviors.HOT_POWDER;
+ case (behaviors.SUPPORT.toString()):
+ return behaviors.HOT_SUPPORT;
default:
- console.log(rockName);
- return hotRockBehavior
+ console.log(`Hot rock generation: Unknown base behavior for ${rockName}, defaulting to hot powder`);
+ return behaviors.HOT_POWDER
}
}(),
category: "hot rock",
@@ -20532,604 +20577,1136 @@ Pixel size (rendering only): (Use if the save looks cut o
};
};
+ function simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) {
+ if(pixel.exposedToAir) { return };
+ if(pixel.temp > 200 && Math.random () < 0.0001) {
+ changePixel(pixel,elements[pixel.element].metamorphite)
+ };
+ return
+ };
+
function newIgneousCompositionFamily(
compositionFamilyName,
- magmaViscosity,
- magmaDensity,
- vitriteCoolingRateThreshold,
- aphaniteCoolingRateThreshold,
- magmaBoilingPoint,
- phaneriteName,
- phaneriteColor,
- phaneriteMeltingPoint,
- phaneriteDensity,
+ magmaViscosity, magmaDensity, vitriteCoolingRateThreshold, aphaniteCoolingRateThreshold, magmaBoilingPoint,
- aphaniteName,
- aphaniteColor,
- aphaniteMeltingPoint,
- aphaniteDensity,
+ phaneriteName, phaneriteColor, phaneriteMeltingPoint, phaneriteDensity,
+ metaphaneriteName, metaphaneriteColor, metaphaneriteMeltingPoint, metaphaneriteDensity,
- vesiculiteName,
- vesiculiteColor,
- vesiculiteMeltingPoint,
- vesiculiteDensity,
+ aphaniteName, aphaniteColor, aphaniteMeltingPoint, aphaniteDensity,
+ metaaphaniteName, metaaphaniteColor, metaaphaniteMeltingPoint, metaaphaniteDensity,
- vitriteName,
- vitriteColor,
- vitriteMeltingPoint,
- vitriteDensity,
+ vesiculiteName, vesiculiteColor, vesiculiteMeltingPoint, vesiculiteDensity,
+ metavesiculiteName, metavesiculiteColor, metavesiculiteMeltingPoint, metavesiculiteDensity,
- sandFormationReactionRegularSandCount,
- sandFormationReactionSpecificSandCount,
+ vitriteName, vitriteColor, vitriteMeltingPoint, vitriteDensity,
+ metavitriteName, metavitriteColor, metavitriteMeltingPoint, metavitriteDensity,
+
+ sandFormationReactionRegularSandCount, sandFormationReactionSpecificSandCount,
) {
//console.log(compositionFamilyName,vesiculiteMeltingPoint,vitriteMeltingPoint);
- //gabbro_sand instead of rock_sand for rock's unique sand
- var phaneriteSandName = compositionFamilyName == "mafic" ? "gabbro_sand" : phaneriteName + "_sand";
- var aphaniteSandName = aphaniteName + "_sand";
- var vesiculiteSandName = vesiculiteName + "_sand";
- var vitriteSandName = vitriteName + "_sand";
+ //Auto names
+ //Sand
+ //gabbro_sand instead of rock_sand for rock's unique sand
+ var phaneriteSandName = compositionFamilyName == "mafic" ? "gabbro_sand" : phaneriteName + "_sand";
+ var aphaniteSandName = aphaniteName + "_sand";
+ var vesiculiteSandName = vesiculiteName + "_sand";
+ var vitriteSandName = vitriteName + "_sand";
+ var metaphaneriteSandName = metaphaneriteName + "_sand";
+ var metaaphaniteSandName = metaaphaniteName + "_sand";
+ var metavesiculiteSandName = metavesiculiteName + "_sand";
+ var metavitriteSandName = metavitriteName + "_sand";
- //keep rock_wall to replace vanilla rock wall
- var phaneriteWallName = phaneriteName + "_wall";
- var aphaniteWallName = aphaniteName + "_wall";
- var vesiculiteWallName = vesiculiteName + "_wall";
- var vitriteWallName = vitriteName + "_wall";
+ //Solid rocks (rock walls)
+ //keep rock_wall to replace vanilla rock wall
+ var phaneriteWallName = compositionFamilyName == "mafic" ? "rock_wall" : phaneriteName + "_wall";
+ var aphaniteWallName = aphaniteName + "_wall";
+ var vesiculiteWallName = vesiculiteName + "_wall";
+ var vitriteWallName = vitriteName + "_wall";
+ var metaphaneriteWallName = metaphaneriteName + "_wall";
+ var metaaphaniteWallName = metaaphaniteName + "_wall";
+ var metavesiculiteWallName = metavesiculiteName + "_wall";
+ var metavitriteWallName = metavitriteName + "_wall";
- //gravel instead of rock_gravel for normal gravel (as rock's unique gravel)
- var phaneriteGravelName = compositionFamilyName == "mafic" ? "gravel" : phaneriteName + "_gravel";
- var aphaniteGravelName = aphaniteName + "_gravel";
- var vesiculiteGravelName = vesiculiteName + "_gravel";
- var vitriteGravelName = vitriteName + "_shard";
+ //Gravel
+ //gravel instead of rock_gravel for normal gravel (as rock's unique gravel)
+ var phaneriteGravelName = compositionFamilyName == "mafic" ? "gravel" : phaneriteName + "_gravel";
+ var aphaniteGravelName = aphaniteName + "_gravel";
+ var vesiculiteGravelName = vesiculiteName + "_gravel";
+ var vitriteGravelName = vitriteName + "_shard";
+ var metaphaneriteGravelName = metaphaneriteName + "_gravel";
+ var metaaphaniteGravelName = metaaphaniteName + "_gravel";
+ var metavesiculiteGravelName = metavesiculiteName + "_gravel";
+ var metavitriteGravelName = metavitriteName + "_shard";
- //gabbro_dust instead of rock_dust for rock's unique dust
- var phaneriteDustName = compositionFamilyName == "mafic" ? "gabbro_dust" : phaneriteName + "_dust";
- var aphaniteDustName = aphaniteName + "_dust";
- var vesiculiteDustName = vesiculiteName + "_dust";
- var vitriteDustName = vitriteName + "_dust";
+ //Dust
+ //gabbro_dust instead of rock_dust for rock's unique dust
+ var phaneriteDustName = compositionFamilyName == "mafic" ? "gabbro_dust" : phaneriteName + "_dust";
+ var aphaniteDustName = aphaniteName + "_dust";
+ var vesiculiteDustName = vesiculiteName + "_dust";
+ var vitriteDustName = vitriteName + "_dust";
+ var metaphaneriteDustName = metaphaneriteName + "_dust";
+ var metaaphaniteDustName = metaaphaniteName + "_dust";
+ var metavesiculiteDustName = metavesiculiteName + "_dust";
+ var metavitriteDustName = metavitriteName + "_dust";
- //push future sand names and wet sand names to sand list for sandstone system generation
- sands.push(phaneriteSandName);
- sands.push(aphaniteSandName);
- sands.push(vesiculiteSandName);
- sands.push(vitriteSandName);
- wetSands.push("wet_" + phaneriteSandName);
- wetSands.push("wet_" + aphaniteSandName);
- wetSands.push("wet_" + vesiculiteSandName);
- wetSands.push("wet_" + vitriteSandName);
+ //Push future sand names and wet sand names to sand list for sandstone system generation
+ sands.push(phaneriteSandName);
+ sands.push(aphaniteSandName);
+ sands.push(vesiculiteSandName);
+ sands.push(vitriteSandName);
+ sands.push(metaphaneriteSandName);
+ sands.push(metaaphaniteSandName);
+ sands.push(metavesiculiteSandName);
+ sands.push(metavitriteSandName);
+ wetSands.push("wet_" + phaneriteSandName);
+ wetSands.push("wet_" + aphaniteSandName);
+ wetSands.push("wet_" + vesiculiteSandName);
+ wetSands.push("wet_" + vitriteSandName);
+ wetSands.push("wet_" + metaphaneriteSandName);
+ wetSands.push("wet_" + metaaphaniteSandName);
+ wetSands.push("wet_" + metavesiculiteSandName);
+ wetSands.push("wet_" + metavitriteSandName);
- //generate magma name for whole igneous family
- var magmaName = compositionFamilyName == "mafic" ? "magma" : compositionFamilyName + "_magma";
- var magmaCloudName = magmaName + "_cloud"
- var rockCloudName = compositionFamilyName + "_rock_cloud"
+ //Magma and magma derivative names
+ var magmaName = compositionFamilyName == "mafic" ? "magma" : compositionFamilyName + "_magma";
+ var magmaCloudName = magmaName + "_cloud"
+ var rockCloudName = compositionFamilyName + "_rock_cloud"
- //create phanerite and transplant existing reactions if they exist
- var phaneriteOldReactions = nicffunc_getReactions(phaneriteName);
- elements[phaneriteName] = {
- color: phaneriteColor,
- behavior: behaviors.POWDER,
- category: "rock",
- state: "solid",
- tempHigh: phaneriteMeltingPoint,
- stateHigh: magmaName,
- density: phaneriteDensity,
- hardness: 0.75,
- breakInto: phaneriteGravelName,
- _data: [compositionFamilyName,"phanerite","igneous_rock"],
- };
- if(phaneriteOldReactions) {
- elements[phaneriteName].reactions = phaneriteOldReactions;
- };
+ //Create rocks, transplant existing reactions if they exist, add/change erosion reactions to match, and create corresponding physical variants
+ //Phanerite
+ var phaneriteOldReactions = nicffunc_getReactions(phaneriteName);
- //replace water rock-erosion reaction
- elements.water.reactions[phaneriteName] = { "elem2": phaneriteGravelName, "chance": 0.00035 }
+ elements[phaneriteName] = {
+ color: phaneriteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: phaneriteMeltingPoint,
+ stateHigh: magmaName,
+ density: phaneriteDensity,
+ hardness: 0.75,
+ breakInto: phaneriteGravelName,
+ _data: [compositionFamilyName,"phanerite","igneous_rock"],
+ metamorphite: metaphaneriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+ if(phaneriteOldReactions) {
+ elements[phaneriteName].reactions = phaneriteOldReactions;
+ };
- //create unique gravel
- elements[phaneriteGravelName] = {
- color: gravelizeToHex(phaneriteColor),
- behavior: behaviors.POWDER,
- category: "gravel",
- state: "solid",
- tempHigh: phaneriteMeltingPoint,
- stateHigh: magmaName,
- breakInto: phaneriteDustName,
- density: phaneriteDensity * 0.55,
- _data: [compositionFamilyName,"phanerite","igneous_gravel"],
- };
+ //replace water rock-erosion reaction
+ elements.water.reactions[phaneriteName] = { "elem2": phaneriteGravelName, "chance": 0.00035 }
- //generate water gravel-erosion reaction using rock family's sand ratio
- elements.water.reactions[phaneriteGravelName] = { "elem2": twoPartRepeatedArray(phaneriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+ //create unique gravel
+ elements[phaneriteGravelName] = {
+ color: gravelizeToHex(phaneriteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: phaneriteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: phaneriteDustName,
+ density: phaneriteDensity * 0.55,
+ _data: [compositionFamilyName,"phanerite","igneous_gravel"],
+ metamorphite: metaphaneriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- //generate unique solid version
- elements[phaneriteWallName] = {
- color: phaneriteColor,
- behavior: behaviors.WALL,
- category: "solid rock",
- state: "solid",
- tempHigh: phaneriteMeltingPoint,
- stateHigh: magmaName,
- density: phaneriteDensity,
- hardness: 0.8,
- breakInto: phaneriteName,
- _data: [compositionFamilyName,"phanerite","solid_igneous_rock"],
- };
+ elements[phaneriteDustName] = {
+ color: dustizeToHex(phaneriteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: phaneriteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [phaneriteDustName]: {elem1: phaneriteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (phaneriteDensity / 1000), //unmeasured value
+ _data: [compositionFamilyName,"phanerite","dust"],
+ };
- var aphaniteOldReactions = nicffunc_getReactions(aphaniteName);
- elements[aphaniteName] = {
- color: aphaniteColor,
- behavior: behaviors.POWDER,
- category: "rock",
- state: "solid",
- tempHigh: aphaniteMeltingPoint,
- stateHigh: magmaName,
- density: aphaniteDensity,
- hardness: 0.75,
- breakInto: aphaniteGravelName,
- _data: [compositionFamilyName,"aphanite","igneous_rock"],
- };
- if(aphaniteOldReactions) {
- elements[aphaniteName].reactions = aphaniteOldReactions;
- };
+ //generate water gravel-erosion reaction using rock family's sand ratio
+ elements.water.reactions[phaneriteGravelName] = { "elem2": twoPartRepeatedArray(phaneriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
- elements[aphaniteWallName] = {
- color: aphaniteColor,
- behavior: behaviors.WALL,
- category: "solid rock",
- state: "solid",
- tempHigh: aphaniteMeltingPoint,
- stateHigh: magmaName,
- density: aphaniteDensity,
- hardness: 0.8,
- breakInto: aphaniteName,
- _data: [compositionFamilyName,"aphanite","solid_igneous_rock"],
- };
+ //generate unique solid version
+ elements[phaneriteWallName] = {
+ color: phaneriteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: phaneriteMeltingPoint,
+ stateHigh: magmaName,
+ density: phaneriteDensity,
+ hardness: 0.8,
+ breakInto: phaneriteName,
+ _data: [compositionFamilyName,"phanerite","solid_igneous_rock"],
+ metamorphite: metaphaneriteWallName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements.water.reactions[phaneriteWallName] = { "elem2": phaneriteName, "chance": 0.00035 }
- elements.water.reactions[aphaniteWallName] = { "elem2": aphaniteName, "chance": 0.00035 }
- elements.water.reactions[vesiculiteWallName] = { "elem2": vesiculiteName, "chance": 0.00035 }
- elements.water.reactions[vitriteWallName] = { "elem2": vitriteName, "chance": 0.00035 }
+ elements.water.reactions[phaneriteWallName] = { "elem2": phaneriteName, "chance": 0.00035 }
- elements.water.reactions[aphaniteName] = { "elem2": aphaniteGravelName, "chance": 0.00035 }
+ //Sand and sand variants
+ elements[phaneriteSandName] = {
+ color: sandizeToHex(phaneriteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: phaneriteMeltingPoint,
+ stateHigh: vitriteName,
+ density: phaneriteDensity * 0.595,
+ _data: [compositionFamilyName,"phanerite","particulate"],
+ metamorphite: metaphaneriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements[phaneriteSandName] = {
- color: sandizeToHex(phaneriteName,"normal"),
- behavior: behaviors.POWDER,
- category: "sand",
- state: "solid",
- tempHigh: phaneriteMeltingPoint,
- stateHigh: vitriteName,
- density: phaneriteDensity * 0.595,
- _data: [compositionFamilyName,"phanerite","particulate"],
- };
+ //console.log(phaneriteSandName, elements[phaneriteSandName].color);
- elements[phaneriteDustName] = {
- color: dustizeToHex(phaneriteName),
- behavior: behaviors.GAS,
- category: "rock dust",
- state: "gas",
- tempHigh: phaneriteMeltingPoint,
- stateHigh: ["fire",magmaName],
- reactions: {
- [phaneriteDustName]: {elem1: phaneriteSandName, elem2: null, chance: 0.003},
- },
- density: airDensity + (phaneriteDensity / 1000), //unmeasured value
- _data: [compositionFamilyName,"phanerite","dust"],
- };
+ elements["wet_" + phaneriteSandName] = {
+ color: sandizeToHex(phaneriteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + phaneriteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + phaneriteSandName,
+ density: phaneriteDensity * 0.595 + 150,
+ _data: [compositionFamilyName,"phanerite","wet_particulate"],
+ metamorphite: metaphaneriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- //console.log(phaneriteSandName, elements[phaneriteSandName].color);
+ elements["packed_" + phaneriteSandName] = {
+ color: sandizeToHex(phaneriteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: phaneriteMeltingPoint,
+ stateHigh: vitriteName,
+ density: phaneriteDensity * 0.59,
+ breakInto: phaneriteSandName,
+ _data: [compositionFamilyName,"phanerite","packed_particulate"],
+ metamorphite: metaphaneriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements["wet_" + phaneriteSandName] = {
- color: sandizeToHex(phaneriteName,"wet"),
- behavior: behaviors.STURDYPOWDER,
- category: "wet sand",
- reactions: {
- "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
- },
- state: "solid",
- tempHigh: 100,
- stateHigh: "packed_" + phaneriteSandName,
- tempLow: -50,
- stateLow:"packed_" + phaneriteSandName,
- density: phaneriteDensity * 0.595 + 150,
- _data: [compositionFamilyName,"phanerite","wet_particulate"],
- };
+ elements.water.reactions[phaneriteSandName] = {
+ "elem1": null, "elem2": "wet_" + phaneriteSandName,
+ };
- elements["packed_" + phaneriteSandName] = {
- color: sandizeToHex(phaneriteName,"packed"),
- behavior: behaviors.SUPPORT,
- category: "packed sand",
- state: "solid",
- tempHigh: phaneriteMeltingPoint,
- stateHigh: vitriteName,
- density: phaneriteDensity * 0.59,
- breakInto: phaneriteSandName,
- _data: [compositionFamilyName,"phanerite","packed_particulate"],
- };
+ //Metaphanerite
+ var metaphaneriteOldReactions = nicffunc_getReactions(phaneriteName);
- elements.water.reactions[phaneriteSandName] = {
- "elem1": null, "elem2": "wet_" + phaneriteSandName,
- };
+ elements[metaphaneriteName] = {
+ color: metaphaneriteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: metaphaneriteMeltingPoint,
+ stateHigh: magmaName,
+ density: metaphaneriteDensity,
+ hardness: 0.75,
+ breakInto: metaphaneriteGravelName,
+ _data: [compositionFamilyName,"metaphanerite","metamorphic_rock"],
+ };
+ if(metaphaneriteOldReactions) {
+ elements[metaphaneriteName].reactions = metaphaneriteOldReactions;
+ };
- elements[aphaniteGravelName] = {
- color: gravelizeToHex(aphaniteColor),
- behavior: behaviors.POWDER,
- category: "gravel",
- state: "solid",
- tempHigh: aphaniteMeltingPoint,
- stateHigh: magmaName,
- breakInto: aphaniteDustName,
- density: aphaniteDensity * 0.55,
- _data: [compositionFamilyName,"aphanite","igneous_gravel"],
- };
+ //replace water rock-erosion reaction
+ elements.water.reactions[metaphaneriteName] = { "elem2": metaphaneriteGravelName, "chance": 0.00035 }
- elements.water.reactions[aphaniteGravelName] = { "elem2": twoPartRepeatedArray(aphaniteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+ //create unique gravel
+ elements[metaphaneriteGravelName] = {
+ color: gravelizeToHex(metaphaneriteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: metaphaneriteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: metaphaneriteDustName,
+ density: metaphaneriteDensity * 0.55,
+ _data: [compositionFamilyName,"metaphanerite","metamorphic_gravel"],
+ };
- elements[aphaniteSandName] = {
- color: sandizeToHex(aphaniteName,"normal"),
- behavior: behaviors.POWDER,
- category: "sand",
- state: "solid",
- tempHigh: aphaniteMeltingPoint,
- stateHigh: vitriteName,
- density: aphaniteDensity * 0.595,
- _data: [compositionFamilyName,"aphanite","particulate"],
- };
+ elements[metaphaneriteDustName] = {
+ color: dustizeToHex(metaphaneriteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: metaphaneriteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [metaphaneriteDustName]: {elem1: metaphaneriteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (metaphaneriteDensity / 1000), //unmeasured value
+ _data: [compositionFamilyName,"metaphanerite","dust"],
+ };
- elements[aphaniteDustName] = {
- color: dustizeToHex(aphaniteName),
- behavior: behaviors.GAS,
- category: "rock dust",
- state: "gas",
- tempHigh: aphaniteMeltingPoint,
- stateHigh: ["fire",magmaName],
- reactions: {
- [aphaniteDustName]: {elem1: aphaniteSandName, elem2: null, chance: 0.003},
- },
- density: airDensity + (aphaniteDensity / 1000), //unmeasured value
- _data: [compositionFamilyName,"aphanite","dust"],
- };
+ //generate water gravel-erosion reaction using rock family's sand ratio
+ elements.water.reactions[metaphaneriteGravelName] = { "elem2": twoPartRepeatedArray(metaphaneriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
- elements["wet_" + aphaniteSandName] = {
- color: sandizeToHex(aphaniteName,"wet"),
- behavior: behaviors.STURDYPOWDER,
- category: "wet sand",
- reactions: {
- "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
- },
- state: "solid",
- tempHigh: 100,
- stateHigh: "packed_" + aphaniteSandName,
- tempLow: -50,
- stateLow:"packed_" + aphaniteSandName,
- density: aphaniteDensity * 0.595 + 150,
- _data: [compositionFamilyName,"aphanite","wet_particulate"],
- };
+ //generate unique solid version
+ elements[metaphaneriteWallName] = {
+ color: metaphaneriteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: metaphaneriteMeltingPoint,
+ stateHigh: magmaName,
+ density: metaphaneriteDensity,
+ hardness: 0.8,
+ breakInto: metaphaneriteName,
+ _data: [compositionFamilyName,"metaphanerite","solid_metamorphic_rock"],
+ };
- elements["packed_" + aphaniteSandName] = {
- color: sandizeToHex(aphaniteName,"packed"),
- behavior: behaviors.SUPPORT,
- category: "packed sand",
- state: "solid",
- tempHigh: aphaniteMeltingPoint,
- stateHigh: vitriteName,
- density: aphaniteDensity * 0.59,
- breakInto: aphaniteSandName,
- _data: [compositionFamilyName,"aphanite","packed_particulate"],
- };
+ elements.water.reactions[metaphaneriteWallName] = { "elem2": metaphaneriteName, "chance": 0.00035 }
- elements.water.reactions[aphaniteSandName] = {
- "elem1": null, "elem2": "wet_" + aphaniteSandName,
- };
+ //Sand and sand variants
+ elements[metaphaneriteSandName] = {
+ color: sandizeToHex(metaphaneriteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: metaphaneriteMeltingPoint,
+ stateHigh: vitriteName,
+ density: metaphaneriteDensity * 0.595,
+ _data: [compositionFamilyName,"metaphanerite","particulate"],
+ };
- elements[vesiculiteName] = {
- color: vesiculiteColor,
- behavior: behaviors.POWDER,
- category: "rock",
- state: "solid",
- tempHigh: vesiculiteMeltingPoint,
- stateHigh: magmaName,
- density: vesiculiteDensity,
- hardness: 0.75,
- breakInto: vesiculiteGravelName,
- _data: [compositionFamilyName,"vesiculite","igneous_rock"],
- };
+ //console.log(metaphaneriteSandName, elements[metaphaneriteSandName].color);
- elements[vesiculiteWallName] = {
- color: vesiculiteColor,
- behavior: behaviors.WALL,
- category: "solid rock",
- state: "solid",
- tempHigh: vesiculiteMeltingPoint,
- stateHigh: magmaName,
- density: vesiculiteDensity,
- hardness: 0.8,
- breakInto: vesiculiteName,
- _data: [compositionFamilyName,"vesiculite","solid_igneous_rock"],
- };
+ elements["wet_" + metaphaneriteSandName] = {
+ color: sandizeToHex(metaphaneriteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + metaphaneriteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + metaphaneriteSandName,
+ density: metaphaneriteDensity * 0.595 + 150,
+ _data: [compositionFamilyName,"metaphanerite","wet_particulate"],
+ };
- elements.water.reactions[vesiculiteName] = { "elem2": vesiculiteGravelName, "chance": 0.00035 }
+ elements["packed_" + metaphaneriteSandName] = {
+ color: sandizeToHex(metaphaneriteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: metaphaneriteMeltingPoint,
+ stateHigh: vitriteName,
+ density: metaphaneriteDensity * 0.59,
+ breakInto: metaphaneriteSandName,
+ _data: [compositionFamilyName,"metaphanerite","packed_particulate"],
+ };
- elements[vesiculiteGravelName] = {
- color: gravelizeToHex(vesiculiteColor),
- behavior: behaviors.POWDER,
- category: "gravel",
- state: "solid",
- tempHigh: vesiculiteMeltingPoint,
- stateHigh: magmaName,
- breakInto: vesiculiteDustName,
- density: vesiculiteDensity * 3.2,
- _data: [compositionFamilyName,"vesiculite","igneous_gravel"],
- };
+ elements.water.reactions[metaphaneriteSandName] = {
+ "elem1": null, "elem2": "wet_" + metaphaneriteSandName,
+ };
- elements.water.reactions[vesiculiteGravelName] = { "elem2": twoPartRepeatedArray(vesiculiteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+ //Aphanite
+ var aphaniteOldReactions = nicffunc_getReactions(aphaniteName);
- elements[vesiculiteSandName] = {
- color: sandizeToHex(vesiculiteName,"normal"),
- behavior: behaviors.POWDER,
- category: "sand",
- state: "solid",
- tempHigh: vesiculiteMeltingPoint,
- stateHigh: vitriteName,
- density: vesiculiteDensity * 1.9,
- _data: [compositionFamilyName,"vesiculite","particulate"],
- };
+ elements[aphaniteName] = {
+ color: aphaniteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: aphaniteMeltingPoint,
+ stateHigh: magmaName,
+ density: aphaniteDensity,
+ hardness: 0.75,
+ breakInto: aphaniteGravelName,
+ _data: [compositionFamilyName,"aphanite","igneous_rock"],
+ metamorphite: metaaphaniteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+ if(aphaniteOldReactions) {
+ elements[aphaniteName].reactions = aphaniteOldReactions;
+ };
- elements[vesiculiteDustName] = {
- color: dustizeToHex(vesiculiteName),
- behavior: behaviors.GAS,
- category: "rock dust",
- state: "gas",
- tempHigh: vesiculiteMeltingPoint,
- stateHigh: ["fire",magmaName],
- reactions: {
- [vesiculiteDustName]: {elem1: vesiculiteSandName, elem2: null, chance: 0.003},
- },
- density: airDensity + (vesiculiteDensity / 800), //unmeasured value
- _data: [compositionFamilyName,"vesiculite","dust"],
- };
+ elements.water.reactions[aphaniteName] = { "elem2": aphaniteGravelName, "chance": 0.00035 }
- elements["wet_" + vesiculiteSandName] = {
- color: sandizeToHex(vesiculiteName,"wet"),
- behavior: behaviors.STURDYPOWDER,
- category: "wet sand",
- reactions: {
- "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
- },
- state: "solid",
- tempHigh: 100,
- stateHigh: "packed_" + vesiculiteSandName,
- tempLow: -50,
- stateLow:"packed_" + vesiculiteSandName,
- density: vesiculiteDensity * 1.9 + 150,
- _data: [compositionFamilyName,"vesiculite","wet_particulate"],
- };
+ elements[aphaniteGravelName] = {
+ color: gravelizeToHex(aphaniteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: aphaniteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: aphaniteDustName,
+ density: aphaniteDensity * 0.55,
+ _data: [compositionFamilyName,"aphanite","igneous_gravel"],
+ metamorphite: metaaphaniteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements["packed_" + vesiculiteSandName] = {
- color: sandizeToHex(vesiculiteName,"packed"),
- behavior: behaviors.SUPPORT,
- category: "packed sand",
- state: "solid",
- tempHigh: vesiculiteMeltingPoint,
- stateHigh: vitriteName,
- density: vesiculiteDensity * 1.888,
- breakInto: vesiculiteSandName,
- _data: [compositionFamilyName,"vesiculite","packed_particulate"],
- };
+ elements[aphaniteDustName] = {
+ color: dustizeToHex(aphaniteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: aphaniteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [aphaniteDustName]: {elem1: aphaniteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (aphaniteDensity / 1000), //unmeasured value
+ _data: [compositionFamilyName,"aphanite","dust"],
+ };
- elements.water.reactions[vesiculiteSandName] = {
- "elem1": null, "elem2": "wet_" + vesiculiteSandName,
- };
+ elements.water.reactions[aphaniteGravelName] = { "elem2": twoPartRepeatedArray(aphaniteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
- elements[vitriteName] = {
- color: vitriteColor,
- behavior: behaviors.POWDER,
- category: "rock",
- state: "solid",
- tempHigh: vitriteMeltingPoint,
- stateHigh: magmaName,
- density: vitriteDensity,
- hardness: 0.75,
- breakInto: vitriteGravelName,
- _data: [compositionFamilyName,"vitrite","igneous_rock"],
- };
+ elements[aphaniteWallName] = {
+ color: aphaniteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: aphaniteMeltingPoint,
+ stateHigh: magmaName,
+ density: aphaniteDensity,
+ hardness: 0.8,
+ breakInto: aphaniteName,
+ _data: [compositionFamilyName,"aphanite","solid_igneous_rock"],
+ metamorphite: metaaphaniteWallName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements[vitriteWallName] = {
- color: vitriteColor,
- behavior: behaviors.WALL,
- category: "solid rock",
- state: "solid",
- tempHigh: vitriteMeltingPoint,
- stateHigh: magmaName,
- density: vitriteDensity,
- hardness: 0.8,
- breakInto: vitriteName,
- _data: [compositionFamilyName,"vitrite","solid_igneous_rock"],
- };
+ elements.water.reactions[aphaniteWallName] = { "elem2": aphaniteName, "chance": 0.00035 }
- elements.water.reactions[vitriteName] = { "elem2": vitriteGravelName, "chance": 0.00035 }
+ //Sand and sand variants
+ elements[aphaniteSandName] = {
+ color: sandizeToHex(aphaniteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: aphaniteMeltingPoint,
+ stateHigh: vitriteName,
+ density: aphaniteDensity * 0.595,
+ _data: [compositionFamilyName,"aphanite","particulate"],
+ metamorphite: metaaphaniteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements[vitriteGravelName] = {
- color: gravelizeToHex(vitriteColor),
- behavior: behaviors.POWDER,
- category: "gravel",
- state: "solid",
- tempHigh: vitriteMeltingPoint,
- stateHigh: magmaName,
- breakInto: vitriteDustName,
- density: vitriteDensity * 0.55,
- _data: [compositionFamilyName,"vitrite","glass_shard"],
- };
+ elements["wet_" + aphaniteSandName] = {
+ color: sandizeToHex(aphaniteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + aphaniteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + aphaniteSandName,
+ density: aphaniteDensity * 0.595 + 150,
+ _data: [compositionFamilyName,"aphanite","wet_particulate"],
+ metamorphite: metaaphaniteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements.water.reactions[vitriteGravelName] = { "elem2": twoPartRepeatedArray(vitriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+ elements["packed_" + aphaniteSandName] = {
+ color: sandizeToHex(aphaniteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: aphaniteMeltingPoint,
+ stateHigh: vitriteName,
+ density: aphaniteDensity * 0.59,
+ breakInto: aphaniteSandName,
+ _data: [compositionFamilyName,"aphanite","packed_particulate"],
+ metamorphite: metaaphaniteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
- elements[vitriteSandName] = {
- color: sandizeToHex(vitriteName,"normal"),
- behavior: behaviors.POWDER,
- category: "sand",
- state: "solid",
- tempHigh: vitriteMeltingPoint,
- stateHigh: vitriteName,
- density: vitriteDensity * 0.595,
- _data: [compositionFamilyName,"vitrite","particulate"],
- };
+ elements.water.reactions[aphaniteSandName] = {
+ "elem1": null, "elem2": "wet_" + aphaniteSandName,
+ };
- elements[vitriteDustName] = {
- color: dustizeToHex(vitriteName),
- behavior: behaviors.GAS,
- category: "rock dust",
- state: "gas",
- tempHigh: vitriteMeltingPoint,
- stateHigh: ["fire",magmaName],
- reactions: {
- [vitriteDustName]: {elem1: vitriteSandName, elem2: null, chance: 0.003},
- },
- density: airDensity + (vitriteDensity / 1000), //unmeasured value
- _data: [compositionFamilyName,"vitrite","dust"],
- };
+ //Metaaphanite
+ var metaaphaniteOldReactions = nicffunc_getReactions(phaneriteName);
- elements["wet_" + vitriteSandName] = {
- color: sandizeToHex(vitriteName,"wet"),
- behavior: behaviors.STURDYPOWDER,
- category: "wet sand",
- reactions: {
- "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
- },
- state: "solid",
- tempHigh: 100,
- stateHigh: "packed_" + vitriteSandName,
- tempLow: -50,
- stateLow:"packed_" + vitriteSandName,
- density: vitriteDensity * 0.595 + 150,
- _data: [compositionFamilyName,"vitrite","wet_particulate"],
- };
+ elements[metaaphaniteName] = {
+ color: metaaphaniteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: metaaphaniteMeltingPoint,
+ stateHigh: magmaName,
+ density: metaaphaniteDensity,
+ hardness: 0.75,
+ breakInto: metaaphaniteGravelName,
+ _data: [compositionFamilyName,"metaaphanite","metamorphic_rock"],
+ };
+ if(metaaphaniteOldReactions) {
+ elements[metaaphaniteName].reactions = metaaphaniteOldReactions;
+ };
- elements["packed_" + vitriteSandName] = {
- color: sandizeToHex(vitriteName,"packed"),
- behavior: behaviors.SUPPORT,
- category: "packed sand",
- state: "solid",
- tempHigh: vitriteMeltingPoint,
- stateHigh: vitriteName,
- density: vitriteDensity * 0.59,
- breakInto: vitriteSandName,
- _data: [compositionFamilyName,"vitrite","packed_particulate"],
- };
+ //replace water rock-erosion reaction
+ elements.water.reactions[metaaphaniteName] = { "elem2": metaaphaniteGravelName, "chance": 0.00035 }
- elements.water.reactions[vitriteSandName] = {
- "elem1": null, "elem2": "wet_" + vitriteSandName,
- };
+ //create unique gravel
+ elements[metaaphaniteGravelName] = {
+ color: gravelizeToHex(metaaphaniteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: metaaphaniteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: metaaphaniteDustName,
+ density: metaaphaniteDensity * 0.55,
+ _data: [compositionFamilyName,"metaaphanite","metamorphic_gravel"],
+ };
- var magmaOldReactions = nicffunc_getReactions(magmaName);
- var magmaOldColor = elements.magma.color;
- elements[magmaName] = {
- reactions: {
- "ash": { "elem1": null, "elem2": "molten_slag" },
- "dust": { "elem1": null, "elem2": "molten_slag" },
- },
- _magmaCoolingPassToElement: {
- vitreous: [vitriteCoolingRateThreshold,vitriteName],
- aphanitic: [aphaniteCoolingRateThreshold,aphaniteName],
- phaneritic: [Infinity,phaneriteName],
- meltingPoints: {
- vitreous: vitriteMeltingPoint,
- vesicular: vesiculiteMeltingPoint,
- aphanitic: aphaniteMeltingPoint,
- phaneritic: phaneriteMeltingPoint,
+ elements[metaaphaniteDustName] = {
+ color: dustizeToHex(metaaphaniteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: metaaphaniteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [metaaphaniteDustName]: {elem1: metaaphaniteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (metaaphaniteDensity / 1000), //unmeasured value
+ _data: [compositionFamilyName,"metaaphanite","dust"],
+ };
+
+ //generate water gravel-erosion reaction using rock family's sand ratio
+ elements.water.reactions[metaaphaniteGravelName] = { "elem2": twoPartRepeatedArray(metaaphaniteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+
+ //generate unique solid version
+ elements[metaaphaniteWallName] = {
+ color: metaaphaniteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: metaaphaniteMeltingPoint,
+ stateHigh: magmaName,
+ density: metaaphaniteDensity,
+ hardness: 0.8,
+ breakInto: metaaphaniteName,
+ _data: [compositionFamilyName,"metaaphanite","solid_metamorphic_rock"],
+ };
+
+ elements.water.reactions[metaaphaniteWallName] = { "elem2": metaaphaniteName, "chance": 0.00035 }
+
+ //Sand and sand variants
+ elements[metaaphaniteSandName] = {
+ color: sandizeToHex(metaaphaniteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: metaaphaniteMeltingPoint,
+ stateHigh: vitriteName,
+ density: metaaphaniteDensity * 0.595,
+ _data: [compositionFamilyName,"metaaphanite","particulate"],
+ };
+
+ //console.log(metaaphaniteSandName, elements[metaaphaniteSandName].color);
+
+ elements["wet_" + metaaphaniteSandName] = {
+ color: sandizeToHex(metaaphaniteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + metaaphaniteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + metaaphaniteSandName,
+ density: metaaphaniteDensity * 0.595 + 150,
+ _data: [compositionFamilyName,"metaaphanite","wet_particulate"],
+ };
+
+ elements["packed_" + metaaphaniteSandName] = {
+ color: sandizeToHex(metaaphaniteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: metaaphaniteMeltingPoint,
+ stateHigh: vitriteName,
+ density: metaaphaniteDensity * 0.59,
+ breakInto: metaaphaniteSandName,
+ _data: [compositionFamilyName,"metaaphanite","packed_particulate"],
+ };
+
+ elements.water.reactions[metaaphaniteSandName] = {
+ "elem1": null, "elem2": "wet_" + metaaphaniteSandName,
+ };
+
+ //Vesiculite
+ elements[vesiculiteName] = {
+ color: vesiculiteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: vesiculiteMeltingPoint,
+ stateHigh: magmaName,
+ density: vesiculiteDensity,
+ hardness: 0.75,
+ breakInto: vesiculiteGravelName,
+ _data: [compositionFamilyName,"vesiculite","igneous_rock"],
+ maxColorOffset: 40,
+ metamorphite: metavesiculiteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements.water.reactions[vesiculiteName] = { "elem2": vesiculiteGravelName, "chance": 0.00035 }
+
+ elements[vesiculiteGravelName] = {
+ color: gravelizeToHex(vesiculiteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: vesiculiteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: vesiculiteDustName,
+ density: vesiculiteDensity * 3.2,
+ _data: [compositionFamilyName,"vesiculite","igneous_gravel"],
+ maxColorOffset: 40,
+ metamorphite: metavesiculiteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements[vesiculiteDustName] = {
+ color: dustizeToHex(vesiculiteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: vesiculiteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [vesiculiteDustName]: {elem1: vesiculiteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (vesiculiteDensity / 800), //unmeasured value
+ _data: [compositionFamilyName,"vesiculite","dust"],
+ };
+
+ elements.water.reactions[vesiculiteGravelName] = { "elem2": twoPartRepeatedArray(vesiculiteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+
+ elements[vesiculiteWallName] = {
+ color: vesiculiteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: vesiculiteMeltingPoint,
+ stateHigh: magmaName,
+ density: vesiculiteDensity,
+ hardness: 0.8,
+ breakInto: vesiculiteName,
+ _data: [compositionFamilyName,"vesiculite","solid_igneous_rock"],
+ maxColorOffset: 40,
+ metamorphite: metavesiculiteWallName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+
+ };
+
+ elements.water.reactions[vesiculiteWallName] = { "elem2": vesiculiteName, "chance": 0.00035 }
+
+ //Sand and sand variants
+ elements[vesiculiteSandName] = {
+ color: sandizeToHex(vesiculiteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: vesiculiteMeltingPoint,
+ stateHigh: vitriteName,
+ density: vesiculiteDensity * 1.9,
+ _data: [compositionFamilyName,"vesiculite","particulate"],
+ metamorphite: metavesiculiteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements["wet_" + vesiculiteSandName] = {
+ color: sandizeToHex(vesiculiteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + vesiculiteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + vesiculiteSandName,
+ density: vesiculiteDensity * 1.9 + 150,
+ _data: [compositionFamilyName,"vesiculite","wet_particulate"],
+ metamorphite: metavesiculiteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements["packed_" + vesiculiteSandName] = {
+ color: sandizeToHex(vesiculiteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: vesiculiteMeltingPoint,
+ stateHigh: vitriteName,
+ density: vesiculiteDensity * 1.888,
+ breakInto: vesiculiteSandName,
+ _data: [compositionFamilyName,"vesiculite","packed_particulate"],
+ metamorphite: metavesiculiteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements.water.reactions[vesiculiteSandName] = {
+ "elem1": null, "elem2": "wet_" + vesiculiteSandName,
+ };
+
+ //Metavesiculite
+ elements[metavesiculiteName] = {
+ color: metavesiculiteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: metavesiculiteMeltingPoint,
+ stateHigh: magmaName,
+ density: metavesiculiteDensity,
+ hardness: 0.75,
+ breakInto: metavesiculiteGravelName,
+ _data: [compositionFamilyName,"metavesiculite","igneous_rock"],
+ maxColorOffset: 35
+ };
+
+ elements.water.reactions[metavesiculiteName] = { "elem2": metavesiculiteGravelName, "chance": 0.00035 }
+
+ elements[metavesiculiteGravelName] = {
+ color: gravelizeToHex(metavesiculiteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: metavesiculiteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: metavesiculiteDustName,
+ density: metavesiculiteDensity * 3.2,
+ _data: [compositionFamilyName,"metavesiculite","metamorphic_gravel"],
+ maxColorOffset: 35
+ };
+
+ elements[metavesiculiteDustName] = {
+ color: dustizeToHex(metavesiculiteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: metavesiculiteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [metavesiculiteDustName]: {elem1: metavesiculiteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (metavesiculiteDensity / 800), //unmeasured value
+ _data: [compositionFamilyName,"metavesiculite","dust"],
+ };
+
+ elements.water.reactions[metavesiculiteGravelName] = { "elem2": twoPartRepeatedArray(metavesiculiteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+
+ elements[metavesiculiteWallName] = {
+ color: metavesiculiteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: metavesiculiteMeltingPoint,
+ stateHigh: magmaName,
+ density: metavesiculiteDensity,
+ hardness: 0.8,
+ breakInto: metavesiculiteName,
+ _data: [compositionFamilyName,"metavesiculite","solid_metamorphic_rock"],
+ maxColorOffset: 35
+ };
+
+ elements.water.reactions[metavesiculiteWallName] = { "elem2": metavesiculiteName, "chance": 0.00035 }
+
+ //Sand and sand variants
+ elements[metavesiculiteSandName] = {
+ color: sandizeToHex(metavesiculiteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: metavesiculiteMeltingPoint,
+ stateHigh: vitriteName,
+ density: metavesiculiteDensity * 1.9,
+ _data: [compositionFamilyName,"metavesiculite","particulate"],
+ };
+
+ elements["wet_" + metavesiculiteSandName] = {
+ color: sandizeToHex(metavesiculiteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + metavesiculiteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + metavesiculiteSandName,
+ density: metavesiculiteDensity * 1.9 + 150,
+ _data: [compositionFamilyName,"metavesiculite","wet_particulate"],
+ };
+
+ elements["packed_" + metavesiculiteSandName] = {
+ color: sandizeToHex(metavesiculiteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: metavesiculiteMeltingPoint,
+ stateHigh: vitriteName,
+ density: metavesiculiteDensity * 1.888,
+ breakInto: metavesiculiteSandName,
+ _data: [compositionFamilyName,"metavesiculite","packed_particulate"],
+ };
+
+ elements.water.reactions[metavesiculiteSandName] = {
+ "elem1": null, "elem2": "wet_" + metavesiculiteSandName,
+ };
+
+ //Vitrite
+ elements[vitriteName] = {
+ color: vitriteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: vitriteMeltingPoint,
+ stateHigh: magmaName,
+ density: vitriteDensity,
+ hardness: 0.75,
+ breakInto: vitriteGravelName,
+ _data: [compositionFamilyName,"vitrite","igneous_rock"],
+ metamorphite: metavitriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements.water.reactions[vitriteName] = { "elem2": vitriteGravelName, "chance": 0.00035 }
+
+ elements[vitriteGravelName] = {
+ color: gravelizeToHex(vitriteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: vitriteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: vitriteDustName,
+ density: vitriteDensity * 0.55,
+ _data: [compositionFamilyName,"vitrite","glass_shard"],
+ metamorphite: metavitriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements[vitriteDustName] = {
+ color: dustizeToHex(vitriteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: vitriteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [vitriteDustName]: {elem1: vitriteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (vitriteDensity / 1000), //unmeasured value
+ _data: [compositionFamilyName,"vitrite","dust"],
+ };
+
+ elements.water.reactions[vitriteGravelName] = { "elem2": twoPartRepeatedArray(vitriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+
+ elements[vitriteWallName] = {
+ color: vitriteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: vitriteMeltingPoint,
+ stateHigh: magmaName,
+ density: vitriteDensity,
+ hardness: 0.8,
+ breakInto: vitriteName,
+ _data: [compositionFamilyName,"vitrite","solid_igneous_rock"],
+ metamorphite: metavitriteWallName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements.water.reactions[vitriteWallName] = { "elem2": vitriteName, "chance": 0.00035 }
+
+ //Sand and sand variants
+ elements[vitriteSandName] = {
+ color: sandizeToHex(vitriteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: vitriteMeltingPoint,
+ stateHigh: vitriteName,
+ density: vitriteDensity * 0.595,
+ _data: [compositionFamilyName,"vitrite","particulate"],
+ metamorphite: metavitriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements["wet_" + vitriteSandName] = {
+ color: sandizeToHex(vitriteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + vitriteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + vitriteSandName,
+ density: vitriteDensity * 0.595 + 150,
+ _data: [compositionFamilyName,"vitrite","wet_particulate"],
+ metamorphite: metavitriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements["packed_" + vitriteSandName] = {
+ color: sandizeToHex(vitriteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: vitriteMeltingPoint,
+ stateHigh: vitriteName,
+ density: vitriteDensity * 0.59,
+ breakInto: vitriteSandName,
+ _data: [compositionFamilyName,"vitrite","packed_particulate"],
+ metamorphite: metavitriteName,
+ onTryMoveInto: function(pixel,otherPixel) { simplifiedSingleMetamorphiteMetamorphismOTMI(pixel,otherPixel) }
+ };
+
+ elements.water.reactions[vitriteSandName] = {
+ "elem1": null, "elem2": "wet_" + vitriteSandName,
+ };
+
+ //Metavitrite
+ elements[metavitriteName] = {
+ color: metavitriteColor,
+ behavior: behaviors.POWDER,
+ category: "rock",
+ state: "solid",
+ tempHigh: metavitriteMeltingPoint,
+ stateHigh: magmaName,
+ density: metavitriteDensity,
+ hardness: 0.75,
+ breakInto: metavitriteGravelName,
+ _data: [compositionFamilyName,"metavitrite","metamorphic_rock"],
+ };
+
+ elements.water.reactions[metavitriteName] = { "elem2": metavitriteGravelName, "chance": 0.00035 }
+
+ elements[metavitriteGravelName] = {
+ color: gravelizeToHex(metavitriteColor),
+ behavior: behaviors.POWDER,
+ category: "gravel",
+ state: "solid",
+ tempHigh: metavitriteMeltingPoint,
+ stateHigh: magmaName,
+ breakInto: metavitriteDustName,
+ density: metavitriteDensity * 0.55,
+ _data: [compositionFamilyName,"metavitrite","glass_shard"],
+ };
+
+ elements[metavitriteDustName] = {
+ color: dustizeToHex(metavitriteName),
+ behavior: behaviors.GAS,
+ category: "rock dust",
+ state: "gas",
+ tempHigh: metavitriteMeltingPoint,
+ stateHigh: ["fire",magmaName],
+ reactions: {
+ [metavitriteDustName]: {elem1: metavitriteSandName, elem2: null, chance: 0.003},
+ },
+ density: airDensity + (metavitriteDensity / 1000), //unmeasured value
+ _data: [compositionFamilyName,"metavitrite","dust"],
+ };
+
+ elements.water.reactions[metavitriteGravelName] = { "elem2": twoPartRepeatedArray(metavitriteSandName,sandFormationReactionSpecificSandCount,"sand",sandFormationReactionRegularSandCount), "chance": 0.0005 };
+
+ elements[metavitriteWallName] = {
+ color: metavitriteColor,
+ behavior: behaviors.WALL,
+ category: "solid rock",
+ state: "solid",
+ tempHigh: metavitriteMeltingPoint,
+ stateHigh: magmaName,
+ density: metavitriteDensity,
+ hardness: 0.8,
+ breakInto: metavitriteName,
+ _data: [compositionFamilyName,"metavitrite","solid_metamorphic_rock"],
+ };
+
+ elements.water.reactions[metavitriteWallName] = { "elem2": metavitriteName, "chance": 0.00035 }
+
+ //Sand and sand variants
+ elements[metavitriteSandName] = {
+ color: sandizeToHex(metavitriteName,"normal"),
+ behavior: behaviors.POWDER,
+ category: "sand",
+ state: "solid",
+ tempHigh: metavitriteMeltingPoint,
+ stateHigh: metavitriteName,
+ density: metavitriteDensity * 0.595,
+ _data: [compositionFamilyName,"metavitrite","particulate"],
+ };
+
+ elements["wet_" + metavitriteSandName] = {
+ color: sandizeToHex(metavitriteName,"wet"),
+ behavior: behaviors.STURDYPOWDER,
+ category: "wet sand",
+ reactions: {
+ "dirt": { "elem1":"sand", "elem2":"mud", "chance":0.0005, "oneway":true },
+ },
+ state: "solid",
+ tempHigh: 100,
+ stateHigh: "packed_" + metavitriteSandName,
+ tempLow: -50,
+ stateLow:"packed_" + metavitriteSandName,
+ density: metavitriteDensity * 0.595 + 150,
+ _data: [compositionFamilyName,"metavitrite","wet_particulate"],
+ };
+
+ elements["packed_" + metavitriteSandName] = {
+ color: sandizeToHex(metavitriteName,"packed"),
+ behavior: behaviors.SUPPORT,
+ category: "packed sand",
+ state: "solid",
+ tempHigh: metavitriteMeltingPoint,
+ stateHigh: metavitriteName,
+ density: metavitriteDensity * 0.59,
+ breakInto: metavitriteSandName,
+ _data: [compositionFamilyName,"metavitrite","packed_particulate"],
+ };
+
+ elements.water.reactions[metavitriteSandName] = {
+ "elem1": null, "elem2": "wet_" + metavitriteSandName,
+ };
+
+ //Magma
+ var magmaOldReactions = nicffunc_getReactions(magmaName);
+
+ var magmaOldColor = elements.magma.color;
+
+ elements[magmaName] = {
+ reactions: {
+ "ash": { "elem1": "molten_slag", "elem2": null },
+ "dust": { "elem1": "molten_slag", "elem2": null },
},
- },
- tick: function(pixel) {
- var coolingInfo = elements[pixel.element]._magmaCoolingPassToElement;
- magmaRateBasedCooling(
- pixel,
- Math.min(
- coolingInfo.meltingPoints.vitreous,
- coolingInfo.meltingPoints.vesicular,
- coolingInfo.meltingPoints.aphanitic,
- coolingInfo.meltingPoints.phaneritic
- ) - 20,
- coolingInfo.vitreous[1],
- coolingInfo.vitreous[0],
- coolingInfo.aphanitic[1],
- coolingInfo.aphanitic[0],
- coolingInfo.phaneritic[1]
- );
- },
- "color": makeMoltenColor(phaneriteColor),
- "behavior": behaviors.MOLTEN,
- "temp": Math.max(phaneriteMeltingPoint,aphaniteMeltingPoint,vesiculiteMeltingPoint,vitriteMeltingPoint) + 100,
- "tempLow": -Infinity, //cosmetic info
- "stateLow": [aphaniteName,phaneriteName,vitriteName],
- "tempHigh": magmaBoilingPoint,
- "stateHigh": "vaporized_" + magmaName,
- "viscosity": magmaViscosity,
- "hidden": true,
- "state": "liquid",
- "category": "magma",
- "density": magmaDensity,
- "_data": [compositionFamilyName,"magma","liquid"],
- };
- if(magmaOldReactions) {
- elements[magmaName].reactions = magmaOldReactions;
- };
- if(magmaName == "magma") {
- elements.magma.color = magmaOldColor;
- };
- elements[magmaName].reactions.foam = { "elem1": vesiculiteName, "elem2": vesiculiteName };
+ _magmaCoolingPassToElement: {
+ vitreous: [vitriteCoolingRateThreshold,vitriteName],
+ aphanitic: [aphaniteCoolingRateThreshold,aphaniteName],
+ phaneritic: [Infinity,phaneriteName],
+ meltingPoints: {
+ vitreous: vitriteMeltingPoint,
+ vesicular: vesiculiteMeltingPoint,
+ aphanitic: aphaniteMeltingPoint,
+ phaneritic: phaneriteMeltingPoint,
+ },
+ },
+ tick: function(pixel) {
+ var coolingInfo = elements[pixel.element]._magmaCoolingPassToElement;
+ magmaRateBasedCooling(
+ pixel,
+ Math.min(
+ coolingInfo.meltingPoints.vitreous,
+ coolingInfo.meltingPoints.vesicular,
+ coolingInfo.meltingPoints.aphanitic,
+ coolingInfo.meltingPoints.phaneritic
+ ) - 20,
+ coolingInfo.vitreous[1],
+ coolingInfo.vitreous[0],
+ coolingInfo.aphanitic[1],
+ coolingInfo.aphanitic[0],
+ coolingInfo.phaneritic[1]
+ );
+ },
+ "color": makeMoltenColor(phaneriteColor),
+ "behavior": behaviors.MOLTEN,
+ "temp": Math.max(phaneriteMeltingPoint,metaphaneriteMeltingPoint,aphaniteMeltingPoint,metaaphaniteMeltingPoint,vesiculiteMeltingPoint,metavesiculiteMeltingPoint,vitriteMeltingPoint,metavitriteMeltingPoint) + 100,
+ "tempLow": -Infinity, //cosmetic info
+ "stateLow": [aphaniteName,phaneriteName,vitriteName],
+ "tempHigh": magmaBoilingPoint,
+ "stateHigh": "vaporized_" + magmaName,
+ "viscosity": magmaViscosity,
+ "hidden": true,
+ "state": "liquid",
+ "category": "magmas",
+ "density": magmaDensity,
+ "_data": [compositionFamilyName,"magma","liquid"],
+ };
+ if(magmaOldReactions) {
+ elements[magmaName].reactions = magmaOldReactions;
+ };
- elements["vaporized_" + magmaName] = {
- color: magmavaporizeToHex(elements[magmaName].color),
- behavior: behaviors.GAS,
- reactions: {
- ["vaporized_" + magmaName]: { elem1: null, elem2: magmaCloudName, chance:0.3, "y":[0,15], "setting":"clouds" }
- },
- density: magmaDensity * 0.0028,
- temp: magmaBoilingPoint + 100,
- tempLow: magmaBoilingPoint,
- stateLow: magmaName,
- category: "magma vapor",
- state: "gas",
- hidden: true,
- _data: [compositionFamilyName,"magma","vaporized"],
- };
+ if(magmaName == "magma") {
+ elements.magma.color = magmaOldColor;
+ };
- vaporizedMagmas.push("vaporized_" + magmaName);
+ elements[magmaName].reactions.foam = { "elem1": vesiculiteName, "elem2": vesiculiteName };
- elements[magmaCloudName] = {
- color: magmacloudizeToHex(elements[magmaName].color),
- behavior: [
- "XX|XX|XX",
- "M1%7|CH:" + magmaName + "%0.05|M1%7",
- "XX|XX|XX",
- ],
- density: magmaDensity * 0.0021,
- temp: magmaBoilingPoint + 100,
- tempLow: Math.min(phaneriteMeltingPoint,aphaniteMeltingPoint,vesiculiteMeltingPoint,vitriteMeltingPoint) - 50,
- stateLow: rockCloudName,
- category: "magma cloud",
- state: "gas",
- _data: [compositionFamilyName,"magma","cloud"],
- };
+ elements["vaporized_" + magmaName] = {
+ color: magmavaporizeToHex(elements[magmaName].color),
+ behavior: behaviors.GAS,
+ reactions: {
+ ["vaporized_" + magmaName]: { elem1: null, elem2: magmaCloudName, chance:0.3, "y":[0,15], "setting":"clouds" }
+ },
+ density: magmaDensity * 0.0028,
+ temp: magmaBoilingPoint + 100,
+ tempLow: magmaBoilingPoint,
+ stateLow: magmaName,
+ category: "magma vapor",
+ state: "gas",
+ hidden: true,
+ _data: [compositionFamilyName,"magma","vaporized"],
+ };
- magmaClouds.push(magmaName + "_cloud");
+ vaporizedMagmas.push("vaporized_" + magmaName);
- elements[rockCloudName] = {
- color: rockcloudizeToHex(elements[magmaName].color),
- behavior: [
- "XX|XX|XX",
- "M1%7|CH:" + [aphaniteName,aphaniteGravelName,aphaniteDustName].join(",") + "%0.05|M1%7",
- "XX|XX|XX",
- ],
- density: magmaDensity * 0.0024,
- temp: Math.min(phaneriteMeltingPoint,aphaniteMeltingPoint,vesiculiteMeltingPoint,vitriteMeltingPoint) - 300,
- tempHigh: Math.min(phaneriteMeltingPoint,aphaniteMeltingPoint,vesiculiteMeltingPoint,vitriteMeltingPoint) - 50,
- stateHigh: magmaCloudName,
- category: "rock cloud",
- state: "gas",
- _data: [compositionFamilyName,"magma","cloud"],
- };
+ elements[magmaCloudName] = {
+ color: magmacloudizeToHex(elements[magmaName].color),
+ behavior: [
+ "XX|XX|XX",
+ "M1%7|CH:" + magmaName + "%0.05|M1%7",
+ "XX|XX|XX",
+ ],
+ density: magmaDensity * 0.0021,
+ temp: magmaBoilingPoint + 100,
+ tempLow: Math.min(phaneriteMeltingPoint,metaphaneriteMeltingPoint,aphaniteMeltingPoint,metaaphaniteMeltingPoint,vesiculiteMeltingPoint,metavesiculiteMeltingPoint,vitriteMeltingPoint,metavitriteMeltingPoint) - 50,
+ stateLow: rockCloudName,
+ category: "magma cloud",
+ state: "gas",
+ _data: [compositionFamilyName,"magma","cloud"],
+ };
- rockClouds.push(rockCloudName);
+ magmaClouds.push(magmaName + "_cloud");
+
+ elements[rockCloudName] = {
+ color: rockcloudizeToHex(elements[magmaName].color),
+ behavior: [
+ "XX|XX|XX",
+ "M1%7|CH:" + [aphaniteName,aphaniteGravelName,aphaniteDustName].join(",") + "%0.05|M1%7",
+ "XX|XX|XX",
+ ],
+ density: magmaDensity * 0.0024,
+ temp: Math.min(phaneriteMeltingPoint,metaphaneriteMeltingPoint,aphaniteMeltingPoint,metaaphaniteMeltingPoint,vesiculiteMeltingPoint,metavesiculiteMeltingPoint,vitriteMeltingPoint,metavitriteMeltingPoint) - 300,
+ tempHigh: Math.min(phaneriteMeltingPoint,metaphaneriteMeltingPoint,aphaniteMeltingPoint,metaaphaniteMeltingPoint,vesiculiteMeltingPoint,metavesiculiteMeltingPoint,vitriteMeltingPoint,metavitriteMeltingPoint) - 50,
+ stateHigh: magmaCloudName,
+ category: "rock cloud",
+ state: "gas",
+ _data: [compositionFamilyName,"magma","cloud"],
+ };
+
+ rockClouds.push(rockCloudName);
};
@@ -21753,7 +22330,7 @@ Pixel size (rendering only): (Use if the save looks cut o
elements.molten_dirt.tempHigh = 3313;
var rockStateHigh = JSON.parse(JSON.stringify(vaporizedMagmas));
- //no nellish or rainbow magma in dirt
+ //only real magmas in dirt
if(rockStateHigh.includes("vaporized_nellish_magma")) {
rockStateHigh.splice(rockStateHigh.indexOf("vaporized_nellish_magma"));
};
@@ -21763,6 +22340,9 @@ Pixel size (rendering only): (Use if the save looks cut o
if(rockStateHigh.includes("vaporized_crimson_magma")) {
rockStateHigh.splice(rockStateHigh.indexOf("vaporized_crimson_magma"));
};
+ if(rockStateHigh.includes("vaporized_blackpinkinitic_magma")) {
+ rockStateHigh.splice(rockStateHigh.indexOf("vaporized_blackpinkinitic_magma"));
+ };
elements.molten_dirt.stateHigh = rockStateHigh; //assuming mixture
for(var sandIndex in sands) {
@@ -22086,68 +22666,49 @@ Pixel size (rendering only): (Use if the save looks cut o
newIgneousCompositionFamily(
"felsic",
- 1e12,
- 2200,
- -85,
- -20,
- 2850,
- "granite",
- ["#F3C3AD", "#F0AB75", "#DDA888", "#BD927E", "#998473", "#5C5E53", "#BD8366"],
- 1215,
- 2691,
+ 1e12, 2200, -85, -20, 2850,
- "rhyolite",
- ["#A67153","#BF967E","#D9B5A0","#8C533E","#C99F86","#C5997E","#BB8A69"],
- 800,
- 1254,
+ //Not much data on metamorphites besides gneiss
+ "granite", ["#F3C3AD", "#F0AB75", "#DDA888", "#BD927E", "#998473", "#5C5E53", "#BD8366"], 1215, 2691,
+ "gneiss", ["#C5C1B4", "#605A5E", "#424449", "#EDECE9", "#73503A", "#92866F"], 1215, 2750,
- "pumice",
- ["#ebe1c3", "#ada386", "#f0bd9e", "#ab846c", "#bfbebd", "#75726f", "#f5e595", "#ab9e60", "#ad683d", "#633d25", "#6e6d6d", "#3b3a39"],
- 1350,
- 641,
+ "rhyolite", ["#A67153","#BF967E","#D9B5A0","#8C533E","#C99F86","#C5997E","#BB8A69"], 800, 1254,
+ "metarhyolite", ["#C0C7D3","#CAD0D9","#AEB7B7","#728189","#798B96","#B09F98","#515155"], 800, 2584, //https://www.researchgate.net/figure/Physical-properties-of-the-metarhyolites_tbl2_245002845 also there are pictures yay
- "obsidian",
- ["#252422", "#171616", "#161915", "#161018"],
- 1000,
- 2488,
+ "pumice", ["#ebe1c3", "#ada386", "#f0bd9e", "#ab846c", "#bfbebd", "#75726f", "#f5e595", "#ab9e60", "#ad683d", "#633d25", "#6e6d6d", "#3b3a39"], 1350, 641,
+ //it is said to flatten out and have smaller vesicles but the color is pulled out of my ass
+ "metapumice", ["#a6a295", "#787a6f", "#8f847e", "#917c6e", "#858382", "#696460", "#8a6d5c", "#6e5749", "#5c5b55", "#53594f"], 1350, 2328,
+
+ vitreousFelsicName, ["#252422", "#171616", "#161915", "#161018"], 1000, 2488,
+ //if metamorphism sometimes involves recrystallization and obsidian is the way it is due to being amorphous and lacking a crystal structure then perhaps obsidian might be somewhat like granite with its new crystals
+ "meta" + vitreousFelsicName, ["#453f3c", "#1f1a18", "#36342b", "#1c1519", "#3d3133", "#1f1b1a", "#453a32"], 1000, 2513,
7,3
);
elements.water.reactions.obsidian_shard.elem2 = ["obsidian_sand","obsidian_sand","obsidian_sand","sand","sand"]
elements.obsidian_sand.color = ["#3b3730", "#211e1e", "#293321", "#31133b"];
- elements.obsidian_shard.desc = "crushed obsidian my beloved";
+ elements.obsidian_shard.desc = 'crushed obsidian my beloved';
//Intermediate felsic
newIgneousCompositionFamily(
"intermediate_felsic",
- 1e10,
- 2320,
- -95,
- -23,
- 2900,
- "granodiorite",
- ["#B1AB9D", "#262001", "#A6A292", "#D6C5BC", "#F2F2F2", "#DED8C2", "#978871", "#A8AAA7"], //From image: By Rudolf Pohl - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=7788350
- 1277, //made-up/interpolated from granite and diorite
- 2644, //last 2 digits made up again
+ 1e10, 2320, -95, -23, 2900,
- "dacite",
- ["#D9CCC5", "#F2E9E4", "#877670", "#A69B97"],
- 1050,
- 2654, //https://books.google.ca/books?id=ObUPAAAAIAAJ&pg=PA181&lpg=PA181&dq=dacite+specific+gravity&source=bl&ots=qn8B4sirWi&sig=Wp_MHqPuUGPNQobcuNP5c5wqkpU&hl=en&sa=X&ei=cimtUaH8Eab7yAH8joDABQ#v=onepage&q=dacite%20specific%20gravity&f=false
+ "granodiorite", ["#B1AB9D", "#262001", "#A6A292", "#D6C5BC", "#F2F2F2", "#DED8C2", "#978871", "#A8AAA7"], 1277, 2644, //Color from image: By Rudolf Pohl - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=7788350; melting point made-up/interpolated from granite and diorite; last 2 digits of density are made up again
+ "metagranodiorite", ["#F3EDDC","#F0ECD8","#EDECDC","#D0C9A9","#BDB192","#BBA27A","#86744E","#323026","#262417","#202012"], 1277, 2711,
- "intermediate_pumice",
- ["#dbd4bd", "#b5ad94", "#e3ceb6", "#bda891", "#c2c2c2", "#a1a1a1", "#e6c8a1", "#b8a48c"],
- 1190,
- 991,
+ "dacite", ["#D9CCC5", "#F2E9E4", "#877670", "#A69B97"], 1050, 2654, //https://books.google.ca/books?id=ObUPAAAAIAAJ&pg=PA181&lpg=PA181&dq=dacite+specific+gravity&source=bl&ots=qn8B4sirWi&sig=Wp_MHqPuUGPNQobcuNP5c5wqkpU&hl=en&sa=X&ei=cimtUaH8Eab7yAH8joDABQ#v=onepage&q=dacite%20specific%20gravity&f=false
+ "metadacite", ["#91847d", "#e0c9bc", "#735a56", "#bfa59b", "#696563"], 1050, 2727,
- vitreousInterfelsicName,
- ["#4f4b42", "#474646", "#4a4d49", "#342f36"],
- 1040,
- 2640,
+ "intermediate_pumice", ["#dbd4bd", "#b5ad94", "#e3ceb6", "#bda891", "#c2c2c2", "#a1a1a1", "#e6c8a1", "#b8a48c"], 1190, 991,
+ "intermediate_metapumice", ["#777868", "#5a5c51", "#82756f", "#6e6057", "#96918f", "#70665e"], 1190, 2623,
+
+ vitreousInterfelsicName, ["#4f4b42", "#474646", "#4a4d49", "#342f36"], 1040, 2640,
+ "meta" + vitreousInterfelsicName, ["#3d3c39", "#696262", "#313630", "#625966"], 1040, 2772,
6,4
);
@@ -22156,31 +22717,20 @@ Pixel size (rendering only): (Use if the save looks cut o
newIgneousCompositionFamily(
"intermediate",
- 1e8,
- 2450,
- -105,
- -26,
- 2950,
- "diorite",
- ["#E1E1E1","#B0A696","#707271","#434459","#242424"], //Extracted from image and blended; Michael C. Rygel - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31124755 https://commons.wikimedia.org/w/index.php?curid=7788350
- 1300,
- 2822, //last 2 digits made up again
+ 1e8, 2450, -105, -26, 2950,
- "andesite",
- ["#6F7575", "#C5C9CB", "#818787", "#797F7F", "#B5B9BA", "#6D7371", "#909696"],
- 1215,
- 2474, //https://books.google.ca/books?id=ObUPAAAAIAAJ&pg=PA181&lpg=PA181&dq=dacite+specific+gravity&source=bl&ots=qn8B4sirWi&sig=Wp_MHqPuUGPNQobcuNP5c5wqkpU&hl=en&sa=X&ei=cimtUaH8Eab7yAH8joDABQ#v=onepage&q=dacite%20specific%20gravity&f=false
+ "diorite", ["#E1E1E1","#B0A696","#707271","#434459","#242424"], 1300, 2822, //Extracted from image and blended; Michael C. Rygel - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31124755 https://commons.wikimedia.org/w/index.php?curid=7788350; last 2 digits made up again
+ "metadiorite", ["#D1D2D7","#C3C2AF","#AEACB1","#A1A29D","#C3C4BC","#C3C9CA","#B5AEA4","#B6AC91","#AEA582","#5A6992"], 1300, 2929,
- "scoria",
- ["#594545", "#573b31", "#522e28"],
- 1085,
- 2550,
+ "andesite", ["#6F7575", "#C5C9CB", "#818787", "#797F7F", "#B5B9BA", "#6D7371", "#909696"], 1215, 2474, //https://books.google.ca/books?id=ObUPAAAAIAAJ&pg=PA181&lpg=PA181&dq=dacite+specific+gravity&source=bl&ots=qn8B4sirWi&sig=Wp_MHqPuUGPNQobcuNP5c5wqkpU&hl=en&sa=X&ei=cimtUaH8Eab7yAH8joDABQ#v=onepage&q=dacite%20specific%20gravity&f=false
+ "metaandesite", ["#5b5c5b", "#a3a6a2", "#6e665e", "#b39b92", "#756763", "#91817d", "#73524d"], 1215, 2553,
- vitreousIntermediateName,
- ["#636059", "#707070", "#5f615f", "#504b52"],
- 1085,
- 2710,
+ "scoria", ["#594545", "#573b31", "#522e28"], 1085, 2550,
+ "metascoria", ["#403835","#75574c","#4f302b","#8a7c75"], 1085, 2670,
+
+ vitreousIntermediateName, ["#636059", "#707070", "#5f615f", "#504b52"], 1085, 2710,
+ "meta" + vitreousIntermediateName, ["#4a4845", "#75716e", "#43453f", "#5e4b53", "#66554d"], 1085, 2744,
5,5
);
@@ -22200,7 +22750,7 @@ Pixel size (rendering only): (Use if the save looks cut o
elements.magma.name = "mafic magma";
elements.magma.density = 2650;
- elements.magma.category = "magma";
+ elements.magma.category = "magmas";
elements.magma._magmaCoolingPassToElement = {
vitreous: [-115,vitreousMaficName],
aphanitic: [-29,"basalt"],
@@ -22235,31 +22785,20 @@ Pixel size (rendering only): (Use if the save looks cut o
newIgneousCompositionFamily(
"mafic",
- 10000,
- 2200,
- -115,
- -29,
- 3000,
+
+ 10000, 2200, -115, -29, 3000,
- "rock",
- ["#808080","#4f4f4f","#949494"],
- 1474,
- 3300,
+ "rock", ["#808080","#4f4f4f","#949494"], 1474, 3300,
+ "metagabbro", ["#F6F6F5", "#EEEFEC", "#E7E6DD","#C0BBA3","#A9ABA7", "#8A8C8C", "#727271", "#61635F", "#595A59", "#454641", "#4E514A"], 1474, 3350,
- "basalt",
- ["#2e2e2e","#333333","#3d3d3d"],
- 1122,
- 2949,
+ "basalt", ["#2e2e2e","#333333","#3d3d3d"], 1122, 2949,
+ "metabasalt", ["#292e26","#474d3d","#2e2e29","#4a574f"], 1122, 3070,
- "mafic_scoria",
- ["#756666", "#695751", "#737272"],
- 1298,
- 2717,
+ "mafic_scoria", ["#756666", "#695751", "#737272"], 1298, 2717,
+ "mafic_metascoria", ["#856d6d","#4f4139","#8c8373","#494a39"], 1298, 2773,
- vitreousMaficName,
- ["#6e615d", "#706767", "#6a6b63", "#6e5e68"],
- 1200,
- 2900,
+ vitreousMaficName, ["#6e615d", "#706767", "#6a6b63", "#6e5e68"], 1200, 2900,
+ "meta" + vitreousMaficName, ["#7a685d", "#3c4235", "#7c7869", "#3f3138"], 1200, 2991,
3,7
);
@@ -22267,36 +22806,27 @@ Pixel size (rendering only): (Use if the save looks cut o
elements.mafic_scoria.tempHigh = 1298;
elements.mafic_scoria.stateHigh = "magma";
elements.mafic_scoria_gravel.density = 2993;
+ elements.basalt.behavior = behaviors.STURDYPOWDER;
+ elements.metabasalt.behavior = behaviors.STURDYPOWDER;
//Ultramafic
newIgneousCompositionFamily(
"ultramafic",
- 800,
- 2800,
- -125,
- -32,
- 3050,
- "peridotite",
- ["#908557","#A29E78","#7F8044","#C6BC87","#8C8656","#7C7C40","#837840","#8B8B69"],
- 1400,
- 3347, //appr from https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/GL003i009p00509#:~:text=Abstract,and%20the%20bulk%20rock%20analyses.
+ 800, 2800, -125, -32, 3050,
- "komatiite",
- ["#AEB5AE","#A9B8B5","#7B8881","#858B87","#949F97","#505B55"],
- 1600,
- 3100,
+ "peridotite", ["#848a5e","#68785b","#8a9967","#3f403d","#33312e","#4c4f45"], 1400, 3347, //appr from https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/GL003i009p00509#:~:text=Abstract,and%20the%20bulk%20rock%20analyses.
+ "metaperidotite", ["#7d604f","#959c98","#454443","#363432","#5e4840"], 1400, 3404,
- "ultramafic_scoria",
- ["#737565", "#7a7761", "#727372"],
- 1400,
- 2924,
+ "komatiite", ["#6e7d6e","#858c8a","#768270","#767a77"], 1600, 3100,
+ "metakomatiite", ["#AEB5AE","#A9B8B5","#7B8881","#858B87","#949F97","#66655d","#5e4d48"], 1600, 3066,
- vitreousUltramaficName,
- ["#6e6d5e", "#626659", "#54574b", "#665d55"],
- 1300,
- 3200,
+ "ultramafic_scoria", ["#636555", "#6a6751", "#828382"], 1400, 2924,
+ "ultramafic_metascoria", ["#574e47", "#6a7357", "#3b3430", "#4d4939"], 1400, 3003,
+
+ vitreousUltramaficName, ["#6e6d5e", "#5f6659", "#54574b", "#665d55"], 1300, 3200,
+ "meta" + vitreousUltramaficName, ["#4a443d", "#5e5e4a", "#3a4036", "#4d524f"], 1300, 3266,
2,8
);
@@ -23119,311 +23649,140 @@ Pixel size (rendering only): (Use if the save looks cut o
elements.crimson_permafrost._data = ["crimson","soil","icy_particulate"];
elements.dry_crimson_permafrost._data = ["crimson","soil","particulate"];
- //var elems1 = Object.keys(elements);
- makeNonSandSedimentationElements("crimsand","crimsandy_water","crimsandstone");
+ makeNonSandSedimentationElements("crimsand","crimsandy_water","crimsandstone");
+
+ newIgneousCompositionFamily(
+ "crimson",
+
+ 13000, 2420, -76, -17, 2877,
+
+ "crimstone", ["#cb4444", "#953333", "#611c1c", "#b43434", "#752424"], 1223, 4234,
+ "metacrimstone", ["#b31010","#8f1111","#80282a","#b31010","#8f1111","#80282a","#bb4e45"], 1223, 4544,
+
+ "crimsalt", ["#9e5041", "#a33345"], 1151, 3226,
+ "metacrimsalt", ["#ab5c4f","#c25c4c","#cf4452"], 1151, 3044,
+
+ "crimscoria", ["#914c57", "#ba7b85", "#6b2e38", "#b3626f"], 1032, 2903,
+ "metacrimscoria", ["#bf2636","#961b12","#b84040"], 1032, 3534,
+
+ "crimidian", ["#5a1b1c", "#622b33", "#762733", "#76322c"], 1122, 3050,
+ "metacrimidian", ["#701b1c","#783628","#802419","#872323"], 1122, 3169,
+
+ 3,7
+ );
+
+ elements.crimsalt.behavior = behaviors.STURDYPOWDER;
+ elements.metacrimsalt.behavior = behaviors.STURDYPOWDER;
+
+ elements.crimson_magma.temp = elements.crimson_magma.tempHigh * 0.8;
+
+ //var elems2 = Object.keys(elements);
+ //var deltaElems = elems2.filter(function(name) { return !(elems1.includes(name)) });
+ runAfterLoad(function() { runAfterAutogen(function() { runAfterAutogen(function() { //i need this to happen last
+ var rockCrimmies = Object.keys(elements).filter(function(name) {return (name.match(/((wet|packed|hot|vaporized)_|meta|)crim/) && !(name.match(/crimtane/)))});
+ lifeEaterWhitelist = lifeEaterWhitelist.concat(rockCrimmies); //crimson is alive, so LEV should eat it
+ rockCrimmies.forEach(function(name) {
+ var data = elements[name];
+ if(data.tick) {
+ var oldTick = data.tick;
+ data.tick = function(pixel) {
+ oldTick(pixel);
+ if(pixel && !isEmpty(pixel.x,pixel.y)) {
+ crimSpread(pixel);
+ }
+ }
+ } else {
+ data.tick = function(pixel) { crimSpread(pixel) }
+ };
+ });
+ for(var key in elements) {
+ var data = elements[key];
+ if(!(elements[key].tick)) { continue };
+ if(elements[key].tick.toString().includes("crimSpread")) {
+ data.excludeRandom = true
+ }
+ };
+ })})});
+
+ elements.molten_crimsoil = {
+ tempLow: elements.dry_crimsoil.tempHigh,
+ stateLow: "dry_crimsoil"
+ };
+ crimsonObject.dirt = "crimsoil";
+ crimsonObject.dry_dirt = "dry_crimsoil";
+ crimsonObject.mud = "crimmud";
+ crimsonObject.mudstone = "crimmudstone";
+ crimsonObject.permafrost = "crimson_permafrost";
+ crimsonObject.molten_dirt = "molten_crimsoil";
+ crimsonObject.dry_permafrost = "dry_crimson_permafrost";
+ runAfterLoad(function() {
+ elements.crimsandy_water.color = ["#985460", "#a8606c", "#a05864", "#b46c74", "#84404c", "#985460", "#a8606c", "#a05864", "#b46c74", "#84404c", "#903844", "#b44450" ] //manual: use crimwater for the lerp in crimsand suspension's color
+ elements.crimmuddy_water.color = ["#ed4154", "#f25259", "#f2444c", "#f25a62", "#df428d" ]; //same for crimsoil (crimmud) susp.
+ elements.crimwater.reactions.crimsand = elements.water.reactions.crimsand;
+ elements.crimwater.reactions.crimmud = elements.water.reactions.crimmud;
+ for(var k in elements.crimsandy_water.reactions) {
+ var reactionObject = elements.crimsandy_water.reactions[k];
+ var e1 = reactionObject.elem1; var e2 = reactionObject.elem2;
+ if(e1 == "water") { reactionObject.elem1 = "crimwater" };
+ if(e2 == "water") { reactionObject.elem2 = "crimwater" };
+ };
+ for(var k in elements.crimmuddy_water.reactions) {
+ var reactionObject = elements.crimmuddy_water.reactions[k];
+ var e1 = reactionObject.elem1; var e2 = reactionObject.elem2;
+ if(e1 == "water") { reactionObject.elem1 = "crimwater" };
+ if(e2 == "water") { reactionObject.elem2 = "crimwater" };
+ };
+ elements.crimmuddy_water.reactions.crimmuddy_water.elem2 = "crimsoil_sediment";
+ elements.crimsoilstone.tempHigh = 800;
+ });
+
+ //Blackpinkinitic (why? because FU. that's why. jk lol it's because i want to test metamorphism but there's so little data on the melting of metamorphic rocks--especially clay-based ones--that it's proving to be a real PITA.
newIgneousCompositionFamily(
- "crimson",
- 13000,
- 2420,
- -76,
- -17,
- 2877,
+ "blackpinkinitic",
- "crimstone",
- ["#cb4444", "#953333", "#611c1c", "#b43434", "#752424"],
- 4120,
- 1223,
+ 403, 2602, -95, -30, 4007,
- "crimsalt",
- ["#9e5041", "#a33345"],
- 3326,
- 1151,
+ "blinkinite", ["#e39dc6", "#e378b7", "#d1589f", "#a1306e", "#6e274e", "#170e13", "#121212"], 1821, 3291,
+ "lisaslate", ["#f26fbc", "#f26fbc", "#e344a1", "#d42686", "#b52daa", "#8a3683", "#5c324f", "#572c6e", "#421530", "#120c10", "#120c10"], 1821, 3333,
- "crimscoria",
- ["#914c57", "#ba7b85", "#6b2e38", "#b3626f"],
- 3003,
- 991,
+ "roselite", ["#eda4c6","#de90ae","#cf9db0","#cf9db0","#d97ca0"], 1715, 2551,
+ "rosephyllite", ["#e895bb", "#c46286", "#a34b73", "#6e2e4b", "#301921", "#1a1315"], 1715, 3021,
- "crimidian",
- ["#5a1b1c", "#622b33", "#762733", "#76322c"],
- 1040,
- 3050,
+ "jisoovesite", ["#bf56af", "#a15495", "#70416f", "#e87de6", "#381a47"], 1977, 719,
+ "vesimelite", ["#a35097", "#854e72", "#8a5789", "#d47dd2", "#462452"], 1977, 1132,
+
+ "jennitrite", ["#8a2966", "#801357", "#75074c", "#4a012f", "#360e27", "#1a0e15"], 2111, 2603,
+ "harmonitrite", ["#9e3979", "#9e186c", "#a3146e", "#380324", "#2e1028", "#361a2a"], 2111, 2663,
3,7
);
- elements.crimson_magma.temp = elements.crimson_magma.tempHigh * 0.8;
-
- //var elems2 = Object.keys(elements);
- //var deltaElems = elems2.filter(function(name) { return !(elems1.includes(name)) });
- runAfterLoad(function() { runAfterAutogen(function() { runAfterAutogen(function() { //i need this to happen last
- var rockCrimmies = Object.keys(elements).filter(function(name) {return (name.match(/((wet|packed|hot|vaporized)_|)crim/) && !(name.match(/crimtane/)))});
- lifeEaterWhitelist = lifeEaterWhitelist.concat(rockCrimmies); //crimson is alive, so LEV should eat it
- rockCrimmies.forEach(function(name) {
- var data = elements[name];
- if(data.tick) {
- var oldTick = data.tick;
- data.tick = function(pixel) {
- oldTick(pixel);
- if(pixel && !isEmpty(pixel.x,pixel.y)) {
- crimSpread(pixel);
- }
- }
- } else {
- data.tick = function(pixel) { crimSpread(pixel) }
- };
- });
- for(var key in elements) {
- var data = elements[key];
- if(!(elements[key].tick)) { continue };
- if(elements[key].tick.toString().includes("crimSpread")) {
- data.excludeRandom = true
- }
- };
- })})});
-
- //Nellish-style transformation assigner
- var rockdataElements = Object.keys(elements).filter(function(name) {
- return (
- elements[name]._data &&
- !["crimson"].includes(elements[name]._data[0])
- )
- });
-
- for(i = 0; i < rockdataElements.length; i++) {
- var name = rockdataElements[i];
- var info = elements[name];
- switch(info._data[1]) {
- case "phanerite":
- switch(info._data[2]) {
- case "igneous_rock":
- crimsonObject[name] = "crimstone"
- break;
- case "solid_igneous_rock":
- crimsonObject[name] = "crimstone_wall"
- break;
- case "igneous_gravel":
- crimsonObject[name] = "crimstone_gravel"
- break;
- case "particulate":
- crimsonObject[name] = "crimstone_sand"
- break;
- case "dust":
- crimsonObject[name] = "crimstone_dust"
- break;
- case "wet_particulate":
- crimsonObject[name] = "wet_crimstone_sand"
- break;
- case "packed_particulate":
- crimsonObject[name] = "packed_crimstone_sand"
- break;
- case "sediment":
- crimsonObject[name] = "crimstone_sand_sediment"
- break;
- case "suspension":
- crimsonObject[name] = "crimstone_sandy_water"
- break;
- };
- break;
- case "aphanite":
- //console.log(info._data[2]);
- switch(info._data[2]) {
- case "igneous_rock":
- crimsonObject[name] = "crimsalt"
- break;
- case "solid_igneous_rock":
- crimsonObject[name] = "crimsalt_wall"
- break;
- case "igneous_gravel":
- crimsonObject[name] = "crimsalt_gravel"
- break;
- case "particulate":
- crimsonObject[name] = "crimsalt_sand"
- break;
- case "dust":
- crimsonObject[name] = "crimsalt_dust"
- break;
- case "wet_particulate":
- crimsonObject[name] = "wet_crimsalt_sand"
- break;
- case "packed_particulate":
- crimsonObject[name] = "packed_crimsalt_sand"
- break;
- case "sediment":
- crimsonObject[name] = "crimsalt_sand_sediment"
- break;
- case "suspension":
- crimsonObject[name] = "crimsalt_sandy_water"
- break;
- };
- break;
- case "vesiculite":
- //console.log(info._data[2]);
- switch(info._data[2]) {
- case "igneous_rock":
- crimsonObject[name] = "crimscoria"
- break;
- case "solid_igneous_rock":
- crimsonObject[name] = "crimscoria_wall"
- break;
- case "igneous_gravel":
- crimsonObject[name] = "crimscoria_gravel"
- break;
- case "particulate":
- crimsonObject[name] = "crimscoria_sand"
- break;
- case "dust":
- crimsonObject[name] = "crimscoria_dust"
- break;
- case "wet_particulate":
- crimsonObject[name] = "wet_crimscoria_sand"
- break;
- case "packed_particulate":
- crimsonObject[name] = "packed_crimscoria_sand"
- break;
- case "sediment":
- crimsonObject[name] = "crimscoria_sand_sediment"
- break;
- case "suspension":
- crimsonObject[name] = "crimscoria_sandy_water"
- break;
- };
- break;
- case "vitrite":
- //console.log(info._data[2]);
- switch(info._data[2]) {
- case "igneous_rock":
- crimsonObject[name] = "crimidian"
- break;
- case "solid_igneous_rock":
- crimsonObject[name] = "crimidian_wall"
- break;
- case "igneous_gravel":
- crimsonObject[name] = "crimidian_gravel"
- break;
- case "particulate":
- crimsonObject[name] = "crimidian_sand"
- break;
- case "dust":
- crimsonObject[name] = "crimidian_dust"
- break;
- case "wet_particulate":
- crimsonObject[name] = "wet_crimidian_sand"
- break;
- case "packed_particulate":
- crimsonObject[name] = "packed_crimidian_sand"
- break;
- case "sediment":
- crimsonObject[name] = "crimidian_sand_sediment"
- break;
- case "suspension":
- crimsonObject[name] = "crimidian_sandy_water"
- break;
- };
- break;
- case "phanerite_sandstone":
- crimsonObject[name] = "crimstone_sandstone"
- break;
- case "aphanite_sandstone":
- crimsonObject[name] = "crimsalt_sandstone"
- break;
- case "vesiculite_sandstone":
- crimsonObject[name] = "crimscoria_sandstone"
- break;
- case "vitrite_sandstone":
- crimsonObject[name] = "crimidian_sandstone"
- break;
- case "sandstone":
- crimsonObject[name] = "crimsandstone"
- break;
- case "silica":
- crimsonObject[name] = "crimsandstone"
- break;
- case "magma":
- switch(info._data[2]) {
- case "liquid":
- crimsonObject[name] = "crimson_magma"
- break;
- case "vaporized":
- crimsonObject[name] = "vaporized_crimson_magma"
- break;
- case "cloud":
- crimsonObject[name] = "crimson_magma_cloud"
- break;
- };
- break;
- case "crystalline":
- switch(info._data[2]) {
- case "particulate":
- crimsonObject[name] = "crimsand"
- break;
- case "wet_particulate":
- crimsonObject[name] = "wet_crimsand"
- break;
- case "packed_particulate":
- crimsonObject[name] = "packed_crimsand"
- break;
- case "suspension":
- crimsonObject[name] = "crimsand_water"
- break;
- case "sediment":
- crimsonObject[name] = "crimsand_sediment"
- break;
- };
- break;
- case "soil":
- case "dry_soil":
- case "clay":
- switch(info._data[2]) {
- case "particulate":
- crimsonObject[name] = "crimsand"
- break;
- case "suspension":
- crimsonObject[name] = "crimsand_water"
- break;
- case "sediment":
- crimsonObject[name] = "crimsand_sediment"
- break;
- };
- break;
- default:
- console.log("Crimson assignment: Unknown _data[1] value for element",name,info._data);
- };
+ elements.roselite.name = elements.roselite.alias = "rosélite";
+ elements.rosephyllite.colorPattern = [ // diagonal foliation
+ "PPppDDddBBbbBBddDDpp",
+ "ppDDddBBbbBBddDDppPP",
+ "DDddBBbbBBddDDppPPpp",
+ "ddBBbbBBddDDppPPppDD",
+ "BBbbBBddDDppPPppDDdd",
+ "bbBBddDDppPPppDDddBB",
+ "BBddDDppPPppDDddBBbb",
+ "ddDDppPPppDDddBBbbBB",
+ "DDppPPppDDddBBbbBBdd",
+ "ppPPppDDddBBbbBBddDD"
+ ];
+ elements.rosephyllite.colorKey = {
+ "P": "#e895bb",
+ "p": "#c46286",
+ "D": "#a34b73",
+ "d": "#6e2e4b",
+ "B": "#301921",
+ "b": "#1a1315"
};
- //Assigner end
- elements.molten_crimsoil = {
- tempLow: elements.dry_crimsoil.tempHigh,
- stateLow: "dry_crimsoil"
- };
- crimsonObject.dirt = "crimsoil";
- crimsonObject.dry_dirt = "dry_crimsoil";
- crimsonObject.mud = "crimmud";
- crimsonObject.mudstone = "crimmudstone";
- crimsonObject.permafrost = "crimson_permafrost";
- crimsonObject.molten_dirt = "molten_crimsoil";
- crimsonObject.dry_permafrost = "dry_crimson_permafrost";
- runAfterLoad(function() {
- elements.crimsandy_water.color = ["#985460", "#a8606c", "#a05864", "#b46c74", "#84404c", "#985460", "#a8606c", "#a05864", "#b46c74", "#84404c", "#903844", "#b44450" ] //manual: use crimwater for the lerp in crimsand suspension's color
- elements.crimmuddy_water.color = ["#ed4154", "#f25259", "#f2444c", "#f25a62", "#df428d" ]; //same for crimsoil (crimmud) susp.
- elements.crimwater.reactions.crimsand = elements.water.reactions.crimsand;
- elements.crimwater.reactions.crimmud = elements.water.reactions.crimmud;
- for(var k in elements.crimsandy_water.reactions) {
- var reactionObject = elements.crimsandy_water.reactions[k];
- var e1 = reactionObject.elem1; var e2 = reactionObject.elem2;
- if(e1 == "water") { reactionObject.elem1 = "crimwater" };
- if(e2 == "water") { reactionObject.elem2 = "crimwater" };
- };
- for(var k in elements.crimmuddy_water.reactions) {
- var reactionObject = elements.crimmuddy_water.reactions[k];
- var e1 = reactionObject.elem1; var e2 = reactionObject.elem2;
- if(e1 == "water") { reactionObject.elem1 = "crimwater" };
- if(e2 == "water") { reactionObject.elem2 = "crimwater" };
- };
- elements.crimmuddy_water.reactions.crimmuddy_water.elem2 = "crimsoil_sediment";
- elements.crimsoilstone.tempHigh = 800;
- });
+ elements.blinkinite.behavior = behaviors.POWDER;
+ elements.rosephyllite.name = elements.rosephyllite.alias = "roséphyllite";
+ elements.jisoovesite.maxColorOffset = 30;
//Rainbow (actually let's call them Iridian)
@@ -23509,31 +23868,20 @@ Pixel size (rendering only): (Use if the save looks cut o
newIgneousCompositionFamily(
"rainbow",
- 133487,
- 5512,
- -71,
- -17,
- 4555,
- "phirite",
- makeRegularRainbow(6,70,45,"hex"),
- 1671,
- 4004,
+ 133487, 5512, -71, -17, 4555,
- "aphirite",
- makeRegularRainbow(24,63,75,"hex").concat("#bfbfbf"),
- 1685,
- 3951,
+ "phirite", makeRegularRainbow(6,70,45,"hex"), 1671, 4004,
+ "metaphirite", makeRegularRainbow(7,60,35,"hex"), 1671, 4244,
- "vesirite",
- makeRegularRainbow(13,55,80,"hex").concat(makeRegularRainbow(13,45,50,"hex")),
- 1712,
- 2918,
+ "aphirite", makeRegularRainbow(24,63,75,"hex").concat("#bfbfbf"), 1685, 3951,
+ "metaaphirite", makeRegularRainbow(23,83,65,"hex").concat("#afafaf"), 1685, 4191,
- "vitirite",
- makeRegularRainbow(30,70,35,"hex").concat("#595959"),
- 2054,
- 3741,
+ "vesirite", makeRegularRainbow(7,55,30,"hex").concat(makeRegularRainbow(7,75,70,"hex")), 1712, 2918,
+ "metavesirite", makeRegularRainbow(5,66,80,"hex").concat(makeRegularRainbow(5,56,60,"hex")), 1712, 3118,
+
+ "vitirite", makeRegularRainbow(30,70,35,"hex").concat("#595959"), 2054, 3741,
+ "metavitirite", makeRegularRainbow(15,60,45,"hex").concat("#494949").concat(makeRegularRainbow(15,60,55,"hex")).concat("#797979"), 2054, 3941,
3,7
);
@@ -23815,6 +24163,133 @@ Pixel size (rendering only): (Use if the save looks cut o
break;
};
break;
+ case "metaphanerite":
+ switch(info._data[2]) {
+ case "igneous_rock":
+ nellburnObject[name] = "sheolite"
+ break;
+ case "solid_igneous_rock":
+ nellburnObject[name] = "sheolite_wall"
+ break;
+ case "igneous_gravel":
+ nellburnObject[name] = "sheolite_gravel"
+ break;
+ case "particulate":
+ nellburnObject[name] = "sheolite_sand"
+ break;
+ case "dust":
+ nellburnObject[name] = "sheolite_dust"
+ break;
+ case "wet_particulate":
+ nellburnObject[name] = "wet_sheolite_sand"
+ break;
+ case "packed_particulate":
+ nellburnObject[name] = "packed_sheolite_sand"
+ break;
+ case "sediment":
+ nellburnObject[name] = "sheolite_sand_sediment"
+ break;
+ case "suspension":
+ nellburnObject[name] = "sheolite_sandy_water"
+ break;
+ };
+ break;
+ case "metaaphanite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ nellburnObject[name] = "nellbolite"
+ break;
+ case "solid_igneous_rock":
+ nellburnObject[name] = "nellbolite_wall"
+ break;
+ case "igneous_gravel":
+ nellburnObject[name] = "nellbolite_gravel"
+ break;
+ case "particulate":
+ nellburnObject[name] = "nellbolite_sand"
+ break;
+ case "dust":
+ nellburnObject[name] = "nellbolite_dust"
+ break;
+ case "wet_particulate":
+ nellburnObject[name] = "wet_nellbolite_sand"
+ break;
+ case "packed_particulate":
+ nellburnObject[name] = "packed_nellbolite_sand"
+ break;
+ case "sediment":
+ nellburnObject[name] = "nellbolite_sand_sediment"
+ break;
+ case "suspension":
+ nellburnObject[name] = "nellbolite_sandy_water"
+ break;
+ };
+ break;
+ case "metavesiculite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ nellburnObject[name] = "metahadiculite"
+ break;
+ case "solid_igneous_rock":
+ nellburnObject[name] = "metahadiculite_wall"
+ break;
+ case "igneous_gravel":
+ nellburnObject[name] = "metahadiculite_gravel"
+ break;
+ case "particulate":
+ nellburnObject[name] = "metahadiculite_sand"
+ break;
+ case "dust":
+ nellburnObject[name] = "metahadiculite_dust"
+ break;
+ case "wet_particulate":
+ nellburnObject[name] = "wet_metahadiculite_sand"
+ break;
+ case "packed_particulate":
+ nellburnObject[name] = "packed_metahadiculite_sand"
+ break;
+ case "sediment":
+ nellburnObject[name] = "metahadiculite_sand_sediment"
+ break;
+ case "suspension":
+ nellburnObject[name] = "metahadiculite_sandy_water"
+ break;
+ };
+ break;
+ case "metavitrite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ nellburnObject[name] = "metagehitrite"
+ break;
+ case "solid_igneous_rock":
+ nellburnObject[name] = "metagehitrite_wall"
+ break;
+ case "igneous_gravel":
+ nellburnObject[name] = "metagehitrite_gravel"
+ break;
+ case "particulate":
+ nellburnObject[name] = "metagehitrite_sand"
+ break;
+ case "dust":
+ nellburnObject[name] = "metagehitrite_dust"
+ break;
+ case "wet_particulate":
+ nellburnObject[name] = "wet_metagehitrite_sand"
+ break;
+ case "packed_particulate":
+ nellburnObject[name] = "packed_metagehitrite_sand"
+ break;
+ case "sediment":
+ nellburnObject[name] = "metagehitrite_sand_sediment"
+ break;
+ case "suspension":
+ nellburnObject[name] = "metagehitrite_sandy_water"
+ break;
+ };
+ break;
case "phanerite_sandstone":
nellburnObject[name] = "gehennite_sandstone"
break;
@@ -23827,6 +24302,18 @@ Pixel size (rendering only): (Use if the save looks cut o
case "vitrite_sandstone":
nellburnObject[name] = "gehidian_sandstone"
break;
+ case "metaphanerite_sandstone":
+ nellburnObject[name] = "sheolite_sandstone"
+ break;
+ case "metaaphanite_sandstone":
+ nellburnObject[name] = "nellbolite_sandstone"
+ break;
+ case "metavesiculite_sandstone":
+ nellburnObject[name] = "metahadiculite_sandstone"
+ break;
+ case "metavitrite_sandstone":
+ nellburnObject[name] = "metagehitrite_sandstone"
+ break;
case "silica_sandstone":
nellburnObject[name] = "nellsandstone"
break;
@@ -23917,31 +24404,20 @@ Pixel size (rendering only): (Use if the save looks cut o
newIgneousCompositionFamily(
"nellish",
- 10,
- 3012,
- -96,
- -12,
- 3812,
- "gehennite",
- ["#857c71", "#b5a98d", "#91847c", "#948b68", "#8a834a", "#adad34"],
- 2011,
- 3432,
+ 10, 3012, -96, -12, 3812,
- "nellrock",
- ["#a15a42","#997849","#946043","#8c533e","#a66658"],
- 2036,
- 3371,
+ "gehennite", ["#857c71", "#b5a98d", "#91847c", "#948b68", "#8a834a", "#adad34"], 2011, 3432,
+ "sheolite", ["#785848","#8c7e5b","#9c745c","#80463b"], 2011, 3852,
- "hadean_sponge",
- ["#e66785", "#b54761", "#cc8156", "#dbc760", "#ab9a44"],
- 2213,
- 1012,
+ "nellrock", ["#a15a42","#997849","#946043","#8c533e","#a66658"], 2036, 3371,
+ "nellbolite", ["#7a3017","#693d21","#8a673a"], 2036, 3671,
- "gehidian",
- ["#754c2f", "#855d3a", "#702a1c", "#691a41"],
- 2054,
- 3112,
+ "hadean_sponge", ["#e66785", "#b54761", "#cc8156", "#dbc760", "#ab9a44"], 2213, 1012,
+ "metahadiculite", ["#a0a35d","#665d37", "#7b804d", "#869151", "#6e443f"], 2213, 1412,
+
+ "gehidian", ["#754c2f", "#855d3a", "#702a1c", "#691a41"], 2054, 3112,
+ "metagehitrite", ["#5e4f2a","#53544e", "#68787a", "#454f46", "#5e584b"], 2054, 3312,
1,9
);
@@ -23992,6 +24468,372 @@ Pixel size (rendering only): (Use if the save looks cut o
elements[resultingAutoElems[i]].nellfireImmune = true;
};
});
+
+ //Crimson transformation assigner
+ runAfterAutogen(function() {
+ crimsonAssignmentUnknownData1Errors = {};
+
+ var rockdataElements = Object.keys(elements).filter(function(name) {
+ return (
+ elements[name]._data &&
+ !["crimson"].includes(elements[name]._data[0])
+ )
+ });
+
+ for(i = 0; i < rockdataElements.length; i++) {
+ var name = rockdataElements[i];
+ var info = elements[name];
+ switch(info._data[1]) {
+ case "phanerite":
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "crimstone"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "crimstone_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "crimstone_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "crimstone_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "crimstone_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_crimstone_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_crimstone_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "crimstone_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "crimstone_sandy_water"
+ break;
+ };
+ break;
+ case "aphanite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "crimsalt"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "crimsalt_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "crimsalt_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "crimsalt_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "crimsalt_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_crimsalt_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_crimsalt_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "crimsalt_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "crimsalt_sandy_water"
+ break;
+ };
+ break;
+ case "vesiculite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "crimscoria"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "crimscoria_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "crimscoria_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "crimscoria_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "crimscoria_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_crimscoria_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_crimscoria_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "crimscoria_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "crimscoria_sandy_water"
+ break;
+ };
+ break;
+ case "vitrite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "crimidian"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "crimidian_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "crimidian_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "crimidian_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "crimidian_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_crimidian_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_crimidian_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "crimidian_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "crimidian_sandy_water"
+ break;
+ };
+ break;
+ case "metaphanerite":
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "metacrimstone"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "metacrimstone_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "metacrimstone_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "metacrimstone_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "metacrimstone_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_metacrimstone_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_metacrimstone_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "metacrimstone_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "metacrimstone_sandy_water"
+ break;
+ };
+ break;
+ case "metaaphanite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "metacrimsalt"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "metacrimsalt_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "metacrimsalt_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "metacrimsalt_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "metacrimsalt_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_metacrimsalt_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_metacrimsalt_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "metacrimsalt_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "metacrimsalt_sandy_water"
+ break;
+ };
+ break;
+ case "metavesiculite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "metacrimscoria"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "metacrimscoria_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "metacrimscoria_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "metacrimscoria_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "metacrimscoria_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_metacrimscoria_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_metacrimscoria_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "metacrimscoria_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "metacrimscoria_sandy_water"
+ break;
+ };
+ break;
+ case "metavitrite":
+ //console.log(info._data[2]);
+ switch(info._data[2]) {
+ case "igneous_rock":
+ crimsonObject[name] = "metacrimidian"
+ break;
+ case "solid_igneous_rock":
+ crimsonObject[name] = "metacrimidian_wall"
+ break;
+ case "igneous_gravel":
+ crimsonObject[name] = "metacrimidian_gravel"
+ break;
+ case "particulate":
+ crimsonObject[name] = "metacrimidian_sand"
+ break;
+ case "dust":
+ crimsonObject[name] = "metacrimidian_dust"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_metacrimidian_sand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_metacrimidian_sand"
+ break;
+ case "sediment":
+ crimsonObject[name] = "metacrimidian_sand_sediment"
+ break;
+ case "suspension":
+ crimsonObject[name] = "metacrimidian_sandy_water"
+ break;
+ };
+ break;
+ case "phanerite_sandstone":
+ crimsonObject[name] = "crimstone_sandstone"
+ break;
+ case "aphanite_sandstone":
+ crimsonObject[name] = "crimsalt_sandstone"
+ break;
+ case "vesiculite_sandstone":
+ crimsonObject[name] = "crimscoria_sandstone"
+ break;
+ case "vitrite_sandstone":
+ crimsonObject[name] = "crimidian_sandstone"
+ break;
+ case "phanerite_sandstone":
+ crimsonObject[name] = "metacrimstone_sandstone"
+ break;
+ case "aphanite_sandstone":
+ crimsonObject[name] = "metacrimsalt_sandstone"
+ break;
+ case "vesiculite_sandstone":
+ crimsonObject[name] = "metacrimscoria_sandstone"
+ break;
+ case "vitrite_sandstone":
+ crimsonObject[name] = "metacrimidian_sandstone"
+ break;
+ case "crystalline_sandstone":
+ case "silica_sandstone":
+ case "sedimentary":
+ case "rock":
+ case "sandstone":
+ case "silica":
+ crimsonObject[name] = "crimsandstone"
+ break;
+ case "soil_sandstone":
+ crimsonObject[name] = "crimsoilstone"
+ break;
+ case "magma":
+ switch(info._data[2]) {
+ case "liquid":
+ crimsonObject[name] = "crimson_magma"
+ break;
+ case "vaporized":
+ crimsonObject[name] = "vaporized_crimson_magma"
+ break;
+ case "cloud":
+ crimsonObject[name] = "crimson_magma_cloud"
+ break;
+ };
+ break;
+ case "crystalline":
+ switch(info._data[2]) {
+ case "particulate":
+ crimsonObject[name] = "crimsand"
+ break;
+ case "wet_particulate":
+ crimsonObject[name] = "wet_crimsand"
+ break;
+ case "packed_particulate":
+ crimsonObject[name] = "packed_crimsand"
+ break;
+ case "suspension":
+ crimsonObject[name] = "crimsand_water"
+ break;
+ case "sediment":
+ crimsonObject[name] = "crimsand_sediment"
+ break;
+ };
+ break;
+ case "soil":
+ case "dry_soil":
+ case "clay":
+ switch(info._data[2]) {
+ case "particulate":
+ crimsonObject[name] = "crimsand"
+ break;
+ case "suspension":
+ crimsonObject[name] = "crimsand_water"
+ break;
+ case "sediment":
+ crimsonObject[name] = "crimsand_sediment"
+ break;
+ };
+ break;
+ default:
+ crimsonAssignmentUnknownData1Errors[name] = info._data;
+ };
+ };
+
+
+ //Manual overrides because JavaScript sees the cases and pretends it doesn't know what they mean
+ crimsonObject.soilstone = "crimsoilstone";
+ crimsonObject.sandstone = "crimsandstone";
+ crimsonObject.rosephyllite = "metacrimsalt";
+ });
+ //Assigner end
+
+
/* //Rocks
@@ -24456,11 +25298,48 @@ Pixel size (rendering only): (Use if the save looks cut o
viscosity: 80.1, //probably misinterpreting tickDelta, and w/o the game assets, I can't compare against water, so this is in relation to H2SO4 scaled to its density in cP and under the assumption that water visc = 1
}
+ /*
+ //Metamorphism will be driven using solely temperature.
+ //Pressure simulation, due to how the game is coded, will be limited to requiring the rock to be surrounded.
+
+ elements.slate = {
+ color: ["#787B80", "#535557", "#695E58", "#696969", "#6B5D5B"],
+ tempHigh: 200,
+ stateHigh: "felsic_magma",
+ category: "solid rock",
+ state: "solid",
+ density: 2640,
+ hardness: 0.7,
+ maxColorOffset: 15,
+ hardness: 0.3,
+ _data: ["clay", "rock", "sedimentary_rock"]
+ };
+
+ elements.shale.onTryMoveInto = function(pixel,otherPixel) {
+ var otherData = elements[otherPixel.element];
+ if(otherData.category == "magmas" && Math.random() < 0.005 && pixel.temp > 650) {
+ var around = getCirclePixels(pixel.x,pixel.y,2);
+ around.forEach(pixel => changePixel(pixel,"hornfels"));
+ return
+ };
+ if(pixel.exposedToAir) { return };
+ if(pixel.temp > 800 && Math.random () < 0.0007) {
+ changePixel(pixel,"migmatite")
+ } else if(pixel.temp > 600 && Math.random () < 0.001) {
+ changePixel(pixel,"gneiss")
+ } else if(pixel.temp > 400 && Math.random () < 0.001) {
+ changePixel(pixel,"schist")
+ } else if(pixel.temp > 200 && Math.random () < 0.001) {
+ changePixel(pixel,"slate")
+ };
+ return
+ };*/
+
runAfterLoad(function() {
rocksSandsAndSoilsToGiveHotForms = Object.keys(elements).filter(
function(elemName) {
//console.log(elemName,elements[elemName]._data?.[2]);
- return (!("clay","limestone","black_limestone","shale".includes(elemName)) && ["igneous_rock","solid_igneous_rock","igneous_gravel","sedimentary_rock","particulate"].includes(elements[elemName]._data?.[2]))
+ return (!(["clay","limestone","black_limestone"].includes(elemName)) && ["igneous_rock","solid_igneous_rock","igneous_gravel","sedimentary_rock","particulate","packed_particulate","metamorphic_rock","solid_metamorphic_rock","metamorphic_gravel"].includes(elements[elemName]._data?.[2]))
}
);
if(rocksSandsAndSoilsToGiveHotForms.includes("clay")) { rocksSandsAndSoilsToGiveHotForms.splice(rocksSandsAndSoilsToGiveHotForms.indexOf("clay"),1) };
@@ -26954,10 +27833,10 @@ Make sure to save your command in a file if you want to add this preset again.`
}
}
};
-
+
rayAbsorbElements = [];
rayPassElements = [];
-
+
function summonRay(element,xIn,intensity,radius) {
var forMin = 0 - radius;
var forMax = radius + 1;
@@ -33287,7 +34166,7 @@ Make sure to save your command in a file if you want to add this preset again.`
kep1er = [
//Conn. 0 Conn. - Conn. 1
- ["first_impact", ["#B4294A","#CB7431","#6134B5"]],
+ ["first_impact", ["#E34B6E","#FE9F19","#8E5ECE"]],
//Lemon Bl. B1ue Bl.
["doublast", ["#FFFB1D","#2B8FFF"]],
//not edition colors because i'm not doing all of those and they're all really similar anyway (the kep1ian editions are too similar amongst themselves)
@@ -35059,7 +35938,7 @@ Make sure to save your command in a file if you want to add this preset again.`
cloudName = cloudPrefix + cloudName;
if(elementExists(cloudName)) {
- cloudName = "auto_" + cloudName;
+ if(elements[cloudName].autoType) { continue } else { cloudName = "auto_" + cloudName }
};
elements[cloudName] = {
@@ -35075,6 +35954,7 @@ Make sure to save your command in a file if you want to add this preset again.`
ignoreAir: true,
conduct: 0.01 * (2**cloudType),
autoType: "cloud",
+ isGas: true
};
if(cloudType === 4) { //column tick for heaviester clouds
@@ -37312,6 +38192,7 @@ Make sure to save your command in a file if you want to add this preset again.`
};
function parseForLateGenerationParameter(input) {
+ if(input == null) { return };
if(input.startsWith("*")) {
var elemList = Object.keys(elements);
input = input.toLowerCase().substring(1);
@@ -39700,7 +40581,7 @@ Make sure to save your command in a file if you want to add this preset again.`
if(!supports) {
behaviors.POWDER(pixel);
};
-
+
elements.concrete.tick
doDefaults(pixel);
@@ -42734,13 +43615,28 @@ maxPixels (default 1000): Maximum amount of pixels/changes (if xSpacing and ySpa
}
});
+ //SPECIFY CURRENT ELEMENT ON LOAD ##
+
+ window.addEventListener("load",function() {
+ //console.log(currentElement);
+ currentElement = urlParams.get("currentElement") ?? "sand";
+ //console.log(currentElement);
+ if(!elementExists(currentElement)) {
+ //console.log(false);
+ currentElement = "sand"
+ }// else { console.log(true) };
+ //console.log(currentElement);
+ });
+
//END ##
elements.unknown = {
color: "#FFFFFF",
behavior: behaviors.WALL,
maxColorOffset: 0
- }
+ };
+
+ "sand"
} else {
var nonexistentMods = dependencies.filter(function(modPath) { return !(enabledMods.includes(modPath)) });
nonexistentMods.forEach(function(modPath) {
From 474fda6f47a0ad056c3c170e06fd3dfb8e4b6c54 Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Tue, 16 Jan 2024 11:56:21 -0500
Subject: [PATCH 25/39] new rainbow variants
i'm again sick of modding this game
---
mods/a_mod_by_alice.js | 188 +++++++++++++++++++++++++++++++----------
1 file changed, 145 insertions(+), 43 deletions(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index 30e11d1e..ae289219 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -7612,9 +7612,11 @@ color1 and color2 spread through striped paint like dye does with itself. col
elements.rainbow.reactions.coal = { elem1: "dark_rainbow" };
elements.rainbow.reactions.charcoal = { elem1: "dark_rainbow" };
elements.rainbow.reactions.coal_dust = { elem1: "dark_rainbow" };
+ elements.rainbow.reactions.malware = { elem1: "glitchy_rainbow" };
elements.rainbow.reactions.ruby = { elem1: "rubyshimmer" };
elements.rainbow.reactions.molten_ruby = { elem1: "rubyshimmer" };
elements.rainbow.reactions.topaz = { elem1: "topazshimmer" };
+ elements.rainbow.reactions.bee = { elem1: "beeshimmer" };
elements.rainbow.reactions.sap = { elem1: "ambershimmer" };
elements.rainbow.reactions.amber = { elem1: "ambershimmer" };
elements.rainbow.reactions.emerald = { elem1: "emeraldshimmer" };
@@ -7638,6 +7640,8 @@ color1 and color2 spread through striped paint like dye does with itself. col
elements.rainbow.reactions.gold = { elem1: "goldshimmer" };
elements.rainbow.reactions.molten_gold = { elem1: "goldshimmer" };
elements.rainbow.reactions.onyx = { elem1: "onyxshimmer" };
+ elements.rainbow.reactions.opal = { elem1: "opalshimmer" };
+ elements.rainbow.reactions.jadeite = { elem1: "jadeshimmer" };
elements.rainbow.reactions.dirt = { elem1: "earthshimmer" };
elements.rainbow.reactions.lead_scrap = { elem1: "leadshimmer" };
elements.rainbow.reactions.lead = { elem1: "leadshimmer" };
@@ -7698,8 +7702,11 @@ color1 and color2 spread through striped paint like dye does with itself. col
elements.rainbow.reactions.sand_sediment = { elem1: "sandshimmer" };
elements.rainbow.reactions.sandstone = { elem1: "sandshimmer" };
elements.rainbow.reactions.ichor = { elem1: "ichorshimmer" };
- elements.rainbow.reactions.opal = { elem1: "opalshimmer" };
elements.rainbow.reactions.quark_matter = { elem1: "quarkshimmer" };
+ elements.rainbow.reactions.heejinite = { elem1: "heejinshimmer" };
+ elements.rainbow.reactions.heejinite_powder = { elem1: "heejinshimmer" };
+ elements.rainbow.reactions.molten_heejinite = { elem1: "heejinshimmer" };
+ elements.rainbow.reactions.heejinite_gas = { elem1: "heejinshimmer" };
/*elements.rainbow.reactions.dye = {
func: function(pixel,otherPixel) {
@@ -7795,7 +7802,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
};
elements.fireshimmer = {
- color: ["#ff0000","#ff8800","#ffff00","#ff8800","ff0000"],
+ color: ["#ff0000","#ff8800","#ffff00","#ff8800","#ff0000"],
tick: function(pixel) {
var dyeColor = pixel.dyeColor ?? null;
var t = pixelTicks*3+pixel.x+pixel.y;
@@ -7824,6 +7831,45 @@ color1 and color2 spread through striped paint like dye does with itself. col
movable: false,
};
+ elements.glitchy_rainbow = {
+ color: ["#ff0000","#ff8800","#ffff00","#ff8800","#ff0000"],
+ tick: function(pixel) {
+ if(Math.random() < 0.25) { return };
+ var dyeColor = pixel.dyeColor ?? null;
+ var t = (
+ (Math.floor(pixelTicks / 3) * 3)
+ + (Math.floor(pixel.x / 3) * 3)
+ + pixel.y
+ + (Math.floor(Math.random() * 5)-2)
+ );
+ var r = Math.floor(127*(1-Math.cos(t*Math.PI/90)));
+ var g = Math.floor(127*(1-Math.cos(t*Math.PI/90+2*Math.PI/3)));
+ var b = Math.floor(127*(1-Math.cos(t*Math.PI/90+4*Math.PI/3)));
+ var baseColor = Math.random() < 0.02 ? [g,r,b] : [r,g,b];
+ baseColor = "rgb("+baseColor.join(",")+")";
+ if(!dyeColor) {
+ pixel.color = baseColor
+ } else {
+ var baseJSON = convertColorFormats(baseColor,"json");
+ var dyeJSON = convertColorFormats(dyeColor,"json");
+ var dyedColor = multiplyColors(dyeJSON,baseJSON,"json");
+ //80% multiplied
+ var semiDyedColor = averageColorObjects(dyedColor,baseJSON,0.8);
+ //30% dye color, 70% result
+ var finalColor = averageColorObjects(semiDyedColor,dyeJSON,0.7);
+ pixel.color = convertColorFormats(finalColor,"rgb")
+ }
+ },
+ category: "special",
+ reactions: {
+ dye: elements.rainbow.reactions.dye
+ },
+ behavior: behaviors.WALL,
+ state: "solid",
+ category: "rainbow variants",
+ movable: false,
+ };
+
elements.rainbow.behavior = behaviors.WALL;
elements.dye.ignore ??= [];
@@ -7910,6 +7956,20 @@ color1 and color2 spread through striped paint like dye does with itself. col
category: "rainbow variants",
};
+ elements.beeshimmer = {
+ color: ["#ffff00","#202000","#ffff00","#202000","#ffff00","#202000","#ffff00","#202000"],
+ tick: function(pixel) {
+ var t = pixelTicks*1.5+pixel.x+pixel.y;
+ var r = Math.floor(255*(1-Math.cos(t*Math.PI/4)));
+ var value = Math.ceil(r/2);
+ pixel.color = "rgb("+value+","+value+",0)";
+ doHeat(pixel);
+ },
+ behavior: behaviors.WALL,
+ state: "solid",
+ category: "rainbow variants",
+ };
+
elements.ambershimmer = {
color: ["#ff7f00","#201000","#ff7f00","#201000"],
tick: function(pixel) {
@@ -8081,6 +8141,58 @@ color1 and color2 spread through striped paint like dye does with itself. col
category: "rainbow variants",
};
+ elements.opalshimmer = {
+ color: function() { var rc = elements.rainbow.color; var rc2 = rc.map(x => lightenColor(x,127,"hex")); return rc2.concat(rc2) }(),
+ tick: function(pixel) {
+ var dyeColor = pixel.dyeColor ?? null;
+ var t1 = pixelTicks+pixel.x+pixel.y;
+ var t2 = pixelTicks+pixel.x-pixel.y;
+ var scale = 20;
+ var r1 = Math.floor(127*(1-Math.cos(t1*Math.PI/scale)));
+ var g1 = Math.floor(127*(1-Math.cos(t1*Math.PI/scale+2*Math.PI/3)));
+ var b1 = Math.floor(127*(1-Math.cos(t1*Math.PI/scale+4*Math.PI/3)));
+ var r2 = Math.floor(127*(1-Math.cos(t2*Math.PI/scale)));
+ var g2 = Math.floor(127*(1-Math.cos(t2*Math.PI/scale+2*Math.PI/3)));
+ var b2 = Math.floor(127*(1-Math.cos(t2*Math.PI/scale+4*Math.PI/3)));
+ var r3 = (r1+r2)*0.75;
+ var g3 = (g1+g2)*0.75;
+ var b3 = (b1+b2)*0.75;
+ var baseColor = {r: r3, g: g3, b: b3};
+ baseColor = averageColorObjects(baseColor,whiteColor,0.8);
+ baseColor = convertColorFormats(baseColor,"rgb");
+ if(!dyeColor) {
+ pixel.color = baseColor
+ } else {
+ var baseJSON = convertColorFormats(baseColor,"json");
+ var dyeJSON = convertColorFormats(dyeColor,"json");
+ var dyedColor = multiplyColors(dyeJSON,baseJSON,"json");
+ //80% multiplied
+ var semiDyedColor = averageColorObjects(dyedColor,baseJSON,0.8);
+ //30% dye color, 70% result
+ var finalColor = averageColorObjects(semiDyedColor,dyeJSON,0.7);
+ pixel.color = convertColorFormats(finalColor,"rgb")
+ }
+ },
+ reactions: {
+ dye: elements.rainbow.reactions.dye,
+ },
+ behavior: behaviors.WALL,
+ state: "solid",
+ category: "rainbow variants",
+ };
+
+ elements.jadeshimmer = {
+ color: ["#5f8f2f","#0c1206","#5f8f2f","#0c1206"],
+ tick: function(pixel) {
+ var t = pixelTicks*2.5+pixel.x+pixel.y;
+ var r = Math.floor(255*(1-Math.cos(t*Math.PI/24)));
+ pixel.color = "rgb("+Math.ceil((r*(4/16))+32)+","+Math.ceil((r*(8/16))+32)+","+Math.ceil((r*(1/8))+32)+")";
+ },
+ behavior: behaviors.WALL,
+ state: "solid",
+ category: "rainbow variants",
+ };
+
elements.earthshimmer = {
color: ["#5f3f00","#0c0800","#5f3f00","#0c0800"],
tick: function(pixel) {
@@ -8302,46 +8414,6 @@ color1 and color2 spread through striped paint like dye does with itself. col
category: "rainbow variants",
};
- elements.opalshimmer = {
- color: function() { var rc = elements.rainbow.color; var rc2 = rc.map(x => lightenColor(x,127,"hex")); return rc2.concat(rc2) }(),
- tick: function(pixel) {
- var dyeColor = pixel.dyeColor ?? null;
- var t1 = pixelTicks+pixel.x+pixel.y;
- var t2 = pixelTicks+pixel.x-pixel.y;
- var scale = 20;
- var r1 = Math.floor(127*(1-Math.cos(t1*Math.PI/scale)));
- var g1 = Math.floor(127*(1-Math.cos(t1*Math.PI/scale+2*Math.PI/3)));
- var b1 = Math.floor(127*(1-Math.cos(t1*Math.PI/scale+4*Math.PI/3)));
- var r2 = Math.floor(127*(1-Math.cos(t2*Math.PI/scale)));
- var g2 = Math.floor(127*(1-Math.cos(t2*Math.PI/scale+2*Math.PI/3)));
- var b2 = Math.floor(127*(1-Math.cos(t2*Math.PI/scale+4*Math.PI/3)));
- var r3 = (r1+r2)*0.75;
- var g3 = (g1+g2)*0.75;
- var b3 = (b1+b2)*0.75;
- var baseColor = {r: r3, g: g3, b: b3};
- baseColor = averageColorObjects(baseColor,whiteColor,0.8);
- baseColor = convertColorFormats(baseColor,"rgb");
- if(!dyeColor) {
- pixel.color = baseColor
- } else {
- var baseJSON = convertColorFormats(baseColor,"json");
- var dyeJSON = convertColorFormats(dyeColor,"json");
- var dyedColor = multiplyColors(dyeJSON,baseJSON,"json");
- //80% multiplied
- var semiDyedColor = averageColorObjects(dyedColor,baseJSON,0.8);
- //30% dye color, 70% result
- var finalColor = averageColorObjects(semiDyedColor,dyeJSON,0.7);
- pixel.color = convertColorFormats(finalColor,"rgb")
- }
- },
- reactions: {
- dye: elements.rainbow.reactions.dye,
- },
- behavior: behaviors.WALL,
- state: "solid",
- category: "rainbow variants",
- };
-
elements.quarkshimmer = {
color: ["#ff0000","#00ff00","#0000ff","#ff0000","#00ff00","#0000ff"],
tick: function(pixel) {
@@ -8374,6 +8446,23 @@ color1 and color2 spread through striped paint like dye does with itself. col
movable: false,
};
+ elements.heejinshimmer = {
+ color: ["#ff007f","#200010","#ff007f","#200010"],
+ tick: function(pixel) {
+ var t = pixelTicks*2.5+pixel.x+pixel.y;
+ var t2 = pixelTicks/2;
+ //var r = Math.floor(255*(1-Math.cos(t*Math.PI/24)));
+ //var value = Math.ceil((r*(7/8))+32);
+ var l = Math.floor(40*(1-Math.cos(t*Math.PI/24)));
+ var h = (320 + Math.floor(30*(Math.cos(t2*Math.PI/24)))) % 360;
+ //pixel.color = "rgb("+value+",0,"+Math.round(value * 0.5)+")";
+ pixel.color = convertHslObjects({h:h,s:100,l:l},"rgb");
+ },
+ behavior: behaviors.WALL,
+ state: "solid",
+ category: "rainbow variants",
+ };
+
elements.pastel_rainbow_small = {
color: ["#ffaacc","#ffaacc","#aaccff","#aaccff","#ffffbb","#ffffbb"],
tick: function(pixel) {
@@ -25138,6 +25227,18 @@ Pixel size (rendering only): (Use if the save looks cut o
hardness: 0.45,
};
+ //Jade
+
+ elements.jadeite = {
+ color: ["#3D7D31", "#2D6D1F", "#538A2F", "#6A9A37"],
+ tempHigh: 1000,
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "solid",
+ density: 3400,
+ hardness: 0.65,
+ };
+
//Soil
//Dry dirt
@@ -34204,7 +34305,8 @@ Make sure to save your command in a file if you want to add this preset again.`
if(directions.length > 0) {
tryMove(pixel,pixel.x+directions[Math.floor(Math.random() * directions.length)],pixel.y)
};
- }
+ };
+ doHeat(pixel);
},
reactions: {
water: { elem1: ["plastic","cellulose","cellulose"], elem2: ["water","water","cellulose",null,null], chance: 0.8 }
From fcaaecbe656ead6f598f29ef854cd8854e0bb7d4 Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Wed, 17 Jan 2024 15:36:49 -0500
Subject: [PATCH 26/39] more golds
---
mods/a_mod_by_alice.js | 45 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 44 insertions(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index ae289219..bf4e19c0 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -16471,6 +16471,7 @@ Pixel size (rendering only): (Use if the save looks cut o
state: "solid",
};
+ //Makes thinner nichrome wires get hotter
nichromeDoNeighborCount = true;
function nichromeNeighborLogic(count) {
@@ -16532,6 +16533,48 @@ Pixel size (rendering only): (Use if the save looks cut o
},
};
+ elements.gold.reactions ??= {};
+
+ elements.molten_gold.reactions.molten_nickel = {
+ elem1: "molten_white_gold",
+ elem2: new Array(9).fill("molten_nickel").concat("molten_white_gold"),
+ changeTemp: false
+ };
+
+ elements.molten_copper.reactions.molten_gold = {
+ elem1: ["molten_copper","molten_copper","molten_rose_gold"],
+ elem2: "molten_rose_gold",
+ changeTemp: false
+ };
+
+ elements.white_gold = {
+ color: ["#c2c2c2","#9e9e9e","#e8e8e8"],
+ behavior: behaviors.WALL,
+ tempHigh: 937,
+ category: "solids",
+ density: 15900,
+ conduct: 0.83, //Has never been measured x>:(
+ hardness: 0.48,
+ };
+
+ elements.rose_gold.color = ["#f58eb1","#d06c7d","#f58eb1"];
+
+ elements.molten_copper.reactions.molten_rose_gold = {
+ elem1: ["molten_copper","molten_red_gold"],
+ elem2: "molten_red_gold",
+ changeTemp: false
+ };
+
+ elements.red_gold = {
+ color: ["#d97b6a","#c95c49","#d97b6a"],
+ behavior: behaviors.WALL,
+ tempHigh: 975, //https://www.researchgate.net/figure/Gold-copper-phase-diagram-with-melting-points-of-gold-and-copper-adapted-from-AMS_fig51_233765846
+ category: "solids",
+ density: 12220, //https://www.handymath.com/cgi-bin/density.cgi?naym1=Gold&weight1=10&den1=19.3&naym2=Copper&weight2=10&den2=8.94&aloynaym=Red+Gold&submit=Calculate&numnum=2&moreless=1&decimal=5
+ conduct: 0.85, //Has never been measured x>:(
+ hardness: 0.5, //???
+ };
+
worldgentypes.test = {
layers: [[0.3, "pointer"], [0, "molten_nickel"]],
temperature: 2000
@@ -19543,7 +19586,7 @@ Pixel size (rendering only): (Use if the save looks cut o
elements.frozen_ketchup.breakInto = "ketchup_snow"
elements.frozen_poisoned_ketchup.breakInto = "poisoned_ketchup_snow"
- regularShinyThingArray = ["iron", "zinc", "tin", "nickel", "silver", "aluminum", "lead", "tungsten", "brass", "bronze", "sterling", "steel", "rose_gold", "solder", "gold", "pyrite", "mythril", "mithril_mythril_alloy", "titanium", "ilitium", "mithril", "beryllium", "boron", "ruthenium", "rhodium", "palladium", "rhenium", "osmium", "iridium", "platinum", "frozen_mercury", "lithium", "niobium", "ketchup_metal", "ketchup_gold", "tungstensteel", "densinium", "mithril", "signalum", "laetium"]
+ regularShinyThingArray = ["iron", "zinc", "tin", "nickel", "silver", "aluminum", "lead", "tungsten", "brass", "bronze", "sterling", "steel", "white_gold", "blue_gold", "rose_gold", "red_gold", "solder", "gold", "pyrite", "mythril", "mithril_mythril_alloy", "titanium", "ilitium", "mithril", "beryllium", "boron", "ruthenium", "rhodium", "palladium", "rhenium", "osmium", "iridium", "platinum", "frozen_mercury", "lithium", "niobium", "ketchup_metal", "ketchup_gold", "tungstensteel", "densinium", "mithril", "signalum", "laetium"]
elements.nitrogen_snow = {
color: "#efefef",
From ffd327f3afae10924fff33323eaeb04dac9c42a5 Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Wed, 17 Jan 2024 21:31:59 -0500
Subject: [PATCH 27/39] Create en_gb.json
---
lang/en_gb.json | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 lang/en_gb.json
diff --git a/lang/en_gb.json b/lang/en_gb.json
new file mode 100644
index 00000000..6000c459
--- /dev/null
+++ b/lang/en_gb.json
@@ -0,0 +1,15 @@
+{
+"lang.name": "English (British)",
+"elem.seltzer": "soda_water",
+"elem.oxidized_copper": "oxidised_copper",
+"elem.anesthesia": "anaesthesia",
+"elem.gray_goo": "grey_goo",
+"elem.aluminum": "aluminium",
+"elem.molten_aluminum": "molten_aluminium",
+"elem.fiber": "fibre",
+"elem.color_smoke": "colour_smoke",
+"elem.sulfur": "sulphur",
+"elem.molten_sulfur": "molten_sulphur",
+"elem.sulfur_gas": "sulphur_gas",
+"elem.color_sand": "colour_sand"
+}
\ No newline at end of file
From ed131b7e884e908ce5003dfeb2173bc947dfee53 Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Wed, 17 Jan 2024 21:53:01 -0500
Subject: [PATCH 28/39] Update en_gb.json
---
lang/en_gb.json | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/lang/en_gb.json b/lang/en_gb.json
index 6000c459..3663af8b 100644
--- a/lang/en_gb.json
+++ b/lang/en_gb.json
@@ -1,15 +1,16 @@
{
-"lang.name": "English (British)",
-"elem.seltzer": "soda_water",
-"elem.oxidized_copper": "oxidised_copper",
-"elem.anesthesia": "anaesthesia",
-"elem.gray_goo": "grey_goo",
-"elem.aluminum": "aluminium",
-"elem.molten_aluminum": "molten_aluminium",
-"elem.fiber": "fibre",
-"elem.color_smoke": "colour_smoke",
-"elem.sulfur": "sulphur",
-"elem.molten_sulfur": "molten_sulphur",
-"elem.sulfur_gas": "sulphur_gas",
-"elem.color_sand": "colour_sand"
+"#lang.name": "English (British)",
+"#lang.credit": "R74n",
+"seltzer": "soda_water",
+"oxidized_copper": "oxidised_copper",
+"anesthesia": "anaesthesia",
+"gray_goo": "grey_goo",
+"aluminum": "aluminium",
+"molten_aluminum": "molten_aluminium",
+"fiber": "fibre",
+"color_smoke": "colour_smoke",
+"sulfur": "sulphur",
+"molten_sulfur": "molten_sulphur",
+"sulfur_gas": "sulphur_gas",
+"color_sand": "colour_sand"
}
\ No newline at end of file
From c570c059b7ddb744cc2971f6bfce951281b5b9ef Mon Sep 17 00:00:00 2001
From: slweeb <91897291+slweeb@users.noreply.github.com>
Date: Wed, 17 Jan 2024 22:21:35 -0500
Subject: [PATCH 29/39] Update en_gb.json
---
lang/en_gb.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lang/en_gb.json b/lang/en_gb.json
index 3663af8b..42da1dbe 100644
--- a/lang/en_gb.json
+++ b/lang/en_gb.json
@@ -12,5 +12,6 @@
"sulfur": "sulphur",
"molten_sulfur": "molten_sulphur",
"sulfur_gas": "sulphur_gas",
-"color_sand": "colour_sand"
+"color_sand": "colour_sand",
+"powders": "test"
}
\ No newline at end of file
From 4a2ec04240d66317c65052043f2891ddf0de8bbe Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 15:04:13 -0500
Subject: [PATCH 30/39] clonePixel function, turbines
and non-movable steel
---
mods/a_mod_by_alice.js | 63 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 61 insertions(+), 2 deletions(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index bf4e19c0..b9a67aa0 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -1688,6 +1688,25 @@ if(allDependenciesExist) {
return neighbors
};
+ function clonePixel(pixel,newX,newY,replaceExistingPixel=false,returnPixel=false) {
+ if(!pixel) { return false };
+ if(outOfBounds(newX,newY)) { return false };
+ if(isEmpty(newX,newY)) {
+ //Do nothing
+ } else {
+ if(replaceExistingPixel) {
+ deletePixel(newX,newY)
+ } else {
+ return false
+ }
+ };
+ var newPixel = structuredClone ? structuredClone(pixel) : JSON.parse(JSON.stringify(pixel));
+ newPixel.x = newX; newPixel.y = newY;
+ pixelMap[newX][newY] = newPixel;
+ currentPixels.push(newPixel);
+ return returnPixel ? newPixel : true
+ };
+
function breakCircle(x,y,radius,respectHardness=false,changeTemp=false,defaultBreakIntoDust=false) {
var coords = getCirclePixels(x,y,radius);
coords.forEach(pixel => respectHardness ? tryBreak(pixel,changeTemp,defaultBreakIntoDust) : breakPixel(pixel,changeTemp,defaultBreakIntoDust))
@@ -4484,6 +4503,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
for (var i = 0; i < pixelDrawList.length; i++) {
pixel = pixelDrawList[i];
if (pixelMap[pixel.x][pixel.y] == undefined) {continue}
+ if (pixel.con) { pixel = pixel.con }
if (view===null || view===3) {
var colorOut = pixel.color;
for(var imsorryaboutthelagthiswillcause in specialProperties) {
@@ -5901,6 +5921,35 @@ color1 and color2 spread through striped paint like dye does with itself. col
density: 1300,
excludeRandom: true,
},
+
+ elements.turbine = {
+ color: "#75726a",
+ tempHigh: elements.copper.tempHigh,
+ stateHigh: ["steel","molten_copper"],
+ conduct: 1,
+ behavior: behaviors.WALL,
+ tick: function(pixel) {
+ var neighbors = adjacentCoords.map(offsetPair => pixelMap[pixel.x+offsetPair[0]]?.[pixel.y+offsetPair[1]]).filter(function(pixelOrUndefined) { return typeof(pixelOrUndefined) == "object" });
+ if(neighbors.length < 0) { return };
+ var neighboringElements = neighbors.filter(function(px) { return !!px }).map(x => x.element);
+ var neighboringStates = neighboringElements.map(elemName => elements[elemName].state ?? "solid");
+ var nonSolidNeighbors = neighboringStates.filter(function(string) { return (string !== "solid") }).length;
+ if(nonSolidNeighbors == 0) { return };
+ pixel.charge ??= 0;
+ pixel.charge += nonSolidNeighbors / 8;
+ pixel.temp += (nonSolidNeighbors / 500);
+ },
+ onTryMoveInto: function(pixel,otherPixel) {
+ pixel.charge ??= 0;
+ pixel.charge += 1/8;
+ pixel.temp += (1/500);
+ },
+ hardness: averageNumericArray([elements.copper.hardness,elements.steel.hardness,elements.steel.hardness]),
+ breakInto: ["metal_scrap", "steel_scrap", "steel_scrap", "copper_scrap", "copper_scrap", "steel_scrap"],
+ state: "solid",
+ category: "machines",
+ density: averageNumericArray([elements.steel.density, elements.copper.density, airDensity])
+ };
//hormones
@@ -7937,7 +7986,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
var r = Math.floor(255*(1-Math.cos(t*Math.PI/24)));
pixel.color = "rgb("+Math.ceil((r*(7/8))+32)+","+0+","+0+")";
},
- behavior: behaviors.WALL,
+ behavior: behaviors.WALL, //7989 yay soshi!
state: "solid",
category: "rainbow variants",
};
@@ -8071,7 +8120,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
},
behavior: behaviors.WALL,
state: "solid",
- category: "rainbow variants", //7989 yay soshi!
+ category: "rainbow variants",
nellfireImmune: true
};
@@ -28171,6 +28220,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.down_pusher = {
@@ -28201,6 +28251,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.left_pusher = {
@@ -28231,6 +28282,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.right_pusher = {
@@ -28261,6 +28313,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.up_e_pusher = {
@@ -28303,6 +28356,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.down_e_pusher = {
@@ -28345,6 +28399,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.left_e_pusher = {
@@ -28387,6 +28442,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
elements.right_e_pusher = {
@@ -28429,6 +28485,7 @@ Make sure to save your command in a file if you want to add this preset again.`
hardness: 0.85,
conduct: 1,
state: "solid",
+ movable: false
}
//PORTALS ##
@@ -40889,6 +40946,8 @@ Make sure to save your command in a file if you want to add this preset again.`
hidden: true,
};
+ elements.steel.movable = false;
+
elements.support_steel = {
color: "#71797E",
behavior: behaviors.SUPPORT,
From 8acbe56938fe2c77c28ec58daf7591836a26048e Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 16:16:11 -0500
Subject: [PATCH 31/39] fixed bug where diesel's distillation temperature was
above its autoignition point
---
mods/a_mod_by_alice.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index b9a67aa0..ff7dd31a 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -13780,7 +13780,7 @@ Pixel size (rendering only): (Use if the save looks cut o
color: "#d3d9b4",
behavior: behaviors.LIQUID,
tick: function(pixel) {
- if (pixel.temp > 210 && !pixel.burning) {
+ if (pixel.temp > 300 && !pixel.burning) {
pixel.burning = true;
pixel.burnStart = pixelTicks;
}
From 8112ff4c5972114c8e6810bf0b3cf703bd25939e Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 16:32:00 -0500
Subject: [PATCH 32/39] fix pipes
---
mods/a_mod_by_alice.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index ff7dd31a..fe440816 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -43834,13 +43834,17 @@ maxPixels (default 1000): Maximum amount of pixels/changes (if xSpacing and ySpa
//END ##
+ Object.defineProperty(elements.pipe, "movable", {
+ value: false,
+ writable: false //**** you, you're not changing it to true.
+ });
+
elements.unknown = {
color: "#FFFFFF",
behavior: behaviors.WALL,
maxColorOffset: 0
};
- "sand"
} else {
var nonexistentMods = dependencies.filter(function(modPath) { return !(enabledMods.includes(modPath)) });
nonexistentMods.forEach(function(modPath) {
From b0067c3e65d397bf7c504954eac904fc33305be8 Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 16:40:52 -0500
Subject: [PATCH 33/39] guide the idiotic javascript by moving its feet
manually to walk it along a path
---
mods/a_mod_by_alice.js | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index fe440816..f859be4f 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -27603,7 +27603,21 @@ Make sure to save your command in a file if you want to add this preset again.`
});
lightlikes = ["light","flash","laser","radiation","insulate_flash"];
grbBreakIntos = Object.keys(elements).filter(function(elemName) {
- return elements[elemName].breakInto && elements[elemName].breakInto.includes("gamma_ray_burst");
+ var to = typeof(elements[elemName]);
+ if(to == "undefined") {
+ return false
+ } else {
+ var to2 = typeof(elements[elemName].breakInto);
+ if(to2 == "undefined") {
+ return false
+ } else {
+ if(elements[elemName].breakInto instanceof Array) {
+ return elements[elemName].breakInto.includes("gamma_ray_burst")
+ } else {
+ return elements[elemName].breakInto == "gamma_ray_burst"
+ }
+ }
+ }
});
elements.insulate_flash = {
From 8de3162d8cdc50e1f002ffe2d7adf36db93a1764 Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 17:25:01 -0500
Subject: [PATCH 34/39] helper functions, bladesea, plasma rainbow
---
mods/a_mod_by_alice.js | 175 ++++++++++++++++++++++++++++++++---------
1 file changed, 139 insertions(+), 36 deletions(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index f859be4f..a2299180 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -4,7 +4,7 @@ var dependencyExistence = dependencies.map(x => enabledMods.includes(x));
var allDependenciesExist = dependencyExistence.reduce(function(a,b) { return a && b });
//console.log(allDependenciesExist);
if(allDependenciesExist) {
-
+try {
//COMMON VARIABLES ##
const whiteColor = {r: 255, g: 255, b: 255};
@@ -290,6 +290,26 @@ if(allDependenciesExist) {
return matches
};
+ function elementsWith(keyQuery) {
+ if(typeof(window.keyQuery) == "undefined") { window.keyQuery = "" }; //necessary because of filter's idiotic no-argument policy
+ window.keyQuery = keyQuery;
+ var elemNames = Object.keys(elements);
+ var matches = elemNames.filter(function(name) {
+ return typeof(elements[name]?.[window.keyQuery]) !== "undefined"
+ });
+ return matches
+ };
+
+ function elementsWithout(keyInverseQuery) {
+ if(typeof(window.keyInverseQuery) == "undefined") { window.keyInverseQuery = "" }; //necessary because of filter's idiotic no-argument policy
+ window.keyInverseQuery = keyInverseQuery;
+ var elemNames = Object.keys(elements);
+ var matches = elemNames.filter(function(name) {
+ return typeof(elements[name]?.[window.keyInverseQuery]) === "undefined"
+ });
+ return matches
+ };
+
function getElementsInCategory(categoryName) {
if(["",null,undefined].includes(categoryName)) { categoryName = "other" };
window.categoryQuery = categoryName;
@@ -4442,6 +4462,9 @@ color1 and color2 spread through striped paint like dye does with itself. col
runAfterAutogen(function() {
//rAA because velocity.js already puts its redef in a rAL and rAA comes after that
drawPixels = function(forceTick=false) {
+ // Draw the current pixels
+ var canvas = document.getElementById("game");
+ var ctx = canvas.getContext("2d");
// newCurrentPixels = shuffled currentPixels
var newCurrentPixels = currentPixels.slice();
var pixelsFirst = [];
@@ -4473,9 +4496,6 @@ color1 and color2 spread through striped paint like dye does with itself. col
pixelsFirst.push(pixel);
}
}
- // Draw the current pixels
- var canvas = document.getElementById("game");
- var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
if (!settings["bg"]) {ctx.clearRect(0, 0, canvas.width, canvas.height)}
else {
@@ -7620,6 +7640,58 @@ color1 and color2 spread through striped paint like dye does with itself. col
hardness: 0.7,
}
+ var temp = "firesea,lektre,concoction,mistake,unstable_mistake,toxic_mistake".split(",");
+ for(var i = 0; i < temp.length; i++) {
+ temp[i].state = "liquid";
+ temp[i].category = "liquids"
+ };
+
+
+ elements.head.cutInto = ["bone","meat","blood"];
+ elements.body.cutInto = ["bone","meat","meat","blood","blood"];
+ elements.wood.cutInto = ["wood_plank","wood_plank","wood_plank","wood_plank","wood_plank","wood_plank","wood_plank","wood_plank","sawdust"];
+ elements.fish.breakInto = ["meat","meat","bone","blood"];
+ elements.fish.cutInto = ["meat","meat","bone","blood"];
+
+ elements.bladesea = {
+ color: ["#959696", "#b1b3b3", "#d4d4d4", "#bfbdbd"],
+ state: "liquid",
+ viscosity: 5,
+ behavior: behaviors.LIQUID,
+ tick: function(pixel) { //Code from R74n/vanilla "smash" tool
+ var pX = pixel.x;
+ var pY = pixel.y;
+ for(i = 0; i < adjacentCoords.length; i++) {
+ var oX = adjacentCoords[i][0];
+ var oY = adjacentCoords[i][1];
+ var fX = pX+oX;
+ var fY = pY+oY;
+ if(!isEmpty(fX,fY,true)) {
+ var checkPixel = pixelMap[fX][fY];
+ var otherElement = elements[checkPixel.element];
+ if (typeof(otherElement.cutInto) !== "undefined") {
+ var hardness = otherElement.hardness ?? 0;
+ if (Math.random() < (1 - hardness)) {
+ var cutInto = otherElement.cutInto;
+ // if breakInto is an array, pick one
+ if (Array.isArray(cutInto)) {
+ cutInto = randomChoice(cutInto);
+ };
+ changePixel(checkPixel,cutInto);
+ }
+ }
+ };
+ };
+ },
+ density: 200,
+ category: "liquids",
+ hidden: true,
+ reactions: {
+ "concoction": { "elem1": "bladesea", "elem2": "bladesea", "chance":0.005},
+ },
+ };
+
+
//ASSORTED RAINBOW VARIANTS ##
elements.concoction.reactions.diorite_gravel = {
@@ -7651,6 +7723,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
elements.rainbow.reactions ??= {};
elements.rainbow.reactions.fire = { elem1: "fireshimmer", chance: 0.1 };
+ elements.rainbow.reactions.plasma = { elem1: "plasmashimmer", chance: 0.1 };
elements.rainbow.insulate = false;
elements.rainbow.burnInto = "fireshimmer";
elements.rainbow.burn = 0.1;
@@ -7735,7 +7808,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
elements.rainbow.reactions.iodine = { elem1: "iodoshimmer" };
elements.rainbow.reactions.molten_iodine = { elem1: "iodoshimmer" };
elements.rainbow.reactions.iodine_gas = { elem1: "iodoshimmer" };
- elements.astatine.tempHigh = 302;
+ runAfterLoad(function() { elements.astatine.tempHigh = 302 });
elements.molten_astatine ??= {}; elements.molten_astatine.tempHigh = 337;
elements.rainbow.reactions.astatine = { elem1: "astatoshimmer" };
elements.rainbow.reactions.molten_astatine = { elem1: "astatoshimmer" };
@@ -7871,6 +7944,37 @@ color1 and color2 spread through striped paint like dye does with itself. col
}
},
category: "special",
+ reactions: {
+ dye: elements.rainbow.reactions.dye,
+ plasma: {elem1: "plasmashimmer", tempMin: 10000}
+ },
+ behavior: behaviors.WALL,
+ state: "solid",
+ category: "rainbow variants",
+ movable: false,
+ };
+
+ elements.plasmashimmer = {
+ color: ["#8800ff","#f2f2f2","#8800ff","#f2f2f2"],
+ tick: function(pixel) {
+ var dyeColor = pixel.dyeColor ?? null;
+ var t = pixelTicks*3+pixel.x+pixel.y;
+ var value = Math.floor(127*((Math.max(0,1-(rainbowMathlet(t,25,0)))) ** 1.1));
+ baseColor = "rgb(" + [Math.round(127 + (value/2)), value, 255].join(",") + ")";
+ if(!dyeColor) {
+ pixel.color = baseColor
+ } else {
+ var baseJSON = convertColorFormats(baseColor,"json");
+ var dyeJSON = convertColorFormats(dyeColor,"json");
+ var dyedColor = multiplyColors(dyeJSON,baseJSON,"json");
+ //70% multiplied
+ var semiDyedColor = averageColorObjects(dyedColor,baseJSON,0.7);
+ //35% dye color, 65% result
+ var finalColor = averageColorObjects(semiDyedColor,dyeJSON,0.65);
+ pixel.color = convertColorFormats(finalColor,"rgb")
+ }
+ },
+ category: "special",
reactions: {
dye: elements.rainbow.reactions.dye
},
@@ -7919,7 +8023,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
movable: false,
};
- elements.rainbow.behavior = behaviors.WALL;
+ elements.rainbow.behavior = behaviors.WALL; //7989 yay soshi!
elements.dye.ignore ??= [];
@@ -7986,7 +8090,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
var r = Math.floor(255*(1-Math.cos(t*Math.PI/24)));
pixel.color = "rgb("+Math.ceil((r*(7/8))+32)+","+0+","+0+")";
},
- behavior: behaviors.WALL, //7989 yay soshi!
+ behavior: behaviors.WALL,
state: "solid",
category: "rainbow variants",
};
@@ -14109,7 +14213,7 @@ Pixel size (rendering only): (Use if the save looks cut o
stain: elements.spray_paint.stain,
};
- var temp = {
+ temp = {
invisible_wall: "asdfg",
invisible_dye: 2,
invisible_dye_gas: false
@@ -14769,18 +14873,10 @@ Pixel size (rendering only): (Use if the save looks cut o
var fY = pY+oY;
if(!isEmpty(fX,fY,true)) {
var checkPixel = pixelMap[fX][fY];
- var thisElementName = pixel.element;
- var otherElementName = checkPixel.element;
- var thisElement = elements[pixel.element];
var otherElement = elements[checkPixel.element];
if (typeof(otherElement.breakInto) !== "undefined") {
- var hardness = null;
- if (typeof(otherElement.hardness) === "number") {
- hardness = otherElement.hardness;
- } else {
- hardness = 1;
- };
- if (Math.random() < hardness) {
+ var hardness = otherElement.hardness ?? 0;
+ if (Math.random() < (1 - hardness)) {
var breakInto = otherElement.breakInto;
// if breakInto is an array, pick one
if (Array.isArray(breakInto)) {
@@ -19635,7 +19731,7 @@ Pixel size (rendering only): (Use if the save looks cut o
elements.frozen_ketchup.breakInto = "ketchup_snow"
elements.frozen_poisoned_ketchup.breakInto = "poisoned_ketchup_snow"
- regularShinyThingArray = ["iron", "zinc", "tin", "nickel", "silver", "aluminum", "lead", "tungsten", "brass", "bronze", "sterling", "steel", "white_gold", "blue_gold", "rose_gold", "red_gold", "solder", "gold", "pyrite", "mythril", "mithril_mythril_alloy", "titanium", "ilitium", "mithril", "beryllium", "boron", "ruthenium", "rhodium", "palladium", "rhenium", "osmium", "iridium", "platinum", "frozen_mercury", "lithium", "niobium", "ketchup_metal", "ketchup_gold", "tungstensteel", "densinium", "mithril", "signalum", "laetium"]
+ regularShinyThingArray = ["iron", "zinc", "tin", "nickel", "silver", "aluminum", "lead", "tungsten", "brass", "bronze", "sterling", "steel", "white_gold", "blue_gold", "rose_gold", "red_gold", "solder", "gold", "pyrite", "mythril", "mithril_mythril_alloy", "titanium", "ilitium", "mithril", "beryllium", "boron", "ruthenium", "rhodium", "palladium", "rhenium", "osmium", "iridium", "platinum", "frozen_mercury", "lithium", "niobium", "ketchup_metal", "ketchup_gold", "tungstensteel", "densinium", "mithril", "signalum", "laetium", "kurshunjukium", "zirconium", "jinsoulite"];
elements.nitrogen_snow = {
color: "#efefef",
@@ -19654,23 +19750,26 @@ Pixel size (rendering only): (Use if the save looks cut o
runAfterLoad(function() {
for(i = 0; i < regularShinyThingArray.length; i++) {
var thing = regularShinyThingArray[i];
- if(elements[thing]) {
- elements[`${thing}_scrap`] = {
- color: elements[thing].color,
- behavior: behaviors.POWDER,
- tempHigh: elements[thing].tempHigh,
- stateHigh: thing,
- category: "powders",
- hidden: true,
- density: elements[thing].density * 0.09,
- conduct: elements[thing].conduct * 0.4,
- movable: true,
+ if(typeof(elements[thing]) == "object") {
+ if(typeof(elements[thing]?.breakInto) == "undefined") {
+ elements[`${thing}_scrap`] = {
+ color: elements[thing].color,
+ behavior: behaviors.POWDER,
+ tempHigh: elements[thing].tempHigh,
+ stateHigh: thing,
+ category: "powders",
+ hidden: true,
+ density: elements[thing].density * 0.09,
+ conduct: elements[thing].conduct * 0.4,
+ movable: true,
+ };
+ if(elements[thing].reactions) {
+ elements[`${thing}_scrap`].reactions = elements[thing].reactions;
+ };
+ elements[thing].breakInto = `${thing}_scrap`;
};
- if(elements[thing].reactions) {
- elements[`${thing}_scrap`].reactions = elements[thing].reactions;
- };
- elements[thing].breakInto = `${thing}_scrap`;
- };
+ elements[thing].cutInto = elements[thing].breakInto
+ }
};
elements.acid.ignore.push("densinium_scrap")
@@ -40891,6 +40990,7 @@ Make sure to save your command in a file if you want to add this preset again.`
state: "solid",
hardness: 0.2,
breakInto: "sawdust",
+ cutInto: ["wood_plank","wood_plank","wood_plank","wood_plank","wood_plank","wood_plank","sawdust"]
};
elements.hanging_concrete = {
@@ -43858,7 +43958,10 @@ maxPixels (default 1000): Maximum amount of pixels/changes (if xSpacing and ySpa
behavior: behaviors.WALL,
maxColorOffset: 0
};
-
+} catch (error) {
+ alert(`Load failed (try reloading)\nError: ${error.stack}`);
+ console.error(error)
+};
} else {
var nonexistentMods = dependencies.filter(function(modPath) { return !(enabledMods.includes(modPath)) });
nonexistentMods.forEach(function(modPath) {
From bf6880a7811386c1f61476401bed8b88df00c9f5 Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 17:26:41 -0500
Subject: [PATCH 35/39] dep upd8
---
mods/a_mod_by_alice.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index a2299180..7981ebcb 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -1,5 +1,5 @@
var modName = "mods/../a_mod_by_alice.js" //can't do "alice's mod" because the apostrophe will fuck up code, be too confusing, or both
-var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/CrashTestDummy.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, and Sightnado
+var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/CrashTestDummy.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js", "mods/aChefsDream.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, Sightnado, and sqeč
var dependencyExistence = dependencies.map(x => enabledMods.includes(x));
var allDependenciesExist = dependencyExistence.reduce(function(a,b) { return a && b });
//console.log(allDependenciesExist);
From 13c6aa79aa4bb443a917fae049ababcf84ed8c1f Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 17:32:01 -0500
Subject: [PATCH 36/39] red burning is now a setting
---
mods/a_mod_by_alice.js | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index 7981ebcb..624c9b92 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -4710,7 +4710,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
};
}
}
- if (pixel.burning && view !== 2) { // Yellow glow on charge
+ if (pixel.burning && settings.burnOverlay && view !== 2) { // Red glow on burn
if (!elements[pixel.element].colorOn) {
ctx.fillStyle = "rgba(255,0,0,0.5)";
switch(mode) {
@@ -4856,6 +4856,28 @@ color1 and color2 spread through striped paint like dye does with itself. col
//console.log(lastSetting);
lastSetting.setAttribute("style","padding-bottom:0"); //remove padding from last setting;
+ var redBurnSettingSpan = document.createElement("span");
+ redBurnSettingSpan.setAttribute("setting","burnOverlay");
+ redBurnSettingSpan.setAttribute("class","setting-span");
+ redBurnSettingSpan.textContent = "Red overlay on burning pixels ";
+ var settingDropdown = document.createElement("select");
+ settingDropdown.setAttribute("onchange","settings.burnOverlay = (this.value === 'true'); saveSettings();");
+ var options = {
+ "false": "Disabled",
+ "true": "Enabled"
+ };
+ for(value in options) {
+ var newOption = document.createElement("option");
+ if(value == "0") {
+ newOption.setAttribute("selected","");
+ };
+ newOption.setAttribute("value",value);
+ newOption.innerText = options[value];
+ settingDropdown.appendChild(newOption);
+ };
+ redBurnSettingSpan.appendChild(settingDropdown);
+ settingsMenu.appendChild(redBurnSettingSpan);
+
console.log(everyTick(function() {
if(paused) { return };
for(var propName in specialProperties) {
@@ -15418,7 +15440,6 @@ Pixel size (rendering only): (Use if the save looks cut o
var lastSetting = settingNodes[settingNodes.length - 1];
//console.log(lastSetting);
//console.log(lastSetting.getAttribute("style"));
- lastSetting.removeAttribute("style"); //restore padding for worldgen setting;
//console.log(lastSetting.getAttribute("style"));
//Shape setting
From ff8e8b934d845d6d85086d945a8f463b1696cdfd Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 17:46:16 -0500
Subject: [PATCH 37/39] defineworldgen types now save to localStorage
---
mods/a_mod_by_alice.js | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index 624c9b92..553aacc1 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -4078,7 +4078,7 @@ color1 and color2 spread through striped paint like dye does with itself. col
"category": "special",
"breakInto": ["molten_ash","carbon_dioxide","charcoal","electric","magic"],
"tempLow": 8000,
- "stateLow": "plasma_torch",
+ "stateLow": new Array(99).fill("mystic_torch").concat("plasma_torch"), //1 in 100 chance to cool to a plasma torch, to mitigate inexplicable explosive cooling's tendency to cause the torch to spontaneously "downgrade"
"hardness": 0.999
};
elements.mystic_fire.state = "gas";
@@ -26263,6 +26263,16 @@ Pixel size (rendering only): (Use if the save looks cut o
//PRIMITIVE IN-GAME CONSOLE ##
//featuring stars
+ customWorldTypes = {};
+ if(localStorage.getItem("customWorldTypes") == null) {
+ localStorage.setItem("customWorldTypes",JSON.stringify(customWorldTypes))
+ } else {
+ customWorldTypes = JSON.parse(localStorage.getItem("customWorldTypes"));
+ for(var name in customWorldTypes) {
+ worldgentypes[name] = customWorldTypes[name]
+ };
+ rebuildWorldgenList()
+ };
var promptInputNullishes = ["null","none","","n/a"];
var eightSpaces = " ".repeat(8);
@@ -27445,6 +27455,8 @@ height: ${height}
};
};
worldgentypes[presetName] = newPreset;
+ customWorldTypes[presetName] = newPreset;
+ localStorage.setItem("customWorldTypes",JSON.stringify(customWorldTypes));
settings.worldgen = presetName;
rebuildWorldgenList();
From 5eca641bec0b011bbd8c0de03971f122207dc6c3 Mon Sep 17 00:00:00 2001
From: An Orbit <68935009+orbit-loona@users.noreply.github.com>
Date: Thu, 18 Jan 2024 17:53:47 -0500
Subject: [PATCH 38/39] fix rebuildWorldgenList not deleting the existing
entries
---
mods/a_mod_by_alice.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js
index 553aacc1..60007e87 100644
--- a/mods/a_mod_by_alice.js
+++ b/mods/a_mod_by_alice.js
@@ -26687,9 +26687,10 @@ ${eightSpaces}Example full decor definition: bird:0.04:10:#FF0000,#FFFF00,#00FF0
}
function rebuildWorldgenList() { //vanilla code
+ document.getElementById("worldgenselect").innerHTML = 'Disabled ';
for (var key in worldgentypes) {
document.getElementById("worldgenselect").innerHTML += "" + key.replace(/_/g, " ").replace(/\b\w/g, l => l.toUpperCase()) + " ";
- }
+ };
};
function bareClear() {
From f462d03f51a72e5712374244b6b27de4ab5d1e4b Mon Sep 17 00:00:00 2001
From: Chocotoki <157182945+Chocotoki@users.noreply.github.com>
Date: Fri, 19 Jan 2024 20:44:54 -0500
Subject: [PATCH 39/39] Create tokistuff.js
---
mods/tokistuff.js | 3727 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 3727 insertions(+)
create mode 100644 mods/tokistuff.js
diff --git a/mods/tokistuff.js b/mods/tokistuff.js
new file mode 100644
index 00000000..fd5a9841
--- /dev/null
+++ b/mods/tokistuff.js
@@ -0,0 +1,3727 @@
+elements.cooked_rice = {
+ viscosity: 1000,
+ tempMin: 20,
+ stateMin: "rice",
+ tempHigh: 500,
+ stateHigh: ["ash", "charcoal"],
+ density: 699,
+ color: "#c2b6b6",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "water": { elem1: null, elem2: "dirty_water" }
+ }
+};
+
+elements.rice = {
+ breakInto: "flour",
+ viscosity: 10000,
+ isFood: true,
+ density: 696,
+ tempHigh: 232,
+ stateHigh: "cooked_rice",
+ color: "#c8c8c8",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.moth = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#57381a",
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "solid",
+};
+
+elements.cotton_candy = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ density: 1000,
+ color: "#b6c7e3",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "water": { elem1: "sugar", elem2: null },
+ }
+};
+
+elements.cherry_cotton_candy = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ density: 1000,
+ color: "#edd1e6",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "liquid",
+ hidden: true,
+ reactions: {
+ "water": { elem1: "sugar", elem2: null },
+ }
+};
+
+elements.mc_donalds = {
+ tempHigh: 6969,
+ stateHigh: "void",
+ density: 69,
+ color: "#ff0000",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+elements.maple_syrup = {
+ viscosity: 10000,
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#9c6000",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.boiled_egg = {
+ isFood: true,
+ density: 700,
+ breakInto: "yolk",
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#fff9d1",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.dark_oak = {
+ breakInto: "dark_oak_wood",
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#302216",
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+ burn: 5,
+ burnTime: 300,
+};
+
+elements.dark_oak_wood = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#573e28",
+ behavior: behaviors.SUPPORT,
+ category: "land",
+ state: "solid",
+ burn: 5,
+ burnTime: 300,
+};
+
+elements.avocado = {
+ isFood: true,
+ tempHigh: 500,
+ breakInto: "guacamole",
+ stateHigh: "ash",
+ color: "#254a22",
+ behavior: behaviors.SUPPORTPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.guacamole = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#a2e09d",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.watermelon = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ breakInto: "watermelon_flesh",
+ color: "#40993f",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.melon = { //this one is kind of boring ngl it looks like a sponge but its food
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#c4bf1f",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.watermelon_flesh = {
+ hidden: true,
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#ff5d47",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.nachos = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#bd7b26",
+ behavior: behaviors.SUPPORTPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.cherry = {
+ isFood: true,
+ breakInto: "juice",
+ breakIntoColor: "#a60000",
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#ff0f0f",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "cotton_candy": { elem1: null, elem2: "cherry_cotton_candy", tempMin: 0 },
+};
+
+elements.green_berries = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#5ce344",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.meth = {
+ hardness: 1,
+ tempHigh: 500,
+ stateHigh: "melted_meth",
+ color: "#0affef",
+ behavior: behaviors.POWDER,
+ category: "joke",
+ state: "liquid"
+};
+
+elements.garlic = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#ffebbd",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "bread": { elem1: null, elem2: "garlic_bread" },
+ }
+};
+
+elements.garlic_bread = {
+ isFood: true,
+ breakInto: "crumb",
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#db9b56", "#288a0c", "#db9b56", "#db9b56", "#db9b56", "#db9b56"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.kiwi = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#0f4700", "#210a00"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.lemon = {
+ breakInto: "lemonade",
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#c9c22a",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "juice": {elem1: "lemonade", elem2: null},
+ }
+};
+
+elements.lemonade = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#fff41c",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.poop = {
+ hardness: 1,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#331600",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+ reactions: {
+ "piss": { elem1: null, elem2: "bless" },
+ }
+};
+
+elements.marshmallow = {
+ isFood: true,
+ tempHigh: 50,
+ stateHigh: "cooked_marshmallow",
+ color: "#ffe4e3",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.cooked_marshmallow = {
+ hidden: true,
+ isFood: true,
+ tempHigh: 150,
+ stateHigh: "burnt_marshmallow",
+ color: "#d49e9d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.burnt_marshmallow = {
+ hidden: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#1c1212",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.spaghetti = {
+ isFood: true,
+ tempHigh: 90,
+ stateHigh: "cooked_ramen",
+ color: "#fae34d",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.cooked_spaghetti = {
+ hidden: true,
+ density: 800,
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#ada24e",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.cereal = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#ba3425", "#baa31e", "#26ba1e", "#1e9dba", "#6f1eba"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.sushi = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#020802", "#fff0eb", "#ff6524", "#35ab26"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.diamond_ore = {
+ tempHigh: 1000,
+ stateHigh: "ash",
+ breakInto: "diamond",
+ color: ["#525252", "#525252", "#525252", "#525252", "#525252", "#2ba3ff"],
+ behavior: behaviors.WALL,
+ category: "joke",
+ state: "solid",
+};
+
+elements.coca_cola = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#381e13",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.piss = {
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#ffff00",
+ behavior: behaviors.LIQUID,
+ category: "joke",
+ state: "liquid",
+};
+
+elements.pastry = {
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#ba6727",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.melted_meth = {
+ tempHigh: 100000,
+ stateHigh: "beans",
+ color: "#00a2ff",
+ behavior: behaviors.LIQUID,
+ category: "joke",
+ state: "solid",
+};
+
+elements.expired_milk = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#b8c2b4",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "solid",
+ reactions: {
+ "dirty_water": { elem1: "milk", elem2: "expired_milk" },
+ "milk": { elem1: "expired_milk", elem2: "milk" },
+ "water": { elem1: "milk", elem2: "dirty_water" },
+ }
+};
+
+elements.kfc = {
+ tempHigh: 69420,
+ stateHigh: "void",
+ color: "#d16e11",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+elements.wendys = {
+ tempHigh: 69420,
+ stateHigh: "void",
+ color: "#db1e0d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+elements.burger_king = {
+ tempHigh: 69420,
+ stateHigh: "void",
+ color: "#db660d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+elements.pizza_hut = {
+ tempHigh: 69420,
+ stateHigh: "void",
+ color: "#ed3b24",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+elements.dominos = {
+ tempHigh: 69420,
+ stateHigh: "void",
+ color: ["#ed4934", "#3494ed"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+
+elements.vape = {
+ tempHigh: 500999,
+ stateHigh: "beans",
+ color: "#999999",
+ behavior: [
+ "XX|CR:smoke|XX",
+ "CR:smoke|XX|CR:smoke",
+ "XX|CR:smoke|XX",
+ ],
+ category: "joke",
+ state: "solid",
+};
+
+elements.tendon = {
+ temp: 20000,
+ color: ["#1eff00", "#1eff00", "#1eff00", "#acffa1", "#1eff00", "#1eff00", "#1eff00"],
+ behavior: behaviors.DGAS,
+ category: "energy",
+ state: "gas",
+};
+
+elements.plasma.tempHigh = 18000
+elements.plasma.stateHigh = "tendon"
+
+elements.pea = {
+ isFood: true,
+ breakInto: "mashed_pea",
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#3cbf2a",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.mashed_pea = {
+ hidden: true,
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#97f578",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.burnt_beans = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ isFood: true,
+ viscosity: 10000,
+ density: 721,
+ hardness: 1,
+ color: "#1a0d04",
+ category: "food",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+};
+
+elements.chicken = {
+ tempHigh: 60,
+ stateHigh: "chicken_nugget",
+ color: "#cfbab0",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.chicken_nugget = {
+ hidden: true,
+ isFood: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#e0723f",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.cocaine = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#fafafa",
+ behavior: behaviors.POWDER,
+ category: "joke",
+ state: "liquid",
+};
+
+elements.zombie = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#114700",
+ behavior: [
+ "M1%2|M1%2 AND SW%1|M1%2",
+ "M1%2 AND CH:zombie|XX|M1%2 AND CH:zombie",
+ "M1|M1 AND SW%1|M1"
+ ],
+ category: "special",
+ state: "liquid",
+ ignore: ["fire","smoke","antimatter","strange_matter","filler","lattice","wall","ewall","plasma","void","border"]
+};
+
+elements.toothpaste = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#e8e8e8", "#ff0000", "#00b7ff"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.radioactive_grape = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#7d00d1", "#8047d6"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_meat = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#4b5742", "#91564a"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_chocolate = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#404d29", "#4d3429"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_egg = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#93cc87",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_milk = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#9bb895",
+ behavior: behaviors.RADLIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.radioactive_potato = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#6e8544",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_water = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "steam",
+ color: "#baf0aa",
+ behavior: behaviors.RADLIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.radioactive_bread = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#aec74c",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_toast = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#565e38",
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.radioactive_beans = {
+ hidden: true,
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: ["#34541f", "#994926"],
+ behavior: behaviors.RADPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.shampoo = {
+ viscosity: 1000,
+ density: 500,
+ hardness: 1,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#ccd3e0",
+ behavior: behaviors.FOAM,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.salami = {
+ density: 1000,
+ hardness: 1,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#de3c1d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.moon = {
+ density: 3344,
+ hardness: 1,
+ tempHigh: 10000,
+ stateHigh: "beans",
+ color: "#bababa",
+ behavior: behaviors.WALL,
+ category: "special",
+ state: "solid",
+};
+
+elements.dragon_fruit = {
+ breakInto: "mashed_dragon_fruit",
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#ff006f", "#ff006f", "#ff006f", "#036300", "#ff006f", "#ff006f", "#ff006f", "#ff006f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.mashed_dragon_fruit = {
+ hidden: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: ["#e3e3e3", "#e3e3e3", "#0f0f0f", "#e3e3e3", "#e3e3e3", "#e3e3e3"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.chantilly = {
+ hardness: 1,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#cccccc",
+ behavior: behaviors.FOAM,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.fart = {
+ temp: Infinity,
+ color: "#2e4722",
+ behavior: behaviors.DGAS,
+ category: "joke",
+ state: "gas",
+};
+
+elements.chips = {
+ density: 600,
+ hidden: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#ff9a1f",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.fries = {
+ density: 600,
+ hidden: true,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#d6ab0f",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.mayo = {
+ color: "#fcffbd",
+ behavior: behaviors.LIQUID,
+ reactions: {
+ "glue": { elem2:null, chance:0.01 },
+ "oil": { elem2:null, chance:0.01 },
+ "sap": { elem2:null, chance:0.01 },
+ },
+ viscosity: 3491,
+ tempHigh: 100.6,
+ stateHigh: ["steam","carbon_dioxide","methane"],
+ category:"liquids",
+ state: "liquid",
+ density: 910,
+ stain: 0.01,
+ isFood: true
+};
+
+elements.barbecue_sauce = {
+ viscosity: 3000,
+ density: 1800,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#420400",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.fried_water = {
+ hidden: true,
+ temp: 50,
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#a3591c",
+ behavior: behaviors.POWDER,
+ category: "joke",
+ state: "liquid",
+};
+
+elements.solid_water = {
+ hidden: true,
+ viscosity: 10000,
+ tempHigh: 100,
+ stateHigh: "fried_water",
+ color: "#dfe9f5",
+ behavior: behaviors.LIQUID,
+ category: "joke",
+ state: "liquid",
+};
+
+elements.vanilla = {
+ hardness: 1,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#e3e3e3",
+ behavior: behaviors.FOAM,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "cream": { elem1: null, elem2: "vanilla_cream" },
+ "ice_cream": { elem1: null, elem2: "vanilla_ice_cream" },
+ "yolk": { elem1: null, elem2: "vanilla_pudding" },
+ }
+};
+
+elements.vanilla_cream = {
+ hardness: 1,
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#d6d6d6",
+ behavior: behaviors.FOAM,
+ category: "food",
+ state: "liquid",
+};
+
+elements.vanilla_ice_cream = {
+ hardness: 1,
+ hidden: true,
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#f7f7f7",
+ behavior: behaviors.FOAM,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "chocolate": { elem1: null, elem2: "chocolate_vanilla_ice_cream", tempMin: 0 },
+ "melted_chocolate": { elem1: null, elem2: "chocolate_vanilla_ice_cream", tempMin: 0 },
+ }
+};
+
+elements.chocolate_vanilla_ice_cream = {
+ hardness: 1,
+ hidden: true,
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: ["#dbdbdb", "#915936"],
+ behavior: behaviors.FOAM,
+ category: "food",
+ state: "liquid",
+};
+
+elements.vanilla_pudding = {
+ hardness: 1,
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#d4c4ba",
+ behavior: behaviors.FOAM,
+ category: "food",
+ state: "liquid",
+};
+
+elements.cinnamon = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#3d1409",
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "liquid",
+};
+
+elements.porridge = {
+ temp: 30,
+ viscosity: 3000,
+ density: 500,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#b8a254",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.beet = {
+ tempHigh: 400,
+ stateHigh: "ash",
+ color: "#5d0678",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.chocolate_egg = {
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#805e2e",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.chocolate_grape = {
+ hidden: true,
+ viscosity: 10000,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: ["#9e3475", "#6e4d36"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.sprinkles = {
+ tempHigh: 200,
+ stateHigh: "ash",
+ cooldown: 0.2,
+ color: ["#ff5e5e", "#ffea5e", "#73ff5e", "#5efcff", "#995eff", "#ff5ed1"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "powders",
+ state: "liquid",
+ maxSize: 1,
+};
+
+elements.incinerator = {
+ color: "#bf4b7d",
+ behavior: [
+ "XX|HT:10000|XX",
+ "HT:10000|XX|HT:10000",
+ "XX|HT:10000|XX",
+ ],
+ category: "machines",
+ state: "solid",
+ insulate: true,
+ reactions: {
+ "fart": { elem1: null, elem2: "ohio" },
+ }
+};
+
+elements.cocoa = {
+ breakInto: "cocoa_seeds",
+ tempHigh: 300,
+ stateHigh: "ash",
+ color: "#912f1d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "milk": { elem1: null, elem2:"hot_chocolate" tempMin: 70} },
+};
+
+elements.cocoa_seeds = {
+ breakInto: "chocolate",
+ hidden: true,
+ tempHigh: 80,
+ stateHigh: "melted_chocolate",
+ color: "#cfc7ab",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.pineapple = {
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#ccbe3b",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.broccoli = {
+ viscosity: 100000,
+ tempHigh: 300,
+ stateHigh: "ash",
+ color: "#073804",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.pepperoni = {
+ tempHigh: 300,
+ stateHigh: "ash",
+ color: "#8f2e11",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.pancake = {
+ viscosity: 100000,
+ tempHigh: 300,
+ stateHigh: "ash",
+ color: "#073804",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+};
+
+elements.blueberry = {
+ density: 626,
+ viscosity: 10000,
+ breakInto: "juice",
+ breakIntoColor: "#0e2773",
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#192f73",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.cucumber = {
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#235214",
+ behavior: behaviors.SUPPORT,
+ category: "food",
+ state: "solid",
+};
+
+elements.olive = {
+ viscosity: 10000,
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#0d0806",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.mushroom = {
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#96847d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.onion = {
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#460063",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.bacon = {
+ tempHigh: 90,
+ stateHigh: "cooked_bacon",
+ color: ["#a1392d", "#edb4ad"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.cooked_bacon = {
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "ash",
+ color: ["#70211d", "#783b38"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.strawberry = {
+ breakInto: "strawberry_juice",
+ viscosity: 10000,
+ density: 754,
+ tempHigh: 200,
+ stateHigh: "steam",
+ color: "#db564d",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+
+};
+
+elements.beer = {
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#b39329",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.strawberry_juice = {
+ viscosity: 3000,
+ density: 500,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#ff9ec2",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ reactions: {
+ "milk": { elem1: null, elem2: "strawberry_milk" },
+};
+
+elements.cardboard = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#7d4725",
+ behavior: behaviors.SUPPORT,
+ category: "land",
+ state: "solid",
+ burn: 5,
+ burnTime: 200,
+};
+
+elements.carrot = {
+ tempHigh: 500,
+ stateHigh: "ash",
+ color: "#f06c0e",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.strawberry_milk = {
+ viscosity: 3000,
+ density: 500,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#ffc4da",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.wine = {
+ tempHigh: 400,
+ stateHigh: "steam",
+ color: "#2e0206",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.plasma_bomb = {
+ tempHigh: 1000,
+ stateHigh: "ash",
+ color: "#452f4a",
+ behavior: [
+ "XX|EX:20>plasma|XX",
+ "XX|XX|XX",
+ "M2|M1 AND EX:20>plasma|M2"
+ ],
+ category: "weapons",
+ state: "liquid",
+},
+
+elements.dark_energy = {
+ hardness: 1,
+ tempHigh: 1000000,
+ stateHigh: "void",
+ color: "#1b161c",
+ behavior: [
+ "M1%10|M1%10 AND SW%5|M1%10",
+ "M1%10 AND CH:dark_energy|XX|M1%10 AND CH:dark_energy",
+ "M1|M1 AND SW%5|M1"
+ ],
+ category: "special",
+ state: "gas",
+};
+
+elements.ohio = {
+ hidden: true,
+ hardness: 1,
+ hidden: true,
+ color: "#40174d",
+ behavior: [
+ "XX|XX|XX",
+ "XX|EX:800>plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,molten_iron,molten_uranium,molten_lead,oxygen,molten_sodium,sulfur_gas,neon,chlorine,molten_calcium,molten_nickel,molten_copper,molten_zinc,gallium_gas AND CH:void|XX",
+ "XX|XX|XX",
+ ],
+ temp: 99999999700,
+ category: "joke",
+ state: "gas",
+ desc: "use at own risk",
+};
+
+elements.papaya = {
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#e38934",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.caviar = {
+ viscosity: 10000,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: "#1f1b18",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.peeper = {
+ hidden: true,
+ density: 1000,
+ burn: 0.00001,
+ burnTime: 9999,
+ ignoreAir: true,
+ burning: true,
+ hardness: 1,
+ tempHigh: 5000000000000000000,
+ stateHigh: "ash",
+ color: "#9c1208",
+ behavior: behaviors.STURDYPOWDER,
+ category: "joke",
+ state: "solid",
+};
+
+elements.robux = {
+ hidden: true,
+ viscosity: 10000,
+ tempHigh: 500,
+ stateHigh: "fire",
+ color: ["#4a8741", "#4bb53c"],
+ behavior: behaviors.LIQUID,
+ category: "joke",
+ state: "liquid",
+};
+
+elements.ruby = {
+ tempHigh: 2000,
+ stateHigh: "magma",
+ color: ["#d6091a", "#e83544"],
+ behavior: behaviors.WALL,
+ category: "solids",
+ state: "solid",
+};
+
+elements.mosquito = {
+ tempHigh: 2000,
+ stateHigh: "ash",
+ color: "#2b2421",
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "liquid",
+};
+
+elements.bug_spray = {
+ tempHigh: 2000,
+ stateHigh: "steam",
+ color: "#c9d1cb",
+ behavior: behaviors.DGAS,
+ category: "gases",
+ state: "gas",
+ reactions: {
+ "mosquito": { elem1: null, elem2: null },
+ "ant": { elem1: null, elem2: null },
+ "fly": { elem1: null, elem2: null },
+ "stink_bug": { elem1: null, elem2: null },
+ }
+};
+
+elements.heavy_water = {
+ tempLow: 0,
+ stateLow: "ice",
+ tempHigh: 150,
+ stateHigh: "steam",
+ color: "#447ecf",
+ behavior: behaviors.LIQUID_OLD,
+ category: "liquids",
+ state: "liquid",
+};
+
+elements.blood_orange = {
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: ["ash", "steam"],
+ color: ["#f06c0e", "#bd1000"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+};
+
+elements.orange = {
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#f06c0e",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "blood": { elem1: null, elem2: "blood_orange", chance: 0.01 },
+ }
+};
+
+elements.cranberry = {
+ viscosity: 10000,
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#ad2a1d",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+};
+
+elements.yoyleberries = {
+ desc: "who the fuck requested yoylecake?",
+ viscosity: 10000,
+ hidden: true,
+ tempHigh: 300,
+ stateHigh: "steam",
+ color: "#630094",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "liquid",
+ reactions: {
+ "batter": { elem1: null, elem2: "yoylecake" },
+ }
+};
+
+elements.yoylecake = {
+ hidden: true,
+ tempHigh: 500,
+ stateHigh: "steam",
+ color: ["#9404db", "#28b82b"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ 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) {
+ var x = pixel.x;
+ for (var y = pixel.y; y < height; y++) {
+ if (outOfBounds(x, y)) {
+ break;
+ }
+ if (isEmpty(x, y)) {
+ if (Math.random() > 0.05) { continue }
+ createPixel("flash", x, y);
+ pixelMap[x][y].color = "#0cdaed";
+ pixelMap[x][y].temp = 0;
+ }
+ else {
+ if (elements[pixelMap[x][y].element].isGas) { continue }
+ if (elements[pixelMap[x][y].element].id === elements.heat_ray.id) { break }
+ pixelMap[x][y].temp += -10;
+ pixelTempCheck(pixelMap[x][y]);
+ break;
+ }
+ }
+ deletePixel(pixel.x, pixel.y);
+ },
+ temp: 0,
+ category: "energy",
+ state: "gas",
+ excludeRandom: true,
+ noMix: true
+};
+
+elements.flood_disaster = {
+ color: "#5397c2",
+ behavior: [
+ "XX|XX|XX",
+ "XX|EX:10>flood_disaster,water,water,water,water,water,water,water,water,water,water,water,water%25 AND DL%10|XX",
+ "XX|XX|XX",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ hidden: true,
+ excludeRandom: true,
+ maxSize: 1,
+ cooldown: defaultCooldown
+};
+
+elements.uranium_ice_cream = {
+ viscosity: 10000,
+ tempHigh: 150,
+ stateHigh: "steam",
+ color: ["#cee6cc", "#1bab11", "#305e2d", "#5a7059"],
+ behavior: [
+ "XX|CR:radiation%2|XX",
+ "M2|XX|M2",
+ "M2|M1|M2",
+ ],
+ category: "food",
+ state: "liquid",
+};
+
+elements.silver_coin = {
+ tempHigh: 1000,
+ stateHigh: "molten_silver",
+ color: ["#ababab", "#dedede"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+ state: "solid",
+};
+
+elements.max_graphics_in_roblox = {
+ color: "#238fe8",
+ behavior: [
+ "XX|XX|XX",
+ "XX|EX:800000000000>plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,plasma,molten_iron,molten_uranium,molten_lead,oxygen,molten_sodium,sulfur_gas,neon,chlorine,molten_calcium,molten_nickel,molten_copper,molten_zinc,gallium_gas AND CH:void|XX",
+ "XX|XX|XX",
+ ],
+ temp: 99999999700,
+ category: "joke",
+ state: "gas",
+ density: 1000,
+ hardness: 1,
+ hidden: true,
+ excludeRandom: true,
+ maxSize: 1,
+ noMix: true,
+ desc: "ok now ACTUALLY use it at your own risk IM NOT KIDDING! THIS CAN FUCKING CRASH YOUR GAME"
+};
+
+elements.incinerate.category = "tools",
+elements.cook.category = "tools",
+elements.room_temp.category = "tools",
+
+elements.beans.tempHigh = 349,
+elements.beans.stateHigh = "burnt_beans"
+
+if (!elements.radiation.reactions) elements.egg.reactions = {};
+elements.radiation.reactions.meat = { elem1: null, elem2: "radioactive_meat" },
+elements.radiation.reactions.grape = { elem1: null, elem2: "radioactive_grape" },
+elements.radiation.reactions.egg = { elem1: null, elem2: "radioactive_egg" },
+elements.radiation.reactions.potato = { elem1: null, elem2: "radioactive_potato" },
+elements.radiation.reactions.water = { elem1: null, elem2: "radioactive_water" },
+elements.radiation.reactions.chocolate = { elem1: null, elem2: "radioactive_chocolate" },
+elements.radiation.reactions.milk = { elem1: null, elem2: "radioactive_milk" },
+elements.radiation.reactions.bread = { elem1: null, elem2: "radioactive_bread" },
+elements.radiation.reactions.toast = { elem1: null, elem2: "radioactive_toast" },
+elements.radiation.reactions.beans = { elem1: null, elem2: "radioactive_beans" }
+
+if (!elements.egg.reactions) elements.egg.reactions = {};
+elements.egg.reactions.water = {elem1: "boiled_egg", tempMin: 100},
+elements.egg.reactions.steam = {elem1: "boiled_egg", tempMin: 100},
+elements.egg.reactions.melted_chocolate = {elem1: "chocolate_egg"},
+elements.egg.reactions.chocolate = {elem1: "chocolate_egg", chance: 0.1}
+
+if (!elements.potato.reactions) elements.potato.reactions = {};
+elements.potato.reactions.water = {elem1: "fries", tempMin: 100, chance:50},
+elements.potato.reactions.steam = {elem1: "fries", tempMin: 100, chance:50},
+elements.potato.reactions.water = {elem1: "chips", tempMin: 100, chance:50},
+elements.potato.reactions.steam = {elem1: "fries", tempMin: 100, chance:50}
+
+if (!elements.water.reactions) elements.water.reactions = {};
+elements.water.reactions.cocaine = { elem1: "solid_water", elem2: null }
+elements.water.reactions.seasoning = { elem1: "season_water", elem2: null }
+
+if (!elements.paper.reactions) elements.paper.reactions = {};
+elements.paper.reactions.bless = { elem1: "robux", elem2: null, chance: 0.001 }
+
+if (!elements.uranium.reactions) elements.uranium.reactions = {};
+elements.uranium.reactions.ice_cream = {elem1: "uranium_ice_cream", elem2: null},
+elements.uranium.reactions.cream = {elem1: "uranium_ice_cream", elem2: null}
+
+if (!elements.dough.reactions) elements.dough.reactions = {};
+elements.dough.reactions.yolk = {elem1: null, elem2: "spaghetti", tempMin: 25}
+
+elements.silver.breakInto = "silver_coin"
+/*
+Created by SquareScreamYT and RealerRaddler
+Thanks to Alice, nousernamefound and Fioushemastor for helping :)
+
+v1.1
+
+Changelog (v1.0)
+ - added chickens
+ - lays chicken eggs
+ - added chicks
+ - hatches from chicken eggs
+ - grows into chickens
+ - added chicken eggs
+ - added frozen chicken eggs
+ - added hard boiled eggs
+ - made by putting chicken eggs in hot water
+ - added soup
+ - made from broth and water
+ - added noodles
+ - made by putting batter in hot water
+ - added chicken meat
+ - raw chicken meat
+ - cooked chicken meat
+ - battered raw chicken
+ - made by mixing raw chicken and batter
+ - raw chicken nuggets
+ - made by mixing battered raw chicken with crumbs
+ - (cooked) chicken nuggets
+ - added crushed worm
+ - chicken food
+ - made by smashing worms or mixing worms with rocks
+ - added frozen crushed worms
+ - added fried potato
+ - made by putting potatoes in hot cooking oil
+ - added smoked chicken
+ - made by putting raw chicken with smoke
+ - added boiled chicken
+ - made by putting raw chicken in hot water
+ - added fried chicken
+ - made by putting raw chicken in hot cooking oil
+ - added steamed chicken
+ - made by putting raw chicken with steam
+ - added olives
+ - added olives
+ - olives can be smashed into cooking oil
+ - added olive wood
+ - added olive branches
+ - added olive leaves
+ - added cooking oil
+
+
+
+
+Changelog (v1.1)
+ - added apples and related stuff
+ - apples
+ - applewood
+ - apple branches
+ - apple leaves
+ - apple juice
+ - made by smashing apples
+ - apple seeds
+ - apple slices
+ - made by cutting apples
+ - apple jam
+ - made by putting sugar in apple juice
+ - added knife tool
+ - cuts, peels, etc. pixels
+ - readded potato skin and peeled potato
+ - changed fried potato recipe from potato to skinned potato\
+ - added pepper
+ - added cake
+ - made by mixing baked batter and cream
+ - added icing sugar
+ - made by smashing sugar
+ - added icing
+ - made by shift-mixing icing sugar
+ - noodles description
+ - bug fix (freezing crushed worms makes them alive)
+*/
+
+/*
+elements.test = {
+ //other needed properties
+ cutInto: "elem"
+}
+*/
+
+elements.knife = {
+ color: "#adb5bd",
+ // other needed properties
+ tool: (pixel) => {
+ //store cutInto as a variable for legibility
+ var cutInto = elements[pixel.element].cutInto;
+ //if there’s no cutInto, it should equal undefined, which is falsey and !undefined = true
+ if (!cutInto) { return };
+ //if cutInto is an array, randomly pick one of its elements
+ if(cutInto instanceof Array) { cutInto = cutInto[Math.floor(Math.random() * cutInto.length)] };
+ //change pixel into the (chosen) element
+ changePixel(pixel, cutInto)
+ },
+ category:"tools",
+}
+
+elements.chicken = {
+ color: ["#c29046", "#f5d271", "#d4bd7d"],
+ behavior: [
+ "M2%1|M2%2|M2%1",
+ "M2%10|XX|M2%10",
+ "XX|M1%33|XX",
+ ],
+ category:"life",
+ state: "solid",
+ reactions: {
+ "meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "chicken_nugget": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "grass": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "worm": { elem2: "crushed_worm", chance:0.3},
+ "cooked_meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "fish": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "rat": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "snail": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "frog": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "slug": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "grape": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "wheat_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "flower_seed": { elem2:null, chance:0.32, func:behaviors.FEEDPIXEL },
+ "corn_seed": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "corn": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "potato_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "grass_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "nut": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "dead_bug": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "bee": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "ant": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "flea": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "termite": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "lichen": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.3 },
+ "mercury": { elem1:"rotten_meat", chance:0.1 },
+ "bleach": { elem1:"rotten_meat", chance:0.1 },
+ "infection": { elem1:"rotten_meat", chance:0.025 },
+ "uranium": { elem1:"rotten_meat", chance:0.1 },
+ "cyanide": { elem1:"rotten_meat", chance:0.1 },
+ "chlorine": { elem1:"meat", chance:0.1 },
+ "dirty_water": { elem1:"rotten_meat", chance:0.0001 },
+ },
+ egg: "chicken_egg",
+ foodNeed: 10,
+ temp: 40,
+ tempHigh: 75,
+ stateHigh: "cooked_chicken",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ breakInto: ["feather", "raw_chicken"],
+ burn:85,
+ burnTime:450,
+ state: "solid",
+ density: 1117,
+ conduct: 0.3,
+};
+
+elements.chicken_egg = {
+ color: ["#e0d3ab","#d9cdb5"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|FX%5 AND CH:chick%0.1|XX",
+ "M2%30|M1|M2%30",
+ ],
+ category: "food",
+ state: "solid",
+ temp: 30,
+ tempLow: -18,
+ stateLow: "frozen_chicken_egg",
+ breakInto: ["yolk"],
+ tempHigh: 500,
+ stateHigh: ["calcium", "ash"],
+ burn:50,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ reactions: {
+ "water": { elem1:null, elem2:"hard_boiled_egg", chance:10, tempMin:80 }
+ }
+};
+
+elements.frozen_chicken_egg = {
+ color: ["#e0d3cf","#d9cdd3"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ temp: -20,
+ tempHigh: 10,
+ stateHigh: "chicken_egg",
+ breakInto: ["calcium", "hard_yolk"],
+ burn:50,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ hidden: true,
+};
+
+elements.hard_boiled_egg = {
+ color: ["#e0d3ab","#d9cdb5","#e4d4b4","#f3f3ef"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 1000,
+ stateHigh: ["ash", "smoke"],
+ density: 820.33,
+ isFood: true,
+ hidden: true,
+};
+
+elements.chick = {
+ color: ["#ffdf85", "#ffef5c"],
+ behavior: [
+ "M2%1|M2%2|M2%1",
+ "M2%10|FX%5 AND CH:chicken%0.1|M2%10",
+ "XX|M1%33|XX",
+ ],
+ category: "life",
+ state: "solid",
+ egg: "chicken_egg",
+ foodNeed: 20,
+ temp: 40,
+ tempHigh: 75,
+ stateHigh: "cooked_meat",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ breakInto: "blood",
+ burn:85,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+ reactions: {
+ "crushed_worm": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL},
+ "meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "chicken_nugget": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "grass": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "worm": { elem2: "crushed_worm", chance:0.3},
+ "cooked_meat": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "fish": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "rat": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "snail": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "frog": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "slug": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "grape": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "wheat_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "flower_seed": { elem2:null, chance:0.32, func:behaviors.FEEDPIXEL },
+ "corn_seed": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "corn": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "potato_seed": { elem2:null, chance:0.4, func:behaviors.FEEDPIXEL },
+ "grass_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin_seed": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "pumpkin": { elem2:null, chance:0.1, func:behaviors.FEEDPIXEL },
+ "nut": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "dead_bug": { elem2:null, chance:0.35, func:behaviors.FEEDPIXEL },
+ "bee": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "ant": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "flea": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "termite": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "lichen": { elem2:null, chance:0.2, func:behaviors.FEEDPIXEL },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.3 },
+ "mercury": { elem1:"rotten_meat", chance:0.1 },
+ "bleach": { elem1:"rotten_meat", chance:0.1 },
+ "infection": { elem1:"rotten_meat", chance:0.025 },
+ "uranium": { elem1:"rotten_meat", chance:0.1 },
+ "cyanide": { elem1:"rotten_meat", chance:0.1 },
+ "chlorine": { elem1:"meat", chance:0.1 },
+ "dirty_water": { elem1:"rotten_meat", chance:0.0001 },
+ }
+};
+
+elements.soup = {
+ color: "#fbd189",
+ behavior: behaviors.LIQUID,
+ tempHigh: 130,
+ stateHigh: ["steam","steam","steam","fragrance"],
+ tempLow: 0,
+ category: "food",
+ state: "liquid",
+ density: 1052,
+ conduct: 0.03,
+ stain: -0.01,
+ isFood: true,
+ hidden: true,
+};
+
+if (!elements.broth.reactions) elements.broth.reactions = {};
+elements.broth.reactions.water = { elem1: "soup", elem2: "soup" }
+
+elements.noodles = {
+ desc: "whatever noodles",
+ color: ["#F3BA4F", "#F7D161"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ temp: 30,
+ breakInto: ["crumb"],
+ tempHigh: 130,
+ stateHigh: ["toast"],
+ burn:50,
+ burnTime:450,
+ state: "solid",
+ density: 900,
+ conduct: 0.1,
+};
+
+elements.season_water = {
+ color: "#735a47",
+ behavior: behaviors.LIQUID,
+ tempHigh: 130,
+ stateHigh: ["steam","steam","steam","fragrance"],
+ tempLow: 0,
+ category: "food",
+ state: "liquid",
+ density: 1052,
+ conduct: 0.03,
+ stain: -0.01,
+ isFood: true,
+ hidden: true,
+};
+
+if (!elements.batter.reactions) elements.batter.reactions = {};
+elements.batter.reactions.water = {elem2: "noodles", tempMin: 70}
+elements.batter.reactions.sugar = {elem2: "pancake", tempMin: 70}
+
+elements.battered_raw_chicken = {
+ color: ["#eacfa9", "#ecd2af"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp:25,
+ tempHigh: 600,
+ stateHigh: ["ash","smoke"],
+ reactions: {
+ "crumb": { elem1: "raw_chicken_nugget", elem2: null },
+ },
+ hidden: true,
+};
+
+elements.steamed_chicken = {
+ color:["#cfba8f", "#d2b788"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp:50,
+ tempHigh: 600,
+ stateHigh: ["ash","smoke"],
+ isFood: true,
+ hidden: true,
+}
+
+elements.smoked_chicken = {
+ color:["#AF4523", "#AC481F"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp:55,
+ tempHigh: 600,
+ stateHigh: ["ash","smoke"],
+ isFood: true,
+ hidden: true,
+}
+
+elements.crushed_worm = {
+ color: ["#e56932", "#c0714e"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 20,
+ tempHigh: 50,
+ stateHigh: ["ash", "smoke"],
+ tempLow: -4,
+ stateLow: "frozen_crushed_worm",
+ density: 200.33,
+ isFood: true,
+ hidden: true,
+};
+
+elements.worm.reactions.rock = { elem1: "crushed_worm" }
+elements.worm.breakInto = "crushed_worm"
+
+elements.frozen_crushed_worm = {
+ color: ["#2fcbae", "#3edabd", "#b2d5d9"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: -4,
+ tempHigh: 20,
+ stateHigh: "crushed_worm",
+ density: 200.33,
+ isFood: false,
+ hidden: true,
+};
+
+elements.cooked_chicken = {
+ color: ["#c17c20", "#ebad2b", "#f7b846"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 40,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+};
+
+elements.raw_chicken = {
+ color: ["#dfc8bd", "#e2cdc0", "#b9a195"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ burnInto: "cook_chicken",
+ temp:25,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ reactions: {
+ "batter": { elem1: "battered_raw_chicken", elem2: null },
+ "smoke": {elem1: "smoked_chicken"},
+ "steam": {elem1: "steamed_chicken"},
+ "water": {elem1: "boiled_chicken", tempMin: 70},
+ "cooking_oil": {elem1: "fried_chicken", tempMin: 70}
+ }
+};
+
+elements.boiled_chicken = {
+ color: ["#F9CC84", "#EDCE89", "#F8CB78"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 65,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+}
+
+elements.fried_chicken = {
+ color: ["#E87D1A", "#E77106", "#E77106"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 90,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+}
+
+elements.raw_chicken_nugget = {
+ color: ["#d6bc7e", "#d2b47a", "#c7a969"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ burnInto: "chicken_nugget",
+ temp:25,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ hidden: true,
+ reactions: {
+ "cooking_oil": {elem1: "chicken_nugget", tempMin: 70}
+ }
+};
+
+elements.chicken_nugget = {
+ color: ["#D77105", "#D77105", "#EB8C2C", "#EB8C2C"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 40,
+ tempHigh: 600,
+ stateHigh: ["ash", "smoke"],
+ tempLow: -20,
+ stateLow: "frozen_chicken_nugget",
+ isFood: true,
+ density: 100,
+ hidden: true,
+};
+
+elements.frozen_chicken_nugget = {
+ color: ["#45a69c", "#73d9cd", "#3f9f95", "#389d8e"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: -20,
+ tempHigh: 40,
+ stateHigh: "chicken_nugget",
+ isFood: false,
+ density: 100,
+ hidden: true,
+};
+
+elements.olive_wood = {
+ color: "#632e1f",
+ 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"],
+}
+elements.olive_branch = {
+ color: "#632e1f",
+ behavior: [
+ "CR:olive_leaves,olive_branch%2|CR:olive_leaves,olive_leaves,olive_leaves,olive_branch%2|CR:olive_leaves,olive_branch%2",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ tempHigh: 100,
+ stateHigh: "olive_wood",
+ tempLow: -30,
+ stateLow: "olive_wood",
+ category: "life",
+ burn: 40,
+ burnTime: 50,
+ burnInto: ["sap","ember","charcoal"],
+ hidden: true,
+ state: "solid",
+ density: 1500,
+ hardness: 0.15,
+ breakInto: ["sap","sawdust"],
+ hidden: true,
+}
+elements.olive_leaves = {
+ color: ["#407603","#376502","#2e5502"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:olive%0.15|XX",
+ ],
+ 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,
+ seed: "olive_seed",
+ hidden: true
+}
+elements.olive = {
+ color: ["#6e8b3d","#7c9d45"],
+ behavior: behaviors.POWDER,
+ 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 },
+ "rock": { elem1:"cooking_oil", elem2:"rock", chance:0.035 },
+ },
+ category:"food",
+ tempHigh: 100,
+ stateHigh: "dead_plant",
+ tempLow: -1.66,
+ stateLow: "frozen_plant",
+ burn:65,
+ burnTime:60,
+ burnInto: "dead_plant",
+ breakInto: "cooking_oil",
+ state: "solid",
+ density: 1050,
+ isFood: false
+}
+
+elements.cooking_oil = {
+ color: "#ffc844",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ tempHigh: 400,
+ stateHigh: "fire",
+ burn: 70,
+ burnTime: 300,
+ burnInto: ["carbon_dioxide","fire"],
+ viscosity: 250,
+ state: "liquid",
+ density: 825,
+ temp: 30,
+ reactions: {
+ "peeled_potato": {elem2: "fried_potato", tempMin: 70}
+ }
+},
+
+elements.pepper = {
+ color: ["#1f190a", "#2b200d", "#362712", "#3b2211"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 20,
+ hidden: true,
+ tempHigh: 250,
+ stateHigh: ["ash", "smoke"],
+}
+
+elements.potato.cutInto = ["peeled_potato","peeled_potato","peeled_potato","potato_skin"]//{elem1: ["potato_skin","peeled_potato"] }
+
+elements.potato_skin = {
+ color: ["#DC8A5A", "#A86C36", "#DC9A59", "#A76B35"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 20,
+ hidden: true,
+ density: 1100,
+ tempHigh: 250,
+ stateHigh: ["ash", "smoke"],
+}
+
+elements.peeled_potato = {
+ color: ["#D6C39F", "#D1C09D", "#D1C09D", "#CDBF9E"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ isFood: true,
+ temp: 20,
+ hidden: true,
+ breakInto: "mashed_potato",
+ tempHigh: 176,
+ stateHigh: "baked_potato",
+ density: 1100,
+ reactions: {
+ "cooking_oil": { elem1: "fried_potato", tempMin: 70 }
+ }
+}
+
+elements.fried_potato = {
+ color: ["#DD7908", "#D57206", "#CA6801", "#D68001"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ temp: 35,
+ hidden: true,
+ tempHigh: 600,
+ density: 1110,
+ stateHigh: ["ash", "smoke"],
+ isFood: true,
+}
+
+elements.applewood = {
+ color: "#632e1f",
+ 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.apple_branch = {
+ color: "#632e1f",
+ behavior: [
+ "CR:apple_leaves,apple_branch%2|CR:apple_leaves,apple_branch%2|CR:apple_leaves,apple_branch%2",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ tempHigh: 100,
+ stateHigh: "applewood",
+ tempLow: -30,
+ stateLow: "applewood",
+ category: "life",
+ burn: 40,
+ burnTime: 50,
+ burnInto: ["sap","ember","charcoal"],
+ hidden: true,
+ state: "solid",
+ density: 1500,
+ hardness: 0.15,
+ breakInto: ["sap","sawdust"],
+}
+elements.apple_leaves = {
+ color: ["#00d404","#0ec911","#109e12"],
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:apple%0.15|XX",
+ ],
+ 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.apple = {
+ color: ["#eb1a1a","#f22c2c","#d62020"],
+ behavior: behaviors.POWDER,
+ 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:"food",
+ tempHigh: 100,
+ stateHigh: "dead_plant",
+ tempLow: -1.66,
+ stateLow: "frozen_plant",
+ burn:65,
+ burnTime:60,
+ burnInto: "dead_plant",
+ breakInto: "apple_juice",
+ cutInto: "apple_slice",
+ state: "solid",
+ density: 1050,
+}
+
+elements.apple_slice = {
+ color: "#f0af37",
+ behavior: behaviors.STURDYPOWDER,
+ category:"food",
+ tempHigh: 100,
+ stateHigh: ["sugar","steam"],
+ burn:65,
+ burnTime:60,
+ burnInto: "dead_plant",
+ breakInto: "apple_juice",
+ state: "solid",
+ density: 1050,
+ hidden: true,
+}
+
+elements.apple_seed = {
+ color: "#854610",
+ tick: function(pixel) {
+ if (isEmpty(pixel.x,pixel.y+1)) {
+ movePixel(pixel,pixel.x,pixel.y+1);
+ }
+ else {
+ 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.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)) {
+ movePixel(pixel,pixel.x,pixel.y-1);
+ createPixel(Math.random() > 0.5 ? "applewood" : "apple_branch",pixel.x,pixel.y+1);
+ }
+ }
+ else if (pixel.age > 1000) {
+ changePixel(pixel,"applewood");
+ }
+ 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: [
+ "XX|XX|XX",
+ "XX|FX%10|XX",
+ "XX|M1|XX",
+ ],
+};
+
+elements.apple_juice = {
+ color: "#ffde55",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ tempHigh: 400,
+ stateHigh: "fire",
+ burn: 70,
+ burnTime: 300,
+ burnInto: ["steam", "smoke"],
+ state: "liquid",
+ density: 825,
+ hidden: true,
+ temp: 30,
+ reactions: {
+ "sugar": { elem1:"apple_jam", elem2:null, chance:0.35 }
+ },
+};
+
+elements.cake = {
+ color: ["#f2e5bf","#e8daba"],
+ behavior: behaviors.STURDYPOWDER,
+ tempHigh: 550,
+ stateHigh: "ash",
+ category: "food",
+ burn: 10,
+ burnTime: 400,
+ burnInto: ["smoke","smoke","smoke","ash"],
+ breakInto: "crumb",
+ state: "solid",
+ density: 233.96,
+ hidden: true,
+ isFood: true
+};
+
+elements.icing_sugar = {
+ color: "#f8f8f1",
+ behavior: behaviors.POWDER,
+ onMix: function(icing_sugar1, icing_sugar2) {
+ if (shiftDown && Math.random() < 0.2) {
+ changePixel(icing_sugar1,"icing")
+ }
+ },
+ tempHigh: 186,
+ stateHigh: "caramel",
+ viscosity: 1.5,
+ category: "food",
+ state: "solid",
+ hidden: true,
+ density: 1036.86,
+ isFood: true
+};
+
+elements.icing = {
+ color: "#fefefb",
+ behavior: behaviors.STURDYPOWDER,
+ onMix: function(icing_sugar1, icing_sugar2) {
+ if ((shiftDown && Math.random() < 0.2) || (elements[icing_sugar2.element].id === elements.icing_sugar.id && Math.random() < 0.25)) {
+ changePixel(icing_sugar1,"icing")
+ }
+ },
+ viscosity: 1.5,
+ tempHigh: 1000,
+ stateHigh: ["smoke","smoke","smoke","steam","steam","calcium"],
+ stateLowColorMultiplier: 0.97,
+ category: "food",
+ isFood: true,
+ state: "solid",
+ density: 959.97,
+};
+
+elements.cream.reactions.baked_batter = {elem2: "cake" }
+
+elements.sugar.breakInto = {elem1: "icing_sugar"}
+
+elements.apple_jam = {
+ color: "#ebc034",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ tempHigh: 400,
+ stateHigh: ["sugar","smoke"],
+ burn: 70,
+ burnTime: 300,
+ viscosity: 750,
+ state: "liquid",
+ density: 825,
+ hidden: true
+};
+
+elements.mentos = {
+ color: "#a9fff9",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "soda": { elem1: "foam", elem2: "foam" },
+ "sprite": { elem1: "foam", elem2: "foam" } ,
+ }
+ };
+
+ elements.sprite = {
+ color: "#b2f3ad",
+ behavior: elements.soda.behavior,
+ category: "food",
+ state: "liquid",
+ };
+
+ elements.fanta = {
+ color: "#ffd500",
+ behavior: elements.soda.behavior,
+ category: "food",
+ state: "liquid",
+ };
+
+elements.lime = {
+ color: "#b4ff15",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "seltzer": { elem1: null, elem2: "sprite" },
+ },
+ };
+elements.beer = {
+ color: ["#ffc43d","#ffc43d"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.root_beer = {
+ color: ["#8b2f02","#732803"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.fruit_slushy = {
+ color: ["#d43968","#ec5885","#f57ca1","#fba9c2","#ffe3eb"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.mold = {
+ color: ["#b6d7a8","#6d9d5c","#ad8d6f"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.chocolate_slushy = {
+ color: ["#c3ae9a","#ae967f","#977b5f","#876b4f","#816346"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.chocolate_sauce = {
+ color: ["#491904","#54240b","#5e2d0b","#69371b","#764636"],
+ density: 10,
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.chocolate_ice_cream = {
+ color: ["#a47551","#523a28"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
+};
+
+elements.fruit_ice_cream = {
+ color: ["#f8d8d8","#f6c1c1","#e39898"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
+};
+
+elements.mint_ice_cream = {
+
+ color: ["#ebfdff","#d5fff7","#ceffe9","#dfffde","#daffd5"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
+ reactions: {
+ "chocolate": { elem1: "mint_chocolate_ice_cream", elem2: null },
+ }
+};
+
+elements.mint_chocolate_ice_cream = {
+ color: ["#311e08","#d5fff7","#ceffe9","#dfffde","#daffd5",],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "cream",
+ temp: 0,
+};
+
+
+elements.chocolate_yogurt = {
+ color: ["#654321","#71512b","#7e5f36","#8a6e42","#967d50"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempLow: 0,
+ stateLow: "frozen_chocolate_yogurt",
+};
+
+elements.fruit_yogurt = {
+ color: ["#ffc3d8","#ffabd6","#ff96c5","#ff84c2","#ff5daf"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempLow: 0,
+ stateLow: "frozen_fruit_yogurt",
+};
+
+elements.frozen_fruit_yogurt = {
+ color: ["#ffdfdf","#ffc0c0","#ff9b9b"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 902,
+ tempHigh: 0,
+ stateHigh: "fruit_yogurt",
+ temp: 0,
+};
+
+elements.frozen_chocolate_yogurt = {
+ color: ["#a87848","#a57e57","#c1a07f","#e2c5ac","#efd0b1"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 902,
+ tempHigh: 0,
+ stateHigh: "chocolate_yogurt",
+ temp: 0,
+};
+
+elements.cooking_oil = {
+ color: "#c4ab4f",
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "solid",
+ reactions: {
+ "meat": { elem1: null, elem2: "chicken_nuggets" },
+ "potato": { elem1: null, elem2: "fries" },
+ "advanced_dough": { elem1: null, elem2: "churros" },
+ "snow": { elem1: null, elem2: "fried_snow" },
+ }
+};
+
+elements.chicken_nuggets = {
+ color: ["#8f411c","#a35935"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.advanced_dough = {
+ color: ["#f3e6c6","#f9e8a2","#ebd27b","#dba94e","#c08932"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 94,
+ stateHigh: "croissant",
+ reactions: {
+ "electric": { elem1: "steampunk_pancakes", elem2: null },
+ }
+};
+
+elements.fries = {
+ color: ["#f4c63e","#f6d165","#f8dd8b"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.fried_snow = {
+ color: ["#f6c66a","#d29829","#905c1b"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.battery_acid = {
+ color: ["#8fff00","#1de446"],
+ behavior: behaviors.LIQUID,
+ category: "machines",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+
+elements.steampunk_pancakes = {
+ color: "#252a33",
+ behavior: behaviors.POWDER,
+ category: "machines",
+ state: "solid",
+ hidden: "TRUE",
+ //I have no idea why i added this, but when i removed it and started the mod, the mod removed itself. Words can't explain my fucking confusion.
+};
+
+
+elements.churros = {
+ color: ["#ce9958","#b8732d","#9f633b"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ reactions: {
+ "chocolate": { elem1: "chocolate_churros", elem2: null },
+ "chocolate_sauce": { elem1: "chocolate_churros", elem2: null },
+ }
+};
+
+elements.chocolate_churros = {
+ color: ["#9f6204","#875200","#764100","#582c00","#492100"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.croissant = {
+ color: ["#c68028","#ad7023","#905c1b","#794d16","#674112"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ breakInto: "crumb",
+ tempHigh: 550,
+ stateHigh: "ash",
+ burnInto: "smoke"
+};
+
+elements.eggy_dough = {
+ color: ["#df8c43","#e5a369","#ecba8e","#f2d1b4","#f9e8d9"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 75,
+ stateHigh: "french_toast",
+ burnInto: "smoke"
+};
+
+elements.french_toast = {
+ color: ["#a77644","#af7b4b","#af7f57"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "crumb",
+ tempHigh: 550,
+ stateHigh: "ash",
+ burnInto: "smoke"
+};
+
+elements.rose_sauce = {
+ color: ["#db2300","#e24f33"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.seasoning = {
+ color: ["#945239","#896251"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.parmesan = {
+ color: ["#ffffdd","#ffffe4","#ffffeb","#fffff1","#fffff8"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.baking_powder = {
+ color: "#fffaed",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "flour": { elem1: null, elem2: "advanced_dough" },
+ },
+};
+
+elements.smashed_ice = {
+ color: ["#e3fdff","#d1f7ff","#c0f7ff"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "grape": { elem1: null, elem2: "fruit_slushy" },
+ "blood_orange": { elem1: null, elem2: "fruit_slushy" },
+ "canary_melon": { elem1: null, elem2: "fruit_slushy" },
+ "honeydew_melon": { elem1: null, elem2: "fruit_slushy" },
+ "cranberry": { elem1: null, elem2: "fruit_slushy" },
+ "pitaya": { elem1: null, elem2: "fruit_slushy" },
+ "coconut": { elem1: null, elem2: "fruit_slushy" },
+ "cloudberry": { elem1: null, elem2: "fruit_slushy" },
+ "crabapple": { elem1: null, elem2: "fruit_slushy" },
+ "cactus_pear": { elem1: null, elem2: "fruit_slushy" },
+ "pear": { elem1: null, elem2: "fruit_slushy" },
+ "purpleberry": { elem1: null, elem2: "fruit_slushy" },
+ "yellowberry": { elem1: null, elem2: "fruit_slushy" },
+ "pomegranate": { elem1: null, elem2: "fruit_slushy" },
+ "guava": { elem1: null, elem2: "fruit_slushy" },
+ "raspberry": { elem1: null, elem2: "fruit_slushy" },
+ "gooseberry": { elem1: null, elem2: "fruit_slushy" },
+ "fig": { elem1: null, elem2: "fruit_slushy" },
+ "durian": { elem1: null, elem2: "fruit_slushy" },
+ "passionfruit": { elem1: null, elem2: "fruit_slushy" },
+ "starfruit": { elem1: null, elem2: "fruit_slushy" },
+ "rambutan": { elem1: null, elem2: "fruit_slushy" },
+ "nance": { elem1: null, elem2: "fruit_slushy" },
+ "nectarine": { elem1: null, elem2: "fruit_slushy" },
+ "loganberry": { elem1: null, elem2: "fruit_slushy" },
+ "currant": { elem1: null, elem2: "fruit_slushy" },
+ "banana": { elem1: null, elem2: "fruit_slushy" },
+ "blackberry": { elem1: null, elem2: "fruit_slushy" },
+ "blueberry": { elem1: null, elem2: "fruit_slushy" },
+ "green_apple": { elem1: null, elem2: "fruit_slushy" },
+ "lemon": { elem1: null, elem2: "fruit_slushy" },
+ "green_grape": { elem1: null, elem2: "fruit_slushy" },
+ "cherry": { elem1: null, elem2: "fruit_slushy" },
+ "apple": { elem1: null, elem2: "fruit_slushy" },
+ "orange": { elem1: null, elem2: "fruit_slushy" },
+ "kiwi": { elem1: null, elem2: "fruit_slushy" },
+ "strawberry": { elem1: null, elem2: "fruit_slushy"},
+ "chocolate": { elem1: null, elem2: "chocolate_slushy" },
+ "juice": { elem1: null, elem2: "fruit_slushy" },
+ "chocolate_sauce": { elem1: null, elem2: "chocolate_slushy" },
+ },
+ density: 100,
+ tempHigh: 25,
+ stateHigh: "water",
+ tempLow: -100,
+ stateLow: "snow",
+};
+
+elements.moss = {
+ color: ["#355438","#416044","#4c7450","#68946c","#81a984"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "life",
+ state: "solid",
+ burn: 5,
+ burnTime: 15,
+ density: 1400,
+ breakInto: "dead_plant",
+ tempHigh: 120,
+ stateHigh: "dead_plant",
+ tempLow: -4,
+ stateLow: "frozen_plant",
+
+ reactions: {
+ "dna": { elem1: "moth", elem2: null },
+ }
+
+};
+
+elements.moth = {
+ color: "#665233",
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "solid",
+ burn: 95,
+ burnTime: 25,
+ density: 600,
+ breakInto: "dead_bug",
+ tempHigh: 100,
+ stateHigh: "ash",
+ tempLow: 0,
+ stateLow: "dead_bug",
+};
+
+elements.parrot = {
+ color: ["#234d20","#36802d","#77ab59","#c9df8a","#f0f7da","#f90f0b","#f7ab4d","#fdfc0d","#0564b2","#60a3e6"],
+ behavior: behaviors.FLY,
+ category: "life",
+ state: "solid",
+ burn: 40,
+ burnTime: 100,
+ density: 400,
+ breakInto: ["feather","blood"],
+ tempHigh: 120,
+ stateHigh: "cooked_meat",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ reactions: {
+ "fly": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "firefly": { elem2:null, chance:0.3, func:behaviors.FEEDPIXEL },
+ "bee": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL },
+ "worm": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "ant": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "dead_bug": { elem2:null, chance:0.04, func:behaviors.FEEDPIXEL },
+ "lichen": { elem2:null, chance:0.04, func:behaviors.FEEDPIXEL },
+ "termite": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "flea": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "mushroom_cap": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "mushroom_gill": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "seeds": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "flower_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "wheat_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "corn_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "corn": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "potato_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "grass_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "crumb": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "pumpkin": { elem2:null, chance:0.025, func:behaviors.FEEDPIXEL },
+ "pumpkin_seed": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL },
+ "plague": { elem1:"plague", chance:0.05 },
+ "oxygen": { elem2:"carbon_dioxide", chance:0.5 }
+ },
+ foodNeed: 20,
+ temp: 41,
+ tempHigh: 120,
+ stateHigh: "cooked_meat",
+ stateHighColor: "#E4CFB9",
+ tempLow: -18,
+ stateLow: "frozen_meat",
+ category:"life",
+ burn:50,
+ burnTime:100,
+ breakInto: ["feather","blood"],
+ state: "solid",
+ density: 400,
+ conduct: 0.5
+};
+
+elements.cherry = {
+ color: ["#ff0000","#e30202","#c00000","#9c0101"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: "#450008",
+ reactionsColor: "#450008",
+};
+
+elements.strawberry = {
+ color: ["#fb2943","#ff0033"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#bf0147","#c61548","#cc2857","#c62354","#c11848"],
+};
+
+elements.apple = {
+ color: ["#fc3434","#f91515","#d30404","#9f0606","#aa0404"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#ffda69","#ffdb84"],
+};
+
+elements.green_apple = {
+ color: ["#a8da61","#66cc00","#66cc33","#00cc00","#009900"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#ffda69","#ffdb84"],
+};
+
+elements.orange = {
+ color: ["#ff9a00","#ffc100","#ff8100"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffc659","#ffb646","#ffa700","#ff8d00"],
+ tempHigh: 256,
+ stateHigh: "steam",
+};
+
+elements.kiwi = {
+ color: ["#a9c77e","#61ab5a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#a9c77e","#bad98f"],
+};
+
+elements.blueberry = {
+ color: ["#3e476f","#49598c","#5076b0","#5086c1","#8aa4ff"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#8abeee","#8aacf4","#9591ee","#787fdb","#7c74ce"],
+};
+
+elements.plum = {
+ color: ["#b62d82","#951661","#7c1249","#52001e","#360011"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#bf66c9","#d499db","#eacced"],
+};
+
+elements.blackberry = {
+ color: ["#2b0521","#3e0930","#4f123e","#601a4c","#6b2356"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#a941a1","#ba59b2","#c570bf"],
+};
+
+elements.peach = {
+ color: ["#f6a192","#f6b092","#f6c492","#f6cf92","#f6d992"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#fce5b8","#fcdab8","#fccfb8"],
+};
+
+elements.lemon = {
+ color: ["#ffaa1d","#ffd300","#ffdf00","#ffff00","#fff44f"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ breakIntoColor: ["#f8ff80","#f6ff6c","#f5ff57","#f3ff39","#f0ff00"],
+};
+
+elements.green_grape = {
+ color: ["#b6f271","#a1f02f","#97d60c","#65ba14","#8bc33a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#5f8536","#7ba84a"],
+ tempHigh: 256,
+ stateHigh: "steam",
+};
+
+elements.banana = {
+ color: ["#ffb400","#ffc100","#ffdb00","#ffe700","#f0ff00"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: "#f0f060",
+ reactions: {
+ "steam": { elem1: "potassium", elem2: null },
+ }
+};
+
+elements.blood_orange = {
+ color: ["#db4437","#fc3d39","#e5302d","#f6602d","#f65026"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff4600","#ff8353"],
+};
+
+elements.canary_melon = {
+ color: ["#e9ff0c","#e9ff0c","#ffed0c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffff9e","#fffcaa"],
+};
+
+elements.honeydew_melon = {
+ color: ["#b9ffa3","#c9ffa3","#d9ffa3"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#e9ffa3","#f9ffa3"],
+};
+
+elements.cranberry = {
+ color: ["#471016","#7a1927","#69202f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "sauce",
+ breakIntoColor: ["#ba4242","#7a1717"],
+ reactions: {
+ "soda": { elem1: null, elem2: "sprite_cranberry" },
+ }
+};
+
+elements.pitaya = {
+ color: ["#f6a9d8","#d4306e","#6ab81f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff84ae","#ffafca"],
+};
+
+elements.coconut = {
+ color: ["#6b3314","#583203","#673e1c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "milk",
+ breakIntoColor: ["#f7e5d8","#fdefe5","#fff7f1"],
+};
+
+elements.cloudberry = {
+ color: ["#ff9636","#ffb169","#ffc896"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffe1c7","#fff9f3"],
+};
+
+elements.crabapple = {
+ color: ["#850b0b","#a32d2d","#ab4545"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff8fcf","#ffb2de"],
+};
+
+elements.cactus_fruit = {
+ color: ["#ff95b0","#ff80a0","#ff7489"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#75d802","#72d202"],
+};
+
+elements.pear = {
+ color: ["#669900","#669933","#9ec419"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#c8e39e","#99cc99"],
+};
+
+elements.purpleberry = {
+ color: ["#8b04a8","#a236b9","#b968cb"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#c08cc3","#e49cc2"],
+};
+
+elements.yellowberry = {
+ color: ["#ffe505","#fffb05","#fdfa72"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#fffec8","#fffdaf"],
+};
+
+elements.pomegranate = {
+ color: ["#950000","#c93434","#df5555","#8f163f","#6d0606"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ee717f","#e94254"],
+};
+
+elements.guava = {
+ color: ["#1ae132","#44e788","#0a7a22"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff5a76","#ff8fa2"],
+};
+
+elements.raspberry = {
+ color: ["#f90064","#980036","#60081a"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#f23a72","#fb79a0"],
+};
+
+elements.gooseberry = {
+ color: ["#63041c","#760024","#81052a"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#8b0031","#920436"],
+};
+
+elements.fig = {
+ color: ["#1d1d3b","#2a2854","#402459"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff4a4a","#ea3838"],
+};
+
+elements.durian = {
+ color: ["#b07939","#c09461","#d0af88"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#faffaf","#fbffbf"],
+};
+
+elements.passionfruit = {
+ color: ["#9d3385","#b15c9d","#c485b6"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffdede","#ffe4e4"],
+};
+
+elements.starfruit = {
+ color: ["#d5eb00","#ddef33","#e6f366"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#f2d553","#f5dd75"],
+};
+
+elements.rambutan = {
+ color: ["#ff4a4a","#ea3838"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#faffaf","#fbffbf"],
+};
+
+elements.nance = {
+ color: ["#ffff00","#ffff33"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffff66","#ffff99"],
+};
+
+elements.nectarine = {
+ color: ["#c92c0f","#cc4c58","#ea6161"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffbd8b","#ffdbc0"],
+};
+
+elements.loganberry = {
+ color: ["#db1515","#e53939","#fd5f5f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff8f8f","#ffb7b7"],
+};
+
+elements.currant = {
+ color: ["#ff1828","#ff505c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ff878f","#ffbcc0"],
+};
+
+elements.sprite_cranberry = {
+ color: ["#65000f","#89001c","#b40024"],
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "solid",
+};
+
+elements.mint = {
+ color: ["#72e88d","#53bd6c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "cream": { elem1: null, elem2: "toorhpaste" },
+ "ice_cream": { elem1: null, elem2: "mint_ice_cream" },
+ }
+};
+
+elements.broccoli = {
+ color: ["#004909","#046b00","#0b8500"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#00b215","#0b8500"],
+};
+
+elements.squash = {
+ color: ["#f2ab15","#f5bc44","#f7cd73"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#efbe79","#ffd599"],
+};
+
+elements.zuchinni = {
+ color: ["#375822","#58704a","#73816a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#80a568","#a3c88c"],
+};
+
+elements.olive = {
+ color: ["#445626","#52682d","#6e8b3d"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#d1ef71","#c1d64d"],
+};
+
+elements.eggplant = {
+ color: ["#490b43","#30093a","#23033a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#674ea7","#351c75"],
+};
+
+elements.potassium = {
+ color: "#a3a333",
+ behavior: behaviors.POWDER,
+ category: "states",
+ state: "solid",
+ breakInto: "juice",
+};
+
+elements.onion = {
+ color: ["#62121b","#a92940","#c04b65","#d8699e"],
+ behavior:
+ [
+ ["XX","CH:onion>stench","XX"],
+ ["XX","XX","XX"],
+ ["XX","M1","XX"]
+ ],
+ category: "food",
+ state: "solid",
+ breakInto: ["stench", null, null, null, null],
+};
+
+elements.cinnamon = {
+ color: ["#cda67a","#986544","#6a462f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+};
+
+elements.garlic = {
+ color: ["#f7f3e1","#f6f3c3","#f0e6bd"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "garlic_clove",
+};
+
+elements.garlic_clove = {
+ color: ["#b8b17f","#6b5628"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.asparagus = {
+ color: ["#77ab56","#92bc78","#adcd9a"],
+ density: 675,
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 173,
+ stateHigh: "roasted_asparagus",
+ burnInto: "ash",
+ burn: 10,
+ burnTime: 300,
+ breakInto: "juice",
+ breakIntoColor: "#c9ddbb",
+};
+
+elements.roasted_asparagus = {
+ color: ["#849273","#9aa58d","#c0cbb3"],
+ density: 675,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ breakInto: "juice",
+ breakIntoColor: ["#849273","#9aa58d","#c0cbb3"],
+ tempHigh: 400,
+ stateHigh: "ash",
+ burnInto: "ash",
+ burn: 20,
+ burnTime: 300,
+};
+
+elements.oreo = {
+ color: "#120600",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "toorhpaste": { elem1: "poison_oreo", elem2: null },
+ }
+};
+
+elements.poison_oreo = {
+ color: "#001112",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+};
+
+elements.cream_coffee = {
+ color: ["#dbc1ac","#967259","#634832"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempLow: 0,
+ stateLow: "coffee_ice",
+ tempHigh: 130,
+ stateHigh: ["steam","fragrance"],
+};
+
+elements.seafoam = {
+ color: ["#a3c1ad","#a0d6b4","#5f9ea0","#317873","#49796b"],
+ behavior: behaviors.LIQUID,
+ category: "life",
+ state: "solid",
+};
+
+
+elements.toorhpaste = {
+ color: ["#31ffe0","#65ffe8","#97ffef","#c9fff7","#f3fffd"],
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "solid",
+ reactions: {
+ "juice": { elem1: "poison", elem2: null },
+ }
+};
+
+if (!elements.lettuce.reactions) elements.lettuce.reactions = {};
+elements.lettuce.reactions.ice_cream = { elem1: "moss", elem2: null }
+
+if (!elements.advanced_dough.reactions) elements.advanced_dough.reactions = {};
+elements.advanced_dough.reactions.yolk = { elem1: "eggy_dough", elem2: null }
+
+if (!elements.yeast.reactions) elements.yeast.reactions = {};
+elements.yeast.reactions.flour = { elem1: "beer", elem2: null }
+
+if (!elements.beer.reactions) elements.beer.reactions = {};
+elements.beer.reactions.fiber = { elem1: "root_beer", elem2: null }
+
+if (!elements.cheese.reactions) elements.cheese.reactions = {};
+elements.cheese.reactions.seasoning = { elem1: "parmesan", elem2: null }
+
+if (!elements.sodium.reactions) elements.sodium.reactions = {};
+elements.sodium.reactions.neutral_acid = { elem1: "baking_powder", elem2: null }
+
+if (!elements.toast.reactions) elements.toast.reactions = {};
+elements.toast.reactions.chocolate = { elem1: "oreo", elem2: null }
+
+if (!elements.ketchup.reactions) elements.ketchup.reactions = {};
+elements.ketchup.reactions.mayo = { elem1: "rose_sauce", elem2: null }
+
+if (!elements.bread.reactions) elements.bread.reactions = {};
+elements.bread.reactions.rotten_cheese = { elem1: "mold", elem2: null }
+
+if (!elements.bread.reactions) elements.bread.reactions = {};
+elements.bread.reactions.dirty_water = { elem1: "mold", elem2: null }
+
+if (!elements.toast.reactions) elements.toast.reactions = {};
+elements.toast.reactions.rotten_cheese = { elem1: "mold", elem2: null }
+
+if (!elements.toast.reactions) elements.toast.reactions = {};
+elements.toast.reactions.dirty_water = { elem1: "mold", elem2: null }
+
+if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {};
+elements.baked_batter.reactions.rotten_cheese = { elem1: "mold", elem2: null }
+
+if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {};
+elements.baked_batter.reactions.dirty_water = { elem1: "mold", elem2: null }
+
+if (!elements.bread.reactions) elements.bread.reactions = {};
+elements.bread.reactions.worm = { elem1: "mold", elem2: null }
+
+if (!elements.bread.reactions) elements.bread.reactions = {};
+elements.bread.reactions.mud = { elem1: "mold", elem2: null }
+
+if (!elements.toast.reactions) elements.toast.reactions = {};
+elements.toast.reactions.worm = { elem1: "mold", elem2: null }
+
+if (!elements.toast.reactions) elements.toast.reactions = {};
+elements.toast.reactions.mud = { elem1: "mold", elem2: null }
+
+if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {};
+elements.baked_batter.reactions.worm = { elem1: "mold", elem2: null }
+
+if (!elements.baked_batter.reactions) elements.baked_batter.reactions = {};
+elements.baked_batter.reactions.mud = { elem1: "mold", elem2: null }
+
+elements.sugar_ice.breakInto = "smashed_ice"
+
+elements.algae.breakInto = "seafoam"
+
+elements.battery.breakInto = "battery_acid"
+
+elements.herb.breakInto = "seasoning"
+
+elements.chocolate.breakInto = "chocolate_sauce"
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.juice = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.grape = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.jelly = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cherry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.orange = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.kiwi = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.green_grape = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.blood_orange = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.canary_melon = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.honeydew_melon = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cranberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.pitaya = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.coconut = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cloudberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.crabapple = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.cactus_fruit = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.pear = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.purpleberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.yellowberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.pomegranate = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.guava = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.raspberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.gooseberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.fig = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.durian = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.passionfruit = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.starfruit = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.rambutan = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.nance = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.nectarine = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.loganberry = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.currant = { elem1: "fruit_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.chocolate = { elem1: "chocolate_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.chocolate_sauce = { elem1: "chocolate_ice_cream", elem2: null }
+
+if (!elements.ice_cream.reactions) elements.ice_cream.reactions = {};
+elements.ice_cream.reactions.melted_chocolate = { elem1: "chocolate_ice_cream", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.grape = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.juice = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.green_grape = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cherry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.kiwi = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.orange = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.jelly = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.chocolate = { elem1: "chocolate_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.chocolate_sauce = { elem1: "chocolate_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.melted_chocolate = { elem1: "chocolate_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.blood_orange = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.canary_melon = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.honeydew_melon = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cranberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.pitaya = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.coconut = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cloudberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.crabapple = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.cactus_fruit = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.pear = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.purpleberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.yellowberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.pomegranate = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.guava = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.raspberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.gooseberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.fig = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.durian = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.passionfruit = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.starfruit = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.rambutan = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.nance = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.nectarine = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.loganberry = { elem1: "fruit_yogurt", elem2: null }
+
+if (!elements.yogurt.reactions) elements.yogurt.reactions = {};
+elements.yogurt.reactions.currant = { elem1: "fruit_yogurt", elem2: null }
+
+
+//dev notes area below
+/*
+ok this is not actually a mod i just used other mods and made it into this i can mess with stuff
+*/