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.jsAdds bananas and banana plantsAlice +food&animals.jsAdds more food and animalsSquareScreamYT and RealerRaddler ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) lemonade.jsAdds lemons and lemonadepersonman / baconthemyth morefoodsmod.jsAdds more foodsClide4 @@ -216,6 +217,7 @@ fantastic_creatures.jsAdds various animalsMelecie fantasy_elements.jsFantasy creatures and substancespixelegend4 fey_and_more.jsAdds fairies, magic, and a lot of other thingsMelecie +food&animals.jsAdds more food and animalsSquareScreamYT and RealerRaddler fwibblen.jsAdds a flying creature that turns nickel into itself, and a second creature that does the same to the first oneAlice human_edit.jsImprovements to humansAlice miscible_psoup_and_birthpool.jsMakes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical MenagerieAlice 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.jsAdds liquid versions of the elements in the Energy categoryAlice metals.jsAdds several metalsAlice mixture.jsAllows many chemicals to be mixedlllllllllwith10ls +more_gold.jsAdds Green Goldpixelegend4 morechemistry.jsAdds many new chemicals and compounds as well as some new machinesAlex moreliquids.jsAdds various liquidste-agma-at nellfire.jsAdds a weird transforming flame and several rock typesAlice @@ -199,6 +200,7 @@ Food & Cooking bananas.jsAdds bananas and banana plantsAlice +greenitemsandmore.jsAdds various green things, including apples and more foodzonneschijn7 ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) lemonade.jsAdds lemons and lemonadepersonman / baconthemyth morefoodsmod.jsAdds more foodsClide4 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-\x0aWARNING\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:\x20sandboxels.R74n.com.\x0a

\x0aPlease\x20use\x20the\x20main\x20website\x20to\x20support\x20us\x20instead.\x0a

\x0aYou\x20can\x20also\x20join\x20our\x20Discord\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-\x0aWARNING\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:\x20sandboxels.R74n.com.\x0a

\x0aPlease\x20use\x20the\x20main\x20website\x20to\x20support\x20us\x20instead.\x0a

\x0aYou\x20can\x20also\x20join\x20our\x20Discord\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.jsAdds more Ray typesAlice Food & Cooking +aChefsDream.jsAdds more food and animalsSquareScreamYT and RealerRaddler bananas.jsAdds bananas and banana plantsAlice greenitemsandmore.jsAdds various green things, including apples and more foodzonneschijn7 -food&animals.jsAdds more food and animalsSquareScreamYT and RealerRaddler ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) lemonade.jsAdds lemons and lemonadepersonman / baconthemyth morefoodsmod.jsAdds more foodsClide4 @@ -209,6 +209,7 @@ sbstuff.jsAdds many foodsStefan Blox Life & Nature +aChefsDream.jsAdds more food and animalsSquareScreamYT and RealerRaddler apioforms_pre.jsAn incomplete implementation of elements from the Apioform GameAlice bacteria_mod.jsAdds content from the Bacterium Mod: (Bacteria, Replacer B., Jammer Block)Alice bananas.jsAdds bananas and banana plantsAlice @@ -219,7 +220,6 @@ fantastic_creatures.jsAdds various animalsMelecie fantasy_elements.jsFantasy creatures and substancespixelegend4 fey_and_more.jsAdds fairies, magic, and a lot of other thingsMelecie -food&animals.jsAdds more food and animalsSquareScreamYT and RealerRaddler fwibblen.jsAdds a flying creature that turns nickel into itself, and a second creature that does the same to the first oneAlice human_edit.jsImprovements to humansAlice miscible_psoup_and_birthpool.jsMakes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical MenagerieAlice 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 = ''; for (var key in worldgentypes) { document.getElementById("worldgenselect").innerHTML += ""; - } + }; }; 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 +*/