diff --git a/index.html b/index.html index 1f33f15b..cc19f843 100644 --- a/index.html +++ b/index.html @@ -15667,6 +15667,10 @@ window.onload = function() { } } } + // if the user is in an input, return + if (document.activeElement.tagName === "INPUT" || document.activeElement.tagName === "TEXTAREA") { + return; + } // [ or - = decrease the mouse size by 2 if (e.keyCode == 219 || e.keyCode == 189) { if (shiftDown) {mouseSize = 1} @@ -16219,7 +16223,21 @@ Cancer, Landmine, Grenade, Smoke Grenade">? contact@R74n.com for advertising, help, or education!

- +
Be notified when Sandboxels and other R74n projects are updated, along with ramblings from the developer!

+
+ +
+ +

Support development by subscribing on our Patreon! Many benefits!!

diff --git a/lang/pl.json b/lang/pl.json index 3fa1ec65..a2d82ac4 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -523,21 +523,21 @@ "molten_potassium_salt":"stopiona_sól_potasowa", "molten_sodium_acetate":"stopiony_octan_sodu", "frozen_nitro":"zamrożona_nitrogliceryna", -"cured_meat": "", +"cured_meat": "wędzone_mięso", "nut_oil": "olej z orzechów", -"grease": "", +"grease": "smar", "fat": "tłuszcz", "potassium": "potas", "molten_potassium": "roztopiony_potas", -"magnesium": "", -"molten_magnesium": "", +"magnesium": "magnez", +"molten_magnesium": "stopiony_magnez", "sandstorm": "burza_piaskowa", "caustic_potash": "", -"antibomb": "", +"antibomb": "antybomba", "tornado": "tornado", "earthquake": "trzęsienie_ziemi", "tsunami": "tsunami", "blaster": "promień", -"propane_ice": "", +"propane_ice": "lód_propanowy", "molten_caustic_potash": "" } diff --git a/lang/ru.json b/lang/ru.json index 63134399..c6d71eb3 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -1,543 +1,545 @@ { -"#lang.name": "Русский Язык", -"#lang.credit": "a1ex_v", -"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":"ДНК", -"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":"С4", -"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": "", -"nut_oil": "", -"grease": "", -"fat": "", -"potassium": "", -"molten_potassium": "", -"magnesium": "", -"molten_magnesium": "", -"sandstorm": "", -"caustic_potash": "", -"antibomb": "", -"tornado": "", -"earthquake": "", -"tsunami": "", -"blaster": "", -"propane_ice": "", -"molten_caustic_potash": "" -} \ No newline at end of file + "#lang.name": "Русский язык", + "#lang.credit": "a1ex_v,Sovenok-Hacker", + "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":"днк", + "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":"с4", + "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": "вяленое мясо", + "nut_oil": "ореховое масло", + "grease": "смазка", + "fat": "жир", + "potassium": "калий", + "molten_potassium": "жидкий калий", + "magnesium": "магний", + "molten_magnesium": "жидкий магний", + "sandstorm": "песчаная буря", + "caustic_potash": "калийная щёлочь", + "antibomb": "антибомба", + "tornado": "торнадо", + "earthquake": "землетрясение", + "tsunami": "цунами", + "blaster": "бластер", + "propane_ice": "пропановый лёд", + "molten_caustic_potash": "расплавленная калийная щёлочь" + } + + \ No newline at end of file diff --git a/mod-list.html b/mod-list.html index 06e0a360..b1dcf9b1 100644 --- a/mod-list.html +++ b/mod-list.html @@ -110,6 +110,7 @@ devtests.jsExperimental features from the Sandboxels developerR74n edible_everything.jsAllows every element to be mixed into Batter and DoughR74n fools.jsAdds back FOOLS ModeR74n +fools24.jsAdds back the 2024 Multiversal Update (v5.9.1)R74n smooth_water.jsChanges water mechanics so that it flows in one direction until it bounces off of somethingR74n spring.jsMany nature elements, like sakura trees, butterflies, beehives, and moreR74n survival.jsWith limited resources, you must craft, sell, and buy to progressR74n @@ -178,6 +179,7 @@ Neutronium Mod.jsVariety of scientific elements
ExplosionsStellarX20 neutronium_compressor.jsAdds a compressor (in reference to Minecraft’s Avaritia mod) that compresses 10,000 pixels of an element into a “singularity”Alice noblegas.jsAdds the missing noble gasesnousernamefound +radioactive.jsAdds every radioactive elements on the periodic table (WIP)kaeud random_rocks.jsRandomly generates rocks on game loadAlice roseyiede.jsAdds several variants of a substance called roseyiedeAlice some_tf_liquids.jsAdds various liquids from the Thermal Foundation Minecraft modAlice @@ -196,12 +198,13 @@ nousersthings.jsDestroyable machines, pipe variants, filters, and morenousernamefound portal.jsAdds portals that can teleport pixelsAlice pushers.jsAdds pixels that push elements away from themAlice -spouts.jsAdds spouts for all liquidsAlice +spouts.jsAdds spouts for all liquidskaeud state_voids.jsAdds several elements that each delete a specific state of matter (and combinations thereof)Alice switches.jsAdds electrical switches that can be toggledAlice ticking_temp_stuff.jsAdds more heaters and coolersAlice video.jsAdds a video playerggod waterspout.jsAdds back the old Water Spoutmollthecoder +WhisperingTheory.jsAdds many more variants of heater and coolerkaeud Weapons aircrafts.jsAdds aircraft and aircraft part pixelsJayd @@ -214,7 +217,7 @@ weapons.jsAdds some extra weaponsJayd Food & Cooking -aChefsDream.jsAdds more food and animalsSquareScreamYT and RealerRaddler +aChefsDream.jsAdds more foods, animals, tools and many other cooking related itemsSquareScreamYT, RealerRaddler bananas.jsAdds bananas and banana plantsAlice greenitemsandmore.jsAdds various green things, including apples and more foodzonneschijn7 ketchup_mod.jsAdds a bunch of ketchup related stuff, plus a few other condimentsNubo318 (main dev), Devi, Alice (contributors) @@ -226,7 +229,6 @@ weAllScreamFor.jsAdds ice cream toppingsrottenEgghead Life & Nature -aChefsDream.jsAdds more food and animalsSquareScreamYT and RealerRaddler advanced_colonies.jsAdds davlers, creatures with complex coloniesDaviStudios apioforms_pre.jsAn incomplete implementation of elements from the Apioform GameAlice bacteria_mod.jsAdds content from the Bacterium Mod: (Bacteria, Replacer B., Jammer Block)Alice @@ -243,12 +245,13 @@ fwibblen.jsAdds a flying creature that turns nickel into itself, and a second creature that does the same to the first oneAlice human_edit.jsImprovements to humansAlice kopalstuff.jsAdds creatures, spirits, DNA, foods, and moreDaviStudios -lost_souls.jsAdds souls and related elements, the mod can also be found https://github.com/HACKERPRO908/lost_souls.jspixelegend4, SquareScreamYT, salmonfishy +lost_souls.jsAdds souls and related elements, the mod can also be found on Githubpixelegend4, SquareScreamYT, salmonfishy miscible_psoup_and_birthpool.jsMakes Primordial Soup and Birthpool mix instead of the birthpool settling to the bottom. Will be deprecated upon the release of Magical MenagerieAlice mobs.jsAdds Creepers, Zombies, and SkeletonsAlice nocancer.jsRemoves cancer from the game one tick after it is createdmollthecoder nocancer2.jsRemoves cancer from the game altogether. May be incompatible with other mods that spawn cancermollthecoder nograssgrow.jsPrevents Grass from growingmollthecoder +ocean.jsAdds many Marine lifeSquareScreamYT pizzasstuff.jsNew animals, foods, and plants_ilikepizza_ plants.jsAdds a wide variety of new plants and fruitsAdora primordial_birthpool.jsA cross between Primordial Soup and Birthpool. Requires F&MAlice @@ -263,8 +266,10 @@ allliquids.jsMade all elements liquidsAdora amogus.jsAdds a small amogus structureAlice citybuilding.jsAdds seeds that create miniature buildings and other city-related itemsSquareScreamYT +CoCpu.jsAdds Things that Related with Science and Computers KnowledgeCarbon Monoxide, CPU collab_mod.jsCreated by multiple people, adds random thingsmrapple, ilikepizza, stefanblox elem3.jsAdds all elements and combinations from Elemental 3 [Very Large]Sophie +fools+.jsimproves and makes fools.js EXTREMELY annoying.SquareScreamYT funny elements 2022-11-15.jsAdds a few curated randomly-generated elementsAlice funny_solid.jsAdds fecesAlice haseulite.jsAdds Loona-related materials with various propertiesAlice @@ -282,6 +287,7 @@ sus.jsAdds an Among Us crewmateNv7 triggerable_random_powders.jsAdds powders with different abilities, such as heating and coolingAlice troll.jsAdds various dumb elements that iterate randomly on the entire screenAlice +WhisperingTheory.jsAdds powder and gas variant of heater and coolerkaeud Visual Effects acid_and_shapes.jsWeird visual effects. Enable in SettingsAlice diff --git a/mods/CoCpu.js b/mods/CoCpu.js new file mode 100644 index 00000000..58bfe7da --- /dev/null +++ b/mods/CoCpu.js @@ -0,0 +1,111 @@ +elements.carbon_monoxide = { + color: "#b5b5b5", + behavior: behaviors.GAS, + behaviorOn: [ + "XX|XX|XX", + "XX|CH:fire|XX", + "XX|XX|XX", + ], + category: "gases", + state: "gas", + density: 1.14, + burn: 75, + tempHigh: 609, + stateHigh: "fire", + tempLow: -192, + stateLow: "liquid_carbon_monoxide", + burntime: 5, + fireColor: "#ebba34", + reactions: { + "head": { elem2:"rotten_meat", chance:0.5 }, + "body": { elem2:"rotten_meat", chance:0.5 }, + "human": { elem2:"rotten_meat", chance:0.5 }, + "plant": { elem1: null }, + "bird": { elem2: "rotten_meat", }, + "frog": { elem2: "slime", }, + "grass": {elem1: null }, + "water": {elem1: null }, + } +}; +elements.liquid_carbon_monoxide = { + color: "#b5b5b5", + behavior: behaviors.LIQUID, + category: "liquids", + state: "liquid", + density: 1.14, + tempHigh: 190, + tempLow: -199, + stateLow: "ice_carbon_monoxide", + stateHigh: "carbon_monoxide", + temp: -192, +}; +elements.ice_carbon_monoxide = { + color: "#b5b5b5", + behavior: behaviors.WALL, + category: "solids", + state: "solid", + density: 1.14, + tempHigh: -192, + stateHigh: "liquid_carbon_monoxide", + temp: -199, +}; +elements.cpu = { + color: "#575757", + behavior: behaviors.SOLID, + category: "machines", + state: "solid", + density: 75, + tempHigh: 1414, + stateHigh: "explosion", +reactions: { + "virus": { elem1 : null , elem2:"malware", chance:0.9 }, + "battery": { elem2:"computer" }, + + } +}; + +elements.computer = { + color: "#2b2b2a", + behavior: behaviors.SOLID, + category: "machines", + state: "solid", + density: 8908, + tempHigh: 1414, + stateHigh: "explosion", +reactions: { + "virus": { elem1 : null , elem2:"malware", chance:0.9 }, + "water": { elem1: null , elem2: "electric" }, + } +}; +elements.carbon_monoxide_detector = { + behavior: behaviors.WALL, + desc: "give red light and electric when found Carbon Monoxide touch", + color: "#ffffff", + reactions: { + "carbon_monoxide": {"charge1":1}, + }, + conduct: 1, + tempHigh: 1550, + stateHigh: ["molten_metal_scrap","electric","molten_plastic"], + colorOn: "#ff0000", + movable: false, + category:"machines", + darkText: true, + hardness: 1, +}; + +elements.electrons = { + color: "#b80606", + behavior: [ + "XX|SH|XX", // shocks (adds charge) + "SH|DL%0.25|SH", + "XX|SH|XX", + ], + tick: behaviors.BOUNCY, + reactions: {}, + temp: 20, + category: "energy", + state: "gas", + density: 0.000003, + ignoreAir: true +} diff --git a/mods/WhisperingTheory.js b/mods/WhisperingTheory.js index ad41280b..db9b59d0 100644 --- a/mods/WhisperingTheory.js +++ b/mods/WhisperingTheory.js @@ -1,9 +1,39 @@ -/* TODO -- [x] powder heater & coller -- [x] block roomtemp -- [x] no smoke from cold fire -*/ +elements.roomtemper = { + color: "#29632f", + behavior: behaviors.WALL, + tick: function(pixel) { + // from nouserthings.js <3 + for (var i = 0; i < squareCoords.length; i++) { + var coord = squareCoords[i]; + var x = pixel.x+coord[0]; + var y = pixel.y+coord[1]; + if (!isEmpty(x,y, true)) { + if(pixelMap[x][y].temp < -230) { + pixelMap[x][y].temp = (pixelMap[x][y].temp + 7) + } else if(pixelMap[x][y].temp > 270) { + pixelMap[x][y].temp = (pixelMap[x][y].temp - 7) + } else if (pixelMap[x][y].temp < 20) { + pixelMap[x][y].temp = (pixelMap[x][y].temp + 2) + } else if (pixelMap[x][y].temp > 20) { + pixelMap[x][y].temp = (pixelMap[x][y].temp - 2) + } + } + } + }, + category:"machines", + state:"solid", + insulate: true, + noMix: true, + movable: false, +}; +elements.cold_fire.behavior = [ + "M1|M1|M1", + "M2|DL%8|M2", + "XX|M2|XX", +]; + +// powder elements.powder_heater = { category: "machines", behavior: [ @@ -37,7 +67,7 @@ elements.powder_superheater = { insulate: true, }; -elements.powder_freeze = { +elements.powder_freezer = { category: "machines", behavior: [ "XX|CO:10|XX", @@ -48,36 +78,136 @@ elements.powder_freeze = { insulate: true, }; -elements.roomtemper = { - color: "#29632f", - behavior: behaviors.WALL, - tick: function(pixel) { - for (var i = 0; i < squareCoords.length; i++) { - var coord = squareCoords[i]; - var x = pixel.x+coord[0]; - var y = pixel.y+coord[1]; - if (!isEmpty(x,y, true)) { - if(pixelMap[x][y].temp < -230) { - pixelMap[x][y].temp = (pixelMap[x][y].temp + 7) - } else if(pixelMap[x][y].temp > 270) { - pixelMap[x][y].temp = (pixelMap[x][y].temp - 7) - } else if (pixelMap[x][y].temp < 20) { - pixelMap[x][y].temp = (pixelMap[x][y].temp + 2) - } else if (pixelMap[x][y].temp > 20) { - pixelMap[x][y].temp = (pixelMap[x][y].temp - 2) - } - } - } - }, - category:"machines", - state:"solid", - insulate: true, - noMix: true, - movable: false, -}, +// gas +elements.gas_heater = { + color: "#881111", + behavior: [ + "M2|M1 AND HT:2|M2", + "M1 AND HT:2|XX|M1 AND HT:2", + "M2|M1 AND HT:2 | M2", + ], + category: "machines", + insulate: true, +}; -elements.cold_fire.behavior = [ - "M1|M1|M1", - "M2|DL%8|M2", - "XX|M2|XX", -] +elements.gas_cooler = { + color: "#111188", + behavior: [ + "M2|M1 AND CO:2|M2", + "M1 AND CO:2|XX|M1 AND CO:2", + "M2|M1 AND CO:2|M2", + ], + category: "machines", + insulate: true, +}; + +elements.gas_superheater = { + color: "#dd1111", + behavior: [ + "M2|M1 AND HT:10|M2", + "M1 AND HT:10|XX|M1 AND HT:10", + "M2|M1 AND HT:10|M2", + ], + category: "machines", + insulate: true, +}; + +elements.gas_freezer = { + color: "#1111dd", + behavior: [ + "M2|M1 AND CO:10|M2", + "M1 AND CO:10|XX|M1 AND CO:10", + "M2|M1 AND CO:10|M2", + ], + category: "machines", + insulate: true, +}; + +// antipowder +elements.anti_heater = { + color: "#881111", + behavior: [ + "M2|M1 AND HT:2|M2", + "HT:2|XX|HT:2", + "XX|HT:2|XX", + ], + category: "special", + insulate: true, +}; + +elements.anti_cooler = { + color: "#111188", + behavior: [ + "M2|M1 AND CO:2|M2", + "CO:2|XX|CO:2", + "XX:CO:2|XX", + ], + category: "special", + insulate: true, +}; + +elements.anti_superheater = { + color: "#881111", + behavior: [ + "M2|M1 AND HT:10|M2", + "HT:10|XX|HT:10", + "XX|HT:10|XX", + ], + category: "special", + insulate: true, +}; + +elements.anti_freezer = { + color: "#1111dd", + behavior: [ + "M2|M1 AND CO:10|M2", + "CO:10|XX|CO:10", + "XX:CO:10|XX", + ], + category: "special", + insulate: true, +}; + +elements.heater_gas = { + color: "#881111", + behavior: [ + "M2|M1 AND HT:2|M2", + "M1 AND HT:2|XX|M1 AND HT:2", + "M2|M1 aND HT:2|M2", + ], + category: "special", + insulate: true, +} + +elements.cooler_gas = { + color: "#111188", + behavior: [ + "M2|M1 AND CO:2|M2", + "M1 AND CO:2|XX|M1 AND CO:2", + "M2|M1 A ND CO:2|M2", + ], + category: "special", + insulate: true, +} + +elements.superheater_gas = { + color: "#881111", + behavior: [ + "M2|M1 AND H1:10|M2", + "M1 AND HT:10|XX|M1 AND HT:10", + "M2|M1 AND HT:10|M2", + ], + category: "special", + insulate: true, +} + +elements.freezer_gas = { + color: "#1111dd", + behavior: [ + "M2|M1 AND CO:10|M2", + "M1 AND CO:10|XX|M1 AND CO:10", + "M2|M1 AND CO:10|M2", + ], + category: "special", + insulate: true, +} \ No newline at end of file diff --git a/mods/aChefsDream.js b/mods/aChefsDream.js index 5330f1df..028461f6 100644 --- a/mods/aChefsDream.js +++ b/mods/aChefsDream.js @@ -1,8 +1,8 @@ /* -Created by SquareScreamYT <@918475812884344852> and RealerRaddler <@914371295561535508> -Thanks to Alice <@697799964985786450>, nousernamefound <@316383921346707468>, Adora the Transfem <@778753696804765696> and Fioushemastor <@738828785482203189> for helping :) +Created by SquareScreamYT/sqec <@918475812884344852> +Thanks to RealerRaddler <@914371295561535508>, Alice <@697799964985786450>, nousernamefound <@316383921346707468>, Adora the Transfem <@778753696804765696>, ryan(R74n) <@101070932608561152> and Fioushemastor <@738828785482203189> for helping :) -v1.10.5 +v1.12.2 you can support me at my youtube: https://youtube.com/@sqec @@ -12,6 +12,7 @@ Upcoming Features: - white rice noodles - matcha leaves, powder, tea - cacao pods +- more chocolate, cocoa powder, white chocolate, cocoa butter - agar (makes juice into jelly) - pigs, ham and bacon - garlic @@ -20,7 +21,6 @@ Upcoming Features: - hot chocolate - cows and beef - celery -- marshmallows, normal, cooked and burnt - kiwis - guavas - lychees @@ -34,6 +34,17 @@ Upcoming Features: - peaches - cucumbers - eggplants +- food coloring +- crabs (they eat coconuts) +- squids +- tofu +- miso +- juice reaction with milk makes average color +- juice reaction with other juices +- jackfruit +- barbecueing meats +- bbq sauce +- mustard Changelog (v1.0) - added chickens @@ -98,7 +109,7 @@ Changelog (v1.1) - added knife tool - cuts, peels, etc. pixels - readded potato skin and peeled potato - - changed fried potato recipe from potato to skinned potato\ + - changed fried potato recipe from potato to skinned potato - added pepper - added cake - made by mixing baked batter and cream @@ -342,6 +353,59 @@ Changelog (v1.10.5) +Changelog (v1.10.7) + - added mango milk + + + + +Changelog (v1.10.8) + - added onion powder + - fix carrot plant bug + - added fried rice + - added durians + - added cut durians + - added durian seed, wood, leaves and branches + + + + +Changelog (v1.11) + - unhid carrot + - unhid turnip + + + + +Changelog (v1.12) + - added whisk + - added egg white + - added hard egg white + - added whisked egg white + - added marshmallows + - added cooked marshmallows + - added burnt marshmallows + - improved soup (from nousersthings.js) + - added food coloring (color may fade) + - added eat tool + - added drink tool + + + + +Changelog (v1.12.1) + - removed coral, can still be found in ocean.js + - updated food coloring + + + + +Changelog (v1.12.2) + - updated cooked meat behavior + + + + */ /* @@ -351,6 +415,8 @@ elements.test = { } */ +console.log("Thanks for using aChefsDream.js! -sqec") + function interpolateRgb(rgb1, rgb2, ratio) { const interpolatedRgb = { r: Math.round(rgb1.r + (rgb2.r - rgb1.r) * ratio), @@ -402,7 +468,33 @@ elements.knife = { canPlace: false, desc: "Use on pixels to cut them, if possible." } - +elements.whisk = { + color: ["#a4a7b0","#a4a7b0","#a4a7b0","#bfc2c9","#e9eaf0","#bfc2c9","#a4a7b0"], + // other needed properties + tool: (pixel) => { + //store whiskInto as a variable for legibility + var whiskInto = elements[pixel.element].whiskInto; + //if there’s no whiskInto, it should equal undefined, which is falsey and !undefined = true + if (!whiskInto) { return }; + //if whiskInto is an array, randomly pick one of its elements + if(whiskInto instanceof Array) {whiskInto = whiskInto[Math.floor(Math.random() * whiskInto.length)] }; + //change pixel into the (chosen) element + //changePixel(pixel, whiskInto) + if (shiftDown) { + if (Math.random() < 0.5) { + changePixel(pixel, whiskInto) + } + } + else if (!shiftDown) { + if (Math.random() < 0.1) { + changePixel(pixel, whiskInto) + } + } + }, + category:"tools", + canPlace: false, + desc: "Use on pixels to whisk them, if possible." +} elements.freeze_dry = { color: "#3a65b5", tool: function(pixel) { @@ -430,6 +522,27 @@ elements.freeze_dry = { desc: "Use on pixels to freeze dry them, if possible." } +elements.eat = { + color: ["#ffba79","#efff79"], + tool: function(pixel) { + if (elements[pixel.element].isFood || elements[pixel.element].category === "food" || eLists.JUICEMIXABLE.includes(pixel.element) || elements[pixel.element].id === elements.uranium.id || elements[pixel.element].id === elements.mercury.id) { + deletePixel(pixel.x, pixel.y); + } + }, + category: "tools", + desc: "Eats pixels." +} +elements.drink = { + color: ["#03c6fc","#03a1fc"], + tool: function(pixel) { + if (elements[pixel.element].state === "liquid") { + deletePixel(pixel.x, pixel.y); + } + }, + category: "tools", + desc: "Drinks pixels." +} + eLists.JUICEMIXABLE = ["juice"]; elements.chicken = { @@ -629,7 +742,47 @@ elements.soup = { conduct: 0.03, stain: -0.01, isFood: true, - hidden: true, + //thanks to nouser + onMix: function(soup,ingredient) { + if (elements[ingredient.element].id !== elements.soup.id && elements[ingredient.element].id !== elements.broth.id) { + if (elements[ingredient.element].isFood || elements[ingredient.element].category === "food" || elements[ingredient.element].category === "liquids") { + var rgb1 = soup.color.match(/\d+/g); + var rgb2 = ingredient.color.match(/\d+/g); + // 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) + ]; + if (!soup.elemlist){ + soup.elemlist = []; + } + soup.decidedHigh = soup.elemlist[Math.floor(Math.random()*soup.elemlist.length)]; + soup.elemlist.push(ingredient.element) + soup.stateHigh = soup.elemlist; + changePixel(ingredient, "soup"); + var hex = RGBToHex(rgb); + soup.color = pixelColorPick(soup, hex); + if (Math.random() < 0.5) { deletePixel(ingredient.x, ingredient.y); } + else { + ingredient.color = pixelColorPick(ingredient, hex); + } + } + } + }, + tick: function(pixel) { + if (!pixel.decidedHigh){ + pixel.decidedHigh = "steam"; + } + if (pixel.temp > 100){ + if (Math.random() < 0.5) { + changePixel(pixel, "steam"); + } + else { + changePixel(pixel, pixel.decidedHigh) + } + } + }, } if (!elements.broth.reactions) elements.broth.reactions = {}; @@ -1628,77 +1781,6 @@ elements.salmon = { cutInto: "raw_salmon" } -elements.coral_stem = { - color: "#4a5e49", - behavior: [ - "CR:coral_stem,coral%2|CR:coral,coral_stem,coral,coral%2|CR:coral_stem,coral%2", - "XX|XX|XX", - "XX|XX|XX", - ], - tick: function(pixel) { - if (!pixel.fColor) { - pixel.fColor = "hsl(" + Math.floor(Math.random()*360) + ",100%,50%)"; - } - var coordsToCheck = [ - [pixel.x-1,pixel.y], - [pixel.x+1,pixel.y], - [pixel.x,pixel.y-1], - [pixel.x,pixel.y+1], - ] - for (var i = 0; i < coordsToCheck.length; i++) { - var coord = coordsToCheck[i]; - if (isEmpty(coord[0],coord[1])) { - createPixel("coral",coord[0],coord[1]); - pixelMap[coord[0]][coord[1]].color = pixel.fColor; - } - } - doDefaults(pixel) - }, - tempHigh: 100, - stateHigh: "dead_coral", - tempLow: -30, - stateLow: "dead_coral", - category: "life", - burn: 40, - burnTime: 50, - burnInto: [,"ember","charcoal"], - hidden: true, - state: "solid", - density: 1500, - hardness: 0.15, - hidden: true, -} - -elements.coral = { - color: ["#ff0000","#ff8800","#ffff00","#88ff00","#00ff00","#00ff88","#00ffff","#0088ff","#0000ff","#8800ff","#ff00ff"], - behavior: [ - "XX|XX|XX", - "XX|XX|XX", - "XX|XX|XX", - ], - reactions: { - "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, - "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, - "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, - "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035} - }, - category:"life", - tempHigh: 100, - stateHigh: "dead_plant", - tempLow: -1.66, - stateLow: "frozen_plant", - burn:65, - burnTime:60, - burnInto: "dead_plant", - breakInto: "dead_plant", - state: "solid", - density: 1050, - hidden: true, - properties:{ - "colored": false - } -} - elements.raw_salmon = { color: ["#FD7E19", "#FE842F", "#FD8F45"], behavior: behaviors.STURDYPOWDER, @@ -2645,46 +2727,52 @@ elements.lemon_seed = { elements.carrot_seed = { color: "#b08d35", - tick: function(pixel) { + tick: function (pixel) { + if (isEmpty(pixel.x, pixel.y + 1)) { + movePixel(pixel, pixel.x, pixel.y + 1); + } + else { if (Math.random() < 0.1 && pixel.age > 100 && pixel.temp < 100 && pixel.leafgrown == true && pixel.growthpixel == 0) { - if (!outOfBounds(pixel.x,pixel.y+1)) { - var randomNumber1 = Math.round(Math.random()) - pixel.growthpixel = pixel.growthpixel+randomNumber1 - var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (!outOfBounds(pixel.x, pixel.y + 1)) { + var randomNumber1 = Math.round(Math.random()); + pixel.growthpixel = pixel.growthpixel + randomNumber1; + var dirtPixel = pixelMap[pixel.x][pixel.y + 1]; if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { - deletePixel(pixel.x,pixel.y+1); - movePixel(pixel,pixel.x,pixel.y+1); - createPixel("carrot_leaves",pixel.x,pixel.y-1); + deletePixel(pixel.x, pixel.y + 1); + movePixel(pixel, pixel.x, pixel.y + 1); + createPixel("carrot_leaves", pixel.x, pixel.y - 1); pixel.growthpixel++; } } } if (Math.random() < 0.1 && pixel.age > 100 && pixel.temp < 100 && pixel.leafgrown == true && pixel.growthpixel > 0 && pixel.growthpixel < 4) { - if (!outOfBounds(pixel.x,pixel.y+1)) { - var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (!outOfBounds(pixel.x, pixel.y + 1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y + 1]; if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { - deletePixel(pixel.x,pixel.y+1); - movePixel(pixel,pixel.x,pixel.y+1); - createPixel("carrot",pixel.x,pixel.y-1); + deletePixel(pixel.x, pixel.y + 1); + movePixel(pixel, pixel.x, pixel.y + 1); + createPixel("carrot", pixel.x, pixel.y - 1); pixel.growthpixel++; } } } - if (!isEmpty(pixel.x,pixel.y+1) && Math.random() > 0.95 && isEmpty(pixel.x-1,pixel.y-1) && isEmpty(pixel.x+1,pixel.y-1) && pixel.leafgrown == false) { + if (!isEmpty(pixel.x, pixel.y + 1) && Math.random() > 0.95 && isEmpty(pixel.x - 1, pixel.y - 1) && isEmpty(pixel.x + 1, pixel.y - 1) && pixel.leafgrown == false) { + var dirtPixel = pixelMap[pixel.x][pixel.y + 1]; if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { - createPixel("carrot_leaves",pixel.x-1,pixel.y-1); - createPixel("carrot_leaves",pixel.x+1,pixel.y-1); - pixel.leafgrown++ + createPixel("carrot_leaves", pixel.x - 1, pixel.y - 1); + createPixel("carrot_leaves", pixel.x + 1, pixel.y - 1); + pixel.leafgrown = true; } } else if (pixel.age > 150 && pixel.growthpixel == 4 && Math.random() < 0.1) { - changePixel(pixel,"carrot"); + changePixel(pixel, "carrot"); } pixel.age++; + } doDefaults(pixel); }, properties: { - "age":0, + "age": 0, "growthpixel": 0, "leafgrown": false }, @@ -2705,6 +2793,7 @@ elements.carrot_seed = { "XX|M1|XX", ], }; + elements.carrot_leaves = { color: ["#61cc3d","#58c234"], behavior: behaviors.WALL, @@ -2740,7 +2829,6 @@ elements.carrot = { breakInto: "carrot_juice", state: "solid", density: 1050, - hidden: true, freezeDryInto: "freeze_dried_fruits", freezeDryIntoColor: "#ba8125", } @@ -2909,7 +2997,6 @@ elements.turnip = { breakInto: "turnip_juice", state: "solid", density: 1050, - hidden: true, freezeDryInto: "freeze_dried_fruits", freezeDryIntoColor: "#79097d", } @@ -4645,6 +4732,11 @@ elements.mango_juice = { } } }, + reactions: { + "milk": { elem1: "fruit_milk", elem2: "fruit_milk", chance: 0.35, color1:"#fada70", color2:"#fada70"}, + "coconut_milk": { elem1: "fruit_milk", elem2: "fruit_milk", chance: 0.35, color1:"#fada70", color2:"#fada70"}, + "nut_milk": { elem1: "fruit_milk", elem2: "fruit_milk", chance: 0.35, color1:"#fada70", color2:"#fada70"} + }, behavior: behaviors.LIQUID, category: "liquids", tempHigh: 100, @@ -5101,7 +5193,8 @@ elements.onion = { state: "solid", density: 1050, cutInto: "cut_onion", - cutIntoEmit: "stench", + breakInto:"onion_powder", + //cutIntoEmit: "stench", } elements.cut_onion = { color: "#dcc5ed", @@ -5114,6 +5207,7 @@ elements.cut_onion = { burnInto: "steam", state: "solid", density: 1050, + breakInto:"onion_powder", hidden: true, reactions:{ "nut_oil": {elem1:"fried_onion", tempMin: 70, chance:10}} } @@ -5183,6 +5277,28 @@ elements.onion_seed = { "XX|M1|XX", ], } +elements.onion_powder = { + color: "#e6d8b8", + reactions: { + "stench": { elem2:null, chance:0.25 }, + "steam": { elem2:"fragrance", chance:0.1 }, + "flea": { elem2:null, chance:0.01 }, + "termite": { elem2:null, chance:0.01 }, + "fly": { elem2:null, chance:0.01 }, + "ant": { elem2:null, chance:0.01 }, + "stink_bug": { elem2:null, chance:0.01 }, + }, + behavior: behaviors.POWDER, + tempHigh: 300, + stateHigh: ["fire","smoke","smoke","smoke","ash"], + burn:10, + burnTime:300, + burnInto: ["fire","smoke","smoke","smoke","smoke","smoke","smoke","fragrance"], + category:"food", + state: "solid", + density: 1400, + isFood: true, +} elements.unhusked_rice = { color: ["#c99a42","#b08638","#deb15d"], behavior: [ @@ -5223,7 +5339,8 @@ elements.rice = { isFood: true, density: 1050, reactions:{ - "water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70} + "water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70}, + "nut_oil":{elem1:"fried_rice",elem2:null,chance:3,tempMin:60} } } elements.cooked_rice = { @@ -5233,13 +5350,12 @@ elements.cooked_rice = { tempHigh: 200, stateHigh: "burnt_rice", burn:65, - burnTime:60, - burnInto: "dead_plant", breakInto: "rice_flour", state: "solid", isFood: true, density: 1050,reactions:{ - "water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70} + "water":{elem1:"porridge",elem2:"porridge",chance:3,tempMin:70}, + "nut_oil":{elem1:"fried_rice",elem2:null,chance:3,tempMin:60} }, hidden:true } @@ -5251,12 +5367,26 @@ elements.porridge = { stateHigh: "steam", viscosity: 999, burn:65, - burnTime:60, - burnInto: "dead_plant", state: "solid", isFood: true, density: 1050, } +elements.fried_rice = { + color: "#e8dda0", + behavior: behaviors.POWDER, + category:"food", + tempHigh: 200, + stateHigh: "burnt_rice", + burn:65, + burnTime:60, + state: "solid", + isFood: true, + density: 1050,reactions:{ + "salt":{color1:"#ede5b9",elem2:null,chance:3}, + "monosodium_glutamate":{color1:"#ede5b9",elem2:null,chance:3} + }, + hidden:true +} elements.burnt_rice = { color: "#262217", behavior: behaviors.POWDER, @@ -5265,7 +5395,6 @@ elements.burnt_rice = { stateHigh: "ash", burn:65, burnTime:60, - burnInto: "dead_plant", state: "solid", isFood: true, density: 1050, @@ -6696,3 +6825,279 @@ elements.hot_sauce = { isFood: true } elements.head.reactions.hot_sauce = {elem2:["smoke","fire",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null], chance:3} + + +elements.durian_wood = { + color: "#5e4b23", + behavior: behaviors.WALL, + tempHigh: 400, + stateHigh: ["ember","charcoal","fire","fire","fire"], + category: "solids", + burn: 5, + burnTime: 300, + burnInto: ["ember","charcoal","fire"], + state: "solid", + hardness: 0.15, + breakInto: "sawdust", + breakIntoColor: ["#dba66e","#cc8a64"], + hidden: true +} +elements.durian_branch = { + color: "#5e4b23", + behavior: [ + "CR:durian_leaves,durian_branch%2|CR:durian_leaves,durian_branch%2|CR:durian_leaves,durian_branch%2", + "XX|XX|XX", + "XX|XX|XX", + ], + tempHigh: 100, + stateHigh: "durian_wood", + tempLow: -30, + stateLow: "durian_wood", + category: "life", + burn: 40, + burnTime: 50, + burnInto: ["sap","ember","charcoal"], + hidden: true, + state: "solid", + density: 1500, + hardness: 0.15, + breakInto: ["sap","sawdust"], +} +elements.durian_leaves = { + color: ["#326b25","#2e751e"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|CR:durian%0.1|XX", + ], + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035 } + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:65, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050, + hidden: true +} +elements.durian = { + color: ["#578524","#5b8f1f"], + behavior: behaviors.POWDER, + category:"food", + tempHigh: 100, + stateHigh: "dead_plant", + burn:65, + burnTime:60, + cutInto: "cut_durian", + state: "solid", + density: 1050, +} + +elements.cut_durian = { + color: ["#e3e04b","#d1cf36"], + behavior: behaviors.STURDYPOWDER, + category:"food", + tempHigh: 100, + stateHigh: ["sugar","steam"], + burn:65, + burnTime:60, + state: "solid", + density: 1050, + hidden: true, + freezeDryInto: "freeze_dried_fruits", + freezeDryIntoColor: "#a19f3b", +} + +elements.durian_seed = { + color: "#a17d3b", + tick: function(pixel) { + if (isEmpty(pixel.x,pixel.y+1)) { + movePixel(pixel,pixel.x,pixel.y+1); + } + else { + if (Math.random() < 0.02 && pixel.age > 50 && pixel.temp < 100) { + if (!outOfBounds(pixel.x,pixel.y+1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { + changePixel(dirtPixel,"root"); + } + } + if (isEmpty(pixel.x,pixel.y-1)) { + movePixel(pixel,pixel.x,pixel.y-1); + createPixel(Math.random() > 0.5 ? "durian_wood" : "durian_branch",pixel.x,pixel.y+1); + } + } + else if (pixel.age > 1000) { + changePixel(pixel,"durian_wood"); + } + pixel.age++; + } + doDefaults(pixel); + }, + properties: { + "age":0 + }, + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -2, + stateLow: "frozen_plant", + burn: 65, + burnTime: 15, + category: "life", + state: "solid", + density: 1500, + cooldown: defaultCooldown, + seed: true, + behavior: [ + "XX|XX|XX", + "XX|FX%10|XX", + "XX|M1|XX", + ], +}; +elements.egg_white = { + color: "#edece8", + behavior: behaviors.LIQUID, + tempHigh: 100, + stateHigh: "hard_egg_white", + tempLow: 0, + stateLow: "hard_egg_white", + category: "food", + state: "liquid", + density: 1027.5, + viscosity: 270, + isFood: true, + whiskInto: "whisked_egg_white", +} +elements.hard_egg_white = { + color: "#dedddc", + behavior: behaviors.STURDYPOWDER, + tempHigh: 400, + stateHigh: "smoke", + category: "food", + hidden: true, + isFood: true, + state: "solid", + density: 1031 +} +elements.milk.whiskInto = "cream"; +elements.cream.whiskInto = "whipped_cream"; +elements.egg.breakInto = ["egg_white","egg_white","yolk"] + +elements.whisked_egg_white ={ + color: "#fefefe", + behavior: behaviors.LIQUID, + reactions: { + "corn_syrup": { elem1: "marshmallow", elem2: null, chance: 2 }, + "sugar": { elem1: "marshmallow", elem2: null, chance: 2 }, + }, + viscosity: 1.5, + tempHigh: 1000, + stateHigh: ["smoke","steam"], + category: "food", + hidden: true, + isFood: true, + state: "liquid", + density: 959.97, +} +elements.marshmallow = { + color: "#fafafa", + behavior: [ + "XX|XX|XX", + "ST:wood|XX|ST:wood", + "XX|M1|XX", + ], + viscosity: 1.5, + tempHigh: 70, + stateHigh: "cooked_marshmallow", + category: "food", + isFood: true, + state: "solid", + density: 959.97, +} +elements.cooked_marshmallow = { + color: "#f0dbb6", + behavior: [ + "XX|XX|XX", + "ST:wood|XX|ST:wood", + "XX|M1|XX", + ], + viscosity: 1.5, + tempHigh: 150, + stateHigh: "burnt_marshmallow", + category: "food", + isFood: true, + state: "solid", + density: 959.97, + hidden:true +} +elements.burnt_marshmallow = { + color: "#29231a", + behavior: [ + "XX|XX|XX", + "ST:wood|XX|ST:wood", + "XX|M1|XX", + ], + viscosity: 1.5, + tempHigh: 1000, + stateHigh: ["steam","caramel"], + category: "food", + isFood: true, + state: "solid", + density: 959.97, + hidden:true +} +eLists.FOODCOLORINGIGNORE = ["glass", "porcelain", "wall","iron","steel","copper","silver","aluminum","tungsten","gold","plastic"]; +elements.food_coloring = { + color: ["#ff0000", "#ff8800", "#ffff00", "#00ff00", "#00ffff", "#0000ff", "#ff00ff"], + behavior: behaviors.LIQUID, + customColor: true, + stain: 0.5, + tempHigh: 100, + stateHigh: "steam", + category: "food", + state: "liquid", + density: 998, + stainSelf: true, + ignore: ["glass", "porcelain", "wall","iron","steel","copper","silver","aluminum","tungsten","gold","plastic"], + desc: "coloring for food. color may fade when diluting with water.", + tick: function (pixel) { + for (var i = 0; i < squareCoords.length; i++) { + var coord = squareCoords[i]; + var x = pixel.x + coord[0]; + var y = pixel.y + coord[1]; + if (!isEmpty(x, y, true)) { + if (pixelMap[x][y].element === "water" || pixelMap[x][y].element === "salt_water" || pixelMap[x][y].element === "sugar_water" || pixelMap[x][y].element === "seltzer" || pixelMap[x][y].element === "dirty_water" || pixelMap[x][y].element === "pool_water") { + changePixel(pixelMap[x][y], "food_coloring"); + let newrgb = interpolateRgb(getRGB(pixel.color), getRGB(pixelMap[x][y].color), 0.5); + pixel.color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + pixelMap[x][y].color = `rgb(${parseInt(newrgb.r)},${parseInt(newrgb.g)},${parseInt(newrgb.b)})`; + } + else { + if (!outOfBounds(pixelMap[x][y])) { + if (!eLists.FOODCOLORINGIGNORE.includes(pixelMap[x][y].element) && pixelMap[x][y].element !== "glass" && pixelMap[x][y].element !== "porcelain" && pixelMap[x][y].element !== "wall" && pixelMap[x][y].element !== "plastic") { + let newrgb2 = interpolateRgb(getRGB(pixel.color), getRGB(pixelMap[x][y].color), 0.9); + pixelMap[x][y].color = `rgb(${parseInt(newrgb2.r)},${parseInt(newrgb2.g)},${parseInt(newrgb2.b)})`; + if (Math.random() < 0.002) { + deletePixel(pixel.x,pixel.y) + } + } + } + } + } + } + }, + onSelect: function () { + logMessage("Tip: You can spread food coloring using water."); + }, +} + +elements.cooked_meat.behavior = behaviors.SUPPORT; diff --git a/mods/a_mod_by_alice.js b/mods/a_mod_by_alice.js index 0b5bda76..bae9e2fd 100644 --- a/mods/a_mod_by_alice.js +++ b/mods/a_mod_by_alice.js @@ -1,5 +1,5 @@ var modName = "mods/../a_mod_by_alice.js" //can't do "alice's mod" because the apostrophe will fuck up code, be too confusing, or both -var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/CrashTestDummy.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js", "mods/aChefsDream.js", "mods/nousersthings.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, Sightnado, sqeč, and NoUsernameFound +var dependencies = ["mods/libhooktick.js", "mods/chem.js", "mods/minecraft.js", "mods/Neutronium Mod.js", "mods/CrashTestDummy.js", "mods/fey_and_more.js", "mods/velocity.js", "mods/ketchup_mod.js", "mods/moretools.js", "mods/aChefsDream.js", "mods/nousersthings.js"]; //thanks to mollthecoder, PlanetN9ne, StellarX20 (3), MelecieDiancie, R74n, Nubo318, Sightnado, SquareScreamYT, and NoUsernameFound var dependencyExistence = dependencies.map(x => enabledMods.includes(x)); var allDependenciesExist = dependencyExistence.reduce(function(a,b) { return a && b }); //console.log(allDependenciesExist); diff --git a/mods/blocks.js b/mods/blocks.js new file mode 100644 index 00000000..385c3995 --- /dev/null +++ b/mods/blocks.js @@ -0,0 +1,164 @@ +elements.zogron = { + color: ["#ebde34", "#34dbeb", "#ebe834"], + colorPattern: [ + "00055400", + "01111120", + "02111210", + "41152110", + "01121110", + "01211410", + "02151113", + "00000000", + ], + colorKey: { + "0": "#ebde34", + "1": "#dbeb34", + "2": "#ebe834", + "3": "#3d34eb", + "4": "#34dbeb", + "5": "#34ebb7", + }, + behavior: behaviors.WALL, + category: "Blocks", +} + +elements.roro = { + color: ["#000000", "#F00000"], + colorPattern: [ + "10000001", + "01111000", + "00111100", + "00011110", + "00001111", + "00011110", + "00111100", + "01111000", + ], + colorKey: { + "0": "#000000", + "1": "#F00000" + }, + behavior: behaviors.WALL, + category: "Blocks", +} + +elements.foldtos = { + color: ["#00FF00", "#0000FF"], + colorPattern: [ + "00100010", + "00100010", + "01111110", + "00100010", + "00100010", + "00100010", + "01111110", + "00100010" + ], + colorKey: { + "0": "#00FF00", + "1": "#0000FF" + }, + behavior: behaviors.WALL, + category: "Blocks" + }; + + elements.toyus = { + color: ["#FFFF00", "#00FF00", "#FFA500"], + colorPattern: [ + "02101210", + "01210102", + "02101210", + "00120210", + "01201012", + "01021021", + "02101210", + "00120210" + ], + colorKey: { + "0": "#FFFF00", + "1": "#00FF00", + "2": "#FFA500" + }, + behavior: behaviors.WALL, + category: "Blocks" + }; + + elements.slingus = { + color: ["#800080", "#0000FF", "#ADD8E6", "#FF69B4"], + colorPattern: [ + "01233210", + "12310213", + "23012301", + "30121230", + "12302312", + "23101203", + "30120123", + "01233210" + ], + colorKey: { + "0": "#800080", + "1": "#0000FF", + "2": "#ADD8E6", + "3": "#FF69B4" + }, + behavior: behaviors.WALL, + category: "Blocks" + }; + + elements.slingus_maximus = { + color: ["#800080", "#0000FF", "#ADD8E6", "#FF69B4"], + colorPattern: [ + "11111223", + "11112233", + "11122233", + "11222233", + "12222333", + "22223333", + "22233333", + "22333333" + ], + colorKey: { + "0": "#800080", + "1": "#0000FF", + "2": "#ADD8E6", + "3": "#FF69B4" + }, + behavior: behaviors.WALL, + category: "Blocks" + }; + + elements.slinkusy = { + color: ["#4B0082", "#0000FF", "#6495ED", "#FF1493"], + colorPattern: [ + "01223201", + "01223102", + "01022301", + "01022301", + "01223102", + "01223201", + "01223201", + "01223102" + ], + colorKey: { + "0": "#4B0082", + "1": "#0000FF", + "2": "#6495ED", + "3": "#FF1493" + }, + behavior: behaviors.WALL, + category: "Blocks" + }; + + worldgentypes.Mixy_blocks1 = { + layers: [ + [0.75, "slinkusy"], + [0.15, "toyus"], + [0.05, "foldtos"], + [0.0, "roro"], + ], + decor: [ + ["zogron", 0.04, 20], + ["slingus_maximus", 0.25, 30], + ], + baseHeight: 0.25 +} \ No newline at end of file diff --git a/mods/drugs.js b/mods/drugs.js new file mode 100644 index 00000000..34594a83 --- /dev/null +++ b/mods/drugs.js @@ -0,0 +1,142 @@ +elements.methamphetamine = { + category: "powders", + color: ["#b6ccd8", "#c5cfd6", "#cbd5db", "#6da5e0"], + state: "solid", + behavior: behaviors.POWDER, + temp: 20, + tempHigh: 1700, + stateHigh: "molten_methamphetamine", + reactions: { + "water": {elem1: null, elem2: "dirty_water"}, + "cell": {elem1: "methamphetamine", elem2: "plague", chance: 0.001}, + "plant": {elem1: "methamphetamine", elem2: "dead_plant", chance: 0.005}, + }, +}; + +elements.molten_methamphetamine = { + category: "states", + color: ["#fb7300", "#f93100", "#e05a1d", "#d65611"], + state: "liquid", + behavior: behaviors.RADMOLTEN, + tempLow: 1700, + stateLow: "methamphetamine", +}; + +elements.morphine = { + category: "powders", + color: "#c4dcf2", + state: "solid", + behavior: behaviors.POWDER, + tempHigh: 10000, + stateHigh: "n_explosion", + reactions: { + "head": {elem1: "n_explosion", elem2: "n_explosion", chance: 0.00008}, + "body": {elem1: "n_explosion", elem2: "n_explosion", chance: 0.00008}, + }, +}; + +elements.cigarette = { + category: "solids", + color: ["#754531", "#e1e1dd"], + state: "solid", + behavior: [ + "XX|CR:smoke%1 AND CR:carbon_dioxide%0.5|XX", + "CR:smoke%1 AND CR:carbon_dioxide%0.5|XX|CR:smoke%1 AND CR:carbon_dioxide%0.5", + "XX|CR:smoke%1 AND CR:carbon_dioxide%0.5|XX", + ], + tempHigh: 233, + stateHigh: ["ash", "fire"], + breakInto: ["dust", "ash", "ash", "ash", "charcoal"], +}; + +elements.cannabis = { + category: "powders", + state: "solid", + tempHigh: 100, + stateHigh: "dead_plant", + burn: 15, + burnTime: 60, + burnInto: "dead_plant", + breakInto: "dead_plant", + behavior: behaviors.POWDER, + color: ["#2C7415", "#1D5F00", "#B2DC29", "#B2DC29", "#2C7415"], + reactions: { + "head": { elem1: null, elem2: "fly" } + }, +} + +elements.cannabis_seed = { + category: "life", + state: "solid", + tempHigh: 120, + stateHigh: "dead_plant", + breakInto: "cannabis", + behavior: [ + "CR:cannabis_branch%2|CR:cannabis_branch%2|CR:cannabis_branch%2", + "XX|XX|XX", + "XX|M1|XX", + ], + color: "#57272C", +} + +elements.cannabis_branch = { + category: "life", + hidden: true, + state: "solid", + tempHigh: 120, + stateHigh: "dead_plant", + breakInto: "dead_plant", + behavior: [ + "CR:cannabis_branch%0.7|CR:cannabis_branch%3|CR:cannabis_branch%0.7", + "CR:cannabis%4|XX|CR:cannabis%4", + "CR:cannabis%4|XX|CR:cannabis%4", + ], + color: "#57272C", +} + +elements.weed = { + category: "powders", + behavior: behaviors.POWDER, + state: "solid", + tempHigh: 150, + stateHigh: "dead_plant", + breakInto: "dead_plant", + burn: 15, + burnTime: 60, + burnInto: "dead_plant", + color: ["#71B441", "#416201", "#426D06", "#91CA6F"] +} + +elements.weed_seed = { + category: "life", + state: "solid", + tempHigh: 150, + stateHigh: "dead_plant", + breakInto: "weed", + burn: 10, + burnTime: 60, + burnInto: "dead_plant", + color: "#5c4532", + behavior: [ + "CR:weed_branch%0.2|CR:weed_branch%0.2|CR:weed_branch%0.2", + "XX|XX|XX", + "XX|M1|XX", + ], +} + +elements.weed_branch = { + category: "life", + hidden: true, + state: "solid", + tempHigh: 150, + stateHigh: "dead_plant", + breakInto: "weed", + burn: 10, + burnTime: 60, + color: "#5c4532", + behavior: [ + "CR:weed_branch%0.7|CR:weed_branch%3|CR:weed_branch%0.7", + "CR:cannabis%4|XX|CR:cannabis%4", + "CR:cannabis%4|XX|CR:cannabis%4" + ], +} \ No newline at end of file diff --git a/mods/elementEraser.js b/mods/elementEraser.js index 5505fa7a..c2c5ceef 100644 --- a/mods/elementEraser.js +++ b/mods/elementEraser.js @@ -15,5 +15,22 @@ elements.element_eraser = { }, category: "tools", excludeRandom: true, - desc: "Input a element to erase only that element." + desc: "Use on pixels to delete specified element." +} +let finalEraseElement2 = null; +elements.exclusive_element_eraser = { + color: "#eeeeee", + onSelect: function() { + var answer = prompt("Please input the element you do not wish to delete. It will not work if you enter multiple element types while paused.",(finalEraseElement2||undefined)); + if (!answer2) { return } + finalEraseElement2 = mostSimilarElement(answer2); + }, + tool: function(pixel) { + if (pixel.element != finalEraseElement2) { + deletePixel(pixel.x,pixel.y) + } + }, + category: "tools", + excludeRandom: true, + desc: "Use on pixels to delete any element except the specified element." } diff --git a/mods/extrasaveslots.js b/mods/extrasaveslots.js new file mode 100644 index 00000000..5321bd03 --- /dev/null +++ b/mods/extrasaveslots.js @@ -0,0 +1,158 @@ +//extrasaveslots + function showSaves() { + var savesParent = document.getElementById("savesParent"); + var saveSlotList = document.getElementById("saveSlotList"); + saveSlotList.innerHTML = ""; + // loop 12 times, checking if local storage SandboxelsSaves/x exists + // Slot 1 Clear Load Save + // Unnamed Clear Load Save + for (var i = 1; i < 101; i++) { + var save = localStorage.getItem("SandboxelsSaves/"+i); + var name = "Slot "+i; + if (save) { + name = JSON.parse(save).meta.name || "Unnamed"; + name = name.replace(/&/g, "&").replace(/ 16) { name = name.substring(0,16)+"..."; } + saveSlotList.innerHTML += ""+name+" Clear Load Save"; + } + else { + saveSlotList.innerHTML += ""+name+" Clear Load Save"; + } + } + savesParent.style.display = "block"; + showingMenu = "saves"; + } + function saveSlot(i) { + savingState = {slot:i}; + document.getElementById("saveName").value = document.getElementById("saveSlot"+i).getAttribute("data-name") || "Slot "+i; + showSavePrompt(); + } + function loadSlot(i) { + var save = localStorage.getItem("SandboxelsSaves/"+i); + if (save) { + loadSave(JSON.parse(save)); + closeMenu(); + } + } + function clearSlot(i) { + if (!confirm("Are you sure you want to erase this save slot?")) { return } + localStorage.removeItem("SandboxelsSaves/"+i); + showSaves(); + } + function confirmSave() { + if (!savingState) { return } + var saveName = document.getElementById("saveName").value || "Unnamed"; + var saveTemp = document.getElementById("saveTemp").getAttribute("state") === "1"; + var saveColors = document.getElementById("saveColors").getAttribute("state") === "1"; + var saveMods = document.getElementById("saveMods").getAttribute("state") === "1"; + var saveSettings = document.getElementById("saveSettings").getAttribute("state") === "1"; + var saveRaw = document.getElementById("saveRaw").getAttribute("state") === "1"; + var saveAuthor = document.getElementById("saveAuthor").value || ""; + if (saveAuthor && !currentSaveData) { + setSetting("authorName",saveAuthor) + } + var saveDesc = document.getElementById("saveDesc").value || ""; + var config = {name:saveName,temp:saveTemp,mods:saveMods,settings:saveSettings,raw:saveRaw,keep:[],author:saveAuthor,desc:saveDesc}; + if (saveTemp) { config.keep.push("temp") } + if (saveColors) { config.keep.push("color") } + if (savingState.slot) { + // save stringified generateSave() to localStorage SandboxelsSaves/i + localStorage.setItem("SandboxelsSaves/"+savingState.slot, JSON.stringify(generateSave(undefined,config))); + closeMenu(); + showSaves(); + } + else { + // save to .sbxls + var save = generateSave(undefined,config); + var blob = new Blob([JSON.stringify(save)], {type: "application/json"}); + var url = URL.createObjectURL(blob); + var a = document.createElement("a"); + a.href = url; + a.download = saveName+".sbxls"; + document.body.appendChild(a); + a.click(); + setTimeout(function() { + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + }, 0); + closeMenu(); + } + } + function saveToFile() { + savingState = {slot:null}; + document.getElementById("saveName").value = ""; + document.getElementById("saveAuthor").value = ""; + document.getElementById("saveDesc").value = ""; + showSavePrompt(); + } + function loadFromFile() { + var input = document.createElement("input"); + input.type = "file"; + // input.accept = ".sbxls,.json,.txt,text/*,application/json"; + input.addEventListener("change", function(e) { + var file = e.target.files[0]; + var reader = new FileReader(); + reader.readAsText(file,"UTF-8"); + reader.onload = readerEvent => { + var content = readerEvent.target.result; + loadSave(JSON.parse(content)); + } + closeMenu(); + }); + input.click(); + } + function showSavePrompt() { + closeMenu(); + var savePromptParent = document.getElementById("savePromptParent"); + var saveWarning = document.getElementById("saveWarning"); + if (currentSaveData) { + document.getElementById("saveName").value = currentSaveData.name || ""; + document.getElementById("saveAuthor").value = currentSaveData.author || ""; + document.getElementById("saveDesc").value = currentSaveData.desc || ""; + } + else if (settings.authorName) { + document.getElementById("saveAuthor").value = settings.authorName; + } + saveWarning.innerHTML = "
" + var menuTitle = document.querySelector("#savePromptMenu .menuTitle"); + if (savingState.slot === null) { + menuTitle.innerHTML = "Save to File"; + } + else { + menuTitle.innerHTML = "Save to Slot"; + if (localStorage["SandboxelsSaves/"+savingState.slot]) { + saveWarning.innerHTML += "
This will overwrite the save in slot "+savingState.slot+"!"; + } + } + var saveMods = document.getElementById("saveMods"); + if (enabledMods.length !== 0) { + saveMods.style.display = "inline-block"; + saveWarning.innerHTML += "
Mods might not be necessary to include, and may annoy the user!"; + } + else { saveMods.style.display = "none"; } + savePromptParent.style.display = "block"; + showingMenu = "savePrompt"; + document.getElementById("saveName").focus(); + } + function showSettings() { + var settingsParent = document.getElementById("settingsParent"); + settingsParent.style.display = "block"; + showingMenu = "settings"; + } + function setSetting(setting,value) { + settings[setting] = value; + saveSettings(); + } + function toggleInput(input,setting,updateText) { + if (input.getAttribute("state") === "0") { + input.setAttribute("state","1"); + if (updateText !== false) { input.value = "ON"; } + if (setting) { setSetting(setting,1); } + } + else { + input.setAttribute("state","0"); + if (updateText !== false) { input.value = "OFF"; } + if (setting) { setSetting(setting,0); } + } + } \ No newline at end of file diff --git a/mods/fools+.js b/mods/fools+.js new file mode 100644 index 00000000..213e396b --- /dev/null +++ b/mods/fools+.js @@ -0,0 +1,299 @@ +// all the credits go to R74n +// made worse by sqec +// i'm sorry, here's some poorly made ascii art bleach for your eyes +// tbh most of it was copied from index.html or fools.js +// moss inspired +// code messy don't read +/* +_____ +| | +|--------. +| \ +| |\ \ +| | \ \ +| \ \ \ +| \_| . +| | +| BLEACH | +| 12floz | +| | +|_____________| +*/ + +behaviors.CRASH = [ + "XX|XX|XX", + "XX|EX:100000>flash|XX", + "XX|XX|XX", +] + +fonts = ["Webdings","Comic Sans MS","Times New Roman","Monospace","Wingdings","Courier New", + "Papyrus","Impact","Curlz MT","Jokerman","Segoe Script","Bradley Hand ITC"] +funnysavenames = ["identity theft","the saveinator","Save 95","nuclear reactor","stomach man", + "calculator","potato chip","bread bowl","more gun","error 704 save not found","fortnite dance", + "foghorn","Unknown","mixup save","balls 🏀","sbave","the moss field","uhhhh", + "Grumman f-14 tomcat fighter jet","mcdonnell douglas f-15 eagle fighter jet", + "untextured unrigged blender brick","rebar","the giant enemy spider", + "statue of ryan","🟩","🟥","the temple of ryan","🌳 🌳 🌳","R74n ripoff", + "the powder toy","tpt save","save from tpt","sand:box save","sandspiel save", + "cool plane","big mac with uranium","nyc","mountain thing","Slot NaN","Slot 1", + "Slot 1.5","Slot pi","Slot golden ratio","Slot Infinity","Computer thing","Pro Kitchen", + "Airport","Coconut Plantation","Eiffel Tower","car"] + +allproperties = {} + +skipproperties = ["color", "colorOn", "forceAutoGen", "name", "category", "colorObject", "hidden", "tempHigh", "tempLow", "stateHigh", "stateLow"] +goodproperties = ["behavior","tick"] +elements.molten_rad_glass.color = "#ffffff" + +for (element in elements) { + var elementdata = elements[element] + if (elementdata.category === "tools") { continue } + for (property in elementdata) { + //if (skipproperties.indexOf(property) !== -1) { continue } + // only use properties that are in goodproperties + if (goodproperties.indexOf(property) === -1) { continue } + if (!allproperties[property]) { + allproperties[property] = [] + } + allproperties[property].push(elementdata[property]) + } +} +// delete all properties from elements except skipproperties +for (element in elements) { + var elementdata = elements[element] + if (elementdata.category === "tools") { continue } + for (property in elementdata) { + //if (skipproperties.indexOf(property) === -1) { + // only delete properties that are in goodproperties + if (goodproperties.indexOf(property) !== -1) { + delete elementdata[property] + } + } +} + +// make a randomized shuffled list of all elements +var elementlist = Object.keys(elements) +elementlist.sort(function() { return 0.5 - Math.random() }) + +// randomly assign properties to elements +for (property in allproperties) { + // list of values for this property + var propertyvalues = allproperties[property] + // loop through elements, assigning values until we run out + for (var i = 0; i < elementlist.length; i++) { + if (i >= propertyvalues.length) { break } + var element = elementlist[i] + var elementdata = elements[element] + elementdata[property] = propertyvalues[i] + } + // reshuffle the list of elements + elementlist.sort(function() { return 0.5 - Math.random() }) +} + +// choose random values for properties +for (element in elements) { + elementdata = elements[element] + if (elementdata.category === "tools") { continue } + // set tempHigh to a random value between 0 and 10000 + elementdata.tempHigh = Math.floor(Math.random() * 10000) + // set tempLow to a random value between -273 and 0 + elementdata.tempLow = Math.floor(Math.random() * 273) - 273 + if (elementdata.stateHigh) { + elementdata.stateHigh = elementlist[Math.floor(Math.random() * elementlist.length)] + } + if (elementdata.stateLow) { + elementdata.stateLow = elementlist[Math.floor(Math.random() * elementlist.length)] + } + if (elementdata.reactions) { + for (reactant in elementdata.reactions) { + elementdata.reactions[reactant].elem1 = elementlist[Math.floor(Math.random() * elementlist.length)] + elementdata.reactions[reactant].elem2 = elementlist[Math.floor(Math.random() * elementlist.length)] + elementdata.reactions[elementlist[Math.floor(Math.random() * elementlist.length)]] = elementdata.reactions[reactant] + delete elementdata.reactions[reactant] + } + } + +} + +// Generate random hex color codes +function getRandomHexColor() { + let hex = '#'; + for (let i = 0; i < 6; i++) { + hex += Math.floor(Math.random() * 16).toString(16); + } + return hex; +} +//random word generator +function generateRandomWord() { + let word = ''; + const letters = 'abcdefghijklmnopqrstuvwxyz'; + + // Generate random word + for(let i = 0; i < Math.floor(Math.random() * 20); i++) { + word += letters.charAt(Math.floor(Math.random() * letters.length)); + } + + // Randomly add spaces + for(let i = 0; i < word.length; i++) { + if(Math.random() < 0.2) { + word = word.slice(0, i) + ' ' + word.slice(i); + } + } + + return word; + } +// Set random colors +for (let element in elements) { + let elementData = elements[element]; + if (Math.random() < 0.3) { + elementData.color = [getRandomHexColor(),getRandomHexColor(),getRandomHexColor()]; + } + else if (Math.random() < 0.5) { + elementData.color = [getRandomHexColor(),getRandomHexColor()]; + } + else if (Math.random() < 0.8) { + elementData.color = getRandomHexColor(); + } + else { + elementData.color = [getRandomHexColor(),getRandomHexColor(),getRandomHexColor(),getRandomHexColor(),getRandomHexColor()]; + } +} +// Set random category +for (let element in elements) { + let elementData = elements[element]; + if (elementData.category === "tools") { continue } + elementData.category = generateRandomWord(); +} +runAfterLoad(function() { + pixelTempCheckTemp = pixelTempCheck + pixelTempCheck = function(pixel) { + try { + pixelTempCheckTemp(pixel) + } + catch (e) {} + } +}) + +var fonttouse = fonts[Math.floor(Math.random() * fonts.length)] + +runAfterLoad(function() { + //inverts scroll direction + if (navigator.platform.toUpperCase().indexOf('MAC')>=0) { + settings.invertscroll = false; + } + else { + settings.invertscroll = true; + } + // change every font to to random + var css = document.createElement("style") + css.innerHTML = "* { font-family: "+fonttouse+" !important; font-size: 32px !important;}" + document.body.appendChild(css) + // randomize background color + document.body.style.backgroundColor = "rgb(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + ")" + document.body.style.color = "rgb(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + ")" + document.body.style.textShadow = "20px 0px "+getRandomHexColor(); + // replace choose element so it's impossible to find any element + chooseElementPrompt = function() { + alert("This feature is disabled for April Fools Day :)") + } + //showSaves = function() { + // alert("This feature is disabled for April Fools Day :)") + //} + showSaves = function() { + var savesParent = document.getElementById("savesParent"); + var saveSlotList = document.getElementById("saveSlotList"); + saveSlotList.innerHTML = ""; + // loop 12 times, checking if local storage SandboxelsSaves/x exists + // Slot 1 Clear Load Save + // Unnamed Clear Load Save + for (var i = 1; i < 13; i++) { + var save = localStorage.getItem("SandboxelsSaves/"+i); + var name = funnysavenames[Math.floor(Math.random() * funnysavenames.length)]; + if (save) { + name = JSON.parse(save).meta.name || "Unnamed"; + name = name.replace(/&/g, "&").replace(/ 16) { name = name.substring(0,16)+"..."; } + saveSlotList.innerHTML += ""+name+" Clear Load Save"; + } + else { + saveSlotList.innerHTML += ""+name+" Clear Load Save"; + } + } + savesParent.style.display = "block"; + showingMenu = "saves"; + } + // set zoom to 110%. it doesn't do anything but apparently offsets the brush? what. + document.body.style.zoom = "110%"; + // set background (game background not page background) to a random color + setSetting('bg',getRandomHexColor()); + // no more pause for you! + togglePause = function() { + alert("This feature is disabled for April Fools Day :)") + } + // Get all element keys + const elementsList = Object.keys(elements); + + // Shuffle the keys randomly + elementsList.sort(() => Math.random() - 0.5); + + // Create new shuffled elements object + const shuffledElements = {}; + + // Add elements to new object in shuffled order + elementsList.forEach(key => { + shuffledElements[key] = elements[key]; + + // blurs page + document.body.style.filter = "blur(0.8px)"; +}); + +// Replace original with shuffled version +elements = shuffledElements; +}) +// generate random element +function selectRandomElement() { + const elementKeys = Object.keys(elements); + const randomIndex = Math.floor(Math.random() * elementKeys.length); + const randomElementKey = elementKeys[randomIndex]; + + return elements[randomElementKey].name; + } +// randomly increases or decreases mouse size +setInterval(function(){ + if (Math.random() < 0.5) { + if (Math.random() < 0.5) { + mouseSize = mouseSize + 1; + } + else { + mouseSize = mouseSize - 1; + } + } + if (Math.random() < 0.05) { + selectElement(selectRandomElement()); + } + // evil random popup + if (Math.random() < 0.005) { + alert("funny popup"); + } + // useless prompt + if (Math.random() < 0.005) { + var funnyuselessprompt = prompt("funny prompt"); + } + if (Math.random() < 0.2) { + tps = tps + Math.round(Math.random()*4)-2; + } + if (Math.random() < 0.005) { + tps = 1000 + } + if (Math.random() < 0.05) { + tps = 30 + } + // every once in a while, everythign randomises + if (Math.random() < 0.1) { + document.body.style.color = getRandomHexColor(); + document.body.style.textShadow = "20px 0px "+getRandomHexColor(); + document.body.style.backgroundColor = "rgb(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + ")" + setSetting('bg',getRandomHexColor()); + } +}, 200); diff --git a/mods/fools24.js b/mods/fools24.js new file mode 100644 index 00000000..8a526e53 --- /dev/null +++ b/mods/fools24.js @@ -0,0 +1,842 @@ +/* +[Version 5.9.1 - April 1, 2024 - Multiversal Update] + + Multiverse Time Travel + + Use Timeline controls to navigate multidimensional space + + Split off from your current timeline + + Eat tool + + Mirror Dimension + + Access by throwing a test subject into a Mirror Portal + + Moon + + Moon Rock (Hidden) + + Freeze tool + + Freeze Ray + + Air + + UFO + + Life Force + + Carbon + + Photon + + Electron + + BBQ Sauce + + Mustard + + Holy Grenade + + Ice Ten + + Love (Amends anuran ailments) + + Love Bomb + + Dirt Bomb + + Cluster Cluster Bomb + + Cherry + + Blueberry + + Olive + + Blue Cheese + + Toad + + Mouse + + Basketball + + Baseball + + Tennis Ball + + Quirky Paint + + Pen tool + + Cursor + + Powder + + Footprint + + Light Ice (Hidden) + + Big Bang (Hidden) + [Changes] + + 68% of Humans are lactose intolerant + + 1% of Humans are gluten intolerant + + Humans now drink Water + - Removed Gender Binary + + Fireflies have a distinct sound + + Bless converts Antimatter and Strange Matter to Normal Matter + + Bless removes money, the root of all evil + + Bless converts Plastic to eco-friendly Paper + + Bless converts Water to Wine + + Pb&J recipe + + Helium can freeze again + + Helium increases pitch of Human voice + - Removed Blood + ~ Birds have been recolored as tribute + ~ Udders produce many kinds of Milk + ~ Cheerful Mode now hides ALL weapons + ~ Moved Firework to Machines + ~ Moved Ball to Special + ~ Renamed Gray Goo to Grey Goo + ~ Renamed Molten Tin to Moltin + ~ Unhid Supernova + + Re-added Cluster Bomb + [Bug Fixes] + ~ Fixed: Water is not wet +*/ + +currentversion = "5.9.1" + +if (!elements.bless.reactions) { elements.bless.reactions = {}; } +elements.bless.reactions.gold_coin = { elem2:null } +elements.bless.reactions.plastic = { elem2:"paper" } +elements.bless.reactions.bead = { elem2:"sawdust" } +elements.bless.reactions.water = { elem2:"alcohol", color2:"#722F37" } + +if (!elements.lead.reactions) { elements.lead.reactions = {}; } +elements.lead.reactions.grape = { elem1:"nut_butter", elem2:"jelly" } +elements.lead.reactions.jelly = { elem1:"nut_butter" } + +elements.head.tempTick = elements.head.tick +elements.head.tick = function(pixel) { + elements.head.tempTick(pixel); + if (!pixel.sus) { // susceptibility to disease + pixel.sus = Math.random(); + } +} +if (!elements.head.reactions) { elements.head.reactions = {}; } +var lactoseReaction = function(pixel) { + if (pixel.sus < 0.68) { changePixel(pixel,"explosion") } +} +var glutenReaction = function(pixel) { + if (pixel.sus < 0.01) { changePixel(pixel,"explosion") } +} +elements.head.reactions.milk = { chance:0.1, func:lactoseReaction } +elements.head.reactions.cheese = { chance:0.1, func:lactoseReaction } +elements.head.reactions.butter = { chance:0.1, func:lactoseReaction } +elements.head.reactions.melted_cheese = { chance:0.1, func:lactoseReaction } +elements.head.reactions.melted_butter = { chance:0.1, func:lactoseReaction } +elements.head.reactions.yogurt = { chance:0.1, func:lactoseReaction } +elements.head.reactions.ice_cream = { chance:0.1, func:lactoseReaction } +elements.head.reactions.cream = { chance:0.1, func:lactoseReaction } +elements.head.reactions.frozen_yogurt = { chance:0.1, func:lactoseReaction } +elements.head.reactions.wheat = { chance:0.1, func:glutenReaction } +elements.head.reactions.bread = { chance:0.1, func:glutenReaction } +elements.head.reactions.toast = { chance:0.1, func:glutenReaction } +elements.head.reactions.gingerbread = { chance:0.1, func:glutenReaction } +elements.head.reactions.batter = { chance:0.1, func:glutenReaction } +elements.head.reactions.flour = { chance:0.1, func:glutenReaction } +elements.head.reactions.baked_batter = { chance:0.1, func:glutenReaction } +elements.head.reactions.water = { elem2:null, chance:0.1 } +elements.head.reactions.sugar_water = { elem2:null, chance:0.1 } +elements.head.reactions.seltzer = { elem2:null, chance:0.1 } +elements.body.color = "#069469"; + +elements.firework.category = "machines"; + +elements.normal_matter = { + color: "#9ba89b", + behavior: [ + "M2|M2|M2", + "M1|XX|M1", + "M1|M1|M1", + ], + category: "special", + state: "gas", + density: 2.1, + hidden: true +}; +elements.bless.reactions.antimatter = { elem2:"normal_matter" } +elements.bless.reactions.strange_matter = { elem2:"normal_matter" } + +elements.ice_ten = { + color: ["#84d0ff","#85daff","#80ffff"], + behavior: [ + "XX|XX|XX", + "XX|CH:ice%0.5|XX", + "M2|M1|M2", + ], + reactions: { + "ice_ten": { func:function(pixel1,pixel2){ + var pixels = currentPixels.slice(); + for (var i = 0; i < pixels.length; i++) { + var pixel = pixels[i]; + pixel.temp = -10000; + pixelTempCheck(pixel); + } + }, elem1:null, elem2:null }, + }, + temp:-100, + category: "special", + state: "solid", + density: 917, + excludeRandom: true +}; + +elements.gray_goo.name = "grey_goo"; + +elements.big_bang = { + color: ["#ffebeb","#ffc9c9","#ffabab"], + behavior: [ + "XX|XX|XX", + "XX|EX:200>hydrogen,neutron,proton,electric AND CH:void|XX", + "XX|XX|XX", + ], + temp: 1000000000000000, + category: "energy", + state: "gas", + density: 1000, + hardness: 1, + hidden: true, + excludeRandom: true, + maxSize: 1, + cooldown: defaultCooldown, + noMix: true +}; + +elements.blood.name = "life_force"; +elements.blood.color = ["#99ff00","#d9ff00"]; +delete elements.blood_ice.color; +elements.blood_ice.name = "life_force_ice"; + +elements.holy_grenade = { + color: "#fffd6a", + behavior: [ + "XX|EX:10>bless|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>bless|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.love = { + color: ["#fccbff","#ff9edf","#ff5cb6"], + behavior: [ + "M2|M1|M2", + "M1|DL%25|M1", + "M2|M1|M2", + ], + temp:20, + state: "gas", + density: 0.001, + canPlace: true, + category: "energy", + stain: -0.5 +}; +elements.love.reactions = elements.bless.reactions; +elements.love.tool = elements.bless.tool; +if (!elements.frog.reactions) { elements.frog.reactions = {}; } +elements.frog.reactions.love = { elem1:"human" } +if (!elements.bomb.reactions) { elements.bomb.reactions = {}; } +elements.bomb.reactions.love = { elem1:"love_bomb" } +if (!elements.grenade.reactions) { elements.grenade.reactions = {}; } +elements.grenade.reactions.love = { elem1:"love_bomb" } + +elements.love_bomb = { + color: "#ff84f1", + behavior: [ + "XX|EX:10>love|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>love|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} +elements.dirt_bomb = { + color: "#694805", + behavior: [ + "XX|EX:10>dirt|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>dirt|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.cluster_bomb = { + color: "#7d776d", + behavior: [ + "XX|EX:10>smoke,smoke,smoke,smoke,smoke,grenade%1|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>smoke,smoke,smoke,smoke,smoke,grenade%1|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "molten_steel", + excludeRandom: true, + cooldown: defaultCooldown +} +elements.cluster_cluster_bomb = { + color: "#c1b7a5", + behavior: [ + "XX|EX:10>smoke,smoke,smoke,smoke,smoke,cluster_bomb%1|XX", + "XX|XX|XX", + "M2|M1 AND EX:10>smoke,smoke,smoke,smoke,smoke,cluster_bomb%1|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + tempHigh: 1455.5, + stateHigh: "molten_steel", + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.bbq_sauce = { + color: "#571E1A", + behavior: behaviors.LIQUID, + viscosity: 50000, + tempHigh: 260, + stateHigh: ["carbon_dioxide","methane","steam","salt","sugar"], + category:"liquids", + state: "liquid", + density: 1235, + stain: 0.05, + isFood: true +} +if (!elements.ketchup.reactions) { elements.ketchup.reactions = {}; } +elements.ketchup.reactions.molasses = { elem1:"bbq_sauce", elem2:"bbq_sauce" } + +elements.mustard = { + color: "#e1ad01", + behavior: behaviors.LIQUID, + viscosity: 50000, + tempHigh: 260, + stateHigh: ["carbon_dioxide","methane","steam","sugar"], + category:"liquids", + state: "liquid", + density: 1235, + stain: 0.05, + isFood: true +} + +elements.cherry = { + color: ["#ff295b","#ff212c","#ff1f1f","#ff4e33"], + behavior: behaviors.POWDER, + reactions: { + "rock": { elem1:"juice", chance:0.1, color1:"#8e0000" }, + "concrete": { elem1:"juice", chance:0.1, color1:"#8e0000" }, + "basalt": { elem1:"juice", chance:0.1, color1:"#8e0000" }, + "limestone": { elem1:"juice", chance:0.1, color1:"#8e0000" }, + "tuff": { elem1:"juice", chance:0.1, color1:"#8e0000" }, + "water": { elem2:"juice", chance:0.005, color2:"#8e0000" }, + "sugar_water": { elem2:"juice", chance:0.025, color2:"#8e0000" }, + "acid": { elem1:"juice", color1:"#8e0000" }, + "acid_gas": { elem1:"juice", color1:"#8e0000" }, + }, + tempHigh: 256, + stateHigh: ["steam","sugar"], + category: "food", + state: "solid", + density: 1154, + breakInto: "juice", + breakIntoColor: "#8e0000", + ignoreAir: true, + isFood: true +} +elements.blueberry = { + color: ["#4929ff","#5821ff","#221cc8","#2406a0"], + behavior: behaviors.POWDER, + reactions: { + "rock": { elem1:"juice", chance:0.1, color1:"#1b1259" }, + "concrete": { elem1:"juice", chance:0.1, color1:"#1b1259" }, + "basalt": { elem1:"juice", chance:0.1, color1:"#1b1259" }, + "limestone": { elem1:"juice", chance:0.1, color1:"#1b1259" }, + "tuff": { elem1:"juice", chance:0.1, color1:"#1b1259" }, + "water": { elem2:"juice", chance:0.005, color2:"#1b1259" }, + "sugar_water": { elem2:"juice", chance:0.025, color2:"#1b1259" }, + "acid": { elem1:"juice", color1:"#1b1259" }, + "acid_gas": { elem1:"juice", color1:"#1b1259" }, + }, + tempHigh: 256, + stateHigh: ["steam","sugar"], + category: "food", + state: "solid", + density: 1154, + breakInto: "juice", + breakIntoColor: "#1b1259", + ignoreAir: true, + isFood: true +} +elements.olive = { + color: ["#808000","#91912c","#a1a148","#686800"], + behavior: behaviors.POWDER, + reactions: { + "rock": { elem1:"juice", chance:0.1, color1:"#ebeb55" }, + "concrete": { elem1:"juice", chance:0.1, color1:"#ebeb55" }, + "basalt": { elem1:"juice", chance:0.1, color1:"#ebeb55" }, + "limestone": { elem1:"juice", chance:0.1, color1:"#ebeb55" }, + "tuff": { elem1:"juice", chance:0.1, color1:"#ebeb55" }, + "water": { elem2:"juice", chance:0.005, color2:"#ebeb55" }, + "sugar_water": { elem2:"juice", chance:0.025, color2:"#ebeb55" }, + "acid": { elem1:"juice", color1:"#ebeb55" }, + "acid_gas": { elem1:"juice", color1:"#ebeb55" }, + }, + tempHigh: 256, + stateHigh: ["steam","sugar"], + category: "food", + state: "solid", + density: 1154, + breakInto: "juice", + breakIntoColor: "#ebeb55", + ignoreAir: true, + isFood: true +} + +elements.carbon = elements.charcoal; +elements.photon = elements.light; +elements.electron = elements.electric; + +elements.blue_cheese = { + color: "#0352fc", + behavior: behaviors.STURDYPOWDER, + tempHigh: 54, + stateHigh: "melted_cheese", + category: "food", + state: "solid", + density: 477.62, + isFood: true +}; +if (elements.cheese.reactions) { elements.blue_cheese.reactions = elements.cheese.reactions; } + +elements.moon = { + color: ["#b9b9b9","#8e8e8e","#b9b9b9"], + behavior: behaviors.WALL, + tempHigh: 100, + stateHigh: "melted_cheese", + category: "special", + state: "solid", + density: 3300, + insulate: true, + noMix: true, + alias: "satellite", + movable: false, + hardness: 0.8, + breakInto: "moon_rock" +}; +if (!elements.light.reactions) { elements.light.reactions = {}; } +elements.light.reactions.moon = { color1:"#ffffff" } +elements.light.reactions.moon_rock = { color1:"#ffffff" } + +elements.moon_rock = { + color: ["#b9b9b9","#a3a3a3","#898989"], + behavior: behaviors.POWDER, + tempHigh: 100, + stateHigh: "melted_cheese", + category: "land", + state: "solid", + density: 3300, + hardness: 0.25, + breakInto: "dust", + hidden: true, + alias: "lunar_rock" +}; +if (elements.rock.reactions) { elements.moon_rock.reactions = elements.rock.reactions; } + +elements.toad = elements.frog; + +elements.mouse = { + color: ["#aaaaaa","#8a8a8a","#cdcdcd"], + behavior: [ + "XX|M2%1.5|M2%5", + "XX|FX%2|M2 AND BO", + "XX|M1|M2", + ], + egg: "mouse", + category: "life", + temp: 37.6, + tempHigh: 120, + stateHigh: "cooked_meat", + tempLow: -18, + stateLow: "frozen_meat", + breakInto: "blood", + burn:80, + burnTime:150, + state: "solid", + density: 1450, + conduct: 0.25 +}; +elements.bless.reactions.rat = { elem2:"mouse" } + +elements.ball.hidden = false; +elements.basketball = { + color: "#d14b17", + behavior: [ + "XX|XX|XX", + "XX|FY:0%5|XX", + "XX|M1 AND BO|XX", + ], + tempHigh: 250, + stateHigh: "molten_plastic", + category: "special", + flipY: false, + flippableY: true, +}; +elements.baseball = { + color: "#d7d7d7", + behavior: [ + "XX|XX|XX", + "XX|FY:0%5|XX", + "XX|M1 AND BO|XX", + ], + tempHigh: 250, + stateHigh: "molten_plastic", + category: "special", + flipY: false, + flippableY: true, +}; +elements.tennis_ball = { + color: "#c2ff48", + behavior: [ + "XX|XX|XX", + "XX|FY:0%5|XX", + "XX|M1 AND BO|XX", + ], + tempHigh: 250, + stateHigh: "molten_plastic", + category: "special", + flipY: false, + flippableY: true, +}; + +elements.supernova.hidden = false; + +elements.quirky_paint = { + color: ["#b1b1b1","#9dc270","#c170c2","#107f10","#442f21","#ff6e6e","#34555f"], + tool: function(pixel) { + var hexcode = "#"+(Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")); + pixel.color = pixelColorPick(pixel,hexcode); + delete pixel.origColor; + }, + category: "special", + canPlace: false, + desc: "Use on pixels to change color randomly." +}; + +elements.bird.color = "#1DA1F2"; + +elements.freeze = { + color: ["#b1e5ff","#6e89ec"], + tool: function(pixel) { + pixel.temp -= 1000; + pixelTempCheck(pixel); + }, + category: "energy", + excludeRandom: true +}; + +elements.freeze_ray = { + color: ["#00aaff","#0037ff"], + 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 = "#00aaff"; + pixelMap[x][y].temp = -200; + } + 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: -200, + category: "energy", + state: "gas", + density: 1, + excludeRandom: true, + noMix: true +}; + +elements.ufo = { + color: "#9ddfa3", + behavior: [ + "XX|XX|XX", + "XX|FX%5|M1%50", + "XX|XX|XX" + ], + tick: function(pixel) { + if (pixel.ray) { + if (isEmpty(pixel.x,pixel.y+1)) { + createPixel(pixel.ray,pixel.x,pixel.y+1); + } + if (Math.random() < 0.1) { + pixel.ray = null; + } + } + else if (Math.random() < 0.1) { + var rays = ["heat_ray","freeze_ray","god_ray"]; + pixel.ray = rays[Math.floor(Math.random()*rays.length)]; + } + }, + breakInto: ["metal_scrap","slime"], + category: "special" +}; + +elements.udder.tick = function(pixel) { + if (Math.random() <= 0.025 && isEmpty(pixel.x,pixel.y+1)) { + var milks = ["milk","pilk","chocolate_milk","fruit_milk","eggnog"]; + var milk = milks[Math.floor(Math.random()*milks.length)]; + createPixel(milk,pixel.x,pixel.y+1); + pixelMap[pixel.x][pixel.y+1].temp = 38; + } + doDefaults(pixel); +}; + +elements.liquid_light.tempLow = -1000; +elements.liquid_light.stateLowName = "light_ice"; +elements.light_ice = { + behavior: behaviors.WALL, + state: "solid", +} + +fireflySound = null; +elements.firefly.onSelect = function() { + fireflySound = new Audio("https://archive.org/download/09Fireflies/09%20Fireflies.mp3"); +} +elements.firefly.onMouseDown = function() { + if (fireflySound) { fireflySound.play(); } +} + +elements.pen = { + color: "#000000", + tool: function(pixel) { + if (pixel.element === "paper") { + pixel.color = pixelColorPick(pixel,"#000000"); + } + }, + category: "special", + desc: "Draws on Paper." +} +elements.eat = { + color: ["#ffba79","#efff79"], + tool: function(pixel) { + if (elements[pixel.element].isFood) { + deletePixel(pixel.x,pixel.y); + } + }, + category: "tools", + desc: "Consumes edible pixels." +} + +elements.molten_tin.name = "moltin"; + +elements.ball.category = "energy"; + +elements.liquid_helium.tempLow = -272; + +elements.cursor = { + color: ["#000000","#00ff00"], + behavior: behaviors.WALL, + tick: function(pixel) { + if (pixelTicks % 60 < 30) { + pixel.color = "#000000"; + } + else { + pixel.color = "#00ff00"; + } + }, + category: "special", + related: "pointer" +} +elements.pointer.related = "cursor"; + +elements.footprint = { + color: ["#73777A","#B3B7BA","#F3F7FA"], + colorPattern: [ + "00000001", + "01111112", + "01111112", + "01111112", + "01111112", + "01111112", + "01111112", + "12222222", + ], + colorKey: { + "0": "#73777A", + "1": "#B3B7BA", + "2": "#F3F7FA", + }, + behavior: behaviors.WALL, + category: "special" +} + +elements.air = { + color: "#000000", + tool: function(){}, + category: "gases" +} + +elements.powder = { + color: "#ffffff", + colorPattern: ["F"], + colorKey: { "F": "#ffffff" }, + behavior: behaviors.POWDER, + category: "powders", + state: "solid", +} + +inMirrorDimension = false; +function getMousePos(canvas, evt) { + // If evt.touches is defined, use the first touch + if (evt.touches) { + evt.preventDefault(); + evt = evt.touches[0]; + isMobile = true; + } + var rect = canvas.getBoundingClientRect(); + return { + // Round to nearest pixel + x: Math.round((evt.clientX - rect.left)/pixelSize-0.5), + y: Math.round((evt.clientY - rect.top)/pixelSize-0.5) + }; +} +oldGetMousePos = getMousePos; +elements.mirror_portal = { + color: ["#e07aff","#693778","#4b2843","#1f0f1b"], + behavior: [ + "XX|SW:mirror_portal%10|XX", + "SW:mirror_portal%10|XX|SW:mirror_portal%10", + "XX|SW:mirror_portal%10|XX" + ], + category: "special", + reactions: { + "body": { + func: function() { + if (!inMirrorDimension) { + inMirrorDimension = true; + for (var i = 0; i < currentPixels.length; i++) { + var pixel = currentPixels[i]; + if (pixel.element === "mirror_portal") { + deletePixel(pixel.x,pixel.y); + i--; + } + } + document.head.insertAdjacentHTML("beforeend",` + + `); + // invert the math in getMousePos + getMousePos = function(canvas, evt) { + if (evt.touches) { + evt.preventDefault(); + evt = evt.touches[0]; + isMobile = true; + } + var rect = canvas.getBoundingClientRect(); + return { + x: Math.round((rect.right - evt.clientX)/pixelSize-0.5), + y: Math.round((rect.bottom - evt.clientY)/pixelSize-0.5) + }; + } + } + else { + inMirrorDimension = false; + document.getElementById("mirrorDimensionStyle").remove(); + for (var i = 0; i < currentPixels.length; i++) { + var pixel = currentPixels[i]; + if (pixel.element === "mirror_portal") { + deletePixel(pixel.x,pixel.y); + i--; + } + } + getMousePos = oldGetMousePos; + } + }, + } + }, +} + +for (var element in elements) { + var info = elements[element]; + if (info.category === "weapons") { + info.nocheer = true + } +} + +multiverseTimelines = []; +multiverseIndex = 0; + +function saveTimeline() { + // save at current index + multiverseTimelines[multiverseIndex] = generateSave(undefined,{keep:["temp","color"]}); +} +function splitTimeline() { + saveTimeline(); + var newSave = generateSave(undefined,{keep:["temp","color"]}); + // add new timeline one after current + multiverseTimelines.splice(multiverseIndex+1,0,newSave); + loadTimeline(multiverseIndex+1); +} +function newTimeline() { + // add new timeline at end + saveTimeline(); + clearAll(); + multiverseIndex = multiverseTimelines.length; + saveTimeline(); + loadTimeline(multiverseIndex); +} +function loadTimeline(i) { + multiverseIndex = i; + loadSave(multiverseTimelines[i]); + document.getElementById("timelineIndex").textContent = i; +} +function nextTimeline() { + saveTimeline(); + if (multiverseIndex === multiverseTimelines.length-1) { + newTimeline(); + return + } + loadTimeline(multiverseIndex+1); +} +function prevTimeline() { + saveTimeline(); + if (multiverseIndex === 0) { + return + } + loadTimeline(multiverseIndex-1); +} +function redoTimeline() { + loadTimeline(multiverseIndex); +} +function deleteTimeline() { + multiverseTimelines.splice(multiverseIndex,1); + if (multiverseIndex === multiverseTimelines.length) { + multiverseIndex--; + } + if (multiverseTimelines.length < 1) { + newTimeline(); + } + loadTimeline(multiverseIndex); +} + +window.addEventListener("load", function() { + absoluteZero = -Infinity; + this.document.getElementById("elementControls").insertAdjacentHTML("afterend",` +
+ +
+ `); + this.document.getElementById("elementControls").insertAdjacentHTML("afterend",` +
+Timeline-0: +
+ `); + this.document.getElementById("thanksTo").insertAdjacentHTML("beforeend",`, and the friends we made along the way`); +}) +window.addEventListener("keydown", function(e) { + if (e.ctrlKey || e.metaKey) { + return + } +}) \ No newline at end of file diff --git a/mods/jaydsfunctions.js b/mods/jaydsfunctions.js index 724ace4b..61f0c00c 100644 --- a/mods/jaydsfunctions.js +++ b/mods/jaydsfunctions.js @@ -24,9 +24,9 @@ elements.selective_exploder = { } }, onSelect: function() { - var answer2 = prompt("Please input what element to explode.",(explode1Var||undefined)); - if (!answer2) { return } - explode1Var = answer2; + var answer1 = prompt("Please input what element to explode.",(explode1Var||undefined)); + if (!answer1) { return } + explode1Var = answer1; } }, convert11Var = 0; @@ -41,12 +41,12 @@ elements.converter_tool = { } }, onSelect: function() { - var answer3 = prompt("Please input what should element be converted.",(convert11Var||undefined)); - if (!answer3) { return } - convert11Var = answer3; - var answer4 = prompt("Please input what element to convert into.",(convert22Var||undefined)); - if (!answer4) { return } - convert22Var = answer4; + var answer1 = prompt("Please input what should element be converted.",(convert11Var||undefined)); + if (!answer1) { return } + convert11Var = answer1; + var answer2 = prompt("Please input what element to convert into.",(convert22Var||undefined)); + if (!answer2) { return } + convert22Var = answer2; } }, elements.fast_bomb = { @@ -82,9 +82,9 @@ elements.exclusive_eraser = { } }, onSelect: function() { - var answer5 = prompt("Please input what element shouldn't be erased.",(exclude1Var||undefined)); - if (!answer5) { return } - exclude1Var = answer5; + var answer1 = prompt("Please input what element shouldn't be erased.",(exclude1Var||undefined)); + if (!answer1) { return } + exclude1Var = answer1; } }, elements.tenth_heater = { @@ -99,7 +99,7 @@ elements.tenth_heater = { }, elements.e_tenth_heater = { category: "special", - color: "#ff0000", + color: "#ff3000", behavior: behaviors.WALL, behaviorOn: [ "XX|HT:0.1|XX", @@ -108,4 +108,63 @@ elements.e_tenth_heater = { ], ignore: "tenth_heater", conduct: 1 +}, +paint1Var = 0; +elements.selective_paint_tool = { + color: ["#ff0000","#ff0000","#ff0000","#00ff00","#00ff00","#00ff00","#0000ff","#0000ff","#0000ff"], + tool: function(pixel) { + if (pixel.element === paint1Var) { + if (!shiftDown) { + pixel.color = pixelColorPick(pixel,currentColor) + } + else { + // convert the hex of currentColor to rgb and set it as a string + var rgb = currentColor.replace("#","").match(/.{1,2}/g); + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(rgb[i],16); + } + pixel.color = "rgb(" + rgb.join(",") + ")" + } + delete pixel.origColor; + } + }, + onSelect: function() { + var answer1 = prompt("Please input what element should be painted.",(paint1Var||undefined)); + if (!answer1) { return } + paint1Var = answer1; + }, + customColor: true, + category: "tools", + canPlace: false, + desc: "Select certain pixels to change color." +}, +paint2Var = 0; +elements.exclusive_paint_tool = { + color: ["#ff0000","#00ff00","#0000ff","#0000ff","#00ff00","#ff0000"], + tool: function(pixel) { + if (pixel.element !== paint2Var) { + if (!shiftDown) { + pixel.color = pixelColorPick(pixel,currentColor) + } + else { + // convert the hex of currentColor to rgb and set it as a string + var rgb = currentColor.replace("#","").match(/.{1,2}/g); + for (var i = 0; i < rgb.length; i++) { + rgb[i] = parseInt(rgb[i],16); + } + pixel.color = "rgb(" + rgb.join(",") + ")" + } + delete pixel.origColor; + } + }, + onSelect: function() { + var answer1 = prompt("Please input what element should be painted.",(paint2Var||undefined)); + if (!answer1) { return } + paint2Var = answer1; + }, + customColor: true, + category: "tools", + canPlace: false, + desc: "Excludes pixels you don't want to color." + //hello } \ No newline at end of file diff --git a/mods/nirmod.js b/mods/nirmod.js index bcad6ec8..013971eb 100644 --- a/mods/nirmod.js +++ b/mods/nirmod.js @@ -74,6 +74,14 @@ class Type { this.temp = undefined; this.reactions = undefined; this.viscosity = undefined; + this.conduct = undefined; + this.burn = undefined; + this.burning = undefined; + this.burnTime = undefined; + this.burnInto = undefined; + this.breakInto = undefined; + this.properties = undefined; + this.maxSize = undefined; } setColor(color) { @@ -87,38 +95,80 @@ class Type { } } -function createPowders() { +function createNirmics() { const Ni = new Type("nirme"); - Ni.setColor("22b14c"); + Ni.setColor(["#5fcf80", "#22b14c", "#157330"]); Ni.behavior = bb.POWDER; Ni.category = cat.POWDERS; Ni.state = state.SOLID; Ni.density = 1752; + Ni.tempHigh = 365; + Ni.stateHigh = "nirliquid"; Ni.reactions = { "water": { elem1: "dull_nirme", elem2: null }, "salt_water": { elem1: "dull_nirme", elem2: null }, + "sugar_water": { elem1: "dull_nirme", elem2: null }, + "seltzer": { elem1: "dull_nirme", elem2: null }, + "dirty_water": { elem1: "dull_nirme", elem2: null }, + "pool_water": { elem1: "dull_nirme", elem2: null }, + "slush": { elem1: "dull_nirme", elem2: null }, + "diamond": { elem2: "emerald", chance: 0.002 }, + "sulfur": { elem1: "pop", elem2: null }, } Ni.Add(); const DNi = new Type("dull_nirme"); - DNi.setColor("5c916c"); + DNi.setColor(["#518a62", "#487355"]); DNi.behavior = bb.STURDYPOWDER; DNi.category = cat.STATES; DNi.state = state.SOLID; DNi.density = 1752; + DNi.tempHigh = 365; + DNi.stateHigh = "nirliquid"; DNi.hidden = true; DNi.Add(); - const Em = new Type("emerald"); - Em.setColor(["#00f49f", "#2fe094", "#b3ffd6", "#5fd9c5"]); - Em.behavior = bb.POWDER; - Em.category = cat.POWDERS; - Em.state = state.SOLID; - Em.density = 2750; - Em.Add(); + const Nl = new Type("nirliquid"); + Nl.setColor(["#68cc86", "#60b378", "#579c6b"]); + Nl.behavior = bb.LIQUID; + Nl.category = cat.LIQUIDS; + Nl.state = state.LIQUID; + Nl.density = 1711; + Nl.tempLow = -17; + Nl.stateLow = "nirme"; + Nl.Add(); + + const Nr = new Type("nirmoll"); + Nr.setColor("22b14c"); + Nr.behavior = [ + "M2%2 |XX|M2%2 ", + "M2%10|XX|M2%10", + "M1%25|M1|M1%25", + ] + Nr.category = cat.LIFE; + Nr.state = state.SOLID; + Nr.density = 40; + Nr.tempHigh = 50; + Nr.stateHigh = "nirme"; + Nr.tempHigh = 0; + Nr.stateHigh = "nirme"; + Nr.breakInto = ["nirme", "nirme", "blood"]; + Nr.reactions = { + "water": { elem1: "nirme" }, + "salt_water": { elem1: "nirme" }, + "sugar_water": { elem1: "nirme" }, + "seltzer": { elem1: "nirme" }, + "dirty_water": { elem1: "nirme" }, + "pool_water": { elem1: "nirme" }, + "slush": { elem1: "nirme" }, + "acid": { elem1: "nirme" }, + "poison": { elem1: "nirme" }, + "egg": { elem2: "nirmoll", chance: 0.001 }, + } + Nr.Add(); } -function createMetals() { +function createMinerals() { const Tg = new Type("thingite"); Tg.setColor("4f5263"); Tg.behavior = bb.WALL; @@ -127,6 +177,7 @@ function createMetals() { Tg.density = 9408; Tg.tempHigh = 700; Tg.stateHigh = "molten_thingite"; + Tg.conduct = 0.41; Tg.Add(); const MTg = new Type("molten_thingite"); @@ -149,6 +200,7 @@ function createMetals() { Or.density = 12403; Or.tempHigh = 1600; Or.stateHigh = "molten_orangium"; + Or.conduct = 0.26; Or.Add(); const MOr = new Type("molten_orangium"); @@ -162,7 +214,59 @@ function createMetals() { MOr.stateLow = "orangium"; MOr.hidden = true; MOr.Add(); + + const Em = new Type("emerald"); + Em.setColor(["#30e389", "#3ac98c", "#b3ffd6", "#5fd9c5"]); + Em.behavior = bb.POWDER; + Em.category = cat.POWDERS; + Em.state = state.SOLID; + Em.density = 2750; + Em.Add(); } -createPowders(); -createMetals(); \ No newline at end of file +function createOther() { + const Fw = new Type("firewall"); + Fw.setColor(["#ff6b21","#ffa600","#ff4000"]); + Fw.behavior = bb.WALL; + Fw.category = cat.SOLIDS; + Fw.state = state.SOLID; + Fw.density = 100; + Fw.temp = 600; + Fw.tempLow = 100; + Fw.stateLow = "wall"; + Fw.tempHigh = 7000; + Fw.stateHigh = "plasma"; + Fw.breakInto = "fire"; + Fw.reactions = { + "water": { elem1: "wall", chance: 0.2 }, + "steam": { elem1: "wall", chance: 0.2 }, + "carbon_dioxide": { elem1: "wall", chance: 0.2 }, + "foam": { elem1: "wall", chance: 0.2 }, + "dirty_water": { elem1: "wall", chance: 0.2 }, + "salt_water": { elem1: "wall", chance: 0.2 }, + "sugar_water": { elem1: "wall", chance: 0.2 }, + "seltzer": { elem1: "wall", chance: 0.2 }, + "pool_water": { elem1: "wall", chance: 0.2 }, + }, + Fw.Add(); + + const Nz = new Type("nirmizer"); + Nz.setColor("425949"); + Nz.behavior = [ + "XX |CH:nirme>nirmoll%10|XX ", + "CH:nirme>nirmoll%10|XX |CH:nirme>nirmoll%10", + "XX |CH:nirme>nirmoll%10|XX ", + ] + Nz.category = cat.MACHINES; + Nz.state = state.SOLID; + Nz.density = 1220; + Nz.tempLow = -273; + Nz.stateLow = "nirme"; + Nz.tempHigh = 3000; + Nz.stateHigh = "nirliquid"; + Nz.Add(); +} + +createNirmics(); +createMinerals(); +createOther(); \ No newline at end of file diff --git a/mods/ocean.js b/mods/ocean.js new file mode 100644 index 00000000..762e6321 --- /dev/null +++ b/mods/ocean.js @@ -0,0 +1,130 @@ +// made by sqec + +elements.coral_stem = { + color: "#4a5e49", + behavior: [ + "CH:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup>coral_stem,coral,coral%2|CH:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup>coral,coral_stem,coral,coral%2|CH:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup>coral_stem,coral,coral%2", + "XX|XX|XX", + "XX|XX|XX", + ], + tick: function(pixel) { + if (!pixel.fColor) { + pixel.fColor = "hsl(" + Math.floor(Math.random()*360) + ",100%,50%)"; + } + var coordsToCheck = [ + [pixel.x-1,pixel.y], + [pixel.x+1,pixel.y], + [pixel.x,pixel.y-1], + [pixel.x,pixel.y+1], + ] + for (var i = 0; i < coordsToCheck.length; i++) { + var coord = coordsToCheck[i]; + if (isEmpty(coord[0],coord[1])) { + createPixel("coral",coord[0],coord[1]); + pixelMap[coord[0]][coord[1]].color = pixel.fColor; + } + } + doDefaults(pixel) + }, + tempHigh: 100, + stateHigh: "dead_coral", + tempLow: -30, + stateLow: "dead_coral", + category: "life", + burn: 40, + burnTime: 50, + burnInto: [,"ember","charcoal"], + hidden: true, + state: "solid", + density: 1500, + hardness: 0.15, + hidden: true, +} +elements.coral = { + color: ["#ff0000","#ff8800","#ffff00","#88ff00","#00ff00","#00ff88","#00ffff","#0088ff","#0000ff","#8800ff","#ff00ff"], + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035} + }, + category:"life", + tempHigh: 100, + stateHigh: "dead_plant", + tempLow: -1.66, + stateLow: "frozen_plant", + burn:65, + burnTime:60, + burnInto: "dead_plant", + breakInto: "dead_plant", + state: "solid", + density: 1050, + hidden: true, + properties:{ + "colored": false + } +} +elements.coral_egg = { + color: "#4a5e49", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|M1 AND SW:water,salt_water,sugar_water,dirty_water,seltzer,pool_water,primordial_soup|XX", + ], + tick: function(pixel) { + if (!isEmpty(pixel.x,pixel.y+1)) { + if (!outOfBounds(pixel.x,pixel.y+1)) { + var dirtPixel = pixelMap[pixel.x][pixel.y+1]; + if (dirtPixel.element === "dirt" || dirtPixel.element === "mud" || dirtPixel.element === "sand" || dirtPixel.element === "wet_sand" || dirtPixel.element === "clay_soil" || dirtPixel.element === "mycelium") { + changePixel(dirtPixel,"root"); + changePixel(pixel,"coral_stem"); + } + } + } + if (pixel.age > 100) { + changePixel(pixel,"coral_stem"); + } + pixel.age++; + doDefaults(pixel) + }, + tempHigh: 100, + stateHigh: "dead_coral", + tempLow: -30, + stateLow: "dead_coral", + category: "life", + burn: 40, + hidden: true, + state: "solid", + density: 1500, + hardness: 0.15, + properties:{ + age:0 + } +} +elements.dead_coral = { + color: "#ababab", + behavior: [ + "XX|XX|XX", + "XX|XX|XX", + "XX|XX|XX", + ], + reactions: { + "vinegar": { elem1:"dead_plant", elem2:null, chance:0.035 }, + "baking_soda": { elem1:"dead_plant", elem2:null, chance:0.01 }, + "bleach": { elem1:"dead_plant", elem2:null, chance:0.05 }, + "alcohol": { elem1:"dead_plant", elem2:null, chance:0.035} + }, + stateHigh:"quicklime", + tempHigh:400, + category:"life", + burn:65, + breakInto: "quicklime", + state: "solid", + density: 1050, + hidden: true, +} diff --git a/mods/pullers.js b/mods/pullers.js new file mode 100644 index 00000000..b0b4e7e7 --- /dev/null +++ b/mods/pullers.js @@ -0,0 +1,250 @@ +// made by voidapex11 +// a sandboxels mod that adds pullers +/* +==CHANGELOG== + Version 1.1.1# +@voidapex11 +~initial comit ++pullersDesc ++imovable_inator& movable_inator ++imovable wall, steel & insulation ++L, R, U & D pullers ++void light&dark +~don't comit without permision as you may disrupt other dev's hard work +~update changelog with newer updates first +~Version format is: + rewrites.major updates.paches&minor feechers + put a '#' at end of version format if it has not been pushed to the github +~for change-log +'~' means notes/changes '+' means aditions and '-' is removals +*/ + +behaviors.SELFDELETE = [ + "XX|XX|XX", + "XX|DL|XX", + "XX|XX|XX", +]; + +pullerColour = '#e0adb6' + +elements.pullersDesc = { + color: pullerColour, + name: 'pullers.js', + category: "mods", + behavior: behaviors.SELFDELETE, + tool: function(pixel) {}, + onSelect: function(pixel) { + let info1stMod = `pullers.js is a mod made by voidapex11 that adds pullers to sandboxels` + alert(info1stMod) + return + }, +}; + +// for the inator reference: if you know you know +elements.imovable_inator = { + color: "#525252", + tool: function(pixel) { + pixel.imovable = true + }, + category: "tools", +} + +elements.movable_inator = { + color: "#a8a8a8", + tool: function(pixel) { + pixel.imovable = false + }, + category: 'tools', +} + + + +elements.imovable_wall = { + color: "#808080", + behavior: behaviors.WALL, + category: "solids", + insulate: true, + hardness: 1, + noMix: true, + properties: { + imovable: true + } +} + +elements.imovable_steel = { + color: "#71797e", + behavior: behaviors.WALL, + reactions: { + "water": { elem1:"rust", chance:0.002 }, + "salt_water": { elem1:"rust", chance:0.004 }, + "dirty_water": { elem1:"rust", chance:0.03 }, + "pool_water": { elem1:"rust", chance:0.03 }, + "sugar_water": { elem1:"rust", chance:0.003 }, + "seltzer": { elem1:"rust", chance:0.005 }, + "salt": { elem1:"rust", chance:0.003 }, + "blood": { elem1:"rust", chance:0.002 }, + "infection": { elem1:"rust", chance:0.002 }, + "antibody": { elem1:"rust", chance:0.002 }, + }, + tempHigh: 1455.5, + category: "solids", + density: 7850, + conduct: 0.42, + hardness: 0.8, + properties: { + imovable: true + } +} + +elements.imovable_insulation = { + color: "#b8aea5", + behavior: behaviors.WALL, + category: "solids", + insulate: true, + state: "solid", + noMix: true, + properties: { + imovable: true + } +} + + + +elements.left_puller = { + color: pullerColour, + properties: { + range: 10, + pushStrength: 1, + }, + tick: function(pixel) { + pixel.range ??= 10; + pixel.pushStrength ??= 1; + for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) { + for (i = 1; i <= pixel.range; i++) { + + if (!isEmpty(pixel.x + i, pixel.y, true)) { + if (pixelMap[pixel.x+i][pixel.y]['imovable']) {break} + else { + tryMove(pixelMap[pixel.x + i][pixel.y], pixel.x + i - 1, pixel.y); + } + } + } + }; + + doDefaults(pixel); + }, + category: "machines", + breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"], + tempHigh: 2400, + stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"], + density: 10000, + hardness: 0.85, + conduct: 1, + state: "solid", +} + + + +elements.right_puller = { + color: pullerColour, + properties: { + range: 10, + pushStrength: 1, + }, + tick: function(pixel) { + pixel.range ??= 10; + pixel.pushStrength ??= 1; + for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) { + for (i = 1; i <= pixel.range; i++) { + if (!isEmpty(pixel.x - i, pixel.y, true)) { + if (pixelMap[pixel.x-i][pixel.y]['imovable']) {break} + else { + tryMove(pixelMap[pixel.x - i][pixel.y], pixel.x - i + 1, pixel.y); + } + } + } + }; + + doDefaults(pixel); + }, + category: "machines", + breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"], + tempHigh: 2400, + stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"], + density: 10000, + hardness: 0.85, + conduct: 1, + state: "solid", +} + +elements.down_puller = { + color: pullerColour, + properties: { + range: 10, + pushStrength: 1, + }, + tick: function(pixel) { + pixel.range ??= 10; + pixel.pushStrength ??= 1; + for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) { + for (i = 1; i <= pixel.range; i++) { + + if (!isEmpty(pixel.x, pixel.y - i, true)) { + if (pixelMap[pixel.x][pixel.y - i]['imovable']) {break} + else { + tryMove(pixelMap[pixel.x][pixel.y - i], pixel.x, pixel.y - i + 1); + } + } + } + }; + + doDefaults(pixel); + }, + category: "machines", + breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"], + tempHigh: 2400, + stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"], + density: 10000, + hardness: 0.85, + conduct: 1, + state: "solid", +} + +elements.up_puller = { + color: pullerColour, + properties: { + range: 10, + pushStrength: 1, + }, + tick: function(pixel) { + pixel.range ??= 10; + pixel.pushStrength ??= 1; + for(h = pixel.pushStrength; h >= pixel.pushStrength; h--) { + for (i = 1; i <= pixel.range; i++) { + if (!isEmpty(pixel.x, pixel.y + i, true)) { + + if (pixelMap[pixel.x][pixel.y + i]['imovable']){ + break + } + else { + tryMove(pixelMap[pixel.x][pixel.y + i], pixel.x, pixel.y + i - 1); + } + } + } + }; + + doDefaults(pixel); + }, + category: "machines", + breakInto: ["metal_scrap", "steel", "iron", "glass", "uranium", "tin"], + tempHigh: 2400, + stateHigh: ["molten_aluminum", "molten_steel", "molten_iron", "molten_glass", "molten_uranium", "molten_tin"], + density: 10000, + hardness: 0.85, + conduct: 1, + state: "solid", +} + +if (enabledMods.includes("pushers.js")) { + console.info('compatibility with pushers.js and imovable objects coming in a later update of the pullers.js') +} diff --git a/mods/purple_guys_mod.js b/mods/purple_guys_mod.js index d9550cc1..d782b9ba 100644 --- a/mods/purple_guys_mod.js +++ b/mods/purple_guys_mod.js @@ -5,7 +5,7 @@ elements.super_bomb = { "XX|XX|XX", "M2|M1 AND EX:125|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, @@ -19,7 +19,7 @@ elements.mega_bomb = { "XX|XX|XX", "M2|M1 AND EX:350|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, @@ -33,7 +33,7 @@ elements.ultra_bomb = { "XX|XX|XX", "M2|M1 AND EX:500>plasma2|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, @@ -47,7 +47,7 @@ elements.bomb_of_despair = { "XX|XX|XX", "M2|M1 AND EX:501>plasma3|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, @@ -61,14 +61,42 @@ elements.galaxy_level_bomb = { "XX|XX|XX", "M2|M1 AND EX:600>plasma4|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, cooldown: defaultCooldown } -elements.RDX = { +elements.reverse_galaxy_level_bomb = { + color: ["#dfadff", "#699ddb", "#4f76a6", "#8a6b9d", "#94a7bd", "#a47fbb"], + behavior: [ + "M2|M1 AND EX:600>plasma4|M2", + "XX|XX|XX", + "XX|EX:600>plasma4|XX", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.ultimate_bomb = { + color: "#8d00ff", + behavior: [ + "XX|EX:750>ultimate_plasma|XX", + "XX|XX|XX", + "M2|M1 AND EX:750>ultimate_plasma|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.rdx = { color: "#c92a2a", behavior: behaviors.WALL, behaviorOn: [ @@ -77,7 +105,7 @@ elements.RDX = { "XX|XX|XX", ], conduct: 1, - category: "Purple Guy's Mod", + category: "weapons", burn: 100, burnTime: 1, burnInto: "explosion", @@ -87,7 +115,7 @@ elements.RDX = { density: 1630, excludeRandom: true, alias: "Cyclotrimethylenetrinitramine" -}, +} elements.ice_cream_bomb = { color: "#ffffff", @@ -96,7 +124,7 @@ elements.ice_cream_bomb = { "XX|XX|XX", "M2|M1 AND EX:20>ice_cream|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, @@ -107,52 +135,121 @@ elements.ice_cream_bomb = { elements.dirty_sand = { color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796"], behavior: behaviors.POWDER, - category: "Purple Guy's Mod", + category: "land", state: "solid", - density: 2822 + density: 2822, + reactions: { + "dust": {elem1:"dusty_dirty_sand", elem2:"dusty_dirty_sand"} + } +} + +elements.sandy_dirt = { + color: [ "#f4ba9a", "#fed3ba", "#f2b796", "#a35222", "#a15122", "#7e3f1a"], + behavior: behaviors.POWDER, + category: "land", + state: "solid", + density: 2282, + reactions: { + "dirty_sand": {elem1:"sandy_dirty_sand", elem2:"sandy_dirty_sand"} + }, + hidden: true } elements.wet_dirty_sand = { color: ["#a35210", "#a15110", "#7e3f0a", "#f4ba8a", "#fed2ba", "#f2b784"], behavior: behaviors.POWDER, - category: "Purple Guy's Mod", + category: "land", state: "liquid", density: 2822 } +elements.sandy_dirty_sand = { + color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#f4ba9a", "#fed3ba", "#f2b796"], + behavior: behaviors.POWDER, + category: "land", + state: "solid", + density: 5104, + hidden: true +} + +elements.dusty_dirty_sand = { + color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#6c6c6c", "#8a8a8a", "#989898"], + behavior: behaviors.POWDER, + category: "land", + state: "solid", + density: 4312, + reactions: { + "water": {elem1:"wet_dusty_dirty_sand", elem2:"wet_dusty_dirty_sand"} + } +} + +elements.wet_dusty_dirty_sand = { + color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#6c6c6c", "#8a8a8a", "#989898"], + behavior: behaviors.POWDER, + category: "land", + state: "liquid", + density: 4312, +} elements.rocky_dirty_sand = { color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#939393", "#c4c4c4", "#777777"], behavior: behaviors.POWDER, - category: "Purple Guy's Mod", + category: "land", state: "solid", - density: 4502 + density: 4502, + reactions: { + "dust": {elem1:"dusty_rocky_dirty_sand", elem2:"dusty_rocky_dirty_sand"} + } } elements.wet_rocky_dirty_sand = { color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#939393", "#c4c4c4", "#777777"], behavior: behaviors.POWDER, - category: "Purple Guy's Mod", + category: "land", state: "liquid", density: 4502 } +elements.dusty_rocky_dirty_sand = { + color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#939393", "#c4c4c4", "#777777", "#6c6c6c", "#8a8a8a", "#989898"], + behavior: behaviors.POWDER, + category: "land", + state: "solid", + density: 5992, + reactions: { + "water": {elem1:"wet_dusty_rocky_dirty_sand", elem2:"wet_dusty_rocky_dirty_sand"} + } +} + +elements.wet_dusty_rocky_dirty_sand = { + color: ["#a35222", "#a15122", "#7e3f1a", "#f4ba9a", "#fed3ba", "#f2b796", "#939393", "#c4c4c4", "#777777", "#6c6c6c", "#8a8a8a", "#989898"], + behavior: behaviors.POWDER, + category: "land", + state: "liquid", + density: 5992 +} + elements.reverse_gravity_liquid = { color: "#cdd7e2", behavior: behaviors.AGLIQUID , - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", - density: 50 + density: 50, + reactions: { + "dirty_sand": { elem1:"sandy_dirt", elem2:"sandy_dirt" } } +} + + elements.reverse_soda = { color: ["#5f2706", "#48230d", "#52250a"], - behavior: behaviors.AGLIQUID , behavior: [ + behavior: behaviors.AGLIQUID, behavior: [ "M2|M1|M2", "M2|XX|M2", "XX|CR:foam%3|XX", ], - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: 1030 } @@ -165,7 +262,7 @@ elements.really_really_fizzy_soda = { "M2|XX|M2" ], - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: 1030 } @@ -178,7 +275,7 @@ elements.orange_soda = { "M2|XX|M2" ], - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: 1030 } @@ -199,7 +296,7 @@ elements.gasoline = { "sulfur": { elem1:null, elem2:"greek_fire" }, "molten_sulfur": { elem1:"greek_fire", elem2:"greek_fire" }, }, - category: "Purple Guy's Mod", + category: "liquids", tempHigh: 280, stateHigh: "fire", burn: 70, @@ -210,7 +307,36 @@ elements.gasoline = { density: 720, stain: 0.05, alias: "Oil/Petrolium" -}, +} + +elements.green_gasoline = { + color: ["#226624", "#07580a", "#1d591f"], + behavior: behaviors.LIQUID, + tick: function(pixel) { + if (!pixel.burning && pixel.temp > 90 && Math.random() < 0.001) { + if (pixel.temp < 150) { changePixel(pixel,"propane") } + else if (pixel.temp < 300) { changePixel(pixel,"molten_plastic") } + else { changePixel(pixel,"lamp_oil") } + } + }, + reactions: { + "dirt": { elem1:null, elem2:"mud" }, + "sand": { elem1:null, elem2:"wet_sand" }, + "sulfur": { elem1:null, elem2:"greek_fire" }, + "molten_sulfur": { elem1:"greek_fire", elem2:"greek_fire" }, + }, + category: "liquids", + tempHigh: 280, + stateHigh: "fire", + burn: 70, + burnTime: 300, + burnInto: ["carbon_dioxide","fire"], + viscosity: 250, + state: "liquid", + density: 720, + stain: 0.05, + alias: "Oil/Petrolium" +} elements.dark_soda = { color: "#56589f", @@ -220,7 +346,7 @@ elements.dark_soda = { "M2|XX|M2" ], - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: 1030 } @@ -233,7 +359,7 @@ elements.sb_soda = { "M2|XX|M2" ], - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: 1030 } @@ -242,7 +368,7 @@ elements.sb_soda = { elements.negatively_dense_liquid = { color: "#94ffd1", behavior: behaviors.LIQUID , - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: -2000 } @@ -250,7 +376,7 @@ elements.negatively_dense_liquid = { elements.plasma2 = { color: "#caf7ff", behavior: behaviors.DGAS , - category: "Purple Guy's Mod", + category: "energy", state: "gas", density: 50000, temp:500000 @@ -259,7 +385,7 @@ elements.plasma2 = { elements.plasma3 = { color: "#9dc6e3", behavior: behaviors.DGAS , - category: "Purple Guy's Mod", + category: "energy", state: "gas", density: 50010, temp:200000000 @@ -268,16 +394,25 @@ elements.plasma3 = { elements.plasma4 = { color: "#9de4e3", behavior: behaviors.DGAS , - category: "Purple Guy's Mod", + category: "energy", state: "gas", density: 50050, temp:50000000000 } +elements.ultimate_plasma = { + color: "#0dfee3", + behavior: behaviors.DGAS , + category: "energy", + state: "gas", + density: 700050, + temp: 5000000000000000 +} + elements.negative_fire = { color: ["#a6bfc4", "#6bd2e4", "#b8dee4", "#32cae4"], behavior: behaviors.DGAS , - category: "Purple Guy's Mod", + category: "energy", state: "gas", density: -0.1, temp:-20000 @@ -290,7 +425,7 @@ elements.coldest_bomb = { "XX|XX|XX", "M2|M1 AND EX:55>negative_fire|M2", ], - category: "Purple Guy's Mod", + category: "weapons", state: "solid", density: 1300, excludeRandom: true, @@ -300,7 +435,7 @@ elements.coldest_bomb = { elements.reinforced_wall = { color: "#ffff01", behavior: behaviors.WALL, - category: "Purple Guy's Mod", + category: "solids", state: "solid", density: 1300, hardness:10^81 @@ -309,7 +444,7 @@ elements.reinforced_wall = { elements.unreinforced_wall = { color: "#ffff82", behavior: behaviors.WALL, - category: "Purple Guy's Mod", + category: "solids", state: "solid", density: 1300, hardness:0 @@ -318,7 +453,7 @@ elements.unreinforced_wall = { elements.reinforced_liquid_wall = { color: "#ffff01", behavior: behaviors.LIQUID, - category: "Purple Guy's Mod", + category: "liquids", state: "liquid", density: 1300, hardness:10^81 @@ -327,7 +462,7 @@ elements.reinforced_liquid_wall = { elements.how_did_we_get_here = { color: "#ffffff", behavior: [behaviors.LIQUID, behaviors.AGLIQUID], - category: "Purple Guy's Mod", + category: "special", state: "liquid", density: 1300, hardness:10^83 @@ -336,7 +471,7 @@ elements.how_did_we_get_here = { elements.gullibullium = { color: ["#70bc7a", "#70bb79", "#7cac81"], behavior: behaviors.WALL, - category: "Purple Guy's Mod", + category: "solids", state: "solid", density: 1300, hardness:0.8, @@ -344,13 +479,41 @@ elements.gullibullium = { } -elements.reinforced_gullibullium = { +elements.r_gullibullium = { color: ["#f0bc7a", "#f0bb79", "#fcac81"], behavior: behaviors.WALL, - category: "Purple Guy's Mod", + category: "solids", state: "solid", + density: 2600.00001, + hardness:0.95, + tempHigh: 80000, + stateHigh: "molten_r_gullibullium" +} + +elements.molten_r_gullibullium = { + color: ["#ff721b", "#d0743c", "#dcb03f"], + behavior: behaviors.MOLTEN, + category: "liquids", + state: "liquid", density: 1300, - hardness:0.95 + hardness:0.95, + tempLow: 79999, + temp: 80000, + tempHigh: 145000, + stateHigh: "r_gullibullium_gas", + stateLow: "r_gullibullium" +} + +elements.r_gullibullium_gas = { + color: ["#ff721b", "#d0743c", "#dcb03f"], + behavior: behaviors.GAS, + category: "gases", + state: "gas", + density: 1300, + hardness:0.95, + tempLow: 144999, + temp: 145000, + stateLow: "molten_r_gullibullium" } elements.boba_pearls = { @@ -398,13 +561,23 @@ elements.banana_boba = { hardness:0.25 } +elements.banana_cream_boba = { + color: "#ffffc1", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + elements.satans_boba = { color: "#852d2d", behavior: behaviors.MOLTEN, category: "Purple Guy's Boba", state: "liquid", density: 1300, - hardness:0.25 + hardness:0.25, + temp: 650 } elements.peach_boba = { @@ -650,6 +823,202 @@ elements.pandan_boba = { hardness:0.25 } +elements.pomegranate_boba = { + color: "#ca0000", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.watermelon_boba = { + color: "#f26565", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.grapefruit_boba = { + color: "#f1962f", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.plum_boba = { + color: "#dacfd9", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.jackfruit_boba = { + color: "#daa128", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.soursop_boba = { + color: "#ded3bb", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.cranberry_boba = { + color: "#f81e1e", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.blood_orange_boba = { + color: "#ed2115", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.lemonade_boba = { + color: "#ffe151", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.guanabana_boba = { + color: "#f5f5f5", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.cherry_blossom_boba = { + color: "#f598e8", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.cardamom_boba = { + color: "#dac370", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.saffron_boba = { + color: "#ffe323", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.pistachio_boba = { + color: "#9cff90", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.blue_raspberry_boba = { + color: "#29c9f1", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.cotton_candy_boba = { + color: "#f1cfde", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.bubblegum_boba = { + color: "#ff97bc", + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.peppermint_boba = { + color: ["#ffeff5", "#ff0000"], + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.spearmint_boba = { + color: ["#ffeff5", "#00ff00"], + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + +elements.strawberry_kiwi_boba = { + color: "#ffeff5", + colorPattern: ["sssss", + "sssss", + "ssssk", + "ssssk", + "ssskk", + "ssskk", + "sskkk", + "sskkk", + "skkkk", + "skkkk", + "kkkkk", + "kkkkk"], + colorKey: { + "s": "#e27c7c", + "k": "#09de0f" + }, + behavior: behaviors.LIQUID, + category: "Purple Guy's Boba", + state: "liquid", + density: 1300, + hardness:0.25 +} + elements.wasters_personal_boba = { color: ["#5ee082", "#4eb96c", "#5bda7f", "#79c38e", "#e9eeea"], behavior: behaviors.LIQUID , behavior: [ @@ -721,20 +1090,6 @@ elements.sethies_blue_boba = { hardness:0.25 } -elements.when_you_bomb = { - color: "#ff0000", - behavior: [ - "XX|EX:40>when_you_particles|XX", - "XX|XX|XX", - "M2|M1 AND EX:40>when_you_particles|M2", - ], - category: "Purple Guy's Mod", - state: "solid", - density: 1300, - excludeRandom: true, - cooldown: defaultCooldown -} - elements.nuclear_firework = { color: "#62b06c", tick: function(pixel) { @@ -762,22 +1117,100 @@ elements.nuclear_firework = { density: 2000, conduct: 1, state: "solid", - category: "Purple Guy's Mod" + category: "weapons" }, +elements.when_you_bomb = { + color: "#ff0000", + colorPattern: ["rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrwrrwrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrwwwwwrrr", + "rwrrrrrwrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr"], + colorKey: { + "r": "#ff0000", + "w": "#ffffff" + }, + behavior: [ + "XX|EX:40>when_you_particles|XX", + "XX|XX|XX", + "M2|M1 AND EX:40>when_you_particles|M2", + ], + category: "weapons", + state: "solid", + density: 1300, + excludeRandom: true, + cooldown: defaultCooldown +} + elements.whenyouium = { - color: ["#ff0000", "#dc0000", "#b60000", "#ec2c2c"], + color: "#ff0000", + colorPattern: ["rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrwrrwrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrwwwwwrrr", + "rwrrrrrwrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr"], + colorKey: { + "r": "#ff0000", + "w": "#ffffff" + }, behavior: behaviors.WALL, - category: "Purple Guy's Mod", + category: "solids", state: "solid", density: 2000, hardness:1.01 + } elements.when_you_particles = { - color: ["#ff0000", "#dc0000", "#b60000", "#ec2c2c"], + color: "#ff0000", + colorPattern: ["rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrwrrwrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrwwwwwrrr", + "rwrrrrrwrr", + "rrrrrrrrrr", + "rrrrrrrrrr", + "rrrrrrrrrr"], + colorKey: { + "r": "#ff0000", + "w": "#ffffff" + }, behavior: behaviors.DGAS, - category: "Purple Guy's Mod", + category: "energy", state: "gas", density: 2000, hardness:0.98, @@ -785,6 +1218,107 @@ elements.when_you_particles = { temp: 500000000000000 } +elements.when_i_bomb = { + color: "#0000ff", + colorPattern: [ + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBbBBbBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBbBBBbBBB", + "BBbbbbbBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB"], + colorKey: { + "B": "#0000ff", + "b": "#000000" + }, + behavior: [ + "XX|EX:40>when_i_particles|XX", + "XX|XX|XX", + "M2|M1 AND EX:40>when_i_particles|M2", + ], + category: "weapons", + state: "solid", + density: -1300, + excludeRandom: true, + cooldown: defaultCooldown +} + +elements.when_i_particles = { + color: "#0000ff", + colorPattern: [ + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBbBBbBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBbBBBbBBB", + "BBbbbbbBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB"], + colorKey: { + "B": "#0000ff", + "b": "#000000" + }, + behavior: behaviors.DGAS, + category: "energy", + state: "gas", + density: 2000, + hardness:0.98, + hidden: true, + temp: -500000000000000 +} + +elements.when_iium = { + color: "#0000ff", + colorPattern: [ + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBbBBbBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBbBBBbBBB", + "BBbbbbbBBB", + "BBBBBBBBBB", + "BBBBBBBBBB", + "BBBBBBBBBB"], + colorKey: { + "B": "#0000ff", + "b": "#000000" + }, + behavior: behaviors.WALL, + category: "solids", + state: "solid", + density: -2000, + hardness:1.01 + +} + elements.wekk = { color: ["#927659","#81644B","#685843","#685135","#644F3A"], behavior: behaviors.SUPPORTPOWDER, reactions: { @@ -800,7 +1334,7 @@ elements.wekk = { color: ["#927659","#81644B","#685843","#685135","#644F3A"], }, tempHigh: 540, stateHigh: "magma", - category: "Purple Guy's Mod", + category: "land", state: "solid", density: 1302.5, hardness: 0.2, @@ -810,8 +1344,430 @@ elements.wekk = { color: ["#927659","#81644B","#685843","#685135","#644F3A"], elements.water_but_it_stays_liquid = { color: "#2167ff", behavior: behaviors.LIQUID, - category: "Purple Guy's Mod", + category: "liquids", heatCapacity: 1234213423423423, + reactions: { + "dirt": { + elem1: null, + elem2: "mud", + }, + "sand": { elem1: null, elem2: "wet_sand" }, + "clay_soil": { elem1: null, elem2: "clay" }, + "salt": { elem1: "salt_water", elem2: null, temp1:-20 }, + "sugar": { elem1: "sugar_water", elem2: null }, + "honey": { elem1: "sugar_water" }, + "caramel": { elem1: "sugar_water" }, + "molasses": { elem1: "sugar_water" }, + "dust": { elem1: "dirty_water", elem2: null }, + "ash": { elem1: "dirty_water", elem2: null }, + "cyanide": { elem1: "dirty_water", elem2: null }, + "cyanide_gas": { elem1: "dirty_water", elem2: null }, + "carbon_dioxide": { elem1: "seltzer", elem2: null, oneway:true }, + "sulfur": { elem1: "dirty_water", elem2: null }, + "rat": { elem1: "dirty_water", chance:0.005 }, + "plague": { elem1: "dirty_water", elem2: null }, + "rust": { elem1: "dirty_water", chance:0.005 }, + "lead": { elem1: "dirty_water", chance:0.005 }, + "solder": { elem1: "dirty_water", chance:0.005 }, + "fallout": { elem1: "dirty_water", chance:0.25 }, + "radiation": { elem1: "dirty_water", chance:0.25 }, + "uranium": { elem1: "dirty_water", chance:0.25 }, + "rotten_meat": { elem1: "dirty_water", chance:0.25 }, + "rotten_cheese": { elem1: "dirty_water", chance:0.25 }, + "cancer": { elem1: "dirty_water", chance:0.25 }, + "oil": { elem1: "dirty_water", chance:0.005 }, + "dioxin": { elem1: "dirty_water", chance:0.1 }, + "quicklime": { elem1: "slaked_lime", elem2: "slaked_lime", temp2:100, temp1:100, chance:0.05 }, + "rock": { elem2: "wet_sand", chance: 0.00035 }, + "limestone": { elem2: "wet_sand", chance: 0.00035 }, + "tuff": { elem2: "wet_sand", color2:"#7a6b5c", chance: 0.00035 }, + "ruins": { elem2: "rock", chance: 0.00035 }, + "mudstone": { elem2: "mud", chance: 0.00035 }, + "methane": { elem1:"primordial_soup", elem2:"primordial_soup", tempMin:60, charged:true }, + "ammonia": { elem1:"primordial_soup", elem2:"primordial_soup", tempMin:60, charged:true }, + "fly": { elem2:"dead_bug", chance:0.1, oneway:true }, + "firefly": { elem2:"dead_bug", chance:0.1, oneway:true }, + "bee": { elem2:"dead_bug", chance:0.05, oneway:true }, + "stink_bug": { elem2:"dead_bug", chance:0.1, oneway:true }, + "cured_meat": { elem1:"salt_water", elem2:"meat" }, + "aluminum": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0025 }, + "zinc": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.015 }, + "steel": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0125 }, + "iron": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0125 }, + "tin": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.01 }, + "brass": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.001 }, + "bronze": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.001 }, + "copper": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 }, + "silver": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 }, + "gold": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 }, + }, + state: "liquid", + density: 997, + conduct: 0.02, + stain: -0.5, + extinguish: true +} + +elements.blue_uranium = { + color: ["#4ba5ff","#71a8de","#b4c7da","#3e6892","#6da4da","#9dc1e6"], + behavior: [ + "XX|CR:radiation%20|XX", + "CR:radiation%1|CH:lead%0.001|CR:radiation%20", + "M2|M1|M2", + ], + reactions: { + "neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 } + }, + tempHigh: 1132.2, + category: "powders", + state: "solid", + density: 19100, + hardness: 0.6, + conduct: 0.235, + excludeRandom: true +} + +elements.paprika = { + color: ["#df3b3b", "#ef0c0c", "#cf2323"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + density: 1070, + reactions: { + "blue_uranium": {elem1:"blue_paprika", elem2:"blue_paprika"} + } +} + + + +elements.blue_paprika = { + color: ["#4ba5ff","#71a8de","#b4c7da",], + behavior: [ + "XX|CR:radiation%20|XX", + "CR:radiation%1|CH:lead%0.001|CR:radiation%20", + "M2|M1|M2", + ], + category: "Food..?", + state: "solid", + density: 1070 +} + +elements.pepper = { + color: ["#18b82d", "#f44343"], + behavior: behaviors.SUPPORTPOWDER, + category: "food", + state: "solid", + density: 735, + tempHigh: 93, + breakInto: "crushed_pepper" +} + +elements.crushed_pepper = { + color: ["#91dc9b", "#d77c7c"], + behavior: behaviors.POWDER, + category: "food", + state: "solid", + density: 735, + reactions: { + "salt": {elem1:"paprika", elem2:"paprika"} + } +} + +elements.dusty_ash = { + color: ["#dcdcdc", "#969696", "#acacac", "#9e9e9e"], + behavior: behaviors.POWDER, + category: "powders", + state: "solid", + density: 1070 +} + +elements.cool_flash = { + color: "#fffdcf", + tick: function(pixel) { + if (Math.random() < 0.75 && pixelTicks - pixel.start > 1) { + deletePixel(pixel.x, pixel.y) + } + doHeat(pixel); + }, + reactions: { + "blood": { elem1:"pointer" }, + "molten_stained_glass": { elem1:"rainbow" }, + "electric": { elem1:"pointer" }, + }, + category: "energy", + temp: -3500, + state: "gas", + density: 1, + hidden: true, + noMix: true +} + +elements.sun_flash = { + color: "#ffffbd", + tick: function(pixel) { + if (Math.random() < 0.75 && pixelTicks - pixel.start > 1) { + deletePixel(pixel.x, pixel.y) + } + doHeat(pixel); + }, + reactions: { + "blood": { elem1:"pointer" }, + "molten_stained_glass": { elem1:"rainbow" }, + "electric": { elem1:"pointer" }, + }, + category: "energy", + temp: 5504, + state: "gas", + density: 1, + hidden: true, + noMix: true +} + +elements.radiant_flash = { + color: "#fffdcf", + tick: function(pixel) { + if (Math.random() < 0.75 && pixelTicks - pixel.start > 1) { + deletePixel(pixel.x, pixel.y) + } + doHeat(pixel); + }, + reactions: { + "blood": { elem1:"pointer" }, + "molten_stained_glass": { elem1:"rainbow" }, + "electric": { elem1:"pointer" }, + }, + behavior: [ + "XX|CR:radiation%20|XX", + "CR:radiation%1|CH:lead%0.001|CR:radiation%20", + "M2|M1|M2", + ], + category: "energy", + temp: -3500, + state: "gas", + density: 1, + hidden: true, + noMix: true +} + +elements.cool_ray = { + color: ["#00ffff","#00fffe"], + 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("cool_flash", x, y); + pixelMap[x][y].color = "#00ffff"; + pixelMap[x][y].temp = -3500; + } + 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: -3500, + category: "energy", + state: "gas", + density: 1, + excludeRandom: true, + noMix: true +} + +elements.radiant_ray = { + color: "#00FF00", + 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("radiant_flash", x, y); + pixelMap[x][y].color = "#00FF00"; + pixelMap[x][y].temp = 100000000; + } + 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: 100000000, + category: "energy", + state: "gas", + density: 1, + excludeRandom: true, + noMix: true +} + +elements.sun_ray = { + color: "#ffffbd", + 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("sun_flash", x, y); + pixelMap[x][y].color = "#ffffbd"; + pixelMap[x][y].temp = 5504; + } + 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: 5504, + category: "energy", + state: "gas", + density: 1, + excludeRandom: true, + noMix: true +} + +elements.mega_incinerate = { + color: ["#e600ff","#d984d8","#ff00e1"], + tool: function(pixel) { + pixel.temp += 999999999999999; + if (!pixel.burning && elements[pixel.element].burn) { + pixel.burning = true; + pixel.burnStart = pixelTicks; + } + pixelTempCheck(pixel); + }, + category: "energy", + excludeRandom: true +} + +elements.reinforced_concrete = { + color: ["#e4e4e4", "#d7d7d7"], + behavior: behaviors.SUPPORT, + tempHigh: 3000, + stateHigh: "magma", + category: "powders", + state: "solid", + density: 4800, + hardness: 0.75, + breakInto: "dust", + darkText: true +} + +elements.green_smoke = { + color: "#64d14f", + behavior: behaviors.GAS, + tempHigh: 3000, + stateHigh: "green_fire", + category: "gases", + state: "gas", + density: 4800, + hardness: 0.75, + breakInto: "dust", + darkText: true +} + +elements.green_fire = { + color: ["#3fb927","#64d14f","#4fe831"], + tick: function(pixel){ + behaviors.UL_UR_OPTIMIZED(pixel); + if (!pixel.del && settings.burn===0 && (pixelTicks-pixel.start > 70) && Math.random() < 0.1 ) { changePixel(pixel,"green_smoke") } + }, + reactions: { + "water": { elem1: "green_smoke" }, + "steam": { elem1: "green_smoke" }, + "carbon_dioxide": { elem1: "green_smoke" }, + "foam": { elem1: "smoke" }, + "dirty_water": { elem1: "green_smoke" }, + "salt_water": { elem1: "green_smoke" }, + "sugar_water": { elem1: "green_smoke" }, + "seltzer": { elem1: "green_smoke" }, + "pool_water": { elem1: "green_smoke" }, + "oxygen": { elem2: null, chance:0.1 }, + }, + temp:600, + tempLow:100, + stateLow: "green_smoke", + tempHigh: 7000, + stateHigh: "plasma", + category: "energy", + burning: true, + burnTime: 25, + burnInto: "smoke", + state: "gas", + density: 0.1, + ignoreAir: true, + noMix: true +} + +elements.obsidian = { + color: "#240d37", + colorPattern: [ + "DDDDddddddddDDDD", + "DDDDdddoodddDDDD", + "DDDDddooooddDDDD", + "DDDDdddoodddDDDD", + "DDDDddddddddDDDD"], + colorKey: { + "o": "#49325d", + "d": "#2c1e38", + "D": "#240d37" + }, + behavior: behaviors.WALL, + category: "solids", + state: "weapons", + density: 2000, + hardness: 0.25, + tempHigh: 1710, + stateHigh: "magma" + +} + +elements.green_ketchup = { + color: "#18c61e", + behavior: behaviors.LIQUID, + reactions: { + "rust": { elem2:"iron", chance:0.01 }, + "oxidized_copper": { elem2:"copper", chance:0.01 }, + "baking_soda": { "elem1":"carbon_dioxide", elem2:"foam", chance:0.01 }, + }, + viscosity: 50000, + tempHigh: 260, + stateHigh: ["carbon_dioxide","methane","steam","salt","sugar"], + category:"liquids", + state: "liquid", + density: 1235, + stain: 0.05, + isFood: true +} + +elements.muddy_water = { + color: "#dbc383", + behavior: behaviors.LIQUID, + tempHigh: 100, + stateHigh: "steam", + tempLow: 0, + stateLow: "ice", + category: "liquids", + heatCapacity: 4.184, reactions: { "dirt": { elem1: null, @@ -875,31 +1831,1029 @@ elements.water_but_it_stays_liquid = { extinguish: true } -elements.blue_uranium = { - color: ["#4ba5ff","#71a8de","#b4c7da","#3e6892","#6da4da","#9dc1e6"], - behavior: [ - "XX|CR:radiation%20|XX", - "CR:radiation%1|CH:lead%0.001|CR:radiation%20", - "M2|M1|M2", - ], +elements.deuterium = { + color: "#557bcf", + behavior: behaviors.GAS, reactions: { - "neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 } + "oxygen": { elem1:null, elem2:"heavy_water", tempMin:1 }, + "hydrogen": { elem1:"neutron", elem2:"helium", tempMin:10000, temp1:20000, temp2:20000 }, + "nitrogen": { elem1:null, elem2:"oxygen", tempMin:10000 }, + "sulfur": { elem1:null, elem2:"chlorine", tempMin:10000 }, + "neon": { elem1:null, elem2:"sodium", tempMin:10000 }, + "fire": { elem1:"explosion", chance:0.005 }, }, - tempHigh: 1132.2, - category: "Purple Guy's Mod", - state: "solid", - density: 19100, - hardness: 0.6, - conduct: 0.235, - excludeRandom: true + category: "gases", + burn: 100, + burnTime: 2, + burnInto: ["fire","fire","fire","fire","fire","fire","fire","fire","fire","fire","fire","fire","steam"], + tempLow: -253, + stateLow: "liquid_hydrogen", + state: "gas", + density: 0.08375, + conduct: 0.02, + colorOn: "#E315D3" } +elements.heavy_water = { + color: "#1237ff", + behavior: behaviors.LIQUID, + tempHigh: 100, + stateHigh: "steam", + tempLow: 0, + stateLow: "ice", + category: "liquids", + heatCapacity: 4.184, + reactions: { + "dirt": { + elem1: null, + elem2: "mud", + }, + "sand": { elem1: null, elem2: "wet_sand" }, + "clay_soil": { elem1: null, elem2: "clay" }, + "salt": { elem1: "salt_water", elem2: null, temp1:-20 }, + "sugar": { elem1: "sugar_water", elem2: null }, + "honey": { elem1: "sugar_water" }, + "caramel": { elem1: "sugar_water" }, + "molasses": { elem1: "sugar_water" }, + "dust": { elem1: "dirty_water", elem2: null }, + "ash": { elem1: "dirty_water", elem2: null }, + "cyanide": { elem1: "dirty_water", elem2: null }, + "cyanide_gas": { elem1: "dirty_water", elem2: null }, + "carbon_dioxide": { elem1: "seltzer", elem2: null, oneway:true }, + "sulfur": { elem1: "dirty_water", elem2: null }, + "rat": { elem1: "dirty_water", chance:0.005 }, + "plague": { elem1: "dirty_water", elem2: null }, + "rust": { elem1: "dirty_water", chance:0.005 }, + "lead": { elem1: "dirty_water", chance:0.005 }, + "solder": { elem1: "dirty_water", chance:0.005 }, + "fallout": { elem1: "dirty_water", chance:0.25 }, + "radiation": { elem1: "dirty_water", chance:0.25 }, + "uranium": { elem1: "dirty_water", chance:0.25 }, + "rotten_meat": { elem1: "dirty_water", chance:0.25 }, + "rotten_cheese": { elem1: "dirty_water", chance:0.25 }, + "cancer": { elem1: "dirty_water", chance:0.25 }, + "oil": { elem1: "dirty_water", chance:0.005 }, + "dioxin": { elem1: "dirty_water", chance:0.1 }, + "quicklime": { elem1: "slaked_lime", elem2: "slaked_lime", temp2:100, temp1:100, chance:0.05 }, + "rock": { elem2: "wet_sand", chance: 0.00035 }, + "limestone": { elem2: "wet_sand", chance: 0.00035 }, + "tuff": { elem2: "wet_sand", color2:"#7a6b5c", chance: 0.00035 }, + "ruins": { elem2: "rock", chance: 0.00035 }, + "mudstone": { elem2: "mud", chance: 0.00035 }, + "methane": { elem1:"primordial_soup", elem2:"primordial_soup", tempMin:60, charged:true }, + "ammonia": { elem1:"primordial_soup", elem2:"primordial_soup", tempMin:60, charged:true }, + "fly": { elem2:"dead_bug", chance:0.1, oneway:true }, + "firefly": { elem2:"dead_bug", chance:0.1, oneway:true }, + "bee": { elem2:"dead_bug", chance:0.05, oneway:true }, + "stink_bug": { elem2:"dead_bug", chance:0.1, oneway:true }, + "cured_meat": { elem1:"salt_water", elem2:"meat" }, + // electrolysis: + "aluminum": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0025 }, + "zinc": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.015 }, + "steel": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0125 }, + "iron": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0125 }, + "tin": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.01 }, + "brass": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.001 }, + "bronze": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.001 }, + "copper": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 }, + "silver": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 }, + "gold": { elem1:["hydrogen","hydrogen","oxygen"], charged:true, chance:0.0075 }, + }, + state: "liquid", + density: 1105.2, + conduct: 0.02, + stain: -0.5, + extinguish: true +} +elements.led_y = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: "#abab00", + colorOn: "#ffff00", + category: "machines", + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + conduct: 1, + breakInto: "glass_shard" +} +elements.led_p = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: "#6b00a1", + colorOn: "#a900ff", + category: "machines", + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + conduct: 1, + breakInto: "glass_shard" +} + +elements.led_o = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: "#a16800", + colorOn: "#ffa500", + category: "machines", + tempHigh: 1500, + stateHigh: ["molten_glass","molten_glass","molten_glass","molten_gallium"], + conduct: 1, + breakInto: "glass_shard" +} + +elements.red_lightning = { + color: "#ff0000", + tick: function(pixel) { + if (!pixel.stage) { // create bolt + var y = pixel.y; + var xoffset = 0; + var last = [pixel.x,pixel.y] + for (var i = 0; i < 100; i++) { + y++; + // randomly go back and forth + if (Math.random() > 0.5) { xoffset++; } + else { xoffset--; } + var x = pixel.x + xoffset; + if (isEmpty(x, y)) { + createPixel("red_lightning",x,y); + pixelMap[x][y].stage = 1; + pixelMap[x][y].color = pixel.color; + last = [x,y]; + } + else if (outOfBounds(x,y) || !elements[pixelMap[x][y].element].isGas) { + //strike + if (Math.random() < 0.01) { // BALL LIGHTNING + pixelMap[last[0]][last[1]].stage = 9; + } + if (!outOfBounds(x,y)) { pixelMap[x][y].temp = 50000 } + explodeAt(x, y, 13, ["plasma","plasma","plasma","red_electric"]); + break; + } + } + doDefaults(pixel); + deletePixel(pixel.x, pixel.y); + } + else if (pixel.stage === 9) { // BALL LIGHTNING + // move either left or right randomly + if (Math.random() > 0.5) { tryMove(pixel, pixel.x + 1, pixel.y) } + else { tryMove(pixel, pixel.x - 1, pixel.y) } + // create electric in a 3x3 area around pixel + for (var x = pixel.x - 1; x <= pixel.x + 1; x++) { + for (var y = pixel.y - 1; y <= pixel.y + 1; y++) { + if (isEmpty(x, y)) { + createPixel("red_electric",x,y); + pixelMap[x][y].color = pixel.color; + } + } + } + doDefaults(pixel); + if (pixelTicks - pixel.start >= 250) { deletePixel(pixel.x, pixel.y); } + } + else if (pixelTicks - pixel.start >= 4) { + doDefaults(pixel); + //deletePixel(pixel.x, pixel.y); + changePixel(pixel, "red_electric") + } + else { doDefaults(pixel); } + }, + temp: 50000, + tempLow: -273, + stateLow: ["liquid_light",null], + category: "energy", + state: "gas", + maxSize: 1, + cooldown: defaultCooldown, + density: 1000, + hardness: 1, + excludeRandom: true, + noMix: true +} + +elements.red_electric = { + color: "#ff0000", + behavior: [ + "CL%5|CL%5 AND SH|CL%5", + "CL%5 AND SH|SH%5 AND DL%50|CL%5 AND SH", + "M1%15 AND CL%6|M1%50 AND CL%13 AND SH|M1%15 AND CL%6", + ], + charge: 5, + category: "energy", + state: "gas", + density: 2.1, + insulate: true, + ignoreAir: true +} + +elements.silvanium = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: "#625950", + colorOn: "#e62525", + category: "solids", + tempHigh: 92224, + conduct: 0.35, + hardness: 0.48 +} + +elements.silvanium_sulfate = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: "#465f42", + colorOn: "#25a4e6", + category: "solids", + tempHigh: 98224, + conduct: 0.45, + hardness: 0.56 +} + +elements.alienite = { + behavior: behaviors.WALL, + reactions: { + "light": {"charge1":1}, + "liquid_light": {"charge1":1}, + }, + color: ["#aa00d6", "#865d8f", "#ba4ad6", "#7e3290"], + colorOn: "#79d64b", + category: "solids", + tempHigh: 104532, + conduct: 0.25, + hardness: 0.84 +} + +elements.green_filler = { + color: "#137a63", + behavior: behaviors.FILL, + category:"special", + excludeRandom: true, + reactions: { + "neutron": { elem1:"lattice" }, + "proton": { elem1:"vertical" }, + "electric": { elem1:"horizontal" }, + "positron": { elem1:"vertical" }, + "plasma": { elem1:"armageddon", tempMin:500, charged:true }, + "void": { elem1:"green_filler" }, + } +} + +elements.alien = { + // color: ["#f5eac6","#d4c594","#a89160","#7a5733","#523018","#361e0e"], + color: ["#41ab1d","#4cbf25","#40752e","#871dab","#ac3ad2","#71278a"], + category: "life", + properties: { + dead: false, + dir: 1, + panic: 0 + }, + tick: function(pixel) { + if (isEmpty(pixel.x, pixel.y+1)) { + createPixel("alien_body", pixel.x, pixel.y+1); + pixel.element = "alien_head"; + } + else if (isEmpty(pixel.x, pixel.y-1)) { + createPixel("alien_head", pixel.x, pixel.y-1); + pixelMap[pixel.x][pixel.y-1].color = pixel.color; + pixel.element = "alien_body"; + pixel.color = pixelColorPick(pixel) + } + else { + deletePixel(pixel.x, pixel.y); + } + }, + related: ["alien_body","alien_head"], + cooldown: defaultCooldown, + forceSaveColor: true, +} + +elements.alien_body = { + color: ["#efefef","#f0f0f0","#e8e8e8", "#cbcbcb"], + category: "life", + hidden: true, + density: 1500, + state: "solid", + conduct: .05, + temp: 37, + tempHigh: 850, + stateHigh: "cooked_meat", + tempLow: -560, + stateLow: "frozen_meat", + burn: 10, + burnTime: 450, + burnInto: "cooked_meat", + breakInto: ["blood","meat","bone"], + forceSaveColor: true, + reactions: { + "cancer": { elem1:"cancer", chance:0.005 }, + "radiation": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.4 }, + "neutron": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.01 }, + "fallout": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.01 }, + "plague": { elem1:"plague", chance:0.05 }, + "egg": { elem2:"yolk", chance:0.5, oneway:true }, + "grape": { elem2:"juice", chance:0.5, color2:"#291824", oneway:true }, + "ant": { elem2:"dead_bug", chance:0.05, oneway:true }, + "fly": { elem2:"dead_bug", oneway:true }, + "firefly": { elem2:"dead_bug", oneway:true }, + "bee": { elem2:"dead_bug", oneway:true }, + "flea": { elem2:"dead_bug", oneway:true }, + "termite": { elem2:"dead_bug", oneway:true }, + "worm": { elem2:"slime", chance:0.05, oneway:true }, + "stink_bug": { elem2:"stench", oneway:true }, + "grass_seed": { elem2:null, chance:0.05 }, + "gold_coin": { elem2:null, chance:0.05 }, + }, + properties: { + dead: false, + dir: 1, + panic: 0 + }, + tick: function(pixel) { + if (tryMove(pixel, pixel.x, pixel.y+1)) { // Fall + if (!isEmpty(pixel.x, pixel.y-2, true)) { // Drag head down + var headpixel = pixelMap[pixel.x][pixel.y-2]; + if (headpixel.element == "alien_head") { + if (isEmpty(pixel.x, pixel.y-1)) { + movePixel(pixelMap[pixel.x][pixel.y-2], pixel.x, pixel.y-1); + } + else { + swapPixels(pixelMap[pixel.x][pixel.y-2], pixelMap[pixel.x][pixel.y-1]); + } + } + } + } + doHeat(pixel); + doBurning(pixel); + doElectricity(pixel); + if (pixel.dead) { + // Turn into rotten_meat if pixelTicks-dead > 500 + if (pixelTicks-pixel.dead > 200 && Math.random() < 0.1) { + changePixel(pixel,"rotten_meat"); + } + return + } + + // Find the head + if (!isEmpty(pixel.x, pixel.y-1, true) && pixelMap[pixel.x][pixel.y-1].element == "alien_head") { + var head = pixelMap[pixel.x][pixel.y-1]; + if (head.dead) { // If head is dead, kill body + pixel.dead = head.dead; + } + } + else { var head = null } + if (pixel.burning) { + pixel.panic += 0.1; + if (head && pixelTicks-pixel.burnStart > 240) { + pixel.color = head.color; + } + } + else if (pixel.panic > 0) { + pixel.panic -= 0.1; + } + + if (isEmpty(pixel.x, pixel.y-1)) { + // create blood if decapitated 10% chance + if (Math.random() < 0.1 && !pixel.charge) { + createPixel("blood", pixel.x, pixel.y-1); + // set dead to true 15% chance + if (Math.random() < 0.15) { + pixel.dead = pixelTicks; + } + } + } + else if (head == null) { return } + else if (Math.random() < 0.1*(isEmpty(pixel.x, pixel.y+1) ? 1 : pixel.panic+1)) { // Move 10% chance + var movesToTry = [ + [1*pixel.dir,0], + [1*pixel.dir,-1], + ]; + // While movesToTry is not empty, tryMove(pixel, x, y) with a random move, then remove it. if tryMove returns true, break. + while (movesToTry.length > 0) { + var move = movesToTry.splice(Math.floor(Math.random() * movesToTry.length), 1)[0]; + if (isEmpty(pixel.x+move[0], pixel.y+move[1]-1)) { + var origx = pixel.x+move[0]; + var origy = pixel.y+move[1]; + if (tryMove(pixel, pixel.x+move[0], pixel.y+move[1]) && pixel.x===origx && pixel.y===origy) { + movePixel(head, head.x+move[0], head.y+move[1]); + break; + } + } + } + // 15% chance to change direction + if (Math.random() < 0.15) { + pixel.dir *= -1; + } + // homeostasis + if (pixel.temp > 37) { pixel.temp -= 1; } + else if (pixel.temp < 37) { pixel.temp += 1; } + } + + } +} + +elements.alien_head = { + color: ["#41ab1d","#4cbf25","#40752e","#871dab","#ac3ad2","#71278a"], + category: "life", + hidden: true, + density: 1080, + state: "solid", + conduct: .05, + temp: 37, + tempHigh: 850, + stateHigh: "cooked_meat", + tempLow: -560, + stateLow: "frozen_meat", + burn: 10, + burnTime: 450, + burnInto: "cooked_meat", + breakInto: ["blood","meat","bone"], + forceSaveColor: true, + reactions: { + "cancer": { elem1:"cancer", chance:0.005 }, + "radiation": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.4 }, + "neutron": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.03 }, + "fallout": { elem1:["ash","meat","rotten_meat","cooked_meat"], chance:0.03 }, + "plague": { elem1:"plague", chance:0.05 }, + "oxygen": { elem2:"carbon_dioxide", chance:0.5 }, + "meat": { elem2:null, chance:0.1 }, + "cooked_meat": { elem2:null, chance:0.1 }, + "cured_meat": { elem2:null, chance:0.1 }, + "sugar": { elem2:null, chance:0.1 }, + "broth": { elem2:null, chance:0.2 }, + "yolk": { elem2:null, chance:0.1 }, + "hard_yolk": { elem2:null, chance:0.1 }, + "dough": { elem2:null, chance:0.1 }, + "batter": { elem2:null, chance:0.2 }, + "butter": { elem2:null, chance:0.1 }, + "melted_butter": { elem2:null, chance:0.2 }, + "chocolate": { elem2:null, chance:0.2 }, + "melted_chocolate": { elem2:null, chance:0.3 }, + "grape": { elem2:null, chance:0.1 }, + "tomato": { elem2:null, chance:0.1 }, + "herb": { elem2:null, chance:0.1 }, + "lettuce": { elem2:null, chance:0.1 }, + "corn": { elem2:null, chance:0.1 }, + "popcorn": { elem2:null, chance:0.15 }, + "potato": { elem2:null, chance:0.1 }, + "baked_potato": { elem2:null, chance:0.15 }, + "bread": { elem2:null, chance:0.1 }, + "toast": { elem2:null, chance:0.1 }, + "gingerbread": { elem2:null, chance:0.1 }, + "baked_batter": { elem2:null, chance:0.2 }, + "wheat": { elem2:null, chance:0.1 }, + "candy": { elem2:null, chance:0.1 }, + "yogurt": { elem2:null, chance:0.2 }, + "frozen_yogurt": { elem2:null, chance:0.1 }, + "ice_cream": { elem2:null, chance:0.2 }, + "beans": { elem2:[null,null,null,null,null,null,null,null,"stench"], chance:0.2 }, + "tea": { elem2:null, chance:0.2 }, + "coffee": { elem2:null, chance:0.2 }, + "milk": { elem2:null, chance:0.2 }, + "cream": { elem2:null, chance:0.2 }, + "soda": { elem2:null, chance:0.2 }, + "chocolate_milk": { elem2:null, chance:0.2 }, + "fruit_milk": { elem2:null, chance:0.2 }, + "pilk": { elem2:null, chance:0.2 }, + "eggnog": { elem2:null, chance:0.2 }, + "juice": { elem2:null, chance:0.2 }, + "cheese": { elem2:null, chance:0.1 }, + "melted_cheese": { elem2:null, chance:0.2 }, + "alcohol": { elem2:null, chance:0.2 }, + "antidote": { elem2:null, chance:0.2 }, + "honey": { elem2:null, chance:0.2 }, + "caramel": { elem2:null, chance:0.2 }, + "molasses": { elem2:null, chance:0.05 }, + "ketchup": { elem2:null, chance:0.1 }, + "pumpkin_seed": { elem2:null, chance:0.1 }, + "nut": { elem2:null, chance:0.1 }, + "nut_meat": { elem2:null, chance:0.1 }, + "nut_butter": { elem2:null, chance:0.1 }, + "nut_milk": { elem2:null, chance:0.2 }, + "jelly": { elem2:null, chance:0.2 }, + "mayo": { elem2:null, chance:0.2 }, + "mashed_potato": { elem2:null, chance:0.2 }, + "sauce": { elem2:null, chance:0.2 }, + "pickle": { elem2:null, chance:0.1 }, + }, + properties: { + dead: false + }, + tick: function(pixel) { + doHeat(pixel); + doBurning(pixel); + doElectricity(pixel); + if (pixel.dead) { + // Turn into rotten_meat if pixelTicks-dead > 500 + if (pixelTicks-pixel.dead > 200 && Math.random() < 0.1) { + changePixel(pixel,"rotten_meat"); + return + } + } + + // Find the body + if (!isEmpty(pixel.x, pixel.y+1, true) && pixelMap[pixel.x][pixel.y+1].element == "alien_body") { + var body = pixelMap[pixel.x][pixel.y+1]; + if (body.dead) { // If body is dead, kill head + pixel.dead = body.dead; + } + } + else { var body = null } + + if (tryMove(pixel, pixel.x, pixel.y+1)) { + // create blood if severed 10% chance + if (isEmpty(pixel.x, pixel.y+1) && !pixel.dead && Math.random() < 0.1 && !pixel.charge) { + createPixel("blood", pixel.x, pixel.y+1); + // set dead to true 15% chance + if (Math.random() < 0.15) { + pixel.dead = pixelTicks; + } + } + } + // homeostasis + if (pixel.temp > 37) { pixel.temp -= 1; } + else if (pixel.temp < 37) { pixel.temp += 1; } + } +} + +elements.green_tornado = { + color: ["#39d83f","#65bf69","#718a72", "#5bbf5e"], + tick: function(pixel) { + doHeat(pixel); + if (pixel.stage) { + if (pixel.stage === -1) { + if (!isEmpty(pixel.x,pixel.y+1,true)) { + var pixel2 = pixelMap[pixel.x][pixel.y+1]; + if (pixel2.element !== "green_tornado" && elements[pixel2.element].movable) { + deletePixel(pixel.x,pixel.y); + tryMove(pixel2,pixel2.x,pixel2.y-1); + return; + } + } + if (Math.random() < 0.1) { + deletePixel(pixel.x,pixel.y); + return; + } + return; + } + for (var y = 0; y <= pixel.stage; y++) { + for (var x = -y-0.5; x <= y+0.5; x++) { + var nx = Math.round(pixel.x+x/2); + var ny = Math.round(pixel.y-y); + if (isEmpty(nx,ny)) { + createPixel("green_tornado",nx,ny); + pixelMap[nx][ny].stage = -1; + } + else if (!outOfBounds(nx,ny)) { + // try to break and then move it up + var p = pixelMap[nx][ny]; + if (elements[p.element].breakInto && Math.random() < (elements[p.element].hardness || 1) * 0.1) { + breakPixel(p); + } + if (p.del || elements[p.element].id === elements.green_tornado.id || !elements[p.element].movable) { continue; } + tryMove(p,p.x,p.y-1); + } + } + } + for (var y = 0; y <= Math.min(4,pixel.stage); y++) { + for (var x = -pixel.stage; x <= pixel.stage; x++) { + var nx = Math.round(pixel.x+x/2); + var ny = pixel.y-y; + if (!isEmpty(nx,ny,true) && Math.random() < 0.3) { + var p = pixelMap[nx][ny]; + if (elements[p.element].breakInto && Math.random() < (elements[p.element].hardness || 1) * 0.1) { + breakPixel(p); + } + if (p.del || elements[p.element].id === elements.green_tornado.id || !elements[p.element].movable) { continue; } + tryMove(p,p.x,p.y-1); + } + } + } + if (pixel.stage < pixel.mag) { + pixel.stage++; + } + } + else { + pixel.mag = Math.floor(Math.random() * 7) + 15 + pixel.stage = 1; + pixel.dir = Math.random() < 0.5 ? -1 : 1; + } + tryMove(pixel,pixel.x,pixel.y+1); + if (Math.random() < 0.1 && !tryMove(pixel,pixel.x+pixel.dir,pixel.y)) { + tryMove(pixel,pixel.x+pixel.dir,pixel.y-1) + if (Math.random() < 0.2) { + pixel.dir = -pixel.dir; + } + } + if (pixelTicks - pixel.start > 400 && Math.random() < 0.2) { + pixel.stage -= 2; + pixel.mag -= 1; + if (pixel.stage < 2) { + deletePixel(pixel.x,pixel.y); + } + } + }, + category: "weapons", + state: "gas", + density: 1.23, + maxSize: 1, + cooldown: defaultCooldown, + excludeRandom: true, +} + +elements.green_goo = { + color: "#64d14f", + behavior: [ + "XX|CH:green_goo%25|XX", + "M2%5 AND CH:green_goo%25|DL%5|M2%5 AND CH:green_goo%25", + "XX|CH:green_goo%25 AND M1|XX", + ], + behaviorOn: [ + "XX|XX|XX", + "XX|DL%10|XX", + "M1|M2|M1", + ], + reactions: { + "antibody": { elem1:"malware", elem2:null } + }, + ignore: ["fire","smoke","malware","flash","light","laser"], + category: "special", + state: "solid", + density: 21450, + excludeRandom: true, + conduct: 0.25, + darkText: true +} + +elements.beef = { + color: ["#e45a5a","#e34343","#c03a3a"], + behavior: [ + "XX|XX|XX", + "SP|XX|SP", + "XX|M1|XX", + ], + reactions: { + "dirty_water": { elem1:"rotten_meat", chance:0.1 }, + "fly": { elem1:"rotten_meat", chance:0.2 }, + "dioxin": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "uranium": { elem1:"rotten_meat", chance:0.1 }, + "cancer": { elem1:"rotten_meat", chance:0.1 }, + "plague": { elem1:"rotten_meat", elem2:null, chance:0.3 }, + "ant": { elem1:"rotten_meat", chance:0.1 }, + "worm": { elem1:"rotten_meat", chance:0.1 }, + "rat": { elem1:"rotten_meat", chance:0.3 }, + "mushroom_spore": { elem1:"rotten_meat", chance:0.1 }, + "mushroom_stalk": { elem1:"rotten_meat", chance:0.1 }, + "mercury": { elem1:"rotten_meat", elem2:null, chance:0.2 }, + "mercury_gas": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "virus": { elem1:"rotten_meat", chance:0.1 }, + "poison": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "infection": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "ink": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "acid": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "acid_gas": { elem1:"rotten_meat", chance:0.4 }, + "cyanide": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "cyanide_gas": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "rotten_cheese": { elem1:"rotten_meat", chance:0.02 }, + "water": { elem2:"broth", tempMin:70 }, + "salt_water": { elem2:"broth", tempMin:70 }, + "sugar_water": { elem2:"broth", tempMin:70 }, + "seltzer": { elem2:"broth", tempMin:70 }, + "salt": { elem1:"cured_meat" }, + }, + tempHigh: 62.8, + stateHigh: "cooked_beef", + tempLow: -18, + stateLow: "frozen_beef", + category:"food", + burn:15, + burnTime:200, + burnInto:"cooked_beef", + state: "solid", + density: 1019.5, + conduct: 0.2, + isFood: true +} + +elements.frozen_beef = { + color: ["#81afc8","#509fc8","#7caec8","#356eb1"], + behavior: behaviors.STURDYPOWDER, + temp: -18, + tempHigh: 0, + stateHigh: "beef", + category:"food", + hidden:true, + state: "solid", + density: 1067.5, + isFood: true +} + +elements.chicken = { + color: ["#dbc1b3","#dbc0b9"], + behavior: [ + "XX|XX|XX", + "SP|XX|SP", + "XX|M1|XX", + ], + reactions: { + "dirty_water": { elem1:"rotten_meat", chance:0.1 }, + "fly": { elem1:"rotten_meat", chance:0.2 }, + "dioxin": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "uranium": { elem1:"rotten_meat", chance:0.1 }, + "cancer": { elem1:"rotten_meat", chance:0.1 }, + "plague": { elem1:"rotten_meat", elem2:null, chance:0.3 }, + "ant": { elem1:"rotten_meat", chance:0.1 }, + "worm": { elem1:"rotten_meat", chance:0.1 }, + "rat": { elem1:"rotten_meat", chance:0.3 }, + "mushroom_spore": { elem1:"rotten_meat", chance:0.1 }, + "mushroom_stalk": { elem1:"rotten_meat", chance:0.1 }, + "mercury": { elem1:"rotten_meat", elem2:null, chance:0.2 }, + "mercury_gas": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "virus": { elem1:"rotten_meat", chance:0.1 }, + "poison": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "infection": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "ink": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "acid": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "acid_gas": { elem1:"rotten_meat", chance:0.4 }, + "cyanide": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "cyanide_gas": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "rotten_cheese": { elem1:"rotten_meat", chance:0.02 }, + "water": { elem2:"broth", tempMin:70 }, + "salt_water": { elem2:"broth", tempMin:70 }, + "sugar_water": { elem2:"broth", tempMin:70 }, + "seltzer": { elem2:"broth", tempMin:70 }, + "salt": { elem1:"cured_meat" }, + "crumb": { elem1:"breaded_chicken" }, + }, + tempHigh: 73.9, + stateHigh: "cooked_chicken", + tempLow: -18, + stateLow: "frozen_meat", + category:"food", + burn:15, + burnTime:200, + burnInto:"cooked_chicken", + state: "solid", + density: 1019.5, + conduct: 0.2, + isFood: true +} + +elements.frozen_chicken = { + color: ["#94d4f0","#9ac1d2", "#7fa3b3"], + behavior: behaviors.STURDYPOWDER, + temp: -18, + tempHigh: 0, + stateHigh: "chicken", + category:"food", + hidden:true, + state: "solid", + density: 1067.5, + isFood: true +} + +elements.frozen_breaded_chicken = { + color: ["#94d4f0","#9ac1d2", "#7fa3b3", "#c7a64a","#d3bd82"], + behavior: behaviors.STURDYPOWDER, + temp: -18, + tempHigh: 0, + stateHigh: "breaded_chicken", + category:"food", + hidden:true, + state: "solid", + density: 1067.5, + isFood: true +} + +elements.cooked_chicken = { + color: ["#d4af4b","#a9904b"], + behavior: [ + "XX|XX|XX", + "SP|XX|SP", + "XX|M1|XX", + ], + reactions: { + "dirty_water": { elem1:"rotten_meat", chance:0.1 }, + "fly": { elem1:"rotten_meat", chance:0.2 }, + "dioxin": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "uranium": { elem1:"rotten_meat", chance:0.1 }, + "cancer": { elem1:"rotten_meat", chance:0.1 }, + "plague": { elem1:"rotten_meat", elem2:null, chance:0.3 }, + "ant": { elem1:"rotten_meat", chance:0.1 }, + "worm": { elem1:"rotten_meat", chance:0.1 }, + "rat": { elem1:"rotten_meat", chance:0.3 }, + "mushroom_spore": { elem1:"rotten_meat", chance:0.1 }, + "mushroom_stalk": { elem1:"rotten_meat", chance:0.1 }, + "mercury": { elem1:"rotten_meat", elem2:null, chance:0.2 }, + "mercury_gas": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "virus": { elem1:"rotten_meat", chance:0.1 }, + "poison": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "infection": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "ink": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "acid": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "acid_gas": { elem1:"rotten_meat", chance:0.4 }, + "cyanide": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "cyanide_gas": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "rotten_cheese": { elem1:"rotten_meat", chance:0.02 }, + "water": { elem2:"broth", tempMin:70 }, + "salt_water": { elem2:"broth", tempMin:70 }, + "sugar_water": { elem2:"broth", tempMin:70 }, + "seltzer": { elem2:"broth", tempMin:70 }, + "salt": { elem1:"cured_meat" }, + }, + tempHigh: 300, + stateHigh: "ash", + tempLow: -18, + stateLow: "frozen_meat", + category:"food", + burn:15, + burnTime:200, + burnInto:"ash", + state: "solid", + density: 1019.5, + conduct: 0.2, + isFood: true +} + +elements.breaded_chicken = { + color: ["#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a","#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a","#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#d3bd82", "#c7a64a", "#ff8282"], + behavior: [ + "XX|XX|XX", + "SP|XX|SP", + "XX|M1|XX", + ], + reactions: { + "dirty_water": { elem1:"rotten_meat", chance:0.1 }, + "fly": { elem1:"rotten_meat", chance:0.2 }, + "dioxin": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "uranium": { elem1:"rotten_meat", chance:0.1 }, + "cancer": { elem1:"rotten_meat", chance:0.1 }, + "plague": { elem1:"rotten_meat", elem2:null, chance:0.3 }, + "ant": { elem1:"rotten_meat", chance:0.1 }, + "worm": { elem1:"rotten_meat", chance:0.1 }, + "rat": { elem1:"rotten_meat", chance:0.3 }, + "mushroom_spore": { elem1:"rotten_meat", chance:0.1 }, + "mushroom_stalk": { elem1:"rotten_meat", chance:0.1 }, + "mercury": { elem1:"rotten_meat", elem2:null, chance:0.2 }, + "mercury_gas": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "virus": { elem1:"rotten_meat", chance:0.1 }, + "poison": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "infection": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "ink": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "acid": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "acid_gas": { elem1:"rotten_meat", chance:0.4 }, + "cyanide": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "cyanide_gas": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "rotten_cheese": { elem1:"rotten_meat", chance:0.02 }, + "water": { elem2:"broth", tempMin:70 }, + "salt_water": { elem2:"broth", tempMin:70 }, + "sugar_water": { elem2:"broth", tempMin:70 }, + "seltzer": { elem2:"broth", tempMin:70 }, + "salt": { elem1:"cured_meat" }, + "grease": { elem1:"greasy_breaded_chicken" }, + }, + tempHigh: 73.9, + stateHigh: "fried_chicken", + tempLow: -18, + stateLow: "frozen_meat", + category:"food", + burn:15, + burnTime:200, + burnInto:"fried_chicken", + state: "solid", + density: 1019.5, + conduct: 0.2, + isFood: true +} + +elements.fried_chicken = { + color: ["#a9996d","#c8b581"], + behavior: [ + "XX|XX|XX", + "SP|XX|SP", + "XX|M1|XX", + ], + reactions: { + "dirty_water": { elem1:"rotten_meat", chance:0.1 }, + "fly": { elem1:"rotten_meat", chance:0.2 }, + "dioxin": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "uranium": { elem1:"rotten_meat", chance:0.1 }, + "cancer": { elem1:"rotten_meat", chance:0.1 }, + "plague": { elem1:"rotten_meat", elem2:null, chance:0.3 }, + "ant": { elem1:"rotten_meat", chance:0.1 }, + "worm": { elem1:"rotten_meat", chance:0.1 }, + "rat": { elem1:"rotten_meat", chance:0.3 }, + "mushroom_spore": { elem1:"rotten_meat", chance:0.1 }, + "mushroom_stalk": { elem1:"rotten_meat", chance:0.1 }, + "mercury": { elem1:"rotten_meat", elem2:null, chance:0.2 }, + "mercury_gas": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "virus": { elem1:"rotten_meat", chance:0.1 }, + "poison": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "infection": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "ink": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "acid": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "acid_gas": { elem1:"rotten_meat", chance:0.4 }, + "cyanide": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "cyanide_gas": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "rotten_cheese": { elem1:"rotten_meat", chance:0.02 }, + "water": { elem2:"broth", tempMin:70 }, + "salt_water": { elem2:"broth", tempMin:70 }, + "sugar_water": { elem2:"broth", tempMin:70 }, + "seltzer": { elem2:"broth", tempMin:70 }, + "salt": { elem1:"cured_meat" }, + "grease": { elem1:"greasy_breaded_chicken" }, + }, + tempHigh: 300, + stateHigh: "ash", + tempLow: -18, + stateLow: "frozen_meat", + category:"food", + burn:15, + burnTime:200, + burnInto:"ash", + state: "solid", + density: 1019.5, + conduct: 0.2, + isFood: true +} + +elements.cooked_beef = { + color: ["#6b2a2a","#782424","#5c281d"], + behavior: [ + "XX|XX|XX", + "SP|XX|SP", + "XX|M1|XX", + ], + reactions: { + "dirty_water": { elem1:"rotten_meat", chance:0.1 }, + "fly": { elem1:"rotten_meat", chance:0.2 }, + "dioxin": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "uranium": { elem1:"rotten_meat", chance:0.1 }, + "cancer": { elem1:"rotten_meat", chance:0.1 }, + "plague": { elem1:"rotten_meat", elem2:null, chance:0.3 }, + "ant": { elem1:"rotten_meat", chance:0.1 }, + "worm": { elem1:"rotten_meat", chance:0.1 }, + "rat": { elem1:"rotten_meat", chance:0.3 }, + "mushroom_spore": { elem1:"rotten_meat", chance:0.1 }, + "mushroom_stalk": { elem1:"rotten_meat", chance:0.1 }, + "mercury": { elem1:"rotten_meat", elem2:null, chance:0.2 }, + "mercury_gas": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "virus": { elem1:"rotten_meat", chance:0.1 }, + "poison": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "infection": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "ink": { elem1:"rotten_meat", elem2:null, chance:0.1 }, + "acid": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "acid_gas": { elem1:"rotten_meat", chance:0.4 }, + "cyanide": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "cyanide_gas": { elem1:"rotten_meat", elem2:null, chance:0.5 }, + "rotten_cheese": { elem1:"rotten_meat", chance:0.02 }, + "water": { elem2:"broth", tempMin:70 }, + "salt_water": { elem2:"broth", tempMin:70 }, + "sugar_water": { elem2:"broth", tempMin:70 }, + "seltzer": { elem2:"broth", tempMin:70 }, + "salt": { elem1:"cured_meat" }, + }, + tempHigh: 300, + stateHigh: "cooked_meat", + tempLow: -18, + stateLow: "frozen_meat", + category:"food", + burn:15, + burnTime:200, + burnInto:"ash", + state: "solid", + density: 1019.5, + conduct: 0.2, + isFood: true +} + +elements.otherworldy_dirt = { + color: ["#5b9878","#7c998a","#216f46","#437058", "#43524a","#656866", "#59695e"], + behavior: behaviors.POWDER, + tempHigh: 5600, + category:"land", + state: "solid", + density: 8321 +} if (!elements.sand.reactions) { elements.sand.reactions = {} } elements.sand.reactions.dirt = { elem1:"dirty_sand", elem2:"dirty_sand" } +if (!elements.mud.reactions) { elements.mud.reactions = {} } +elements.mud.reactions.water = { elem1:"muddy_water", elem2:"muddy_water" } + if (!elements.dirty_sand.reactions) { elements.dirty_sand.reactions = {} } elements.dirty_sand.reactions.water = { elem1:"wet_dirty_sand", elem2:"wet_dirty_sand" } @@ -918,8 +2872,16 @@ elements.rocky_dirty_sand.reactions.water = { elem1:"wet_rocky_dirty_sand", elem if (!elements.poison.reactions) { elements.poison.reactions = {} } elements.poison.reactions.antidote = { elem1:"how_did_we_get_here", elem2:"how_did_we_get_here" } -if (!elements.molten_steel.reactions) { elements.molten_steel.reactions = {} } -elements.molten_steel.reactions.gullibullium = { elem1:"reinforced_gullibullium", elem2:"reinforced_gullibullium" } +runAfterAutogen(() => { + if (!elements.molten_steel.reactions) { elements.molten_steel.reactions = {} } + elements.molten_steel.reactions.gullibullium = { elem1:"r_gullibullium", elem2:"r_gullibullium" } + }) + + runAfterAutogen(() => { + if (!elements.molten_sulfur.reactions) { elements.molten_sulfur.reactions = {} } + elements.molten_sulfur.reactions.silvanium = { elem1:"silvanium_sulfate", elem2:"silvanium_sulfate" } + }) + if (!elements.wall.reactions) { elements.wall.reactions = {} } elements.wall.reactions.plasma3 = { elem1:"plasma3", elem2:"plasma3" } @@ -927,13 +2889,35 @@ elements.wall.reactions.plasma3 = { elem1:"plasma3", elem2:"plasma3" } if (!elements.wall.reactions) { elements.wall.reactions = {} } elements.wall.reactions.plasma4 = { elem1:"plasma4", elem2:"plasma4" } +if (!elements.wall.reactions) { elements.wall.reactions = {} } +elements.wall.reactions.ultimate_plasma = { elem1:"ultimate_plasma", elem2:"ultimate_plasma" } + if (!elements.reinforced_wall.reactions) { elements.reinforced_wall.reactions = {} } elements.reinforced_wall.reactions.plasma3 = { elem1:"plasma3", elem2:"plasma3" } if (!elements.reinforced_wall.reactions) { elements.reinforced_wall.reactions = {} } elements.reinforced_wall.reactions.plasma4 = { elem1:"plasma4", elem2:"plasma4" } +if (!elements.reinforced_liquid_wall.reactions) { elements.reinforced_liquid_wall.reactions = {} } +elements.reinforced_liquid_wall.reactions.plasma3 = { elem1:"plasma3", elem2:"plasma3" } + +if (!elements.reinforced_liquid_wall.reactions) { elements.reinforced_liquid_wall.reactions = {} } +elements.reinforced_liquid_wall.reactions.plasma4 = { elem1:"plasma4", elem2:"plasma4" } + +if (!elements.reinforced_wall.reactions) { elements.reinforced_wall.reactions = {} } +elements.reinforced_wall.reactions.ultimate_plasma = { elem1:"ultimate_plasma", elem2:"ultimate_plasma" } + +if (!elements.reinforced_liquid_wall.reactions) { elements.reinforced_liquid_wall.reactions = {} } +elements.reinforced_liquid_wall.reactions.ultimate_plasma = { elem1:"ultimate_plasma", elem2:"ultimate_plasma" } + if (!elements.whenyouium.reactions) { elements.whenyouium.reactions = {} } elements.whenyouium.reactions.when_you_particles = { elem1:"when_you_particles", elem2:"when_you_particles" } +if (!elements.when_iium.reactions) { elements.when_iium.reactions = {} } +elements.when_iium.reactions.when_i_particles = { elem1:"when_i_particles", elem2:"when_i_particles" } + +if (!elements.ash.reactions) { elements.ash.reactions = {} } +elements.ash.reactions.dust = { elem1:"dusty_ash", elem2:"dusty_ash" } + + // important colors: ["#000000", "#edff00", "#3a3a3a", "#ff0000"], ["#82c0ff", "#ff8282"], \ No newline at end of file diff --git a/mods/radioactive.js b/mods/radioactive.js new file mode 100644 index 00000000..bafc6168 --- /dev/null +++ b/mods/radioactive.js @@ -0,0 +1,135 @@ +elements.technetium = { + category: "powders", + state: "solid", + color: "#D3D3D3", + tempHigh: 2157, + stateHigh: "molten_technetium", + density: 11359, + temp: 20, + behavior: [ + "XX|CR:radiation%3 AND CR:fallout%0.2|XX", + "CR:radiation%3 AND CR:fallout%0.2|XX|CR:radiation%3 AND CR:fallout%0.2", + "M1|CR:radiation%3 AND M2 AND CR:fallout%0.2|M1", + ], + reactions: { + "water": { elem1: null, elem2: "dirty_water" }, + }, +} + +elements.molten_technetium = { + category: "states", + hidden: true, + state: "liquid", + color: ["#F2F2E5", "#E0C29F", "#D0CFC7", "#BDB7B0", "#A0958C", "#FFB300", "#F0E68C", "#BD10E0", "#FFF0F5"], + behavior: [ + "XX|CR:radiation%3 AND CR:fallout%0.2 AND CR:plasma,fire,fire,fire,fire%0.5|XX", + "M2 AND CR:radiation%3 AND CR:fallout%0.2 AND CR:plasma,fire,fire,fire,fire%0.5|XX|M2 AND CR:radiation%3 AND CR:fallout%0.2 AND CR:plasma,fire,fire,fire,fire%0.5", + "M1|M1 AND CR:radiation%3 AND CR:fallout%0.2|M1", + ], + tempLow: 2157, + stateLow: "technetium", + density: 11359, +} + +elements.francium = { + category: "powders", + state: "solid", + color: ["#DE0047", "#4169E1", "#007FFF", "#9ACD32", "#FFD700", "#C800C8"], + behavior: [ + "XX|CR:radiation%1.5|XX", + "CR:radiation%1.5|XX|CR:radiation%1.5", + "M2|M1 AND CR:radiation%1.5|M2", + ], + tempHigh: 27, + stateHigh: "molten_francium", + density: 2480, +} + +elements.molten_francium = { + category: "states", + hidden: true, + tempLow: 27, + stateLow: "francium", + density: 2480, + color: ["#C71585", "#FF00FF", "#A020F0", "#4B0082", "#EE82EE", "#FF9933", "#F97A3E", "#F05945"], + behavior: [ + "XX|CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6|XX", + "M2 AND CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6|XX|M2 AND CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6", + "M1|M1 AND CR:fire,fire,fire,fire,plasma%2 AND CR:radiation%0.6|M1", + ], +} + +elements.radium = { + category: "powders", + tempHigh: 700, + stateHigh: "molten_radium", + density: 5500, + state: "solid", + color: ["#F0F0F0", "#C0C0C0", "#A9A9A9", "#707070", "#303030"], + behavior: [ + "XX|CR:radiation%3|XX", + "CR:radiation%3|XX|CR:radiation%3", + "M2|M1 AND CR:radiation%3|M2", + ], +} + +elements.molten_radium = { + category: "states", + hidden: true, + tempLow: 700, + density: 5500, + stateLow: "radium", + color: ["#F0E0D6", "#D3B29E", "#B78473", "#A0534A", "#FFB300", "#F05945"], + behavior: [ + "XX|CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3|XX", + "M2 AND CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3|XX|M2 AND CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3", + "M1|M1 AND CR:fire,fire,fire,fire,plasma%1 AND CR:radiation%3|M1", + ], +} + +elements.rutherfordium = { + category: "powders", + state: "solid", + tempHigh: 2100, + stateHigh: "molten_rutherfordium", + density: 17000, + color: ["#C0C0C0", "#B3B3B3", "#A6A6A6", "#8C8C8C", "#737373"], + behavior: [ + "XX|CR:radiation%5 AND CR:fallout%0.3|XX", + "CR:radiation%5 AND CR:fallout%0.3|XX|CR:radiation%5 AND CR:fallout%0.3", + "M2|M1 AND CR:radiation%5 AND CR:fallout%0.3|M2", + ], +} + +elements.molten_rutherfordium = { + category: "states", + state: "liquid", + hidden: true, + tempLow: 2100, + stateLow: "rutherfordium", + density: 17000, +} + +elements.dubnium = { + category: "solids", + state: "solid", + density: 21600, + color: ["#495057", "#dee2e6", "#ced4da", "#a61e4d"], + behavior: [ + "XX|CR:radiation%1|XX", + "CR:radiation%1|XX|CR:radiation%1", + "XX|CR:radiation%1|XX", + ], +} + +elements.seaborgium = { + category: "solids", + state: "solid", + density: 23500, + color: ["#ced4da", "#adb5bd", "#868e96", "#339af0", "#4dabf7", "#4263eb", "#3b5bdb", "#1864ab"], + behavior: [ + "XX|CR:radiation%1|XX", + "CR:radiation%1|XX|CR:radiation%1", + "XX|CR:radiation%1|XX", + ], +} \ No newline at end of file diff --git a/mods/rock_paper_scissors.js b/mods/rock_paper_scissors.js new file mode 100644 index 00000000..af6131e8 --- /dev/null +++ b/mods/rock_paper_scissors.js @@ -0,0 +1,32 @@ +elements.scissor = { + color: ["#CCCCCC","#999999","#808080","#71797E"], + category: "weapons", + behavior: behaviors.STURDYPOWDER, + state: "solid", + density: 7850, + tempHigh: 1455.5, + stateHigh: "molten_steel", + reactions: { + "rock": { elem1:null }, + "paper": { elem2:null }, + "head": { elem2:["blood","meat"], chance:0.005 }, + "body": { elem2:["blood","meat"], chance:0.005 }, + }, + hardness: 0.75, + conduct: 0.32, +} + +elements.rock.reactions = { + "fly": { elem2:"dead_bug", chance:0.25, oneway:true }, + "firefly": { elem2:"dead_bug", chance:0.2, oneway:true }, + "stink_bug": { elem2:"dead_bug", chance:0.15, oneway:true }, + "bee": { elem2:"dead_bug", chance:0.1, oneway:true }, + "bird": { elem2:"feather", chance:0.025, oneway:true }, + "egg": { elem2:"yolk", oneway:true }, + "bone": { elem2:"oil", tempMin:300, chance:0.005, oneway:true }, + "dead_plant": { elem2:"charcoal", tempMin:200, chance:0.005, oneway:true }, + "charcoal": { elem2:"diamond", tempMin:800, tempMax:900, chance:0.005, oneway:true }, + "sand": { elem2:"packed_sand", tempMin:500, chance:0.005, oneway:true }, + "wet_sand": { elem2:"packed_sand", chance:0.005, oneway:true }, + "paper": { elem1:null }, +} \ No newline at end of file diff --git a/mods/spouts.js b/mods/spouts.js new file mode 100644 index 00000000..8dd95b93 --- /dev/null +++ b/mods/spouts.js @@ -0,0 +1,715 @@ +elements.salt_water_spout = { + category: "spouts", + state: "solid", + color: "#4d85ff", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:salt_water|XX", + "CR:salt_water|XX|CR:salt_water", + "XX|CR:salt_water|XX", + ], +} + +elements.sugar_water_spout = { + category: "spouts", + state: "solid", + color: "#8eaae6", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:sugar_water|XX", + "CR:sugar_water|XX|CR:sugar_water", + "XX|CR:sugar_water|XX", + ], +} + +elements.seltzer_spout = { + category: "spouts", + state: "solid", + color: ["#8eaae6","#82a4ed","#b5c5e8","#8eaae6","#82a4ed"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:seltzer|XX", + "CR:seltzer|XX|CR:seltzer", + "XX|CR:seltzer|XX", + ], +} + +elements.dirty_water_spout = { + category: "spouts", + state: "solid", + color: ["#0e824e","#07755a","#0c6934"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:dirty_water|XX", + "CR:dirty_water|XX|CR:dirty_water", + "XX|CR:dirty_water|XX", + ], +} + +elements.pool_water_spout = { + category: "spouts", + state: "solid", + color: "#a8d2e3", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:pool_water_spout|XX", + "CR:pool_water_spout|XX|CR:pool_water_spout", + "XX|CR:pool_water_spout|XX", + ], +} + +elements.slush_spout = { + category: "spouts", + state: "solid", + color: "#81bcd4", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:slush|XX", + "CR:slush|XX|CR:slush", + "XX|CR:slush|XX", + ], +} + +elements.magma_spout = { + category: "spouts", + state: "solid", + color: ["#ff6f00","#ff8c00","#ff4d00"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:magma|XX", + "CR:magma|XX|CR:magma", + "XX|CR:magma|XX", + ], +} + +elements.slime_spout = { + category: "spouts", + state: "solid", + color: "#81cf63", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:slime|XX", + "CR:slime|XX|CR:slime", + "XX|CR:slime|XX", + ], +} + +elements.cement_spout = { + category: "spouts", + state: "solid", + color: "#b5b5b5", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:cement|XX", + "CR:cement|XX|CR:cement", + "XX|CR:cement|XX", + ], +} + +elements.oil_spout = { + category: "spouts", + state: "solid", + color: "#470e00", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:oil|XX", + "CR:oil|XX|CR:oil", + "XX|CR:oil|XX", + ], +} + +elements.lamp_oil_spout = { + category: "spouts", + state: "solid", + color: "#b3b38b", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:lamp_oil|XX", + "CR:lamp_oil|XX|CR:lamp_oil", + "XX|CR:lamp_oil|XX", + ], +} + +elements.foam_spout = { + category: "spouts", + state: "solid", + color: "#cad2e3", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:foam|XX", + "CR:foam|XX|CR:foam", + "XX|CR:foam|XX", + ], +} + +elements.acid_spout = { + category: "spouts", + state: "solid", + color: ["#b5cf91","#a1ff5e","#288f2a"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:acid|XX", + "CR:acid|XX|CR:acid", + "XX|CR:acid|XX", + ], +} + +elements.neutral_acid_spout = { + category: "spouts", + state: "solid", + color: ["#c8d9b0","#c1d9b0","#b8dbb9"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:neutral_acid|XX", + "CR:neutral_acid|XX|CR:neutral_acid", + "XX|CR:neutral_acid|XX", + ], +} + +elements.glue_spout = { + category: "spouts", + state: "solid", + color: "#f0f0f0", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:glue|XX", + "CR:glue|XX|CR:glue", + "XX|CR:glue|XX", + ], +} + +elements.soda_spout = { + category: "spouts", + state: "solid", + color: "#422016", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:soda|XX", + "CR:soda|XX|CR:soda", + "XX|CR:soda|XX", + ], +} + +elements.melted_wax_spout = { + category: "spouts", + state: "solid", + color: "#d4c196", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:melted_wax|XX", + "CR:melted_wax|XX|CR:melted_wax", + "XX|CR:melted_wax|XX", + ], +} + +elements.juice_spout = { + category: "spouts", + state: "solid", + color: "#f0bf3d", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:juice|XX", + "CR:juice|XX|CR:juice", + "XX|CR:juice|XX", + ], +} + +elements.milk_spout = { + category: "spouts", + state: "solid", + color: "#fafafa", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:milk|XX", + "CR:milk|XX|CR:milk", + "XX|CR:milk|XX", + ], +} + +elements.chocolate_milk_spout = { + category: "spouts", + state: "solid", + color: "#664934", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:chocolate_milk|XX", + "CR:chocolate_milk|XX|CR:chocolate_milk", + "XX|CR:chocolate_milk|XX", + ], +} + +elements.fruit_milk_spout = { + category: "spouts", + state: "solid", + color: "#c9988f", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:fruit_milk|XX", + "CR:fruit_milk|XX|CR:fruit_milk", + "XX|CR:fruit_milk|XX", + ], +} + +elements.pilk_spout = { + category: "spouts", + state: "solid", + color: "#e9cba3", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:pilk|XX", + "CR:pilk|XX|CR:pilk", + "XX|CR:pilk|XX", + ], +} + +elements.eggnog_spout = { + category: "spouts", + state: "solid", + color: "#ddbf98", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:eggnog|XX", + "CR:eggnog|XX|CR:eggnog", + "XX|CR:eggnog|XX", + ], +} + +elements.cream_spout = { + category: "spouts", + state: "solid", + color: "#f7f7f7", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:cream|XX", + "CR:cream|XX|CR:cream", + "XX|CR:cream|XX", + ], +} + +elements.cream_spout = { + category: "spouts", + state: "solid", + color: "#f7f7f7", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:cream|XX", + "CR:cream|XX|CR:cream", + "XX|CR:cream|XX", + ], +} + +elements.nut_milk_spout = { + category: "spouts", + state: "solid", + color: "#D7D1C3", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:nut_milk|XX", + "CR:nut_milk|XX|CR:nut_milk", + "XX|CR:nut_milk|XX", + ], +} + +elements.vinegar_spout = { + category: "spouts", + state: "solid", + color: "#ffecb3", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:vinegar|XX", + "CR:vinegar|XX|CR:vinegar", + "XX|CR:vinegar|XX", + ], +} + +elements.alcohol_spout = { + category: "spouts", + state: "solid", + color: "#c9c5b1", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:alcohol|XX", + "CR:alcohol|XX|CR:alcohol", + "XX|CR:alcohol|XX", + ], +} + +elements.soap_spout = { + category: "spouts", + state: "solid", + color: "#f2f2f2", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:soap|XX", + "CR:soap|XX|CR:soap", + "XX|CR:soap|XX", + ], +} + +elements.bleach_spout = { + category: "spouts", + state: "solid", + color: "#ffffff", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:bleach|XX", + "CR:bleach|XX|CR:bleach", + "XX|CR:bleach|XX", + ], +} + +elements.ink_spout = { + category: "spouts", + state: "solid", + color: "#171717", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:ink|XX", + "CR:ink|XX|CR:ink", + "XX|CR:ink|XX", + ], +} + +elements.mercury_spout = { + category: "spouts", + state: "solid", + color: ["#53574b","#65686a"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:mercury|XX", + "CR:mercury|XX|CR:mercury", + "XX|CR:mercury|XX", + ], +} + +elements.blood_spout = { + category: "spouts", + state: "solid", + color: ["#ff0000","#ee0000"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:blood|XX", + "CR:blood|XX|CR:blood", + "XX|CR:blood|XX", + ], +} + +elements.vaccine_spout = { + category: "spouts", + state: "solid", + color: "#e0d0ad", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:vaccine|XX", + "CR:vaccine|XX|CR:vaccine", + "XX|CR:vaccine|XX", + ], +} + +elements.antibody_spout = { + category: "spouts", + state: "solid", + color: "#ff4040", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:antibody|XX", + "CR:antibody|XX|CR:antibody", + "XX|CR:antibody|XX", + ], +} + +elements.infection_spout = { + category: "spouts", + state: "solid", + color: ["#cf005d","#be004c"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:infection|XX", + "CR:infection|XX|CR:infection", + "XX|CR:infection|XX", + ], +} + +elements.poison_spout = { + category: "spouts", + state: "solid", + color: "#00ff00", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:poison|XX", + "CR:poison|XX|CR:poison", + "XX|CR:poison|XX", + ], +} + +elements.antidote_spout = { + category: "spouts", + state: "solid", + color: "#c9b836", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:antidote|XX", + "CR:antidote|XX|CR:antidote", + "XX|CR:antidote|XX", + ], +} + +elements.tea_spout = { + category: "spouts", + state: "solid", + color: "#6c4317", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:tea|XX", + "CR:tea|XX|CR:tea", + "XX|CR:tea|XX", + ], +} + +elements.coffee_spout = { + category: "spouts", + state: "solid", + color: "#24100b", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:coffee|XX", + "CR:coffee|XX|CR:coffee", + "XX|CR:coffee|XX", + ], +} + +elements.honey_spout = { + category: "spouts", + state: "solid", + color: ["#f6ce1a","#e79001","#bb5503"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:honey|XX", + "CR:honey|XX|CR:honey", + "XX|CR:honey|XX", + ], +} + +elements.sap_spout = { + category: "spouts", + state: "solid", + color: ["#b67f18","#c86305","#cf7a19","#e4ae3a"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:sap|XX", + "CR:sap|XX|CR:sap", + "XX|CR:sap|XX", + ], +} + +elements.caramel_spout = { + category: "spouts", + state: "solid", + color: "#e89a51", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:caramel|XX", + "CR:caramel|XX|CR:caramel", + "XX|CR:caramel|XX", + ], +} + +elements.molasses_spout = { + category: "spouts", + state: "solid", + color: ["#210c06","#170804"], + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:molasses|XX", + "CR:molasses|XX|CR:molasses", + "XX|CR:molasses|XX", + ], +} + +elements.ketchup_spout = { + category: "spouts", + state: "solid", + color: "#ff3119", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:ketchup|XX", + "CR:ketchup|XX|CR:ketchup", + "XX|CR:ketchup|XX", + ], +} + +elements.mayo_spout = { + category: "spouts", + state: "solid", + color: "#fcffbd", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:mayo|XX", + "CR:mayo|XX|CR:mayo", + "XX|CR:mayo|XX", + ], +} + +elements.grease_spout = { + category: "spouts", + state: "solid", + color: "#cf9251", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:grease|XX", + "CR:grease|XX|CR:grease", + "XX|CR:grease|XX", + ], +} + +elements.liquid_oxygen_spout = { + category: "spouts", + state: "solid", + color: "#00ad99", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + temp: -184, + behavior: [ + "XX|CR:liquid_oxygen|XX", + "CR:liquid_oxygen|XX|CR:liquid_oxygen", + "XX|CR:liquid_oxygen|XX", + ], +} + +elements.liquid_hydrogen_spout = { + category: "spouts", + state: "solid", + color: "#97afcf", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + temp: -254, + behavior: [ + "XX|CR:liquid_hydrogen|XX", + "CR:liquid_hydrogen|XX|CR:liquid_hydrogen", + "XX|CR:liquid_hydrogen|XX", + ], +} + +elements.perfume_spout = { + category: "spouts", + state: "solid", + color: "#9656e3", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:perfume|XX", + "CR:perfume|XX|CR:perfume", + "XX|CR:perfume|XX", + ], +} + +elements.cyanide_spout = { + category: "spouts", + state: "solid", + color: "#b6ccb6", + tempHigh: 1455.5, + stateHigh: "molten_steel", + conduct: 0.42, + behavior: [ + "XX|CR:cyanide|XX", + "CR:cyanide|XX|CR:cyanide", + "XX|CR:cyanide|XX", + ], +} \ No newline at end of file diff --git a/mods/tech.js b/mods/tech.js new file mode 100644 index 00000000..b5b9b949 --- /dev/null +++ b/mods/tech.js @@ -0,0 +1,91 @@ +elements.monitor_case = { + color: "#4a4848", + behavior: behaviors.SOLID, + category: "tech", + state: "solid", + density: 500, +}; + +elements.pc_core = { + color: "#f0cd43", + behavior: [ + "XX|SH|XX", + "SH|XX|SH", + "XX|SH|XX", + ], + category: "tech", + tempHigh: 8000, + stateHigh: ["molten_steel","explosion","molten_iron"], + reactions: { + "poison": { elem1: "malfunctioned_wire", elem2: "null" }, + "salt_water": { elem1: "malfunctioned_wire", elem2: "null" }, + "water": { elem1: "explosion", elem2: "null" }, + "malware": { elem1: "null", elem2: "null" }, + }, + breakInto: ["rust", "electrogalvanized"], +}; + +elements.malfunctioned_wire = { + color: "#6d32a8", + behavior: behaviors.WALL, + category: "tech", + conduct: 999, + noMix: true +}; + +elements.red_wire = { + color: "#ff3d1f", + behavior: behaviors.WALL, + category: "tech", + insulate: true, + conduct: 1, + noMix: true, + reactions: { + "acid": { elem1: "malfunctioned_wire", elem2: "null" }, + "poison": { elem1: "malfunctioned_wire", elem2: "null" }, + "salt_water": { elem1: "malfunctioned_wire", elem2: "null" }, + "water": { elem1: "malfunctioned_wire", elem2: "null" }, + }, + breakInto: ["plastic", "copper"], +}; + +elements.green_wire = { + color: "#66c22d", + behavior: behaviors.WALL, + category: "tech", + insulate: true, + conduct: 1, + noMix: true, + reactions: { + "acid": { elem1: "malfunctioned_wire", elem2: "null" }, + "poison": { elem1: "malfunctioned_wire", elem2: "null" }, + "salt_water": { elem1: "malfunctioned_wire", elem2: "null" }, + "water": { elem1: "malfunctioned_wire", elem2: "null" }, + }, + breakInto: ["plastic", "copper"], +}; + +elements.blue_wire = { + color: "#1f81cc", + behavior: behaviors.WALL, + category: "tech", + insulate: true, + conduct: 1, + noMix: true, + reactions: { + "acid": { elem1: "malfunctioned_wire", elem2: "null" }, + "poison": { elem1: "malfunctioned_wire", elem2: "null" }, + "water": { elem1: "malfunctioned_wire", elem2: "null" }, + "salt_water": { elem1: "malfunctioned_wire", elem2: "null" }, + }, + breakInto: ["plastic", "copper"], +}; + +elements.electrogalvanized = { + color: "#6c6e70", + behavior: behaviors.WALL, + category: "tech", + state: "solid", + conduct: 2, + density: 7850, +}; diff --git a/mods/the_snail.js b/mods/the_snail.js new file mode 100644 index 00000000..84435ea6 --- /dev/null +++ b/mods/the_snail.js @@ -0,0 +1,63 @@ +elements.the_snail = { + color: "#5c3104", + behavior: [ + "XX|XX|XX", + "XX|FX%0.25|M2%0.5 AND BO", + "XX|M1|XX", + ], + reactions: { + "salt": { elem1: "quicklime", elem2: null }, + "dirty_water": { elem2:"water", chance:0.05, func:behaviors.FEEDPIXEL }, + "broth": { elem2:"water", chance:0.05, func:behaviors.FEEDPIXEL }, + "tea": { elem2:"water", chance:0.05, func:behaviors.FEEDPIXEL }, + "plant": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "evergreen": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "cactus": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "dead_plant": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "worm": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "mushroom_spore": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "grass": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "herb": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "lettuce": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "grass_seed": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "algae": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "mushroom_cap": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "mushroom_stalk": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "mushroom_gill": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "lichen": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "hyphae": { elem2:"dirt", chance:0.05, func:behaviors.FEEDPIXEL }, + "mycelium": { elem2:"dirt", chance:0.05, func:behaviors.FEEDPIXEL }, + "pumpkin": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "calcium": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "limestone": { elem2:null, chance:0.001, func:behaviors.FEEDPIXEL }, + "quicklime": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "slaked_lime": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "paper": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "pickle": { elem2:null, chance:0.05, func:behaviors.FEEDPIXEL }, + "grape": { elem2:null, chance:0.01, func:behaviors.FEEDPIXEL }, + "body": { elem1:"crasher" }, + "head": { elem1:"crasher" }, + }, + category: "special", + state: "solid", + hardness: 1, + conduct: 0.16, + alias: "The Immortal Snail", +}; + +elements.crasher = { + onSelect: function() { + logMessage("WARNING: DO NOT PLACE THIS! This WILL crash your game and is only used for the immortal snail."); + }, + color: "#FFFFFF", + behavior: [ + "XX|CL|XX", + "CL|EX:10000000000>flash|CL", + "XX|CL|XX", + ], + category: "special", + insulate: true, + hardness: 1, + noMix: true, + hidden: true, +}; \ No newline at end of file diff --git a/style.css b/style.css index 4eed0378..2270dbeb 100644 --- a/style.css +++ b/style.css @@ -469,7 +469,7 @@ button, input { /*Disable double tap zoom on mobile devices*/ touch-action: manipulation; color-scheme: dark; } -select, .toggleInput, #settingsMenu input[type="number"], #settingsMenu input[type="text"], #savePromptMenu input { +select, .toggleInput, #settingsMenu input[type="number"], #settingsMenu input[type="text"], #savePromptMenu input, input[type="email"] { background-color: black; vertical-align: middle; margin-left: 5px;