diff --git a/lang/xem.json b/lang/xem.json
new file mode 100644
index 00000000..59b9f0d1
--- /dev/null
+++ b/lang/xem.json
@@ -0,0 +1 @@
+{"\"#lang.name\"":"๐๐ฃ","land":"๐","liquids":"๐ซ","life":"โฅ๏ธ","solids":"๐งฑ","weapons":"โ๏ธs","gases":"โฝ๏ธ๐ธ","food":"๐ฒ","machines":"๐ญ","special":"โจ","heat":"โจ๏ธ","cool":"๐๏ธ","mix":"๐ฅฃ","lookup":"๐","shock":"โก๏ธโก","paint":"๐จ๐","sand":"๐ฅชโ๏ธ๐งโโ๏ธ","water":"๐ง","salt_water":"๐ง๐ง","sugar_water":"๐ฌ๐ง","seltzer":"โจ๐ง","dirty_water":"๐๏ธ๐ง","pool_water":"๐ฑ๐ง","dirt":"๐ซโฐ๏ธ","mud":"๐ซโฐ๏ธโ๏ธ๐ง","wet_sand":"๐ฅชโ๏ธ๐งโโ๏ธโ๏ธ๐ง","rock":"๐ชจ","rock_wall":"๐ชจ๐งฑ","mudstone":"๐ซโฐ๏ธโ๏ธ๐ง ๐ชจ","packed_sand":"๐งณ ๐ฅชโ๏ธ๐งโโ๏ธ","plant":"๐ฑ","dead_plant":"๐๐ฑ","frozen_plant":"โ๏ธ๐ฑ","grass":"๐ฑ๐ฉโฐ๏ธ","algae":"๐๐ฑ","concrete":"๐งฑ๐ฉถ","wall":"๐งฑ","fire":"๐ฅ","bomb":"๐ฃ","steam":"โจ๏ธ๐จ","ice":"๐ง","snow":"โ๏ธโ๏ธ","slush":"๐งโ๐ง","packed_snow":"โ๏ธโ๏ธโ๏ธ","wood":"๐ชต","smoke":"๐ฌ","magma":"๐๐ง๐ง","plasma":"๐ช๐ฅ๐ฅ","cold_fire":"๐ฅถ๐ฅ","glass":"๐โ๏ธ๐ธ","molten_glass":"๐ซ ๐","molten_rad_glass":"๐ซ โข๏ธ๐โ๏ธ๐ธ","rad_glass":"โข๏ธ๐โ๏ธ๐ธ","meat":"๐","rotten_meat":"๐คฎ๐","cured_meat":"๐ง๐","cooked_meat":"๐ฅ๐","frozen_meat":"โ๏ธ๐","salt":"๐ง","molten_salt":"๐ฅ๐ง","wire":"๐โโ๐ก","battery":"๐","cloner":"๐จโก๏ธ๐จ๐จ","heater":"โก๏ธโจ๏ธ","cooler":"โก๏ธ๐","random":"๐โ๏ธ","image":"๐ผ๏ธ","unpaint":"โ๏ธ๐๏ธ๐จ","uncharge":"โโก","unburn":"โ๐ฅ ๐งฏ","filler":"๐ช๐ช๐ช๐ช๐ช","lattice":"๐ชโฌ๐ชโฌ๐ช","gravel":"๐ค๐ชจ","void":"โฌ๏ธ","sun":"โ๏ธ","dna":"๐งฌ","worm":"๐ชฑ","frozen_worm":"โ๏ธ๐ชฑ","ant":"๐","spider":"๐ท๏ธ","web":"๐ธ๏ธ","fly":"๐ชฐ","firefly":"๐ฅ๐ชฐ","bee":"๐","hive":"๐ ๐","stink_bug":"๐๐๐","dead_bug":"๐๐","human":"๐ค","head":"๐จ","bird":"๐ฆ","rat":"๐","frog":"๐ธ","frozen_frog":"โ๏ธ๐ธ","tadpole":"๐ถ๐ธ","fish":"๐","frozen_fish":"โ๏ธ๐","slug":"๐โ๏ธ๐","snail":"๐","burner":"โก๏ธ๐ฅ","superheater":"โก๏ธโจ๏ธโจ๏ธ","freezer":"โก๏ธ๐๐","pipe":"๐ช","pipe_wall":"๐ช๐งฑ","ewall":"โก๏ธ๐งฑ","torch":"๐ฆ","spout":"๐ฐ","bone":"๐ฆด","ball":"โฝ๏ธ","balloon":"๐","antigas":"โ๏ธโฝ๏ธ","vertical":"โ๏ธ","horizontal":"โ๏ธ","ash":"โฑ๏ธ","molten_ash":"๐ซ โฑ๏ธ","light":"๐ฆ","liquid_light":"๐ง๐ฆ","charcoal":"โฌ๐ชจ","hail":"๐ง๏ธ๐ง","anesthesia":"โฝ๏ธ๐ซโก๏ธ๐ด","carbon_dioxide":"๐ฅคโฝ๏ธ","bubble":"๐ซง","oil":"๐ข","lamp_oil":"๐ช๐ข","propane":"3๏ธโฃ๐จโฝ๏ธ","methane":"๐๐จโฝ๏ธ","stained_glass":"๐๐","molten_stained_glass":"๐ฅ๐๐","art":"๐จ","rainbow":"๐","static":"โฌโฌ","border":"๐๐ง","brick":"๐งฑ๐ค","ruins":"๐","sapling":"๐ฑโก๏ธ๐ณ","evergreen":"๐ฒ","cactus":"๐ต","paper":"๐","foam":"๐ฅคโ๏ธ","soda":"๐ฅค","gray_goo":"๐โ๏ธ","malware":"๐ฆ ๐ฅ๏ธ","ecloner":"โก๐จโก๏ธ๐จ๐จ","slow_cloner":"๐จโก๏ธ๐โก๏ธ๐จ๐จ","floating_cloner":"โ๏ธ๐จโก๏ธ๐จ๐จ","virus":"๐ฆ ","ice_nine":"๐ง9๏ธโฃ","strange_matter":"๐ฆ ๐ฉ","permafrost":"๐ฅถ๐ซโฐ๏ธ","melted_butter":"๐ฅ๐ง","melted_cheese":"๐ฅ๐ง","hyphae":"๐ค๐๐ซโฐ๏ธ","mycelium":"๐๐ซโฐ๏ธ","mulch":" ๐ฑ๐ซโฐ๏ธ๐โ๏ธ","ant_wall":"๐๐งฑ","cloth":"๐","wax":"๐ฏ๏ธ","melted_wax":"๐ซ ๐ฏ๏ธ","sponge":"๐งฝ","bamboo":"๐","gold":"๐ฅ","silver":"๐ฅ","tin":"๐ฅซโ๏ธ๐
","bronze":"๐ฅ","rose_gold":"๐น๐ฅ","purple_gold":"๐ช๐ฅ","blue_gold":"๐ฆ๐ฅ","electrum":"๐ฉ๐ฅ","pyrite":"โ๏ธ๐ฅ ๐ฅ๐๐ฐ๐ฅ","juice":"๐ง","juice_ice":"๐ง๐ง","milk":"๐ฅ","chocolate_milk":"๐ซ๐ฅ","fruit_milk":"๐๐ฅ","pilk":"๐ฅค๐ฅ","eggnog":"๐ฅ๐ฅ","egg":"๐ฅ","yolk":"๐ฅ๐จ","hard_yolk":"๐งฑ๐ฅ๐จ","nut_milk":"๐ฅ๐ฅ","homunculus":"๐ฅโ๏ธ๐ฆ ","butter":"๐ง","cheese":"๐ง","rotten_cheese":"๐คฎ๐ง","chocolate":"๐ซ","grape":"๐","vinegar":"๐ท๐","herb":"๐ฟ","lettuce":"๐ฅฌ","pickle":"๐ฅ","tomato":"๐
","sauce":"๐
๐ง","pumpkin":"๐","corn":"๐ฝ","popcorn":"๐ฟ","potato":"๐ฅ","baked_potato":"๐ฅ๐ฅ","mashed_potato":"๐จ๐ฅ","yeast":"๐ ๐๐ฆ ","bread":"๐","toast":"๐ฅ๐","gingerbread":"๐ซ๐","crumb":"๐ค๐","rice":"๐","candy":"๐ฌ","nut":"๐ฅ","nut_oil":"๐ฅ๐ข","nut_meat":"๐ฅ๐","nut_butter":"๐ฅ๐ง","jelly":"๐ชผโ๏ธ๐","ice_cream":"๐ฆ","beans":"๐ซ","dry_ice":"๐งโ๏ธ๐ง","nitrogen_ice":"๐ณ๐ง","hair":"๐ฆฑ","basalt":"๐๐๏ธ๐ชจ","tuff":"๐โ๏ธโฌ๏ธ๐ฅ๐งณโฑ๏ธ๐ชจ","molten_tuff":"๐ฅ๐โ๏ธโฌ๏ธ๐ฅ๐งณโฑ๏ธ๐ชจ","soap":"๐งผ","bleach":"๐ง๐โฌโก๏ธ๐โฌ","dye":"๐๐ง","ink":"โ๏ธ๐ง","blood":"๐ฉธ","vaccine":"๐","poison":"โ ๏ธ๐ง","poison_gas":"โ ๏ธ๐งโฝ","poison_ice":"โ ๏ธ๐ง๐ง","tea":"๐ต","coffee":"โ๏ธ","honey":"๐ฏ","sap":"๐ณ๐ซ","caramel":"โจ๏ธ๐ฌ๐ง","ketchup":"๐
๐ฌ๐ง","mayo":"๐ฅ๐ง","fat":"๐ซ","melted_chocolate":"๐ซ ๐ซ","calcium":"๐ฅ๐ฆด","molten_calcium":"๐ซ ๐ฅ๐ฆด","limestone":"๐ฉ๐๐ชจ","quicklime":"๐๐โโ๏ธ๐ฉ๐๐ชจ","slaked_lime":"๐งโ๏ธ๐๐โโ๏ธ๐ฉ๐๐ชจ","smog":"๐ญ๐ซ๏ธ","stench":"๐๐","liquid_stench":"๐ง๐๐","fragrance":"๐๐","perfume":"๐ง๐๐","cyanide":"๐โ ๏ธ๐ง","cyanide_gas":"๐โ ๏ธ๐งโฝ","ozone":"๐ด3๏ธโฃ","liquid_ozone":"๐ง๐ด3๏ธโฃ","cloud":"โ๏ธ","rain_cloud":"๐ง๏ธ","snow_cloud":"๐จ๏ธ","hail_cloud":"๐งโ๏ธ","thunder_cloud":"โ๏ธ","acid_cloud":"๐ง๏ธโ๏ธ","pyrocumulus":"โฑ๏ธโ๏ธ","fire_cloud":"๐ฅโ๏ธ","rad_cloud":"โข๏ธโ๏ธ","rad_steam":"โข๏ธ๐จ","color_smoke":"๐๐ฌ","spray_paint":"๐๐จ","led_r":"๐ฅ๐ก","led_g":"๐ฉ๐ก","led_b":"๐ฆ๐ก","light_bulb":"๐ก","snake":"๐","loopy":"โฟ๏ธ","midas_touch":"๐ฅ๐๏ธ","radiation":"โข๏ธ","fallout":"โข๏ธ๐ง๏ธ","neutron":"๐๏ธโญ๏ธ","proton":"โ๏ธโก๏ธโญ๏ธ","electric":"โก๏ธ","uranium":"๐ฉโก๏ธ","molten_uranium":"๐ซ ๐ฉโก๏ธ","diamond":"๐","gold_coin":"๐ช","feather":"๐ชถ","lightning":"๐ฉ","explosion":"๐ฅ","n_explosion":"๐ณ๐ฅ","supernova":"โ๏ธ๐ฅ","cook":"โก๏ธ๐ณ","incinerate":"โก๏ธโจ๏ธโจ๏ธโจ๏ธ","room_temp":"๐ ๐ก๏ธ","c4":"๐จ4๏ธโฃ","nuke":"โข๏ธ๐ฃ","h_bomb":"๐ญ๐ฃ","dirty_bomb":"๐๏ธ๐ฃ","emp_bomb":"โกโ๐ฃ","greek_fire":"๐ฌ๐ท๐ฅ","fireball":"๐ฅโฝ","rocket":"๐","antibomb":"โ๐ฃ","cold_bomb":"โ๏ธ๐ฃ","hot_bomb":"โจ๏ธ๐ฃ","party_popper":"๐","flashbang":"โก๐ฅ","flash":"โกโฉ","smoke_grenade":"๐ฌ๐ฃ","tornado":"๐ช๏ธ","earthquake":"๐ซจ","tsunami":"๐","blaster":"๐ฅ๐ฅ","armageddon":"๐ฅ๐ฅ๐ฅ","primordial_soup":"๐ฒ๐งฌ","debug":"๐จโ๐ป","prop":"๐ช","salt_ice":"๐ง๐ง","sugar_ice":"๐ฌ๐ง","seltzer_ice":"โจ๐ง๐ง","dirty_ice":"๐๏ธ๐ง","pool_ice":"๐ฑ๐ง","blood_ice":"๐ฉธ๐ง","unknown":"โ","soda_ice":"๐ฅค๐ง","tea_ice":"๐ต๐ง","cyanide_ice":"๐โ ๏ธ๐ง๐ง","\"#lang.credit\"":"๐ฑ๐ฆ๐๐ซ๐ฉ9๏ธโฃ","\"gui.langSelectLabel\"":"๐ณ๐ฃ","\"gui.titleTag\"":"๐ฆ๐จ โ ๐ฅผ๐งช โ โฌ","\"gui.pageDesc\"":"๐๐ฅผ๐งช5๏ธโฃ0๏ธโฃ0๏ธโฃโญ๏ธ๐ฅ๐๐ฅชโ๏ธ๐งโโ๏ธ๐ฎ ๐ฅต โ๏ธ โ๏ธ ๐ฅ ๐ฅ","\"gui.shiftButton\"":"โฌ๏ธ","\"gui.pauseButton\"":"โธ๏ธ","\"gui.sizeDownButton\"":"โ๏ธ","\"gui.sizeDownButton.title\"":"โ๏ธ๐๏ธโฌ๏ธโซ๏ธ","\"gui.sizeUpButton\"":"โ๏ธ","\"gui.sizeUpButton.title\"":"โ๏ธ๐๏ธโซ๏ธโฌ๏ธ","\"gui.resetButton\"":"๐๏ธ","\"gui.replaceButton\"":"๐","\"gui.elemSelectButton\"":"๐ช","\"gui.infoButton\"":"โน๏ธ","\"gui.savesButton\"":"๐พ","\"gui.feedbackButton\"":"๐จโ๐ผ๐","\"gui.wikiButton\"":"๐๐","\"gui.install-button\"":"๐ฅโ๏ธ๐ถ","\"gui.stats.temp\"":"๐ก๏ธ","\"gui.stats.burning\"":"๐ฅ๐ฅ๐ฅ","\"gui.savesMenuTitle\"":"๐พโ๐ค","\"gui.saves.title\"":"๐พโ๐ค","\"gui.saves.unnamed\"":"โ๐","\"gui.saves.save\"":"๐พ","\"gui.saves.load\"":"๐ค","\"gui.saveFile\"":"๐พโก๏ธ๐","\"gui.loadFile\"":"๐คโก๏ธ๐","\"gui.saveName\"":"๐พ","\"gui.saveTemp\"":"๐ก๏ธ","\"gui.saveRaw\"":"๐โ๏ธ๐ฅ ๐ถ","\"gui.saveDescLabel\"":"โน๏ธ","\"gui.saveDesc\"":null,"\"gui.saveConfirm\"":"๐พ","\"gui.setting-units-m\"":"๐ฌ๐ง๐","\"gui.setting-units-i\"":"๐บ๐ธ๐","\"gui.settingLabel-unhide\"":"๐","\"gui.settingLabel-pixelsize\"":"๐ผ โช๏ธโพ๏ธโผ๏ธ","\"gui.setting-pixelsize-8\"":"โซ๏ธ","\"gui.setting-pixelsize-6\"":"โฝ๏ธ","\"gui.setting-pixelsize-6w\"":"โ๏ธโ๏ธโ๏ธ","\"gui.setting-pixelsize-4\"":"โฌ๏ธ","\"gui.settingLabel-clouds\"":"โ๏ธโ๏ธ","\"gui.settingLabel-abszero\"":"๐ก0๏ธโฃ โฌ๏ธ๐ซ","portal_in":"๐ฆโญ๏ธโฌ
๏ธ","portal_out":"๐งโญ๏ธโก๏ธ","coral":"๐ชธ"}
\ No newline at end of file
diff --git a/mod-list.html b/mod-list.html
index 03eba315..9d8433b3 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -158,6 +158,7 @@
| extra_element_info.js | Adds descriptions to various vanilla elements. Used to provide the functionality that desc now does before it was added to vanilla | Melecie |
| extrasaveslots.js | Adds extra saves slots !SAVE IMPORTANT SAVES AS FILES! | Jayd |
| find.js | Adds a find mode that highlights a chosen element as pulsating red and yellow (read commit description) | Alice |
+| human_friendly_design.js | Makes the drag and mix tools not kill humans. | Nekonico |
| insane_random_events.js | Massively buffs random events | Alice |
| jaydsfunctions.js | Adds extra tools | Jayd |
| moretools.js | Adds more temperature-modifying tools (ยฑ10/tick, ยฑ50/tick, and absolute zero tools) | Sightnado |
@@ -237,6 +238,7 @@
| fueled_generators.js | Fuel powered generators. |
| gameOfLife.js | Conway's Game of Life on a screen | ggod |
| heatshield.js | adds heatshields, makes plasma cooler | Taterbob |
+| human_friendly_design.js | Makes pipes and portals not kill humans, as well as making drag and mix not kill humans. | Nekonico |
| logicgates.js | Adds predictable electricity and logic gates | nousernamefound |
| note_block.js | Adds musical Note Blocks | Alice |
| nousersthings.js | Destroyable machines, pipe variants, filters, and more | nousernamefound |
@@ -353,7 +355,7 @@
| minecraft.js | Adds several things from Minecraft | StellarX20, nousernamefound |
| minesweeper.js | A subpar implementation of Minesweeper | Alice |
| musicalfruit.js | Humans get gas from eating Beans | mollthecoder |
-| nekonicos_stuff.js | Some random stuff like graphite, oobleck, and red ice | Nekonico |
+| nekonicos_stuff.js | Random stuff like graphite, oobleck, and red ice, as well as many machines. | Nekonico |
| prideflags.js | Adds some pride flags to the game | Adora |
| random_elems.js | Curated randomly generated elements | Alice |
| random_liquids.js | Randomly generates liquids on game load | Alice |
diff --git a/mods/MarkusFoodMod.js b/mods/MarkusFoodMod.js
new file mode 100644
index 00000000..b040f366
--- /dev/null
+++ b/mods/MarkusFoodMod.js
@@ -0,0 +1,334 @@
+elements.paprika = {
+ color: "#b22222",
+ category: "Markus Foods",
+ behavior: behaviors.POWDER,
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "ash",
+ density: 0.4,
+ isFood: true,
+};
+
+elements.spicy_sauce = {
+ color: "#a52a2a",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ density: 1.0,
+ tempHigh: 150,
+ stateHigh: "smoke",
+ isFood: true,
+};
+
+elements.black_pepper = {
+ color: "#2f1b0c",
+ category: "Markus Foods",
+ behavior: behaviors.POWDER,
+ state: "solid",
+ density: 0.7,
+ tempHigh: 200,
+ stateHigh: "ash",
+ isFood: true,
+};
+
+elements.chicken_meat = {
+ color: "#e8a07c",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 75,
+ stateHigh: "cooked_chicken",
+ tempLow: -5,
+ stateLow: "frozen_chicken",
+ isFood: true,
+};
+
+elements.cooked_chicken = {
+ color: "#c18251",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "ash",
+ isFood: true,
+};
+
+elements.frozen_chicken = {
+ color: "#d1e1ed",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 0,
+ stateHigh: "chicken_meat",
+ isFood: true,
+};
+
+elements.pork_meat = {
+ color: "#e89a8b",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 75,
+ stateHigh: "cooked_pork",
+ tempLow: -5,
+ stateLow: "frozen_pork",
+ isFood: true,
+};
+
+elements.cooked_pork = {
+ color: "#af7f5d",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 200,
+ stateHigh: "ash",
+ isFood: true,
+};
+
+elements.frozen_pork = {
+ color: "#c0d4e1",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 0,
+ stateHigh: "pork_meat",
+ isFood: true,
+};
+
+elements.breadcrumbs = {
+ color: "#e6c27a",
+ category: "Markus Foods",
+ behavior: behaviors.POWDER,
+ state: "solid",
+ density: 0.4,
+ tempHigh: 250,
+ stateHigh: "ash",
+ isFood: true,
+};
+
+elements.fried_chicken = {
+ color: ["#c0894f", "#a86a3a", "#d19b52"],
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 350,
+ stateHigh: "ash",
+ isFood: true,
+};
+
+elements.breaded_chicken = {
+ color: "#deb887",
+ category: "Markus Foods",
+ behavior: behaviors.STURDYPOWDER,
+ state: "solid",
+ tempHigh: 180,
+ stateHigh: "fried_chicken",
+ isFood: true,
+};
+
+elements.chicken_meat.reactions = {
+ breadcrumbs: { elem1: "breaded_chicken" }
+};
+
+const newFoods = {
+ cinnamon: "#8B5A2B",
+ garlic: "#FFF5E1",
+ onion: "#D4A76A",
+ tomato: "#FF6347",
+ lettuce: "#32CD32",
+ potato: "#D2B48C",
+ cooked_potato: "#E3C16F",
+ chili_powder: "#FF4500",
+ carrot: "#FFA500",
+ cucumber: "#4CAF50",
+ salt: "#FFFFFF",
+ sugar: "#FFF5EE",
+ honey: "#FFD700",
+ cheese: "#FFD700",
+ butter: "#FFDD44",
+ egg: "#FFF5C3",
+ cooked_egg: "#F4C542",
+ banana: "#FFE135",
+ apple: "#FF0000",
+ blueberry: "#4B0082",
+ strawberry: "#FF4D4D",
+ watermelon: "#FF6666",
+ grapes: "#6A0DAD",
+ avocado: "#568203",
+ basil: "#228B22",
+ oregano: "#6B8E23",
+ ginger: "#D2691E",
+ turmeric: "#E49B0F",
+ nutmeg: "#8B4513",
+ clove: "#5C4033",
+ cabbage: "#4CBB17",
+ cauliflower: "#FFFAF0",
+ mushroom: "#8B4513",
+ spinach: "#2E8B57",
+ radish: "#F5A9B8",
+ broccoli: "#228B22",
+ green_peas: "#7CFC00",
+ bell_pepper: "#32CD32",
+ sweet_potato: "#FF7F50",
+ coconut: "#FFF8DC",
+ lemon: "#FFFACD",
+ lime: "#98FB98",
+ kiwi: "#32CD32",
+ pear: "#9ACD32",
+ peach: "#FFDAB9",
+ plum: "#8E4585",
+ pomegranate: "#8B0000",
+ fig: "#8B4513",
+ date: "#A52A2A",
+ raisin: "#6B4226",
+ apricot: "#FBCEB1",
+ coconut_milk: "#FFF0F5",
+ yogurt: "#F5FFFA",
+ cream: "#FFF8DC",
+ peanut_butter: "#C8A2A8",
+ sesame_seeds: "#FFF5EE",
+ tahini: "#F4A460",
+ almond: "#D2691E",
+ walnut: "#8B4513",
+ pistachio: "#4B8A3D",
+ cashew: "#D2B48C",
+ hazelnut: "#8B5A2B",
+ macadamia: "#E1C699",
+ pine_nuts: "#FFDDC1",
+ sunflower_seeds: "#FFF8DC",
+ chia_seeds: "#D2691E",
+ flaxseeds: "#8B4513",
+};
+
+for (const [name, color] of Object.entries(newFoods)) {
+ elements[name] = {
+ color,
+ category: "Markus Foods",
+ behavior: behaviors.POWDER,
+ state: "solid",
+ isFood: true,
+ };
+}
+
+const newLiquids = {
+ water: "#00BFFF",
+ milk: "#FFFFFF",
+ orange_juice: "#FFA500",
+ apple_juice: "#FF4500",
+ grape_juice: "#6A0DAD",
+ lemon_juice: "#FFFACD",
+ coconut_water: "#BFD8B8",
+ tomato_juice: "#FF6347",
+ coffee: "#6F4F1F",
+ tea: "#D3D3D3",
+ cola: "#6B3F2F",
+ wine: "#800000",
+ beer: "#F4A300",
+ whiskey: "#B86B38",
+ rum: "#C39A6E",
+ vodka: "#F0F8FF",
+ fruit_punch: "#FF69B4",
+ smoothie: "#FFB6C1",
+ soy_milk: "#F5F5DC",
+ coconut_milk: "#FFF0F5",
+};
+
+for (const [name, color] of Object.entries(newLiquids)) {
+ elements[name] = {
+ color,
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ isFood: true,
+ };
+}
+
+elements.carbonated_water = {
+ color: "#B0E0E6",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ isFood: true,
+ density: 1.0,
+};
+
+elements.fanta_syrup = {
+ color: "#FF7F00",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.cola_syrup = {
+ color: "#301a10",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.sprite_syrup = {
+ color: "#A8F0A5",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ tempHigh: 100,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.soda = {
+ color: "#FFD700",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ isFood: true,
+};
+
+elements.fanta = {
+ color: "#FF7F00",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ isFood: true,
+};
+
+elements.cola = {
+ color: "#261710",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ isFood: true,
+};
+
+elements.sprite = {
+ color: "#A8F0A5",
+ category: "Markus Foods",
+ behavior: behaviors.LIQUID,
+ state: "liquid",
+ isFood: true,
+};
+
+elements.soda.reactions = {
+ fanta_syrup: { elem1: "fanta" },
+ cola_syrup: { elem1: "cola" },
+ sprite_syrup: { elem1: "sprite" },
+};
+
+// Adding the recipes for sodas
+elements.fanta_syrup.reactions = {
+ carbonated_water: { elem1: "fanta" },
+};
+
+elements.cola_syrup.reactions = {
+ carbonated_water: { elem1: "cola" },
+};
+
+elements.sprite_syrup.reactions = {
+ carbonated_water: { elem1: "sprite" },
+};
diff --git a/mods/clouds.js b/mods/clouds.js
index 7a0df66a..eb5f466b 100644
--- a/mods/clouds.js
+++ b/mods/clouds.js
@@ -10,17 +10,14 @@ clouds_settingsTab.registerSettings("Real time", cloud_count_setting);
settingsManager.registerTab(clouds_settingsTab);
-// Biased random
-function randomGaussian(A, B, biasFactor=2) {
- let u = Math.random();
- let v = Math.random();
- let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
+function biasedRandom(A, B, samples) {
+ var sum = 0;
+ for (var i = 0;i < samples;i++) {
+ sum += Math.random();
+ }
+ var average = sum / samples;
- let mean = (A + B) / 2;
- let stdDev = (B - A) / biasFactor;
- let result = mean + num * stdDev;
-
- return Math.min(Math.max(result, A), B);
+ return A + average * (B - A);
}
function randomBetween(A, B) {
@@ -32,7 +29,7 @@ function initClouds(amount) {
var w = randomBetween(6, 17);
var h = randomBetween(4, 10);
var x = randomBetween(0, width - w);
- var y = randomGaussian(0, height * 0.75, 4);
+ var y = biasedRandom(0, height * 0.75, 4);
// Higher clouds move faster
var speedBoost = 1 - (y / (height * 0.75));
diff --git a/mods/drill.js b/mods/drill.js
index 56a0fe5e..5a9bcab8 100644
--- a/mods/drill.js
+++ b/mods/drill.js
@@ -1,12 +1,11 @@
elements.iron_drill = {
- color: ["#474747","#2b2b2b","#808080"],
+ color: ["#474747","#2b2b2b","#636363"],
behavior: [
- "DL AND MX|CR:drill_base|DL AND MX",
- "MX:true|XX|MX:true",
- "MX:true|M1 AND SM%10 AND MX:true|MX:true",
+ "DL%5 AND MX|CR:drill_base|DL%5 AND MX",
+ "MX|LB:drill_base|MX",
+ "MX|M1 AND SM%10 AND MX|MX",
],
category: "machines",
- breakInto: "metal_scrap",
state: "solid",
tempHigh: 1538,
stateHigh: "molten_iron",
@@ -15,11 +14,11 @@ elements.iron_drill = {
};
elements.drill_base = {
- color: "#595959",
+ color: "#808080",
behavior: [
"XX|CR:drill_support AND CH:drill_support|XX",
"XX|XX|XX",
- "XX|M1|XX",
+ "XX|XX|XX",
],
category: "machines",
breakInto: "metal_scrap",
@@ -32,9 +31,9 @@ elements.drill_base = {
};
elements.drill_support = {
- color: "#242424",
+ color: "#323232",
behavior: [
- "XX|CH:drill_support|XX",
+ "XX|CR:drill_top|XX",
"XX|XX|XX",
"XX|XX|XX",
],
@@ -48,12 +47,130 @@ elements.drill_support = {
hidden: true,
};
+elements.drill_top = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|CR:drill_side1",
+ "XX|XX|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+elements.drill_side1 = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|CR:drill_side2",
+ "XX|XX|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+
+elements.drill_side2 = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|CR:drill_side3",
+ "XX|XX|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+
+elements.drill_side3 = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|CR:drill_side4",
+ "XX|XX|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+
+elements.drill_side4 = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|CR:drill_side5%35 AND CR:drill_side4%65",
+ "XX|XX|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+
+elements.drill_side5 = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:drill_support_down|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+
+elements.drill_support_down = {
+ color: "#323232",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "XX|CR:drill_support_down|XX",
+],
+ category: "machines",
+ breakInto: "metal_scrap",
+ state: "solid",
+ tempHigh: 1538,
+ stateHigh: "molten_iron",
+ density: 7860,
+ noMix: true,
+ hidden: true,
+};
+
elements.gold_drill = {
color: ["#f7c736","#ffe596","#d1a41d"],
behavior: [
- "DL AND MX|CR:drill_base|DL AND MX",
- "MX:true|XX|MX:true",
- "MX:true|M1 AND SM%25 AND MX:true|MX:true",
+ "DL%7 AND MX|CR:drill_base|DL%7 AND MX",
+ "MX|LB:drill_base|MX",
+ "MX|M1 AND SM%25 AND MX|MX",
],
category: "machines",
breakInto: "gold_coin",
@@ -68,12 +185,11 @@ elements.gold_drill = {
elements.brass_drill = {
color: ["#ad7f47","#874a00"],
behavior: [
- "DL AND MX|CR:drill_base|DL AND MX",
- "MX:true|XX|MX:true",
- "MX:true|M1 AND SM%8 AND MX:true|MX:true",
+ "DL%6 AND MX|CR:drill_base|DL%6 AND MX",
+ "MX|LB:drill_base|MX",
+ "MX|M1 AND SM%15 AND MX|MX",
],
category: "machines",
- breakInto: "metal_scrap",
state: "solid",
tempHigh: 927,
stateHigh: "molten_brass",
@@ -85,9 +201,9 @@ elements.brass_drill = {
elements.egg_drill = {
color: "#ffe69c",
behavior: [
- "DL AND MX|CR:drill_base|DL AND MX",
- "MX:true|XX|MX:true",
- "MX:true|M1 AND SM%1 AND MX:true|MX:true",
+ "DL%1 AND MX|CR:drill_base|DL%1 AND MX",
+ "MX|LB:drill_base|MX",
+ "MX|M1 AND SM%1 AND MX|MX",
],
category: "machines",
breakInto: "yolk",
@@ -99,11 +215,28 @@ elements.egg_drill = {
darkText: true,
};
+elements.glass_drill = {
+ color: "#5e807d",
+ behavior: [
+ "DL%10 AND MX|CR:drill_base|DL%10 AND MX",
+ "MX|LB:drill_base AND SM%1|MX",
+ "MX|M1 AND SM%40 AND MX|MX",
+],
+ category: "machines",
+ breakInto: "glass_shard",
+ state: "solid",
+ tempHigh: 1500,
+ stateHigh: "molten_glass",
+ density: 2500,
+ noMix: true,
+ darkText: false,
+};
+
elements.void_drill = {
color: "#000000",
behavior: [
"DL|CR:drill_base|DL",
- "DL|XX|DL",
+ "DL|LB:drill_base|DL",
"DL|M1 AND DL|DL",
],
category: "machines",
@@ -111,4 +244,4 @@ elements.void_drill = {
density: 999999999999999,
noMix: true,
darkText: false,
-};
\ No newline at end of file
+};
diff --git a/mods/nekonicos_stuff.js b/mods/nekonicos_stuff.js
index d2473836..70169cd6 100644
--- a/mods/nekonicos_stuff.js
+++ b/mods/nekonicos_stuff.js
@@ -5,38 +5,6 @@ behaviors.SOLIDIFY = function(pixel) {
var colorOne = "#ffffff"
var colorTwo = "#000000"
-viewInfo[8] = { // Neon View
- name: "neon",
- pixel: function(pixel,ctx) {
- if (elements[pixel.element].isColor === true) {
- var color = pixel.gradient;
- if (color < 0) {color = 0}
- if (color > 60) {color = 60}
- // logarithmic scale, with coldest being 225 (-50 degrees) and hottest being 0 (6000 degrees)
- var hue = Math.round(225 - (Math.log(color)/Math.log(60))*225);
- if (hue < 0) {hue = 0}
- if (hue > 225) {hue = 225}
- drawSquare(ctx,"hsl("+hue+",50%,50%)",pixel.x,pixel.y)
- }
- }
-}
-
-elements.red = {
- color: "#AD1300",
- behavior: [
- "XX|XX|XX",
- "XX|XX|XX",
- "XX|XX|XX",
- ],
- tool: function(pixel) {
- if (elements[pixel.element].isColor == true) {
- pixel.gradient += 1
- }
- },
- canPlace: false,
- category: "tools",
-}
-
elements.colorOne = {
tick: function(pixel) {
if (pixel.color != colorOne) {
@@ -190,9 +158,6 @@ elements.desand = {
changePixel(pixel,"water")
}
}
- else if ([pixel.element].startsWith("sand_")) {
- deletePixel(pixel.x,pixel.y)
- }
},
category: "tools",
}
@@ -284,6 +249,16 @@ elements.red_ice = {
"XX|M1|XX",
],
reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
"water":{elem2:"red_ice", chance:0.25},
"steam":{elem2:"red_ice", chance:0.15},
"blood":{elem2:"red_ice", chance:0.25},
@@ -313,6 +288,7 @@ elements.red_ice = {
"frog":{elem2:"red_ice_meat", chance:0.15},
"tadpole":{elem2:"red_ice_meat", chance:0.15},
},
+ breakInto: "red_snow",
tempLow: 0,
stateLow: "red_water",
category: "solids",
@@ -320,14 +296,132 @@ elements.red_ice = {
density: 917,
}
+elements.red_snow = {
+ color: "#D64765",
+ behavior: behaviors.POWDER,
+ reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
+ "water":{elem2:"red_ice", chance:0.25},
+ "steam":{elem2:"red_ice", chance:0.15},
+ "blood":{elem2:"red_ice", chance:0.25},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice", chance:0.25},
+ "salt_water":{elem2:"red_ice", chance:0.25},
+ "sugar_water":{elem2:"red_ice", chance:0.25},
+ "dirty_water":{elem2:"red_ice", chance:0.25},
+ "pool_water":{elem2:"red_ice", chance:0.25},
+ "slush":{elem2:"red_ice", chance:0.25},
+ "seltzer":{elem2:"red_ice", chance:0.25},
+ "juice":{elem2:"red_ice", chance:0.25},
+ "soda":{elem2:"red_ice", chance:0.25},
+ "milk":{elem2:"red_ice", chance:0.25},
+ "slime":{elem2:"red_ice", chance:0.25},
+ "tea":{elem2:"red_ice", chance:0.25},
+ "coffee":{elem2:"red_ice", chance:0.25},
+ "neutral_acid":{elem2:"red_ice", chance:0.25},
+ "infection":{elem2:"red_ice", chance:0.25},
+ "meat":{elem2:"red_ice_meat", chance:0.15},
+ "skin":{elem2:"red_ice_meat", chance:0.075},
+ "body":{elem2:"red_ice_meat", chance:0.04},
+ "head":{elem2:"red_ice_meat", chance:0.05},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.15},
+ "fish":{elem2:"red_ice_meat", chance:0.15},
+ "bird":{elem2:"red_ice_meat", chance:0.15},
+ "frog":{elem2:"red_ice_meat", chance:0.15},
+ "tadpole":{elem2:"red_ice_meat", chance:0.15},
+ },
+ temp: 5,
+ tempLow: -18,
+ tempHigh: 100,
+ stateHigh: "packed_red_snow",
+ stateLow: "red_water",
+ category: "land",
+ state: "solid",
+ density: 100
+}
+
+elements.packed_red_snow = {
+ color: "#CC3F5F",
+ behavior: behaviors.SUPPORTPOWDER,
+ reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
+ "water":{elem2:"red_ice", chance:0.25},
+ "steam":{elem2:"red_ice", chance:0.15},
+ "blood":{elem2:"red_ice", chance:0.25},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice", chance:0.25},
+ "salt_water":{elem2:"red_ice", chance:0.25},
+ "sugar_water":{elem2:"red_ice", chance:0.25},
+ "dirty_water":{elem2:"red_ice", chance:0.25},
+ "pool_water":{elem2:"red_ice", chance:0.25},
+ "slush":{elem2:"red_ice", chance:0.25},
+ "seltzer":{elem2:"red_ice", chance:0.25},
+ "juice":{elem2:"red_ice", chance:0.25},
+ "soda":{elem2:"red_ice", chance:0.25},
+ "milk":{elem2:"red_ice", chance:0.25},
+ "slime":{elem2:"red_ice", chance:0.25},
+ "tea":{elem2:"red_ice", chance:0.25},
+ "coffee":{elem2:"red_ice", chance:0.25},
+ "neutral_acid":{elem2:"red_ice", chance:0.25},
+ "infection":{elem2:"red_ice", chance:0.25},
+ "meat":{elem2:"red_ice_meat", chance:0.15},
+ "skin":{elem2:"red_ice_meat", chance:0.075},
+ "body":{elem2:"red_ice_meat", chance:0.04},
+ "head":{elem2:"red_ice_meat", chance:0.05},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.15},
+ "fish":{elem2:"red_ice_meat", chance:0.15},
+ "bird":{elem2:"red_ice_meat", chance:0.15},
+ "frog":{elem2:"red_ice_meat", chance:0.15},
+ "tadpole":{elem2:"red_ice_meat", chance:0.15},
+ },
+ temp: 5,
+ tempLow: -20,
+ tempHigh: 200,
+ stateHigh: "red_ice",
+ stateLow: "red_water",
+ breakInto: "red_snow",
+ category: "land",
+ state: "solid",
+ density: 400,
+ hidden: true
+}
+
elements.red_ice_meat = {
color: "#AC3536",
behavior: [
- "XX|XX|XX",
- "XX|XX|XX",
- "XX|M1|XX",
+ "XX|CH:frozen_meat,meat>red_ice_meat%1|XX",
+ "CH:frozen_meat,meat>red_ice_meat%1|XX|CH:frozen_meat,meat>red_ice_meat%1",
+ "XX|M1 AND CH:frozen_meat,meat>red_ice_meat%1|XX",
],
reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
"water":{elem2:"red_ice", chance:0.025},
"steam":{elem2:"red_ice", chance:0.015},
"blood":{elem2:"red_ice", chance:0.025},
@@ -357,8 +451,8 @@ elements.red_ice_meat = {
"frog":{elem2:"red_ice_meat", chance:0.015},
"tadpole":{elem2:"red_ice_meat", chance:0.015},
},
- tempHigh: 0,
- stateHigh: "meat",
+ tempLow: -100,
+ stateLow: "meat",
category:"food",
hidden:true,
state: "solid",
@@ -366,10 +460,131 @@ elements.red_ice_meat = {
isFood: true
}
+elements.red_ice_plant = {
+ color: "#735958",
+ reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
+ "water":{elem2:"red_ice", chance:0.025},
+ "steam":{elem2:"red_ice", chance:0.015},
+ "blood":{elem2:"red_ice", chance:0.025},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice", chance:0.025},
+ "salt_water":{elem2:"red_ice", chance:0.025},
+ "sugar_water":{elem2:"red_ice", chance:0.025},
+ "dirty_water":{elem2:"red_ice", chance:0.025},
+ "pool_water":{elem2:"red_ice", chance:0.025},
+ "slush":{elem2:"red_ice", chance:0.025},
+ "seltzer":{elem2:"red_ice", chance:0.025},
+ "juice":{elem2:"red_ice", chance:0.025},
+ "soda":{elem2:"red_ice", chance:0.025},
+ "milk":{elem2:"red_ice", chance:0.025},
+ "slime":{elem2:"red_ice", chance:0.025},
+ "tea":{elem2:"red_ice", chance:0.025},
+ "coffee":{elem2:"red_ice", chance:0.025},
+ "neutral_acid":{elem2:"red_ice", chance:0.025},
+ "infection":{elem2:"red_ice", chance:0.025},
+ "meat":{elem2:"red_ice_meat", chance:0.015},
+ "skin":{elem2:"red_ice_meat", chance:0.0075},
+ "body":{elem2:"red_ice_meat", chance:0.004},
+ "head":{elem2:"red_ice_meat", chance:0.005},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.015},
+ "fish":{elem2:"red_ice_meat", chance:0.015},
+ "bird":{elem2:"red_ice_meat", chance:0.015},
+ "frog":{elem2:"red_ice_meat", chance:0.015},
+ "tadpole":{elem2:"red_ice_meat", chance:0.015},
+ },
+ behavior: behaviors.WALL,
+ category:"life",
+ tempHigh: 300,
+ stateHigh: "fire",
+ burn:85,
+ burnTime:45,
+ temp: 2.66,
+ tempLow: -7,
+ stateLow: "red_plant",
+ state: "solid",
+ density: 1050,
+ hidden: true
+}
+
+elements.red_plant = {
+ color: ["#AA3527","#AA3227","#AA2C27","#A11D1D"],
+ reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
+ "water":{elem2:"red_ice", chance:0.025},
+ "steam":{elem2:"red_ice", chance:0.015},
+ "blood":{elem2:"red_ice", chance:0.025},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice", chance:0.025},
+ "salt_water":{elem2:"red_ice", chance:0.025},
+ "sugar_water":{elem2:"red_ice", chance:0.025},
+ "dirty_water":{elem2:"red_ice", chance:0.025},
+ "pool_water":{elem2:"red_ice", chance:0.025},
+ "slush":{elem2:"red_ice", chance:0.025},
+ "seltzer":{elem2:"red_ice", chance:0.025},
+ "juice":{elem2:"red_ice", chance:0.025},
+ "soda":{elem2:"red_ice", chance:0.025},
+ "milk":{elem2:"red_ice", chance:0.025},
+ "slime":{elem2:"red_ice", chance:0.025},
+ "tea":{elem2:"red_ice", chance:0.025},
+ "coffee":{elem2:"red_ice", chance:0.025},
+ "neutral_acid":{elem2:"red_ice", chance:0.025},
+ "infection":{elem2:"red_ice", chance:0.025},
+ "meat":{elem2:"red_ice_meat", chance:0.015},
+ "skin":{elem2:"red_ice_meat", chance:0.0075},
+ "body":{elem2:"red_ice_meat", chance:0.004},
+ "head":{elem2:"red_ice_meat", chance:0.005},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.015},
+ "fish":{elem2:"red_ice_meat", chance:0.015},
+ "bird":{elem2:"red_ice_meat", chance:0.015},
+ "frog":{elem2:"red_ice_meat", chance:0.015},
+ "tadpole":{elem2:"red_ice_meat", chance:0.015},
+ },
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "M2|M1|M2",
+ ],
+ category:"life",
+ tempHigh: 2,
+ stateHigh: "red_ice_plant",
+ state: "solid",
+ density: 1050,
+ hidden: true
+}
+
elements.red_water = {
color: "#880808",
behavior: behaviors.LIQUID,
reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
"water":{elem2:"red_ice"},
"blood":{elem2:"red_ice"},
"blood_ice":{elem2:"red_ice", chance:0.25},
@@ -398,20 +613,37 @@ elements.red_water = {
"frog":{elem2:"red_ice_meat", chance:0.015},
"tadpole":{elem2:"red_ice_meat", chance:0.015},
},
- temp: -20,
- tempHigh: 0,
- stateHigh: "red_ice",
tempLow: -100,
stateLow: "red_steam",
+ tempHigh: 0,
+ stateHigh: "red_ice",
category: "liquids",
state: "liquid",
density: 997,
+ conduct: 0.02,
+ temp: -20,
+ stain: -0.5,
+ extinguish: true
}
elements.red_steam = {
color: "#F88379",
behavior: behaviors.GAS,
reactions: {
+ "red_steam": { elem1: "red_cloud", elem2: "red_cloud", chance:0.05, "y":[0,15], "setting":"clouds" },
+ "red_rain": { elem1: "red_rain", chance:0.4, "y":[0,12], "setting":"clouds" },
+ "red_cloud": { elem1: "red_cloud", chance:0.4, "y":[0,12], "setting":"clouds" },
+ "red_snow_cloud": { elem1: "red_rain_cloud", chance:0.4, "y":[0,12], "setting":"clouds" },
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "salt_ice":{elem2:"red_ice", chance:0.25},
+ "sugar_ice":{elem2:"red_ice", chance:0.25},
+ "juice_ice":{elem2:"red_ice", chance:0.25},
+ "dirty_ice":{elem2:"red_ice", chance:0.25},
+ "ice":{elem2:"red_ice", chance:0.25},
"water":{elem2:"red_ice"},
"blood":{elem2:"red_ice"},
"blood_ice":{elem2:"red_ice", chance:0.25},
@@ -448,6 +680,165 @@ elements.red_steam = {
density: 0.6,
}
+elements.red_cloud = {
+ color: "#E8ABAB",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CO:1%5|M1%2.5 AND BO",
+ "XX|XX|XX",
+ ],
+ reactions: {
+ "red_rain": { elem1:"red_rain", temp1: 20 },
+ "red_cloud": { elem1:"red_rain", elem2:"red_rain", temp1:20, temp2:20, charged:true },
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "water":{elem2:"red_ice"},
+ "blood":{elem2:"red_ice"},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice"},
+ "salt_water":{elem2:"red_ice"},
+ "sugar_water":{elem2:"red_ice"},
+ "dirty_water":{elem2:"red_ice"},
+ "pool_water":{elem2:"red_ice"},
+ "slush":{elem2:"red_ice"},
+ "seltzer":{elem2:"red_ice"},
+ "juice":{elem2:"red_ice"},
+ "soda":{elem2:"red_ice"},
+ "milk":{elem2:"red_ice"},
+ "slime":{elem2:"red_ice"},
+ "tea":{elem2:"red_ice"},
+ "coffee":{elem2:"red_ice"},
+ "neutral_acid":{elem2:"red_ice"},
+ "infection":{elem2:"red_ice"},
+ "meat":{elem2:"red_ice_meat", chance:0.015},
+ "skin":{elem2:"red_ice_meat", chance:0.0075},
+ "body":{elem2:"red_ice_meat", chance:0.004},
+ "head":{elem2:"red_ice_meat", chance:0.005},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.015},
+ "fish":{elem2:"red_ice_meat", chance:0.015},
+ "bird":{elem2:"red_ice_meat", chance:0.015},
+ "frog":{elem2:"red_ice_meat", chance:0.015},
+ "tadpole":{elem2:"red_ice_meat", chance:0.015},
+ },
+ category:"gases",
+ temp: -110,
+ tempHigh: -100,
+ stateHigh: "red_rain",
+ state: "gas",
+ breakInto: "red_rain",
+ density: 0.4,
+ ignoreAir: true,
+ conduct: 0.03
+}
+
+elements.red_rain = {
+ color: "#C27A79",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:red_water%0.05|M1%2.5 AND BO",
+ "CR:electric%0.05|CR:electric%0.05|CR:electric%0.05",
+ ],
+ reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "water":{elem2:"red_ice"},
+ "blood":{elem2:"red_ice"},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice"},
+ "salt_water":{elem2:"red_ice"},
+ "sugar_water":{elem2:"red_ice"},
+ "dirty_water":{elem2:"red_ice"},
+ "pool_water":{elem2:"red_ice"},
+ "slush":{elem2:"red_ice"},
+ "seltzer":{elem2:"red_ice"},
+ "juice":{elem2:"red_ice"},
+ "soda":{elem2:"red_ice"},
+ "milk":{elem2:"red_ice"},
+ "slime":{elem2:"red_ice"},
+ "tea":{elem2:"red_ice"},
+ "coffee":{elem2:"red_ice"},
+ "neutral_acid":{elem2:"red_ice"},
+ "infection":{elem2:"red_ice"},
+ "meat":{elem2:"red_ice_meat", chance:0.015},
+ "skin":{elem2:"red_ice_meat", chance:0.0075},
+ "body":{elem2:"red_ice_meat", chance:0.004},
+ "head":{elem2:"red_ice_meat", chance:0.005},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.015},
+ "fish":{elem2:"red_ice_meat", chance:0.015},
+ "bird":{elem2:"red_ice_meat", chance:0.015},
+ "frog":{elem2:"red_ice_meat", chance:0.015},
+ "tadpole":{elem2:"red_ice_meat", chance:0.015},
+ },
+ category:"gases",
+ temp: -70,
+ tempLow: -100,
+ stateLow: "red_cloud",
+ breakInto: "water",
+ tempHigh: 0,
+ stateHigh: "red_snow_cloud",
+ state: "gas",
+ density: 0.5,
+ ignoreAir: true,
+ conduct: 0.03
+}
+
+elements.red_snow_cloud = {
+ color: "#CC8482",
+ behavior: [
+ "XX|XX|XX",
+ "XX|CH:red_snow%0.05|M1%2.5 AND BO",
+ "XX|XX|XX",
+ ],
+ category:"gases",
+ temp: 10,
+ tempLow: -30,
+ stateLow: "red_rain",
+ state: "gas",
+ density: 0.55,
+ ignoreAir: true,
+ conduct: 0.01,
+ reactions: {
+ "rain_cloud": { elem2: "red_rain", chance:0.4 },
+ "cloud": { elem2: "red_cloud", chance:0.4, chance:0.4 },
+ "snow_cloud": { elem2: "red_snow_cloud", chance:0.4 },
+ "frozen_plant":{elem2:"red_ice_plant", chance:0.025},
+ "dead_plant":{elem2:"red_plant", chance:0.025},
+ "water":{elem2:"red_ice"},
+ "blood":{elem2:"red_ice"},
+ "blood_ice":{elem2:"red_ice", chance:0.25},
+ "antibody":{elem2:"red_ice"},
+ "salt_water":{elem2:"red_ice"},
+ "sugar_water":{elem2:"red_ice"},
+ "dirty_water":{elem2:"red_ice"},
+ "pool_water":{elem2:"red_ice"},
+ "slush":{elem2:"red_ice"},
+ "seltzer":{elem2:"red_ice"},
+ "juice":{elem2:"red_ice"},
+ "soda":{elem2:"red_ice"},
+ "milk":{elem2:"red_ice"},
+ "slime":{elem2:"red_ice"},
+ "tea":{elem2:"red_ice"},
+ "coffee":{elem2:"red_ice"},
+ "neutral_acid":{elem2:"red_ice"},
+ "infection":{elem2:"red_ice"},
+ "meat":{elem2:"red_ice_meat", chance:0.015},
+ "skin":{elem2:"red_ice_meat", chance:0.0075},
+ "body":{elem2:"red_ice_meat", chance:0.004},
+ "head":{elem2:"red_ice_meat", chance:0.005},
+ "frozen_meat":{elem2:"red_ice_meat", chance:0.015},
+ "fish":{elem2:"red_ice_meat", chance:0.015},
+ "bird":{elem2:"red_ice_meat", chance:0.015},
+ "frog":{elem2:"red_ice_meat", chance:0.015},
+ "tadpole":{elem2:"red_ice_meat", chance:0.015},
+ },
+}
+
elements.graphite = {
color: "#2F2F33",
colorKey: {
@@ -763,3 +1154,406 @@ elements.graphite_dust = {
density: 1830,
stain: 0.6
}
+
+scaleLimit = 0
+
+elements.pixel_scale = {
+ color: "#89796C",
+ category: "machines",
+ behavior: behaviors.WALL,
+ tempHigh: 3000,
+ stateHigh: "molten_steel",
+ density: 7850,
+ movable: false,
+ onSelect: function() {
+ var answer1 = prompt("Input the desired pixel limit of this scale. It will not work if you place multiple limits while paused.",(scaleLimit||undefined));
+ if (!answer1) { return }
+ scaleLimit = (answer1);
+ },
+ tick: function(pixel){
+ if (pixel.start === pixelTicks) {
+ pixel.scaleLimit = scaleLimit
+ }
+ if (isEmpty(pixel.x-1,pixel.y) || pixelMap[pixel.x-1][pixel.y].element !== pixel.element) {
+ pixel.scaleList = []
+ for (let i = 1; i < width; i++){
+ if (!isEmpty(pixel.x+i, pixel.y, true)) {
+ if (pixelMap[pixel.x+i][pixel.y].element === pixel.element){
+ let distance2 = grabPixels(pixelMap[pixel.x+i][pixel.y]);
+ pixel.scaleList.push((distance2.top - 1));
+ }
+ }
+ }
+ pixel.scaleSum = 0
+ for (let i = 0; i < pixel.scaleList.length; i++){
+ if (pixel.scaleList[i]){
+ pixel.scaleSum += (pixel.scaleList[i])
+ }
+ }
+ let distance = grabPixels(pixel);
+ pixel.scaleSum += (distance.top - 1)
+ if (pixel.scaleSum > (pixel.scaleLimit - 1)) {
+ if (!isEmpty(pixel.x, pixel.y-1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y-1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x, pixel.y+1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y+1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x-1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x-1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x+1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x+1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ }
+ }
+ }
+}
+
+kiloLimit = 0
+
+elements.weight_scale = {
+ color: "#7A7977",
+ category: "machines",
+ behavior: behaviors.WALL,
+ tempHigh: 3000,
+ stateHigh: "molten_steel",
+ movable: false,
+ onSelect: function() {
+ var answer1 = prompt("Input the desired kilogram limit of this scale. It will not work if you place multiple limits while paused.",(kiloLimit||1602));
+ if (!answer1) { return }
+ kiloLimit = (answer1);
+ },
+ tick: function(pixel){
+ if (pixel.start === pixelTicks) {
+ pixel.scaleLimit = kiloLimit
+ }
+ if (isEmpty(pixel.x-1,pixel.y) || !outOfBounds(pixel.x-1,pixel.y) || pixelMap[pixel.x-1][pixel.y].element !== pixel.element) {
+ pixel.scaleList = []
+ for (let i = 1; i < width; i++){
+ if (!isEmpty(pixel.x+i, pixel.y, true)) {
+ if (pixelMap[pixel.x+i][pixel.y].element === pixel.element){
+ let distance2 = grabWeights(pixelMap[pixel.x+i][pixel.y]);
+ pixel.scaleList.push((distance2.weight));
+ }
+ }
+ }
+ pixel.scaleSum = 0
+ for (let i = 0; i < pixel.scaleList.length; i++){
+ if (pixel.scaleList[i]){
+ pixel.scaleSum += (pixel.scaleList[i])
+ }
+ }
+ let distance = grabWeights(pixel);
+ pixel.scaleSum += (distance.weight)
+ if (pixel.scaleSum > (pixel.scaleLimit - 1)) {
+ if (!isEmpty(pixel.x, pixel.y-1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y-1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x, pixel.y+1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y+1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x-1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x-1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x+1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x+1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ }
+ }
+ }
+}
+
+scanLimit = 0
+scanningLimit = 0
+
+elements.pixel_scanner = {
+ color: "#799187",
+ category: "machines",
+ behavior: behaviors.WALL,
+ tempHigh: 3000,
+ stateHigh: ["molten_steel","molten_steel","molten_steel","flash"],
+ density: 7850,
+ movable: false,
+ onSelect: function() {
+ var answer1 = prompt("Input the desired pixel limit of this scanner. It will not work if you place multiple limits while paused.",(scanLimit||5));
+ if (!answer1) { return }
+ scanLimit = (answer1);
+ var answer2 = prompt("Input the desired scanning limit of this scanner. It will not work if you place multiple limits while paused.",(scanningLimit||10));
+ if (!answer2) { return }
+ scanningLimit = (answer2);
+ },
+ tick: function(pixel){
+ if (pixel.start === pixelTicks) {
+ pixel.scaleLimit = scanLimit
+ pixel.scanningLimit = scanningLimit
+ }
+ if (isEmpty(pixel.x-1,pixel.y) || pixelMap[pixel.x-1][pixel.y].element !== pixel.element) {
+ pixel.scaleList = []
+ for (let i = 1; i < width; i++){
+ if (!isEmpty(pixel.x+i, pixel.y, true)) {
+ if (pixelMap[pixel.x+i][pixel.y].element === pixel.element){
+ let distance2 = grabAllPixels(pixelMap[pixel.x+i][pixel.y]);
+ pixel.scaleList.push((distance2.pixels - 1));
+ }
+ }
+ }
+ pixel.scaleSum = 0
+ for (let i = 0; i < pixel.scaleList.length; i++){
+ if (pixel.scaleList[i]){
+ pixel.scaleSum += (pixel.scaleList[i])
+ }
+ }
+ let distance = grabAllPixels(pixel);
+ pixel.scaleSum += (distance.pixels - 1)
+ if (pixel.scaleSum > (pixel.scaleLimit - 1)) {
+ if (!isEmpty(pixel.x, pixel.y-1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y-1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x, pixel.y+1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y+1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x-1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x-1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x+1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x+1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ }
+ }
+ }
+}
+
+kiloScanLimit = 0
+kiloScanningLimit = 0
+
+elements.weight_scanner = {
+ color: "#6D9190",
+ category: "machines",
+ behavior: behaviors.WALL,
+ tempHigh: 3000,
+ stateHigh: "molten_steel",
+ movable: false,
+ onSelect: function() {
+ var answer1 = prompt("Input the desired kilogram limit of this scanner. It will not work if you place multiple limits while paused.",(kiloScanLimit||1602));
+ if (!answer1) { return }
+ kiloScanLimit = (answer1);
+ var answer2 = prompt("Input the desired scanning limit of this scanner. It will not work if you place multiple limits while paused.",(kiloScanningLimit||10));
+ if (!answer2) { return }
+ kiloScanningLimit = (answer2);
+ },
+ tick: function(pixel){
+ if (pixel.start === pixelTicks) {
+ pixel.scaleLimit = kiloScanLimit
+ pixel.scanningLimit = kiloScanningLimit
+ }
+ if (isEmpty(pixel.x-1,pixel.y) || pixelMap[pixel.x-1][pixel.y].element !== pixel.element) {
+ pixel.scaleList = []
+ for (let i = 1; i < width; i++){
+ if (!isEmpty(pixel.x+i, pixel.y, true)) {
+ if (pixelMap[pixel.x+i][pixel.y].element === pixel.element){
+ let distance2 = grabAllWeights(pixelMap[pixel.x+i][pixel.y]);
+ pixel.scaleList.push((distance2.weight));
+ }
+ }
+ }
+ pixel.scaleSum = 0
+ for (let i = 0; i < pixel.scaleList.length; i++){
+ if (pixel.scaleList[i]){
+ pixel.scaleSum += (pixel.scaleList[i])
+ }
+ }
+ let distance = grabAllWeights(pixel);
+ pixel.scaleSum += (distance.weight)
+ if (pixel.scaleSum > (pixel.scaleLimit - 1)) {
+ if (!isEmpty(pixel.x, pixel.y-1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y-1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x, pixel.y+1, true)) {
+ var hitPixel = pixelMap[pixel.x][pixel.y+1]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x-1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x-1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ if (!isEmpty(pixel.x+1, pixel.y, true)) {
+ var hitPixel = pixelMap[pixel.x+1][pixel.y]
+ doElectricity(hitPixel);
+ if (elements[hitPixel.element].conduct) {
+ hitPixel.charge = 0.5
+ }
+ }
+ }
+ }
+ }
+}
+
+grabPixels = function(pixel){
+ let element = pixel.element
+ let results = {}
+ for (let i = 0; i < height; i++) {
+ if (isEmpty(pixel.x, pixel.y-i, true)){
+ results.top = i
+ break;
+ }
+ }
+ return results
+}
+
+grabAllPixels = function(pixel){
+ let element = pixel.element
+ let results = {}
+ results.pixels = 0
+ for (let i = 0; i < height; i++) {
+ if (!isEmpty(pixel.x, pixel.y-i, true)){
+ results.pixels += 1
+ }
+ if (i > (pixel.scanningLimit - 1)){
+ break;
+ }
+ }
+ return results
+}
+
+grabWeights = function(pixel){
+ let element = pixel.element
+ let results = {}
+ let weight = 0
+ for (let i = 0; i < height; i++){
+ if (!isEmpty(pixel.x, pixel.y-i, true)){
+ if (elements[pixelMap[pixel.x][pixel.y-i].element].density && !weight) {
+ weight += elements[pixelMap[pixel.x][pixel.y-i].element].density
+ }
+ else if (elements[pixelMap[pixel.x][pixel.y-i].element].density && weight) {
+ weight += elements[pixelMap[pixel.x][pixel.y-i].element].density
+ }
+ else if (!elements[pixelMap[pixel.x][pixel.y-i].element].density) {
+ let result;
+ if (elements[pixelMap[pixel.x][pixel.y-i].element].breakInto !== undefined) {
+ if (Array.isArray(elements[pixelMap[pixel.x][pixel.y-i].element].breakInto)) {
+ result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto[Math.floor(Math.random() * elements[pixel.element].breakInto.length)];
+ weight += elements.result.density
+ }
+ else {
+ result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto;
+ weight += elements.result.density
+ }
+ }
+ }
+ }
+ if (isEmpty(pixel.x, pixel.y-i, true)){
+ results.top = i
+ if (isEmpty(pixel.x, pixel.y-i, true)){
+ results.topelement = "air"
+ } else {
+ results.topelement = pixelMap[pixel.x][pixel.y-i].element
+ }
+ break;
+ }
+ }
+ results.weight = weight
+ return results
+}
+
+grabAllWeights = function(pixel){
+ let element = pixel.element
+ let results = {}
+ let weight = 0
+ for (let i = 0; i < height; i++){
+ if (!isEmpty(pixel.x, pixel.y-i, true)){
+ if (elements[pixelMap[pixel.x][pixel.y-i].element].density && !weight) {
+ weight = elements[pixelMap[pixel.x][pixel.y-i].element].density
+ }
+ else if (elements[pixelMap[pixel.x][pixel.y-i].element].density && weight) {
+ weight += elements[pixelMap[pixel.x][pixel.y-i].element].density
+ }
+ else if (!elements[pixelMap[pixel.x][pixel.y-i].element].density) {
+ let result;
+ if (elements[pixelMap[pixel.x][pixel.y-i].element].breakInto !== undefined) {
+ if (Array.isArray(elements[pixelMap[pixel.x][pixel.y-i].element].breakInto)) {
+ result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto[Math.floor(Math.random() * elements[pixel.element].breakInto.length)];
+ weight += elements.result.density
+ }
+ else {
+ result = elements[pixelMap[pixel.x][pixel.y-i].element].breakInto;
+ weight += elements.result.density
+ }
+ }
+ }
+ }
+ if (i > (pixel.scanningLimit - 1)){
+ break;
+ }
+ }
+ results.weight = weight
+ return results
+}
+
+/*elements.Cherries_Ceri_Moji = {
+ color: "#fcd1d7",
+ category: Student,
+ state: High_School,
+ behavior: [Shy, Introverted, Easily_Excited, Kind],
+ pronouns: [She,Her,Herself],
+ sexuality: [Panromantic, Asexual],
+ desc: "Ceri is a 16 year old high school student who loves cats"
+}*/
diff --git a/mods/sports_beta.js b/mods/sports_beta.js
index ed3a77c1..4ba392d4 100644
--- a/mods/sports_beta.js
+++ b/mods/sports_beta.js
@@ -62,8 +62,8 @@ elements.volleyball = {
};
elements.deodorant = {
- color: "#def2fc",
- behavior: behaviors.DGAS,
- category: "gases",
- state: "gas",
+ color: "#def2fc",
+ behavior: behaviors.DGAS,
+ category: "gases",
+ state: "gas",
};