diff --git a/index.html b/index.html
index 5497b621..07437575 100644
--- a/index.html
+++ b/index.html
@@ -16704,10 +16704,10 @@ Cancer, Landmine, Grenade, Smoke Grenade">?
+
Try our NEW GAME: Infinite Chef
diff --git a/lang/zh_cn.json b/lang/zh_cn.json
index c79f77c7..327261f8 100644
--- a/lang/zh_cn.json
+++ b/lang/zh_cn.json
@@ -2,543 +2,548 @@
"#lang.name": "简体中文",
"#lang.credit": "squarescreamyt, pixelegend4",
"#lang.font": "fusion-pixel-12px-monospaced-zh_hans",
-"land":"地",
-"liquids":"液体",
-"life":"生活",
-"powders":"粉",
-"solids":"固体",
-"energy":"力量",
-"weapons":"武器",
-"gases":"气",
-"food":"食物",
-"machines":"机器",
-"special":"特别",
-"other":"其他",
-"heat":"加热",
-"cool":"冷却",
-"erase":"擦",
-"drag":"拖",
-"pick":"选",
-"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":"冰",
-"rime":"雾凇",
-"snow":"雪",
-"slush":"冰水",
-"packed_snow":"积雪",
-"wood":"木",
-"smoke":"烟",
-"magma":"岩浆",
-"plasma":"电浆",
-"cold_fire":"冷火",
-"glass":"玻璃",
-"molten_glass":"熔融玻璃",
-"molten_rad_glass":"融融拉徳玻璃",
-"rad_glass":"拉徳玻璃",
-"meat":"肉",
-"rotten_meat":"烂肉",
-"cooked_meat":"烤肉",
-"frozen_meat":"冰肉",
-"salt":"盐",
-"molten_salt":"熔融盐",
-"sugar":"食糖",
-"flour":"面粉",
-"wire":"电线",
-"battery":"电瓶",
-"cloner":"克隆机",
-"sensor":"感受器",
-"heater":"热机",
-"cooler":"冷机",
-"random":"乱",
-"image":"图片",
-"unpaint":"取消画",
-"uncharge":"取消电",
-"unburn":"取消烧",
-"smash":"砸",
-"filler":"填料",
-"lattice":"格子",
-"gravel":"碎石",
-"slime":"粘液",
-"cement":"水泥",
-"dust":"灰尘",
-"void":"太虚",
-"sun":"太阳",
-"cell":"细胞",
-"cancer":"癌",
-"dna":"DNA",
-"plague":"瘟疫",
-"worm":"蚯蚓",
-"frozen_worm":"冰蚯蚓",
-"flea":"跳蚤",
-"termite":"白蚂蚁",
-"ant":"蚂蚁",
-"fly":"苍蝇",
-"firefly":"荧光虫",
-"hive":"蜜蜂窝",
-"bee":"蜜蜂",
-"stink_bug":"臭虫",
-"dead_bug":"死虫",
-"human":"人",
-"body":"生体",
-"head":"头",
-"bird":"鸟",
-"rat":"老鼠",
-"frog":"青蛙",
-"frozen_frog":"冰青蛙",
-"tadpole":"蝌蚪",
-"fish":"鱼",
-"frozen_fish":"冰鱼",
-"slug":"蛞蝓",
-"snail":"蜗牛",
-"burner":"燃烧机",
-"superheater":"过热机",
-"freezer":"冷冻机",
-"pipe":"管",
-"pipe_wall":"管墙",
-"ewall":"电墙",
-"torch":"火炬",
-"spout":"水龙头",
-"udder":"乳房",
-"bone_marrow":"骨髓",
-"bone":"骨头",
-"balloon":"气球",
-"antipowder":"反粉",
-"antimolten":"反熔",
-"antifire":"反火",
-"antifluid":"反液",
-"antigas":"反气",
-"vertical":"直",
-"horizontal":"横",
-"ash":"灰",
-"molten_ash":"熔融灰",
-"light":"光",
-"liquid_light":"夜光",
-"laser":"雷射",
-"ball":"圆圈",
-"pointer":"指针",
-"charcoal":"木炭",
-"tinder":"木材",
-"sawdust":"锯末",
-"hail":"冰雹",
-"hydrogen":"氢气",
-"oxygen":"氧气",
-"nitrogen":"氮气",
-"helium":"氦气",
-"anesthesia":"麻醉",
-"ammonia":"氨气",
-"liquid_ammonia":"氨气液体",
-"carbon_dioxide":"二氧化碳",
-"oil":"油",
-"lamp_oil":"灯油",
-"propane":"丙烷",
-"methane":"甲烷",
-"liquid_methane":"液甲烷",
-"stained_glass":"彩色玻璃",
-"molten_stained_glass":"熔彩色玻璃",
-"art":"艺术",
-"rainbow":"彩虹",
-"static":"電干扰",
-"border":"边",
-"clay":"泥土",
-"clay_soil":"壤土",
-"brick":"砖",
-"ruins":"废墟",
-"porcelain":"瓷",
-"sapling":"树苗",
-"pinecone":"松果",
-"evergreen":"松树",
-"cactus":"仙人掌",
-"seeds":"种子",
-"grass_seed":"草种子",
-"wheat_seed":"麦种子",
-"straw":"干草",
-"paper":"纸",
-"pollen":"花粉",
-"flower_seed":"",
-"pistil":"",
-"petal":"",
-"tree_branch":"",
-"vine":"",
-"bamboo_plant":"",
-"foam":"",
-"bubble":"泡泡",
-"acid":"",
-"neutral_acid":"",
-"acid_gas":"",
-"glue":"粘",
-"soda":"汽水",
-"gray_goo":"灰粘",
-"malware":"",
-"ecloner":"",
-"slow_cloner":"",
-"clone_powder":"",
-"floating_cloner":"",
-"virus":"病毒",
-"ice_nine":"冰九",
-"strange_matter":"",
-"permafrost":"",
-"melted_butter":"",
-"melted_cheese":"",
-"mushroom_spore":"",
-"mushroom_stalk":"",
-"mushroom_gill":"",
-"mushroom_cap":"",
-"hyphae":"",
-"mycelium":"",
-"mulch":"",
-"ant_wall":"蚂蚁墙",
-"lichen":"",
-"antimatter":"",
-"plastic":"塑料",
-"molten_plastic":"",
-"cellulose":"",
-"wax":"",
-"melted_wax":"",
-"incense":"",
-"fuse":"",
-"dioxin":"",
-"insulation":"",
-"sponge":"海绵",
-"bamboo":"竹子",
-"iron":"铁",
-"copper":"铜",
-"gold":"金",
-"steel":"",
-"nickel":"",
-"zinc":"",
-"silver":"银",
-"tin":"",
-"lead":"",
-"aluminum":"铝",
-"tungsten":"",
-"molten_tungsten":"",
-"brass":"",
-"bronze":"",
-"sterling":"",
-"gallium":"镓",
-"molten_gallium":"熔融镓",
-"gallium_gas":"镓气",
-"rose_gold":"玫瑰金",
-"purple_gold":"紫金",
-"blue_gold":"蓝金",
-"electrum":"金金银",
-"pyrite":"",
-"solder":"",
-"molten_copper":"熔融铜",
-"molten_gold":"熔融金",
-"molten_silver":"",
-"molten_iron":"",
-"molten_nickel":"",
-"molten_tin":"",
-"molten_lead":"",
-"molten_solder":"",
-"juice":"果汁",
-"juice_ice":"果汁冰",
-"broth":"汤",
-"milk":"牛奶",
-"chocolate_milk":"巧克力牛奶",
-"fruit_milk":"水果牛奶",
-"pilk":"气水牛奶",
-"eggnog":"蛋奶",
-"egg":"蛋",
-"yolk":"蛋黄",
-"hard_yolk":"硬蛋黄",
-"nut_milk":"坚果奶",
-"dough":"面团",
-"batter":"面糊",
-"homunculus":"何蒙库鲁兹",
-"butter":"牛油",
-"cheese":"芝士",
-"rotten_cheese":"腐烂芝士",
-"chocolate":"巧克力",
-"grape":"葡萄",
-"vinegar":"醋",
-"herb":"芭",
-"lettuce":"生菜",
-"pickle":"泡菜",
-"tomato":"西红柿",
-"sauce":"酱",
-"pumpkin":"南瓜",
-"pumpkin_seed":"南瓜种子",
-"corn":"玉米",
-"popcorn":"爆米花",
-"corn_seed":"",
-"potato":"土豆",
-"baked_potato":"烤土豆",
-"mashed_potato":"薯泥",
-"potato_seed":"",
-"root":"根",
-"fiber":"",
-"yeast":"",
-"bread":"面包",
-"toast":"烤面包",
-"gingerbread":"",
-"crumb":"",
-"baked_batter":"",
-"wheat":"麦",
-"candy":"糖果",
-"coffee_bean":"咖啡豆",
-"coffee_ground":"咖啡粉",
-"nut":"花生",
-"nut_meat":"花生碎",
-"nut_butter":"花生酱",
-"jelly":"布丁",
-"baking_soda":"苏打粉",
-"yogurt":"",
-"frozen_yogurt":"",
-"ice_cream":"冰淇凌",
-"cream":"奶油",
-"beans":"豆子",
-"dry_ice":"干冰",
-"nitrogen_ice":"",
-"particleboard":"皮肤",
-"skin":"皮肤",
-"hair":"头发",
-"alcohol":"酒",
-"alcohol_gas":"酒气",
-"basalt":"",
-"tuff":"",
-"molten_tuff":"",
-"soap":"肥皂",
-"bleach":"漂白",
-"chlorine":"氯",
-"liquid_chlorine":"",
-"dye":"染料",
-"ink":"墨水",
-"mercury":"汞",
-"mercury_gas":"汞气",
-"solid_mercury":"固体汞",
-"blood":"血",
-"vaccine":"疫苗",
-"antibody":"",
-"infection":"感染",
-"poison":"毒",
-"poison_gas":"毒气",
-"poison_ice":"毒冰",
-"antidote":"",
-"tea":"茶",
-"coffee":"咖啡",
-"honey":"蜂蜜",
-"sap":"树叶",
-"amber":"",
-"caramel":"焦糖",
-"molasses":"",
-"ketchup":"蕃茄酱",
-"mayo":"蛋黄酱",
-"melted_chocolate":"熔融巧克力",
-"liquid_hydrogen":"",
-"liquid_oxygen":"",
-"liquid_nitrogen":"",
-"liquid_helium":"",
-"sodium":"钠",
-"molten_sodium":"",
-"sodium_gas":"",
-"calcium":"钙",
-"molten_calcium":"",
-"limestone":"",
-"quicklime":"",
-"slaked_lime":"",
-"thermite":"",
-"molten_thermite":"",
-"slag":"",
-"amalgam":"",
-"molten_aluminum":"",
-"molten_zinc":"",
-"neon":"氖气",
-"liquid_neon":"",
-"smog":"",
-"stench":"臭",
-"liquid_stench":"",
-"fragrance":"香水",
-"perfume":"香水",
-"cyanide":"",
-"cyanide_gas":"",
-"ozone":"",
-"cloud":"云",
-"rain_cloud":"雨云",
-"snow_cloud":"雪云",
-"hail_cloud":"冰雹云",
-"thunder_cloud":"雷云",
-"acid_cloud":"酸云",
-"pyrocumulus":"",
-"fire_cloud":"火云",
-"color_smoke":"",
-"spray_paint":"",
-"led_r":"红灯",
-"led_g":"绿灯",
-"led_b":"蓝灯",
-"sulfur":"",
-"molten_sulfur":"",
-"sulfur_gas":"",
-"copper_sulfate":"",
-"snake":"蛇",
-"loopy":"",
-"warp":"",
-"radiation":"",
-"rad_steam":"",
-"rad_cloud":"",
-"fallout":"",
-"neutron":"",
-"proton":"",
-"electric":"电",
-"uranium":"铀",
-"molten_uranium":"熔融铀",
-"diamond":"钻石",
-"gold_coin":"硬币",
-"rust":"",
-"oxidized_copper":"",
-"alga":"",
-"metal_scrap":"",
-"glass_shard":"",
-"rad_shard":"",
-"brick_rubble":"",
-"baked_clay":"",
-"clay_shard":"",
-"porcelain_shard":"",
-"feather":"羽毛",
-"confetti":"",
-"glitter":"",
-"bead":"",
-"color_sand":"彩色沙",
-"borax":"",
-"epsom_salt":"",
-"potassium_salt":"",
-"sodium_acetate":"",
-"lightning":"",
-"bless":"",
-"god_ray":"",
-"heat_ray":"",
-"explosion":"",
-"n_explosion":"",
-"supernova":"",
-"pop":"爆",
-"cook":"煮",
-"incinerate":"",
-"room_temp":"",
-"positron":"",
-"tnt":"",
-"c4":"C4",
-"grenade":"",
-"dynamite":"",
-"gunpowder":"",
-"ember":"",
-"firework":"烟花",
-"fw_ember":"烟火",
-"nuke":"",
-"h_bomb":"",
-"dirty_bomb":"",
-"emp_bomb":"",
-"nitro":"",
-"greek_fire":"",
-"fireball":"",
-"rocket":"",
-"cold_bomb":"冷炸弹",
-"hot_bomb":"热炸弹",
-"antimatter_bomb":"",
-"party_popper":"",
-"flashbang":"光榴弹",
-"flash":"",
-"smoke_grenade":"烟榴弹",
-"landmine":"",
-"armageddon":"",
-"tesla_coil":"",
-"light_bulb":"灯泡",
-"shocker":"",
-"pressure_plate":"",
-"primordial_soup":"",
-"molten_slag":"",
-"molten_dirt":"",
-"debug":"",
-"prop":"",
-"salt_ice":"盐水冰",
-"sugar_ice":"糖水冰",
-"seltzer_ice":"苏打水冰",
-"dirty_ice":"",
-"pool_ice":"",
-"blood_ice":"血冰",
-"antibody_ice":"",
-"infection_ice":"",
-"unknown":"未知",
-"slime_ice":"",
-"antiice":"",
-"ammonia_ice":"",
-"liquid_propane":"",
-"methane_ice":"",
-"molten_brick":"",
-"acid_ice":"",
-"soda_ice":"汽水冰",
-"molten_steel":"",
-"molten_brass":"",
-"molten_bronze":"",
-"molten_sterling":"",
-"molten_rose_gold":"",
-"molten_purple_gold":"",
-"molten_blue_gold":"",
-"molten_electrum":"",
-"molten_pyrite":"",
-"broth_ice":"",
-"frozen_vinegar":"",
-"sauce_ice":"酱冰",
-"alcohol_ice":"酒冰",
-"bleach_ice":"",
-"chlorine_ice":"",
-"frozen_ink":"",
-"tea_ice":"茶冰",
-"coffee_ice":"咖啡冰",
-"hydrogen_ice":"",
-"oxygen_ice":"",
-"molten_amalgam":"",
-"neon_ice":"",
-"cyanide_ice":"",
-"molten_copper_sulfate":"",
-"molten_alga":"",
-"molten_metal_scrap":"",
-"molten_borax":"",
-"molten_epsom_salt":"",
-"molten_potassium_salt":"",
-"molten_sodium_acetate":"",
-"frozen_nitro":"",
-"cured_meat": "",
+"land": "地",
+"liquids": "液体",
+"life": "生活",
+"powders": "粉",
+"solids": "固体",
+"energy": "力量",
+"weapons": "武器",
+"gases": "气",
+"food": "食物",
+"machines": "机器",
+"special": "特别",
+"other": "其他",
+"heat": "加热",
+"cool": "冷却",
+"erase": "擦",
+"drag": "拖",
+"pick": "选",
+"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": "冰",
+"rime": "雾凇",
+"snow": "雪",
+"slush": "冰水",
+"packed_snow": "积雪",
+"wood": "木",
+"smoke": "烟",
+"magma": "岩浆",
+"plasma": "电浆",
+"cold_fire": "冷火",
+"glass": "玻璃",
+"molten_glass": "熔融玻璃",
+"molten_rad_glass": "融融拉徳玻璃",
+"rad_glass": "拉徳玻璃",
+"meat": "肉",
+"rotten_meat": "烂肉",
+"cooked_meat": "烤肉",
+"frozen_meat": "冰肉",
+"salt": "盐",
+"molten_salt": "熔融盐",
+"sugar": "食糖",
+"flour": "面粉",
+"wire": "电线",
+"battery": "电瓶",
+"cloner": "克隆机",
+"sensor": "感受器",
+"heater": "热机",
+"cooler": "冷机",
+"random": "乱",
+"image": "图片",
+"unpaint": "取消画",
+"uncharge": "取消电",
+"unburn": "取消烧",
+"smash": "砸",
+"filler": "填料",
+"lattice": "格子",
+"gravel": "碎石",
+"slime": "粘液",
+"cement": "水泥",
+"dust": "灰尘",
+"void": "太虚",
+"sun": "太阳",
+"cell": "细胞",
+"cancer": "癌",
+"dna": "DNA",
+"plague": "瘟疫",
+"worm": "蚯蚓",
+"frozen_worm": "冰蚯蚓",
+"flea": "跳蚤",
+"termite": "白蚂蚁",
+"ant": "蚂蚁",
+"fly": "苍蝇",
+"firefly": "荧光虫",
+"hive": "蜜蜂窝",
+"bee": "蜜蜂",
+"stink_bug": "臭虫",
+"dead_bug": "死虫",
+"human": "人",
+"body": "生体",
+"head": "头",
+"bird": "鸟",
+"rat": "老鼠",
+"frog": "青蛙",
+"frozen_frog": "冰青蛙",
+"tadpole": "蝌蚪",
+"fish": "鱼",
+"frozen_fish": "冰鱼",
+"slug": "蛞蝓",
+"snail": "蜗牛",
+"burner": "燃烧机",
+"superheater": "过热机",
+"freezer": "冷冻机",
+"pipe": "管",
+"pipe_wall": "管墙",
+"ewall": "电墙",
+"torch": "火炬",
+"spout": "水龙头",
+"udder": "乳房",
+"bone_marrow": "骨髓",
+"bone": "骨头",
+"balloon": "气球",
+"antipowder": "反粉",
+"antimolten": "反熔",
+"antifire": "反火",
+"antifluid": "反液",
+"antigas": "反气",
+"vertical": "直",
+"horizontal": "横",
+"ash": "灰",
+"molten_ash": "熔融灰",
+"light": "光",
+"liquid_light": "夜光",
+"laser": "雷射",
+"ball": "圆圈",
+"pointer": "指针",
+"charcoal": "木炭",
+"tinder": "木材",
+"sawdust": "锯末",
+"hail": "冰雹",
+"hydrogen": "氢气",
+"oxygen": "氧气",
+"nitrogen": "氮气",
+"helium": "氦气",
+"anesthesia": "麻醉",
+"ammonia": "氨气",
+"liquid_ammonia": "氨气液体",
+"carbon_dioxide": "二氧化碳",
+"oil": "油",
+"lamp_oil": "灯油",
+"propane": "丙烷",
+"methane": "甲烷",
+"liquid_methane": "液甲烷",
+"stained_glass": "彩色玻璃",
+"molten_stained_glass": "熔彩色玻璃",
+"art": "艺术",
+"rainbow": "彩虹",
+"static": "電干扰",
+"border": "边",
+"clay": "泥土",
+"clay_soil": "壤土",
+"brick": "砖",
+"ruins": "废墟",
+"porcelain": "瓷",
+"sapling": "树苗",
+"pinecone": "松果",
+"evergreen": "松树",
+"cactus": "仙人掌",
+"seeds": "种子",
+"grass_seed": "草种子",
+"wheat_seed": "麦种子",
+"straw": "干草",
+"paper": "纸",
+"pollen": "花粉",
+"flower_seed": "花种子",
+"pistil": "雌蕊",
+"petal": "花瓣",
+"tree_branch": "树支",
+"vine": "藤蔓",
+"bamboo_plant": "竹子",
+"foam": "泡沫",
+"bubble": "泡泡",
+"acid": "酸",
+"neutral_acid": "中性酸性",
+"acid_gas": "酸气",
+"glue": "粘",
+"soda": "汽水",
+"gray_goo": "灰粘",
+"malware": "恶意软件",
+"ecloner": "电子克隆机",
+"slow_cloner": "慢克隆机",
+"clone_powder": "克隆粉",
+"floating_cloner": "浮动克隆机",
+"virus": "病毒",
+"ice_nine": "冰-九",
+"strange_matter": "奇怪物质",
+"permafrost": "永冻土",
+"melted_butter": "融化牛油",
+"melted_cheese": "融化芝士",
+"mushroom_spore": "蘑菇孢子",
+"mushroom_stalk": "蘑菇茎",
+"mushroom_gill": "蘑菇鳃",
+"mushroom_cap": "蘑菇帽",
+"hyphae": "菌丝",
+"mycelium": "菌丝体",
+"mulch": "覆盖物",
+"ant_wall": "蚂蚁墙",
+"lichen": "地衣",
+"antimatter": "反物质",
+"plastic": "塑料",
+"molten_plastic": "熔融塑料",
+"cellulose": "纤维素",
+"wax": "蜡",
+"melted_wax": "熔化蜡",
+"incense": "香",
+"fuse": "保险丝",
+"dioxin": "二恶英",
+"insulation": "绝缘",
+"sponge": "海绵",
+"bamboo": "竹子",
+"iron": "铁",
+"copper": "铜",
+"gold": "金",
+"steel": "钢",
+"nickel": "镍",
+"zinc": "锌",
+"silver": "银",
+"tin": "相信",
+"lead": "带领",
+"aluminum": "铝",
+"tungsten": "钨",
+"molten_tungsten": "熔融钨",
+"brass": "黄铜",
+"bronze": "青铜",
+"sterling": "英镑",
+"gallium": "镓",
+"molten_gallium": "熔融镓",
+"gallium_gas": "镓气",
+"rose_gold": "玫瑰金",
+"purple_gold": "紫金",
+"blue_gold": "蓝金",
+"electrum": "金金银",
+"pyrite": "黄铁矿",
+"solder": "焊接",
+"molten_copper": "熔融铜",
+"molten_gold": "熔融金",
+"molten_silver": "熔银",
+"molten_iron": "铁水",
+"molten_nickel": "熔融镍",
+"molten_tin": "熔锡",
+"molten_lead": "熔化铅",
+"molten_solder": "熔化焊料",
+"juice": "果汁",
+"juice_ice": "果汁冰",
+"broth": "汤",
+"milk": "牛奶",
+"chocolate_milk": "巧克力牛奶",
+"fruit_milk": "水果牛奶",
+"pilk": "气水牛奶",
+"eggnog": "蛋奶",
+"egg": "蛋",
+"yolk": "蛋黄",
+"hard_yolk": "硬蛋黄",
+"nut_milk": "坚果奶",
+"dough": "面团",
+"batter": "面糊",
+"homunculus": "何蒙库鲁兹",
+"butter": "牛油",
+"cheese": "芝士",
+"rotten_cheese": "腐烂芝士",
+"chocolate": "巧克力",
+"grape": "葡萄",
+"vinegar": "醋",
+"herb": "芭",
+"lettuce": "生菜",
+"pickle": "泡菜",
+"tomato": "西红柿",
+"sauce": "酱",
+"pumpkin": "南瓜",
+"pumpkin_seed": "南瓜种子",
+"corn": "玉米",
+"popcorn": "爆米花",
+"corn_seed": "玉米种子",
+"potato": "土豆",
+"baked_potato": "烤土豆",
+"mashed_potato": "薯泥",
+"potato_seed": "马铃薯种子",
+"root": "根",
+"fiber": "纤维",
+"yeast": "酵母",
+"bread": "面包",
+"toast": "烤面包",
+"gingerbread": "姜饼",
+"crumb": "屑",
+"baked_batter": "烘焙面糊",
+"wheat": "麦",
+"candy": "糖果",
+"coffee_bean": "咖啡豆",
+"coffee_ground": "咖啡粉",
+"nut": "花生",
+"nut_meat": "花生碎",
+"nut_butter": "花生酱",
+"jelly": "布丁",
+"baking_soda": "苏打粉",
+"yogurt": "酸奶",
+"frozen_yogurt": "冰冻酸奶",
+"ice_cream": "冰淇凌",
+"cream": "奶油",
+"beans": "豆子",
+"dry_ice": "干冰",
+"nitrogen_ice": "氮冰",
+"particleboard": "皮肤",
+"skin": "皮肤",
+"hair": "头发",
+"alcohol": "酒",
+"alcohol_gas": "酒气",
+"basalt": "玄武岩",
+"tuff": "凝灰岩",
+"molten_tuff": "熔凝灰岩",
+"soap": "肥皂",
+"bleach": "漂白",
+"chlorine": "氯",
+"liquid_chlorine": "液氯",
+"dye": "染料",
+"ink": "墨水",
+"mercury": "汞",
+"mercury_gas": "汞气",
+"solid_mercury": "固体汞",
+"blood": "血",
+"vaccine": "疫苗",
+"antibody": "抗体",
+"infection": "感染",
+"poison": "毒",
+"poison_gas": "毒气",
+"poison_ice": "毒冰",
+"antidote": "解毒剂",
+"tea": "茶",
+"coffee": "咖啡",
+"honey": "蜂蜜",
+"sap": "树叶",
+"amber": "琥珀色",
+"caramel": "焦糖",
+"molasses": "糖蜜",
+"ketchup": "蕃茄酱",
+"mayo": "蛋黄酱",
+"melted_chocolate": "熔融巧克力",
+"liquid_hydrogen": "液氢",
+"liquid_oxygen": "液氧",
+"liquid_nitrogen": "液氮",
+"liquid_helium": "液氦",
+"sodium": "钠",
+"molten_sodium": "熔融钠",
+"sodium_gas": "钠气",
+"calcium": "钙",
+"molten_calcium": "熔融钙",
+"limestone": "石灰石",
+"quicklime": "生石灰",
+"slaked_lime": "熟石灰",
+"thermite": "铝热剂",
+"molten_thermite": "熔融铝热剂",
+"slag": "矿渣",
+"amalgam": "汞合金",
+"molten_aluminum": "熔融铝",
+"molten_zinc": "熔融锌",
+"neon": "氖气",
+"liquid_neon": "液体氖气",
+"smog": "烟雾",
+"stench": "臭",
+"liquid_stench": "液体恶臭",
+"fragrance": "香水",
+"perfume": "香水",
+"cyanide": "氰化物",
+"cyanide_gas": "氰化物气体",
+"ozone": "臭氧",
+"cloud": "云",
+"rain_cloud": "雨云",
+"snow_cloud": "雪云",
+"hail_cloud": "冰雹云",
+"thunder_cloud": "雷云",
+"acid_cloud": "酸云",
+"pyrocumulus": "火积云",
+"fire_cloud": "火云",
+"color_smoke": "彩色烟雾",
+"spray_paint": "喷漆",
+"led_r": "红灯",
+"led_g": "绿灯",
+"led_b": "蓝灯",
+"sulfur": "硫",
+"molten_sulfur": "熔融硫磺",
+"sulfur_gas": "硫磺气体",
+"copper_sulfate": "硫酸铜",
+"snake": "蛇",
+"loopy": "疯狂的",
+"warp": "经",
+"radiation": "辐射",
+"rad_steam": "辐射蒸汽",
+"rad_cloud": "拉德云",
+"fallout": "掉出来",
+"neutron": "中子",
+"proton": "质子",
+"electric": "电",
+"uranium": "铀",
+"molten_uranium": "熔融铀",
+"diamond": "钻石",
+"gold_coin": "硬币",
+"rust": "锈",
+"oxidized_copper": "氧化铜",
+"alga": "藻类",
+"metal_scrap": "金属废料",
+"glass_shard": "玻璃碎片",
+"rad_shard": "rad shard",
+"brick_rubble": "砖瓦砾",
+"baked_clay": "烘焙粘土",
+"clay_shard": "粘土碎片",
+"porcelain_shard": "瓷器碎片",
+"feather": "羽毛",
+"confetti": "五彩纸屑",
+"glitter": "闪光",
+"bead": "珠子",
+"color_sand": "彩色沙",
+"borax": "硼砂",
+"epsom_salt": "泻盐",
+"potassium_salt": "钾盐",
+"sodium_acetate": "乙酸钠",
+"lightning": "闪电",
+"bless": "保佑",
+"god_ray": "神雷",
+"heat_ray": "热射线",
+"explosion": "爆炸",
+"n_explosion": "n 爆炸",
+"supernova": "超新星",
+"pop": "爆",
+"cook": "煮",
+"incinerate": "焚化",
+"room_temp": "房间温度",
+"positron": "正电子",
+"tnt": "tnt",
+"c4": "C4",
+"grenade": "手榴弹",
+"dynamite": "炸药",
+"gunpowder": "火药",
+"ember": "人类",
+"firework": "烟花",
+"fw_ember": "烟火",
+"nuke": "核武器",
+"h_bomb": "h 炸弹",
+"dirty_bomb": "脏炸弹",
+"emp_bomb": "电子炸弹",
+"nitro": "硝基",
+"greek_fire": "希腊火",
+"fireball": "火球",
+"rocket": "火箭",
+"cold_bomb": "冷炸弹",
+"hot_bomb": "热炸弹",
+"antimatter_bomb": "反物质炸弹",
+"party_popper": "礼花",
+"flashbang": "光榴弹",
+"flash": "闪光",
+"smoke_grenade": "烟榴弹",
+"landmine": "地雷",
+"armageddon": "世界末日",
+"tesla_coil": "特斯拉线圈",
+"light_bulb": "灯泡",
+"shocker": "令人震惊",
+"pressure_plate": "压力板",
+"primordial_soup": "原始汤",
+"molten_slag": "熔渣",
+"molten_dirt": "熔化污垢",
+"debug": "调试",
+"prop": "支柱",
+"salt_ice": "盐水冰",
+"sugar_ice": "糖水冰",
+"seltzer_ice": "苏打水冰",
+"dirty_ice": "脏冰",
+"pool_ice": "池冰",
+"blood_ice": "血冰",
+"antibody_ice": "抗体 冰",
+"infection_ice": "感染冰",
+"unknown": "未知",
+"slime_ice": "史莱姆 冰",
+"antiice": "防冰",
+"ammonia_ice": "氨 冰",
+"liquid_propane": "液体丙烷",
+"methane_ice": "甲烷 冰",
+"molten_brick": "熔化的砖",
+"acid_ice": "酸 冰",
+"soda_ice": "汽水冰",
+"molten_steel": "钢水",
+"molten_brass": "熔融黄铜",
+"molten_bronze": "熔化青铜",
+"molten_sterling": "熔化英镑",
+"molten_rose_gold": "熔化玫瑰金",
+"molten_purple_gold": "熔化紫金",
+"molten_blue_gold": "熔蓝金",
+"molten_electrum": "熔融金金矿",
+"molten_pyrite": "熔融黄铁矿",
+"broth_ice": "肉汤冰",
+"frozen_vinegar": "冷冻醋",
+"sauce_ice": "酱冰",
+"alcohol_ice": "酒冰",
+"bleach_ice": "漂白冰",
+"chlorine_ice": "氯冰",
+"frozen_ink": "冰冻墨水",
+"tea_ice": "茶冰",
+"coffee_ice": "咖啡冰",
+"hydrogen_ice": "氢冰",
+"oxygen_ice": "氧气 冰",
+"molten_amalgam": "熔融汞合金",
+"neon_ice": "霓虹灯冰",
+"cyanide_ice": "氰化物冰",
+"molten_copper_sulfate": "熔融硫酸铜",
+"molten_alga": "熔藻",
+"molten_metal_scrap": "熔融金属废料",
+"molten_borax": "熔融硼砂",
+"molten_epsom_salt": "熔盐",
+"molten_potassium_salt": "熔融钾盐",
+"molten_sodium_acetate": "熔融乙酸钠",
+"frozen_nitro": "冷冻硝基",
+"cured_meat": "腌肉",
"nut_oil": "花生油",
-"grease": "",
+"grease": "润滑脂",
"fat": "肥",
"potassium": "钾",
"molten_potassium": "熔融钾",
"magnesium": "镁",
"molten_magnesium": "熔融镁",
-"sandstorm": "",
+"sandstorm": "沙暴",
"caustic_potash": "氢氧化钾",
-"antibomb": "",
+"antibomb": "反炸弹",
"tornado": "龙卷风",
"earthquake": "地震",
"tsunami": "海啸",
-"blaster": "",
-"propane_ice": "",
-"molten_caustic_potash": "熔融氢氧化钾"
+"blaster": "冲击波",
+"propane_ice": "丙烷冰",
+"molten_caustic_potash": "熔融氢氧化钾",
+"cloth": "布",
+"kelp": "海带",
+"grinder": "磨床",
+"mixer": "混合机",
+"freeze_ray": "冷射线"
}
diff --git a/mod-list.html b/mod-list.html
index e89a809a..3d610c21 100644
--- a/mod-list.html
+++ b/mod-list.html
@@ -225,6 +225,7 @@
| more_breaking.js | Allows for breaking more elements in explosions | Alice |
| rays.js | Adds more Ray types | Alice |
| rays++.js | Adds a couple more rays | uptzik |
+| subspace.js | Adds the Subspace Tripmine from Roblox | nousernamefound |
| weapons.js | Adds varieties of different weapons | Jayd |
| Food & Cooking |
diff --git a/mods/aircrafts.js b/mods/aircrafts.js
index df5bb794..5668141c 100644
--- a/mods/aircrafts.js
+++ b/mods/aircrafts.js
@@ -1,4 +1,5 @@
//aircrafts
+elements.bomb.ignore = ["super_bomber_left","super_bomber_right"],
elements.fast_bullet_left = {
color: "#4c4e42",
behavior: [
@@ -222,4 +223,38 @@ elements.bomber_right = {
burnInto: "metal_scrap",
breakInto: "metal_scrap",
conduct: 1
+},
+elements.super_bomber_left = {
+ color: "#000000",
+ category: "aircrafts",
+ behavior: [
+ "XX|XX|XX",
+ "M1%3 AND EX:7>fire,fire,fire,metal_scrap|XX|XX",
+ "M1 AND EX:7>fire,fire,fire,metal_scrap|XX|XX",
+ "M1%3 AND CR:bomb|CR:bomb|CR:smoke%10 AND CR:bomb",
+ "CR:bomb|CR:bomb|CR:bomb",
+ ],
+ ignore: "bomb",
+ burnTime: 1000,
+ burn: 40,
+ burnInto: "metal_scrap",
+ breakInto: "metal_scrap",
+ conduct: 1
+},
+elements.super_bomber_right = {
+ color: "#000000",
+ category: "aircrafts",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|M1%3 AND EX:7>fire,fire,fire,metal_scrap",
+ "XX|XX|M1 AND EX:7>fire,fire,fire,metal_scrap",
+ "CR:smoke%10 AND CR:bomb|CR:bomb|M1%3 AND CR:bomb",
+ "CR:bomb|CR:bomb|CR:bomb",
+ ],
+ ignore: "bomb",
+ burnTime: 1000,
+ burn: 40,
+ burnInto: "metal_scrap",
+ breakInto: "metal_scrap",
+ conduct: 1
}
\ No newline at end of file
diff --git a/mods/fast_lightmap.js b/mods/fast_lightmap.js
new file mode 100644
index 00000000..58cd9553
--- /dev/null
+++ b/mods/fast_lightmap.js
@@ -0,0 +1,285 @@
+// Redbirdly's Mod that adds a better light system
+// this is the faster version of lightmap.js (although lower quality)
+
+let lightmap = [];
+let nextLightmap = [];
+let lightmapWidth, lightmapHeight;
+let pixelSizeQuarter = pixelSizeHalf / 2;
+let lightmapScale = 3;
+
+// Define RGB colors
+let lightColor = [255, 223, 186];
+let sunColor = [255*8, 210*8, 26*8];
+let lampColor = [255*4, 223*4, 186*4];
+let laserColor = [255, 0, 0];
+let ledRColor = [255, 0, 0];
+let ledGColor = [0, 255, 0];
+let ledBColor = [0, 0, 255];
+let fireColor = [255, 69, 0];
+let plasmaColor = [160, 69, 255];
+let coldFireColor = [0, 191, 255];
+let magmaColor = [255, 140, 0];
+let neonColor = [255*2, 60*2, 10*2];
+
+function initializeLightmap(width, height) {
+ lightmapWidth = Math.ceil(width / lightmapScale);
+ lightmapHeight = Math.ceil(height / lightmapScale);
+
+ for (let y = 0; y < lightmapHeight; y++) {
+ lightmap[y] = [];
+ nextLightmap[y] = [];
+ for (let x = 0; x < lightmapWidth; x++) {
+ lightmap[y][x] = { color: [0, 0, 0] };
+ nextLightmap[y][x] = { color: [0, 0, 0] };
+ }
+ }
+}
+
+function deepCopy(source, target) {
+ for (let y = 0; y < source.length; y++) {
+ target[y] = [];
+ for (let x = 0; x < source[y].length; x++) {
+ target[y][x] = { ...source[y][x] };
+ }
+ }
+}
+
+function propagateLightmap() {
+ if (!lightmap || !lightmap[0]) { return; }
+ let width = lightmap[0].length;
+ let height = lightmap.length;
+
+ let neighbors = [
+ { dx: 1, dy: 0 },
+ { dx: -1, dy: 0 },
+ { dx: 0, dy: 1 },
+ { dx: 0, dy: -1 },
+ ];
+
+ for (let y = 0; y < height; y++) {
+ for (let x = 0; x < width; x++) {
+ let totalColor = [0, 0, 0];
+ let neighborCount = 0;
+ neighbors.forEach(({ dx, dy }) => {
+ let nx = x + dx;
+ let ny = y + dy;
+ if (nx >= 0 && ny >= 0 && nx < width && ny < height) {
+ totalColor[0] += lightmap[ny][nx].color[0];
+ totalColor[1] += lightmap[ny][nx].color[1];
+ totalColor[2] += lightmap[ny][nx].color[2];
+ neighborCount++;
+ }
+ });
+ nextLightmap[y][x] = {
+ color: [
+ Math.min(Math.max(0, totalColor[0] / neighborCount * 0.8), 255*8),
+ Math.min(Math.max(0, totalColor[1] / neighborCount * 0.8), 255*8),
+ Math.min(Math.max(0, totalColor[2] / neighborCount * 0.8), 255*8)
+ ]
+ };
+ }
+ }
+
+ deepCopy(nextLightmap, lightmap);
+}
+
+function rgbToHsv(r, g, b) {
+ r /= 255, g /= 255, b /= 255;
+ let max = Math.max(r, g, b), min = Math.min(r, g, b);
+ let h, s, v = max;
+
+ let d = max - min;
+ s = max === 0 ? 0 : d / max;
+
+ if (max === min) {
+ h = 0;
+ } else {
+ switch (max) {
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
+ case g: h = (b - r) / d + 2; break;
+ case b: h = (r - g) / d + 4; break;
+ }
+ h /= 6;
+ }
+
+ return [h, s, v];
+}
+
+function hsvToRgb(h, s, v) {
+ let r, g, b;
+
+ let i = Math.floor(h * 6);
+ let f = h * 6 - i;
+ let p = v * (1 - s);
+ let q = v * (1 - f * s);
+ let t = v * (1 - (1 - f) * s);
+
+ switch (i % 6) {
+ case 0: r = v, g = t, b = p; break;
+ case 1: r = q, g = v, b = p; break;
+ case 2: r = p, g = v, b = t; break;
+ case 3: r = p, g = q, b = v; break;
+ case 4: r = t, g = p, b = v; break;
+ case 5: r = v, g = p, b = q; break;
+ }
+
+ return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
+}
+
+function renderLightmap() {
+ if (!canvas) { return; }
+ if (!lightmap || !lightmap[0]) { return; }
+ let context = canvas.getContext('2d');
+ let width = lightmap[0].length;
+ let height = lightmap.length;
+
+ for (let y = 0; y < height; y++) {
+ for (let x = 0; x < width; x++) {
+ let { color } = lightmap[y][x];
+ let [r, g, b] = color;
+ if (r > 0 || g > 0 || b > 0) {
+ let [h, s, v] = rgbToHsv(r, g, b);
+ let newColor = hsvToRgb(h, s, 1);
+ let alpha = v;
+
+ context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha*0.4})`;
+ context.fillRect(
+ x * pixelSize * lightmapScale,
+ y * pixelSize * lightmapScale,
+ pixelSize * lightmapScale,
+ pixelSize * lightmapScale
+ );
+ context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`;
+ context.fillRect(
+ (x * pixelSize - pixelSizeHalf) * lightmapScale,
+ (y * pixelSize - pixelSizeHalf) * lightmapScale,
+ pixelSize * lightmapScale * 2,
+ pixelSize * lightmapScale * 2
+ );
+ }
+ }
+ }
+}
+
+elements.sun.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: sunColor };
+};
+
+let originalLightTick = elements.light.tick;
+elements.light.tick = function(pixel) {
+ originalLightTick(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: lightColor };
+};
+
+let originalLiquidLightTick = elements.liquid_light.tick;
+elements.liquid_light.tick = function(pixel) {
+ originalLiquidLightTick(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: lightColor };
+};
+
+elements.magma.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: fireColor };
+};
+
+elements.neon.tick = function(pixel) {
+ if (!pixel.charge || pixel.charge <= 0) {return;}
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: neonColor };
+};
+
+elements.light_bulb.behaviorOn = null
+elements.light_bulb.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 10;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: lampColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+elements.led_r.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 4;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: ledRColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+elements.led_g.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 4;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: ledGColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+elements.led_b.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 4;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: ledBColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+let originalLaserTick = elements.laser.tick;
+elements.laser.tick = function(pixel) {
+ originalLaserTick(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: laserColor };
+};
+
+let originalFireTick2 = elements.fire.tick;
+elements.fire.tick = function(pixel) {
+ originalFireTick2(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: fireColor };
+};
+
+elements.cold_fire.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: coldFireColor };
+};
+
+elements.plasma.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: plasmaColor };
+};
+
+// Wait for loading
+// if it loads too soon then width will be undefined
+setTimeout(() => { initializeLightmap(width, height); }, 700);
+
+// Add code to functions instead of replacing them
+let originalTick = tick;
+tick = function() {
+ originalTick();
+ if (!paused) {propagateLightmap();}
+};
+// Even after updating tick(), setInterval still uses the old tick(), reset setInterval
+resetInterval(tps);
+
+let originalDrawPixels = drawPixels;
+drawPixels = function(forceTick = false) {
+ originalDrawPixels(forceTick);
+ renderLightmap();
+};
diff --git a/mods/funnynames.js b/mods/funnynames.js
index ef657e4a..749063b2 100644
--- a/mods/funnynames.js
+++ b/mods/funnynames.js
@@ -1,3 +1,169 @@
+function getImportantLetters(input) { // entirely chadgbd i just told it what algoritm to make
+ const isVowel = char => 'AEIOU'.includes(char);
+ const isConsonant = char => /^[BCDFGHJKLMNPQRSTVWXYZ]$/.test(char);
+
+ const removeDuplicates = str => {
+ let seen = new Set();
+ return str.split('').filter(char => {
+ if (seen.has(char)) {
+ return false;
+ } else {
+ seen.add(char);
+ return true;
+ }
+ }).join('');
+ };
+
+ const words = input.replace(/[^a-zA-Z0-9\s_]/g, '').replace(/_/g, ' ').toUpperCase().split(/\s+/);
+
+ if (input.length <= 4) {
+ return input.toUpperCase();
+ } else if (words.length === 1) {
+ const word = removeDuplicates(words[0]);
+ let result = '';
+ let consonantCount = 0;
+ let vowelFound = false;
+
+ for (let char of word) {
+ if (isVowel(char) && !vowelFound) {
+ result += char;
+ vowelFound = true;
+ } else if (isConsonant(char) && consonantCount < 3) {
+ result += char;
+ consonantCount++;
+ }
+ if (result.length === 4) {
+ break;
+ }
+ }
+
+ return result.padEnd(4, result[result.length - 1] || '');
+ } else if (words.length === 2) {
+ const firstWord = words[0];
+ const secondWord = words[1];
+ let result = '';
+
+ if (isNaN(firstWord) && !isNaN(secondWord)) {
+ const word = removeDuplicates(firstWord);
+ let consonantCount = 0;
+ let vowelFound = false;
+
+ for (let char of word) {
+ if (isVowel(char) && !vowelFound) {
+ result += char;
+ vowelFound = true;
+ } else if (isConsonant(char) && consonantCount < 2) {
+ result += char;
+ consonantCount++;
+ }
+ if (result.length === 3) {
+ break;
+ }
+ }
+ result = result.padEnd(3, result[result.length - 1] || '') + secondWord;
+ } else if (!isNaN(firstWord) && isNaN(secondWord)) {
+ const word = removeDuplicates(secondWord);
+ let consonantCount = 0;
+ let vowelFound = false;
+
+ for (let char of word) {
+ if (isVowel(char) && !vowelFound) {
+ result += char;
+ vowelFound = true;
+ } else if (isConsonant(char) && consonantCount < 2) {
+ result += char;
+ consonantCount++;
+ }
+ if (result.length === 3) {
+ break;
+ }
+ }
+ result = result.padEnd(3, result[result.length - 1] || '') + firstWord;
+ } else {
+ result = firstWord[0];
+ let consonants = [];
+ let vowels = [];
+ let allChars = [];
+
+ for (let char of secondWord) {
+ allChars.push(char);
+ if (isConsonant(char)) {
+ consonants.push(char);
+ } else if (isVowel(char)) {
+ vowels.push(char);
+ }
+ }
+
+ if (consonants.length >= 3) {
+ let consonantCount = 0;
+ for (let char of allChars) {
+ if (isConsonant(char) && consonantCount < 3) {
+ result += char;
+ consonantCount++;
+ }
+ if (result.length === 4) {
+ break;
+ }
+ }
+ } else if (consonants.length === 2) {
+ let consonantCount = 0;
+ let vowelCount = 0;
+ for (let char of allChars) {
+ if (isConsonant(char) && consonantCount < 2) {
+ result += char;
+ consonantCount++;
+ } else if (isVowel(char) && vowelCount < 1) {
+ result += char;
+ vowelCount++;
+ }
+ }
+ } else {
+ let consonantCount = 0;
+ let vowelCount = 0;
+ for (let char of allChars) {
+ if (isConsonant(char) && consonantCount < 1) {
+ result += char;
+ consonantCount++;
+ } else if (isVowel(char) && vowelCount < 2) {
+ result += char;
+ vowelCount++;
+ }
+ if (result.length === 4) {
+ break;
+ }
+ }
+ }
+
+ result = result.padEnd(4, result[result.length - 1] || '');
+ }
+
+ return result;
+ } else if (words.length === 3) {
+ const firstWord = words[0];
+ const secondWord = words[1];
+ const thirdWord = words[2];
+ let result = firstWord[0] + secondWord[0];
+ let consonantCount = 0;
+ let vowelFound = false;
+
+ for (let char of thirdWord) {
+ if (isVowel(char) && !vowelFound) {
+ result += char;
+ vowelFound = true;
+ } else if (isConsonant(char) && consonantCount < 1) {
+ result += char;
+ consonantCount++;
+ }
+ if (result.length === 4) {
+ break;
+ }
+ }
+
+ return result.padEnd(4, result[result.length - 1] || '');
+ } else {
+ return words.map(word => word[0]).join('').slice(0, 4);
+ }
+}
function swapObjectValues(obj) {
const keys = Object.keys(obj);
while (keys.length > 1) {
@@ -50,12 +216,15 @@ elements.name_settings = {
if (doNameSwapping == "yes"){settings.funnyname.doNameSwapping = true} else {settings.funnyname.doNameSwapping = false}
var doLetterSwapping = prompt("Would you like to swap the letters in the names? Type yes or no.", "no")
if (doLetterSwapping == "yes"){settings.funnyname.doLetterSwapping = true} else {settings.funnyname.doLetterSwapping = false}
+ var condenseToFour = prompt("Would you like to condense the names to 4 letters? Also known as TPT-ify. Type yes or no.", "no")
+ if (condenseToFour == "yes"){settings.funnyname.condenseToFour = true} else {settings.funnyname.condenseToFour = false}
var doNameRates = prompt("Would you like to make the names a rating? If yes, this will set all others to no (it is incompatible.) Type yes or no.", "no")
if (doNameRates == "yes"){
settings.funnyname.doNameRates = true
settings.funnyname.doNameSwapping = false
settings.funnyname.doVowelSwapping = false
settings.funnyname.doLetterSwapping = false
+ settings.funnyname.condenseToFour = false
} else {settings.funnyname.doNameRates = false}
saveSettings()
var allNamesString = prompt("Would you like to set all names to a custom string? This will set all others to no. Type yes or no.", "no")
@@ -64,6 +233,7 @@ elements.name_settings = {
settings.funnyname.doNameSwapping = false
settings.funnyname.doVowelSwapping = false
settings.funnyname.doLetterSwapping = false
+ settings.funnyname.condenseToFour = false
settings.funnyname.doNameRates = false
customName = prompt("What would you like to set the names to?", "")
settings.funnyname.customName = true
@@ -138,5 +308,13 @@ runAfterAutogen(
}
}
}
+ if (settings.funnyname.condenseToFour){
+ for (let elementname in elements){
+ if (elementname != "name_settings"){
+ let newelementname = getImportantLetters((elements[elementname].name)||elementname)
+ elements[elementname].name = newelementname
+ }
+ }
+ }
}
)
\ No newline at end of file
diff --git a/mods/jaydstuff.js b/mods/jaydstuff.js
index 5390d5c0..54cc0a71 100644
--- a/mods/jaydstuff.js
+++ b/mods/jaydstuff.js
@@ -377,7 +377,6 @@ elements.left_push = {
breakPixel(p);
}
}
- if (p.del || !elements[p.element].movable) { return }
tryMove(p,p.x-1,p.y);
}
})
@@ -413,7 +412,6 @@ elements.right_push = {
breakPixel(p);
}
}
- if (p.del || !elements[p.element].movable) { return }
tryMove(p,p.x+1,p.y);
}
})
@@ -449,7 +447,6 @@ elements.up_push = {
breakPixel(p);
}
}
- if (p.del || !elements[p.element].movable) { return }
tryMove(p,p.x,p.y-1);
}
})
@@ -485,7 +482,6 @@ elements.down_push = {
breakPixel(p);
}
}
- if (p.del || !elements[p.element].movable) { return }
tryMove(p,p.x,p.y+1);
}
})
@@ -501,6 +497,168 @@ elements.down_push = {
state: "solid",
density: 100000000,
excludeRandom: true,
+},
+elements.leftquake = {
+ color: ["#bda791","#997756","#613d19"],
+ tick: function(pixel) {
+ if (pixel.stage) {
+ var coords = circleCoords(pixel.x,pixel.y,pixel.stage);
+ if (pixel.stage >= pixel.mag) {
+ deletePixel(pixel.x,pixel.y);
+ return;
+ }
+ coords.forEach(function(coord){
+ var x = coord.x;
+ var y = coord.y;
+ if (!isEmpty(x,y,true)) {
+ var p = pixelMap[x][y];
+ if (p.element === "leftquake") {
+ if (pixel !== p) {
+ pixel.mag += 3;
+ deletePixel(p.x,p.y);
+ }
+ return;
+ }
+ if (elements[p.element].breakInto) {
+ if (Math.random() < (elements[p.element].hardness || 1) * 0.25) {
+ breakPixel(p);
+ }
+ }
+ if (p.del || !elements[p.element].movable) { return }
+ tryMove(p,p.x+1,p.y);
+ }
+ })
+ pixel.stage++;
+ }
+ else if (!tryMove(pixel,pixel.x-1,pixel.y)) {
+ // random 10 to 20
+ pixel.mag = Math.floor(Math.random() * 10) + 20;
+ pixel.stage = 1;
+ }
+ },
+ category: "weapons",
+ state: "solid",
+ density: 100000000,
+ maxSize: 1,
+ cooldown: defaultCooldown,
+ excludeRandom: true,
+},
+elements.rightquake = {
+ color: ["#bda791","#997756","#613d19"],
+ tick: function(pixel) {
+ if (pixel.stage) {
+ var coords = circleCoords(pixel.x,pixel.y,pixel.stage);
+ if (pixel.stage >= pixel.mag) {
+ deletePixel(pixel.x,pixel.y);
+ return;
+ }
+ coords.forEach(function(coord){
+ var x = coord.x;
+ var y = coord.y;
+ if (!isEmpty(x,y,true)) {
+ var p = pixelMap[x][y];
+ if (p.element === "rightquake") {
+ if (pixel !== p) {
+ pixel.mag += 3;
+ deletePixel(p.x,p.y);
+ }
+ return;
+ }
+ if (elements[p.element].breakInto) {
+ if (Math.random() < (elements[p.element].hardness || 1) * 0.25) {
+ breakPixel(p);
+ }
+ }
+ if (p.del || !elements[p.element].movable) { return }
+ tryMove(p,p.x-1,p.y);
+ }
+ })
+ pixel.stage++;
+ }
+ else if (!tryMove(pixel,pixel.x+1,pixel.y)) {
+ // random 10 to 20
+ pixel.mag = Math.floor(Math.random() * 10) + 20;
+ pixel.stage = 1;
+ }
+ },
+ category: "weapons",
+ state: "solid",
+ density: 100000000,
+ maxSize: 1,
+ cooldown: defaultCooldown,
+ excludeRandom: true,
+},
+elements.upquake = {
+ color: ["#bda791","#997756","#613d19"],
+ tick: function(pixel) {
+ if (pixel.stage) {
+ var coords = circleCoords(pixel.x,pixel.y,pixel.stage);
+ if (pixel.stage >= pixel.mag) {
+ deletePixel(pixel.x,pixel.y);
+ return;
+ }
+ coords.forEach(function(coord){
+ var x = coord.x;
+ var y = coord.y;
+ if (!isEmpty(x,y,true)) {
+ var p = pixelMap[x][y];
+ if (p.element === "upquake") {
+ if (pixel !== p) {
+ pixel.mag += 3;
+ deletePixel(p.x,p.y);
+ }
+ return;
+ }
+ if (elements[p.element].breakInto) {
+ if (Math.random() < (elements[p.element].hardness || 1) * 0.25) {
+ breakPixel(p);
+ }
+ }
+ if (p.del || !elements[p.element].movable) { return }
+ tryMove(p,p.x,p.y+1);
+ }
+ })
+ pixel.stage++;
+ }
+ else if (!tryMove(pixel,pixel.x,pixel.y-1)) {
+ // random 10 to 20
+ pixel.mag = Math.floor(Math.random() * 10) + 20;
+ pixel.stage = 1;
+ }
+ },
+ category: "weapons",
+ state: "solid",
+ density: 100000000,
+ maxSize: 1,
+ cooldown: defaultCooldown,
+ excludeRandom: true,
+},
+createAtXvar = 0;
+createAtYvar = 0;
+create1var = "";
+elements.element_spawner = {
+ color: "#71797E",
+ onSelect: function() {
+ var answer1 = prompt("Please input the x value.",(createAtXvar||undefined));
+ if (!answer1) {return}
+ createAtXvar = parseInt(answer1);
+ var answer2 = prompt("Please input the y value.",(createAtYvar||undefined));
+ if (!answer2) {return}
+ createAtYvar = parseInt(answer2);
+ var answer3 = prompt("Please input what element should spawn.",(create1var||undefined));
+ if (!answer3) {return}
+ create1var = answer3;
+ },
+ tick: function(pixel) {
+ if (pixel.charge){
+ createPixel(create1var, createAtXvar, createAtYvar);
+ }
+ doDefaults(pixel);
+ },
+ density: 1,
+ conduct: 1,
+ state: "solid",
+ category: "machines"
//hello nouser if you are reading this:
};
};
diff --git a/mods/lightmap.js b/mods/lightmap.js
new file mode 100644
index 00000000..93ddcdf0
--- /dev/null
+++ b/mods/lightmap.js
@@ -0,0 +1,285 @@
+// Redbirdly's Mod that adds a better light system
+// if the mod is too laggy, use fast_lightmap.js
+
+let lightmap = [];
+let nextLightmap = [];
+let lightmapWidth, lightmapHeight;
+let pixelSizeQuarter = pixelSizeHalf / 2;
+let lightmapScale = 2;
+
+// Define RGB colors
+let lightColor = [255, 223, 186];
+let sunColor = [255*8, 210*8, 26*8];
+let lampColor = [255*4, 223*4, 186*4];
+let laserColor = [255, 0, 0];
+let ledRColor = [255, 0, 0];
+let ledGColor = [0, 255, 0];
+let ledBColor = [0, 0, 255];
+let fireColor = [255, 69, 0];
+let plasmaColor = [160, 69, 255];
+let coldFireColor = [0, 191, 255];
+let magmaColor = [255, 140, 0];
+let neonColor = [255*2, 60*2, 10*2];
+
+function initializeLightmap(width, height) {
+ lightmapWidth = Math.ceil(width / lightmapScale);
+ lightmapHeight = Math.ceil(height / lightmapScale);
+
+ for (let y = 0; y < lightmapHeight; y++) {
+ lightmap[y] = [];
+ nextLightmap[y] = [];
+ for (let x = 0; x < lightmapWidth; x++) {
+ lightmap[y][x] = { color: [0, 0, 0] };
+ nextLightmap[y][x] = { color: [0, 0, 0] };
+ }
+ }
+}
+
+function deepCopy(source, target) {
+ for (let y = 0; y < source.length; y++) {
+ target[y] = [];
+ for (let x = 0; x < source[y].length; x++) {
+ target[y][x] = { ...source[y][x] };
+ }
+ }
+}
+
+function propagateLightmap() {
+ if (!lightmap || !lightmap[0]) { return; }
+ let width = lightmap[0].length;
+ let height = lightmap.length;
+
+ let neighbors = [
+ { dx: 1, dy: 0 },
+ { dx: -1, dy: 0 },
+ { dx: 0, dy: 1 },
+ { dx: 0, dy: -1 },
+ ];
+
+ for (let y = 0; y < height; y++) {
+ for (let x = 0; x < width; x++) {
+ let totalColor = [0, 0, 0];
+ let neighborCount = 0;
+ neighbors.forEach(({ dx, dy }) => {
+ let nx = x + dx;
+ let ny = y + dy;
+ if (nx >= 0 && ny >= 0 && nx < width && ny < height) {
+ totalColor[0] += lightmap[ny][nx].color[0];
+ totalColor[1] += lightmap[ny][nx].color[1];
+ totalColor[2] += lightmap[ny][nx].color[2];
+ neighborCount++;
+ }
+ });
+ nextLightmap[y][x] = {
+ color: [
+ Math.min(Math.max(0, totalColor[0] / neighborCount * 0.8), 255*8),
+ Math.min(Math.max(0, totalColor[1] / neighborCount * 0.8), 255*8),
+ Math.min(Math.max(0, totalColor[2] / neighborCount * 0.8), 255*8)
+ ]
+ };
+ }
+ }
+
+ deepCopy(nextLightmap, lightmap);
+}
+
+function rgbToHsv(r, g, b) {
+ r /= 255, g /= 255, b /= 255;
+ let max = Math.max(r, g, b), min = Math.min(r, g, b);
+ let h, s, v = max;
+
+ let d = max - min;
+ s = max === 0 ? 0 : d / max;
+
+ if (max === min) {
+ h = 0;
+ } else {
+ switch (max) {
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
+ case g: h = (b - r) / d + 2; break;
+ case b: h = (r - g) / d + 4; break;
+ }
+ h /= 6;
+ }
+
+ return [h, s, v];
+}
+
+function hsvToRgb(h, s, v) {
+ let r, g, b;
+
+ let i = Math.floor(h * 6);
+ let f = h * 6 - i;
+ let p = v * (1 - s);
+ let q = v * (1 - f * s);
+ let t = v * (1 - (1 - f) * s);
+
+ switch (i % 6) {
+ case 0: r = v, g = t, b = p; break;
+ case 1: r = q, g = v, b = p; break;
+ case 2: r = p, g = v, b = t; break;
+ case 3: r = p, g = q, b = v; break;
+ case 4: r = t, g = p, b = v; break;
+ case 5: r = v, g = p, b = q; break;
+ }
+
+ return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
+}
+
+function renderLightmap() {
+ if (!canvas) { return; }
+ if (!lightmap || !lightmap[0]) { return; }
+ let context = canvas.getContext('2d');
+ let width = lightmap[0].length;
+ let height = lightmap.length;
+
+ for (let y = 0; y < height; y++) {
+ for (let x = 0; x < width; x++) {
+ let { color } = lightmap[y][x];
+ let [r, g, b] = color;
+ if (r > 0 || g > 0 || b > 0) {
+ let [h, s, v] = rgbToHsv(r, g, b);
+ let newColor = hsvToRgb(h, s, 1);
+ let alpha = v;
+
+ context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha*0.4})`;
+ context.fillRect(
+ x * pixelSize * lightmapScale,
+ y * pixelSize * lightmapScale,
+ pixelSize * lightmapScale,
+ pixelSize * lightmapScale
+ );
+ context.fillStyle = `rgba(${newColor[0]}, ${newColor[1]}, ${newColor[2]}, ${alpha * 0.25})`;
+ context.fillRect(
+ (x * pixelSize - pixelSizeHalf) * lightmapScale,
+ (y * pixelSize - pixelSizeHalf) * lightmapScale,
+ pixelSize * lightmapScale * 2,
+ pixelSize * lightmapScale * 2
+ );
+ }
+ }
+ }
+}
+
+elements.sun.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: sunColor };
+};
+
+let originalLightTick = elements.light.tick;
+elements.light.tick = function(pixel) {
+ originalLightTick(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: lightColor };
+};
+
+let originalLiquidLightTick = elements.liquid_light.tick;
+elements.liquid_light.tick = function(pixel) {
+ originalLiquidLightTick(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: lightColor };
+};
+
+elements.magma.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: fireColor };
+};
+
+elements.neon.tick = function(pixel) {
+ if (!pixel.charge || pixel.charge <= 0) {return;}
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: neonColor };
+};
+
+elements.light_bulb.behaviorOn = null
+elements.light_bulb.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 10;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: lampColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+elements.led_r.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 4;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: ledRColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+elements.led_g.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 4;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: ledGColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+elements.led_b.tick = function(pixel) {
+ if (pixel.charge > 0) {pixel.lightIntensity = 4;}
+ if (pixel.lightIntensity > 0) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: ledBColor };
+ }
+ pixel.lightIntensity -= 1;
+};
+
+let originalLaserTick = elements.laser.tick;
+elements.laser.tick = function(pixel) {
+ originalLaserTick(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: laserColor };
+};
+
+let originalFireTick2 = elements.fire.tick;
+elements.fire.tick = function(pixel) {
+ originalFireTick2(pixel);
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: fireColor };
+};
+
+elements.cold_fire.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: coldFireColor };
+};
+
+elements.plasma.tick = function(pixel) {
+ let x = Math.floor(pixel.x / lightmapScale);
+ let y = Math.floor(pixel.y / lightmapScale);
+ lightmap[y][x] = { color: plasmaColor };
+};
+
+// Wait for loading
+// if it loads too soon then width will be undefined
+setTimeout(() => { initializeLightmap(width, height); }, 700);
+
+// Add code to functions instead of replacing them
+let originalTick = tick;
+tick = function() {
+ originalTick();
+ if (!paused) {propagateLightmap();}
+};
+// Even after updating tick(), setInterval still uses the old tick(), reset setInterval
+resetInterval(tps);
+
+let originalDrawPixels = drawPixels;
+drawPixels = function(forceTick = false) {
+ originalDrawPixels(forceTick);
+ renderLightmap();
+};
diff --git a/mods/mossstuff.js b/mods/mossstuff.js
new file mode 100644
index 00000000..72336bd3
--- /dev/null
+++ b/mods/mossstuff.js
@@ -0,0 +1,2333 @@
+
+
+
+elements.freeze_ray = {
+ color: ["#8cf9ff","#5c59ff"],
+ 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 = "#96b6ff";
+ pixelMap[x][y].temp = -257;
+ }
+ 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 -= 100;
+ pixelTempCheck(pixelMap[x][y]);
+ break;
+ }
+ }
+ deletePixel(pixel.x, pixel.y);
+ },
+ temp: -257,
+ category: "energy",
+ state: "gas",
+ excludeRandom: true,
+ noMix: true
+};
+
+elements.devil_ray = {
+ color: ["#ba0000","#8f0000"],
+ tick: function(pixel) {
+ var x = pixel.x;
+ for (var y = pixel.y+1; y < height; y++) {
+ if (outOfBounds(x, y)) {
+ break;
+ }
+ if (isEmpty(x, y)) {
+ if (Math.random() > 0.1) { continue }
+ createPixel("flash", x, y);
+ pixelMap[x][y].color = ["#990000"];
+ }
+ else {
+ if (elements[pixelMap[x][y].element].id === elements.flash.id) { continue }
+ if (elements[pixelMap[x][y].element].id === elements.god_ray.id) { break }
+ if (!elements[pixelMap[x][y].element].isGas && isEmpty(x, y-1)) {
+ createPixel("curse", x, y-1);
+ }
+ if (Math.random() > 0.1) { continue }
+ elements.bless.tool(pixelMap[x][y])
+ }
+ }
+ deletePixel(pixel.x, pixel.y);
+ },
+ category: "energy",
+ state: "gas",
+ density: 1,
+ excludeRandom: true,
+ noMix: true
+};
+
+elements.beer = {
+ color: ["#ffc43d","#ffc43d"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 100,
+ stateHigh: ["fire","steam","steam"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.root_beer = {
+ color: ["#8b2f02","#732803"],
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ tempHigh: 100,
+ stateHigh: ["fire","steam","steam"],
+ isFood: true,
+};
+
+elements.fruit_slushy = {
+ color: ["#d43968","#ec5885","#f57ca1","#fba9c2","#ffe3eb"],
+ stateLowColorMultiplier: 1.3,
+ stateLow: "slushy_ice",
+ tempLow: "-50",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 100,
+ stateHigh: ["fire","steam","steam"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.mold = {
+ color: ["#b6d7a8","#6d9d5c","#ad8d6f"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+};
+
+elements.chocolate_slushy = {
+ color: ["#c3ae9a","#ae967f","#977b5f","#876b4f","#816346"],
+ stateLowColorMultiplier: 1.3,
+ tempLow: "-50",
+ stateLow: "slushy_ice",
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 100,
+ stateHigh: ["fire","steam","steam"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.chocolate_sauce = {
+ color: ["#491904","#54240b","#5e2d0b","#69371b","#764636"],
+ density: 10,
+ behavior: behaviors.LIQUID,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: 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,
+ isFood: true,
+};
+
+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,
+ isFood: true,
+};
+
+elements.snow_cone = {
+ color: ["#ebfeed","#f4fff5","#fefaff","#fff3fe","#fcf2fb"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 1096,
+ tempHigh: 15,
+ stateHigh: "smashed_ice",
+ temp: 0,
+ isFood: true,
+};
+
+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,
+ isFood: true,
+ 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,
+ isFood: true,
+};
+
+
+elements.chocolate_yogurt = {
+ color: ["#a87848","#a57e57","#c1a07f","#e2c5ac","#efd0b1"],
+ stateLowColorMultiplier: 1.3,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempLow: 0,
+ stateHigh: ["fire","steam","steam"],
+ tempHigh: 450,
+ stateLow: "frozen_chocolate_yogurt",
+ isFood: true,
+};
+
+elements.fruit_yogurt = {
+ color: ["#ffc3d8","#ffabd6","#ff96c5","#ff84c2","#ff5daf"],
+ stateLowColorMultiplier: 1.3,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempLow: 0,
+ stateLow: "frozen_fruit_yogurt",
+ isFood: true,
+ stateHigh: ["fire","steam","steam"],
+ tempHigh: 450,
+};
+
+elements.frozen_fruit_yogurt = {
+ color: ["#ffdfdf","#ffc0c0","#ff9b9b"],
+ stateHighColorMultiplier: 0.7,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 902,
+ tempHigh: 0,
+ stateHigh: "fruit_yogurt",
+ temp: 0,
+ isFood: true,
+};
+
+elements.frozen_chocolate_yogurt = {
+ color: ["#a87848","#a57e57","#c1a07f","#e2c5ac","#efd0b1"],
+ stateHighColorMultiplier: 0.7,
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ density: 902,
+ tempHigh: 0,
+ stateHigh: "chocolate_yogurt",
+ temp: 0,
+ isFood: true,
+};
+
+elements.frying_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" },
+ },
+ tempHigh: 350,
+ stateHigh: ["fire","steam","steam"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.chicken_nuggets = {
+ color: ["#8f411c","#a35935"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: 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",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+};
+
+elements.fried_snow = {
+ color: ["#f6c66a","#d29829","#905c1b"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.battery_acid = {
+ color: ["#8fff00","#1de446"],
+ behavior: behaviors.LIQUID,
+ category: "machines",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["steam","dioxin","stench"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["steam","dioxin","stench"],
+ isFood: true,
+};
+
+
+elements.steampunk_pancakes = {
+ color: "#252a33",
+ behavior: behaviors.POWDER,
+ category: "machines",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ //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",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ 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",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+};
+
+/*elements.color_pick = {
+ color: ["#ff0000","#ffd100","#00ff4b","#0005ff"],
+ behavior: [
+ "CF|CF|CF",
+ "CF|DL%5|CF",
+ "CF|CF|CF",
+ ],
+ category: "tools",
+ maxSize: 0,
+ darkText: true,
+ canPlace: false,
+ desc: "Use on a pixel to select its element."
+};*/
+
+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",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.seasoning = {
+ color: ["#945239","#896251"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.parmesan = {
+ color: ["#ffffdd","#ffffe4","#ffffeb","#fffff1","#fffff8"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+elements.baking_powder = {
+ color: "#fffaed",
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ reactions: {
+ "flour": { elem1: null, elem2: "advanced_dough" },
+ },
+ tempHigh: 350,
+ stateHigh: ["fire","fire","ash"],
+ burn:3,
+ burnTime:500,
+ burnInto: ["fire","smoke","smoke","steam","ash"],
+ isFood: true,
+};
+
+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" },
+ "chocolate_sauce": { elem1: null, elem2: "chocolate_slushy" },
+ },
+ density: 100,
+ tempHigh: 25,
+ stateHigh: "water",
+ tempLow: -100,
+ stateLow: "snow_cone",
+};
+
+elements.anti_torch = {
+ color: "#d68542",
+ behavior: [
+ "XX|CR:cold_fire|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ reactions: {
+ "water": { elem1:"wood" },
+ "sugar_water": { elem1:"wood" },
+ "salt_water": { elem1:"wood" },
+ "seltzer": { elem1:"wood" },
+ "dirty_water": { elem1:"wood" },
+ "pool_water": { elem1:"wood" },
+ "steam": { elem1:"wood" },
+ "smog": { elem1:"wood" },
+ "rain_cloud": { elem1:"wood" },
+ "cloud": { elem1:"wood" },
+ "snow_cloud": { elem1:"wood" },
+ "hail_cloud": { elem1:"wood" },
+ "thunder_cloud": { elem1:"wood" },
+ "ice_nine": { elem1:"wood" }
+ },
+ temp:-250,
+ category: "special",
+ breakInto: "sawdust",
+ insulate: true,
+};
+
+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",
+ alias: "mercedes benz",
+ reactions: {
+ "dna": { elem1: "moth", elem2: null },
+ }
+
+};
+
+elements.moth = {
+ color: ["#df8830","#e9b477","#a1591a","#a87a46","#4e3212"],
+ 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.holy_fire = {
+ color: ["#FEFFF8","#FFF0CE","#FFE792"],
+ behavior: [
+ "M1|M1|M1",
+ "M2|CH:bless%8|M2",
+ "XX|M2|XX",
+ ],
+ reactions: {
+ "fire": { elem1: "bless", elem2: "bless" },
+ "plasma": { elem1: "light", elem2: "light" }
+ },
+ temp:750,
+ tempLow:200,
+ tempHigh:1200,
+ stateLow: "bless",
+ stateHigh: "bless",
+ category: "energy",
+ state: "gas",
+ density: 0.1,
+ ignoreAir: true
+};
+
+elements.curse = {
+ color: ["#d27979","#bf4040","#752727"],
+ tool: function(pixel) {
+ if (elements.bless.ignore.indexOf(pixel.element) !== -1) { return; }
+ if (pixel.burning) { // stop burning
+ delete pixel.burning;
+ delete pixel.burnStart;
+ }
+ if (pixel.temp > 100) {
+ pixel.temp = (pixel.temp+100)/2;
+ pixelTempCheck(pixel);
+ if (pixel.del) {return}
+ }
+ if (pixel.temp < -200) {
+ pixel.temp = (pixel.temp-200)/2;
+ pixelTempCheck(pixel);
+ if (pixel.del) {return}
+ }
+ if (pixel.origColor) {
+ pixel.color = "rgb("+pixel.origColor.join(",")+")";
+ delete pixel.origColor;
+ }
+ if (pixel.charge) {
+ delete pixel.charge;
+ pixel.chargeCD = 16;
+ }
+ if (elements.bless.reactions[pixel.element] && Math.random()<0.25) {
+ var r = elements.bless.reactions[pixel.element];
+ var elem2 = r.elem2;
+ if (elem2 !== undefined) {
+ if (Array.isArray(elem2)) { elem2 = elem2[Math.floor(Math.random()*elem2.length)]; }
+ if (elem2 === null) { deletePixel(pixel.x,pixel.y) }
+ else { changePixel(pixel, elem2); }
+ }
+ if (r.func) { r.func(pixel,pixel) }
+ }
+ },
+ ignore: ["sun"],
+ behavior: [
+ "M2|M1|M2",
+ "M1|DL%25|M1",
+ "M2|M1|M2",
+ ],
+ reactions: {
+ "cell": { elem2: "cancer" },
+ "iron": { elem2: "rust" },
+ "copper": { elem2: "oxidized_copper" },
+ "antibody": { elem2:["blood",null] },
+ "antibody_ice": { elem2:"blood_ice" },
+ "dirty_water": { elem2: "water" },
+ "dna": { elem2: "plague" },
+ "antibody": { elem2: ["infection",null] },
+ "infection": { elem2: ["infection",null] },
+ "antidote": { elem2: "poison" },
+ "meat": { elem2: "rotten_meat" },
+ "cheese": { elem2: "rotten_cheese" },
+ "oxygen": { elem2: "carbon_dioxide" },
+ "hydrogen": { elem2: "acid_gas" },
+ "cloud": { elem2: "fire_cloud" },
+ "perfume": { elem2: "liquid_stench" },
+ "fragrance": { elem2: "stench" },
+ "seltzer": { elem2: "soda" },
+ "cloud": { elem2: "smog" },
+ "water": { elem2: "broth" },
+ "bless": { elem2: "plasma" },
+ "metal_scrap": { elem2: "grenade" },
+ "smoke": { elem2: "greek_fire" },
+ "rock": { elem2: "uranium", chance: 0.01},
+ "magma": { elem2: "molten_uranium", chance: 0.01},
+ "ice": { elem2: "ice_nine", chance: 0.01},
+ "frog": { elem2: "frozen_frog" },
+ "worm": { elem2: "frozen_worm" },
+ "rock": { elem2: "molten_thermite", chance: 0.01},
+ "glass": { elem2: "rad_glass", chance: 0.2 },
+ "shard": { elem2: "rad_shard", chance: 0.2 },
+ "steam": { elem2: "rad_steam", chance: 0.2 },
+ "rain_cloud": { elem2: "rad_cloud", chance: 0.2 },
+ "ball": { elem2: "ball", chance: 0.2 },
+ "bone": { elem2: "bone_marrow", chance: 0.2 },
+ "plant": { elem2: "dead_plant" },
+ "rock": { elem2: "rock", chance: 0.01 },
+ "magma": { elem2: "molten_slag", chance: 0.01 },
+ "light": { elem2: "laser", chance: 0.2 },
+ "flash": { elem2: "light", chance: 0.2 },
+ "wood": { elem2: "torch", chance: 0.01 },
+ "gold": { elem2: "lead", chance: 0.2 },
+ "molten_gold": { elem2: "molten_lead", chance: 0.2 },
+ "grass": { elem2: null },
+ "rainbow": { elem2: "static" },
+ },
+ temp:20,
+ state: "gas",
+ density: 0.001,
+ canPlace: true,
+ category: "energy",
+ stain: -0.5
+};
+
+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",
+ isFood: true,
+ breakIntoColor: "#450008",
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#bf4545","#982828"] },
+ }
+};
+
+elements.strawberry = {
+ color: ["#fb2943","#ff0033"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#bf0147","#c61548","#cc2857","#c62354","#c11848"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#a82953","#941540"] },
+ }
+};
+
+elements.apple = {
+ color: ["#fc3434","#f91515","#d30404","#9f0606","#aa0404"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffda69","#ffdb84"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f4ff49","#ffec2f"] },
+ }
+};
+
+elements.green_apple = {
+ color: ["#a8da61","#66cc00","#66cc33","#00cc00","#009900"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffda69","#ffdb84"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f4ff49","#ffec2f"] },
+ }
+};
+
+elements.orange = {
+ color: ["#ff9a00","#ffc100","#ff8100"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#ffc659","#ffb646","#ffa700","#ff8d00"],
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fbd808","#ff9005"] },
+ }
+};
+
+elements.kiwi = {
+ color: ["#a9c77e","#61ab5a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#a9c77e","#bad98f"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#a5d04c","#bbdc79"] },
+ }
+};
+
+elements.blueberry = {
+ color: ["#3e476f","#49598c","#5076b0","#5086c1","#8aa4ff"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#8abeee","#8aacf4","#9591ee","#787fdb","#7c74ce"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#5086c1","#5076b0"] },
+ }
+};
+
+elements.plum = {
+ color: ["#b62d82","#951661","#7c1249","#52001e","#360011"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#bf66c9","#d499db","#eacced"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#d8b2d8","#b266b2"] },
+ }
+};
+
+elements.blackberry = {
+ color: ["#2b0521","#3e0930","#4f123e","#601a4c","#6b2356"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#a941a1","#ba59b2","#c570bf"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ba59b2","#c570bf"] },
+ }
+};
+
+elements.peach = {
+ color: ["#f6a192","#f6b092","#f6c492","#f6cf92","#f6d992"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#fce5b8","#fcdab8","#fccfb8"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffe7dc","#ffdac8"] },
+ }
+};
+
+elements.lemon = {
+ color: ["#ffaa1d","#ffd300","#ffdf00","#ffff00","#fff44f"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#f8ff80","#f6ff6c","#f5ff57","#f3ff39","#f0ff00"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffffd8","#fffecf"] },
+ }
+};
+
+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",
+ isFood: true,
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ecffdc","#c3ffa8"] },
+ }
+};
+elements.banana = {
+ color: ["#ffb400","#ffc100","#ffdb00","#ffe700","#f0ff00"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: "#f0f060",
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fdf8d6","#f9efa6"] },
+ }
+};
+
+elements.blood_orange = {
+ color: ["#db4437","#fc3d39","#e5302d","#f6602d","#f65026"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff4600","#ff8353"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffc7b4","#ffa485"] },
+ }
+};
+
+elements.canary_melon = {
+ color: ["#e9ff0c","#e9ff0c","#ffed0c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffff9e","#fffcaa"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#e5ffb3","#ecff9c"] },
+ }
+};
+
+elements.honeydew_melon = {
+ color: ["#b9ffa3","#c9ffa3","#d9ffa3"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#e9ffa3","#f9ffa3"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#e8ffc9","#e8ffc8"] },
+ }
+};
+
+elements.cranberry = {
+ color: ["#471016","#7a1927","#69202f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "sauce",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ba4242","#7a1717"],
+ reactions: {
+ "soda": { elem1: null, elem2: "sprite_cranberry" },
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffc0c5","#ff8f99"] },
+ }
+};
+
+elements.pitaya = {
+ color: ["#f6a9d8","#d4306e","#6ab81f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff84ae","#ffafca"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffd4e3","#ffafca"] },
+ }
+};
+
+elements.coconut = {
+ color: ["#6b3314","#583203","#673e1c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "milk",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#f7e5d8","#fdefe5","#fff7f1"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fff2db","#ffefd4"] },
+ }
+};
+
+elements.cloudberry = {
+ color: ["#ff9636","#ffb169","#ffc896"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffe1c7","#fff9f3"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffd7ab","#ffcb93"] },
+ }
+};
+
+elements.crabapple = {
+ color: ["#850b0b","#a32d2d","#ab4545"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff8fcf","#ffb2de"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffd2ec","#ffb2de"] },
+ }
+};
+
+elements.cactus_fruit = {
+ color: ["#ff95b0","#ff80a0","#ff7489"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#75d802","#72d202"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#bbffc1","#84ff90"] },
+ }
+};
+
+elements.pear = {
+ color: ["#669900","#669933","#9ec419"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#c8e39e","#99cc99"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#c3ff9c","#bcff92"] },
+ }
+};
+
+elements.purpleberry = {
+ color: ["#8b04a8","#a236b9","#b968cb"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#c08cc3","#e49cc2"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fee6e4","#fbc3c4"] },
+ }
+};
+
+elements.yellowberry = {
+ color: ["#ffe505","#fffb05","#fdfa72"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#fffec8","#fffdaf"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fffec8","#fffdaf"] },
+ }
+};
+
+elements.pomegranate = {
+ color: ["#950000","#c93434","#df5555","#8f163f","#6d0606"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ee717f","#e94254"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f4a1a9","#ee717f"] },
+ }
+};
+
+elements.guava = {
+ color: ["#1ae132","#44e788","#0a7a22"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff5a76","#ff8fa2"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f6c8cd","#f2acb5"] },
+ }
+};
+
+elements.raspberry = {
+ color: ["#f90064","#980036","#60081a"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#f23a72","#fb79a0"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffb1f4","#ff91ce"] },
+ }
+};
+
+elements.gooseberry = {
+ color: ["#63041c","#760024","#81052a"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#8b0031","#920436"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#f1ffdb","#e3ffb7"] },
+ }
+};
+
+elements.fig = {
+ color: ["#1d1d3b","#2a2854","#402459"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff4a4a","#ea3838"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ff8d8d","#ffabab"] },
+ }
+};
+
+elements.durian = {
+ color: ["#b07939","#c09461","#d0af88"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#faffaf","#fbffbf"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#feffe7","#f9ffb3"] },
+ }
+};
+
+elements.passionfruit = {
+ color: ["#9d3385","#b15c9d","#c485b6"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffdede","#ffe4e4"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#d8adce","#c485b6"] },
+ }
+};
+
+elements.starfruit = {
+ color: ["#d5eb00","#ddef33","#e6f366"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#f2d553","#f5dd75"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#faeeba","#f7e698"] },
+ }
+};
+
+elements.rambutan = {
+ color: ["#ff4a4a","#ea3838"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#faffaf","#fbffbf"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fde0e0","#f4c1c1"] },
+ }
+};
+
+elements.nance = {
+ color: ["#ffff00","#ffff33"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffff66","#ffff99"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#fffee0","#fffec8"] },
+ }
+};
+
+elements.nectarine = {
+ color: ["#c92c0f","#cc4c58","#ea6161"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ffbd8b","#ffdbc0"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#ffc3ad","#ffa584"] },
+ }
+};
+
+elements.loganberry = {
+ color: ["#db1515","#e53939","#fd5f5f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff8f8f","#ffb7b7"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#9c91a5","#bdb5c3"] },
+ }
+};
+
+elements.currant = {
+ color: ["#ff1828","#ff505c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#ff878f","#ffbcc0"],
+ reactions: {
+ "sugar": { elem1: "jelly", elem2: null, tempMin: 100, color1: ["#cc6b69","#bb3a37"] },
+ }
+};
+
+elements.sprite_cranberry = {
+ color: ["#65000f","#89001c","#b40024"],
+ behavior: [
+ "XX|CR:foam%2|XX",
+ "M2|XX|M2",
+ "M2|M1|M2",
+ ],
+ category: "liquids",
+ state: "solid",
+};
+
+elements.mint = {
+ color: ["#72e88d","#53bd6c"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ 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",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#00b215","#0b8500"],
+};
+
+elements.broccoli_seed = {
+ color: "#b6c981",
+ behavior: [
+ "XX|M2%0.25|XX",
+ "XX|L2:broccoli AND C2:broccoli%30|XX",
+ "XX|M1|XX",
+ ],
+ tempHigh: 400,
+ stateHigh: "fire",
+ tempLow: -2,
+ stateLow: "frozen_plant",
+ burn: 50,
+ burnTime: 20,
+ breakInto: null,
+ category: "life",
+ state: "solid",
+ density: 769,
+ hidden: true,
+ cooldown: defaultCooldown,
+ seed: true,
+};
+
+elements.hot_pepper = {
+ color: ["#ffd013","#fb8a24","#ff5c3a","#d61439","#81032d"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ reactions: {
+ "sauce": { elem1: null, elem2: "hot_sauce" },
+ }
+};
+
+elements.hot_sauce = {
+ color: ["#ff0000","#f00000","#d20000","#c50000","#b00000"],
+ behavior: behaviors.LIQUID,
+ density: 10,
+ category: "food",
+ state: "solid",
+};
+
+elements.squash = {
+ color: ["#f2ab15","#f5bc44","#f7cd73"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#efbe79","#ffd599"],
+};
+
+elements.zuchinni = {
+ color: ["#375822","#58704a","#73816a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ breakIntoColor: ["#80a568","#a3c88c"],
+};
+
+elements.olive = {
+ color: ["#445626","#52682d","#6e8b3d"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "olive_oil",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.eggplant = {
+ color: ["#490b43","#30093a","#23033a"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "juice",
+ breakIntoColor: ["#674ea7","#351c75"],
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+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],
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.cinnamon = {
+ color: ["#cda67a","#986544","#6a462f"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.garlic = {
+ color: ["#f7f3e1","#f6f3c3","#f0e6bd"],
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ breakInto: "garlic_clove",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.garlic_clove = {
+ color: ["#b8b17f","#6b5628"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.carrot = {
+ color: ["#ea820b","#e89116","#e8a32b","#efb538"],
+ density: 675,
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ burnInto: "ash",
+ burn: 10,
+ burnTime: 300,
+ breakInto: "juice",
+ breakIntoColor: "#f1b956",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: 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",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+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,
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.oreo = {
+ color: "#120600",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+ reactions: {
+ "toorhpaste": { elem1: "poison_oreo", elem2: null },
+ }
+};
+
+elements.poison_oreo = {
+ color: "#001112",
+ behavior: behaviors.STURDYPOWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.sprinkles = {
+ color: ["#fbfa8f","#c5ecbd","#7ac7bf","#f29fa9","#e1848e"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.whipped_cream = {
+ color: ["#fffff0","#fffff3","#fffff6","#fffff9","#fffffc"],
+ behavior: behaviors.POWDER,
+ category: "food",
+ state: "solid",
+ hidden: "TRUE",
+ tempHigh: 130,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.olive_oil = {
+ color: ["#efcc3f","#efd672","#f1e09a"],
+ density: 675,
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "liquid",
+ burn: 10,
+ burnTime: 300,
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.seafoam = {
+ color: ["#a3c1ad","#a0d6b4","#5f9ea0","#317873","#49796b"],
+ behavior: behaviors.LIQUID,
+ category: "life",
+ state: "solid",
+};
+
+elements.pipis = {
+ color: ["#00BFFF","#0085B0"],
+ behavior: behaviors.POWDER,
+ category: "life",
+ state: "solid",
+ tempHigh: 256,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+elements.frog_bomb = {
+ color: ["#0f2105","#274e13","#6aa84f"],
+ behavior: [
+ "XX|EX:10>frog|XX",
+ "XX|XX|XX",
+ "M2|M1 AND EX:10>frog|M2",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ tempHigh: 1455.5,
+ stateHigh: "molten_steel",
+ excludeRandom: true,
+ cooldown: defaultCooldown
+},
+
+elements.cash_bomb = {
+ color: ["#e69138","#f1c232","#f6b26b"],
+ behavior: [
+ "XX|EX:10>gold_coin|XX",
+ "XX|XX|XX",
+ "M2|M1 AND EX:10>gold_coin|M2",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ tempHigh: 1455.5,
+ stateHigh: "molten_steel",
+ excludeRandom: true,
+ cooldown: defaultCooldown
+},
+
+elements.pi_pis = {
+ color: ["#0b5394","#073763","#3d85c6"],
+ behavior: [
+ "XX|EX:10>pipis|XX",
+ "XX|XX|XX",
+ "M2|M1 AND EX:10>pipis|M2",
+ ],
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|EX:6>metal_scrap,fire,fire,fire%1|XX",
+ "XX|XX|XX",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ tempHigh: 1455.5,
+ stateHigh: "molten_steel",
+ excludeRandom: true,
+ conduct: 1,
+ cooldown: defaultCooldown,
+ nocheer: true
+},
+
+elements.holy_hand_grenade = {
+ color: ["#ffd966","#ffc000","#fff2cc"],
+ behavior: [
+ "XX|EX:20>bless,holy_fire%1|XX",
+ "XX|XX|XX",
+ "M2|M1 AND EX:20>bless,holy_fire%1|M2",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ tempHigh: 1455.5,
+ stateHigh: "bless",
+ excludeRandom: true,
+ cooldown: defaultCooldown
+},
+
+elements.unholy_feet_bomb = {
+ color: ["#661a0e","#6b1f13","#803226"],
+ behavior: [
+ "XX|EX:20>curse,fire%1|XX",
+ "XX|XX|XX",
+ "M2|M1 AND EX:20>curse,fire%1|M2",
+ ],
+ category: "weapons",
+ state: "solid",
+ density: 1300,
+ tempHigh: 1455.5,
+ stateHigh: "curse",
+ excludeRandom: true,
+ cooldown: defaultCooldown,
+},
+
+//for(i = 1, i++, i>10){
+
+//}
+/*
+for (let i = 0; i < 100; i++) {
+ if(unholy_feet_bomb.hidden == false) {
+ if(curse.hidden == false) {
+ if(holy_hand_grenade.hidden == false) {
+ unholy_feet_bomb.hidden = false;
+ }
+ }
+ }
+ i = 0;
+ }
+ */
+
+
+elements.chocolate_fountain = {
+ color: "#3e1d07",
+ behavior: [
+ "XX|CR:melted_chocolate|XX",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ category:"special",
+ tempHigh: 1455.5,
+ stateHigh: "molten_steel",
+ conduct: 0.42,
+ state: "solid",
+};
+
+elements.legacy_rocket = {
+ color: "#ff0000",
+ behavior: [
+ "XX|M1|XX",
+ "XX|DL%1|XX",
+ "CR:smoke|CR:fire|CR:smoke",
+ ],
+ category: "legacy",
+ hidden:true,
+ state: "solid",
+ temp:700,
+ density: 7300,
+ conduct: 0.73,
+ tempHigh: 1455.5,
+ stateHigh: "molten_steel"
+};
+
+elements.legacy_dough = {
+ color: "#bfac91",
+ behavior: behaviors.STURDYPOWDER,
+ onMix: function(dough,ingredient) {
+ if (elements[ingredient.element].isFood && elements[ingredient.element].id !== elements.dough.id && elements[ingredient.element].id !== elements.flour.id && elements[ingredient.element].id !== elements.batter.id && elements[ingredient.element].id !== elements.bread.id) {
+ var rgb1 = dough.color.match(/\d+/g);
+ var rgb2 = ingredient.color.match(/\d+/g);
+ // average the colors
+ var rgb = [
+ Math.round((parseInt(rgb1[0])+parseInt(rgb2[0]))/2),
+ Math.round((parseInt(rgb1[1])+parseInt(rgb2[1]))/2),
+ Math.round((parseInt(rgb1[2])+parseInt(rgb2[2]))/2)
+ ];
+ changePixel(ingredient, "dough")
+ // convert rgb to hex
+ var hex = RGBToHex(rgb);
+ dough.color = pixelColorPick(dough, hex);
+ // 50% change to delete ingredient
+ if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); }
+ else {
+ ingredient.color = pixelColorPick(ingredient, hex);
+ }
+ }
+ },
+ reactions: {
+ "milk": { elem2:"broth", color2:"#ECC891", tempMin:70 },
+ "cream": { elem2:"broth", color2:"#ECC891", tempMin:70 },
+ },
+ category: "legacy",
+ tempHigh: 94,
+ stateHigh: "bread",
+ //stateHighColorMultiplier: 0.9,
+ burn:40,
+ burnTime:25,
+ burnInto:"ash",
+ state: "solid",
+ density: 526.9,
+ isFood: true
+};
+
+elements.legacy_batter = {
+ color: "#d4bc85",
+ behavior: behaviors.LIQUID,
+ onMix: function(batter,ingredient) {
+ if (elements[ingredient.element].isFood && elements[ingredient.element].id !== elements.batter.id && elements[ingredient.element].id !== elements.flour.id && elements[ingredient.element].id !== elements.yolk.id && elements[ingredient.element].id !== elements.dough.id && elements[ingredient.element].id !== elements.baked_batter.id) {
+ var rgb1 = batter.color.match(/\d+/g);
+ var rgb2 = ingredient.color.match(/\d+/g);
+ // average the colors
+ var rgb = [
+ Math.round((parseInt(rgb1[0])+parseInt(rgb2[0]))/2),
+ Math.round((parseInt(rgb1[1])+parseInt(rgb2[1]))/2),
+ Math.round((parseInt(rgb1[2])+parseInt(rgb2[2]))/2)
+ ];
+ changePixel(ingredient, "batter")
+ // convert rgb to hex
+ var hex = RGBToHex(rgb);
+ batter.color = pixelColorPick(batter, hex);
+ // 50% change to delete ingredient
+ if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); }
+ else {
+ ingredient.color = pixelColorPick(ingredient, hex);
+ }
+ }
+ },
+ category: "legacy",
+ tempHigh: 94,
+ stateHigh: "baked_batter",
+ stateHighColorMultiplier: 0.9,
+ burn:40,
+ burnTime:25,
+ burnInto:"ash",
+ state: "liquid",
+ viscosity: 10000,
+ density: 1001,
+ hidden: true,
+ isFood: true
+};
+
+elements.legacy_lattice = {
+ color: "#cb4cd9",
+ behavior: [
+ "CL|XX|CL",
+ "XX|XX|XX",
+ "CL|XX|CL",
+ ],
+ hidden: true,
+ category:"legacy",
+ excludeRandom: true
+};
+
+elements.top_lattice = {
+ color: "#cb4cd9",
+ behavior: [
+ "CL|XX|CL",
+ "XX|XX|XX",
+ "XX|XX|XX",
+ ],
+ hidden: true,
+ category:"special",
+ excludeRandom: true
+};
+
+elements.bottom_lattice = {
+ color: "#cb4cd9",
+ behavior: [
+ "XX|XX|XX",
+ "XX|XX|XX",
+ "CL|XX|CL",
+ ],
+ hidden: true,
+ category:"special",
+ excludeRandom: true
+};
+
+elements.right_lattice = {
+ color: "#cb4cd9",
+ behavior: [
+ "XX|XX|CL",
+ "XX|XX|XX",
+ "XX|XX|CL",
+ ],
+ hidden: true,
+ category:"special",
+ excludeRandom: true
+};
+
+elements.left_lattice = {
+ color: "#cb4cd9",
+ behavior: [
+ "CL|XX|XX",
+ "XX|XX|XX",
+ "CL|XX|XX",
+ ],
+ hidden: true,
+ category:"special",
+ excludeRandom: true
+};
+
+elements.amethyst = {
+ color: ["#9868e0","#482888","#7848b8","#c898f0","#a878f0"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ category: "powders",
+};
+
+elements.quartz = {
+ color: ["#f6fff9","#f3f9f9","#f6fcf9","#fefefe","#fdfffe"],
+ behavior: behaviors.POWDER,
+ hidden: true,
+ category: "powders",
+ tempHigh: 1900,
+ stateHigh: "magma",
+ reactions: {
+ "molten_iron": { elem1: "amethyst", elem2: null },
+ }
+};
+
+elements.ruby = {
+ color: ["#850014","#ae001a","#e10531","#a50727","#6b0015"],
+ behavior: behaviors.POWDER,
+ category: "powders",
+ tempHigh: 900,
+ stateHigh: "carbon_dioxide",
+ state: "solid",
+ density: 3515,
+ hardness: 1,
+ alias: "Lamp Oil, Rope, Bombs, you want it? It's yours my friend, as long as you have enough rubies.",
+};
+
+elements.slushy_ice = {
+ color: ["#f6fff9","#f3f9f9","#f6fcf9","#fefefe","#fdfffe"],
+ behavior: behaviors.WALL,
+ temp: -5,
+ tempHigh: 5,
+ stateHigh: "smashed_ice",
+ category: "states",
+ state: "solid",
+ density: 917,
+ breakInto: "smashed_ice",
+ isFood: true,
+};
+
+elements.toorhpaste = {
+ color: ["#31ffe0","#65ffe8","#97ffef","#c9fff7","#f3fffd"],
+ behavior: behaviors.LIQUID,
+ category: "liquids",
+ state: "solid",
+ reactions: {
+ "juice": { elem1: "poison", elem2: null },
+ },
+ tempHigh: 170,
+ stateHigh: "steam",
+ isFood: true,
+};
+
+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.art.burn = 5
+elements.art.burnTime = 300
+elements.art.burnInto = ["ember","charcoal","fire"]
+
+
+elements.herb.breakInto = "seasoning"
+
+elements.chocolate.breakInto = "chocolate_sauce"
+
+elements.magma.stateLow = ["basalt","basalt","basalt","basalt","basalt","basalt","basalt","rock","quartz"]
+
+if (!elements.bless.reactions) elements.bless.reactions = {};
+elements.bless.reactions.mold = { elem2: null }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.broccoli = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.squash = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.zuchinni = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.olive = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.eggplant = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.onion = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.garlic = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.garlic_clove = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.asparagus = { elem1: null, elem2: "pickle" }
+
+if (!elements.vinegar.reactions) elements.vinegar.reactions = {};
+elements.vinegar.reactions.asparagus = { elem1: null, elem2: "pickle" }
+
+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.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
+/*
+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
+*/
\ No newline at end of file
diff --git a/mods/nousersthings.js b/mods/nousersthings.js
index 9dcd4d9b..6bf1b6e0 100644
--- a/mods/nousersthings.js
+++ b/mods/nousersthings.js
@@ -2999,7 +2999,7 @@ elements.insulated_wire = {
}
elements.insulated_wire.desc = "Insulated wire. Only conducts to other insulated wires. Pairs with ray emitters to not make diagonal rays."
elements.e_pipe.desc = "Electric pipe. Only passes elements while charged."
-elements.destructible_e_pipe.desc = elements.e_pipe.desc
+elements.destroyable_e_pipe.desc = elements.e_pipe.desc
elements.channel_pipe.desc = "Channel pipe. Only passes elements to pipes of the same channel."
elements.bridge_pipe.desc = "Bridge pipe. Can pass and receive from any other type of pipe."
elements.ray_emitter.desc = "Emits a ray of the specified element in the opposite direction it was shocked from."
diff --git a/mods/pizzasstuff.js b/mods/pizzasstuff.js
index cc28b4ce..279bebdc 100644
--- a/mods/pizzasstuff.js
+++ b/mods/pizzasstuff.js
@@ -1,3 +1,7 @@
+removeMod("pizzasstuff.js");
+addMod("mossstuff.js");
+reload();
+
elements.freeze_ray = {
color: ["#8cf9ff","#5c59ff"],
tick: function(pixel) {
diff --git a/mods/subspace.js b/mods/subspace.js
new file mode 100644
index 00000000..3230b879
--- /dev/null
+++ b/mods/subspace.js
@@ -0,0 +1,46 @@
+function playSubspace(file) {
+ var audio = new Audio("https://JustAGenericUsername.github.io/" + file + ".mp3");
+ audio.play();
+}
+elements.subspace_trimpine = {
+ color: "#2e2430",
+ behavior: behaviors.STURDYPOWDER,
+ maxSize: 1,
+ cooldown: defaultCooldown,
+ density: 1500,
+ category: "weapons",
+ state: "solid",
+ properties:{
+ counter: 0
+ },
+ tick: function(pixel){
+ if (pixel.counter == 0){
+ playSubspace("subspaceplace")
+ }
+ if (!pixel.rgb){pixel.rgb = pixel.color.match(/\d+/g);}
+ if (pixel.counter >= 90 && pixel.counter < 121){
+ if (!pixel.a){pixel.a = 1}
+ pixel.a -= 0.05
+ pixel.color = "rgba(" + pixel.rgb[0] + "," + pixel.rgb[1] + "," + pixel.rgb[2] + "," + pixel.a + ")"
+ }
+ if (pixel.counter >= 121){
+ if (!isEmpty(pixel.x, pixel.y-1, true)){
+ let oldx = pixel.x
+ let oldy = pixel.y
+ explodeAt(pixel.x, pixel.y, 20)
+ playSubspace("subspaceboom")
+ deletePixel(pixel.x, pixel.y)
+ var coords = circleCoords(oldx, oldy, 25)
+ for (var i = 0; i < coords.length; i++){
+ var x = coords[i].x
+ var y = coords[i].y
+ if (!isEmpty(x, y, true)){
+ var newPixel = pixelMap[x][y]
+ newPixel.color = pixelColorPick(pixel, "#FF00FF")
+ }
+ }
+ }
+ }
+ pixel.counter ++
+ }
+}
\ No newline at end of file
diff --git a/mods/weapons.js b/mods/weapons.js
index 8ea4a0d0..49700eef 100644
--- a/mods/weapons.js
+++ b/mods/weapons.js
@@ -37,7 +37,7 @@ elements.fat_man = {
excludeRandom: true,
cooldown: defaultCooldown
},
- elements.self_propelled_bomb = {
+elements.self_propelled_bomb = {
color: "#71797E",
tick: function(pixel) {
if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) {
@@ -740,17 +740,17 @@ elements.tank_right = {
"XX|M1|M1",
],
},
-elements.realistic_missle_left = {
+elements.realistic_missile_left = {
color: "#524c41",
category: "weapons",
state: "solid",
behavior: [
"XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX",
- "EX:20>missile_shrapnel|XX|XX|XX|XX|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|M2|XX|XX|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|M1|XX|XX|CR:smoke|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|M2|XX|XX|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|XX|XX|XX|XX|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|M1 AND EX:20>missile_shrapnel|XX|EX:20>missile_shrapnel|CR:smoke AND EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
"XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX",
],
tick: function(pixel) {
@@ -765,17 +765,17 @@ elements.realistic_missle_left = {
excludeRandom: true,
cooldown: defaultCooldown
},
-elements.realistic_missle_right = {
+elements.realistic_missile_right = {
color: "#524c41",
category: "weapons",
state: "solid",
behavior: [
"XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX",
- "EX:20>missile_shrapnel|XX|XX|XX|XX|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|XX|XX|M2|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|CR:smoke|XX|XX|M1|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|XX|XX|M2|XX|EX:20>missile_shrapnel",
- "EX:20>missile_shrapnel|XX|XX|XX|XX|XX|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|CR:smoke AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX|M1|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|M2 AND EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
+ "EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel",
"XX|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|EX:20>missile_shrapnel|XX",
],
tick: function(pixel) {
@@ -803,4 +803,197 @@ elements.realistic_missle_right = {
conduct: 1,
state: "solid",
category: "ammunition"
+},
+elements.vlms_left = {
+ color: "#71797E",
+ tick: function(pixel) {
+ if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) {
+ pixel.burning = true;
+ pixel.burnStart = pixelTicks;
+ }
+ if (pixel.burning) {
+ if (!tryMove(pixel, pixel.x, pixel.y-1)) {
+ // tryMove again to the top left or top right
+ tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y-1);
+ }
+ if (pixelTicks-pixel.burnStart > 50 && Math.random() < 0.1) {
+ explodeAt(pixel.x, 10, 4, "realistic_missile_left");
+ deletePixel(pixel.x,pixel.y)
+ }
+ }
+ else {
+ if (!tryMove(pixel, pixel.x, pixel.y+1)) {
+ // tryMove again to the bottom left or bottom right
+ tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y+1);
+ }
+ }
+ doDefaults(pixel);
+ },
+ burn: 90,
+ burnTime: 100,
+ density: 2000,
+ conduct: 1,
+ state: "solid",
+ category: "weapons"
+},
+elements.vlms_right = {
+ color: "#71797E",
+ tick: function(pixel) {
+ if ((pixel.temp > 1000 || pixel.charge) && !pixel.burning) {
+ pixel.burning = true;
+ pixel.burnStart = pixelTicks;
+ }
+ if (pixel.burning) {
+ if (!tryMove(pixel, pixel.x, pixel.y-1)) {
+ // tryMove again to the top left or top right
+ tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y-1);
+ }
+ if (pixelTicks-pixel.burnStart > 50 && Math.random() < 0.1) {
+ explodeAt(pixel.x, 10, 4, "realistic_missile_right");
+ deletePixel(pixel.x,pixel.y)
+ }
+ }
+ else {
+ if (!tryMove(pixel, pixel.x, pixel.y+1)) {
+ // tryMove again to the bottom left or bottom right
+ tryMove(pixel, pixel.x+(Math.random() < 0.5 ? -1 : 1), pixel.y+1);
+ }
+ }
+ doDefaults(pixel);
+ },
+ burn: 90,
+ burnTime: 100,
+ density: 2000,
+ conduct: 1,
+ state: "solid",
+ category: "weapons"
+},
+createAtXvar = 0;
+createAtYvar = 0;
+create1var = "";
+elements.element_spawner = {
+ color: "#71797E",
+ onSelect: function() {
+ var answer1 = prompt("Please input the x value.",(createAtXvar||undefined));
+ if (!answer1) {return}
+ createAtXvar = parseInt(answer1);
+ var answer2 = prompt("Please input the y value.",(createAtYvar||undefined));
+ if (!answer2) {return}
+ createAtYvar = parseInt(answer2);
+ var answer3 = prompt("Please input what element should spawn.",(create1var||undefined));
+ if (!answer3) {return}
+ create1var = answer3;
+ },
+ tick: function(pixel) {
+ if (pixel.charge){
+ createPixel(create1var, createAtXvar, createAtYvar);
+ }
+ doDefaults(pixel);
+ },
+ density: 1,
+ conduct: 1,
+ state: "solid",
+ category: "machines"
+},
+elements.railgun_beam_left = {
+ color: ["#ff0000","#ff5e00"],
+ tick: function(pixel) {
+ var y = pixel.y;
+ for (var x = pixel.x; x < width; x--) {
+ if (outOfBounds(x, y)) {
+ break;
+ }
+ if (isEmpty(x, y)) {
+ createPixel("railgun_ammo_left", x, y);
+ pixelMap[x][y].temp = 3500;
+ }
+ else {
+ if (elements[pixelMap[x][y].element].isGas) { continue }
+ if (elements[pixelMap[x][y].element].id === elements.railgun_beam_left.id) { break }
+ pixelMap[x][y].temp += 100;
+ pixelTempCheck(pixelMap[x][y]);
+ break;
+ }
+ }
+ deletePixel(pixel.x, pixel.y);
+ },
+ temp: 3500,
+ category: "ammunition",
+ state: "gas",
+ density: 1,
+ excludeRandom: true,
+ noMix: true
+},
+elements.railgun_beam_right = {
+ color: ["#ff0000","#ff5e00"],
+ tick: function(pixel) {
+ var y = pixel.y;
+ for (var x = pixel.x; x < width; x++) {
+ if (outOfBounds(x, y)) {
+ break;
+ }
+ if (isEmpty(x, y)) {
+ createPixel("railgun_ammo_right", x, y);
+ pixelMap[x][y].temp = 3500;
+ }
+ else {
+ if (elements[pixelMap[x][y].element].isGas) { continue }
+ if (elements[pixelMap[x][y].element].id === elements.railgun_beam_right.id) { break }
+ pixelMap[x][y].temp += 100;
+ pixelTempCheck(pixelMap[x][y]);
+ break;
+ }
+ }
+ deletePixel(pixel.x, pixel.y);
+ },
+ temp: 3500,
+ category: "ammunition",
+ state: "gas",
+ density: 1,
+ excludeRandom: true,
+ noMix: true
+},
+elements.railgun_ammo_left = {
+ color: ["#ff0000","#ff5e00"],
+ category: "ammunition",
+ state: "solid",
+ density: 1300,
+ tick: function(pixel) {
+ explodeAt(pixel.x, pixel.y, 10)
+ doHeat(pixel);
+ },
+},
+elements.railgun_ammo_right = {
+ color: ["#ff0000","#ff5e00"],
+ category: "ammunition",
+ state: "solid",
+ density: 1300,
+ tick: function(pixel) {
+ explodeAt(pixel.x, pixel.y, 10)
+ doHeat(pixel);
+ },
+},
+elements.railgun_left = {
+ category: "weapons",
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "XX|XX|XX",
+ "CR:railgun_beam_left|XX|XX",
+ "XX|XX|XX",
+ ],
+ color: "#71797E",
+ conduct: 1,
+ hardness: 1,
+},
+elements.railgun_right = {
+ category: "weapons",
+ behavior: behaviors.WALL,
+ behaviorOn: [
+ "XX|XX|XX",
+ "XX|XX|CR:railgun_beam_right",
+ "XX|XX|XX",
+ ],
+ color: "#71797E",
+ conduct: 1,
+ hardness: 1,
}
\ No newline at end of file