diff --git a/mod-list.html b/mod-list.html index f07335c9..52bd7060 100644 --- a/mod-list.html +++ b/mod-list.html @@ -310,6 +310,7 @@ Compilations a_mod_by_alice.jsA mod combining most of Alice’s mods, and some other thingsAlice +food_mods.jsA mod combining most food modsstefanblox, moss, Tisquares, SquareScreamYT, Adora, pixelegend4, Alice, Nubo318, Clide4, rottenEgghead Technical Libraries & Tests a_bundle_of_tests.jsSeveral test functionsAlice diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js index 02fe97cd..205c30d7 100644 --- a/mods/aChefsDream.js +++ b/mods/aChefsDream.js @@ -1,482 +1,10 @@ -/* -Created by SquareScreamYT/sqec <@918475812884344852> -Thanks to RealerRaddler <@914371295561535508>, Alice <@697799964985786450>, nousernamefound <@316383921346707468>, Adora the Transfem <@778753696804765696>, ryan(R74n) <@101070932608561152> and Fioushemastor <@738828785482203189> for helping :) -Compatibility with plants.js coming soon -Works well with community_desserts.js -Beta testing at aChefsDream_beta.js or SquareScreamYT/aChefsDream.js on github +// created by SquareScreamYT +// https://github.com/SquareScreamYT/aChefsDream.js -v1.13.7 - -you can support me at my youtube: https://youtube.com/@sqec - -Upcoming Features: -- pudding/cream -- extract tool -- cinnamon -- spring onions -- white rice noodles -- matcha leaves, powder, tea -- cacao pods -- more chocolate, cocoa powder, white chocolate, cocoa butter -- pigs, ham and bacon -- garlic -- stainless steel -- pepper plants -- hot chocolate -- celery -- kiwis -- guavas -- lychees -- cherries (and the plasticky maraschino cherries 🤮🤮🤮) -- dragonfuits -- dates -- figs -- avocados -- apricots and almonds (roasted) -- hazelnuts -- plums -- curry/chicken tikka masala -- raisins -- peaches -- cucumbers -- eggplants -- crabs (they eat coconuts) -- squids -- tofu -- miso -- juice reaction with other juices -- jackfruit -- fruit soda (any juice + co2 or seltzer) -- rambutan -- shrimp/prawn meat -- sheep, goats, mutton, wool/fabric, filter -- filter (like in nousersthing.js) - -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) - - - - -Changelog (v1.2) - - added boilers - - added steamers - - added smokers - - added oranges and related stuff - - oranges - - orange wood - - orange branches - - orange leaves - - orange juice - - made by smashing orange - - orange seeds - - orange slices - - made by cutting oranges - - orange peels - - byproduct of cutting oranges into orange slices - - marmalade - - made by putting sugar in orange peels and orange slices - - apple and orange juice now turn into juice ice under 0 degrees - - apple juice now boils into sugar and steam - - apple juice now boils at 100 instead of 400 - - added coral and coral stems - - added tuna - - added cooked and raw tuna - - added smoked tuna - - made by putting raw tuna with smoke - - added boiled tuna - - made by putting raw tuna in hot water - - added fried tuna - - made by putting raw tuna in hot cooking oil - - added steamed tuna - - made by putting raw tuna with steam - - added salmon - - added cooked and raw salmon - - added smoked salmon - - made by putting raw salmon with smoke - - added boiled salmon - - made by putting raw salmon in hot water - - added fried salmon - - made by putting raw salmon in hot cooking oil - - added steamed salmon - - made by putting raw salmon with steam - - added grape juice - - added cream of tartar - - added wine - - added corn syrup - - - -Changelog (v1.3) - - added shrimp - - added coconuts - - added coconut stems - - added coconut leaves - - added coconut tree tops - - added coconut milk and coconut juice - - added cut coconuts - - salmon and tuna meats no longer melt - - added knife description - - added lemons and related stuff - - lemons - - lemon wood - - lemon branches - - lemon leaves - - lemon juice - - made by smashing lemons - - lemon seeds - - lemon slices - - made by cutting lemons - - lemon zest - - byproduct of cutting lemons - - lemon marmalade can now be made by mixing lemon slices or lemon zest with sugar - - added carrots - - added carrot seeds and leaves - - added carrot juice - - added dry icing - - - -Changelog (v1.3.1) - - added lemonade - - - -Changelog (v1.3.2) - - added apple cider vinegar - - added turnips - - added turnip seeds and leaves - - added turnip juice - - - -Changelog (v1.4) - - added baking powder - - added corn starch - - added maple syrup - - added pancakes - - added pancake mix - - added pancake batter - - added normal pancakes - - added crispy pancakes - - added burnt pancakes - - added strawberries - - added strawberries - - added strawberry seeds, stem, and leaves - - added strawberry juice - - added whipped cream - - chicken eggs no longer hatch under 20 degrees - - added ginger - - added ginger juice - - added ginger rhizomes, pseudostems and leaves - - - -Changelog (v1.5) - - added blueberries - - added blueberries - - added blueberry seeds, stem, and leaves - - added blueberry juice - - added strawberry and blueberry jam - - added cut blueberries - - added advanced dough - - added carbonic acid - - added cookies and cookie dough - - replaced cooking oil with nut oil - - added boba and boba dough - - - -Changelog (v1.6) - - added freeze and warm tool - - added olive seeds - - juice mixing functionality - - wine can now be made by mixing grape juice and alcohol - - added bananas and related stuff - - bananas - - hanging banana peduncle and banana peduncle - - banana stem and banana stem top - - banana leaves - - cut banana - - banana juice - - banana bread - - - -Changelog (v1.7) - - added chocolate chips - - added sprinkles - - added banana milk (yellow fruit milk) - - added passion fruits - - added passion fruit vines and seeds (new climbing vines feature!) - - added mangoes - - added mango juice - - added mango wood, branch, leaves and seeds - - added pineapples - - added pineapple leaves, seed and juice - - - -Changelog (v1.8) - - added lime and lime juice - - added lime zest and slices - - added escargot - - added broccoli - - added broccoli stem, cut broccoli and broccoli seed - - added freeze drying and freeze dried fruits - - added soapy water - - - - -Changelog (v1.9) - - added onion - - added cut onion - - added fried onion - - added rice - - added porridge - - added cooked and burnt rice - - added rice plants and rice panicles - - added rice seeds - - added msg - - added seaweed - - added dried seaweed - - added seaweed stem and seeds - - fix egg and noodle bug - - - - -Changelog (v1.10) - - tweaked seaweed behavior - - tweaked tomato and grape vines - - added peppermint - - added peppermint leaves and stems - - added peppermint seeds - - added vanilla - - added vanilla seeds, stem, leaves - - added vanilla flower - - added vanilla pod - - added vanilla essence - - - - -Changelog (v1.10.1) - - unhid vanilla essence - - added peppermint candy - - vanilla essence can now turn ice cream light yellow - - added peppermint candy - - added tapioca - - added tapioca stems, leaves, and seed - - - - -Changelog (v1.10.2) - - added sprinkle explosions - - - - -Changelog (v1.10.5) - - added chilli - - added chilli seed, stem and leaves - - added chilli powder - - added hot sauce - - - - -Changelog (v1.10.7) - - added mango milk - - - - -Changelog (v1.10.8) - - added onion powder - - fix carrot plant bug - - added fried rice - - added durians - - added cut durians - - added durian seed, wood, leaves and branches - - - - -Changelog (v1.11) - - unhid carrot - - unhid turnip - - - - -Changelog (v1.12) - - added whisk - - added egg white - - added hard egg white - - added whisked egg white - - added marshmallows - - added cooked marshmallows - - added burnt marshmallows - - improved soup (from nousersthings.js) - - added food coloring (color may fade) - - added eat tool - - added drink tool - - - - -Changelog (v1.12.1) - - removed coral, can still be found in ocean.js - - updated food coloring - - - - -Changelog (v1.12.2) - - updated cooked meat behavior - - - - -Changelog (v1.12.4) - - added cake batter - - added condensed milk - - added wasabi - - added beans - - added baked beans - - added fermented beans/natto - - added soy sauce - - - - -Changelog (v1.13) - - added cracker and cracker dough - - added barbecue sauce - - added mustard - - added agar - - added barbecued chicken - - tweaked grape juice color - - added duck - - added duckling - - added duck eggs and frozen duck eggs - - added raw duck and cooked duck - - added fried duck - - added boiled duck - - added barbecued duck - - added smoked duck - - added steamed duck - - added cows - - added calves - - added steak and beef - - added smoked steak and barbecued steak - - - - -Changelog (v1.13.5) - - added hard jelly - - soda can mix colors - - added soda jelly - - added fanta (orange juice + carbon dioxide) - - - - -Changelog (v1.13.7) - - rename nut to peanut - - - - - - - - -*/ - -/* -elements.test = { - //other needed properties - cutInto: "elem" -} -*/ - -console.log("Thanks for using aChefsDream.js! -sqec") +runAfterLoad(function() { + console.log("Thanks for using aChefsDream.js! -sqec") + console.log("aChefsDream is hosted at https://github.com/SquareScreamYT/aChefsDream.js") +}) function interpolateRgb(rgb1, rgb2, ratio) { const interpolatedRgb = { @@ -592,6 +120,29 @@ elements.freeze_dry = { desc: "Use on pixels to freeze dry them, if possible." } +elements.food_paint = { + color: ["#c27070","#c29c70","#c2c270","#70c270","#70c2c2","#7070c2","#c270c2"], + tool: function(pixel) { + if (elements[pixel.element].isFood == true) { + if (!shiftDown) { + pixel.color = pixelColorPick(pixel,currentColor) + } + else { + var rgb = currentColor.replace("#","").match(/.{1,2}/g); + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(rgb[i],16); + } + pixel.color = "rgb(" + rgb.join(",") + ")" + } + delete pixel.origColor; + } + }, + customColor: true, + category: "tools", + canPlace: false, + desc: "Use on edible pixels to change color." +} + elements.eat = { color: ["#ffba79","#efff79"], tool: function(pixel) { @@ -849,7 +400,7 @@ elements.soup = { isFood: true, //thanks to nouser onMix: function(soup,ingredient) { - if (elements[ingredient.element].id !== elements.soup.id && elements[ingredient.element].id !== elements.broth.id) { + if (elements[ingredient.element].id !== elements.soup.id && elements[ingredient.element].id !== elements.broth.id && ingredient.temp > 40) { if (elements[ingredient.element].isFood || elements[ingredient.element].category === "food" || elements[ingredient.element].category === "liquids") { var rgb1 = soup.color.match(/\d+/g); var rgb2 = ingredient.color.match(/\d+/g); @@ -891,7 +442,7 @@ elements.soup = { } if (!elements.broth.reactions) elements.broth.reactions = {}; -elements.broth.reactions.water = { elem1: "soup", elem2: "soup" } +elements.broth.reactions.water = { elem1: "soup", elem2: "soup", tempMin: 70 } elements.noodles = { desc: "whatever noodles", @@ -1824,6 +1375,16 @@ elements.tuna = { category: "life", state: "solid", cutInto: "raw_tuna", + conduct: 0.2, + eggColor: ["#211316","#2C1A1D","#503734"], + breakInto: "blood", + burn:20, + burnTime:200, + temp: 20, + tempHigh: 120, + stateHigh: "cooked_tuna", + tempLow: -20, + stateLow: "frozen_fish", reactions: { "algae": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, "plant": { elem2:null, chance:0.125, func:behaviors.FEEDPIXEL }, @@ -1860,6 +1421,16 @@ elements.salmon = { ], category: "life", state: "solid", + conduct: 0.2, + eggColor: ["#e8961c","#faa82d"], + breakInto: "blood", + burn:20, + burnTime:200, + temp: 20, + tempHigh: 120, + stateHigh: "cooked_salmon", + tempLow: -20, + stateLow: "frozen_fish", reactions: { "algae": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, "plant": { elem2:null, chance:0.125, func:behaviors.FEEDPIXEL }, @@ -2286,12 +1857,22 @@ elements.wine = { elements.shrimp = { color: ["#EE5422", "#E9683C", "#F3583F", "#EDA270"], behavior: [ - "SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14|M2%7.5 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%5|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14", + "SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14|M2%7.5|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14", "SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14|FX%20|SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14", - "M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%15|M1|M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%15", + "M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14|M1|M2 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup%14", ], category: "life", state: "solid", + cutInto: "raw_shrimp", + conduct: 0.2, + breakInto: "raw_shrimp", + burn:20, + burnTime:200, + temp: 20, + tempHigh: 120, + stateHigh: "cooked_shrimp", + tempLow: -20, + stateLow: "frozen_meat", reactions: { "algae": { elem2:null, chance:0.25, func:behaviors.FEEDPIXEL }, "plant": { elem2:null, chance:0.125, func:behaviors.FEEDPIXEL }, @@ -3227,7 +2808,7 @@ elements.maple_syrup = { behavior: behaviors.LIQUID, tempHigh: 170, stateHigh: ["sugar","smoke","smoke"], - tempLow: 0, + tempLow: -15, category:"liquids", state: "liquid", viscosity: 15, @@ -5350,8 +4931,8 @@ elements.onion_seed = { createPixel("onion",pixel.x+1,pixel.y); createPixel("onion",pixel.x-1,pixel.y); if (isEmpty(pixel.x+1,pixel.y-3) && isEmpty(pixel.x-1,pixel.y-3)) { - createPixel("plant",pixel.x-1,pixel.y-3); - createPixel("plant",pixel.x+1,pixel.y-3); + createPixel("spring_onion_leaves",pixel.x+1,pixel.y-3); + createPixel("spring_onion_leaves",pixel.x-1,pixel.y-3); changePixel(pixel,"onion"); } } @@ -7777,8 +7358,8 @@ elements.raw_beef = { state: "solid", burnInto: "steak", temp:25, - tempHigh: 600, - stateHigh: ["steak"], + tempHigh: 200, + stateHigh: "steak", reactions: { "smoke": {elem1: "smoked_beef"}, "charcoal": {elem1: "barbecued_beef", tempMin: 70}, @@ -7844,3 +7425,560 @@ elements.jelly.temp = 0 elements.nut.name = "peanut"; elements.nut_meat.name = "peanut_meat"; elements.nut_butter.name = "peanut_butter"; + +elements.spring_onion_leaves = { + color: "#519c2f", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "ST:onion|M1|ST:onion", + ], + 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", + burn:65, + burnTime:60, + burnInto: "dead_plant", + breakInto: "herb", + state: "solid", + density: 1050, + cutInto: "chopped_spring_onion", +} +elements.chopped_spring_onion = { + color: ["#0f9912","#227d23"], + behavior: behaviors.POWDER, + category:"food", + tempHigh: 100, + stateHigh: "dead_plant", + burn:65, + burnTime:60, + burnInto: "dead_plant", + state: "solid", + density: 1050, + breakInto:"herb", +} + + +elements.spring_onion_seed = { + color: "#1a0e02", + tick: function(pixel) { + if (isEmpty(pixel.x,pixel.y+1)) { + movePixel(pixel,pixel.x,pixel.y+1); + } + else { + if (Math.random() < 0.2 && 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-2) && isEmpty(pixel.x,pixel.y-1) && isEmpty(pixel.x+1,pixel.y-1) && isEmpty(pixel.x-1,pixel.y-1) && isEmpty(pixel.x+1,pixel.y) && isEmpty(pixel.x-1,pixel.y)) { + createPixel("onion",pixel.x,pixel.y-1); + createPixel("onion",pixel.x+1,pixel.y-1); + createPixel("onion",pixel.x-1,pixel.y-1); + createPixel("onion",pixel.x,pixel.y-2); + createPixel("onion",pixel.x+1,pixel.y); + createPixel("onion",pixel.x-1,pixel.y); + if (isEmpty(pixel.x+1,pixel.y-3) && isEmpty(pixel.x-1,pixel.y-3)) { + createPixel("spring_onion_leaves",pixel.x+1,pixel.y-3); + createPixel("spring_onion_leaves",pixel.x-1,pixel.y-3); + if (isEmpty(pixel.x+1,pixel.y-4) && isEmpty(pixel.x-1,pixel.y-4)) { + createPixel("spring_onion_leaves",pixel.x+1,pixel.y-4); + createPixel("spring_onion_leaves",pixel.x-1,pixel.y-4); + if (isEmpty(pixel.x+1,pixel.y-5) && isEmpty(pixel.x-1,pixel.y-5)) { + createPixel("spring_onion_leaves",pixel.x+1,pixel.y-5); + createPixel("spring_onion_leaves",pixel.x-1,pixel.y-5); + } + } + changePixel(pixel,"onion"); + } + } + } + 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|XX|XX", + "XX|M1|XX", + ], +} + +elements.stainless_steel ={ + color: "#91999e", + behavior: behaviors.WALL, + tempHigh: 1455.5, + category: "solids", + density: 7850, + conduct: 0.42, + hardness: 0.8 +} + +elements.rambutan_wood = { + color: "#635418", + 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.rambutan_branch = { + color: "#635418", + behavior: [ + "CR:rambutan_leaves,rambutan_branch%2|CR:rambutan_leaves,rambutan_branch%2|CR:rambutan_leaves,rambutan_branch%2", + "XX|XX|XX", + "XX|XX|XX", + ], + tempHigh: 100, + stateHigh: "rambutan_wood", + tempLow: -30, + stateLow: "rambutan_wood", + category: "life", + burn: 40, + burnTime: 50, + burnInto: ["sap","ember","charcoal"], + hidden: true, + state: "solid", + density: 1500, + hardness: 0.15, + breakInto: ["sap","sawdust"], +} +elements.rambutan_leaves = { + color: "#6fa611", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|CR:unripe_rambutan%0.1|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.unripe_rambutan = { + color: ["#87c718","#8ac91c","#94de1d"], + behavior: [ + "XX|ST:rambutan_leaves|XX", + "XX|CH:rambutan%1|XX", + "M2|M1|M2", + ], + category:"food", + tempHigh: 100, + stateHigh: ["dead_plant","steam"], + burn:65, + burnTime:60, + cutInto: "cut_rambutan", + state: "solid", + density: 1050, +} + +elements.rambutan = { + color: ["#d64242","#f23333","#cc3737","#b1db69"], + behavior: behaviors.POWDER, + category:"food", + tempHigh: 100, + stateHigh: ["sugar","steam"], + burn:65, + burnTime:60, + state: "solid", + density: 1050, + cutInto: "cut_rambutan", + hidden: true, +} + +elements.cut_rambutan = { + color: "#f5f1bf", + behavior: behaviors.STURDYPOWDER, + category:"food", + tempHigh: 100, + stateHigh: ["sugar","steam"], + burn:65, + burnTime:60, + state: "solid", + density: 1050, + hidden: true, + freezeDryInto: "freeze_dried_fruits", + freezeDryIntoColor: "#a19f3b", +} + +elements.rambutan_seed = { + color: "#2b1807", + 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 ? "rambutan_wood" : "rambutan_branch",pixel.x,pixel.y+1); + } + } + else if (pixel.age > 1000) { + changePixel(pixel,"rambutan_wood"); + } + 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.barbecued_shrimp = { + color:["#bf743b", "#b57026","#8f5e29","#a87b11"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp:55, + tempHigh: 600, + stateHigh: ["ash","smoke"], + isFood: true, + hidden: true, +} +elements.steamed_shrimp = { + color:["#e8dab2", "#e2cea6"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp:50, + tempHigh: 600, + stateHigh: ["ash","smoke"], + isFood: true, + hidden: true, +} +elements.smoked_shrimp = { + color:["#78542e", "#6b4b26"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp:55, + tempHigh: 600, + stateHigh: ["ash","smoke"], + isFood: true, + hidden: true, +} +elements.cooked_shrimp = { + color:["#ff7f50", "#ffa07a", "#ffb3a7"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp: 40, + tempHigh: 600, + stateHigh: ["ash", "smoke"], + hidden: true, +}; + +elements.raw_shrimp = { + color: ["#f0e0d6", "#e8d9ce", "#cdb7b5"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + burnInto: "cooked_shrimp", + temp:25, + tempHigh: 600, + stateHigh: "cooked_shrimp", + reactions: { + "batter": { elem1: "battered_shrimp", elem2: null }, + "smoke": {elem1: "smoked_shrimp"}, + "steam": {elem1: "steamed_shrimp"}, + "water": {elem1: "boiled_shrimp", tempMin: 70}, + "nut_oil": {elem1: "fried_shrimp", tempMin: 70}, + "charcoal": {elem1: "barbecued_shrimp", tempMin: 70}, + "fire": {elem1: "barbecued_shrimp"} + } +}; + +elements.boiled_shrimp = { + color: ["#ffd180", "#ffc978", "#ffbe70"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + isFood: true, + temp: 65, + tempHigh: 600, + stateHigh: ["ash", "smoke"], + hidden: true, +} +elements.battered_shrimp = { + color: ["#f2e7d5", "#eae0cd"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp:25, + tempHigh: 125, + stateHigh: "cooked_shrimp", + reactions: { + "crumb": { color1: "#123456", elem2: null }, + "nut_oil": {elem1: "tempura", tempMin: 60} + }, + hidden: true, +}; +elements.tempura = { + color: ["#ff8c00", "#ff8c00", "#ffab00", "#ffab00"], + behavior: behaviors.STURDYPOWDER, + category: "food", + state: "solid", + temp: 40, + tempHigh: 600, + stateHigh: ["ash", "smoke"], + tempLow: -20, + breakInto: "crumb", + isFood: true, + density: 100, + hidden: true, +}; + +elements.grape.stateHigh = "raisin" +elements.grape.tempHigh = 65 + +elements.raisin = { + color: ["#522D68","#3B194D","#381845","2B194D"], + behavior: [ + "XX|ST:vine|XX", + "ST:vine|XX|ST:vine", + "M2|M1|M2", + ], + reactions: { + "radiation": { elem1:"explosion", chance:0.1, color1:"#291824" }, + "rock": { elem1:"juice", chance:0.1, color1:"#291824" }, + "concrete": { elem1:"juice", chance:0.1, color1:"#291824" }, + "basalt": { elem1:"juice", chance:0.1, color1:"#291824" }, + "limestone": { elem1:"juice", chance:0.1, color1:"#291824" }, + "tuff": { elem1:"juice", chance:0.1, color1:"#291824" }, + "water": { elem2:"juice", chance:0.005, color2:"#291824" }, + "sugar_water": { elem2:"juice", chance:0.025, color2:"#291824" }, + "acid": { elem1:"juice", color1:"#291824" }, + "acid_gas": { elem1:"juice", color1:"#291824" }, + }, + innerColor: "#cc7492", + tempHigh: 256, + stateHigh: ["steam","sugar"], + category: "food", + state: "solid", + density: 1154, + breakInto: "juice", + breakIntoColor: "#291824", + ignoreAir: true, + isFood: true +} + +// things to mix: juice, water, seltzer, sugar water, soda, juice, milk, cream, +// juice, milk, chocolate milk, fruit milk, eggnog, nut milk, alcohol, wine, tea, +// tea, coffee, honey, caramel, vanilla essence, peppermint tea, sugar, yogurt, +// whipped cream, chocolate, jam + +// juice mixing +for (let juicei = 0; juicei < eLists.JUICEMIXABLE.length; juicei++) { + // juice with juice + for (let juicej = 0; juicej < eLists.JUICEMIXABLE.length; juicej++) { + elem = eLists.JUICEMIXABLE[juicei]; + elem2 = eLists.JUICEMIXABLE[juicej]; + if (elem != elem2) { + if (!elements[elem].reactions) { chance:1, elements[elem].reactions = {} } + elements[elem].reactions[elem2] = { func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.5); + changePixel(pixel1,"juice") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + // console.log("juice mixed") + }} + } + } + // juice with water + if (!elements[elem].reactions) { elements[elem].reactions = {} } + elements[elem].reactions.water = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB("rgb(255,255,255)"), 0.2); + if (((newrgb.r + newrgb.g + newrgb.b) / 3) > 215) { + newrgb = getRGB(pixel1.color); + } + changePixel(pixel1,"juice") + changePixel(pixel2,"juice") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + }} + // juice with milk + if (!elements[elem].reactions) { elements[elem].reactions = {} } + elements[elem].reactions.milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + }} + // juice with coconut milk + if (!elements[elem].reactions) { elements[elem].reactions = {} } + elements[elem].reactions.coconut_milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + }} + // juice with nut milk + if (!elements[elem].reactions) { elements[elem].reactions = {} } + elements[elem].reactions.nut_milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + }} + // juice with cream + if (!elements[elem].reactions) { elements[elem].reactions = {} } + elements[elem].reactions.cream = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + }} + // juice with fruit milk + if (!elements[elem].reactions) { elements[elem].reactions = {} } + elements[elem].reactions.fruit_milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + }} +} +// fruit milk with milk +elements.fruit_milk.reactions.milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + if (((newrgb.r + newrgb.g + newrgb.b) / 3) < 230) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } else if (Math.random() < 0.05) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } + } +} +// fruit milk with nut milk +elements.fruit_milk.reactions.nut_milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + if (((newrgb.r + newrgb.g + newrgb.b) / 3) < 230) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } else if (Math.random() < 0.05) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } + } +} +// fruit milk with coconut milk +elements.fruit_milk.reactions.coconut_milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + if (((newrgb.r + newrgb.g + newrgb.b) / 3) < 230) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } else if (Math.random() < 0.05) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } + } +} +// fruit milk with cream +elements.fruit_milk.reactions.cream = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + if (((newrgb.r + newrgb.g + newrgb.b) / 3) < 230) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } else if (Math.random() < 0.05) { + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } + } +} +// fruit milk with fruit milk +elements.fruit_milk.reactions.fruit_milk = { chance:1, func: function(pixel1, pixel2){ + let newrgb = interpolateRgb(getRGB(pixel1.color), getRGB(pixel2.color), 0.2); + changePixel(pixel1,"fruit_milk") + changePixel(pixel2,"fruit_milk") + pixel1.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixel2.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } +} diff --git a/mods/food_mods.js b/mods/food_mods.js new file mode 100644 index 00000000..bb088d75 --- /dev/null +++ b/mods/food_mods.js @@ -0,0 +1,15 @@ +var mods_to_include = ["mods/sbstuff.js","mods/ketchup_mod.js","mods/morefoodsmod.js","mods/weAllScreamFor.js","mods/soups.js","mods/pizzasstuff.js","mods/community_desserts.js","mods/plants.js","mods/aChefsDream.js"] + +var mods_included = mods_to_include.map(mod => enabledMods.includes(mod)); +var all_mods_included = mods_included.reduce(function(a,b) { return a && b }); + +if(!all_mods_included) { + var mods_needed = mods_to_include.filter(function(modPath) { return !(enabledMods.includes(modPath)) }); + + mods_needed.forEach(function(modPath) { + enabledMods.splice(enabledMods.indexOf("mods/food_mods"),0,modPath); + }); + localStorage.setItem("enabledMods", JSON.stringify(enabledMods)); + alert(`The following mods have been inserted: ${mods_needed.join(", ")} +Reload the page for the mods to take effect. Happy cooking!`) +}